Klasa 2 · rozdział 1

Pojęcia, algorytmy i sposoby zapisu

Zanim otworzysz Visual Studio i napiszesz pierwszy program w C++, musisz umieć opisać rozwiązanie: co jest daną, co wynikiem i w jakiej kolejności wykonujesz kroki. Pojęcia takie jak algorytm, program i schemat blokowy są też w słowniczku.

Po tym rozdziale powinieneś umieć

  • rozróżnić algorytm, program, język programowania i kod źródłowy;
  • wymienić cechy poprawnego algorytmu i podać przykład z życia codziennego;
  • odczytać schemat blokowy sekwencji i jednego warunku;
  • narysować prosty schemat z sekwencją, warunkiem albo pętlą;
  • zapisać ten sam algorytm listą kroków i w pseudokodzie;
  • rozróżnić algorytm liniowy, z rozgałęzieniami i iteracyjny;
  • wskazać w schemacie typowy błąd logiczny (np. pętlę bez końca).

1. Podstawowe pojęcia

Zadanie programistyczne zaczyna się od problemu: „znajdź większą z dwóch liczb”, „policz sumę ocen”. Sposób dojścia do wyniku to algorytm. Gdy zapiszesz go w konkretnym języku (u nas C++), powstaje program. Tekst tego programu to kod źródłowy.

Pojęcie Co to jest Przykład
Algorytm Uporządkowany ciąg kroków prowadzący do rozwiązania Porównaj dwie liczby, wybierz większą
Program Algorytm zapisany w języku zrozumiałym dla komputera Plik .cpp z funkcją main
Język programowania Sztuczny język o ścisłej składni i znaczeniu zapisów C++, Python, JavaScript
Kod źródłowy Tekst programu, który edytujesz To, co widzisz w edytorze Visual Studio
Algorytm a program Ten sam algorytm możesz zapisać listą kroków, schematem, pseudokodem albo w C++. Algorytm jest pomysłem. Program jest jednym z zapisów tego pomysłu — tym, który komputer potrafi wykonać.

C++ jest językiem kompilowanym: kod źródłowy tłumaczy kompilator na plik wykonywalny (np. .exe), a dopiero potem uruchamiasz program. Przeciwieństwem jest język interpretowany (np. skrypt w przeglądarce): silnik czyta kod i wykonuje go na bieżąco, bez osobnego pliku wynikowego.

Na tym przedmiocie piszesz aplikacje konsolowe: program pyta o dane w oknie tekstowym i wypisuje wynik tekstem. Nie budujesz tu okienek z przyciskami.

Stanowisko na sali Kod C++ piszesz i uruchamiasz w Visual Studio 2026. Ten podręcznik otwierasz w przeglądarce — tu nie kompilujesz programów. Pierwszy projekt w Visual Studio jest w następnym rozdziale. Inne środowiska (Code::Blocks, Eclipse) możesz spotkać w porównaniach; na lekcjach i w ćwiczeniach obowiązuje Visual Studio.

2. Cechy i rodzaje algorytmów

Nie każdy przepis jest algorytmem. Poprawny algorytm ma kilka cech, których komputer nie „domyśli się” za Ciebie.

  • Skończoność — po skończonej liczbie kroków algorytm się zatrzymuje.
  • Jednoznaczność — każdy krok jest jasny; nie ma „zrób jakoś rozsądnie”.
  • Dane wejściowe — to, co podajesz (liczby, tekst, nic — też bywa daną).
  • Dane wyjściowe — wynik: liczba, komunikat, tak/nie.
  • Wykonalność — każdy krok da się wykonać (nie dziel przez zero „w ciemno”).

Przykłady z życia

Algorytmem jest przepis, który mówi: wsyp 200 g mąki, dodaj jajko, mieszaj 3 minuty. Nie jest nim rada „upiecz ciasto, aż będzie dobre” — brak jednoznaczności i kryterium stopu. Bankomat: włóż kartę, podaj PIN, wybierz kwotę, wypłać, oddaj kartę — to sekwencja z warunkami (zły PIN, brak środków).

Trzy podstawowe rodzaje

Liniowy

Kroki jeden po drugim, bez wyboru i bez powtórzeń. Przykład: wczytaj dwie liczby, dodaj, wypisz sumę.

Z rozgałęzieniami

