6. Iteration (Schleifenanweisungen)

Ähnliche Dokumente
Dr. Monika Meiler. Inhalt

Einfache Rechenstrukturen und Kontrollfluss II

Schleifenprogrammierung in C/C++, Fortran und Pascal

Fallunterscheidung: if-statement

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

KV Software Engineering Übungsaufgaben SS 2005

Dr. Monika Meiler. Inhalt

Übersicht Programmablaufsteuerung

5. Tutorium zu Programmieren

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

Einführung in die Programmierung

Primitive Datentypen

Einführung in die C-Programmierung

II.1.1. Erste Schritte - 1 -

Dr. Monika Meiler. Inhalt

Kontrollstrukturen, Strukturierte Programmierung

Java-Schulung Grundlagen

Informatik ist viel mehr als Delphi-Programmierung!

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Einführung in die Java- Programmierung

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen.

Tutorium Rechnerorganisation

Entwurf von Algorithmen - Kontrollstrukturen

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

1. Der Einstieg in Java. Was heißt Programmieren?

Programmiervorkurs WS 2012/2013. Schleifen und Methoden

Ein erstes Java-Programm

Programmierkurs Java

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

Java Einführung Programmcode

Beispiel: DB-Mock (1/7)

C allgemein. C wurde unter und für Unix entwickelt. Vorläufer sind BCPL und B.

Propädeutikum zur Programmierung

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. Hochschule Darmstadt -Fachbereich Informatik-

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1

C/C++ Programmierung

Übersicht. Schleifen. Schleifeninvarianten. Referenztypen, Wrapperklassen und API. 9. November 2009 CoMa I WS 08/09 1/15

Organisatorisches. Einführung in die Programmierung in C Hochschule Regensburg Universitätsstraße 31, Regensburg

HEUTE. Effizienzbeispiel: bekannte Version (Übung ) Mathematik: Was ist Effizienz? vollständige Induktion

Computergrundlagen Programmieren in C

1. Der Einstieg in Java

Algorithmen und Datenstrukturen

Programmieren was ist das genau?

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

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 1. Einführung und Grundbegriffe

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Android will doch nur spielen. Java Eine kurze Einführung

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm

Praktikum Informatik II Prof. Dr. Martin Trauth, Dr. Michael Männel

Programmierkurs: Delphi: Einstieg

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

Programmieren in C. -- ALLE Programmiersprachen sind HÄSSLICH -- Deklaration: erst der Datentyp, dann der Variablenname. Semikolon am Ende.

Einführung in die Programmierung mit BlueJ

Gliederung Programmiersprachen. Programmiersprachen Einführung in C. Kontrollstrukturen. Verzweigung mit IF. Beispiel: Zahlenklassifizieren

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

Datenbankanwendungsprogrammierung Crashkurs Java

IT- Handbuch für Fachinformatiker, 7. Auflage: Text- Lösungen Sascha Kersken

Kapitel 2. Methoden zur Beschreibung von Syntax

Sprachbeschreibung und Erweiterung

Brainfuck. 1 Brainfuck. 1.1 Brainfuck Geschichte und Umfeld. 1.2 Esoterische Programmiersprachen

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008

Moderne C-Programmierung

Primitive Datentypen. Dr. Wolfgang Süß Thorsten Schlachter

VBA-Programmierung: Zusammenfassung

Innere Klassen in Java

C# 2000 Expression Beispielcodes für Konsolen- und Formularanwendung

Grundlagen der Programmierung UE

Probeklausur: Programmierung WS04/05

Gliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions

RTOS lernt Scripting dank Lua. - Raphael Zulliger, Indel AG

Grundlagen der Programmierung UE

Java-Programmierung mit NetBeans

Grundlagen. Die Komponenten eines C Programms. Das erste Programm

Teil 1: Grundeigenschaften von Rechnern und Software

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

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

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik

SWE1 / Übung 2 ( )

Kontrollstrukturen - Universität Köln

Programmieren in Java

Java Einführung Abstrakte Klassen und Interfaces

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

