Programmentwurf

Scratch-Hamster, Nassi Shneidermann, UML-Activity-Diagramm (Version: 28. Februar 2022)

1. Programmiereinstieg mit dem Scratch-Hamster-Modell

Im folgenden werden wir 4 Lektionen investieren, um mit dem Hamster-Scratch spielerisch in das Fach Programmieren einzusteigen.
Laden sie dazu die folgende SW auf ihren Notebook: java-hamster-modell.de (Damit das Hamster-Programm laufen kann, muss die aktuelle Version von Java SE JDK installiert sein.)

Hamster-Scratch kurz erklärt

Auf der Hamster-Webseite finden sie ein ausführliches Handbuch. Das Wichtigste sei hier vorgestellt.
Starten sie das Hamster-Programm und erstellen sie mit Datei → Neu ein neues Dokument. Wählen sie unter "Typ des Programms" Scratch-Programm.
Mit diesem Programm lassen sich Programmierbausteine zu einem ausführbaren Programm zusammensetzen. Ziel ist es, den Hamster sicher durch ein Labyrinth zu führen und ihn Körner aufnehmen und ablegen zu lassen.

Folgende Bausteine stehen zur Verfügung:

Anweisungen → SEQUENZEN

  • Neue Prozedur: Damit lässt sich ein Ablauf so zusammenfassen, dass er als Prozedur an anderer Stelle und beliebig oft wiederverwendet werden kann.
  • liefere: Damit kreiert man in einer Funktion (Siehe Boolsche Ausdrücke "Neue Funktion") einen Rückgabewert "True" oder "False" in das aufrufende Programm. Die Funktion wird nach "liefere" verlassen. D.h.: Man kehrt in das aufrufende Programm zurück.
  • vor: Der Hamster macht einen Schritt vorwärts.
  • linksUm: Der Hamster dreht sich im Gegenuhrzeigersinn um 90°.
  • nimm: Der Hamster liest ein Korn auf.
  • gib: Der Hamster gibt ein Korn ab.
  • Alles weitere siehe Hamster-Manual.

Boolsche Ausdrücke → VARIABLEN bzw. KONSTANTEN, VERKNÜPFUNGSOPERATOREN

  • Neue Funktion: Ähnlich wie "Neue Prozedur" mit dem Unterschied, dass die Funktion ähnlich wie ein Sensor verwendet werden kann. (Siehe auch unter Anweisungen "liefere")(Function-Return-Value)
  • wahr: Der Sensor ist aktiv. (True)
  • falsch: Der Sensor ist nicht aktiv. (False)
  • nicht: Die Sensor-Aussage wird umgekehrt. (Not, Negation)
  • und: Zwei Sensor-Aussagen werden Und-Verknüpft. (And)
    D.h.: Nur wenn beide Sensoren aktiv sind passiert etwas.
  • oder: Zwei Sensor-Aussagen werden Oder-Verknüpft. (Or)
    D.h.: Nur wenn beide Sensoren nicht aktiv sind passiert nichts. In allen anderen Fällen passiert etwas.
  • vornFrei: Der vornFrei-Sensor ist aktiv.
    D.h.: Vor dem Hamster hat es kein Hindernis
  • kornDa: Der KornDa-Sensor ist aktiv.
    D.h.: Dort wo der Hamster gerade steht, hat es ein Korn, das er aufnehmen kann.
  • maulLeer: Der maulLeer-Sensor ist aktiv.
    D.h.: das Hamster-Maul ist leer bzw. der Hamster hat keine Körner in seinem Maul.

Steuerung → KONTROLLSTRUKTUREN

  • falls: Falls dies zutrifft tu das. (Einseitige Verzweigung)
    Die grüne Fläche muss mit einem boolschen Ausdruck versehen werden.
    Die Aussparung in der Mitte muss mit Inhalt (d.h Anweisungen, Steuerungen) gefüllt werden
  • falls-sonst: Falls dies zutrifft tu das, sonst das. (Zweiseitige Verzweigung)
    Die grüne Fläche muss mit einem boolschen Ausdruck versehen werden.
    Die Aussparung unter "falls" bzw. "sonst" muss mit Inhalt (d.h Anweisungen, Steuerungen) gefüllt werden
  • solange: Solange dies zutrifft tu das. (Kopfgesteuerte Schleife)
    Die grüne Fläche muss mit einem boolschen Ausdruck versehen werden.
    Die Aussparung in der Mitte muss mit Inhalt (d.h Anweisungen, Steuerungen) gefüllt werden
    Hinweis: Je nach Bedingung wir die Schleife nicht betreten.
  • wiederhole-solange: Wiederhole dies solange das zutrifft. (Fussgesteuerte Schleife)
    Die grüne Fläche muss mit einem boolschen Ausdruck versehen werden.
    Die Aussparung in der Mitte muss mit Inhalt (d.h Anweisungen, Steuerungen) gefüllt werden
    Hinweis: Die Schleife wird mindestens einmal durchlaufen.