W pewnym miejscu pytasz o warunek i idziesz jedną z dróg. Przykład: jeśli liczba jest parzysta, wypisz „parzysta”, w przeciwnym razie „nieparzysta”.

Iteracyjny

Fragment powtarza się, dopóki warunek jest spełniony (albo zadaną liczbę razy). Przykład: dodawaj kolejne liczby, aż wczytasz zero.

Rekurencja — na razie idea Algorytm rekurencyjny rozwiązuje zadanie, odwołując się do tego samego zadania dla mniejszej danej, aż dojdzie do przypadku oczywistego (warunek stopu). Silnia: n! to n razy (n−1)!, a 0! i 1! wynoszą 1. Zapis w C++ przyjdzie przy funkcjach. Teraz wystarczy umieć opowiedzieć tę ideę na jednym przykładzie.

3. Lista kroków

Najprostszy zapis algorytmu to ponumerowana lista kroków. Każdy punkt to jedna czynność. Warunek zapisujesz wcięciem albo słowami „jeśli / w przeciwnym razie”. Pętlę — „powtarzaj, dopóki…”.

Większa z dwóch liczb

1. Wczytaj liczby a i b.
2. Jeśli a ≥ b, przyjmij max ← a.
   W przeciwnym razie przyjmij max ← b.
3. Wypisz max.

Czy liczba jest parzysta

1. Wczytaj liczbę n.
2. Oblicz resztę z dzielenia n przez 2.
3. Jeśli reszta = 0, wypisz „parzysta”.
   W przeciwnym razie wypisz „nieparzysta”.
Strzałka przypisania W listach i w pseudokodzie często pisze się max ← a („max przyjmuje wartość a”). To nie jest porównanie. Porównanie to =, >, . W C++ przypisanie będzie =, a porównanie równości == — na razie trzymaj się strzałki.

4. Schematy blokowe

Schemat blokowy to rysunek algorytmu. Kształt bloku mówi, jaki rodzaj czynności wykonujesz. Strzałki pokazują kolejność. Na sprawdzianie i na egzaminie często proszą właśnie o schemat albo o odczytanie gotowego rysunku.

Symbole

start / stop — owal
operacja — prostokąt
wejście / wyjście — równoległobok
warunek — romb
Blok Kształt Kiedy go używasz
Start, Stop Owal Początek i koniec. Dokładnie jeden start. Zwykle jeden stop.
Operacja Prostokąt Obliczenie, przypisanie, zmiana zmiennej: s ← s + x.
Wejście / wyjście Równoległobok Wczytaj dane albo wypisz wynik. Nie mieszaj z obliczeniem.
Warunek Romb Pytanie tak/nie. Z rombu wychodzą dwie strzałki, opisane „tak” i „nie”.
Częsty błąd rysunku Z prostokąta i równoległoboku wychodzi jedna strzałka. Dwie drogi przysługują wyłącznie rombowi. Brak „Stop” albo pętla bez zmiany licznika to błąd logiczny — program by się nie skończył albo nie wiadomo, gdzie kończy pracę.

Sekwencja i warunek

Algorytm liniowy: suma dwóch liczb.

Start
Czytaj a, b
suma ← a + b
Pisz suma
Stop
Schemat liniowy: wczytanie, obliczenie, wypisanie.

Algorytm z rozgałęzieniem: większa z dwóch liczb.

Schemat blokowy: większa z dwóch liczb Start Czytaj a, b a ≥ b? TAK NIE max ← a max ← b Pisz max Stop
Po obu drogach strzałki schodzą się do wspólnego wypisania wyniku.

Obie gałęzie muszą się zejść (albo każda skończyć się na Stop). Nie zostawiaj „luźnej” strzałki w powietrzu.

Pętla na schemacie

Pętla to romb (warunek) plus ciało i zmiana sterująca, która w końcu sprawi, że warunek przestanie być prawdziwy. Bez tej zmiany powstaje pętla nieskończona — algorytm traci skończoność.

Suma liczb od 1 do n:

Schemat blokowy: suma od 1 do n Start Czytaj n s ← 0 i ← 1 i ≤ n? TAK s ← s + i i ← i + 1 NIE Pisz s Stop
Gałąź TAK: dodajesz i do sumy, zwiększasz licznik i wracasz do rombu. Gałąź NIE: wypisujesz s i kończysz. Dla n = 3 wynik to 6.
Zanim oddasz schemat
  1. Jest Start i Stop.
  2. Wejście i wyjście są w równoległobokach, obliczenia w prostokątach.
  3. Z rombu wychodzą dwie podpisane drogi.
  4. W pętli widać, co się zmienia (licznik, wczytana wartość, flaga).
  5. Dla przykładowych danych (np. n = 3) potrafisz przejść schemat ołówkiem i dostać 6.

