0% found this document useful (0 votes)
25 views8 pages

Flowgorithm 01 Opis Programu

Uploaded by

maciejo887
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
25 views8 pages

Flowgorithm 01 Opis Programu

Uploaded by

maciejo887
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 8

1 Program Flowgorithm – narzędzie wspierające naukę algorytmów

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.

Wszystkie ilustracje i grafiki zawarte w dokumencie są opracowaniami autorskimi.

1.2 Opis programu

Program „Flowgorithm” pozwala tworzyć algorytmy w postaci schematów blokowych. W odróżnieniu od


„zwykłych” programów graficznych*, którymi tylko prezentujemy algorytm w postaci bloków, w Flowgorithmie
możemy je uruchamiać oraz analizować krok-po-kroku wraz z obserwacją stanu zmiennych.

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
dowhile, 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

Po uruchomieniu programu widzimy szkielet funkcji głównej.

Dodawanie elementów następuje poprzez kliknięcie strzałki łączącej


dotychczasowe elementy.

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.

1.4 Dostępne bloki, wraz z opisem

Środowisko pozwala ustawiać jedenaście rodzajów bloków . Jest to ponadkompletna lista standardowych figur
używanych do rysowania schematów blokowych.

Blok wejścia/wyjścia. Dla zwiększenia czytelności są one wyróżnione innymi barwami.


W przypadku wejścia podajemy nazwę zmiennej. W przypadku wyjścia „sklejamy” napis zawierający
literały łańcuchowe (napisy/stringi) oraz zmienne, łącząc elementy operatorem konkatencji ‘&’.

Deklaracje zmiennych. Dostępne są cztery typy podstawowe: Integer, Real, String oraz Boolean.
Program pozwala deklarować jednocześnie wiele zmiennych oraz tablice jednowymiarowe.

Bloki warunkowy oraz wywołania funkcji.


Warunki budowane są za pomocą standardowych operatorów logicznych (np. >, <, =, <> , >=, <=
itd.) dostępnych w notacji typu BASIC np. a and b, a<>b) oraz typu C/C++ np. a &&b, a!=b.
Wywołanie pozwala uruchomić inną funkcję oraz przekazać jej argumenty. Możliwe są również
wywołania rekurencyjne.
Pętle występują w trzech klasycznych wariantach: while, for oraz dowhile. Program sam
dobudowuje odpowiednie połączenia między blokami w schemacie.

Komentarze zwiększają czytelność diagramu, nie wpływają na jego wykonanie.


Punkt przerwania pozwala przerwać automatyczne wykonanie kodu, a następnie na analizę
programu krok-po-kroku.

Schowek pozwala wstawiać do diagramu uprzednio skopiowane elementy. Można


kopiować/wycinać wiele bloków równocześnie, a następnie wklejać je w innym miejscu schematu.

1.4.1 Operacje wejścia/wyjścia


Wejście
Wymaga podania nazwy istniejącej zmiennej. W czasie wykonania
programu zostaje on zatrzymany i czeka na wpisanie wartości
z konsoli. Typowanie następuje automatycznie. W przypadku liczb
zmiennoprzecinkowych używana jest notacja anglosaska, tzn.
separatorem części całkowitej i dziesiętnej jest kropka.
Wyjście
W oknie wyjściowym tworzymy docelowy napis przez sklejenie
(konkatencję) stałych literałów łańcuchowych (napisów ujętych
w cudzysłów), operatorem & oraz nazw zmiennych. System dokonuje
substytucji wartości zmiennych, a następnie wyprowadza na konsolę
końcowy napis. Dodatkowo możemy zdecydować, czy za napisem ma
wystąpić znak nowej linii. W obecnej wersji programu formatowanie
liczba rzeczywistych wymaga funkcji toFixed (zmienna, precyzja).

1.4.2 Deklaracje zmiennych


U podstaw programu leży koncepcja deklaratywnych języków programowania. Oznacza to, że każda zmienna,
której chcemy używać, musi zostać najpierw zadeklarowana. Dodatkowo język opiera się na paradygmacie silnego
typowania, to z kolei narzuca konieczność dobrania typu zmiennej do rodzaju danych, które będzie reprezentować.
Wzorem języka Pascal, w czasie wykonania programu, środowisko dba o to, aby używane zmienne były zainicjowane,
a zakresy tablic nie były przekroczone.

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

