Sie sind auf Seite 1von 13

Einfhrung in das Programmieren (f. Ing.

Einfhrung in das
Programmieren (fr 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
untersttzen.
Der Mensch berlegt sich, wie etwas geht (z.B.
mathematische Vorgehensweise) und setzt diese
Handlungsvorschrift in eine geeignete Form (z.B.)
fr einen Rechner um, damit dieser fortan die
langweilige, mhsame Arbeit in quantitativen
Varianten durchfhrt.

IPP:TUC, Christian Vetter

Einfhrung in das Programmieren (f. Ing.)

Beispiele

Programmieren einer Waschmaschine


Programmieren einer Werkzeugmaschine
Programmieren eines Roboters
Programmieren eines Rechners

Informationsbeschaffung
Berechnung
Analyse
Visualisierung
Simulation
Optimierung
Systemsteuerung/-regelung

Rtsel
zur
Verdeutlichung

IPP:TUC, Christian Vetter

Einfhrung in das Programmieren (f. Ing.)

Analyse der Aufgabenstellung


ist das Wichtigste!!!
1. Es gibt eine Anzahl von Growrfeln mit der Kantenlnge
drei. Dem letzten Wrfel dieser Art fehlt ein Baustein.
Anz_BS := m*27 1
2. Beim zweiten Versuch gab es eine Anzahl von
Growrfeln mit der Kantenlnge vier. Auch hier fehlte
einem Growrfel ein Baustein zur Vollstndigkeit.
Anz_BS := n*64 1
3. Der verzweifelte Versuch, wenigstens Rechtecke mit der
Kantenlnge von mindestens zwei auszulegen, gelang
auch nicht: Keine Faktorenzerlegung mglich
Anz_BS ist eine Primzahl
4. Um die Lsungsmenge 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 Growrfelanzahlen fr einen
Bausteinzahlenraum von 1000 bis 9999 erscheint recht
mhsam, wre aber mit Flei erreichbar.
3. Idee: man knnte ein fertiges Programm benutzen, um die
mhsame Arbeit zu erleichtern
Versuch: Tabellenkalkulation (leichte Programmierkenntnisse)
Problem: bei der Umsetzung der Primzahlbedingung wird
es schwierig
4. Gleich alles mit einer Universalsprache programmieren
(erfordert Programmierkenntnisse, bietet aber volle
Flexibilitt)

IPP:TUC, Christian Vetter

Einfhrung in das Programmieren (f. Ing.)

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,
unabhngig von der Realisierung in einer Programmiersprache
Kontrollstrukturen:
- Basis-/Elementarstrukturblock (Rechteck mit Anweisung)
- Sequenz von Strukturblcken
- Bedingte Anweisung, Verzweigung oder Auswahl, Selektion
- Schleife oder Wiederholung, Iteration
- Aufruf anderer Algorithmen
- Aussprung aus direkt bergeordneter Struktur
dienen 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 unabhngig
von Programmiersprachen.

IPP:TUC, Christian Vetter

Einfhrung in das Programmieren (f. Ing.)

Basis-/Elementarstrukturblock
Der Elementarstrukturblock wird als Rechteck dargestellt.
Die Beschriftung soll ausdrcken, was an dieser Stelle im Algorithmus
passieren soll. Ein Entwickler hat bei der Beschriftung keine Formalvorschriften, sondern kann seinem momentanen Erkenntnisstand
entsprechend formulieren (z.B. "Summe mit 0.0 initialisieren" oder
"sum=0.0;").

Anweisung

Strukturblcke knnen in vertikaler Richtung aneinander gereiht


(Sequenz) oder in andere geeignete Blcke eingebaut werden
(Verschachtelung). Dabei entsteht der Algorithmus als ein
Struktogramm.

Sequenz von Strukturblcken


Sequenz: Aneinanderreihung von Strukturblcken
Im einfachsten Fall knnen Elementarblcke aneinander
gereiht werden, die genau in dieser Reihenfolge von oben
nach unten abgearbeitet werden sollen.

Anweisung 1
Anweisung 2
Anweisung 3
Es knnen aber alle Strukturblocktypen als beliebige
Sequenz angeordnet werden, je nach erforderlicher
Vorgehensweise im Algorithmus.

IPP:TUC, Christian Vetter

Einfhrung in das Programmieren (f. Ing.)

Bedingte Anweisung, Verzweigung (Selektion)


Wenn eine Anweisung oder sogar ein ganzer Strukturblock
nur unter einer bestimmten Bedingung ausgefhrt werden
soll, wird folgendes Sinnbild verwendet:

Soll fr den Fall der nicht erfllten


Bedingung eine Alternative angeboten
werden, so ist auch der rechte
innere Block des Sinnbildes
auszufllen.

Mehrfachauswahl (Selektion) speziell ganzzahlig


Manchmal sind an einem Entscheidungspunkt in der
algorithmischen Struktur Mehrfachverzweigungen (1 aus n
Zweigen) erwnscht. Wenn sich die Entscheidung an
ganzen Zahlen (oder Zeichen) festmachen lsst, ist
folgendes Sinnbild im Struktogramm zu verwenden.

Nicht explizit vorgesehene Flle knnen optional im


rechten Block (default) eine Ausnahmebehandlung erfahren.

IPP:TUC, Christian Vetter

Einfhrung in das Programmieren (f. Ing.)

Mehrfachauswahl (Selektion) allgemein


Ist eine hhere Flexibilitt erforderlich, so lsst sich die
Mehrfachauswahl durch beliebige Verschachtelung von
einfachen Verzweigungen erreichen.
Beispiele:

Schleife oder Wiederholung (Iteration)


Schleife: eine Anweisung oder ein Block von Anweisungen
wird in Abhngigkeit von einer Bedingung wiederholt
durchlaufen.
Um das Kreieren von Strukturen zu erleichtern, gibt es
unterschiedliche Ausprgungen von Schleifen.
abweisend
Zhl/for-Schleife

IPP:TUC, Christian Vetter

while-Schleife

nicht abweisend
do-while-Schleife

Endlos-Schleife

Einfhrung in das Programmieren (f. Ing.)

Zhl-/for-Schleife
Wenn genau bekannt ist, wie oft ein Anweisungsblock
durchlaufen werden soll, ist eine Zhl-/for-Schleife geeignet.
Beispiel mit i als Zhlvariable:
Eine oder mehrere Zhlvariablen
knnen im Anweisungsblock
effizient z.B. zum Indizieren von
Feldvariablen herangezogen
werden.
Beispiel: Aufsummieren einer genauen Zahl von Messwerten

Zhl-/for-Schleife Beispiel
Beispiel: Aufsummieren der ersten 20 natrlichen Zahlen

IPP:TUC, Christian Vetter

Einfhrung in das Programmieren (f. Ing.)

while-Schleife do-while-Schleife
Wenn die Anzahl der Schleifendurchlufe 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 abhngig. Beide Varianten lassen
sich ineinander berfhren, schlieen sich also nicht aus.

while-Schleife Beispiel
Beispiel: Aufsummieren der ersten natrlichen Zahlen
solange die Summe kleiner als 100 ist.

IPP:TUC, Christian Vetter

Einfhrung in das Programmieren (f. Ing.)

while-Schleife Beispiel Schachtelung


Beispiel: Initialisieren aller Elemente einer 3x3-Matrix auf 0

Endlos-Schleife
Gelegentlich kommt es vor, dass weder die kopf- noch die
fugesteuerte while-Schleife passend ist. Dann kann die
Struktur mglicherweise mit einer Endlosschleife gut verwirklicht 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 unerwnschter Fehler.

IPP:TUC, Christian Vetter

10

Einfhrung in das Programmieren (f. Ing.)

Aufruf anderer Algorithmen


Um komplexe Algorithmen bersichtlich zu entwickeln, drfen
die Struktogramme keine beliebige Gre 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 Blcke in Struktogramme eingebaut werden
kann.

Aufruf anderer Algorithmen Beispiel


Das Aufruf-Sinnbild verweist auf einen Unteralgorithmus.
Wenn die Arbeit des Unteralgorithmus erledigt ist, wird der
direkt nach dem Aufruf folgende Strukturblock abgearbeitet.

IPP:TUC, Christian Vetter

11

Einfhrung in das Programmieren (f. Ing.)

Ausprung aus direkt bergeordneter Struktur


In manchen Blcken, typischerweise z.B. im Rumpf einer
Schleife, ist ein Ausbruch aus der Blockstruktur erforderlich.
Dazu bedient man sich des Sinnbildes
Beispiele:

Zusammenfassung zu Struktogrammen
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
unabhngig von Programmiersprachen zu formulieren.
Die Benutzung von Struktogrammen trainiert das algorithmische Denken, was fr jegliche Ingenieurarbeit erforderlich
ist. Beim Programmieren dienen sie der stufenweisen
Bewltigung der Entwicklungsarbeit bei komplexen Aufgabenstellungen.

IPP:TUC, Christian Vetter

12

Einfhrung in das Programmieren (f. Ing.)

Struktogramm-Editor-Programm
Zu finden unter Suchstichworten
Nassi-Shneiderman-Diagramm, Struktogramm,
strukted, strukted32,
Eine konfigurierte und 32-bit-fhige Variante wird
als Zip-Paket im Stud.IP-System zur Verfgung
gestellt. Diese Version wird in den Vorlesungen
verwendet.

IPP:TUC, Christian Vetter

13