Technikum Klasa II 45 minut PP: I+II | s. 342-343

Lekcja 30: Sprawdzian koncowy - klasa II technikum

Sprawdzian podsumowujacy: algorytmy, programowanie, bazy danych, spoleczenstwo informacyjne

📋 Podstawa programowa: I+II
algorytmybazy danychegzaminprogramowaniesprawdzian
00:00
Organizacja
3 min
00:03
Czesc A: Test
10 min
00:13
Czesc B: Zadania otwarte
15 min
00:28
Czesc C: Programowanie
17 min
📚

Informacje o sprawdzianie

Zasady sprawdzianu

Czas: 45 minut | Punkty: 60 pkt | Forma: Czesc A (test) + Czesc B (otwarte) + Czesc C (programowanie)
  • Czesc A i B rozwiazujesz na kartce
  • Czesc C rozwiazujesz na komputerze w Pythonie
  • Nie wolno korzystac z internetu ani notatek
  • Mozna korzystac z wbudowanej pomocy Pythona (help())
  • Pliki z rozwiazaniami czesci C zapisz na pulpicie w folderze z imieniem i nazwiskiem

Skala ocen

  • Celujacy (6): 55-60 pkt (92-100%)
  • Bardzo dobry (5): 48-54 pkt (80-91%)
  • Dobry (4): 39-47 pkt (65-79%)
  • Dostateczny (3): 30-38 pkt (50-64%)
  • Dopuszczajacy (2): 21-29 pkt (35-49%)
  • Niedostateczny (1): 0-20 pkt (0-34%)
✏️

Czesc A: Test (20 pkt)

Instrukcja: Wybierz jedna poprawna odpowiedz. Kazde pytanie za 2 punkty.

Pytanie 1. Ktora zlozonosc obliczeniowa jest najlepsza?

a) O(n²)    b) O(n log n)    c) O(n!)    d) O(2ⁿ)

Pytanie 2. Ktory element jest wymagany w kazdej funkcji rekurencyjnej?

a) Petla while    b) Przypadek bazowy    c) Lista argumentow    d) Instrukcja import

Pytanie 3. Co zwroci ponizszy kod?

x = [1, 2, 3, 4, 5]
print(x[1:4])

a) [1, 2, 3]    b) [2, 3, 4]    c) [1, 2, 3, 4]    d) [2, 3, 4, 5]

Pytanie 4. Ktore polecenie SQL dodaje nowy wiersz do tabeli?

a) SELECT    b) UPDATE    c) INSERT INTO    d) ALTER TABLE

Pytanie 5. Czym jest RODO?

a) Jezyk programowania    b) Rozporzadzenie o ochronie danych osobowych    c) System operacyjny    d) Protokol sieciowy

Pytanie 6. Ktora technologia NIE jest technologia asystujaca?

a) Czytnik ekranu    b) Lupa ekranowa    c) Firewall    d) Monitor brajlowski

Pytanie 7. Co oznacza akronim OOP?

a) Online Operating Platform    b) Object-Oriented Programming    c) Open Office Protocol    d) Output Operation Process

Pytanie 8. Ktora metoda tablicy Kanban oznacza "w trakcie realizacji"?

a) To Do    b) In Progress    c) Done    d) Review

Pytanie 9. Jaki wynik da wyrazenie w Pythonie: 10 // 3?

a) 3.33    b) 3    c) 1    d) 10

Pytanie 10. Czym jest slad cyfrowy pasywny?

a) Posty publikowane w mediach spolecznosciowych    b) Dane zbierane bez swiadomej aktywnosci uzytkownika    c) Pliki usuwane z komputera    d) Zdjecia udostepniane publicznie

Pokaz klucz odpowiedzi (tylko dla nauczyciela)
1. b) O(n log n)
2. b) Przypadek bazowy
3. b) [2, 3, 4]
4. c) INSERT INTO
5. b) Rozporzadzenie o ochronie danych osobowych
6. c) Firewall
7. b) Object-Oriented Programming
8. b) In Progress
9. b) 3
10. b) Dane zbierane bez swiadomej aktywnosci uzytkownika
📝

Czesc B: Zadania otwarte (20 pkt)

5 pkt

Zadanie B1: Analiza rekurencji

Dana jest funkcja:

def f(n):
    if n == 0:
        return 0
    return n + f(n - 1)

a) Prześledz wywolanie f(5) - zapisz kazde wywolanie rekurencyjne i wartosc zwracana. (3 pkt)
b) Co oblicza ta funkcja w ogolnosci? Podaj wzor matematyczny. (2 pkt)

Pokaz rozwiazanie (dla nauczyciela)
a) f(5) = 5 + f(4)
   f(4) = 4 + f(3)
   f(3) = 3 + f(2)
   f(2) = 2 + f(1)
   f(1) = 1 + f(0)
   f(0) = 0

   Cofamy: f(1)=1, f(2)=3, f(3)=6, f(4)=10, f(5)=15
   Wynik: 15

