Objektorientierte Programmierung

Ähnliche Dokumente
Webbasierte Programmierung

3. Anweisungen und Kontrollstrukturen

Einstieg in die Informatik mit Java

Java Anweisungen und Ablaufsteuerung

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.

Einstieg in die Informatik mit Java

Programmiertechnik Kontrollstrukturen

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

Einstieg in die Informatik mit Java

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

(Aufgaben zu Wertzuweisungen siehe Vorlesungsbeilage S. 49)

Einstieg in die Informatik mit Java

C++ - Einführung in die Programmiersprache Schleifen

Java Ablaufsteuerung (Beispiele)

Objektorientierte Programmierung OOP Programmieren mit Java

Grundlagen der Programmierung Teil1 Einheit III Okt. 2010

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung

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

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

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

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

Kontrollstrukturen und Logik

4.4 Imperative Algorithmen Verzweigung und Iteration

Einführung in die Programmierung Wintersemester 2011/12

Grundlagen der Programmiersprache C für Studierende der Naturwissenschaften

2 Teil 2: Nassi-Schneiderman

Javakurs für Anfänger

Kapitel 3: Anweisungen

2.5 Programmstrukturen Entscheidung / Alternative

Einführung in die Programmierung II. 3. Kontrollstrukturen

Einführung in die Programmierung

Vorlesung Programmieren

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

Kompaktkurs Einführung in die Programmierung. 4. Kontrollstrukturen

Grundlagen der Programmierung Teil1 Einheit III Okt. 2009

Vorlesung Programmieren

S. d. I.: Programieren in C Folie 4-1. im Gegensatz zu Pascal gibt es in C kein Schlüsselwort "then"

Martin Unold INFORMATIK. Geoinformatik und Vermessung

3. Algorithmenentwurf und JAVA. Informatik II für Verkehrsingenieure

6. Iteration (Schleifenanweisungen)

Schleifen in C/C++/Java

6. Iteration (Schleifenanweisungen)

Elementare Konzepte von

Javakurs für Anfänger

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

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

Arbeitsblätter für Algorithmierung und Strukturierung C #

Vorsichtige Programmierer verwenden Inkrement- Operatoren nicht in komplizierteren Ausdrücken

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1

Arbeitsblätter für Algorithmierung und Strukturierung

Javakurs für Anfänger

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

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

Wenn... dann... if (condition) statement. if (kontostand < 0) System.out.println("Oops..."); false. condition. true. statement

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Programmieren I. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011

Objektorientierte Programmierung OOP Programmieren mit Java

Tag 3 Repetitorium Informatik (Java)

Imperative Programmierung in Java: Kontrollfluß II

Java Einführung ABLAUFSTEUERUNG Kapitel 3 und 4

Flussdiagramm / Programmablaufplan (PAP)

Kontrollstrukturen (1)

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

Algorithmen & Programmierung. Steuerstrukturen im Detail Selektion und Iteration

Kontrollstrukturen -- Schleifen und Wiederholungen

Tag 3 Repetitorium Informatik (Java)

Labor Software-Entwicklung 1

Java: Eine kurze Einführung an Beispielen

Grundlagen der Programmierung Prof. H. Mössenböck. 4. Schleifen

In Abhängigkeit von der Erfüllung einer Bedingung (1 = wahr, 0 = falsch) wird eine (Verbund-)Anweisung ausgeführt.

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

9 Anweisungen und Kontrollstrukturen

99 - Struktogramme - 2. Sequenz I

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

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

BKTM - Programmieren leicht gemacht.

12 == 12 true 12 == 21 false 4 === 7 true 4 === "vier" false 4 === 4.0 false 12!= 13 true 12!== 12 false 12!== 12.0 true. 1 < 3 true 3 < 1 false

Schleifen Datenfelder (Arrays) Verzweigungen

Transkript:

Objektorientierte Programmierung Eine Einführung mit anschaulichen Beispielen aus der Java-Welt apl. Prof. Dr. Achim Ebert

Inhalt Kapitel 3: Kontrollstrukturen Einfache Anweisungen Anweisungsblöcke Steuerung des Programmablaufs Verzweigungen Schleifen Achim Ebert OOP.3.1

Einfache Anweisungen Anweisung (statement) ist kleinste ausführbare Einheit eines Programms Stehen im Programm in vom Programmierer festgelegten Reihenfolge untereinander Werden in dieser Reihenfolge auch abgearbeitet Anweisung wird erst dann ausgeführt, wenn alle vorherigen Anweisungen beendet sind Bezeichnung: sequenzielle Anweisungsfolge Leere Anweisung Besteht (in Java) nur aus ; Hat keinerlei Auswirkungen auf Programm Kann dort verwendet werden, wo syntaktisch Anweisung erforderlich ist, von Programmlogik her aber nichts zu tun ist Achim Ebert OOP.3.2

