Fallunterscheidung: if-statement



Ähnliche Dokumente
Übersicht Programmablaufsteuerung

Erwin Grüner

Einführung in die Programmierung

1 Vom Problem zum Programm

C/C++ Programmierung

Kontrollstrukturen, Strukturierte Programmierung

Einführung in die Programmierung

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7

5. Tutorium zu Programmieren

Angewandte Mathematik und Programmierung

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Java-Programmierung mit NetBeans

Programmieren in C. Felder, Schleifen und Fließkommaarithmetik. Prof. Dr. Nikolaus Wulff

Programmieren I. Kontrollstrukturen. Heusch 8 Ratz Institut für Angewandte Informatik

Informatik Repetitorium SS Volker Jaedicke

Grundlagen der Programmierung Prof. H. Mössenböck. 3. Verzweigungen

Wirtschaftsinformatik I

Modellierung und Programmierung 1

Kontrollstrukturen und Funktionen in C

Diana Lange. Generative Gestaltung Operatoren

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Programmierung in C. Grundlagen. Stefan Kallerhoff

Dr. Monika Meiler. Inhalt

25 kann ohne Rest durch 5 geteilt werden! ist wahr

C-Probeklausur (Informatik 1; Umfang: C, Teil 1; SS07)

Programmierkurs Java

Studentische Lösung zum Übungsblatt Nr. 7

Ingenieurinformatik Diplom-FA (C-Programmierung)

Berechnungen in Access Teil I

Einführung in die C++ Programmierung für Ingenieure

Anleitung zur Erstellung von Serienbriefen (Word 2003) unter Berücksichtigung von Titeln (wie Dr., Dr. med. usw.)

Entwurf von Algorithmen - Kontrollstrukturen

50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse Lösung 10 Punkte

Datenbanken Microsoft Access 2010

Übung Grundlagen der Programmierung. Übung 05: Arrays. Abgabetermin: xx.xx.xxxx. Java-Programm Testplan Testergebnisse

Klausur in Programmieren

Informationsblatt Induktionsbeweis

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

Ingenieurinformatik Diplom-FA (Teil 2, C-Programmierung)

Kurze Einführung in die Programmiersprache C++ und in Root

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

Kontrollstrukturen. Bedingter Ablauf: if. Bedingter Ablauf: if-else

Klausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 13. April 2007, Uhr Bearbeitungszeit: 105 Minuten

Einführung in die C++ Programmierung für Ingenieure

Tutorium Rechnerorganisation

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Einführung in die Programmierung

Einführung in die Programmierung (EPR)

Repetitionsaufgaben Wurzelgleichungen

Grundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen

Projektverwaltung Problem Lösung: Modulare Programmierung

1 topologisches Sortieren

Hochschule München, FK 03 FA SS Ingenieurinformatik

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Die Programmiersprache C99: Zusammenfassung

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: )

Übersetzung von Struktogrammen nach VBA

Grundlagen der Theoretischen Informatik, SoSe 2008

M. Graefenhan Übungen zu C. Blatt 3. Musterlösung

Allgemeines. Verschiedene Sprachkonzepte C-Sprachfamilie C-ähnliche Programmiersprachen Allgemeines zu C. #include <stdio.h>

Erstellen der Barcode-Etiketten:

RS-Flip Flop, D-Flip Flop, J-K-Flip Flop, Zählschaltungen

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung

Deklarationen in C. Prof. Dr. Margarita Esponda

Praktikum Ingenieurinformatik. Termin 2. Verzweigungen (if-else), printf und scanf, while-schleife

Schnellanleitung: Verbuchung von Studien- und Prüfungsleistungen

Erstellen von x-y-diagrammen in OpenOffice.calc

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff

Einführung in die C-Programmierung

Sortierverfahren. Sortierverfahren für eindimensionale Arrays

Inventur. Bemerkung. / Inventur

2. Programmierung in C

Serienbrieferstellung in Word mit Kunden-Datenimport aus Excel

Primzahlen und RSA-Verschlüsselung

Gegenüberstellung von Assembler- und C-Programmierung

Felder, Rückblick Mehrdimensionale Felder. Programmieren in C

Überblick. Lineares Suchen

7 Rechnen mit Polynomen

Visual Basic Basisbefehle Hinweis: Der Text in eckigen Klammern [ ] ist variabel, z.b. [var] => 5.3. Eckige Klammern sind stets wegzulassen!

2A Basistechniken: Weitere Aufgaben

Übungskomplex Felder (1) Eindimensionale Felder Mehrdimensionale Felder

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Gratis Excel SVERWEIS Funktions-Anleitung, Tutorial, ebook, PDF-E-Book

Fallbeispiel: Eintragen einer Behandlung

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

