5. Elementare Befehle und Struktogramme

Ähnliche Dokumente
Kap 4. Befehle und Struktogramme

Kap 4. Befehle und Struktogramme

Grundlagen der Informatik 5. Kontrollstrukturen II

Kontrollstrukturen -- Schleifen und Wiederholungen

Grundlagen der Informatik 4. Kontrollstrukturen I

Einführung in die Programmierung Wintersemester 2011/12

Klausur Informatik I WS 2006/2007

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 25

Programmieren in C/C++ und MATLAB

BKTM - Programmieren leicht gemacht.

4.2 Gleitkommazahlen. Der Speicherbedarf (in Bits) ist üblicherweise. In vielen Anwendungen benötigt man gebrochene Werte. Physikalische Größen

Klausur Informatik WS 2012/13

Hochschule Darmstadt Informatik-Praktikum WS 2016/2017 WIng Bachelor 4. Aufgabenblatt Modularisierung, Funktionen, Unterprogramme

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2014/2015 Wirtschaftsingenieur Bachelor 4. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

FB Informatik. Fehler. Testplan

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22

1.8 Kontrollstrukturen 73. default : ziffer = 0; if (ziffer > 0) { cout << "Ziffer = " << ziffer; else { cout << "keine römische Ziffer!

1.8.5 Wiederholungen. Beispiele Unendliche Schleife: 1.8 Kontrollstrukturen 75. ( Bedingung ) AnweisungOderBlock. ja Anweisung. Bedingung erfüllt?

Steueranweisungen. Eike Schallehn Grundlagen der Informatik für Ingenieure Wintersemester 08/

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung

4. Ablaufsteuerung (Kontrollstrukturen) 4.1 Anweisungen 4.2 Selektion (bedingte Anweisung) 4.3 Iteration 4.4 Flussdiagramm (Programmablaufplan)

Einstieg in die Informatik mit Java

Informatik für Elektrotechnik und Informationstechnik

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

Einstieg in die Informatik mit Java

Programmierkurs C++ Lösungen zum Übungsblatt 3. Nils Eissfeldt und Jürgen Gräfe. 2. November Aufgabe 5

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

Fallunterscheidung: if-statement

C# - Einführung in die Programmiersprache Bedingte Anweisungen und Schleifen

3. Anweisungen und Kontrollstrukturen

Einführung in die Programmierung

3. Grundanweisungen in Java

Angewandte Mathematik und Programmierung

Einstieg in die Informatik mit Java

C++ - Einführung in die Programmiersprache Schleifen

Kap 9. Bitoperationen und -strukturen

Kap 7. Funktionen und Arrays

ModProg 15-16, Vorl. 5

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

Algorithmen & Programmierung. Steuerstrukturen im Detail Selektion und Iteration

Annehmende Schleife do while

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)

Klausur: Grundlagen der Informatik I, am 05. Februar 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Gestrige Themen. Benutzung des Compilers und Editors. Variablen. Ein- und Ausgabe mit cin, cout (C++) Verzweigungen. Schleifen

Grundlagen der Informatik 2. Typen

Intensivübung zu Algorithmen und Datenstrukturen

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

4. Einfache Programmstrukturen in C Einfache Programmstrukturen in C

System.out.println("TEXT");

C++ Teil Schleifen. Man kann bestimme Anweisungen in einem Programm mehrfach ausführen lassen. Dazu gibt es in C++ verschiedene Schleifen.

4. Ablaufsteuerung (Kontrollstrukturen)

Funktionales C++ zum Ersten

2 Teil 2: Nassi-Schneiderman

Operatoren (1) Operatoren (2)

Schleifen in C/C++/Java

Auswahlen (Selektionen)

Algorithmen zur Datenanalyse in C++

Vorlesung Programmieren

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2

2.5 Programmstrukturen Entscheidung / Alternative

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen

Hochschule Darmstadt Informatik-Praktikum SS 2017 EIT Bachelor 5. Aufgabenblatt Datenstruktur, Dateieingabe und -ausgabe

Schleifen in C/C++/Java

Klausur Programmieren 1 SS 2017

Kontrollstrukturen Blöcke / Schleifen / Bedingungen

Klausur: Grundlagen der Informatik I, am 05. Februar 2008 Dirk Seeber, h_da, Fb Informatik

Vom Problem zum Programm

Objektorientierte Programmierung

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 14/15

Programmierkurs Java

4 Schleifen und Dateien

Programmiertechnik Kontrollstrukturen

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Vorlesung Programmieren

Javakurs für Anfänger

Nachname: Vorname: Matr.-Nr.: Punkte: 1. Aufgabe: ( / 25 Pkt.) Gegeben ist das folgende Struktogramm zur Berechnung von sin(x) mit Hilfe einer Reihe.

Unterlagen. CPP-Uebungen-08/

Programmieren I. Kapitel 5. Kontrollfluss

Anweisungen und Kontrollstrukturen

4.4 Imperative Algorithmen Prozeduren

Java - Schleifen. Bedingung. wiederhole. Anweisung Anweisung Anweisung. Leibniz Universität IT Services Anja Aue

1 Aufgaben 1.1 Objektorientiert: ("extended-hamster") Sammel-Hamster

Grundlagen der Programmierung

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Kontrollstrukturen

Einführung in die Programmierung II. 3. Kontrollstrukturen

Klausur in Programmieren

Grundlagen der Programmierung

Programmieren in C (Übungsblatt 1)

Programmieren in C (Übungsblatt 1)

Schachtelung der 2. Variante (Bedingungs-Kaskade): if (B1) A1 else if (B2) A2 else if (B3) A3 else if (B4) A4 else A

C- Kurs 04 Anweisungen

Schleifen: Immer wieder dasselbe tun

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1

Grundlagen der Informatik 6. Arrays I

Flussdiagramm / Programmablaufplan (PAP)

Transkript:

5. Elementare Befehle und Struktogramme

Programmablauf Beschreibung des Programmablaufs mittel grafischer Symbole Beispiel : Flussdiagramme ja nein Besser : Struktogramme Dr. Norbert Spangler / Grundlagen der Informatik 15.10.2006 2

Elementare Befehle Befehlstypen Zuweisung Verzweigung Schleife Dr. Norbert Spangler / Grundlagen der Informatik 15.10.2006 3

5.1 Zuweisungen Einfache Zuweisung Beispiel flaeche=r*r*3.14159; Struktogramm flaeche = r*r*3.14159 oder Inhalte sind beliebig zu beschreiben flaeche = r 2 *3.14159 Dr. Norbert Spangler / Grundlagen der Informatik 15.10.2006 4

Einfache Zuweisung Aufbau Variable = Ausdruck Allgemein L-Wert Zuweisungsoperator R-Wert (L-value) (R-value) L-Wert bezeichnet immer eine Speicherstelle zur Speicherung des Ergebnisses, z.b. ein Variablenname R-Werte können auch Ausdrücke sein wie x*y+1 Dr. Norbert Spangler / Grundlagen der Informatik 15.10.2006 5

Zusammengesetzte Zuweisung Anstelle von i=i+1; i+=1; d=d*(r+2); d*=r+2; Prinzip v=v op r; v op= r; Beispiele += -= *= /= %= Dr. Norbert Spangler / Grundlagen der Informatik 15.10.2006 6

5.2 Verzweigungen Typen if if else else-if Kette switch Auswahloperator Dr. Norbert Spangler / Grundlagen der Informatik 15.10.2006 7

if ( boolscher Ausdruck) Anweisung1 Anweisung2 if Anweisung : Befehl; {Befehl;Befehl;...;Befehl;} Wirkungsweise Auswertung des boolschen Ausdrucks falls true : Führe Anweisung1 aus, dann Anweisung2 falls false: Führe Anweisung2 aus Beispiel if ( x < 0 ) x = - x; // jetzt ist x immer >= 0 Dr. Norbert Spangler / Grundlagen der Informatik 15.10.2006 8

Struktogramm Wahr boolscher Ausdruck Falsch Anweisung1 Anweisung2 Beispiel Wahr x X = = - X - x x < 0 Falsch Hier gehts dann weiter Dr. Norbert Spangler / Grundlagen der Informatik 15.10.2006 9

if-else if ( boolscher Ausdruck) Anweisung1 else Anweisung2 Anweisung3 Wirkungsweise Auswertung des boolschen Ausdrucks falls true : Führe Anweisung1 aus, dann Anweisung3 falls false: Führe Anweisung2 aus, dann Anweisung3 Dr. Norbert Spangler / Grundlagen der Informatik 15.10.2006 10

Beispiel if ( durchmesser <= 0 ) // unzulässig { cout << " Durchmesser muss > 0 sein "; return 1; } else // Eingabedaten in Ordnung { flaeche=pow(durchmesser,2)*pi/4; widerstand= rho*laenge/flaeche; // Ausgabe cout << " Laenge \t" << laenge << " m" << endl; cout << " Durchmesser \t" << durchmesser <<" mm" << endl; cout << " Widerstand \t" <<widerstand <<" Ohm"<<endl; return 0; } Dr. Norbert Spangler / Grundlagen der Informatik 15.10.2006 11

Struktogramm Wahr Anweisung1 boolscher Ausdruck Anweisung2 Falsch Anweisung3 Dr. Norbert Spangler / Grundlagen der Informatik 15.10.2006 12

Beispiel Wahr durchmesser <= 0 Falsch Ausgabe : durchmesser muss > 0 sein return 1 flaeche=durchmesser ² *pi/4 widerstand= rho*laenge/flaeche Ausgabe Laenge, Durchmesser, Widerstand return 0 Dr. Norbert Spangler / Grundlagen der Informatik 15.10.2006 13

// Verschachtelung von if else #include <iostream> using namespace std; void main() { int i,j,k; cin >> i >> j >> k; if ( i < j ) if ( j < k ) } else else if ( i < k ) else Verschachtelung cout << i << j << k; if ( i < k ) else cout << j << i << k; if ( j < k ) else if-else Befehle müssen immer vollständig im if oder else Teil eines übergeordneten if-else Befehls enthalten sein cout << i << k << j; cout << k << i << j; cout << j << k << i; cout << k << j << i; Dr. Norbert Spangler / Grundlagen der Informatik 15.10.2006 14

Verschachtelung/2 // Werte Stromimpuls #include <iostream> using namespace std; void main() { double t; cin >> t ; if ( t < 0 ) else cout << " Wert ist " << 0 <<endl; if ( t < 1 ) cout << " Wert ist " << t <<endl; else if ( t < 2 ) cout << " Wert ist " << 2-t <<endl; else cout << " Wert ist " << 0 <<endl; } Dr. Norbert Spangler / Grundlagen der Informatik 15.10.2006 15

Alternative // Werte Stromimpuls #include <iostream> using namespace std; void main() { double t; cin >> t ; if ( t < 0 ) cout << " Wert ist " << 0 <<endl; else if ( t < 1 ) cout << " Wert ist " << t <<endl; else if ( t < 2 ) cout << " Wert ist " << 2-t <<endl; else cout << " Wert ist " << 0 <<endl; } Dr. Norbert Spangler / Grundlagen der Informatik 15.10.2006 16

else if Kette if ( boolscher Ausdruck1) Anweisung1 else if (booscher Ausdruck2) Anweisung2 else if... else Anweisungm Anweisungn Wirkungsweise Auswertung von boolscher Ausdruck1 falls true : Führe Anweisung1 aus, dann Anweisungn falls false: Auswertung von boolscher Ausdruck2 falls true : Führe Anweisung2 aus, dann Anweisungn falls false:... Dr. Norbert Spangler / Grundlagen der Informatik 15.10.2006 17

Struktogramm Wahr t<0 Falsch Wahr t<1 Falsch 0 t Wahr t<2 2-t 0 Falsch Dr. Norbert Spangler / Grundlagen der Informatik 15.10.2006 18

// Kleinrechner/switch #include <iostream> using namespace std; void main() { int i,j; char op; cin >> i >> op >> j; switch (op) { case '+' : } } case '-' : case '*' : case '/' : case '%' : default : Switch/Beispiel cout << i << op << j <<" = " << i+j << endl; break; cout << i << op << j <<" = " << i-j << endl; break; cout << i << op << j <<" = " << i*j << endl; break; cout << i << op << j <<" = " << i/j << endl; break; cout << i << op << j <<" = " << i%j << endl; break; cout << " unzulässiger Operator " << endl; Dr. Norbert Spangler / Grundlagen der Informatik 15.10.2006 19

switch switch ( ganzzahliger Ausdruck ) { case konstante1 : Befehl;Befehl;...Befehl; break; case konstante2 : Befehl;Befehl;...Befehl; break;... } default : Befehl;Befehl;...Befehl; Kann weggelassen werden Nicht empfehlenswert!!!!! Dr. Norbert Spangler / Grundlagen der Informatik 15.10.2006 20

switch Wirkungsweise Auswertung des Ausdrucks (muss ganzzahliger Typ sein) Vergleich mit den ganzzahligen Konstanten (alle verschieden) Bei Übereinstimmung mit einer Konstanten->Verzweigung zur case Marke. Ausführung der Befehle bis zum break, dann Verzweigung zum Ende (nach dem switch). Fehlt der break-befehl wird mit dem darauf folgenden Befehl fortgesetzt!!!!! Stimmt der Wert mit keiner Konstanten überein wird bei default fortgesetzt, Sofern vorhanden (wenn nicht, findet keine Aktion statt). Dr. Norbert Spangler / Grundlagen der Informatik 15.10.2006 21

Struktogramm + Ausgabe i+ j Ausgabe i - j - * Ausgabe i * j / Ausgabe i / j % Ausgabe i modulo j Ausdruck sonst Fehler meldung Dr. Norbert Spangler / Grundlagen der Informatik 15.10.2006 22

Gegenüberstellung Die else-if Kette ist universeller als switch. Sie kann mit beliebigen booleschen Ausdrücken formuliert werden. Switch ist beschränkt auf den Vergleich ganzzahliger Ausdrücke (u.a. Aufzählungstyp!!), ist aber übersichtlicher, insbesondere wenn es viele Fälle sind. Dr. Norbert Spangler / Grundlagen der Informatik 15.10.2006 23

Auswahloperator Beispiel Anstelle von if ( x >= 0 ) y = x; else y = -x; kann auch y = (x>=0)? x : -x; mit dem Auswahloperator? verwendet werden (bedingte Bewertung). Dr. Norbert Spangler / Grundlagen der Informatik 15.10.2006 24

Auswahloperator Form : (boolscher Ausdruck)? Ausdruck1: Ausdruck2; Wirkung : Wenn der boolsche Ausdruck wahr ist, wird Ausdruck1 verwendet, sonst Ausdruck2. Dr. Norbert Spangler / Grundlagen der Informatik 15.10.2006 25

5.3 Schleifen while-schleife do while Schleife for Schleife -> Hinweis auf Entwicklung Dr. Norbert Spangler / Grundlagen der Informatik 15.10.2006 26

Modellierung von while-schleifen 1) Identifizierung der Wiederholungsbedingung (WB) der Schleife (ev. Negation einer Abbruchbedingung) 2) Ermittlung, ob die Schleife immer mindestens einmal durchlaufen wird falls ja: do while andernfalls: while 3) Identifizierung aller Befehle, die wiederholt werden wie z.b.: nächste Daten lesen neue Summe berechnen zählen... 4) Existenz von Befehlen unter 3) prüfen, welche WB ändern. Ansonsten ist es eine unendliche Schleife. Dr. Norbert Spangler / Grundlagen der Informatik 15.10.2006 27