Anweisungsblöcke Zusammenfassung mehrerer Anweisungen Block wird in geschweifte Klammern {} eingeschlossen { statement } Gültigkeit von Bezeichnern Beschränkt sich auf Block, in dem sie deklariert sind Prinzipiell darf Bezeichner in verschiedenen Blöcken redeklariert werden Redeklaration in einem inneren Block ist verboten In einem Block deklariertes Objekt lebt so lange, wie Programmfluss den Block abarbeitet Dies schließt Abarbeitung innerer Blöcke mit ein Achim Ebert OOP.3.3

Gültigkeit von Bezeichnern Beispiel 1 public class Gueltig1{ } public static void main (String[] args) { } int x = 1; { int y = 2; x = y + 1; System.out.println ("x = " + x); System.out.println ("y = " + y); } { int y; y = 1; System.out.println ("x = " + x); System.out.println ("y = " + y); } Achim Ebert OOP.3.4

Gültigkeit von Bezeichnern Beispiel 2 Achim Ebert OOP.3.5

Gültigkeit von Bezeichnern Beispiel 3 Achim Ebert OOP.3.6

Steuerung des Programmablaufs Anweisungen werden sequentiell abgearbeitet Aber oft erforderlich: Programmteile mehrmals ausführen Programmteile ggf. nicht ausführen Sprachelemente zur Steuerung des Programmablaufs nötig Allgemeine Bezeichnung: Kontrollstrukturen Verzweigungen Veränderung der sequentiellen Abarbeitung Schleifen Iterationen/Wiederholungen im Kontrollfluss Achim Ebert OOP.3.7

Verzweigungen Eingesetzt, wenn Abarbeitung der folgenden Anweisungen von einer oder mehreren Bedingungen abhängt Einseitige Verzweigung Abhängig von Bedingung wird statement ausgeführt oder nicht Wird Bedingung mit ja (true) beantwortet: statement wird ausgeführt Sonst ( nein, false): keine Ausführung In beiden Fällen: nach Ende der Alternative weiter mit nächster Anweisung? true statement false Achim Ebert OOP.3.8

Einseitige Verzweigung Umsetzung in Java: einfache if-anweisung if (expression) statement expression ist Ausdruck vom Typ boolean Beispiel: double betrag = 1500.99; double rabatt = 0.0; if (betrag > 1000) rabatt = betrag * 0.03;... Achim Ebert OOP.3.9

Zweiseitige Verzweigung Abhängig von Bedingung wird eines von zwei möglichen statements ausgeführt Wenn Bedingung erfüllt ist, dann wird statement1 ausgeführt, sonst statement 2 In beiden Fällen: nach Ende der Alternative weiter mit nächster Anweisung? true statement1 false statement2 Umsetzung in Java: allgemeine if-anweisung if (expression) statement1 else statement2 Achim Ebert OOP.3.10

