Ogólne

Jak uczyć się programowania od zera: plan dla ucznia

Nauka programowania od zera: wybór pierwszego języka (Scratch, Python), plan w pięciu etapach, małe projekty, czytanie dokumentacji i debugowanie z przykładami.

Ilustracja: uczeń przy biurku z laptopem, na ekranie krótki program, obok notatnik z wypisanymi krokami algorytmu
Obraz wygenerowany przez AI

Od czego zacząć: wybór pierwszego języka

Pierwszy język ma jedno zadanie: pozwolić ci zrozumieć, że program to ciąg instrukcji, które komputer wykonuje po kolei, z powtórzeniami i decyzjami. Konkretna składnia jest wtórna, bo po opanowaniu podstaw kolejny język poznasz szybciej.

Scratch to środowisko w przeglądarce, w którym program układasz z klocków. Według twórców ma prosty interfejs blokowy, w którym bloki przeciąga się i łączy, bez trudnej składni. Jest bezpłatny i przeznaczony głównie dla osób w wieku 8–16 lat, choć korzystają z niego ludzie w każdym wieku. Dzięki temu od razu widzisz efekt (ruch postaci, dźwięk, wynik gry) i nie tracisz czasu na literówki.

Python zapisuje te same idee tekstem. Jego dokumentacja nazywa go językiem łatwym do nauki, a krótki program mieści się w kilku wierszach. Ma to znaczenie, gdy chcesz szybko sprawdzić własny pomysł.

C++ jest trudniejszy na start, bo wymaga kompilacji i dokładniejszego zapisu, ale jest naturalnym wyborem, jeśli przygotowujesz się do zawodów algorytmicznych lub pracy z kodem bliskim sprzętowi. Warto go wybrać świadomie, nie z przypadku.

Przesuń tabelę, aby zobaczyć wszystkie kolumny →

JęzykNajlepszy, gdyTypowa trudność na start
Scratchzaczynasz od zera i chcesz szybko zobaczyć efektograniczone możliwości poza grami i animacjami
Pythonchcesz pisać prawdziwy kod i małe narzędziawcięcia i drobne błędy składni
C++celujesz w algorytmy, zawody lub programowanie niskopoziomowekompilacja, dokładna składnia, mniej czytelne błędy

Najważniejsza zasada: wybierz jeden język i nie zmieniaj go przez pierwsze tygodnie. Przeskakiwanie między językami daje wrażenie postępu, a w praktyce za każdym razem zaczynasz od początku.

Plan nauki w pięciu etapach

Poniższy plan opisuje kolejność, a nie terminy. Tempo zależy od ciebie, więc do następnego etapu przechodź dopiero wtedy, gdy zadanie kontrolne wykonasz samodzielnie.

Przesuń tabelę, aby zobaczyć wszystkie kolumny →

EtapCo poznajeszZadanie kontrolne
1. Scratchinstrukcje po kolei, pętla, warunek, zdarzeniegra, w której postać zbiera punkty i kończy się po ich osiągnięciu
2. Pierwsze linie w Pythoniewypisywanie, zmienne, liczby i tekstprogram pytający o imię i wiek i wypisujący zdanie z tymi danymi
3. Decyzje i pętleinstrukcja warunkowa, pętle, listyprogram wypisujący liczby parzyste do podanej granicy
4. Funkcjedzielenie programu na części, argumenty, wynikfunkcja zwracająca największy element listy bez użycia gotowej funkcji
5. Proste algorytmywyszukiwanie, sortowanie, liczby pierwszeprogram sprawdzający, czy liczba jest pierwsza

Gdy etap 1 jest za łatwy, skróć go do jednego dłuższego projektu. Gdy etap 3 sprawia kłopot, wróć do pętli i napisz kilka małych programów, zanim ruszysz dalej.

Jak ćwiczyć, żeby coś zostało

Poradnik Instytutu Nauk o Edukacji (IES) w USA, oparty na badaniach, zaleca m.in. rozłożenie nauki w czasie oraz używanie quizów do ponownego zetknięcia z materiałem. W nauce programowania przekłada się to na dwa nawyki:

  • Krótkie, regularne sesje. Lepiej pisać kod często i po trochu niż rzadko, ale przez kilka godzin.
  • Odtwarzanie z głowy. Po przeczytaniu rozwiązania zamknij je i napisz ten sam program od zera. Jeśli utkniesz, zajrzyj tylko do jednej linijki.

