Soukup Graphic Programming Systems
                SGP C# Studio



SGP C# Studio
Jest to narzędzie do nauki algorytmiki, obiektowego i strukturalnego programowania w języku C#. Narzędzie to umożliwia zapisywanie algorytmu w postaci diagramu strukturalnego. Wbudowane preprocesor przed kompilacją programu tworzy z diagramu strukturalnego i stworzonych w edytorze makr (rozkazów i warunków) klasyczny kod źródłowy.

Narzędzie SGP C# Studio jest wygodny do wykorzystania w szkole dlatego, że strukturogramy SGP są bardzo przejrzyste, a ich zapis jest bardzo prosty. Wystarczy jeśli uczniowie/studenci nauczą się używać trzech symboli (! - rozkaz, * - pętla, / - rozgałęzienie) i już mogą zapisywać algorytmy i tworzyć proste programy.

Procedura towarzenia programu (metody) przypomina teraz pracę inżyniera-konstruktora. Najpierw należy narysować graficzny schemat programu/metody (struktura graficzna) i zbiór makr a seznam maker (potrzebne rozkazy i warunki). Następnie wstawia się skróty tych makr w odpowiadające im miejsca struktury graficznej i powstaje diagram strukturalny. Z tego diagramu preprocesor stworzy kod źródłowy dla kompilatora. Ważne jest to, że stworzone tak programy mają przejrzystą dokumentację graficzną, w której łatwo zorientuje się każdy, także autor :-)

Z projektu stworzonego w SGP C# Studio można wygenerować plik *.exe lub *.dll. Można go też wyeksportować do Microsoft© Visual Studia©, ewentualnie do Visual C# Express. SGP C# Studio zawiera standardowy interferejs Integrated Development Environment (IDE), standardowy edytor C# z kolorowaniem składni, automatycznym uzupełnianiem kodu i specjalnymi funkcjami SGP - tworzenie kodu źródłowego z różnych poziomów zagnieżdżenia. Jest wyposażony w przeglądarkę obiektów, bibliotekę SGPRTL (dla grafiki 2D i 3D) i oczywiście debugger.


Strukturogram
Strukturogram jest graficzną ilustracją algorytmu. Wykorzystuje 3 podstawowe struktury programistyczne (dziedziczenie, iterację i rozgałęzienie).
W postaci strukturogramu może być przedstawiony dowolny algorytm. Programując komputer za pomocą strukturogramu przedstawia bardziej złożone procedury czy funkcje, jako złożenie prostych metod, które zawierają tylko kilka rozkazów i minimum cyklów i warunków. Przez to dają się prosto zapisywać w języku programowania.

Strukturogram SGP jest zapisywany z pomocą znaków alfanumerycznych (© Bohumír Soukup, 1981). Jest to oryginalny graficzny zapis algorytmu, który można łatwo przekonwertować na kod źródłowy dowolnego języka programowania opartego o rozkazy i polecenia. SGP C# Studio przekształca struktorogramy do języka C#.

Przykład prostego programu "Wyrwij z książki wszystkie puste kartki" i jego rozwiązanie z pomocą SGP:
1.Struktura graficzna  +  2.Zestaw rozkazów i warunków   ==>    3.Strukturogram   =   4. Wygenerowany program 1:1 - uzupełniony o komentarze klasyczny zapis
        
     Książka              Rozkazy:                              ___Książka___         Program Książka
       !                   1 Otwórz książkę!                    1!    |    !2          1 Otwórz książkę!
     Kartki                2 Zamknij książkę!                       Kartki            Kartki
       *                   3 Wyrwij stronę!                          *1                 *1 Powtórz (dopóki są nieprzewrócone kartki) {
   ___Kartka__             4 Przewróc kartkę!                   ____Kartka____               Kartka
    /       /             Warunki:                              /1         /                  /1 Czy jest (Pusta kartka)
Pusta    Z tekstem         *1 Dopóki są nieprzewrócone kartki  Pusta    Z tekstem                 Pusta kartka
                           /1 Pusta kartka                      3!         4!                     3 Wyrwij kartkę!
                                                                                              /  Inaczej
                                                                                                  Kartka z tekstem 
                                                                                                  4 Przewróc kartkę!
		                                                                           }
                                                                                       2 Zamknij książkę!
          
Im bardziej złożony jest algorytm programu, tym wygodniejszy i bardziej przejrzysty jest jego zapis w postaci strukturogramu.
Porównajcie przejrzystość zapisu 3. (zapis SGP) i zapisu 4. (zapis klasyczny). Inne przykłady prezentujące wygodę stosowania strukturogramów przedstawione są poniżej.

Podstawowe elementy strukturogramu
                  Podstawowe konstrukcje dla JSP                               Znaki sterujące strukturogramu SGP (znak na pierwszym miejscu elementu)
 ----------------------------------------------------------------------        --------------------------------------------------------------
 |  Dziedziczenie  |      Pętla      |         Rozgałęzienie          |        ! - rozkaz (numer rozkazu można wstawić z obu stron "!")
 |  |     |     |  |       *1        |          /1   /2   /           |        * - pętla while
 |  A     B     C  |        A        |         A    B    C            |        + - pętla do-while
 |                 |                 |                                |        # - pętla for
 |                 |                 |                                |        @ - pętla foreach
 |   Pseudokod:    |   Pseudokod:    |  Pseudokod:                    |        / - větvení if (každá další větev také /)
 |    wykonaj A    |    dopóki 1     |    jeśli 1  wykonaj A          |        | - rozgałęzienie switch
 |    wykonaj B    |    wykonaj A    |    lub prawdziwe 2  wykonaj B  |        / - rozgałęzienie case z break
 |    wykonaj C    |                 |    inaczej         wykonaj C   |        % - rozgałęzienie case bez break
 |                 |                 |                                |        ? - rozgałęzienie ?(try) - ?(catch) - !(finaly)
 |                 |                 |                                |        & - lock
 |   kod C#:       | C# kód:         |  C# kód:                       |        " - definice podstruktury
 |     A();        |  while (podm_1) |    if (podm_1)      A();       |        ' - odniesienie do podstruktury
 |     B();        |    A();         |    else if (podm_2) B();       |        ; - komentarz
 |     C();        |                 |    else             C();       |
 ----------------------------------------------------------------------            
