Rysujemy algorytmy: wstęp do schematów blokowych

Rysujemy algorytmy: wstęp do schematów blokowych

Jeżeli zaczynacie swoją przygodę z programowaniem to pewnie spotkaliście się z pojęciem algorytmu. Pozwólcie, że zacytuję wikipedię:

"Schemat blokowy – narzędzie służące do przedstawienia kolejnych czynności w projektowanym algorytmie. Jest to diagram, na którym procedura, system lub program komputerowy są reprezentowane przez opisane figury geometryczne połączone wektorami zgodnie z kolejnością wykonywania czynności wynikających z przyjętego algorytmu rozwiązania zadania."

wikipedia

Zanim przejdziemy do wykorzystania schematów w programowaniu to rozpocznijmy od zagadnienia z życia codziennego. Część czynności wykonujecie intuicyjnie. Praktycznie każdy proces możemy rozbić na poszczególne kroki. Na ich podstawie możemy zbudować algorytm, który skutecznie może być wizualizowany w postaci schematu blokowego.

Załóżmy, że zamierzamy ugotować makaron.

Aby wykonać tą czynność potrzebujemy garnka, kuchenki, wody, makaronu i soli. Trzy ostatnie elementy to dane wejściowe, z których otrzymamy dane wyjściowe, czyli ugotowany makaron. Zastanówmy się, co musimy zrobić, aby ugotować to danie:

  • garnek stawiamy na kuchence,
  • wlewamy wodę do garnka,
  • wsypujemy szczyptę soli,
  • doprowadzamy wodę do wrzenia,
  • wsypujemy makaron,
  • czekamy 7 minut od czasu do czasu mieszając,
  • sprawdzamy, czy makaron jest ugotowany,
  • przekładamy na talerz.

Prosty i dla wielu z Was intuicyjny proces został pokazany w formie listy kroków. Chcesz wiedzieć jak to zapisać w postaci schematy blokowego i jak korzystać przy tym z DrawIO to zapraszam do dalszej części wpisu.



Wstęp do schematów blokowych

Podstawowe elementy schematów blokowych to grupa zaledwie kilku kształtów. Poniżej znajdziecie te najważniejsze:.

Schemat zaczynamy od bloku START, kończymy blokiem STOP.


Blok wejścia/wyjścia (blok IO - Input/Output) czyli blok w którym należy umieszczać czynności wprowadzania danych (np. od użytkownika "z klawiatury") lub wypisywania danych.


Blok operacyjny to blok w którym wykonywane są wszelkie operacje na danych.


W bloku decyzyjnym umieszczane są warunki, które po spełnieniu bądź nie kierują proces na jeden z wariantów.

Makaron część I

Załóżmy dla uproszczenia, że proces gotowania makaronu to tylko trzy czynności:

  • wrzucenie składników do garnka,
  • gotowanie,
  • wyłożenie gotowej potrawy na talerz.

Tak uproszczony algorytm spróbujmy umieścić między blokami START/STOP

Zaczynamy proces. Po START umieszczamy składniki w garnku. Skorzystamy z bloku IO:

Czas na gotowanie. Wykonujemy "obróbkę danych", dlatego użyjemy bloku operacyjnego:

Po ugotowaniu wykładamy makaron na talerz. Zapisujemy to w bloku IO. Co kończy nasz program.

Makaron część II

Skomplikujmy nasz algorytm dodając operacje wymienione w krokach z początku artykułu. Dodajmy obsługę garnka do diagramu. Ponieważ za to odpowiada użytkownik (kucharz) wykorzystamy blok IO:

Rozdzielmy blok podawania produktów na dwa (wodę i sól podajemy wcześniej a makaron wsypujemy po zagotowaniu wody). Między nimi wprowadźmy sprawdzenie, czy woda wrze:

Mam nadzieję, że zauważyłeś, że sprawdzenie temperatury wody realizuje blok decyzyjny. Jeżeli temperatura osiągnie 100 stopni to możemy wsypać makaron. Kolejny element to oczekiwanie aż makaron się ugotuje. Gotujemy tak długo, jak zaleca producent (np 7 minut), a po tym czasie sprawdzamy raz lub kilka razy czy makaron jest już gotowy:

Sprawdzenie wymaga ponownego użycia bloku decyzyjnego. Jeżeli makaron jest ugotowany to możemy go wyłożyć na talerz. W przeciwnym wypadku odczekać jeszcze chwilkę i sprawdzić ponownie. Zauważ, że wszystkie czynności do których "zmuszamy" użytkownika wypisujemy w równoległobokach, a czynności, które wykonywane są przez maszynę (w naszym przypadku kuchenkę) w prostokącie. Wynika to z ról poszczególnych bloków opisanych w tabelce na początku artykułu.

W następnym wpisie przedstawię, jak używać programu Draw IO do rysowania schematów.



One comment

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

17 − 8 =