Sprawdzian podsumowujacy: algorytmy, programowanie, bazy danych, spoleczenstwo informacyjne
ð Podstawa programowa: I+IIhelp())Instrukcja: Wybierz jedna poprawna odpowiedz. Kazde pytanie za 2 punkty.
a) O(n²) b) O(n log n) c) O(n!) d) O(2ⁿ)
a) Petla while b) Przypadek bazowy c) Lista argumentow d) Instrukcja import
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]
a) SELECT b) UPDATE c) INSERT INTO d) ALTER TABLE
a) Jezyk programowania b) Rozporzadzenie o ochronie danych osobowych c) System operacyjny d) Protokol sieciowy
a) Czytnik ekranu b) Lupa ekranowa c) Firewall d) Monitor brajlowski
a) Online Operating Platform b) Object-Oriented Programming c) Open Office Protocol d) Output Operation Process
a) To Do b) In Progress c) Done d) Review
10 // 3?a) 3.33 b) 3 c) 1 d) 10
a) Posty publikowane w mediach spolecznosciowych b) Dane zbierane bez swiadomej aktywnosci uzytkownika c) Pliki usuwane z komputera d) Zdjecia udostepniane publicznie
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
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)
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
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)
-- 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;
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)
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)
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)
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!")
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
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()
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
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()