5. Pseudokod

Pseudokod wygląda jak program, ale nie jest C++. Wolno pisać po polsku, pomijać średniki i typy. Ma być jednoznaczny dla człowieka — i łatwy do przepisania później na prawdziwy język.

Umowa stosowana w tym podręczniku:

  • CZYTAJ — dane wejściowe,
  • PISZ — wynik,
  • — przypisanie,
  • JEŚLI … TO … W_PRZECIWNYM_RAZIE …,
  • DOPÓKI … WYKONUJ albo DLA i OD 1 DO n WYKONUJ.

Maksimum z dwóch — trzy zapisy

Lista kroków

1. Wczytaj a, b.
2. Jeśli a ≥ b, max ← a; inaczej max ← b.
3. Wypisz max.

Pseudokod

CZYTAJ a, b
JEŚLI a ≥ b TO
  max ← a
W_PRZECIWNYM_RAZIE
  max ← b
PISZ max

Schemat tego algorytmu jest w poprzednim podrozdziale. C++ dopiszesz, gdy poznasz cin, cout i if. Teraz liczy się to, że ten sam pomysł da się pokazać na trzy sposoby.

Który zapis wybrać Krótka sekwencja — lista kroków wystarczy. Wiele warunków i pętli — schemat albo pseudokod są czytelniejsze. Gdy masz już język — program. Na sprawdzianie rób to, o co prosi polecenie; nie zamieniaj schematu na esej.

6. Przykłady zbiorcze

Parzystość

CZYTAJ n
JEŚLI n mod 2 = 0 TO
  PISZ "parzysta"
W_PRZECIWNYM_RAZIE
  PISZ "nieparzysta"

mod to reszta z dzielenia. Dla n = 7 reszta to 1, więc „nieparzysta”.

Suma liczb dodatnich spośród trzech

CZYTAJ a, b, c
s ← 0
JEŚLI a > 0 TO s ← s + a
JEŚLI b > 0 TO s ← s + b
JEŚLI c > 0 TO s ← s + c
PISZ s

Dla danych 3, −1, 5 wynik to 8. Zero nie jest dodatnie — nie wchodzi do sumy.

Minimum z n liczb

CZYTAJ n
CZYTAJ x
min ← x
i ← 2
DOPÓKI i ≤ n WYKONUJ
  CZYTAJ x
  JEŚLI x < min TO min ← x
  i ← i + 1
PISZ min

Pierwszą wartość przyjmujesz jako prowizoryczne minimum, potem porównujesz resztę. To ten sam pomysł, którego użyjesz później w pętli for w C++.

NWD — algorytm Euklidesa (odejmowanie)

CZYTAJ a, b
DOPÓKI a ≠ b WYKONUJ
  JEŚLI a > b TO
    a ← a − b
  W_PRZECIWNYM_RAZIE
    b ← b − a
PISZ a

Dla 48 i 18: 48−18=30, 30−18=12, 18−12=6, 12−6=6. Gdy obie wartości są równe, to NWD. Wersja z resztą z dzielenia jest krótsza — wrócisz do niej przy pętlach.

Przejście ołówkiem Weź NWD(48, 18) albo minimum z liczb 4, 9, 1, 7 (n = 4) i zapisz w tabelce: numer kroku, wartości zmiennych, czy warunek pętli jest spełniony. Jeśli potrafisz to zrobić bez komputera, rozumiesz algorytm.

Ćwiczenia do samodzielnego wykonania

Folder roboczy: np. Dokumenty\cwiczenia-po\rozdzial-01 (albo zeszyt). Nie trzymaj prac wewnątrz folderu tego podręcznika. W tym rozdziale nie uruchamiasz jeszcze Visual Studio.

Ćwiczenie 1. Słownik pojęć łatwe

Dopasuj własnymi słowami (jedno zdanie każde): algorytm, program, język programowania, kod źródłowy, kompilator. Nie przepisuj tabeli z rozdziału.

Ćwiczenie 2. Odczyt schematu łatwe