Klawisze skrótów edytora struktur
  W - wstawia element na lewo od aktywnego elementu struktury
  E  - wstawia element nad aktywnym elementem struktury
  R  - wstawia element na prawwo od aktywnego elementu struktury
  X  - wstawia element pod aktywnym elementem struktury

  A - przesuwa gałąź w lewo
  F - przesuwa gałąź w prawo

  Shift+strzałka w lewo/w prawo - przesuwa gałąź w lewo/w prawo
  Shift+strałka w dół/w górę   - przesuwa gałąź w dół/do góry

  Enter/F2 - edycja elementu struktury
  Del           - usunięcie elementu struktury
  Ctrl+Del   - usunięcie gałęzi struktury

  Ctrl+C - kopiowanie gałęzi lub zaznaczonego ciągu znaków do schowka
  Ctrl+X - wycięcie gałęzi lub zaznaczonego ciągu znaków i wstawienie ich do schowka
  Ctrl+V - wstawienie gałęzi lub ciągu znaków ze schowka - gałąź może być wstawiana tylko do najniższych elementów struktury, a nie wewnątrz struktury



Przykłady

Program Parzyste-Nieparzyste

                         Strukturogram                  +                    Lista poleceń i warunków                     ==>                 Wygenerowany kod źródłowy w C#
                                                                                                                                                                w tym wszystkie komentarze (można je pominąć)


Na obrazku przedstawiony jest program, który określa czy podane liczby są parzyste czy nieparzyste. Program kończy się po podaniu liczby 0. W lewej części okna znajduje się struktura programu (strukturogram), pośrodku lista rozkazów i warunków, a w prawej części wygenerowany kod źródłowy C#. Porównajcie przejrzystość zapisu programu z lewej strony (strukturogram) i z prawej strony (zapis klasyczny w postaci kodu C#).

Jak widać na obrazku program składa się z trzech części (Początek, Liczby i koniec). Najpierw wykonywana jest gałąź "Początek", tj. kolejno rozkazy 1 i 3. Potem wykonywana jest gałąź "Liczby" na końcu gałąź "Koniec". W obrębie gałęzi "Liczby", najpierw zostanie przeczytana liczba całkowita (rozkaz 4). Następnie warunek pętli (while) "*1" sprawdza, czy wczytana liczba jest różna od 0 (dla 0 kończy program). Dopóki liczba jest różna od 0 sprawdza, czy jest parzysta (warunek "/1"). Jeśli warunek "/1" jest spełniony, program napisze, że liczba jest parzysta. W innym przypadku napisze, że liczba jest nieparzysta. Potem program zczytuje następną liczbę wciąż sprawdzając warunek "*1". Jeśli wprowadzona zostanie liczba 0, gałąź "Liczby" zostaje ukończona i program wykonuje gałąź "Koniec", tzn. wykonuje kolen=jno rozkazy "2" (Pisz koniec programu) i "c" (Czekaj). Pobierz program Parzyste-Nieparzyste...


Program Czaruj
                                            Strukturogram                                                   +                        Lista rozkazów i warunków                ==>     Wygenerowany kod źródłowy w C#


Program Czaruj (na obrazku powyżej) Jest przykładem aplikacji 3D.Użytkownik steruje postacią Baltiego w przestrzeni 3D za pomocą strzałek. Może za pomocą innych klawiszy wybierać i wstawiać obiekty, usuwać je, czyścić całą scenę, zemieniać tło, zmieniać szybkość Baltiego itp.
Program ten może służyć za podstawę do tworzenia innych podobnych do niego programów. Pobierzcie go na swój komputer i poeksperymentujcie :-) Pobierz program Czaruj...


Program Czaruj - z rozwiniętymi niektórymi makrami w języku C# (rozkazy 0, b, c, d; warunki /P, |k, /Left; cykl *1)

                                          Strukturogram                                   +      Lista rozkazów i warunków (niektóre rozwinięte)     ==>           Wygenerowany kod źródłowy w C#


Makra
Makra możemy podzielić na rozkazowe i warunkowe. Jak widać na obrazku wyżej, makro rozkazowe może się składać z jednego lub więcej rozkazu C#, makro warunkowe to zapisany w języku C# warunek, otaczające go nawiasy "()" nie są konieczne. Znak w pierwszej kolumnie określa typ makra (/ warunki, * cykle, rozkazy nie mają specjalnego znaku), potem następuje tzw. oznaczenie makra (dowolny skrót) po który możemy wstawić opis makra (komentarz w C#).
Tworząc makra, najpierw zapisujemy tylko nagłówek makra, tj. skrót i komentarz z opisem makra. Tylko wtedy, gdy mamy już wszystkie makra zdefiniowane i umieszczone w strukturogramie, uzupełniamy je w języku programowania - w naszym przypadku w języku C#.


Pierwsze kroki w SGP C# Studio
1. Zainstalujcie SGP C# Studio.
2. Pobierzcie program Parzyste-Nieparzyste i spróbujcie w nim poeksperymentować.
3. Pobierzcie program Czaruj i spróbujcie w nim poeksperymentować.


Jeśli masz jakiekolwiek pytania, sugestie lub problemy napiszcie do nas....


Copyright © 1978-2009, SGP Systems