Modellierung und Programmierung 1

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

Arrays und Methoden. Programmiervorkurs WS 2010 / 11

Programmieren in C. C Syntax Datentypen, Operatoren und Kontrollstrukturen. Prof. Dr. Nikolaus Wulff

C# Programmierung. Eine Einführung in das.net Framework. C# Programmierung - Tag 1: Grundlagen

Erster Kontakt mit Java und Pseudocode

Verteilte Systeme CS5001

Lösungsvorschläge. zu den Aufgaben im Kapitel 4

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Erwin Grüner

Schritt 1. Schritt 1. Schritt 3. - Analysieren des Problems und Spezifizierung einer Lösung.

Algorithmen und Programmieren II Einführung in Python

Grundlagen von C. Ausarbeitung von Jonas Gresens

Distributed Computing Group

Java-Vorkurs Wintersemester 15/16

Transkript:

Schwerpunkte While-: "abweisende" Schleife 6. Iteration (Schleifenanweisungen) Java-Beispiel: TemperatureTable.java Do-while-: "nichtabweisende" Schleife For-: zählergesteuerte Schleife Klassifikation von en Strukturierte Programmierung K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 9. Nov. 2015 2 While- Syntax EBNF: while ( Bedingung ) Unterschiede zu Pascal? Solange die 'Bedingung' gilt, wiederhole man die '' Anwendung: wird ggf. n i c h t bearbeitet Pascal while ( Bedingung ) do 3 4

Do-while- Do-while-: mit while- ausgedrückt EBNF: do while ( Bedingung ) ; Syntax nicht konsequent: ';' do while ( Bedingung ) ; Solange die 'Bedingung' gilt, wiederhole man die '', wobei die Bedingung n a c h Ausführung der getestet wird dasselbe wie: Anwendung: wird mindestens e i n m a l bearbeitet while ( Bedingung ) Do-while wird nicht benötigt - erspart aber Schreibaufwand 5 6 Rolle des '; in der Syntax: Trennung oder Abschluss von en? Pascal, Modula-2, Ada,... : Trennung von en Rolle des ';' C, C++, Java: - Abschluss von en (syntaktisch Teil der ) - aber: mit vielen Ausnahmen (ohne ';' : while, if,...) 1 2 3 x := y; if x > y then 2a 2b begin x := y; y := 0 end; d := 100 Unsauberkeit in Sprachdefinition (kein einheitliches Prinzip: Fehlerquelle) 1 2 3 2a x = y; if (x > y) { x = y; y = 0; d = 100; 2b 7 8

Beispiel: Fakultät n! = 1 * 2 *... * n Wichtig: Anfangswerte int n, x = 1, fakultaet = 1;... // n einlesen Abbruchbedingung while (x <= n) { fakultaet = fakultaet * x; x = x + 1; For-Schleife z. B. für n = 4: x durchläuft die Werte: 1, 2, 3, 4, 5 (bei x = 5 gilt nicht mehr: x <= n ) dabei durchläuft fakultaet die Werte: 1, 1, 2, 6, 24 9 10 Auswahl einer Wiederholanweisung For-Schleife Wiederholung (einer ) EBNF: Solange eine Bedingung gilt Feste Anzahl von Wiederholungen for (Initialisierung ; Test ; Update) Java Pascal mindestens e i n Mal do A while (B); REPEAT A UNTIL NOT B; auch: 0 Mal while (B) A WHILE B DO A for (I;T;U) A FOR x := 1 TO n DO A dasselbe wie: Initialisierung ; while ( Test ) { ; Update ; Ausdrücke (insb. Zuweisungen) For- wird nicht benötigt - Bessere Lesbarkeit in vielen Fällen 11 12