Praxisaufgabe
∇ AUFGABEN
∇ LÖSUNGEN

2. Der SW-Entwicklungsprozess

Darum IPERKA:

  • I=Informieren → Bei der SW-Entwicklung nennt man das ANALYSE
  • P=Planen → Bei der SW-Entwicklung nennt man das DESIGN
  • E=Entscheiden
  • R=Realisieren → Bei der SW-Entwicklung nennt man das IMPLEMENTATION
  • K=Kontrollieren → Bei der SW-Entwicklung nennt man das TEST
  • A=Auswerten (Debriefing)

3. Programmiersprachen

  • Compiler-Sprachen: Quellcode (Sourcecode) wird kompiliert (Übersetzt in maschinenlesbaren Code).
    Beispiel Programmiersprache: C/C++, VB, Sonderfall Java mit Laufzeitumgebung
  • Interpreter-Sprachen: Quellcode wird von einem Interpreter (z.B. Webbrowser fü Javascript, Webserver für php) direkt ausgeführt.
    Beispiel Programmiersprache: Powershell, Javascript, php, VBA

4. Strukturierter Programmentwurf mit Nassi-Shneidermann

Im folgenden beschäftigen wir uns mit der Planungsphase (Design) in der SW-Entwicklung und veranschaulichen uns das anhand einer Aufgabenstellung:
Es wird eine Zahl eingegeben. Wenn die Zahl grösser als 0 ist, dann erfolgt die Ausgabe "Positive Zahl", sonst wird "Null" oder "negative Zahl" ausgegeben. Das Programm wird mit der Ausgabe "Programm-Ende" beendet.

Darstellung obiger Aufgabe mit einem Struktogramm: (Zu lesen von oben nach unten!)

Struktogramme sorgen dafür, dass die entstehende Programmstruktur automatisch den Vorgaben der strukturierten Programmierung entspricht:

  • Das Programm hat ein gemeinsamer Beginn und ein gemeinsammes Ende, keine Querein- und Ausstiege und damit Verhinderung von Spaghetti-Code (Go-To)
  • Unterprogramm (Abstraktion/Prozedur/Funktion) mit Rücksprung an die Stelle des Hauptprogramms, wo dieses für das Unterprogramm verlassen wurde.

Die Struktogrammelemente nach Nassi-Shneidermann:

Nassi-Shneiderman-Struktogramme mit der Structorizer-SW erstellen:

Die dafür benötigte Applikation findet man hier: https://structorizer.fisch.lu/

Praxisaufgabe
∇ AUFGABEN
∇ LÖSUNGEN

5. Unified Modeling Language → Activity-Diagram

Ein Aktivitätsdiagramm (Activity Diagram) ist ein Verhaltensdiagramm und Teil von Unified Modeling Language (UML), einer Modellierungssprache für Software und andere Systeme. Es stellt die Vernetzung von elementaren Aktionen und deren Verbindungen mit Kontroll- und Datenflüssen grafisch dar.


6. Datentypen

Ein Programm kommt kaum ohne Variablen aus. In einer Variable können verschiedene Dinge gespeichert werden: Zahlen, Zeichen, Texte usw. Allerdings muss man sich vorerst festlegen, welche Art von Daten man in einer bestimmten Variable speichern möchte. Das heisst, man muss den Datentyp der Variable festlegen. Für das erste beschränken wir uns auf die folgenden Datentypen:

  • Ganzzahl (Integer)
  • Fliesskommazahl (Floating Point Number)
  • Einzelnes Textzeichen A..Z, a..z, 0..9, +, -, !, ?, usw. (Charakter)
  • Text (String) bzw. Array of Character
  • Logische Variable (Boolean) mit True oder False
Praxisaufgabe
∇ AUFGABE
∇ LÖSUNG