while ( boolescher Ausdruck) Anweisung1 Anweisung2 while Schleife Wirkung (*) Werte boolschen Ausdruck aus falls true : Führe Anweisung1 aus Mache weiter bei (*) falls false: Führe Anweisung2 aus Dr. Norbert Spangler / Grundlagen der Informatik 15.10.2006 28

Struktogramm Solange boolscher Ausdruck wahr ist Anweisung1 Anweisung2 Dr. Norbert Spangler / Grundlagen der Informatik 15.10.2006 29

while Schleife/Beispiel In einem Programm sollen positive ganze Zahlen eingelesen und deren Durchschnitt berechnet werden. Das Programm endet, wenn eine negative Zahl oder 0 eingegeben wird. Danach sind Durchschnitt und Anzahl der gelesenen Zahlen am Bildschirm auszugeben. Modellierung 1- Wiederholungsbedingung gelesene Zahl>0 2- es muss ev. nichts getan werden -> while-schleife 3- zu wiederholende Befehle: zählen, summieren, lesen 4- der Lesebefehl beeinflusst die Wiederholungsbedingung Dr. Norbert Spangler / Grundlagen der Informatik 15.10.2006 30

Beispiel // Lesen von positiven Zahlen #include <iostream> using namespace std; void main() { int anzahl=0,eingabezahl; float summe=0.0; // Erste Zahl eingeben cout << " Bitte positive Zahl eingeben " << endl; cout << " Abbruch mit 0 " << endl; cin >> eingabezahl; //Schleife while (eingabezahl>0) { ++anzahl; summe+=eingabezahl; cout << " Bitte naechste Zahl eingeben/abbruch mit 0 " << endl; cin >> eingabezahl; } //Ergebnis ausgeben } cout << " Der Durchschnitt ist : " << summe/anzahl << endl; cout << " Es wurden "<<anzahl<<" Zahlen gelesen"<<endl; Welche Testfälle sollte man wählen? -> Testplan Welche Schwächen hat dieses Programm? Dr. Norbert Spangler / Grundlagen der Informatik 15.10.2006 31

