- 29 sierpnia 2024
- Opublikował: Damian
- Kategoria: Baza wiedzy
Przedstawienie algorytmów w sposób czytelny jest istotne zarówno dla początkującego programisty, jak i dla profesjonalnego kodera. Schematy blokowe okazują się idealnym rozwiązaniem w czasie nauki, szczególnie jeśli chodzi o podstawowe typy algorytmów.
Na czym polega schemat blokowy?
Schemat blokowy to graficzne przedstawienie algorytmu, a więc ciągu czynności służących do osiągnięcia konkretnego efektu. Co ciekawe, schematy blokowe są wykorzystywane w różnych dziedzinach, w tym do przedstawiania zasady działania algorytmów czy przebiegu procesów biznesowych.
Schematy blokowe składają się z elementów (bloki lub skrzynki), które przedstawiają konkretne instrukcje w ściśle określonej kolejności (z wykorzystaniem strzałek).
Dokumentowanie procesów biznesowych za pomocą schematów blokowych rozpoczęło się już w latach 20. i 30. XX wieku. Rozpowszechniono je jednak dopiero w latach 40., co było zasługą dwójki studentów – Spinangera oraz Grahama. Z kolei w 1947 roku ASME – Amerykańskie Stowarzyszenie Inżynierów Mechaników – przyjęło system symboli do schematów blokowych procesów. To były początki schematu blokowego, który w informatyce został użyty w latach 40. przez Goldstina i Van Neumanna.
- elastyczna forma zapisu,
- niezależność od języków programowania,
- łatwa kontrola poprawności algorytmu,
- możliwość szybkiego zrozumienia.
- niewygodne dla skomplikowanych algorytmów,
- brak możliwości łatwej poprawy błędów.
Jak się robi schemat blokowy?
Schematy blokowe składają się z bloków, które w sposób graficzny reprezentują konkretne operacje. Do ich zastosowania konieczna jest więc znajomość elementów, z których się składa, oraz sposobu przedstawiania takich wyrażeń jak pętle.
Elementy schematu blokowego – lista
Na poniższym obrazku znajdziesz listę wszystkich elementów, które mogą być stosowane w ramach schematów blokowych.
Warto jednak pamiętać, że nie istnieją bloki służące do bezpośredniego wykonywania pętli. Dlatego też tworzy się je za pomocą wykorzystania bloku warunkowego, dzięki któremu możliwe jest utworzenie odpowiednika każdej pętli.
Ważne: W przypadku schematów blokowych na naszej stronie stosujemy strzałkę ← jako operator przypisania, natomiast znak = do instrukcji warunkowych jako operator porównania. Dodatkowo w przypadku bloku operacyjnego stosujemy operacje takie jak w pseudokodzie według wskazań CKE. Pozwala to zmniejszyć liczbę potencjalnych błędów, szczególnie jeśli jest się przyzwyczajonym do stosowania pseudokodu.
Proces projektowania i tworzenia schematu blokowego
Poniżej znajdziesz proces tworzenia krok po kroku schematu blokowego na przykładzie wzoru na średnią arytmetyczną. Graficzny proces tworzenia jest dostępny na poniższej grafice GIF.
Specyfikacja:
- n – liczba podawanych wartości,
- suma – suma podanych wartości,
- srednia – wynik końcowy, średnia arytmetyczna.
W przypadku pseudokodu ten kod prezentuje się następująco:
1 2 3 4 5 6 7 8 9 10 11 12 13 | Funkcja SredniaArytmetyczna(): n ← 0 wprowadź (n) tab [1..n] suma ← 0 srednia ← 0 i ← 1 dla 1,2...n wykonuj wprowadź (tab [ i ]) suma ← suma + tab [ i ] srednia ← suma/n wypisz (srednia) |
Proces tworzenia części logicznej schematu blokowego:
- 1. krok – tworzenie schematu blokowego rozpoczyna się zawsze od bloku początkowego Start,
- 2. krok – deklaracja zmiennej n o wartości 0. Nie jest to konieczne w przypadku schematu blokowego (skoro potem stosuje się blok wejścia), jednak w przypadku części języków (np. C++) byłoby to ważne, ponadto dla większej uniwersalności warto zadbać o wcześniejszą inicjalizację zmiennych,
- 3. krok – wprowadzenie wartości do zmiennej n, czyli liczby wartości, na bazie których zostanie obliczona średnia arytmetyczna,
- 4. krok – deklaracja tablicy wartości, bo teraz już wiadomo, ile wartości zostanie wprowadzonych. Do tego należy zainicjalizować zmienne suma oraz srednia,
- 5. krok – w tym miejscu umieszcza się instrukcję warunkową działającą jako pętla, która działa tyle razy, ile jest wprowadzanych wartości do tablicy (odpowiednik for). Nie jest istotne, który z kątów rombu odpowiada za strzałkę “tak”, a który za “nie”. Istotne jest tylko oznaczenie, gdzie jest “tak”, a gdzie “nie”, przy zachowaniu odpowiedniego kierunku strzałek,
- 6. krok – wprowadzenie kolejnych wartości, z których zostanie uzyskana średnia arytmetyczna do tablicy,
- 7. krok – zamiast tworzyć kolejną pętlę, gdzie zostaną zsumowane wszystkie wartości, można skorzystać z już istniejącej. Istotne jest tylko to, żeby dodawać wartości już po tym, jak zostaną wprowadzone przez użytkownika,
- 8. krok – po zwróceniu “nie” przez blok warunkowy wykonywana jest instrukcja obliczająca średnią z ilorazu sumy oraz liczby elementów,
- 9. krok – teraz wystarczy już tylko wypisać wynik umieszczony w zmiennej srednia,
- 10. krok – gotowe, schemat blokowy został utworzony. Oczywiście, po utworzeniu każdego algorytmu w formie graficznej należy prześledzić wszystkie bloki dla sprawdzenia, czy logika schematu działa prawidłowo.
Utworzenie własnego schematu blokowego nie jest trudne, choć wymaga pewnej wprawy. Najważniejsze jest sprawdzanie działania algorytmu już po utworzeniu schematu, żeby wyeliminować wszelkie potencjalne błędy.
W czym najlepiej zrobić schemat blokowy – lista programów
Klasycznie schemat blokowy jest wykonywany na kartce papieru przy pomocy długopisu lub ołówka. Jednak obecnie istnieją programy do tworzenia schematów blokowych, dzięki którym możesz wygodnie przygotować odpowiednią grafikę. Są to m.in.:
- figma.com,
- diagrams.net (wcześniej draw.io),
- Microsoft Visio,
- Lucidchart,
- Miro,
- Dia Diagram Editor.
To popularne aplikacje oraz strony internetowe, które ułatwiają tworzenie estetycznych schematów blokowych.
Do czego wykorzystujemy schemat blokowy?
Schematy blokowe – ze względu na możliwość łatwego przekazania określonych informacji i sprawnego wyszukiwania potencjalnych błędów – wykorzystywane są w rozmaitych dziedzinach, m.in. do:
- projektowania algorytmów,
- rozwiązywania problemów (niezależnie od dziedziny),
- nauki podstaw programowania,
- planowania procesów produkcyjnych,
- modelowania systemów informatycznych.
Jeśli miewasz problemy z częścią logiczną algorytmów, dobrze jest przełożyć je na schemat blokowy. Okazuje się to użyteczne zarówno w przypadku planowania działania programu, jak i przy próbach zrozumienia określonych algorytmów.
Jak wygląda schemat blokowy algorytmu – przykłady
Istnieje wiele algorytmów przedstawianych w formie schematu blokowego. Najczęściej chodzi o te, które są stosowane w ramach nauki. Graficzna forma pozwala na skuteczne przyswojenie sobie zasad, którymi kierują się poszczególne rozwiązania. Wśród znanych algorytmów przedstawianych graficznie można znaleźć:
- sortowanie bąbelkowe,
- Sito Eratostenesa,
- sortowanie przez wstawianie,
- ciąg Fibonacciego.
Poniżej znajdziesz gotowe schematy blokowe, opisujące algorytmy stosowania wzorów matematycznych w programie.
Implementacja w pseudokodzie:
1 2 3 4 5 6 | Funkcja ObwodProstokata(): a ← 0 b ← 0 wprowadź (a, b) obwod ← 2 * a + 2 * b wypisz (obwod) |
Jak widać na powyższym schemacie blokowym, wystarczy zaledwie kilka elementów, żeby odzwierciedlić algorytm obliczania obwodu prostokąta. W schematach blokowych dobrze jest trzymać się wcześniejszego (czyli przed wprowadzaniem do nich wartości przez użytkownika) deklarowania zmiennych. Warto jednak pamiętać, że niektórzy autorzy schematów przyjmują deklarowanie zmiennej w czasie jej wprowadzania.
Implementacja w pseudokodzie:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Funkcja SredniaWazona(): n ← 0 wprowadź (n) tab [1..n][1..2] suma ← 0 dzielnik ← 0 sredniaW ← 0 dla 1,2...n wykonuj: wprowadź (tab [ i ][ 1 ], tab [ i ][ 2 ]) suma ← suma + tab [ i ][ 1 ] * tab [ i ][ 2 ] dzielnik ← dzielnik + tab [ i ][ 2 ] sredniaW ← suma / dzielnik wypisz (sredniaW) |
Schemat blokowy opisujący średnią ważoną to usprawniony schemat obliczania średniej arytmetycznej. Główną różnicą jest zastosowanie tablicy dwuwymiarowej, gdzie w jednym elemencie umieszcza się wartość, a w drugim jej wagę. Natomiast sam dzielnik to suma wag, a nie liczba wartości.
Implementacja w pseudokodzie:
1 2 3 4 5 6 7 8 9 10 11 12 13 | Funkcja ObliczanieDelty (): a ← 0 b ← 0 c ← 0 wprowadź (a, b, c) delta ← b * b - 4 * a * c jeśli delta > 0 wykonuj: wypisz ("Równanie kwadratowe ma 2 rozwiązania") zakończ funkcję jeśli delta = 0 wykonuj: wypisz ("Równanie kwadratowe ma 1 rozwiązanie") w przeciwnym razie: wypisz ("Równanie kwadratowe nie ma rozwiązań") |
Przedstawiony schemat blokowy jest stosunkowo prosty, jednak dobrze pokazuje, w jaki sposób można wykorzystać kilka połączonych bloków warunkowych. Ze względu na ograniczoną liczbę elementów (bloków) w schematach blokowych wykorzystanie bloku warunkowego pozwala uzyskać większe możliwości.
QUIZ – Sprawdź swoją wiedzę
Schematy blokowe to użyteczne narzędzie do graficznego przedstawiania algorytmów oraz procesów. Okazują się łatwe w zrozumieniu, uniwersalne, a także skalowalne. Wystarczą kartka papieru i długopis, żeby opracować własny schemat blokowy, choć obecnie istnieje wiele darmowych, a zarazem profesjonalnych programów oferujących możliwość ich tworzenia. Schematy blokowe okażą się sporym ułatwieniem w czasie nauki nowych rozwiązań.
- Stwórz schemat blokowy opisujący algorytm obliczania pola i obwodu równoległoboku (obwód: C = 2 (a + b), pole: A = b * h, gdzie a i b to boki, natomiast h to wysokość).
Najczęściej zadawane pytania o schematy blokowe
Czy schematy blokowe są przydatne w programowaniu?
Tak, schematy blokowe są niezwykle przydatne w programowaniu – z kilku powodów:
- wizualizacja algorytmów – pomagają wizualizować działanie algorytmów, co ułatwia zrozumienie ich części logicznej,
- projektowanie algorytmów – pozwalają programistom na projektowanie algorytmów przed przystąpieniem do pisania kodu, co pomaga w planowaniu i organizowaniu procesu programowania,
- debugowanie – mogą być używane do wstępnego debugowania kodu poprzez identyfikowanie potencjalnych problemów w logice algorytmu jeszcze przed jego implementacją w kodzie,
- komunikacja – to doskonałe narzędzie do komunikacji między członkami zespołu programistycznego, umożliwiające wspólne zrozumienie algorytmów i procesów.
Jak można przekonwertować schemat blokowy na kod programu?
W tym przypadku podstawą jest ręczne przetworzenie schematu blokowego na kod. Jednak część środowisk programistycznych (IDE), bibliotek i narzędzi pozwala na tworzenie kodu za pomocą bloczków. Jest to rozwiązanie podobne do schematu blokowego, obecne w:
- Blockly,
- Code2Flow,
- Microsoft Visual Studio,
- Eclipse,
- JetBrains IntelliJ IDEA.
Czy istnieją standardy lub konwencje dotyczące tworzenia schematów blokowych?
Istnieje ogólny standard co do tego, jakie elementy (bloki) stosowane są w schematach blokowych w informatyce. Jednak nie ma ogólnej standaryzacji co do tego, co można wykorzystać w ramach samych bloków. Mimo to w swoich schematach blokowych warto starać się o uniwersalność (niezależność od języków programowania), a także o stosowanie podobnych zasad pisania przy każdym schemacie. Ułatwi to późniejsze przekonwertowanie algorytmu na język programowania oraz zrozumienie działania danego rozwiązania przez inne osoby.