EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

Ähnliche Dokumente
EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17

EINI LogWing/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 17/18

EINI WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

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

EINI LogWing/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 17/18

Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund

EINI WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

Java Anweisungen und Ablaufsteuerung

Tag 3 Repetitorium Informatik (Java)

Kontrollstrukturen -- Schleifen und Wiederholungen

EINI LogWing/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 17/18

Einstieg in die Informatik mit Java

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

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

Java Ablaufsteuerung (Beispiele)

Einstieg in die Informatik mit Java

4.4 Imperative Algorithmen Verzweigung und Iteration

Objektorientierte Programmierung

Programmiertechnik Kontrollstrukturen

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

Vorlesung Programmieren

2.4 Schleifen. Schleifen unterscheiden sich hinsichtlich des Zeitpunktes der Prüfung der Abbruchbedingung:

Vorlesung Programmieren

3. Anweisungen und Kontrollstrukturen

Einstieg in die Informatik mit Java

Einführung in die Informatik für Naturwissenschaftler und Ingenieure

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

Gedächtnis. Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet. Zugriff.

C++ - Einführung in die Programmiersprache Schleifen

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung

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

Einstieg in die Informatik mit Java

Einführung in die Programmierung Wintersemester 2011/12

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

Imperative Programmierung in Java: Kontrollfluß II

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

Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund

Abschnitt 5. Grundlagen der funktionalen & imperativen Programmierung

Einfache Rechenstrukturen und Kontrollfluss

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

Kapitel 4. Kontrollstrukturen

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

Martin Unold INFORMATIK. Geoinformatik und Vermessung

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

Aufgabe 1.90: Ein Geschäft gibt ihren Kunden unterschiedliche Rabatte. Schreiben ein Programm, das folgende Rabattklassen vorsieht:

EINI LogWing/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 17/18

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

Einstieg in die Informatik mit Java

Einführung in die Programmierung

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Kontrollstrukturen und Logik

Flussdiagramm / Programmablaufplan (PAP)

Elementare Konzepte von

Javakurs für Anfänger

3. Grundanweisungen in Java

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

Einfache Rechenstrukturen und Kontrollfluß

Einführung in die Programmierung II. 3. Kontrollstrukturen

Vorkurs Informatik WiSe 16/17

Kompaktkurs Einführung in die Programmierung. 4. Kontrollstrukturen

Tag 3 Repetitorium Informatik (Java)

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

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

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

Java: Eine kurze Einführung an Beispielen

Webbasierte Programmierung

Wiederholungen / Schleifen

Wo sind wir? Kontrollstrukturen

Kontrollstrukturen. Wo sind wir? Anweisung mit Label. Block. Beispiel. Deklarationsanweisung

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

Arbeitsblätter für Algorithmierung und Strukturierung

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

Kapitel 4. Kontrollstrukturen

Klassen und Objekte. Klassen sind Vorlagen für Objekte. Objekte haben. Attribute. Konstruktoren. Methoden. Merkblatt

Intensivübung zu Algorithmen und Datenstrukturen

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1

2 Teil 2: Nassi-Schneiderman

Kapitel 5. Programmierkurs. Kontrollstrukturen. Arten von Kontrollstrukturen. Kontrollstrukturen Die if-anweisung Die switch-anweisung

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

2.5 Programmstrukturen Entscheidung / Alternative

Kontrollstrukturen (1)

Grundlagen der Programmierung Teil1 Einheit III Okt. 2010

Arbeitsblätter für Algorithmierung und Strukturierung C #

Transkript:

EINI LW Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 11/12 Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@udo.edu http://ls1-www.cs.uni-dortmund.de EINI Kap. 3 Kern imperativer Programmiersprachen 1

EINI Kap. 3 Kern imperativer Programmiersprachen 2 Thema Kapitel 3 Basiskonstrukte imperativer (und objektorientierter) Programmiersprachen Unterlagen Gumm/Sommer, Kapitel 2 Echtle/Goedicke, Einführung in die Programmierung mit Java, dpunkt Verlag

EINI Kap. 3 Kern imperativer Programmiersprachen 3 Zwischenstand Variablen Bezeichner, Datentyp, Speicherort, Wert Zuweisungen Zuweisungen müssen typverträglich sein (Einfache) Datentypen und Operationen integer (byte, short, long; float, double) boolean char String Typkompatibilität Kontrollstrukturen Sequentielle Komposition, Sequenz Alternative, Fallunterscheidung Schleife, Wiederholung, Iteration (while, do while, for) Verfeinerung Unterprogramme, Prozeduren, Funktionen Blockstrukturierung Rekursion

EINI Kap. 3 Kern imperativer Programmiersprachen 4 Beispiel do-while (2) Beispiel: einfache Numerik Funktionen Berechnung der Quadratwurzel sqrt( float n) für n > 0: Nützlichkeit klar, in vielen Programmen unabhängig vom Kontext verwendbar daher auch in Bibliotheken (Libraries) stets verfügbar Eine Berechnungsidee: Intervallschachtelung Finde eine untere Schranke. Finde eine obere Schranke. Verringere obere und untere Schranke, bis der Abstand hinreichend gering geworden ist. Etwas konkreter: Halbiere Intervall, fahre mit demjenigen Teilintervall fort, das das Resultat enthält.