Beispiel Dr. Norbert Spangler / Grundlagen der Informatik 15.10.2006 32

do Anweisung1 while ( boolescher Ausdruck) Anweisung2 do while Schleife Wirkung (*) Führe Anweisung1 aus Werte boolschen Ausdruck aus falls true : Mache weiter bei (*) falls false: Führe Anweisung2 aus In einer do while Schleife wird die Anweisung in der Schleife mindestens 1 mal ausgeführt!!!! Dr. Norbert Spangler / Grundlagen der Informatik 15.10.2006 33

Struktogramm Anweisung1 Solange boolscher Ausdruck wahr ist Anweisung2 Dr. Norbert Spangler / Grundlagen der Informatik 15.10.2006 34

Beispiel Es soll näherungsweise die Wurzel einer Zahl a > 0 mit folgendem Verfahren berechnet werden : x 0 = a x k+1 = (x k + a/ x k ) /2 für k=0,1,2,... Man beende das Verfahren, wenn x k * x k a < 10-10 gilt Modellierung 1- Wiederholungsbedingung Betrag>= 10-10 2- x 1 sollte berechnet werden -> do while-schleife 3- zu wiederholende Befehle: Formel 4- die Formel beeinflusst die Wiederholungsbedingung Dr. Norbert Spangler / Grundlagen der Informatik 15.10.2006 35

