JustPaste.it

Edukacyjny system programowania TRAIN 2.0

System programowania TRAIN pozwala operować postacią graficzna nawiązująca do popularnych schematów blokowych i schematów przepływu danych w formie zabawy kolejką elektryczną

System programowania TRAIN pozwala operować postacią graficzna nawiązująca do popularnych schematów blokowych i schematów przepływu danych w formie zabawy kolejką elektryczną

 

Przedstawiono system programowania pozwalający operować różnymi postaciami programu: tekstową, graficzną, symboliczną i zakodowaną. Najciekawszą wydaje się być postać graficzna nawiązująca do popularnych schematów blokowych i schematów przepływu danych. Kodowanie w tej postaci polega na klikaniu i przeciąganiu myszą elementów, z których powstaje program. By jeszcze bardziej uprzystępnić programowanie czynności te nawiązują do układania torów popularnej zabawki dziecięcej - kolejki elektrycznej. Opracowano również wyjątkowo prostą, choć w pełni funkcjonalną, architekturę komputera i zaimplementowano jego symulator, pulpit operacyjny, symboliczny debugger oraz kompilator z postaci wysokiego poziomu. Całość sprzedawana jest jako załącznik do podręcznika, który zawiera opis programu i szereg ćwiczeń programistycznych podanych w formie książki przygodowej.

1.Motywacja i poprzednie prace

Opanowanie pierwszego języka programowania (choćby dla zrozumienia na czym polega programowanie) bywa bardzo trudne szczególnie przy braku znajomości języka angielskiego. Z drugiej strony nawet dobre opanowanie języka programowania nie oznacza, że uczeń dobrze rozumie procesy, które zachodzą w komputerze i będzie w stanie wykorzystać tę wiedzę przy programowaniu. Potrzebny jest zatem system programowania, który nie będzie stawiał wygórowanych wymagań początkującemu a jednocześnie odkryje przed nim zwykle skrzętnie skrywane szczegóły działania systemu programowania. Wśród rozwiązań, które miały wpływ na tę pracę można wyróżnić: w założeniu edukacyjny Pascal; poznany w trakcie studiów informatycznych pulpit minikomputera NOVA 1200, którego walory dydaktyczne pozwoliły dogłębnie zapoznać się z programowaniem niskopoziomowym; autosymulator DataPoint 2200, który w późniejszym okresie tworzył namiastkę bezpośredniego kontaktu z niskim poziomem programowania; strukturalne schematy blokowe, które ćwiczone "na papierze" pozwalały lepiej przygotować studentów do programowania w niełatwych przecież współczesnych językach programowania; język Visual C++ oraz DELPHI 1.0, które dały nowe spojrzenie na rolę grafiki w programowaniu; oraz w pełni graficzny powstający w Massachusets Institute of Technology język CUBE.

2.Koncepcja systemu

Zaproponowany język programowania jest w pełni graficzny i odwołuje się do powszechnie znanej i lubianej zabawy kolejką elektryczną. Wyróżniono dwa poziomy zabawy/programowania: układanie torów kolejki - poziom definiowania schematu przepływu sterowania w programie; układanie ramp przeładunkowych i napisów ujawnianych przy wjeździe kolejki na stację - poziom wprowadzania schematów przepływu danych w instrukcjach.

Zaproponowano również bardzo prostą maszynę przeznaczoną do wykonywania przetłumaczonych na jej język postaci graficznej. Maszyna ta posiada tylko trzy formaty instrukcji: instrukcje trójadresowe na rejestrach; instrukcje przesyłania rejestr/komórka pamięci; instrukcje względnego skoku warunkowego. Spośród aż 256 rejestrów 32-bitowych rejestr 1 jest licznikiem rozkazów; rejestr 0 jest adresem bazowym, który przypisuje każdemu z 256 rejestrów odpowiednią komórkę pamięci operacyjnej. Wprowadzenie rejestru bazowego pozwala prosto realizować wywołania podprogramów czy programowanie współbieżne.

3.Poszczególne okna systemu

Główne okno systemu pozwala przejść do okien zawierających różne postacie programu, a także przetłumaczyć program z postaci języka wysokiego poziomu na postać zakodowaną. Odzwierciedla to funkcje translatora języka wysokiego poziomu i pozwala wytłumaczyć uczniom czy studentom zasadę działania kompilatora przez porównanie kodu źródłowego z przekładem na język maszyny docelowej. 