Małe projekty zamiast samego czytania

Samo czytanie o pętlach nie sprawi, że napiszesz pętlę. Po każdym etapie zrób mały projekt, który możesz skończyć w jedno popołudnie. Dobry projekt ma jasny koniec: wiesz, kiedy działa.

Przykład na etapie 3 to zgadywanie liczby z podpowiedziami. Wersja poniżej korzysta z gotowej listy prób, żeby dało się ją od razu uruchomić. Później zastąp listę funkcją input(), która wczytuje wiersz tekstu od użytkownika.

sekret = 37
proby = [50, 25, 37]
for numer, liczba in enumerate(proby, start=1):
    if liczba < sekret:
        print(numer, liczba, "za mało")
    elif liczba > sekret:
        print(numer, liczba, "za dużo")
    else:
        print(numer, liczba, "trafione")
        break

Po uruchomieniu program wypisuje:

1 50 za dużo
2 25 za mało
3 37 trafione

Kolejne pomysły do rozbudowy: licznik prób, losowy sekret, ograniczenie liczby podejść, wybór zakresu. Każda zmiana to osobne, małe zadanie.

Przesuń tabelę, aby zobaczyć wszystkie kolumny →

Pomysł na projektCzego uczy
kalkulator czterech działańzmienne, warunki, wczytywanie liczb
generator tabliczki mnożeniapętle zagnieżdżone, formatowanie
dziennik ocen i średnialisty, pętle, dzielenie
quiz z pytaniami z listylisty, porównywanie tekstu, liczenie punktów

Czytanie dokumentacji i szukanie pomocy

Dokumentacja to najdokładniejsze źródło wiedzy o tym, jak działa dana funkcja. Samouczek Pythona ze strony oficjalnej jest przeznaczony dla osób, które znają już podstawy programowania, a nie dla zupełnie początkujących, więc sięgaj po niego po etapach 1–3. Nie musisz czytać go od początku do końca: otwierasz to, czego akurat potrzebujesz.

Pomaga też wbudowana pomoc. Wpisz w interpreterze Pythona help(print), a wyświetli się opis funkcji. Dokumentacja opisuje print() jako wypisywanie obiektów do strumienia tekstowego, rozdzielonych separatorem i zakończonych znakiem końca. Przy pierwszym kontakcie z funkcją ważne są trzy pytania:

  1. Co funkcja przyjmuje (argumenty)?
  2. Co zwraca lub robi?
  3. Jaki jest najkrótszy przykład użycia?

Gdy prosisz kogoś o pomoc, opisz: co chcesz osiągnąć, co się stało, jaki jest pełny komunikat błędu i jaki kod do tego doprowadził. Taki opis często prowadzi do odpowiedzi jeszcze w trakcie jego pisania.

Debugowanie: jak szukać błędów

Błąd to normalna część pracy. Dokumentacja Pythona zaznacza, że błędy składni są chyba najczęstszą skargą na początku nauki, a interpreter wskazuje miejsce wykrycia błędu, które nie zawsze jest miejscem do poprawy. Komunikat o wyjątku kończy się wierszem mówiącym, co się stało, a wcześniejsza część pokazuje kontekst (ślad wywołań).

Procedura, która sprawdza się przy większości zadań:

  1. Przeczytaj ostatni wiersz komunikatu. Zawiera typ błędu i opis.
  2. Znajdź numer wiersza wskazany w komunikacie i sprawdź go oraz wiersz powyżej.
  3. Odtwórz błąd na najmniejszym przykładzie. Zmniejsz dane, aż problem nadal występuje.
  4. Wypisz wartości pośrednie funkcją print().
  5. Zmieniaj jedną rzecz naraz i uruchamiaj program po każdej zmianie.

Gdy program nie zgłasza błędu, ale daje zły wynik, komunikatu nie będzie. Przykład: funkcja ma liczyć średnią ocen, a wynik jest za niski.

def srednia(oceny):
    suma = 0
    for i in range(1, len(oceny)):
        suma += oceny[i]
    return suma / len(oceny)