1.Unterschied: Die Übungen sind nicht von deinem Mathe-Lehrer...

5. Übung: PHP-Grundlagen

Dr. Monika Meiler. Inhalt

Qualität und Verlässlichkeit Das verstehen die Deutschen unter Geschäftsmoral!

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1

Taylorentwicklung der k ten Dimension

Platinen mit dem HP CLJ 1600 direkt bedrucken ohne Tonertransferverfahren

C++ Tutorial: Timer 1

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Inhalt. 1. Einführung in die Informatik. 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele.

Graphic Coding. Klausur. 9. Februar Kurs A

Handbuch ECDL 2003 Modul 2: Computermanagement und Dateiverwaltung Der Task-Manager

Übungen zu C++ Kapitel 1

Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich

Behörde für Bildung und Sport Abitur 2008 Lehrermaterialien zum Leistungskurs Mathematik

Transkript:

Fallunterscheidung: if-statement A E 1 E 2 V 1 V 2 Syntax: if ( ausdruck ) Semantik: else anweisungsfolge_1 anweisungsfolge_2 1. Der ausdruck wird bewertet 2. Ergibt die Bewertung einen Wert ungleich 0 (wahr), wird anweisungsfolge_1 ausgeführt, sonst (falsch) wird anweisungsfolge_2 ausgeführt. 3. Besteht eine Anweisungsfolge nur aus einer Anweisung, so sind die Klammern nicht notwendig 4. Der else-teil ist optional 1

Fallunterscheidung: if-statement A E 1 E 2 V 1 V 2 Mit dem if statement kann im Programm alternativ auf eine logische Aussage reagiert werden. Wenn die Temperatur den Wert 20 übersteigt, dann schalte die Heizung aus, ansonsten schalte die Heizung ein. Logische Bedingung kann nur mit ja oder nein beantwortet werden. float temp; unsigned char heizung; if (temp > 20.0) heizung = 0; else heizung = 1; Ja-Teil im eigenen Anweisungsblock Nein-Teil im eigenen Anweisungsblock nach Schlüsselwort else ( Logische Bedingung immer in Klammern! ) 2

Logik in C Bei Fallunterscheidungen kommt es darauf an, ob eine Aussage richtig oder falsch ist Generell gilt in C Der Wert 0 bedeutet falsch! Ein Wert ungleich 0 bedeutet richtig! Nicht nur die 1 ist richtig! Alle Zahlen ungleich 0 sind richtig! int i = 10; if (i) printf("aussage ist richtig!\n"); else printf("aussage ist falsch!\n"); Das kommt raus! 3

Beispiel: if-statement #include <stdio.h> int main (void) int punkte, note; printf ( "Punkte eingeben: "); if (scanf("%d", &punkte)!= 1) printf ("ungueltige Zahl! \n"); return 1; if (punkte > 94) note = 1; else if (punkte > 84) note = 2; else if (punkte > 69) note = 3; else if (punkte > 59) note = 4; else if (punkte > 49) else note = 5; note = 6; printf("%3d Punkte ergibt Note %d\n", punkte, note); return 0; 4

Fallunterscheidung mit dem Konditionaloperator? : A E 1 E 2 V 1 V 2 Zweifachverzweigung Syntax: ausdruck_1? ausdruck_2 : ausdruck3 Semantik: 1. ausdruck_1 wird bewertet. 6. Ergibt die Bewertung von ausdruck_1 einen Wert ungleich 0 (wahr), ist das Ergebnis des bedingten Ausdrucks der Wert von ausdruck_2, sonst ist das Ergebnis des bedingten Ausdrucks der Wert von ausdruck_3. Wesentliche Unterschiede zur if-kontrollstruktur: 1. Alle drei logischen Teile des Struktogrammes müssen da sein. 2. Der Bedingte Ausdruck ist ein Ausdruck, während die if-kontrollstruktur eine Anweisung ist. So kann der bedingte Ausdruck Teil einer Anweisung sein. 5

Fallunterscheidung mit dem Konditionaloperator? : Ein Kurzform für eine if- Abfrage Bedingung stimmt if (i > k) max = i; else max = k; max = (i > k)? i : k; Bedingung stimmt nicht int i1 = 2; int i2 = 1; z = (i1 <= i2)? (i1 += 10) : (i2 += 20); printf ("z:\t%i \ni1:\t%i\ni2:\t%i \n", z, i1, i2); z: 21 i1: 2 i2: 21 6

