Liceum Klasa I 45 minut Powtorzenie semestru I

Lekcja 15: Powtorzenie i sprawdzian - semestr I

Podsumowanie: algorytmy, systemy liczbowe, Python, petle, funkcje, testowanie

📋 Podstawa programowa: I+II
algorytmyegzaminpetlepowtorzeniesprawdziansystemy liczbowetest
00:00
Powtorzenie
15 min
00:15
Sprawdzian
25 min
00:40
Podsumowanie
5 min
📚

Teoria - Podsumowanie semestru I

Blok 1: Myslenie komputacyjne i algorytmy

Algorytm to skonczony ciag precyzyjnie okreslonych krokow prowadzacych do rozwiazania problemu. Kazdy algorytm powinien miec: dane wejsciowe, dane wyjsciowe, skonczony czas dzialania i jednoznacznosc krokow.

Sposoby zapisu algorytmow:

  • Jezyk naturalny - opis slowny krok po kroku
  • Pseudokod - uproszczony zapis przypominajacy jezyk programowania
  • Schemat blokowy - graficzna reprezentacja algorytmu
  • Jezyk programowania - zapis gotowy do wykonania przez komputer

Blok 2: Systemy liczbowe

Poznalismy cztery systemy liczbowe:

  • DEC (10) - system dziesietny, uzywany na co dzien
  • BIN (2) - system dwojkowy, podstawa dzialania komputerow (0 i 1)
  • OCT (8) - system osemkowy, stosowany w uprawnieniach plikow Linux
  • HEX (16) - system szesnastkowy, uzywany w kolorach i adresach pamieci
Przypomnienie konwersji:
42(DEC) = 101010(BIN) = 52(OCT) = 2A(HEX)
Metoda: dzielenie przez baze systemu i zbieranie reszt od konca.

Blok 3: Podstawy Pythona

Kluczowe elementy jezyka Python, ktore poznalismy:

  • Zmienne i typy danych: int, float, str, bool
  • Operatory: +, -, *, /, //, %, **, ==, !=, <, >, and, or, not
  • Wejscie/wyjscie: input(), print(), rzutowanie typow int(), float()
  • Instrukcje warunkowe: if, elif, else
  • Petle: for z range(), while, break, continue
  • Funkcje: def, parametry, return, wartosci domyslne
# Podsumowanie skladni Pythona
# Zmienne i typy
x = 10          # int
pi = 3.14       # float
imie = "Anna"   # str
ok = True       # bool

# Warunek
if x > 0:
    print("Dodatnia")
elif x == 0:
    print("Zero")
else:
    print("Ujemna")

# Petla for
for i in range(1, 11):
    print(i, end=" ")

# Funkcja
def silnia(n):
    wynik = 1
    for i in range(1, n + 1):
        wynik *= i
    return wynik

Blok 4: Algorytmy na liczbach

Poznane algorytmy:

  • NWD (algorytm Euklidesa) - najwiekszy wspolny dzielnik
  • Badanie pierwszosci - sprawdzanie dzielnikow do sqrt(n)
  • Konwersja systemow liczbowych - dzielenie przez baze systemu

Blok 5: Testowanie programow

Prawidlowe testowanie obejmuje: dane typowe, brzegowe (edge cases), niepoprawne i specjalne. Technika print debugging pomaga lokalizowac bledy.

✏️

Zadania - Przykladowy sprawdzian

Latwe

Zadanie 1: Konwersja systemow liczbowych (5 pkt)

a) Zamien liczbe 156(DEC) na system binarny (BIN).
b) Zamien liczbe 11010110(BIN) na system dziesietny (DEC).
c) Zamien liczbe 3F(HEX) na system dziesietny (DEC).

Pokaz rozwiazanie
a) 156 / 2 = 78 r 0
   78 / 2 = 39 r 0
   39 / 2 = 19 r 1
   19 / 2 = 9  r 1
   9 / 2  = 4  r 1
   4 / 2  = 2  r 0
   2 / 2  = 1  r 0
   1 / 2  = 0  r 1
   Odczytujemy od dolu: 156(DEC) = 10011100(BIN)

b) 11010110(BIN) = 1*128 + 1*64 + 0*32 + 1*16 + 0*8 + 1*4 + 1*2 + 0*1
                 = 128 + 64 + 16 + 4 + 2 = 214(DEC)

c) 3F(HEX) = 3*16 + 15*1 = 48 + 15 = 63(DEC)
Srednie

Zadanie 2: Analiza algorytmu (5 pkt)

Przeanalizuj ponizszy kod i odpowiedz: a) Co robi ten program? b) Jaki wynik da dla n=5? c) Jaki wynik da dla n=0?

def tajemnicza(n):
    wynik = 0
    for i in range(1, n + 1):
        if i % 2 == 0:
            wynik += i
    return wynik
Pokaz rozwiazanie
a) Program oblicza sume liczb parzystych od 1 do n.

b) Dla n=5:
   i=1: nieparzysta, pomijamy
   i=2: parzysta, wynik = 0 + 2 = 2
   i=3: nieparzysta, pomijamy
   i=4: parzysta, wynik = 2 + 4 = 6
   i=5: nieparzysta, pomijamy
   Wynik: 6

c) Dla n=0: petla sie nie wykonuje (range(1,1) jest pusty)
   Wynik: 0
Srednie

Zadanie 3: Napisz program (5 pkt)

Napisz w Pythonie funkcje suma_cyfr(n), ktora oblicza sume cyfr liczby naturalnej n. Przetestuj ja dla wartosci: 123, 9999, 0, 5.

Pokaz rozwiazanie
def suma_cyfr(n):
    suma = 0
    while n > 0:
        suma += n % 10   # ostatnia cyfra
        n = n // 10      # usuwamy ostatnia cyfre
    return suma

# Testy
print(suma_cyfr(123))   # 6 (1+2+3)
print(suma_cyfr(9999))  # 36 (9+9+9+9)
print(suma_cyfr(0))     # 0
print(suma_cyfr(5))     # 5
Trudne

Zadanie 4: Zadanie rozszerzone (5 pkt)

Napisz program, ktory wczytuje od uzytkownika ciag liczb (konczacy sie na 0) i wyswietla: a) ile bylo liczb, b) srednia, c) wartosc maksymalna, d) wartosc minimalna, e) ile bylo liczb pierwszych.

Pokaz rozwiazanie
import math

def czy_pierwsza(n):
    if n < 2:
        return False
    for i in range(2, int(math.sqrt(n)) + 1):
        if n % i == 0:
            return False
    return True

liczby = []
while True:
    x = int(input("Podaj liczbe (0 = koniec): "))
    if x == 0:
        break
    liczby.append(x)

if len(liczby) > 0:
    print(f"a) Liczba elementow: {len(liczby)}")
    print(f"b) Srednia: {sum(liczby)/len(liczby):.2f}")
    print(f"c) Maksimum: {max(liczby)}")
    print(f"d) Minimum: {min(liczby)}")
    ile_pierwszych = sum(1 for x in liczby if czy_pierwsza(x))
    print(f"e) Liczb pierwszych: {ile_pierwszych}")
else:
    print("Nie podano zadnych liczb.")
🎥

Materialy wideo

Sesja z plusem klasa 6 - powtórka materiału
matematykagryzie
Sesja z plusem klasa 5 - powtórka materiału
matematykagryzie
🎧

Podcasty

✔️

Quiz - sprawdz sie!

📜

Podstawa programowa

← Lekcja 14: Testowanie programow Lekcja 16: Algorytmy na tekstach →