13
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 programmieren

Embed Size (px)

DESCRIPTION

01_Struktogramm

Citation preview

Page 1: Einführung in programmieren

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.

Page 2: Einführung in programmieren

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

Page 3: Einführung in programmieren

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)

Page 4: Einführung in programmieren

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.

Page 5: Einführung in programmieren

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

Page 6: Einführung in programmieren

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

Page 7: Einführung in programmieren

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

Page 8: Einführung in programmieren

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

Page 9: Einführung in programmieren

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

Page 10: Einführung in programmieren

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

Page 11: Einführung in programmieren

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

Page 12: Einführung in programmieren

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

Page 13: Einführung in programmieren

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.