Okno toru kolejki/schematu blokowego pozwala operować programem w postaci graficznej. Wstawianie instrukcji i operatorów uzyskuje się przez "przeciąganie i upuszczanie" elementów z górnego panelu. Postawiona na torze ikona kolejki uruchamia wykonywanie programu. Okno uniemożliwia wprowadzanie niepoprawnych składniowo czy kontekstowo programów, a semafor zakazuje uruchomienia programu, gdy nie jest on kontekstowo kompletny. Przedstawiono wykonywanie algorytmu Euklidesa znajdowania największego wspólnego podzielnika w "zastosowaniu" do zorganizowania defilady dwóch oddziałów w równolicznych szeregach. 

Okno postaci tekstowej wprowadzono celem uzmysłowienia związku zaproponowanego języka programowania z tradycyjnymi językami typu Pascal. Pozwala tylko na podgląd kodu źródłowego. 

Okno z pulpitem komputerowym dla prezentacji postaci zakodowanej wprowadzono na wzór starych komputerów z "epoki przed mikromputerowej". Dostępny jest pulpit komputera z lampkami i przełącznikami do podg[AU1]lądu stanu maszyny i jego modyfikacji. Pozwala to uzmysłowić uczącemu się do jakiej postaci tłumaczy się program i jak następuje jego wykonywanie. 

Okno postaci symbolicznej programu realizuje ideę programowania przez wybór z menu niskopoziomowych instrukcji maszyny docelowej. Menu służy również do objaśniania treści poszczególnych instrukcji. Jest to sposób alternatywny do graficznego, który byłby dość trudny do wprowadzenia na tym poziomie. W Instytucie Informatyki Politechniki Poznańskiej prowadzi się prace zmierzające do realizacji takiego oprogramowania dla wspierania programowania popularnych procesorów firmy INTEL serii 80x86. 

4.Język programowania

PRZYKŁAD Prześledźmy kolejne fazy tworzenia programu na przykładzie programu realizującego algorytm Euklidesa. Po uruchomieniu programu zastajemy pusty ekran: 

Zaczynamy od wstawienia pustej pętli jaka występuje w programie i w tym celu zsuwamy z panelu symbol bezwarunkowej zmiany kierunku wykonywania programu(zakręt) i po zniknięciu zakazu postoju (na linii łączącej koła początku i końca programu) upuszczamy go: 

Teraz musimy utrwalić położenie, w którym pętla nawraca szerokim łukiem (musimy mieć miejsce dla dalszych instrukcji) przez przyciśnięcie i puszczenie myszy: 

Teraz wstawiamy warunek umożliwiający opuszczenie pętli przeciągając i upuszczając symbol warunku: 

Kolejno umieszczamy (przeciągając i upuszczając) dwa bloczki, które będą realizowały obliczenia w pętli: 

Dalej możemy wstawić blok warunkowy umożliwiający wybranie do wykonania odpowiedniej z tych dwóch instrukcji: 

Aby wybrać jedną z dwóch instrukcji musimy jeszcze wstawić instrukcję zmieniającą przepływ danych po wybraniu pierwszego bloku: 

Teraz możemy uzupełnić schemat o bloki, które zapewnią wczytanie danych i wyprowadzenie wyniku, a także nazwać zmienne, które będą służyły do obliczeń: 

Po ustaleniu schematu blokowego możemy przystąpić do wypełniania bloków. Wypełniamy bloki wczytywania zapełniając zarówno okienko tekstowe jak schematy przepływu danych: 

Następnie zapełniamy bloki warunkowe przeciągając i upuszczając odpowiedni operator ('=') oraz łącząc ze zmiennymi przyciśnięciami i przesuwaniem myszy: 

Podobnie postępujemy w przypadku bloków instrukcji: 

Wreszcie zapełniamy instrukcję wyjścia: Po wypełnieniu wszystkich bloków możemy przystąpić do wykonywania programu w trybie podglądania (ang. debugging). W tym celu przeciągamy i upuszczamy ikonę kolejki na początku schematu. Teraz możemy wstrzymać wykonywanie przyciskając ikonę kolejki na panelu. 

5.Maszyna docelowa

Procesor tej maszyny wykonuje trzy grupy instrukcji.

Operacje arytmetyczno-logiczne

Ładowanie i zapamiętywanie zawartości rejestrów: 
Jak w wielu innych maszynach niektóre adresy mają specjalne znaczenie będąc adresami urządzeń zewnętrznych lub raczej pułapkami wywołującymi funkcję systemu operacyjnego:

Są również instrukcje porównania i skoku:

6.Uwagi końcowe

Program był sprzedawany jest na dyskietce stanowiącej uzupełnienie napisanego w formie dialogu ojca z synem podręcznika "OD ZABAWY KOLEJKĄ DO PROGRAMOWANIA".