Mehrstufige (verschachtelte) Verzweigung Innerhalb eines if- oder eines else-blocks dürfen wiederum Verzweigungen stehen Ist erste Bedingung wahr, wird auch nächste kontrolliert? false Trifft eine Bedingung nicht zu, wird gesamte Verzweigung true statement1 verlassen Umsetzung in Java if (expression1) { statement1 if (expression2) { statement2 if (expression3) { statement3... }? statement2? true true statement3 false false Achim Ebert OOP.3.11

Mehrstufige (n-seitige) Verzweigung Innerhalb eines if- oder eines else-blocks dürfen wiederum Verzweigungen stehen Nächste Bedingung wird nur kontrolliert, wenn alle vorangehenden nicht zutreffen Realisierung einer Auswahl 1 aus n möglich Umsetzung in Java if (expression1) statement1 else if (expression2) statement2 else if (expression3) statement3...??? false false false true true true statement1 statement2 statement3 Achim Ebert OOP.3.12

Mehrseitige Verzweigung (Fallauswahl) Auswahl 1 aus n Wert einer Variablen wird ausgewertet Abhängig von diesem Wert wird ein statement ausgewählt und ausgeführt? 1 2 3 default statement1 statement2 statement3 default st. Achim Ebert OOP.3.13

Mehrseitige Verzweigung (Fallauswahl) Umsetzung in Java: switch-anweisung switch (expression){ case constvalue1: statement1 case constvalue2: statement2... case constvaluen: statementn default: statementd } expression: Selektor, der ordinal (abzählbar) sein muss (z.b. vom Typ int) Jeder Auswahlblock beginnt mit case constvaluex: paarweise verschiedene Ausdrücke vom Typ des Selektors Stimmt Wert des Selektors mit keinem Auswahlwert überein, so wird default-zweig ausgeführt Achim Ebert OOP.3.14

Mehrseitige Verzweigung (Fallauswahl) Umsetzung in Java: switch-anweisung (Beispiel) int note = 3; String text = ""; switch (note){ case 1: text = "sehr gut"; break; case 2: text = "gut"; break; case 3: text = "befriedigend"; break; case 4: text = "ausreichend"; break; case 5: case 6: text = "nicht bestanden"; break; default: text = "nicht erschienen"; } System.out.println ("Klausurnote: " + text); Achim Ebert OOP.3.15

Schleifen Häufig müssen die gleichen Anweisungen mehrmals wiederholt werden statement1 statement2 statement1 statement2 statement1 statement2 statement1 statement2 Schleifenkopf statement1 statement2 Schleifenfuß Schleifenrumpf Schleifensteuerung Oft nicht vorbestimmbar, wie oft Anweisungen ausgeführt werden müssen Schleife: Schleifensteuerung + Schleifenrumpf Schleifenrumpf enthält zu wiederholende Anweisungen Schleifensteuerung gibt an, wie oft bzw. unter welchen Bedingungen Rumpf ausgeführt wird Achim Ebert OOP.3.16

Zählergesteuerte Schleife for-schleife, Zählschleife, Iteration for (init; expression; update) statement init ist Ausdrucksanweisung (ohne Semikolon, durch Kommata getrennte Anweisungsfolge, Deklarations-/ Definitionsanweisung oder leer expression ist boolean-ausdruck oder leer update ist Ausdrucksanweisung (ohne Semikolon), durch Kommata getrennte Anweisungsfolge oder leer statement ist Anweisung oder Anweisungsblock Achim Ebert OOP.3.17

Zählergesteuerte Schleife Häufigster Fall: Einsatz als Zählschleife Zähler, Laufvariable: Variable, die die Schleifendurchläufe zählt Laufvariable wird bei Schleifeneintritt mit Anfangswert initialisiert Nach jedem Schleifendurchlauf wird Wert aktualisiert Endwert kann durch Konstante, Variable oder Ausdruck festgelegt werden Laufvariable und Endwert müssen gleichen Typ haben Abbruchbedingung erfüllt Schleife wird verlassen Beispiel: for (int i=1; i<=20; i++) { System.out.println (i); } Achim Ebert OOP.3.18

Zählergesteuerte Schleife for-schleife für Arrays ( for-each ) for (type name : arrayname) statement In Java 5.0 eingeführt Vereinfachte Variante zum Durchlaufen von (u.a.) Arrays Bedeutung: Für jedes Element in arrayname weise das Element der Variablen name zu und führe dann Schleifenrumpf aus 1. Erzeuge Variable vom Typ type mit Namen name 2. Weise name ersten Wert aus arrayname zu 3. Führe Schleifenrumpf aus 4. Weise name nächsten Wert aus arrayname zu 5. Wiederhole solange Elemente in arrayname sind Beispiel: for (String name : telefonbuch) {... } Achim Ebert OOP.3.19

Zählergesteuerte Schleife for-schleife für Arrays ( for-each ) Beispiel Achim Ebert OOP.3.20

Kopfgesteuerte Schleife while-schleife while (expression) statement Bedingung wird ausgewertet, bevor Anweisungsfolge innerhalb des Rumpfes ausgeführt wird Sog. abweisende Schleife, da darin enthaltene Anweisungen nie ausgeführt werden, wenn Bedingung zu Beginn schon falsch ist Beispiel: int i=0; while (i>0) { i -= 2; System.out.println (i); } Achim Ebert OOP.3.21

Fußgesteuerte Schleife do-while-schleife do statement while (expression); Bedingungsprüfung am Ende der Schleife, d.h. nach Abarbeiten der Anweisungen im Rumpf Sog. annehmende Schleife, da darin enthaltene Anweisungen mindestens einmal durchlaufen werden Beispiel: int i=0; do { i -= 2; System.out.println (i); } while (i>0); Achim Ebert OOP.3.22

Spezielle Kontrollflussanweisungen Verzweigungen erlauben den Sprung an eine vom sonstigen Kontrollfluss abweichende Stelle Stelle kann implizit oder explizit durch Verwendung von Marken (Labels) festgelegt sein break-anweisung Beim Treffen auf unmarkierte break-anweisung führt Kontrollfluss unmittelbar aus innerster Schleifenumgebung (bzw. switch-anweisung) heraus Bei markierter break-anweisung break label; hingegen wird Umgebung verlassen, die durch die angegebene Marke label gekennzeichnet ist Achim Ebert OOP.3.23

break-anweisung (Beispiele) int i=1, j=1, k=10; // j = Fakultaet von k do { if (i>k) break; j *= i; i++; } while (true); // Einmaleins bis 9*9 nestedfor: for (i=1; i<10; i++) for (j=1; j<10; j++) { if ( i*j > 80 ) break nestedfor; } Achim Ebert OOP.3.24

continue-anweisung Bei unmarkierter continue-anweisung geht Kontrollfluss einer Schleife zur nachfolgenden Iteration über Bei while- oder do-while-schleifen wird nach continue die laufende Iteration sofort beendet, die Schleifenbedingung ausgewertet und je nach Ergebnis Schleife verlassen oder neue Iteration gestartet In for-schleifen wird vor der Auswertung der Schleifenbedingung noch update abgearbeitet Bei markierter continue-anweisung continue label; geht Kontrollfluss entsprechend an umgebende Schleife über, die durch label markiert ist In dieser Schleife läuft Übergang zur nächsten Iteration genauso ab wie bei unmarkierter continue-anweisung Achim Ebert OOP.3.25