|
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.
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():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.
print "Hallo Welt"
hello()
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:
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==1Das Statement "then" ändern wir zu einer Return-Anweisung mit dem Inhalt:
return 1Das 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.