b) Funkcja oblicza sume liczb od 0 do n.
   Wzor: n * (n + 1) / 2
   Dla n=5: 5 * 6 / 2 = 15
5 pkt

Zadanie B2: Zapytania SQL

Masz tabele ksiazki z kolumnami: id (INT), tytul (TEXT), autor (TEXT), rok_wydania (INT), cena (REAL). Napisz zapytania SQL:

a) Wyswietl tytuly i autorow ksiazek wydanych po 2020 roku. (2 pkt)
b) Wyswietl srednia cene ksiazek kazdego autora, ale tylko tych autorow, ktorzy maja wiecej niz 2 ksiazki. (3 pkt)

Pokaz rozwiazanie (dla nauczyciela)
-- a)
SELECT tytul, autor FROM ksiazki
WHERE rok_wydania > 2020;

-- b)
SELECT autor, AVG(cena) AS srednia_cena
FROM ksiazki
GROUP BY autor
HAVING COUNT(*) > 2;
5 pkt

Zadanie B3: Dostepnosc cyfrowa

a) Wymien i krotko opisz 4 zasady standardu WCAG. (2 pkt)
b) Podaj 3 konkretne przyklady, jak programista moze poprawic dostepnosc strony internetowej. (3 pkt)

Pokaz rozwiazanie (dla nauczyciela)
a) 4 zasady WCAG:
1. Postrzegalnosc - tresc musi byc dostepna dla zmyslow
2. Funkcjonalnosc - interfejs musi byc obslugiwany roznymi sposobami
3. Zrozumialosc - tresc musi byc zrozumiala
4. Solidnosc - tresc musi dzialac z roznymi technologiami

b) Przyklady poprawy dostepnosci:
1. Dodanie tekstu alternatywnego (alt) do obrazow
2. Zapewnienie odpowiedniego kontrastu kolorow (min. 4.5:1)
3. Umozliwienie nawigacji klawiatura (obsluga Tab, Enter)
(inne poprawne: napisy do filmow, hierarchia naglowkow,
aria-labels, responsywnosc)
5 pkt

Zadanie B4: Programowanie obiektowe

a) Wytlumacz czym jest klasa, obiekt i metoda w programowaniu obiektowym. Podaj przyklad z zycia codziennego. (3 pkt)
b) Czym jest dziedziczenie w OOP? Podaj przyklad w Pythonie (pseudokod wystarczy). (2 pkt)

Pokaz rozwiazanie (dla nauczyciela)
a) Klasa - szablon/przepis opisujacy cechy i zachowania obiektow
   (np. klasa "Samochod" opisuje, ze samochod ma marke, kolor, predkosc)

   Obiekt - konkretny egzemplarz klasy (instancja)
   (np. "moj_samochod" to konkretny samochod: Toyota, czerwony, 120 km/h)

   Metoda - funkcja nalezaca do klasy, opisuje zachowanie obiektu
   (np. jedz(), hamuj(), skrecaj())

b) Dziedziczenie - mechanizm, w ktorym klasa potomna
   przejmuje atrybuty i metody klasy rodzicielskiej.

   class Pojazd:         # klasa bazowa
       def jedz(self):
           print("Jade!")

   class Samochod(Pojazd):  # dziedziczy po Pojazd
       def klakson(self):
           print("Biip!")
💻

Czesc C: Programowanie w Pythonie (20 pkt)

10 pkt

Zadanie C1: Analizator tekstu

Napisz program w Pythonie, ktory:
a) Prosi uzytkownika o wpisanie tekstu (lub wczytuje go z pliku "tekst.txt") (2 pkt)
b) Oblicza i wyswietla: liczbe znakow, liczbe slow, liczbe zdan, najczesciej wystepujace slowo (5 pkt)
c) Obsluguje bledy (pusta dane, brak pliku) (3 pkt)

Zapisz rozwiazanie jako: c1_analizator.py

Pokaz rozwiazanie (dla nauczyciela)
def analizuj_tekst(tekst):
    """Analizuje tekst i zwraca statystyki."""
    if not tekst or not tekst.strip():
        print("Blad: tekst jest pusty!")
        return None

    # Liczba znakow
    znaki = len(tekst)

    # Liczba slow
    slowa = tekst.split()
    liczba_slow = len(slowa)

    # Liczba zdan (konczacych sie . ! ?)
    zdania = sum(1 for z in tekst if z in '.!?')

    # Najczesciej wystepujace slowo
    slowa_male = [s.strip('.,!?;:').lower() for s in slowa]
    najczestsze = max(set(slowa_male), key=slowa_male.count)
    ile_razy = slowa_male.count(najczestsze)

    return {
        'znaki': znaki,
        'slowa': liczba_slow,
        'zdania': zdania,
        'najczestsze_slowo': najczestsze,
        'wystapienia': ile_razy
    }