EINI Kap. 3 Kern imperativer Programmiersprachen 5 Beispiel do-while (2) Quadrat-Wurzel Berechnung mittels Intervallschachtelung ug m og

EINI Kap. 3 Kern imperativer Programmiersprachen 6 Beispiel do-while (2) Quadrat-Wurzel Berechnung mittels Intervallschachtelung Rückführung der Berechnung auf Quadrierung Start: Intervall [0,x+1], Mitte m = 0,5*(uG+oG) Algorithmus: Berechne neue Mitte m = 0,5*(uG+oG) Falls m 2 > x: og = m sonst: ug = m Abbruch: falls og - ug < ε

EINI Kap. 3 Kern imperativer Programmiersprachen 7 Beispiel do-while (2) double x =..., ug = 0, og = x + 1, m, epsilon = 0.001; do { m = 0.5*(uG + og); if (m*m > x) og = m; else ug = m; } while (og - ug > epsilon); System.out.println ( "Wurzel " + x + " beträgt ungefähr " + m);

EINI Kap. 3 Kern imperativer Programmiersprachen 8 Wiederholung - Schleifen Drei Varianten while (Bedingung) { Anweisungsfolge } do { Anweisungsfolge } while (Bedingung) for (Initialisierung, Bedingung, Fortschritt) { Anweisungsfolge } Diese Vielfalt ist nur durch Komfort begründet Die allgemeinste Form ist die while -Schleife

EINI Kap. 3 Kern imperativer Programmiersprachen 9 Wiederholung while-schleife while (Bedingung) { Anweisungsfolge } Grundsätzlich gilt, dass der Schleifenkörper solange wiederholt wird, wie die Bedingung wahr ist (auch 0-mal). Die Bedingung wird zu true oder false ausgewertet. Die Bedeutung kann auch durch ein Diagramm dargestellt werden (Kontrollflussgraph)

EINI Kap. 3 Kern imperativer Programmiersprachen 10 Wiederholung - do-while-schleife Durchlauf des Schleifenkörpers mindestens 1 Mal Syntax und Semantik durch Diagramme

Die 3 Teile von Schleifen 1. Vorbereitende Anweisungen Deklaration von Variablen, Initialisierungen 2. Fortschaltende Anweisungen 3. Abfrage der Schleifenbedingung Daher sollten bei der Prüfung der Korrektheit eines (Teil-) Programms aus einer Schleife auch insbesondere diese Aspekte geprüft werden: Werden die Variablen, die für die Schleifenbedingung gebraucht werden, deklariert und sinnvoll initialisiert? Werden die Variablen, die für die Schleifenbedingung gebraucht werden, innerhalb des Schleifenkörpers oder - sofern extra ausgewiesen - in den fortschaltenden Anweisungen verändert? Ist eine Veränderung der Schleifenbedingung hin zum Abbruch der Schleife gesichert? Weiteres spezielles Schleifenkonstrukt: -> for-schleife EINI Kap. 3 Kern imperativer Programmiersprachen 11

for-schleife Die for-schleife bietet eine direkte Syntax für diese drei Teile einer Schleife: Vorbereitende Anweisungen Variablenvereinbarungen, Initialisierungen int i = Startwert Abfrage der Schleifenbedingung i<= Endwert Fortschaltende Anweisungen i++ Also Beispiel: for (int i= Startwert; i<= Endwert; i++) {... } EINI Kap. 3 Kern imperativer Programmiersprachen 12

EINI Kap. 3 Kern imperativer Programmiersprachen 13 for-schleife Syntax-Diagramme für die for-schleife