Weź schemat sumy dwóch liczb z podrozdziału o sekwencji. Podaj, jaki wynik zobaczy użytkownik dla a = 4, b = 9. Wymień po kolei bloki, przez które przechodzisz.

Ćwiczenie 3. Algorytm z życia łatwe

Zapisz listą kroków algorytm z codzienności (np. logowanie do dziennika, przygotowanie kanapki, przejście przez bramkę na stacji). Zaznacz dane wejściowe, wynik i miejsce, w którym pojawia się decyzja „tak/nie”. Sprawdź, czy opis jest skończony i jednoznaczny.

Ćwiczenie 4. Schemat z warunkiem średnie

Narysuj schemat blokowy: wczytaj temperaturę t. Jeśli t < 0, wypisz „mróz”, w przeciwnym razie „powyżej zera albo zero”. Użyj owalu, równoległoboków, rombu i Stop.

Romb ma pytanie w postaci tak/nie, np. „t < 0?”. Obie gałęzie kończą się wypisaniem komunikatu i mogą zejść się do jednego Stop.

Ćwiczenie 5. Schemat z pętlą średnie

Narysuj schemat: wczytaj n, wypisz liczby od 1 do n (każdą w osobnym kroku wyjścia albo jedną operacją „pisz i”). Pokaż warunek pętli i zmianę licznika. Sprawdź ołówkiem przebieg dla n = 3.

Inicjacja: i ← 1. Warunek: i ≤ n. Ciało: wypisz i, potem i ← i + 1, powrót do rombu. Gdy warunek jest fałszywy — Stop.

Ćwiczenie 6. Błąd w schemacie średnie

Oto lista kroków z błędem:

1. Wczytaj n.
2. i ← 1
3. Dopóki i ≤ n:
     wypisz i
4. Stop

Wskaż, jakiej cechy algorytmu brakuje i co dopisać, żeby algorytm się zatrzymał. Narysuj poprawiony schemat.

Ćwiczenie 7. NWD albo minimum trudne

Wybierz jedno:

  1. NWD dwóch dodatnich liczb całkowitych — schemat oraz pseudokod (wersja z odejmowaniem albo z resztą).
  2. Minimum z n liczb — schemat oraz pseudokod.

Przetestuj zapis na dwóch zestawach danych (w tym przypadku, gdy liczby są równe albo gdy minimum jest na końcu ciągu).

Ćwiczenie 8. Porównanie zapisów i rekurencja trudne

Weź algorytm parzystości z rozdziału. Zapisz go (1) listą kroków, (2) schematem, (3) pseudokodem. W 4–6 zdaniach oceń, który zapis jest najczytelniejszy i dlaczego. Na końcu własnymi słowami opisz ideę algorytmu rekurencyjnego na przykładzie silni albo „szukania hasła w słowniku przez dzielenie książki na pół” — bez kodu C++.

Sprawdź się

1. Czym jest algorytm?
2. Który blok schematu zadaje pytanie tak/nie?
3. Która cecha oznacza, że algorytm kiedyś się zatrzyma?
4. Czym różni się program od algorytmu?
5. Do czego służy pseudokod?

Wymagania na ocenę

Ocena wyższa zawiera wymagania na oceny niższe. Dotyczy pojęć, algorytmów i sposobów zapisu.

Ocena Uczeń
2 Rozróżnia algorytm, program, język programowania i kod źródłowy. Wymienia podstawowe bloki schematu. Z pomocą odczytuje prosty schemat sekwencji i jednego warunku.
3 Projektuje schemat z sekwencją i instrukcją warunkową. Zapisuje algorytm listą kroków. Podaje przykład z życia oraz cechy algorytmu (skończoność, jednoznaczność, dane we/wy).
4 Projektuje schemat z pętlą (warunek, ciało, zmiana sterująca). Zapisuje algorytm w pseudokodzie. Rozróżnia algorytmy liniowe, z rozgałęzieniami i iteracyjne. Wskazuje błąd logiczny w schemacie.
5 Dobiera formę zapisu do problemu. Projektuje algorytm typowego zadania (NWD, min/max, parzystość, suma z warunkiem). Opisuje ideę rekurencji na prostym przykładzie. Porównuje dwa zapisy pod kątem czytelności.
6 Analizuje poprawność i kompletność (przypadki brzegowe, zatrzymanie pętli). Proponuje usprawnienie gotowego schematu. Porównuje intuicyjnie liczbę operacji dwóch rozwiązań.

Lista „już umiem”