print(srednia([5, 3, 4, 2]))

Wynik to 2.25, choć średnia ocen 5, 3, 4, 2 wynosi 3.5. Wypisanie wartości pośrednich ujawnia przyczynę:

def srednia(oceny):
    suma = 0
    for ocena in oceny:
        suma += ocena
        print("dodaję", ocena, "suma:", suma)
    return suma / len(oceny)

print(srednia([5, 3, 4, 2]))

Po poprawce program dodaje wszystkie cztery oceny (kolejne sumy to 5, 8, 12 i 14) i zwraca 3.5. W pierwszej wersji range(1, ...) pomijał element o indeksie 0, czyli pierwszą ocenę. Indeksy list w Pythonie liczy się od zera, co jest częstym źródłem takich pomyłek.

Gdy print() nie wystarcza, Python ma interaktywny debugger. Moduł pdb jest opisany w dokumentacji jako interaktywny debugger kodu źródłowego, a od wersji 3.7 wywołanie wbudowanej funkcji breakpoint() może zastąpić import pdb; pdb.set_trace(). Na początek wystarczy jednak print().

Najczęstsze błędy w nauce

Przesuń tabelę, aby zobaczyć wszystkie kolumny →

BłądDlaczego szkodziCo zamiast tego
Oglądanie rozwiązań bez pisaniarozumiesz cudzy kod, ale nie umiesz napisać własnegozamknij rozwiązanie i odtwórz je z pamięci
Zmiana języka co kilka dnipodstawy nigdy nie są domkniętejeden język do końca etapu 5
Kopiowanie kodu bez zrozumienianie wiesz, co zmienić, gdy coś nie działaprzepisz kod i opisz każdy wiersz własnymi słowami
Unikanie komunikatów o błędachtracisz najlepszą wskazówkęczytaj ostatni wiersz komunikatu
Za duże projekty na startbrak ukończonych prac zniechęcaprojekty możliwe do skończenia w jedno popołudnie

Zobacz też: Pierwszy program w C++, Algorytm.

Najczęstsze pytania (FAQ)

Od czego zacząć naukę programowania od zera?

Od Scratcha lub od pierwszych linii w Pythonie. Scratch jest bezpłatny i nie wymaga pisania składni, więc najpierw poznasz pętle, warunki i zdarzenia. Jeśli wolisz od razu pisać kod, zacznij od Pythona i prostych programów z wypisywaniem, zmiennymi i warunkami.

Czy trzeba znać matematykę, żeby uczyć się programowania?

Do pierwszych etapów wystarczy szkolna arytmetyka: działania, porównywanie liczb, reszta z dzielenia. Przy algorytmach, takich jak liczby pierwsze czy sortowanie, przydaje się logiczne myślenie, a umiejętności matematyczne rozwijają się razem z programowaniem.

Czy lepiej zacząć od Pythona, czy od C++?

Python wybierz, gdy chcesz szybko pisać działające programy. C++ wybierz, gdy z góry wiesz, że celujesz w zawody algorytmiczne lub programowanie systemowe. Podstawy (zmienne, warunki, pętle, funkcje) są takie same, więc po opanowaniu jednego języka drugi poznasz szybciej.

Jak często ćwiczyć?

Zalecenia IES mówią o rozłożeniu nauki w czasie. Praktycznie oznacza to krótkie, regularne sesje zamiast rzadkich, bardzo długich. Czas jednej sesji dobierz do swojego planu dnia; ważniejsza jest powtarzalność.

Co robić, gdy program nie działa, a nie wiadomo dlaczego?

Przeczytaj ostatni wiersz komunikatu błędu, sprawdź wskazany wiersz, zmniejsz przykład i wypisz wartości pośrednie funkcją print(). Gdy dalej nie wiesz, opisz problem tak, jakbyś tłumaczył go komuś innemu: cel, wynik, komunikat, kod.

Czy trzeba kupować kurs, żeby się nauczyć?

Nie. Scratch jest bezpłatny, a dokumentacja Pythona jest ogólnodostępna. Do nauki wystarczy komputer, edytor i regularna praktyka na własnych projektach.

← Więcej: Ogólne