def main():
    print("=== ANALIZATOR TEKSTU ===")
    print("1. Wpisz tekst reczaie")
    print("2. Wczytaj z pliku tekst.txt")

    try:
        wybor = input("Wybierz opcje (1/2): ").strip()

        if wybor == '1':
            tekst = input("Wpisz tekst: ")
        elif wybor == '2':
            try:
                with open("tekst.txt", "r", encoding="utf-8") as f:
                    tekst = f.read()
                print(f"Wczytano tekst z pliku.")
            except FileNotFoundError:
                print("Blad: plik tekst.txt nie istnieje!")
                return
        else:
            print("Nieprawidlowy wybor!")
            return

        wynik = analizuj_tekst(tekst)
        if wynik:
            print(f"\n--- WYNIKI ---")
            print(f"Liczba znakow: {wynik['znaki']}")
            print(f"Liczba slow: {wynik['slowa']}")
            print(f"Liczba zdan: {wynik['zdania']}")
            print(f"Najczestsze slowo: '{wynik['najczestsze_slowo']}' "
                  f"({wynik['wystapienia']} razy)")

    except Exception as e:
        print(f"Nieoczekiwany blad: {e}")

if __name__ == "__main__":
    main()
10 pkt

Zadanie C2: System ocen z klasami

Napisz program wykorzystujacy klasy:
a) Stworz klase Uczen z atrybutami: imie, nazwisko, lista_ocen. Metody: dodaj_ocene(ocena), srednia(), najlepsza_ocena(), __str__() (4 pkt)
b) Stworz klase Klasa z lista uczniow. Metody: dodaj_ucznia(uczen), srednia_klasy(), najlepszy_uczen() (4 pkt)
c) W funkcji main() stworz klase z min. 3 uczniami, dodaj im oceny, wyswietl statystyki (2 pkt)

Zapisz rozwiazanie jako: c2_system_ocen.py

Pokaz rozwiazanie (dla nauczyciela)
class Uczen:
    def __init__(self, imie, nazwisko):
        self.imie = imie
        self.nazwisko = nazwisko
        self.lista_ocen = []

    def dodaj_ocene(self, ocena):
        if isinstance(ocena, (int, float)) and 1 <= ocena <= 6:
            self.lista_ocen.append(ocena)
        else:
            print(f"Nieprawidlowa ocena: {ocena}")

    def srednia(self):
        if not self.lista_ocen:
            return 0
        return sum(self.lista_ocen) / len(self.lista_ocen)

    def najlepsza_ocena(self):
        if not self.lista_ocen:
            return 0
        return max(self.lista_ocen)

    def __str__(self):
        return (f"{self.imie} {self.nazwisko} | "
                f"Oceny: {self.lista_ocen} | "
                f"Srednia: {self.srednia():.2f}")


class Klasa:
    def __init__(self, nazwa):
        self.nazwa = nazwa
        self.uczniowie = []

    def dodaj_ucznia(self, uczen):
        self.uczniowie.append(uczen)

    def srednia_klasy(self):
        if not self.uczniowie:
            return 0
        srednie = [u.srednia() for u in self.uczniowie if u.lista_ocen]
        if not srednie:
            return 0
        return sum(srednie) / len(srednie)

    def najlepszy_uczen(self):
        if not self.uczniowie:
            return None
        return max(self.uczniowie, key=lambda u: u.srednia())


def main():
    # Tworzenie klasy
    klasa = Klasa("2a Technikum")

    # Tworzenie uczniow
    u1 = Uczen("Jan", "Kowalski")
    u1.dodaj_ocene(5)
    u1.dodaj_ocene(4)
    u1.dodaj_ocene(5)

    u2 = Uczen("Anna", "Nowak")
    u2.dodaj_ocene(6)
    u2.dodaj_ocene(5)
    u2.dodaj_ocene(6)

    u3 = Uczen("Piotr", "Wisniewski")
    u3.dodaj_ocene(3)
    u3.dodaj_ocene(4)
    u3.dodaj_ocene(4)

    # Dodawanie do klasy
    klasa.dodaj_ucznia(u1)
    klasa.dodaj_ucznia(u2)
    klasa.dodaj_ucznia(u3)

    # Wyswietlanie statystyk
    print(f"=== Klasa: {klasa.nazwa} ===\n")
    for u in klasa.uczniowie:
        print(u)

    print(f"\nSrednia klasy: {klasa.srednia_klasy():.2f}")
    najlepszy = klasa.najlepszy_uczen()
    print(f"Najlepszy uczen: {najlepszy.imie} {najlepszy.nazwisko} "
          f"(srednia: {najlepszy.srednia():.2f})")

if __name__ == "__main__":
    main()
🎥

Materialy wideo

🎧

Podcasty

✔️

Quiz - sprawdz sie!

📜

Podstawa programowa

← Lekcja 29: Przygotowanie do sprawdzianu Siatka godzinowa →