// Wurzel #include <iostream> #include <cmath> using namespace std; void main() { Beispiel/Ergebnis Testfälle double x,a; // Daten eingeben cout << " Bitte a>0 eingeben " << endl; cin >> a; //Algorithmus mit Plausubilitätskontrolle if ( a> 0 ) { x = a; // Startwert do { x = (x+a/x)/2;//formel } while (fabs (x*x-a) >=1.0e-10 ); // Ausgabe cout << " Wurzel(" << a <<") = " << x << endl; } else cout << " a muss > 0 sein " << endl; } Dr. Norbert Spangler / Grundlagen der Informatik 15.10.2006 36

for Schleife / Beispiel für Zählschleife for ( i=1 ; i<n ; i+=1 ) Anweisung1 Anweisung2 Wirkung Führe den ersten Befehl (hier z.b. i=1) aus (*) Werte den boolschen Ausdruck (hier z.b. i<n) aus Falls true : Führe Anweisung1 aus Führe die letzte Anweisung (hier z.b. i+=1) aus Weiter bei (*) Falls false: Weiter mit dem ersten Befehl nach der Schleife Anweisung2 Dr. Norbert Spangler / Grundlagen der Informatik 15.10.2006 37

(vereinfachtes) Struktogramm Für Zähler = Anfangwert... Endwert Anweisung1 Anweisung2 Dr. Norbert Spangler / Grundlagen der Informatik 15.10.2006 38

