Flowgorithm 01 Opis Programu
Flowgorithm 01 Opis Programu
i programowania.
1.1 Wstęp
W roku 2019 zainteresowałem się programem Flowgorithm, aby m.in. urozmaicać lekcje o tematyce związanej
z algorytmami i ogólnie pojętym programowaniem. Po prawie dwóch latach uważam, że program nadaje się idealnie
do wspomagania nauczania podstaw programowania i demonstracji algorytmów, a czas nauczania zdalnego
dodatkowo wykazał jego ogromny potencjał w dydaktyce. Program jest darmowy, ma niewielkie wymagania i daje
się uruchomić nawet w emulowanym środowisku* na Linux lub MacOS. Nie bez znaczenia – szczególnie dla
młodszych uczniów – jest fakt, że interface Flowgorithm został całkowicie spolszczony.
Widząc potencjał programu do realizacji TIK-u na lekcjach informatyki (lub przedmiotów pokrewnych),
postanowiłem podzielić się swoimi doświadczeniami. W pierwszej części opisuję charakterystykę i możliwości
Flowgorithmu. W kolejnych dokumentach pokażę kilkanaście (kilkadziesiąt – ciągle pracuję nad kolejnymi)
algorytmów wraz z ich realizacją.
W zamierzeniu każdy dokument ma stanowić pomysł na lekcję. Zawierać będzie teoretyczny opis problemu,
jego rozwiązanie oraz realizację w postaci programu Flowgorithm (gotowy plik będzie dostępny do pobrania), a do
większości z nich zostanie dołączony scenariusz lub konspekt lekcji.
Program pozwala na tworzenie zmiennych całkowitych, rzeczywistych, logicznych oraz napisów, jak również
tablic jednowymiarowych tych typów. Zapewnia operacje logiczne, arytmetyczne, konkatencję napisów. Pozwala
tworzyć własne funkcje o dowolnej liście argumentów, które również mogą zwracać wartości. Oprócz standardowych
bloków (deklaracja, przypisanie, warunek, wejście/wyjście) zapewnia również bardziej złożone konstrukcje, jak pętla
dowhile, while oraz for.
Najciekawszymi możliwościami narzędzia jest możliwość uruchamia programu w postaci blokowej w widoku
z podziałem na schemat, konsolę wejścia/wyjścia oraz stan zmiennych. Za absolutnie genialne rozwiązanie uważam
możliwość automatycznego przełożenia narysowanego algorytmu na jeden z języków programowania z długiej listy
możliwości. Znajdziemy tam między innymi: C++, JAVĘ, PHP, Pythona, możliwość zapisu w dwóch odmianach
pseudokodu itd. Dla bardziej wymagających istnieje możliwość tworzenia własnych szablonów języków.
*
WineHQ - Uruchamiaj aplikacje dla Windowsa na Linuksie, BSD oraz macOS
*
Do rysowania algorytmów świetnie nadają się programy: DIA: Apps/Dia - GNOME Wiki! czy też np. draw.io: diagrams.net.
1.3 Schemat, szablon programu
Dzięki takiemu podejściu rysowany algorytm jest zawsze spójny. Wszystkie gałęzie zbiegają się w bloku końcowym,
a użytkownik nie musi zastanawiać się nad łączeniem poszczególnych elementów.
Środowisko pozwala ustawiać jedenaście rodzajów bloków . Jest to ponadkompletna lista standardowych figur
używanych do rysowania schematów blokowych.
Deklaracje zmiennych. Dostępne są cztery typy podstawowe: Integer, Real, String oraz Boolean.
Program pozwala deklarować jednocześnie wiele zmiennych oraz tablice jednowymiarowe.
Nazwy zmiennych nie mogą rozpoczynać się cyfrą, zawierać spacji lub być nazwą zastrzeżoną (nazwą funkcji
lub instrukcji – słowami kluczowymi / zarezerwowanymi), taką jak: and, or, not, mod, pi, true, false, boolean,
integer, real, string, abs, cos, random, tan, tostring, arccos, int, sgn, tochar, toreal, arcsin, len, sin, tocode, arctan,
log, size, tofixed, char, log10, sqrt, tointeger, arccosh, cosh, arcsinh, sinh, arctanh, tanh.
Kompletna lista możliwych typów przedstawia się następująco
Integer – liczby całkowite
Real – liczby rzeczywiste
String – łańcuchy znaków
Boolean – logiczne
W przypadku użycia zmiennych tablicowych ich indeksy (numeracja elementów) numerowane są jak w językach
C-owych, czyli od 0 (zero). W szczególności oznacza to, że tablica 20 liczb typu Real będzie posiadała elementy
numerowane od 0 do 19, które będą liczbami rzeczywistymi.
W deklaracji możemy od razu tworzyć listę wielu zmiennych, jednakże muszą być one jednego typu.
Deklaracja czterech zmiennych typu rzeczywistego (liczby Deklaracja dwóch tablic o dwudziestu elementach typu
zmiennoprzecinkowe) całkowitego
W przypadku przypisania system kontroluje typ wartości. Gdy wartości są przypisywane do elementów tablicy,
używany jest operator indeksowania [] (elementy numerowane od 0). W schemacie operacja oznaczana jest
symbolem = (niestety, nie ma możliwości przełączenia programu na użycie umownych operatorów := lub ).
Nadanie wartości zmiennej typu Real Nadanie wartości zmiennej typu String
1.4.3 Instrukcja warunkowa i operatory
Sama konstrukcja warunku logicznego może odbywać się z użyciem operatorów typu BASIC czy Pascal lub
zgodnie z konwencją C-ową. Dostępnych operatorów można używać zamiennie. I tak dostępne są:
*
Również „konkatenacja” lub „sklejanie”
1.4.4 Wywołanie funkcji
Flowgorithm pozwala definiować własne funkcje.
Wszystkie argumenty są przekazywane przez wartość
(funkcja nie modyfikuje swoich argumentów). Zwracana
wartość jest powiązana ze zmienną lokalną, która jest
tworzona w momencie definiowania funkcji.
Okno deklaracji funkcji Okno definicji (ciało funkcji)
1.4.5 Pętle
Oprócz standardowych bloków używanych diagramach algorytmów mamy do dyspozycji trzy multibloki. Są
to pętle: while, dowhile oraz for.
*
Program NIE rozróżnia wielkości liter w nazwach funkcji to znaczy, że np. funkcje tostring(…) i ToString(…) są tożsame.
1.4.7 Inne
Flowhorithm ukazuje swoją największą wartość
dydaktyczną , gdy włączymy okna podglądu schematu,
stanu zmiennych oraz konsoli. Dodatkowo można
podglądnąć kod programu. Program automatycznie
konwertuje schemat blokowy na 18 języków
programowania (w tym dwa rodzaje pseudokodu).
Dzięki analizie krok-po-kroku każdy może obserwować
jednocześnie bieg algorytmu oraz zmiany, jakim
podlegają zmienne (zarówno proste, jak i tablicowe).
1.4.8 Pobieranie
Program jest dostępny na stronie Flowgorithm - Flowchart Programming Language, również działa grupa na FB, która
zrzesza zarówno pasjonatów, jak i nowicjuszy Flowgorithm | Facebook. Grupę moderuje sam autor Roberto Atzori.
*
Autor obiecuje, że możliwość importu funkcji stanie się priorytetem w rozwoju programu.