Liceum Klasa I 45 minut PP: I + II (powtorzenie)

Lekcja 30: Sprawdzian koncowy - klasa I

Test podsumowujacy: algorytmy, programowanie, bezpieczenstwo cyfrowe

📋 Podstawa programowa: I+II
algorytmybezpieczenstwoegzaminprogramowaniesprawdzian
00:00
Szybka powtorka
5 min
00:05
Sprawdzian
35 min
00:40
Podsumowanie
5 min
📚

Szybka powtorka przed sprawdzianem

Kluczowe pojecia do zapamietania

Algorytmy na liczbach:
- Systemy liczbowe: binarny (2), osemkowy (8), dziesietny (10), szesnastkowy (16)
- NWD: algorytm Euklidesa (a, b -> b, a%b dopoki b != 0)
- Pierwszosc: sprawdzanie dzielnikow do sqrt(n)
- Fibonacci: F(n) = F(n-1) + F(n-2), iteracyjnie O(n)
Algorytmy na tekstach:
- Szyfr Cezara: przesuniecie liter o stala wartosc, klucz = liczba pozycji
- Wyszukiwanie wzorca: porownywanie fragmentow tekstu
- ord() - kod ASCII znaku, chr() - znak o danym kodzie ASCII
Sortowanie:
- Babelkowe: porownuj sasiadow, zamieniaj, powtarzaj. O(n^2)
- Przez wstawianie: bierz element, wstaw na wlasciwe miejsce. O(n^2)
- Oba sa stabilne (zachowuja kolejnosc rownych elementow)
Python - kluczowe elementy:
- Zmienne, typy danych (int, float, str, list, bool)
- Instrukcje warunkowe (if/elif/else)
- Petle (for, while), range(), break, continue
- Funkcje (def, return, parametry, wartosc zwracana)
- Operacje na listach i stringach
Bezpieczenstwo i prawo:
- Netykieta: zasady kulturalnego zachowania w sieci
- RODO: ochrona danych osobowych, prawa (dostep, sprostowanie, zapomnienie)
- Prawo autorskie: automatyczna ochrona, dozwolony uzytek, CC
- Silne hasla: min. 12 znakow, roznorodne, unikalne
- 2FA: dwuskladnikowe uwierzytelnianie
- Phishing: rozpoznawanie falszywych wiadomosci
✏️

Sprawdzian - przykladowy test

Czesc A - pytania zamkniete (1 pkt kazde)

Pytanie 1

Jaki jest wynik konwersji liczby dziesietnej 25 na system binarny?

a) 10011    b) 11001    c) 11010    d) 10101

Pokaz odpowiedz
Odpowiedz: b) 11001

Rozwiazanie:
25 / 2 = 12 reszta 1
12 / 2 = 6  reszta 0
6  / 2 = 3  reszta 0
3  / 2 = 1  reszta 1
1  / 2 = 0  reszta 1

Czytamy od dolu: 11001

Pytanie 2

Ile wynosi NWD(48, 36)?

a) 6    b) 8    c) 12    d) 24

Pokaz odpowiedz
Odpowiedz: c) 12

Algorytm Euklidesa:
NWD(48, 36):
  48 % 36 = 12 -> NWD(36, 12)
  36 % 12 = 0  -> NWD(12, 0)
  b == 0, wiec NWD = 12

Pytanie 3

Ktory z ponizszych ciagów jest ciagiem Fibonacciego?

a) 0, 1, 2, 3, 4, 5    b) 0, 1, 1, 2, 3, 5, 8    c) 1, 2, 4, 8, 16    d) 0, 1, 2, 4, 7, 11

Pokaz odpowiedz
Odpowiedz: b) 0, 1, 1, 2, 3, 5, 8

Kazdy wyraz (od trzeciego) jest suma dwoch poprzednich:
0 + 1 = 1
1 + 1 = 2
1 + 2 = 3
2 + 3 = 5
3 + 5 = 8

Pytanie 4

Zaszyfruj slowo "KOT" szyfrem Cezara z kluczem 3:

a) NRW    b) MRV    c) LQU    d) HLQ

Pokaz odpowiedz
Odpowiedz: a) NRW

K + 3 = N
O + 3 = R
T + 3 = W

Pytanie 5

Ktore sortowanie porownuje sasiadujace elementy i zamienia je miejscami?

a) sortowanie przez wybor    b) sortowanie przez wstawianie    c) sortowanie babelkowe    d) sortowanie szybkie

