INF.04 · C# · lekcja 22

Metody rozwiązywania problemów — schematy blokowe i pseudokod

Od pytania do schematu i kodu

  • Zrozum
  • Sprawdź
  • Napisz sam

Po tej lekcji: od pytania do schematu i kodu

Dzisiaj zrobisz konkretną rzecz

Zanim napiszesz linijkę kodu, warto rozrysować rozwiązanie na kartce. Schemat blokowy i pseudokod to dwa uniwersalne "języki", w których zapiszesz algorytm niezależnie od tego, czy potem zaimplementujesz go w C#, Pythonie czy jakimkolwiek innym języku. Podstawa programowa (INF.04.3.3) wymaga wprost umiejętności zapisu algorytmu w tej postaci — to też świetne narzędzie do planowania własnych programów, zanim zgubisz się w składni.

Instrukcja obsługi bankomatu, procedura reklamacyjna w sklepie, a nawet przepis kulinarny — to wszystko algorytmy, które dałoby się rozrysować jako schemat blokowy: "sprawdź czy karta jest ważna → jeśli tak, poproś o PIN → jeśli PIN poprawny, pokaż menu → jeśli nie, po 3 próbach zablokuj kartę". Firmy projektujące procesy (np. obsługę zamówień w sklepie internetowym) często najpierw rysują taki diagram, żeby wychwycić brakujące przypadki, zanim ktokolwiek napisze kod.

Sprawdź w działaniu

Od pytania do schematu i kodu

Najpierw przewidź wynik. Zmień dane w modelu i porównaj efekt. Spróbuj także przypadku granicznego, a nie tylko pierwszego poprawnego przykładu.

Ta interakcja wymaga włączonego JavaScriptu.

Model pokazuje wybraną zasadę. Nie uruchamia ani nie ocenia wklejonego kodu C#.

1. Przygotuj i uruchom własny projekt

2. Najpierw mały przykład

Wykonaj tę próbę przed dłuższym rozwiązaniem. Zacznij od wejścia i oczekiwanego wyjścia. Romb schematu odpowiada warunkowi, a dwie gałęzie mają rozłączne opisy. Ten sam warunek musi znaleźć się w pseudokodzie i w C#.

Program.cscsharp
int liczba = 8;
if (liczba % 2 == 0)
    Console.WriteLine("parzysta");
else
    Console.WriteLine("nieparzysta");
Wynik
Dla8: parzysta; dla7: nieparzysta.
  1. Co sprawdzić? Zmień jedną wartość i przed uruchomieniem zapisz przewidywany rezultat. Porównaj go z opisem wyniku; przy błędzie wróć do konkretnej instrukcji.

Jak to działa — 1

Schemat blokowy to graficzny zapis algorytmu za pomocą znormalizowanych symboli połączonych strzałkami pokazującymi kolejność wykonania:

• owal — początek lub koniec algorytmu;

• prostokąt — pojedyncza operacja/działanie (np. przypisanie zmiennej, obliczenie);

• romb — decyzja/warunek, zawsze z dwoma możliwymi wyjściami (tak/nie, prawda/fałsz);

• równoległobok — wejście lub wyjście danych (wczytanie z klawiatury, wypisanie na ekran).

Pseudokod to z kolei zapis tekstowy, "prawie jak kod", ale bez trzymania się składni konkretnego języka — używasz słów typu "jeżeli", "dopóki", "dla każdego", zapisując logikę tak, żeby każdy programista (niezależnie od używanego języka) mógł to zrozumieć i przepisać na swój język.

Drzewo decyzyjne to sposób przedstawienia sekwencji decyzji, gdzie każdy węzeł to pytanie/warunek, a gałęzie prowadzą do kolejnych pytań albo do ostatecznego wyniku — przydatne, gdy trzeba rozpisać wiele warunków zależnych od siebie (np. kwalifikacja klienta do rabatu na podstawie kilku kryteriów).

Jak to działa — 2

Wszystkie trzy metody służą temu samemu celowi: rozbiciu problemu na małe, jednoznaczne kroki, zanim zacznie się pisać kod w konkretnym języku programowania.

3. Pełny przykład — czytaj od Main