Beispiel Man berechne die Summe der ersten n natürlichen Zahlen. n ist einzulesen. // Summe natuerlicher Zahlen #include <iostream> using namespace std; void main() { int i,n,summe=0; //eingabe cout << " Bitte n eingeben " << endl; cin >>n; //Summation for (i=1;i<=n;i++) summe+=i; //Ergebnisausgabe cout << " Die Summe der ersten " << n <<" natuerlichen Zahlen ist "; cout << summe << endl; } Dr. Norbert Spangler / Grundlagen der Informatik 15.10.2006 39

for-schleife allgemein for (Anweisung1;boolscher Ausdruck;Anweisung3) Anweisung2 Anweisung4 Wirkung Führe Anweisung1(=Initialisierung) aus (ev. mehrere durch Komma getrennt) (*) Werte den boolschen Ausdruck aus Falls true : Führe Anweisung2 aus Führe Anweisung3 (=Reinitialisierung) aus (ev. mehrere durch Komma getrennt) Weiter bei (*) Falls false: Weiter mit dem ersten Befehl nach der Schleife Anweisung4 Dr. Norbert Spangler / Grundlagen der Informatik 15.10.2006 40

Struktogramm Anweisung1 Solange boolscher Ausdruck wahr ist Anweisung2 Anweisung3 Anweisung4 Dr. Norbert Spangler / Grundlagen der Informatik 15.10.2006 41

For-Schleife/Beispiele for (i=0 ; i<n ; i++) {...} for (i=0 ; i<n ; i+=2) {...} for (k=m ; k>0 ; k--) {...} for (i=1,k=100; i<n && k > 0; i++,k--) {...} for (Datei oeffnen, hole erste Daten ; kein Dateiende ; lese naechste Daten) {verarbeite Daten} Dr. Norbert Spangler / Grundlagen der Informatik 15.10.2006 42

5.4 Sonstige Befehle break continue Verzweigung ans Ende eines Switch-Befehls oder einer Schleife. Weiter mit dem darauf folgenden Befehl. Beginne mit der nächsten Wiederholung einer Schleife while/do-while : Wiederholungsbedingung for : Reinitialisierung goto marke Verzweigung zu einer Marke. Eine Marke ist ein Name gefolgt von : Eine Marke kann vor jedem Befehl stehen. Tipp : goto vermeiden (erhöht Intransparenz). Dr. Norbert Spangler / Grundlagen der Informatik 15.10.2006 43