Pokaz odpowiedz
Odpowiedz: c) sortowanie babelkowe

Sortowanie babelkowe (bubble sort) porownuje
sasiadujace elementy i zamienia je, jesli sa
w zlej kolejnosci. "Babelki" wiekszych elementow
"wyplywaja" na koniec listy.

Pytanie 6

Co oznacza licencja CC BY-NC?

a) Mozna uzywac bez ograniczen    b) Trzeba podac autora, nie mozna uzywac komercyjnie    c) Nie mozna modyfikowac    d) Domena publiczna

Pokaz odpowiedz
Odpowiedz: b) Trzeba podac autora (BY = Attribution),
nie mozna uzywac komercyjnie (NC = NonCommercial).

Pytanie 7

Ktore haslo jest najsilniejsze?

a) password123    b) Qwerty1!    c) MojPies!Lubi3$Spacery    d) 12345678

Pokaz odpowiedz
Odpowiedz: c) MojPies!Lubi3$Spacery

- 21 znakow (dluzsze = lepsze)
- Duze i male litery
- Cyfry i znaki specjalne
- Fraza latwa do zapamietania
- Nie wystepuje w slownikach hasel

Pytanie 8

Jaka jest zlozonosc obliczeniowa sortowania babelkowego?

a) O(n)    b) O(n log n)    c) O(n^2)    d) O(2^n)

Pokaz odpowiedz
Odpowiedz: c) O(n^2)

Sortowanie babelkowe uzywa dwoch zagniezdzonych
petli, kazda iterujaca po n elementach.
Dlatego zlozonosc to O(n * n) = O(n^2).
Czesc B - pytania otwarte (3 pkt kazde)

Pytanie 9: Algorytm Euklidesa

Wykonaj algorytm Euklidesa dla NWD(84, 56). Pokaz kazdy krok obliczen. Nastepnie oblicz NWW(84, 56).

Pokaz odpowiedz
NWD(84, 56):
Krok 1: 84 % 56 = 28 -> NWD(56, 28)
Krok 2: 56 % 28 = 0  -> NWD(28, 0)
b == 0, wiec NWD(84, 56) = 28

NWW(84, 56) = 84 * 56 / NWD(84, 56)
NWW(84, 56) = 4704 / 28 = 168

Pytanie 10: Sortowanie babelkowe

Posortuj liste [5, 2, 8, 1, 9] sortowaniem babelkowym. Pokaz stan listy po kazdym pelnym przebiegu (przejsciu przez cala liste).

Pokaz odpowiedz
Lista poczatkowa: [5, 2, 8, 1, 9]

Przebieg 1:
  [5,2] -> zamiana -> [2, 5, 8, 1, 9]
  [5,8] -> OK      -> [2, 5, 8, 1, 9]
  [8,1] -> zamiana -> [2, 5, 1, 8, 9]
  [8,9] -> OK      -> [2, 5, 1, 8, 9]
Stan po przebiegu 1: [2, 5, 1, 8, 9]

Przebieg 2:
  [2,5] -> OK      -> [2, 5, 1, 8, 9]
  [5,1] -> zamiana -> [2, 1, 5, 8, 9]
  [5,8] -> OK      -> [2, 1, 5, 8, 9]
Stan po przebiegu 2: [2, 1, 5, 8, 9]

Przebieg 3:
  [2,1] -> zamiana -> [1, 2, 5, 8, 9]
  [2,5] -> OK      -> [1, 2, 5, 8, 9]
Stan po przebiegu 3: [1, 2, 5, 8, 9]

Przebieg 4:
  [1,2] -> OK      -> [1, 2, 5, 8, 9]
Stan po przebiegu 4: [1, 2, 5, 8, 9]

Wynik: [1, 2, 5, 8, 9] - POSORTOWANA!
Czesc C - zadania programistyczne (5 pkt kazde)

Pytanie 11: Program w Pythonie

Napisz funkcje w Pythonie analizuj(lista), ktora przyjmuje liste liczb calkowitych i zwraca slownik zawierajacy: minimum, maksimum, srednia, liczbe elementow parzystych, liczbe elementow pierwszych. Uzyj wlasnych algorytmow (bez min(), max(), itp.).

Pokaz odpowiedz
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

