Dział I

Fundamenty i Składnia (Narzędzia Pracy)

Rozgrzewka z Pythonem pod kątem matury. Typy danych, rzutowanie, instrukcje warunkowe i pętle bez tajemnic.

Wstęp: Twój warsztat programisty

Zanim zaczniesz pisać skomplikowane algorytmy na maturze, musisz perfekcyjnie opanować podstawowe narzędzia. CKE nie ocenia tego, czy znasz najnowsze frameworki – ocenia Twoją zdolność do logicznego myślenia i sprawnego manipulowania danymi. Ten dział to absolutny fundament, bez którego odczytanie choćby jednej liczby z pliku dane.txt zakończy się błędem krytycznym.

1

Zmienne, Typy Danych i Rzutowanie

W Pythonie nie musisz deklarować typu zmiennej przed jej użyciem (jest to tzw. typowanie dynamiczne). Interpreter sam domyśli się, z czym ma do czynienia. Na maturze musisz jednak świadomie kontrolować te typy, szczególnie na etapie pobierania danych.

Podstawowe Typy Danych
  • int (Integer) – Liczby całkowite. W Pythonie nie mają limitu wielkości, co jest ogromną zaletą na maturze!
  • float – Liczby zmiennoprzecinkowe (pamiętaj: oddzielane kropką ., a nie przecinkiem!).
  • str (String) – Ciągi znaków (tekst). Zapisywane w cudzysłowach " " lub apostrofach ' '.
  • bool (Boolean) – Typ logiczny. Przyjmuje wyłącznie dwie wartości: True (Prawda) lub False (Fałsz). Zwróć uwagę na wielkie litery.

wiek = 19           # int
wynik = 98.5        # float
zdane = True        # bool
haslo = "Matura2026"  # str

Rzutowanie (Konwersja Typów)

Rzutowanie to wymuszona zmiana typu zmiennej na inny. To najważniejsza rzecz przy wczytywaniu plików! Wszystko, co pobierasz z pliku dane.txt (lub z klawiatury przez input()), jest domyślnie tekstem (str). Jeśli spróbujesz do tekstu "10" dodać matematycznie liczbę 5, program zakończy się błędem.

# Zmiana tekstu na liczbę całkowitą

liczba_tekst = "125"
liczba_int = int(liczba_tekst)

# Zmiana liczby na tekst (np. by zbadać jej cyfry)

rok = 2026
rok_str = str(rok)
print(len(rok_str)) # Zwróci 4 (długość tekstu)

⚠️
Maturalna Pułapka z typem Bool

Rzutowanie na typ logiczny (bool()) czasami bywa podchwytliwe. W Pythonie prawie każda wartość zrzutowana na bool daje True. Wyjątkiem (dającym False) są tzw. "wartości puste": matematyczne zero (0), pusty ciąg znaków ("") oraz pusta lista ([]).



Zapamiętaj: bool("0") zwróci True! Dlaczego? Ponieważ nie jest to matematyczne zero, tylko tekst składający się z jednego znaku, więc nie jest on "pusty".

2

Instrukcje Warunkowe: if, elif, else

Programy rzadko wykonują się linijka po linijce od początku do końca. Najczęściej muszą podejmować decyzje na podstawie pobranych danych (np. "jeśli liczba z pliku jest parzysta, dodaj ją do sumy, w przeciwnym razie ją zignoruj"). W Pythonie robimy to za pomocą konstrukcji if.

Struktura if / elif / else

Słowo if oznacza "jeśli". Program sprawdza warunek. Jeśli jest prawdziwy (True), wykonuje wcięty blok kodu. Jeśli nie, idzie dalej do elif ("w przeciwnym razie jeśli") lub else ("w przeciwnym razie").

wiek = 18

if wiek < 18:
    print("Jesteś niepełnoletni")
elif wiek == 18:
    print("Świeżo upieczony dorosły!")
else:
    print("Jesteś pełnoletni")

Ważne: Bloków elif może być nieskończenie wiele, ale else może być tylko jedno na samym końcu. Gdy program znajdzie pierwszy prawdziwy warunek, pomija resztę.

Złota zasada: == to nie =

Najczęstszy błąd początkujących! W matematyce znak równości służy do wszystkiego. W programowaniu ma dwie różne funkcje:

  • Pojedynczy znak = to przypisanie (np. włóż wartość 5 do zmiennej x).
  • Podwójny znak == to porównanie (np. czy x wynosi dokładnie 5?).
  • Nierówność sprawdzamy za pomocą !=.

# To spowoduje błąd składni:
if x = 10:

# Poprawne sprawdzanie:
if x == 10:
    # Zrób coś...

3

Logika Maturalna: and, or, not oraz Modulo

Na egzaminie warunki rzadko są pojedyncze. Zazwyczaj musisz sprawdzić, czy liczba spełnia kilka kryteriów jednocześnie (np. "znajdź liczby, które są dodatnie i podzielne przez 3"). Do łączenia warunków służą operatory logiczne.

Operator AND (Iloczyn)

Obydwa warunki muszą być prawdziwe (True), aby całość wykonała się pomyślnie.

if x > 0 and x < 10:
  print("Jednocyfrowa dodatnia")

Operator OR (Suma)

Wystarczy, że tylko JEDEN z warunków jest prawdziwy, aby wejść do bloku kodu.

if litera == 'a' or litera == 'e':
  print("To samogłoska")

Operator NOT (Negacja)

Odwraca wynik logiczny. Jeśli warunek był fałszywy, not zmieni go na prawdę.

if not (x == 5):
  # To samo co x != 5

🔑
Gwóźdź Programu: Reszta z dzielenia (Modulo %)

