Algorytmy – sposoby ich zapisywania

W moich wpisach pojęcie – algorytm pojawiało się już wiele razy. Wiele razy przedstawiałem gotowe algorytmy rozwiązujące jakiś problem informatyczny, ale doszedłem do wniosku, że nie każdy młody, chcący nauczyć się algorytmiki i algorytmicznego podejścia do programowania, człowiek wie czym właściwie jest algorytm oraz jakie są sposoby zapisywania algorytmów. W tym artykule postaram się przybliżyć ten temat.

Czym właściwie jest algorytm?

Myślę, że to pojęcie najłatwiej przedstawić w postaci przykładu. Za przykład posłuży nam przepis na zapiekankę ziemniaczaną. W takim przepisie oprócz składników mamy podany sposób przyrządzenia potrawy w postaci listy czynności jakie należy wykonać przygotowując zapiekankę. Po wykonaniu tych czynności spodziewamy się rezultatu w postaci gotowej do zjedzenia potrawy.

Sprawa ma się identycznie w przypadku algorytmu. Algorytm można nazwać przepisem, ponieważ tak samo jak przepis, jest ciągiem czynności, których wynikiem jest na przykład rozwiązanie jakiegoś problemu informatycznego, matematycznego.

Założeniem algorytmu jest jak najprostsze przedstawienie sposobu uzyskania jakiegoś wyniku.

Algorytmy nie bez powodu mają swoje zastosowanie w informatyce. Algorytmicznie można przedstawić wiele typowych problemów na jakie napotykają się informatycy (konwersje sortowania i wiele innych). Pewnej analogii można się również dopatrywać pomiędzy algorytmem, a kodem napisanym w jakimkolwiek języku programowania. Procedury i działania obecne w kodzie są zbiorem poleceń, które przekazujemy komputerowi w oczekiwaniu na jakiś rezultat. Tutaj również można zauważyć podobieństwo do przepisu.

Algorytmy – sposoby ich zapisywania

Pseudokod

Pseudokod jest (przynajmniej moim zdaniem) relatywnie najwygodniejszym sposobem na zapis algorytmu. Charakteryzuje się typową dla języków programowania strukturą, korzysta więc z pętli i funkcji, ale za to nie zaprząta sobie głowy szczegółami implementacyjnymi języka. To oznacza, że nie spotkamy się z żadnymi składniowymi elementami języka (jak np. nawiasy, czy średniki), ani też pierdołami pokroju sposobu inicjalizowania danych. Pseudokod w porównaniu do kodu programu jest uniwersalny. Można go przełożyć na praktycznie każdy język programowania.

W tym artykule jako przykład służyć mi będzie problem rozkładu liczby na czynniki. Będę go używać przy każdym ze sposobów zapisu algorytmów, abyście mogli sami porównać te zapisy ze sobą.

i←2

dopóki a>=2

                dopóki reszta z dzielenia „a” przez „i” równa się 0

                               wypisz „i”

                               a←a/i

                i←i+1

wypisz 1

Schemat blokowy

Schemat blokowy jest graficznym sposobem zapisu algorytmu. Przedstawiany jest w postaci diagramu, składającego się z przeróżnych figur geometrycznych i strzałek, które są dodatkowe opisane przy pomocy elementów wybranego języka programowania, bądź (bardziej uniwersalnie) za pomocą słów.

W szczegółowych schematach blokowych wykorzystuje się masę różnych figur i znaków, ale najlepiej znać cztery podstawowe elementy, które właśnie stanowią esencję schematów blokowych. Są to:

  • Bloki startowe/Bloki końcowe – owale, bądź prostokąty z zaokrąglonymi rogami sygnalizujące początek, lub koniec algorytmu. Przy czym należy pamiętać, że algorytm zawsze ma jeden początek, ale może mieć wiele różnych końców,
  • Bloki warunkowe – romby, będące sposobem zapisu instrukcji wyboru. Dla programistów to po prostu powszechnie znane ify,
  • Bloki wykonawcze – prostokąty, zawierające wszelakie operacje poza instrukcjami wyboru,
  • Strzałki – łączą ze sobą pozostałe elementy.
Algorytmy - schemat blokowy

Lista kroków

Algorytm może być zapisany również jako najzwyklejsza, ponumerowana lista kroków, które mają być wykonywane do momentu zakończenia algorytmu. Jeśli chodzi o ten sposób zapisywania to (przynajmniej moim zdaniem) właśnie w nim najtrudniej wypatrzeć jakieś błędy, ale umówmy się wszystkie z przedstawionych metod zapisu są stosunkowo proste.

  1. Przypisz danej „i” wartoś 2 i idź do kroku nr 2.
  2. Jeżeli „a” jest większe, bądź równe liczbie 2 przejdź do kroku nr 3.
  3. Jeżeli „a” jest podzielne przez „i” przejdź do kroku nr 4.
  4. Wypisz „i”, a potem idź do kroku nr 5.
  5. Przypisz „a” wartość równą ilorazowi „a” przez „i”, a potem wróć do kroku nr 3.
  6. Jeżeli „a” nie jest podzielne przez „i” to dodaj 1 do „i” i wróć do kroku nr 2.
  7. Jeżeli „a” jest mniejsze od 2 to wypisz 1 i zakończ algorytm.

a – liczba, dla której wypisujemy czynniki

grupa wsparcia matura z informatyki

Wybór sposobu to już raczej kwestia osobistych preferencji i/lub konkretnego problemu, który mamy zapisać w postaci algorytmu, więc przyznaję może niepotrzebnie dywagowałem nad tym, który lepszy, wygodniejszy…  W każdym bądź razie tak od siebie dodam, że czasami pisząc program, warto jest sobie szkicować taki prowizoryczny algorytm. Dzięki temu czasami łatwiej jest dostrzec niektóre rzeczy.

Jeżeli wiążesz swoją dalszą przyszłość z programowaniem, myślę, że warto już teraz dokształcać się w tym zakresie, czytając np. specjalistyczne książki. O algorytmach i innych, przydatnych zagadnieniach ze świata informatyki, przeczytasz w tej oto książce.

You Might Also Like
1 Comment
  • Avatar photo
    Rembrandt
    says:

    Czy można zapisać algorytm w postaci schematu blokowego na maturze (zad 1.2) rozszerzonej czy tylko w postaci pseudokodu i listy kroków?

Dodaj komentarz

icon