def analizuj(lista):
    if not lista:
        return {"blad": "Lista jest pusta"}

    # Minimum (bez min())
    mini = lista[0]
    for x in lista:
        if x < mini:
            mini = x

    # Maksimum (bez max())
    maksi = lista[0]
    for x in lista:
        if x > maksi:
            maksi = x

    # Srednia
    suma = 0
    for x in lista:
        suma += x
    srednia = suma / len(lista)

    # Parzyste
    parzyste = 0
    for x in lista:
        if x % 2 == 0:
            parzyste += 1

    # Pierwsze
    pierwsze = 0
    for x in lista:
        if czy_pierwsza(x):
            pierwsze += 1

    return {
        "minimum": mini,
        "maksimum": maksi,
        "srednia": round(srednia, 2),
        "parzyste": parzyste,
        "pierwsze": pierwsze
    }

# Test
dane = [12, 7, 3, 18, 5, 2, 11, 4, 9, 13]
wynik = analizuj(dane)
print(f"Lista: {dane}")
for klucz, wartosc in wynik.items():
    print(f"  {klucz}: {wartosc}")

# Oczekiwany wynik:
# minimum: 2, maksimum: 18, srednia: 8.4
# parzyste: 4 (12, 18, 2, 4)
# pierwsze: 5 (7, 3, 5, 2, 11, 13) -> 6!

Pytanie 12: Szyfr Cezara z sortowaniem

Napisz program, ktory: (a) wczytuje 3 zdania od uzytkownika, (b) szyfruje kazde szyfrem Cezara z kluczem 5, (c) sortuje zaszyfrowane zdania alfabetycznie (sortowaniem babelkowym), (d) wyswietla posortowana liste, (e) deszyfruje i wyswietla oryginalne zdania.

Pokaz odpowiedz
def szyfruj(tekst, klucz):
    wynik = ""
    for z in tekst:
        if 'a' <= z <= 'z':
            wynik += chr((ord(z) - ord('a') + klucz) % 26 + ord('a'))
        elif 'A' <= z <= 'Z':
            wynik += chr((ord(z) - ord('A') + klucz) % 26 + ord('A'))
        else:
            wynik += z
    return wynik

def deszyfruj(tekst, klucz):
    return szyfruj(tekst, -klucz)

def sortuj_babelkowo(lista):
    tab = lista.copy()
    n = len(tab)
    for i in range(n - 1):
        for j in range(n - 1 - i):
            if tab[j].lower() > tab[j+1].lower():
                tab[j], tab[j+1] = tab[j+1], tab[j]
    return tab

# Wczytaj zdania
zdania = []
for i in range(3):
    z = input(f"Podaj zdanie {i+1}: ")
    zdania.append(z)

# Szyfruj
klucz = 5
zaszyfrowane = [szyfruj(z, klucz) for z in zdania]
print("\n--- Zaszyfrowane ---")
for z in zaszyfrowane:
    print(f"  {z}")

# Sortuj
posortowane = sortuj_babelkowo(zaszyfrowane)
print("\n--- Posortowane (zaszyfrowane) ---")
for z in posortowane:
    print(f"  {z}")

# Deszyfruj
print("\n--- Odszyfrowane ---")
for z in posortowane:
    print(f"  {deszyfruj(z, klucz)}")

# Przykladowy test:
# Zdanie 1: "Python jest super"
# Zdanie 2: "Algorytmy sa wazne"
# Zdanie 3: "Informatyka to przyszlosc"
Punktacja

Skala ocen

Czesc A: 8 pytan x 1 pkt = 8 pkt
Czesc B: 2 pytania x 3 pkt = 6 pkt
Czesc C: 2 zadania x 5 pkt = 10 pkt
Razem: 24 pkt

Celujacy (6): 23-24 pkt (96-100%)
Bardzo dobry (5): 20-22 pkt (84-95%)
Dobry (4): 16-19 pkt (67-83%)
Dostateczny (3): 12-15 pkt (50-66%)
Dopuszczajacy (2): 8-11 pkt (33-49%)
Niedostateczny (1): 0-7 pkt (0-32%)

🎥

Materialy wideo - powtorka

DEJVID LICZY ŚREDNIĄ Z CHEMII
Koobak Quizy
MMT odc. 33 - Sprawdzian końcowy dla ostatniej klasy I st. (poziom 6)
Mag Music Theory
🎧

Podcasty

✔️

Quiz - sprawdz sie!

📜

Podstawa programowa

← Lekcja 29: Powtorzenie wiadomosci Powrot do siatki godzinowej →