Warunki w Flowgorithm tworzone są automatycznie jako blok


z dwoma rozgałęzieniami. Od użytkownika zależy, czy tworzony
warunek będzie ekwiwalentem instrukcji „if”, czy też „ifelse”.

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ą:

operatory notacja C/C++ notacja typu BASIC symbol


logiczne
Równy == = =
Nierówny != <> ≠
Mniejsze lub równe <= ≤
Większe lub równe >= ≥
Logiczna negacja „nie” ! not ¬
Logiczne „i” (koniunkcja) && and ∧
Logiczne „lub” (alternatywa) || or ∨
arytmetyczne
Dodawanie + +
Odejmowanie (jako binarny operator
- -
odejmowania lub unarny operator zmiany znaku)
Mnożenie * 
Dzielenie (gdy pracujemy na liczbach całkowitych,
wynik również jest całkowity – odpowiednik / ÷, :
„div”)
brak –
Potęgowanie odpowiednik ^ ↑
funkcji pow(x,n)
Reszta z dzielenia % mod
brak –
odpowiednik
Konkatencja napisów* przeciążonego &
operatora + dla
typu string

*
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)

Gdy funkcja zostanie zdefiniowana, można wywołać ją jak


funkcje biblioteczne np. x=funkcja02(zm1,3.14,”ok.”).

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, dowhile oraz for.

Pętla while - wykonuje instrukcje znajdujące się


w jej wnętrzu tak długo, dopóki zdefiniowany
warunek jest prawdziwy. Zawartość pętli może
być – teoretycznie – dowolnie złożona.
Warunek sprawdzany jest przed wykonaniem
pierwszego obiegu, co oznacza, że zawartość
pętli może się nie wykonać ani razu.

Pętla do – działa jak pętla while, z tą różnicą, że


warunek jest sprawdzany na końcu.
W konsekwencji pętla wykona się zawsze
przynajmniej jeden raz.
Pętla for – wykonuje się z góry określoną liczbę
razy (zakładając, że w czasie jej działania żadne
przypisania nie modyfikują licznika).
Definiując sposób działania funkcji, musimy
mieć zadeklarowaną zmienną, która będzie
pełnić funkcję zmiennej sterującej (licznika).
Określić można przedział, krok oraz kierunek
naliczania.

1.4.6 Dostępne funkcje wbudowane


funkcja opis*
Abs(n) wartość bezwzględna (moduł)
Arcsin(n) arcus sinus
Arccos(n) arcus kosinus
Arctan(n) arcus tangens
Cos(n) kosinus
Int(n) część całkowita liczby
Ln(n) logarytm naturalny (podstawa e)
Log(n) logarytm naturalny (jw.)
Log10(n) logarytm dziesiętny
Sgn(n) znak (funkcja zwraca -1, 0, 1) w zależności od znaku liczby
Sin(n) sinus
Sqrt(n) pierwiastek kwadratowy
Tan(n) tangens
Len(s) długość napisu
Char(s, i) zwraca i-ty znak z napisu s
ToChar(n) konwersja kodu znaku na znak
ToCode(c) konwersja znaku na jego kod
ToFixed(r, i) format liczby rzeczywistej (liczba miejsc po przecinku – precyzja)
ToInteger(n) zamiana napisu na liczbę całkowitą
ToReal(n) zamiana napisu na liczbę rzeczywistą
ToString(n) zamiana liczby na napis
Random(n) zwraca liczbę losową (całkowitą) z przedziału <0, n-1>
Size(a) zwraca rozmiar tablicy

*
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).

Nie zabrakło również dbałości o estetykę i czytelność


algorytmów. W czasie pracy możemy zmieniać motywy
kolorystyczne (oraz definiować własne), jak również
wybierać spośród dziewięciu modeli prezentacji
schematów blokowych, w tym IBM, GOST i SDL.

Ponieważ cały program jest zapisany w XML, można


„ręcznie” ingerować w jego zawartość. W szczególności
można „doklejać” własne funkcje. Niestety wymaga to
nieco wiedzy i w czasie lekcji bywa kłopotliwe.
Z drugiej strony można przygotować taki plik przed
lekcją dając uczniom możliwość zbudowania własnego
programu z użyciem funkcji, które nie stanowią treści
lekcji*.

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.

You might also like