Zurück
Eine kurze Einführung in PyNassi

Inhalt:

Struktogramm "Hello World"
Strukrogramm "BMI-Rechner"
Struktogramm "Fakultät"


Der Leser der folgenden Kapitel sollte bereits einfache Grundlagen der Programmierung mit Python kennen, dieses ist lediglich eine knappe Einführung in den Umgang mit PyNassi und kein Programmierkurs.

Ein Programm wird in PyNassi als Menge von Funktionen erstellt. Jede Funktion besteht aus einem oder mehreren Statements. Ein Statement ist eine einzelne Anweisung, eine Fallunterscheidung, eine Schleife usw.

Anwendungsbeispiele

Um den Umgang mit PyNassi zu erkären, folgen nun einige Beispiele, die Schritt für Schritt die Erstellung des Strukrogrammes zeigen. Die fertigen erstellten Struktogramme liegen PyNassi bereits bei, Sie sollten zur Übung trotzdem versuchen, dieses Struktogramme selbst einzugeben.

Struktogramm "Hello"

Dieses einfache Struktogramm soll den Text "Hallo Welt" ausgeben. Zunächst muss ein neues Struktogramm erstellt werden:
- Aktivieren von Datei->Neuer Struktogrammeditor, oder Klicken auf das Struktogramm-Symbol.
- Die Frage nach dem Namen des Programmes mit "hello" beantworten.

Es wird nun ein Struktogramm bestehend aus der Funktion "hello" erstellt, sowie ein Aufruf dieser Funktion.
Die Funktion hello ist zunächst ein leeres Statement. Durch einen Klick mit der linken Maustaste auf das (leere) Statement weisen wir PyNassi an, das Statement als Ausgabe zu erstellen:

Die Anweisung ist zunächst ohne Inhalt, bzw. die Python-Anweisung "pass". Mit einem weiteren Linksklick weisen wir der Ausgabe den Text zu, wir ersetzen den Text "Text" durch "Hello World". Texte (Zeichenketten bzw. Strings) werden dabei immer in Anführungszeichen gesetzt, während Variablen, Werte oder Formeln ohne Anführungszeichen notiert werden (siehe Ausgabe). Die Eingabe wird mit OK bestätigt.

Fertig ist das erste Struktogramm. Sie sollten das Struktogramm nun speichern, per Datei->Sichern als, oder durch Klick auf das Disketten-Symbol.

Anschließend wird aus dem Struktogramm der Programmcode erzeugt, dazu Datei->Code erzeugen aufrufen.
Es öffnet sich ein neues Fenster mit dem zum Strukrogramm gehörenden Python-Code:

def hello():
  print "Hallo Welt"
hello()
Um den Code nun auszuführen, ist nun noch ein Klick auf "Ablauf->Code mit Python ausführen" oder das grüne Start-Symbol nötig, es wird dann ein neuer Python-Interpreter gestartet, und das Programm ausgeführt.
Alternativ kann der Programmcode im internen Debugger ausgeführt werden. Im Debugger kann der Ablauf des Programmes Schritt für Schritt sowohl auf Code- wie auch auf Strutogrammebene beobachtet werden.

Struktogramm "bmi-rechner"

Mit einem im Struktogrammeditor zu entwickelndem Programm soll der BMI (Body-Maß-Index) des Benutzers berechnet und "eingeordnet" werden. Der BMI ist ein Maß für das Gewicht in Relation zur Körpergröße, er wird wie folgt berechnet:

bmi = gewicht * 10000 / groesse2

Gewicht in kg und Körpergröße in cm.

BMI-Index
Frauen
Männer
Untergewicht
<19
<20
Normalgewicht
19 - 24
20 - 25
Übergewicht
25 - 30
26 - 30
Behandlungsbedürftiges Übergewicht
> 30

Vorgehen:
Zunächst erstellen wir ein neues Struktogramm mit dem Namen BMI-Rechner. (Datei -> Neues Struktogramm).
Da unsere Struktogramm nun aus mehreren Einzelanweisungen besteht, erstellen wir zunächst einen "Block" (Links-Klick in das leere Statement). Ein Block kann mehrere Anweisungen aufnehmen, die später der Reihe nach bearbeitet werden.



