Upload
david-ahoua
View
28
Download
0
Embed Size (px)
DESCRIPTION
01_Struktogramm
Citation preview
Einführung in das Programmieren (f. Ing.)
IPP:TUC, Christian Vetter 1
Einführung in das Programmieren (für Ingenieure)
Programmieren in C
Chr. Vetter
Worum geht es beim Programmieren?
Es geht darum, technische Systeme, die eine universelle Leistung bieten, so zu konfigurieren und in ihrer Arbeitsweise zu bestimmen, dass sie dem Menschen dienen bzw. deren Handeln und Denken unterstützen.
Der Mensch überlegt sich, wie etwas geht (z.B. mathematische Vorgehensweise) und setzt diese Handlungsvorschrift in eine geeignete Form (z.B.) für einen Rechner um, damit dieser fortan die langweilige, mühsame Arbeit in quantitativen Varianten durchführt.
Einführung in das Programmieren (f. Ing.)
IPP:TUC, Christian Vetter 2
Beispiele
• Programmieren einer Waschmaschine
• Programmieren einer Werkzeugmaschine
• Programmieren eines Roboters
• Programmieren eines Rechners– Informationsbeschaffung
– Berechnung
– Analyse
– Visualisierung
– Simulation
– Optimierung
– Systemsteuerung/-regelung
RätselzurVerdeut-lichung
Einführung in das Programmieren (f. Ing.)
IPP:TUC, Christian Vetter 3
Analyse der Aufgabenstellung …… ist das Wichtigste!!!
1. Es gibt eine Anzahl von Großwürfeln mit der Kantenlänge drei. Dem letzten Würfel dieser Art fehlt ein Baustein. Anz_BS := m*27 – 1
2. Beim zweiten Versuch gab es eine Anzahl von Großwürfeln mit der Kantenlänge vier. Auch hier fehlte einem Großwürfel ein Baustein zur Vollständigkeit. Anz_BS := n*64 – 1
3. Der verzweifelte Versuch, wenigstens Rechtecke mit der Kantenlänge von mindestens zwei auszulegen, gelang auch nicht: Keine Faktorenzerlegung möglich Anz_BS ist eine Primzahl
4. Um die Lösungsmenge weiter zu begrenzen, wird noch die Vierstelligkeit der Bausteinanzahl gegeben.
Wie geht man nun nach der Analyse vor?
1. Die spontane mathematische Durchdringung?In technischen Fragestellungen eher die Ausnahme
2. Die Bestimmung der Großwürfelanzahlen für einen Bausteinzahlenraum von 1000 bis 9999 erscheint recht mühsam, wäre aber mit Fleiß erreichbar.
3. Idee: man könnte ein fertiges Programm benutzen, um die mühsame Arbeit zu erleichtern Versuch: Tabellenkalkulation (leichte Programmier-kenntnisse)Problem: bei der Umsetzung der Primzahlbedingung wird es schwierig
4. Gleich alles mit einer Universalsprache programmieren (erfordert Programmierkenntnisse, bietet aber volle Flexibilität)
Einführung in das Programmieren (f. Ing.)
IPP:TUC, Christian Vetter 4
Übersicht
• Planung und Entwurf mit Struktogrammen• Grundlagen• Bedingte Programmierung• Schleifen• Felder • Funktionen• Dateien• Datenstrukturen• Zeigertechnik• Blick in Fensterprogrammierung
(event-orientiert)
Darstellung von Algorithmen mit Struktogrammen(Nassi-Shneidermann-Diagramm)
Algorithmus: allgemeine Bearbeitungs-/Berechnungsvorschrift, unabhängig von der Realisierung in einer Programmiersprache
Kontrollstrukturen: - Basis-/Elementarstrukturblock (Rechteck mit Anweisung)- Sequenz von Strukturblöcken- Bedingte Anweisung, Verzweigung oder Auswahl, Selektion- Schleife oder Wiederholung, Iteration- Aufruf anderer Algorithmen- Aussprung aus direkt übergeordneter Strukturdienen zur Darstellung von Algorithmen.
Struktogramm: Darstellung eines Algorithmus mit Hilfe von Sinnbildern nach DIN 66261, die den Kontrollstrukturen entsprechen.
Struktogramme erlauben das Entwickeln von Algorithmen unabhängig von Programmiersprachen.
Einführung in das Programmieren (f. Ing.)
IPP:TUC, Christian Vetter 5
Der Elementarstrukturblock wird als Rechteck dargestellt. Die Beschriftung soll ausdrücken, was an dieser Stelle im Algorithmus passieren soll. Ein Entwickler hat bei der Beschriftung keine Formal-vorschriften, sondern kann seinem momentanen Erkenntnisstand entsprechend formulieren (z.B. "Summe mit 0.0 initialisieren" oder "sum=0.0;").
Strukturblöcke können in vertikaler Richtung aneinander gereiht (Sequenz) oder in andere geeignete Blöcke eingebaut werden (Verschachtelung). Dabei entsteht der Algorithmus als ein Struktogramm.
Basis-/Elementarstrukturblock
Anweisung
Sequenz: Aneinanderreihung von Strukturblöcken
Im einfachsten Fall können Elementarblöcke aneinander
gereiht werden, die genau in dieser Reihenfolge von oben
nach unten abgearbeitet werden sollen.
Es können aber alle Strukturblocktypen als beliebige
Sequenz angeordnet werden, je nach erforderlicher
Vorgehensweise im Algorithmus.
Anweisung 1
Anweisung 2
Anweisung 3
Sequenz von Strukturblöcken
Einführung in das Programmieren (f. Ing.)
IPP:TUC, Christian Vetter 6
Wenn eine Anweisung oder sogar ein ganzer Strukturblock
nur unter einer bestimmten Bedingung ausgeführt werden
soll, wird folgendes Sinnbild verwendet:
Soll für den Fall der nicht erfüllten
Bedingung eine Alternative angeboten
werden, so ist auch der rechte
innere Block des Sinnbildes
auszufüllen.
Bedingte Anweisung, Verzweigung (Selektion)
Manchmal sind an einem Entscheidungspunkt in der
algorithmischen Struktur Mehrfachverzweigungen (1 aus n
Zweigen) erwünscht. Wenn sich die Entscheidung an
ganzen Zahlen (oder Zeichen) festmachen lässt, ist
folgendes Sinnbild im Struktogramm zu verwenden.
Nicht explizit vorgesehene Fälle können optional im
rechten Block (default) eine Ausnahmebehandlung erfahren.
Mehrfachauswahl (Selektion) – speziell ganzzahlig
Einführung in das Programmieren (f. Ing.)
IPP:TUC, Christian Vetter 7
Ist eine höhere Flexibilität erforderlich, so lässt sich die
Mehrfachauswahl durch beliebige Verschachtelung von
einfachen Verzweigungen erreichen.
Beispiele:
Mehrfachauswahl (Selektion) – allgemein
Schleife: eine Anweisung oder ein Block von Anweisungen
wird in Abhängigkeit von einer Bedingung wiederholt
durchlaufen.
Um das Kreieren von Strukturen zu erleichtern, gibt es
unterschiedliche Ausprägungen von Schleifen.
Schleife oder Wiederholung (Iteration)
abweisend nicht abweisend
Zähl/for-Schleife while-Schleife do-while-Schleife Endlos-Schleife
Einführung in das Programmieren (f. Ing.)
IPP:TUC, Christian Vetter 8
Wenn genau bekannt ist, wie oft ein Anweisungsblock
durchlaufen werden soll, ist eine Zähl-/for-Schleife geeignet.
Beispiel mit i als Zählvariable:
Eine oder mehrere Zählvariablen
können im Anweisungsblock
effizient z.B. zum Indizieren von
Feldvariablen herangezogen
werden.
Beispiel: Aufsummieren einer genauen Zahl von Messwerten
Zähl-/for-Schleife
Beispiel: Aufsummieren der ersten 20 natürlichen Zahlen
Zähl-/for-Schleife – Beispiel
Einführung in das Programmieren (f. Ing.)
IPP:TUC, Christian Vetter 9
Wenn die Anzahl der Schleifendurchläufe nicht bekannt ist,
sich also aus dem Fortschritt der Iteration ergibt, ist eine
while-Schleife die richtige Struktur. Ob sie abweisend oder
nicht abweisend sein sollte, ist zumeist von der Denkart des
Programm-Entwicklers abhängig. Beide Varianten lassen
sich ineinander überführen, schließen sich also nicht aus.
while-Schleife – do-while-Schleife
Beispiel: Aufsummieren der ersten natürlichen Zahlen solange die Summe kleiner als 100 ist.
while-Schleife – Beispiel
Einführung in das Programmieren (f. Ing.)
IPP:TUC, Christian Vetter 10
Beispiel: Initialisieren aller Elemente einer 3x3-Matrix auf 0
while-Schleife – Beispiel Schachtelung
Gelegentlich kommt es vor, dass weder die kopf- noch die
fußgesteuerte while-Schleife passend ist. Dann kann die
Struktur möglicherweise mit einer Endlosschleife gut verwirk-
licht werden. Diese macht allerdings nur Sinn, wenn es
mindestens einen Aussprung (mit break) in den Anweisungen
des Anweisungsblocks der Schleife gibt.
Eine wirklich endlos laufende
Schleife ist eher ein uner-
wünschter Fehler.
Endlos-Schleife
Einführung in das Programmieren (f. Ing.)
IPP:TUC, Christian Vetter 11
Um komplexe Algorithmen übersichtlich zu entwickeln, dürfen
die Struktogramme keine beliebige Größe annehmen. Ein
Struktogramm sollte auf normalem Papier ausdruckbar
bleiben. So werden Teilalgorithmen als Unterstrukturen
entwickelt. Diese werden durch Verweise in übergeordneten
Strukturen aufgerufen. Dazu dient folgendes Sinnbild, das –
wie alle anderen Blöcke – in Struktogramme eingebaut werden
kann.
Aufruf anderer Algorithmen
Das Aufruf-Sinnbild verweist auf einen Unteralgorithmus.
Wenn die Arbeit des Unteralgorithmus erledigt ist, wird der
direkt nach dem Aufruf folgende Strukturblock abgearbeitet.
Aufruf anderer Algorithmen – Beispiel
Einführung in das Programmieren (f. Ing.)
IPP:TUC, Christian Vetter 12
In manchen Blöcken, typischerweise z.B. im Rumpf einer
Schleife, ist ein Ausbruch aus der Blockstruktur erforderlich.
Dazu bedient man sich des Sinnbildes
Beispiele:
Ausprung aus direkt übergeordneter Struktur
Die dargestellten Sinnbilder lassen sich vertikal zu
Sequenzen verketten und/oder ineinander verschachteln.
Damit lassen sich alle denkbaren Algorithmen darstellen.
Struktogramme sind frei beschriftbar und erlauben somit
unabhängig von Programmiersprachen zu formulieren.
Die Benutzung von Struktogrammen trainiert das algorith-
mische Denken, was für jegliche Ingenieurarbeit erforderlich
ist. Beim Programmieren dienen sie der stufenweisen
Bewältigung der Entwicklungsarbeit bei komplexen Auf-
gabenstellungen.
Zusammenfassung zu Struktogrammen
Einführung in das Programmieren (f. Ing.)
IPP:TUC, Christian Vetter 13
Struktogramm-Editor-Programm
• Zu finden unter SuchstichwortenNassi-Shneiderman-Diagramm, Struktogramm, strukted, strukted32,
• Eine konfigurierte und 32-bit-fähige Variante wirdals Zip-Paket im Stud.IP-System zur Verfügunggestellt. Diese Version wird in den Vorlesungen verwendet.