Beispiele: bedingter Ausdruck #include <stdio.h> // Stringersetzung main (void) int i; printf( Anzahl der Teile eingeben: ); if (scanf( %d, &i )!= 1) printf ( Ungueltige Zahl\n ) return 1; printf( %d Teil%s\n, i, i == 1? : e ); return 0; #include <stdio.h> // Maximumbestimmung int main (void) float a, b, max; printf( Bitte Zahl a eingeben: ); if (scanf( %f, &a)!=1) printf ( ungueltige Zahl\n ); return 1; printf( Zahl b eingeben: ); if (scanf( %f, &b)!= 1) printf ( Ungueltige Zahl\n ); return 2; max = a > b? a : b; printf ( max = %f\n, max) return 0; 7

switch - die Mehrfachverzweigung E 1 E 2 E 3 E 4 V 1 V 2 V 3 V 4 A Syntax: switch (Ausdruck) case Wert1: Anweisungen1; case Wert2: Anweisungen2; break; case Wert3: case Wert4 : Anweisungen3; default: Anweisungen; Semantik: 1. Der switch ist eine Auswahl unter mehreren Möglichkeiten. 2. Der Ausdruck wird bewertet. int z=5; switch (tag) case 1: case 2: z = 6; case 6: z += 3; break; case 7: z += 4; break; default: z = 7; printf( Aufstehen um %i:00 Uhr\n, z); 3. Das Ergebnis der Bewertung wird mit den Konstanten Wert1, Wert2 usw. verglichen und die Anweisungen ab der entsprechenden Stelle ausgeführt. Eine Anweisungsfolge ohne break führt dazu, dass auch die Anweisungen des nächsten Falles durchlaufen werden. 4. Der default-teil kann an beliebiger Stelle stehen oder auch fehlen. 5. Jede Anweisungsfolge sollte mit einer break-anweisung abgeschlossen werden. 8

Wiederholen mit Vorabtest: while Schleife B V Sollen Anweisungen mehrfach ausgeführt werden, so wird eine Programmierschleife benötigt. z.b.: Wir lesen solange von der Tastatur Zahlen ein, verarbeiten sie, bis die Zahl 0 eingegeben wird. Syntax: while (Bedingung) // Anweisungen Semantik: Bedingung ist das Ergebnis einer Bewertung eines logischen Ausdrucks sie ist richtig (entspricht ungleich Null) oder falsch (entspricht gleich Null) solange die Bedingung richtig ist werden die Anweisungen im Anweisungsblock ausgeführt, wenn die Bedingung falsch ist geht es mit der nächsten Anweisung nach der Schleife weiter 9

Wiederholen mit Endtest: do while Schleife Semantik: Bei einer while Schleife wird erst geprüft und dann (Bedingung ist TRUE) werden die Anweisungen durchlaufen d.h. ist die Bedingung gleich beim ersten Durchlauf falsch dann werden die Anweisungen nicht ein einziges Mal bearbeitet. Bei einer do while Schleife Syntax: werden zuerst die Anweisungen durchlaufen dann wird geprüft d.h. auch wenn die Bedingung im ersten Durchlauf falsch ist werden die Anweisungen doch mindestens einmal ausgeführt. do // Anweisungen while (Bedingung); V B 10

Beispiele: while Schleifen Mittelwert int i; double zahl, sum, mittel; i = 0; sum = 0.; mittel = 0.; do printf ( Bitte Zahl eingeben: ); if (scanf( %lf, &zahl)!= 1) printf ( ungueltige Zahl\n ); break; sum += zahl; i++; while( i < 10 && zahl!= 0 ); if ( zahl == 0 ) i--; if ( i!= 0 ) mittel = sum / i; printf( Der Mittelwert ist: %f\n, mittel); int i; double zahl, sum, mittel; i = 0; sum = 0.; mittel = 0.; zahl = 1.; while( i < 10 && zahl!= 0 ) printf ( Bitte Zahl eingeben: ); if (scanf( %lf, &zahl)!= 1) printf ( ungueltige Zahl\n ); break; sum += zahl; i++; if ( zahl == 0 ) i--; if ( i!= 0 ) mittel = sum / i; printf( Der Mittelwert ist: %f\n, mittel); 11

Wiederholen mit Vorabtest der Laufbedingung: for Schleife B Semantik: for (int n = 0; n < 10; n++) printf ("\n%i", n); Syntax: Auch bei der for Schleife wird zunächst eine Bedingung geprüft und dann die Anweisungen ausgeführt allerdings kann die for Schleife noch mehr Deklarierung, Initialisierung Vergleich Anweisung, Post-Operation for (Initialisierung; Vergleich; Postoperation) Anweisungen; while (n < 10) for (;n < 10;) identisch int n = 0; while (n < 10) printf ("\n%i", n); n++; for (;n < 10;) V Initialisierung; while (Vergleich) Anweisungen; Postoperation; 12