Zunächst müssen die Angeben des Benutzers (Geschlecht, Gewicht und Grösse) eingelesen werden. Hierzu erstellen wir 3 Eingabeanweisungen und speichern die Abfragen in den drei Variablen geschlecht, groesse und gewicht.

Achtung: Geschlecht ist eine Zeichenkette, Gewicht und Grösse sind Zahlen. Der Eingabetyp muss daher entsprechend eingestellt werden.

Hinweis: Der Block enthält anfangs nur 2 leere Anweisungen. Um weitere Anweisungen einzufügen, mit der rechten Maustaste auf das letzte Statement klicken, und Statement unterhalb einfügen auswählen. Alternativ mit der linken Maustaste auf den gelben Rahmen des Blocks klicken. Mit der rechten Maustaste können Anweisungen auch wieder gelöscht werden.


Nun wird eine Anweisung erstellt, und die Formel bmi = gewicht*10000 / ( groesse * groesse ) eingegeben. Zur Kontrolle folgen nun mehrere Ausgabeanweisungen, um die Eingaben und das berechnete Ergebnis auszugeben:


Achtung: Beachten Sie bei der Ausgabe, Texte in Anführungszeichen zu setzen, Variablen nicht, und die einzelnen Teile durch Kommata zu trennen.

Nun soll die Auswertung des bmi-Ergebnisses erfolgen. Hierzu erfolgt zunächst eine Fallunterscheidung nach Geschlecht.

Achtung: Die Variable "geschlecht" ist eine Zeichenkette, daher erfolgt hier auch der Vergleich mit einer Zeichenkette: geschlecht == "w". Das Symbol für Vergleich auf Gleichheit ist ein doppeltes Gleichzeigen "==".

Nun erfolgen Verzweigungen (Fallunterscheidungen) gemäß der BMI-Tabelle für die Fälle <19, <25 und Rest bei "Weiblein", bzw. <20, <26 und Rest bei "Männern". Das Ergebnis "Untergewicht", "Normalgewicht" oder "Übergewicht" wird als Ausgabeanweisung ausgegeben



Zum Schluss wird noch, sowohl bei "m" wie auch bei "w", eine "Gesundheits-Warnung" ausgegeben, wenn der BMI-Wert über 30 liegt, hier genügt eine Verzweigung unabhängig vom Geschlecht.

Zur Übersicht noch einmal das gesamte Struktogramm:



Struktogramm "Fakultät"

Wir wollen ein Struktogramm erstellen, welches rekusiv die Fakultät einer ganzen Zahl, z.B. 5 berechnet.
Die Fakultät "fak" einer Zahl ist wie folgt rekursiv definiert:
 

fak(1) = 1
fak(n), mit n größer als 1:   n*fak(n-1).


Wir erstellen ein neues Strukrogramm, die erste Funktion nennen wir "start".
Das leere Statement ändern wir zu einer Ausgabe Inhalt:

"Die Fakultaet von 5 ist ", fak(5)
Nun müssen wir die Funktion "fak" gemäß der obigen Definition erstellen, also unser Programm um die Funktion "fak" erweitern. Dazu klicken wir auf den schmalen freien Bereich links des Struktogrammes. Es erscheint ein Auswahlfeld, wo wir "Funktion hinzufügen" auswählen. Die neu erstellte Funktion nennen wir durch Anklicken des grünen Funktionsnamens zu "fak". Als Parameter geben wir die Variable "n" an.

Das Statement der Funktion "fak" ändern wir zu einer if-else-Verzweigung, als Bedingung geben wir an:

n==1
Das Statement "then" ändern wir zu einer Return-Anweisung mit dem Inhalt:
return 1
Das Statement "else" ändern wir zu einer Return-Anweisung mit dem Inhalt:
return n * fak(n-1)
Das Ergebnis sollte nun folgendermaßen aussehen:

Der zugehörige Python-Code (Datei->Code erstellen):

def fak(n):
  if n==1:
    return 1
  else:
    return n * fak(n-1)

def start():
  print "Die Fakultät von 5 ist ", fak(5)

start()

Wir können den Ablauf des Programmes mit dem Debugger beobachten.