Bez tego operatora nie zdasz matury! Operator % (modulo) zwraca resztę z dzielenia jednej liczby przez drugą. Jest on permanentnie używany przez CKE do sprawdzania, czy liczba spełnia dane cechy.

  • liczba % 2 == 0 - sprawdza czy liczba jest PARZYSTA.
  • liczba % 2 != 0 - sprawdza czy liczba jest NIEPARZYSTA.
  • liczba % 10 == 3 - sprawdza czy OSTATNIA CYFRA liczby to 3.

3

Pętle: for, while oraz break/continue

Znakomita większość zadań maturalnych polega na przetworzeniu tysięcy linijek z pliku dane.txt. Właśnie do tego służą pętle. Pozwalają one na wielokrotne wykonanie tego samego bloku kodu, automatyzując żmudne procesy, takie jak zliczanie wystąpień czy sumowanie wartości.

Pętla FOR i potężne range()

Pętla for służy do przechodzenia (iteracji) po zbiorach danych. Na maturze najczęściej będziesz jej używać z funkcją range(), która generuje ciąg liczb całkowitych. Funkcja ta przyjmuje do trzech argumentów: start, stop (nie wchodzi do przedziału!) oraz krok.

# range(stop) -> Generuje liczby od 0 do 4
for i in range(5):
    print(i) # Wypisze: 0, 1, 2, 3, 4

# range(start, stop) -> Od 2 do 5
for i in range(2, 6):
    print(i) # Wypisze: 2, 3, 4, 5

# range(start, stop, krok) -> Skok co 2 w dół!
for i in range(10, 0, -2):
    print(i) # Wypisze: 10, 8, 6, 4, 2

Pętla WHILE (Dopóki)

Pętli while używasz, gdy nie wiesz z góry, ile razy kod ma się wykonać. Pętla kręci się tak długo, jak długo sprawdzany w niej warunek jest prawdziwy (True). Poniżej klasyczny algorytm maturalny: rozbijanie liczby na cyfry!

liczba = 2026
suma_cyfr = 0

# Dopóki liczba jest większa od 0
while liczba > 0:
    # 1. Pobierz ostatnią cyfrę (modulo 10)
    cyfra = liczba % 10

    # 2. Dodaj cyfrę do sumy
    suma_cyfr += cyfra

    # 3. Odetnij ostatnią cyfrę (dzielenie całkowite)
    liczba //= 10

🛑
Sterowanie pętlą: break i continue

Czasami musisz przejąć ręczną kontrolę nad tym, co dzieje się wewnątrz pętli. Służą do tego dwie specjalne instrukcje, które często są kluczem do optymalizacji algorytmu (aby działał wystarczająco szybko).

  • break
    Działa jak hamulec awaryjny. Całkowicie przerywa działanie całej pętli i z niej wychodzi.
    Zastosowanie: Gdy szukasz w pliku jednej, konkretnej wartości i właśnie ją znalazłeś – nie ma sensu sprawdzać tysiąca kolejnych linijek. Robisz break i oszczędzasz czas procesora.

  • continue
    Przerywa tylko obecny obrót pętli i natychmiast skacze do następnego.
    Zastosowanie: Jeśli przetwarzasz dane i trafisz na błędny wpis (np. puste słowo), używasz continue, by zignorować ten przypadek i przejść do kolejnego słowa, bez wyłączania całej pętli.

4

Funkcje: Tworzenie własnych narzędzi (def, return)

Większość zadań z programowania na maturze z informatyki zaczyna się od słów: "Napisz program lub funkcję, która...". Funkcje pozwalają podzielić skomplikowany problem na mniejsze, łatwe do przetestowania fragmenty. To tak, jakbyś uczył Pythona nowej sztuczki, której możesz potem wielokrotnie używać na różnych danych wejściowych.

Budowa funkcji (def) i Parametry

Definiowanie zaczynamy od słowa def, po którym podajemy nazwę (najlepiej czasownik określający co funkcja robi) i nawiasy okrągłe. W nawiasach umieszczamy parametry, czyli wejściowe zmienne, na których funkcja ma pracować.

# Funkcja maturalna: suma cyfr liczby
def oblicz_sume_cyfr(liczba):
    suma = 0
    while liczba > 0:
        suma += liczba % 10
        liczba //= 10
    # Co dalej? Brakuje najważniejszego!

Print vs Return (Pułapka CKE)

Początkujący używają print() wewnątrz funkcji, by od razu zobaczyć wynik na ekranie. Na maturze to błąd układu! Funkcja powinna zwracać wyliczoną wartość słowem return, aby reszta programu mogła użyć tego wyniku w dalszych obliczeniach.

# ...kontynuacja poprzedniej funkcji
    return suma # Funkcja oddaje wynik i się kończy

# Użycie zwróconej wartości w głównym kodzie:
wynik1 = oblicz_sume_cyfr(125)
wynik2 = oblicz_sume_cyfr(50)

# Dopiero teraz możemy wydrukować lub porównać
if wynik1 > wynik2:
    print("Pierwsza ma większą sumę cyfr!")

💡
Ważne pojęcie: Zasięg zmiennych (Scope)

Zmienne utworzone wewnątrz funkcji (np. suma z przykładu wyżej) to tzw. zmienne lokalne – one istnieją tylko w zamkniętym świecie tej funkcji.



Kiedy funkcja kończy działanie (trafi na return), te zmienne są trwale usuwane z pamięci komputera. Z głównego programu nigdy nie masz bezpośredniego dostępu do zmiennych zamkniętych wewnątrz definicji def. Właśnie dlatego słowo return jest niezbędne jako "okno podawcze" przekazujące wynik na zewnątrz!