Beispiele: for Schleife Mittelwert int i; double zahl, sum, mittel; sum = 0.; mittel = 0.; zahl = 1.; for (i = 0; i < 10 && zahl!= 0; i++) printf( Bitte Zahl eingeben: ); if (scanf( %lf, &zahl)!=1) printf ( ungueltige Zahl\n ); break; sum += zahl; if (zahl == 0) i--; if (i!= 0) mittel = sum / i; printf( Der Mittelwert betraegt: %f\n, mittel); 13

break und continue vorzeitiges Beenden von Schleifen-Konstrukten durch break wird die Verarbeitung des jeweiligen Blockes wird abgebrochen und der Block verlassen Also Abbruch der Schleife gilt für: for, while und switch durch continue wird die Verarbeitung im Block auch abgebrochen aber das Schleifen-Konstrukt weiter durchlaufen Also Sprung an das Ende des Schleifenblocks gilt nur für: for, while // Absolutwertbildung while (scanf("%i", &ezahl)) if (ezahl >= 0) continue; ezahl = - ezahl; printf ("%i\t", ezahl); 14

goto - der Feind guter Programmstruktur Sofort wieder vergessen Nur der Vollständigkeit halber goto wird bei strukturierter Programmierung nicht benötigt Mit goto kann zu einer Marke gesprungen werden. Die Marke ist ein Name (Bezeichner) gefolgt von einem Doppelpunkt z = (x > y)? x : y; printf ("der groessere Wert ist %i\n", z); if (x > y) z = x; else z = y; printf ("der groessere Wert ist %i\n", z); if (x > y) goto groesser; else z = y; goto weiter; groesser: z = x; weiter: printf ("der groessere Wert ist %i\n", z); 15

Beispiele: und nochmal Rechnen Aufgabenstellung: Zu schreiben ist ein C-Programm, das eine 9x9 Multiplikationsmatrix für die Zahlen 0..9 berechnet und ausgibt. Die Ausgabeform ist eine Matrix, wo die Länge der Zahlen entsprechend berücksichtigt wird. Die einzelnen Matrixeinträge werden durch den senkrechten Strich, das Minuszeichen - und dem Pluszeichen + begrenzt. Das Programm erzeugt zunächst eine Programmanfangsmeldung und zum Schluss eine Programmendemeldung. Dazu gehören auch: Programmbeschreibung Verwaltungsteil Struktogramm #include <stdio.h> int main() /* Erzeugung einer 9x9 Multiplikationsmatrix */ int i=0, j=0; printf("ausgabe einer Multiplikationsmatrix\n\n"); printf("* "); for (i=1;i<10;i++) printf(" %d ",i); printf("\n"); for (i=1;i<11;i++) printf("--+"); printf("\n"); for (i=1;i<10;i++) printf(" %d ",i); for (j=1;j<10;j++) printf("%2d ",i*j); printf("\n"); for (j=1;j<11;j++) printf("--+"); printf("\n"); printf( Das wars mit der Multiplikationsmatrix\n"); return 0; 16

#define ANZAHL 20 Arrays (Vektoren) Zur Speicherung mehrerer gleichartiger Daten z.b. die Noten einer Klausur von 20 Studenten int noten[anzahl]; wie normale Variablendefinition die Anzahl in eckigen Klammern hinter dem Variablennamen lesen und schreiben der Elemente durch Verwendung eines Index dieser kann nur Werte von 0 bis ANZAHL - 1 annehmen! y = noten[5]; noten[i] = 3; noten[20] = 5; int i, summe = 0, werte[anzahl]; float mittelw; // Bilden eines Mittelwertes for (i = ANZAHL; i; summe += werte[--i]) ; // leere Anweisung mittelw = (float)summe; mittelw /= ANZAHL; Datentypwandlung: cast Operator (float) 17

Sortieren von Werten Schlechter Algorithmus da sehr häufig die ganze Tabelle Bubble sort durchsucht werden muss! man fängt beim ersten Wert an und geht bis zum vorletzten Wert es werden immer benachbarte Werte verglichen und u.u. getauscht ist einmal getauscht worden, so muß die ganze Kette nochmal überprüft werden (weiterer Durchgang) solange bis kein Tausch mehr stattfindet. while (!fertig) fertig = 1; // falls kein Tausch vorgenommen werden muss for (i = 0; i < MAX - 1; i++) if (werte[i] > werte[i+1]) //tauschen int temp = werte[i+1]; werte[i+1] = werte[i]; werte[i] = temp; fertig = 0; Nur um C zu üben! 5;3;2;7;4 fertig=1 1. forschleife 3;5;2;7;4 fertig=0 3;2;5;7;4 fertig=0 3;5;2;4;7 fertig=0 fertig=1 2. forschleife 3;2;5;4;7 fertig=0 3;2;4;5;7 fertig=0 fertig=1 3. forschleife 2;3;4;5;7; fertig=0 18