Beispiel: Fakulät mit 'for' For- in Java (C, C++): aus sprachtheoretischer Sicht ein Unglück dasselbe: int n, x, fakultaet = 1;... // n einlesen for (x = 1; x <= n ; x = x + 1) x = 1; Anwendung: fakultaet = fakultaet * x; while (x <= n) { fakultaet = fakultaet * x; x = x + 1; A n z a h l der Wiederholungen ist bekannt (hier: n)! Kurzform: x++ analog: x-- wie x = x - 1 Was man will: - Man kennt Anzahl der Wiederholungen: n - Eine Laufvariable i läuft von einem Anfangswert (z.b. 1) bis zum bekannten Endwert (n) Pascal: Java, C, C++: fak := 1; fak = 1; FOR x := 1 TO n DO for (x = 1; x <= n ; x = x + 1) fak := fak * x; fak = fak * x; 13 14 For- in Java (C, C++): unübersichtliche Programme möglich Zyklen: weiteres Beispiel for (a = 1 ; b * c == 0 ; k = k + 1) Tabelle: Umrechnung Celsius Fahrenheit x = y; Grad C Grad F kein Bezug der Laufvariablen a zur Abbruchbedingung und Update -10.0 14.0-9.0 15.8-8.0 17.6 for ( ; ; ) {readnumber();...... 10.0 50.0 entspricht: while (true){ readnumber();... Beispielprogramm mit while- 15 16

class TemperatureTable { // Tabelle mit C/F Temperaturen public static void main (String[] args) { final double LOW_TEMP = -10.0, HIGH_TEMP = 10.0; double cent, // Grad Celsius fahr; // Grad Fahrenheit System.out.println("\tGrad C\t\tGrad F"); cent = LOW_TEMP; while (cent <= HIGH_TEMP) { fahr = (9.0/5.0) * cent + 32.0; // C -> F System.out.println("\t" + cent + "\t\t" + fahr); cent = cent + 1.0; cent++ Tabulator Statt while besser for Wie? class TemperatureTable { // Tabelle mit C/F Temperaturen public static void main (String[] args) { final double LOW_TEMP = -10.0, HIGH_TEMP = 10.0; double cent, // Grad Celsius fahr; // Grad Fahrenheit System.out.println("\tGrad C\t\tGrad F"); for(cent = LOW_TEMP; cent <= HIGH_TEMP; cent++) { fahr = (9.0/5.0) * cent + 32.0; // C -> F System.out.println("\t" + cent + "\t\t" + fahr); 17 18 Break-: Austritt aus Zyklen mitten im Zykluskörper Das 1 ½-Zyklus-Problem Break- // z.b. Compiler: Symbole ermitteln und verarbeiten while (true) {... Einlesen // u.a. führende Leerzeichen überlesen if (Keyboard.eof()) break;... verarbeite Eingabe... Strukturierte wird verlassen: switch, while, if Ungünstig: Abbruchbedingung nicht direkt in while-bedingung sichtbar (wenn möglich: vermeiden) Aber oft sinnvolle Lösung 19 20

Break-: das " 1 ½ - Zyklus-Problem" while (true) {... einlesen... if (Keyboard.eof()) break;... verarbeite Eingabe...... einlesen... auch ohne break: aber doppelter Code while (! Keyboard.eof())... verarbeite Eingabe...... einlesen... Strukturierte Programmierung Bekannter Begriff in der Programmierung seit ca. 1975 21 22 leer Klassifikation von en einfach (elementar) Sprunganweisung: - break - continue - return - throw - (goto) Sprünge nötig? Methodenaufruf Zuweisung... en Verzweigung: - if- - switch Alle en nötig? Java Synchronisation strukturiert (zusammengesetzt aus anderen Anwendungen) Zyklen (Schleifen): - while - do-while - for Block (Sequenz) {s1; s2; Ausnahmeanweisung Strukturierte Programmierung früher: (Fortran) 1 IF (a+b) 10, 20, 30 10...... GO TO 40 20... GO TO 40 30... 40... Strukturierte Programmierung: Man kommt ohne Sprünge aus (a+b)<0 Ausreichend zur Algorithmenbildung: - Zuweisung - sequentielle Ausführung (a1; a2;...) - Verzweigung (Langform von 'if') - Wiederholung (while) Marke (markierte ) (Fälle: a+b < 0... =0... >0) 23 24