Komplexe for-schleifen Beispiel for (int i=2,j=10 ; // Start i<=5 ; // Ende i++, j--) // Weiter {... } // Rumpf Bemerkungen: Die Schleifen-lokal vereinbarten Variablen sind nur innerhalb der Schleife gültig, dürfen aber auch außerhalb nicht noch einmal deklariert werden! Die Schleifenvariablen müssen nicht unbedingt lokal vereinbart sein, es erleichtert jedoch, den Überblick über die Verwendung von Variablen zu behalten (Lokalität der Verwendung). Mehrfache Fortschaltungsanweisungen sind eher unüblich. EINI Kap. 3 Kern imperativer Programmiersprachen 14

EINI Kap. 3 Kern imperativer Programmiersprachen 15 Die Bedeutung der for-schleife... Syntax Semantik Auch die for-schleife kann null Mal ausgeführt werden.

... und ein paar Beispiele... (1) Das zuvor betrachtete Beispiel Mit Hilfe von while: int i = 1, a = 2; while (i < 100) { } a = 4*a; i++; Mit Hilfe von for: for (int i = 1, a = 2; i < 100; i++) a = 4*a; EINI Kap. 3 Kern imperativer Programmiersprachen 16

EINI Kap. 3 Kern imperativer Programmiersprachen 17... und ein paar Beispiele... (2) Drucken einer Funktionstabelle... f(x) = x 2-8 für x {-5,-4,-3,..., 10,11,12} Programmausschnitt (mit getrennter Deklaration & Initialisierung): int x, y; for (x = -5; x <= 12 ; x++) { } y = x*x -8; System.out.println( x= + x + y= + y);

EINI Kap. 3 Kern imperativer Programmiersprachen 18 Schleifen Zusammenfassung Drei Varianten while (Bedingung) { Anweisungsfolge } do { Anweisungsfolge } while (Bedingung) for (Initialisierung, Bedingung, Fortschritt) { Anweisungsfolge } Diese Vielfalt ist nur durch Komfort begründet

EINI Kap. 3 Kern imperativer Programmiersprachen 19 Verschachtelung Schleifen dürfen verschachtelt sein Z.B. eine for - Schleife als Rumpf einer anderen for - Schleife: Ein Durchlauf der äußeren Schleife ist eine vollständige Ausführung der inneren Schleife i j 10 1 2 3 4 // innere Schleife einmal vollständig 20 1 // äußere Schleife in 2. Iteration...

EINI Kap. 3 Kern imperativer Programmiersprachen 20 Verfügbarkeit von Laufvariablen Zur Erinnerung: Im Rumpf von for-schleifen sind die Laufvariablen verfügbar Z.B. kann damit eine innere Schleife von dem Wert einer Laufvariablen der äußeren Schleife abhängig gemacht werden: Ausgabe: 10 1, 10 2, 10 3, 10 4, 20 1,..., 30 2, 30 3, 30 4,...

continue & break EINI Kap. 3 Kern imperativer Programmiersprachen 21 Abbruchsmöglichkeiten für Schleifendurchläufe Bisher nur bei Prüfung der Bedingung vor/nach Durchlauf des Schleifenkörpers Zusätzliche Möglichkeiten durch spezielle Anweisungen: Mit continue kann die Ausführung eines Schleifenrumpfs abgebrochen und mit der nächsten Iteration (nach Prüfung der Schleifenbedingung) fortgesetzt werden. Mit break kann die komplette Ausführung einer Schleife beendet werden

Beispiel zu continue & break continue Aufgabe: Zahlen von 1-20 sollen ausgegeben werden, die nicht durch 3 teilbar sind for (int i = 1; i <= 20; i++) { if ( (i % 3) == 0) continue; System.out.print(i + ", "); } EINI Kap. 3 Kern imperativer Programmiersprachen 22

Beispiel zu continue & break break Aufgabe: Zahlen von 1-20 sollen aufsummiert werden, bis die Summe zum ersten Mal größer als 100 ist int summe = 0; for (int i = 1; i <= 20; i++) { summe = summe + i; if ( summe > 100) break; } EINI Kap. 3 Kern imperativer Programmiersprachen 23

continue & break EINI Kap. 3 Kern imperativer Programmiersprachen 24 Abbruchsmöglichkeiten für Schleifendurchläufe Besonderheit in Java: Anweisungen können benannt werden: Benennung: Anweisung; Beispiel: Startwert: istprimzahl = true; Um bei geschachtelten Schleifen eine äußere Schleife für break oder continue zu identifizieren, muss der jeweilige Schleifenkopf mit einem Namen versehen und in der break bzw. continue -Anweisung angegeben werden.

Beispiel zu continue & break Unüblich schwieriger Fall!... Aussen: while (bed1)... { } Innen: while (bed2) { } if (bed3) continue Aussen; if (bed4) continue Innen; if (bed5) break Aussen; EINI Kap. 3 Kern imperativer Programmiersprachen 25

EINI Kap. 3 Kern imperativer Programmiersprachen 26 Vorsicht mit continue & break Nur in übersichtlichen Fällen und sparsam verwenden! Typische Einsatzgebiete hoch optimierte Bibliotheken schnelles Verlassen von Schleifen, wenn Resultat klar ist Programme werden durch die Verwendung dieser Sprachkonstrukte schnell unübersichtlich

EINI Kap. 3 Kern imperativer Programmiersprachen 27 Zwischenstand Variablen Bezeichner, Datentyp, Speicherort, Wert Zuweisungen Zuweisungen müssen typverträglich sein (Einfache) Datentypen und Operationen integer (byte, short, long; float, double) boolean char String Typkompatibilität Kontrollstrukturen Sequentielle Komposition, Sequenz Alternative, Fallunterscheidung Schleife, Wiederholung, Iteration Verfeinerung Unterprogramme, Prozeduren, Funktionen Blockstrukturierung Rekursion

EINI Kap. 2 Spezifikation Algorithmus Syntax & Semantik 28 EINI sagt Danke! Vielen Dank für Ihre Aufmerksamkeit! Nächste Termine Nächste Vorlesung 25.11.2011, 08:30