Teraz zastąp Program.cs tym programem. Zanim uruchomisz, znajdź dane wejściowe, operację i miejsce prezentacji wyniku. W tym wariancie zachowujemy jawny Main. Nie wklejaj kilku pełnych programów do jednego pliku.

Program.cs — osobne uruchomieniecsharp
using System;

class Program
{
    // Ten sam algorytm co na schemacie blokowym powyżej,
    // zapisany najpierw jako pseudokod (w komentarzu), a potem w C#:
    //
    // PSEUDOKOD:
    // 1. wczytaj liczbę n
    // 2. jeżeli n podzielne przez 2 bez reszty:
    //        wypisz "parzysta"
    //    w przeciwnym razie:
    //        wypisz "nieparzysta"

    static void Main()
    {
        Console.Write("Podaj liczbę całkowitą: ");
        int n = int.Parse(Console.ReadLine());

        if (n % 2 == 0)
        {
            Console.WriteLine("Liczba parzysta");
        }
        else
        {
            Console.WriteLine("Liczba nieparzysta");
        }
    }
}
  1. Prześledź kod Zwróć uwagę, że pseudokod w komentarzu i schemat blokowy z sekcji "Schemat" opisują dokładnie ten sam algorytm co finalny kod C# — tylko na trzy różne sposoby. To celowe: chodzi o pokazanie, że "myślenie algorytmiczne" jest niezależne od języka programowania. Romb ze schematu (n % 2 == 0?) to dokładnie ten sam warunek, co if (n % 2 == 0) w kodzie.

Sprawdź, zanim przepiszesz cały program

Pomijanie etapu planowania i pisanie kodu "na żywioł" — dla prostych zadań to działa, ale przy bardziej złożonej logice (dużo warunków zależnych od siebie) łatwo o pominięty przypadek. Schemat blokowy wymusza przemyślenie WSZYSTKICH gałęzi (każdy romb musi mieć dokładnie dwa wyjścia).

Zbyt szczegółowy pseudokod — pseudokod nie powinien zawierać składni konkretnego języka (średniki, nawiasy klamrowe). Jeśli pseudokod wygląda jak gotowy kod C#, to już nie jest pseudokod.

Romb z jednym wyjściem — częsty błąd na rysowanych schematach: warunek musi mieć ZAWSZE dwie strzałki wychodzące (tak/nie), nawet jeśli w gałęzi "nie" nic się nie dzieje poza przejściem dalej.

Ćwiczenie z pomocą · samodzielna praca

4. Teraz Twoja zmiana

Rozpisz na kartce (albo w edytorze tekstu) pseudokod algorytmu sprawdzającego, czy podana liczba jest liczbą pierwszą. Nie pisz jeszcze kodu C# — najpierw sam pseudokod, krok po kroku.

Oczekiwany rezultat
Spełnij warunki polecenia. Zapisz wejście, otrzymany wynik i wyjaśnij, która część kodu za niego odpowiada.
Potrzebujesz pomocy? Rozwiązuj krok po kroku.
Krok 1 — pokaż podpowiedź

Wróć do podstawowej formy oraz objaśnienia: Zacznij od wejścia i oczekiwanego wyjścia. Romb schematu odpowiada warunkowi, a dwie gałęzie mają rozłączne opisy. Ten sam warunek musi znaleźć się w pseudokodzie i w C#.

Krok 2 — pokaż podpowiedź

Zmień tylko część potrzebną do polecenia. Zachowaj działającą wersję przed zmianą i uruchamiaj po każdym małym etapie.

Krok 3 — pokaż podpowiedź

Sprawdź przypadek zwykły i graniczny; porównaj z regułą: Dla8: parzysta; dla7: nieparzysta.

Otwórz tylko tyle podpowiedzi, ile potrzebujesz. Po każdym kroku wróć do zadania i sprawdź wynik.

5. Sprawdź rozumienie, nie tylko uruchomienie

Dalej na swoim koncie

Rozgrzewki, quiz i zadania są w biurku ucznia.

Teoria jest otwarta dla wszystkich. Żeby rozwiązywać zadania, zapisywać szkice i widzieć swój postęp, zaloguj się.

Zaloguj się →
Źródła i dalsza nauka