Die for -Schleife HEUTE. Schleifen. Arrays. Schleifen in JAVA. while, do reichen aus, um alle iterativen Algorithmen zu beschreiben

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

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

Grundlagen der Programmierung Teil1 Einheit III Okt. 2010

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

5.4 Arrays. Oft müssen viele Werte gleichen Typs gespeichert werden. Idee: Lege sie konsekutiv ab! Greife auf einzelne Werte über ihren Index zu!

CoMa 04. Java II. Paul Boeck. 7. Mai Humboldt Universität zu Berlin Institut für Mathematik. Paul Boeck CoMa 04 7.

Einstieg in die Informatik mit Java

2 Teil 2: Nassi-Schneiderman

Einführung in die Programmierung für NF. Arrays

Modellierung und Programmierung 1

Programmiertechnik Kontrollstrukturen

Java Übung. Übung 3. Werner Gaulke. 2. Mai Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung.

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

Arrays. Gilbert Beyer und Annabelle Klarl. Einführung in die Informatik. Zentralübung zur Vorlesung Einführung in die Informatik

3. Anweisungen und Kontrollstrukturen

Imperative Programmierung in Java. Algorithmen und Datenstrukturen II 1

Propädeutikum zur Programmierung

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

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

3.2 Datentypen und Methoden

Zentralübung Grundlagen der Programmierung

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1

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

Vorlesung Programmieren

Schleifen in C/C++/Java

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Einstieg in die Informatik mit Java

Schleifen Datenfelder (Arrays) Verzweigungen

Objektorientierte Programmierung und Modellierung

3.8 Objekttypen und Arrays. Wir werden uns in diesem Kapitel näher mit den Objekttypen in Java beschäftigen.

Dr. Monika Meiler. Inhalt

RO-Tutorien 3 / 6 / 12

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

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

Programmieren I. Kapitel 5. Kontrollfluss

Einstieg in die Informatik mit Java

Dr. Monika Meiler. Inhalt

Einführung in die Programmierung für NF MI. Übung 04

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

Objekttypen. Referenzen, Objekte, Gleichheit, Wrapper, Arrays, mehr-dimensionale Arrays, Bildbearbeitung, krumme Arrays

Einstieg in die Informatik mit Java

Vorlesung Programmieren

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

Welche Informatik-Kenntnisse bringen Sie mit?

Objektorientierte Programmierung

Imperative Programmierung in Java. Algorithmen und Datenstrukturen II 1

Imperative Programmierung in Java. Algorithmen und Datenstrukturen II 1

1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r

1. Referenzdatentypen: Felder und Strings

Sprachkonstrukte Verzweigungen und Array-Strukturen

Algorithmen implementieren. Implementieren von Algorithmen

Primitive Datentypen

Arrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3

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

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

Elementare Konzepte von

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

II. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. )

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

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

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Programmierkurs Java

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

Ausgabe:

Einstieg in die Informatik mit Java

Vorlesung Programmieren

Ausdrücke der Programmiersprache Java

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

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

Vorlesung Programmieren

Wie entwerfe ich ein Programm?

Grundlagen der Programmierung Teil1 Einheit III Okt. 2009

Anweisungen zur Ablaufsteuerung

Schleifen in C/C++/Java

5. Java Arrays und Strings

Einstieg in die Informatik mit Java

Reihungen. Martin Wirsing. in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03

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

RO-Tutorien 17 und 18

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 1 - Variablen und Kontrollstrukturen

Felder. M. Jakob. 28. April Gymnasium Pegnitz

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

Einführung in die Informatik I Informatik I/A

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Einstieg in die Informatik mit Java

Algorithmen zur Datenanalyse in C++

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

Felder. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

Vorkurs Informatik WiSe 16/17

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Wo sind wir? Kontrollstrukturen

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

System.out.println("TEXT");

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

Implementieren von Klassen

9. Java Arrays und Strings. Allokation, Referenzen, Elementzugriff, Mehrdimensionale Arrays, Strings, Stringvergleiche

JAVA für Nichtinformatiker - Probeklausur -

Java: Eine kurze Einführung an Beispielen

Arrays und Schleifen

Transkript:

18.11.5 1 HEUTE 18.11.5 3 Schleifen Arrays while, do reichen aus, um alle iterativen Algorithmen zu beschreiben Nachteil: Steuermechanismus ist verteilt Übersicht nicht immer leicht dazu gibt es for ( initialization ; condition ; increment )... ; Vorteil: Steuermechanismus steht zusammen man erkennt Funktion der Schleife mit einem Blick 18.11.5 2 Schleifen in JAVA 18.11.5 4 ihr kennt initialization ; initialization ; while ( condition ) do... ;... ; increment ; increment ; while ( condition ) ; Steuermechanismus: initialization: die Steuervariable erstmals setzen condition: die Steuervariable überprüfen increment: die Steuervariable verändern Vergleich der Schreibweisen: int sum = ; int sum = ; int prod = 1 ; int prod = 1 ; int k = 1 ; while ( k <= n ) for ( int k = 1 ; k <= n ; ++k ) sum += a[ k ] ; sum += a[ k ] ; prod *= a[ k ] ; prod *= a[ k ] ; ++k ;

18.11.5 5 18.11.5 7 for ( int k = 1 ; k <= n ; ++k ) sum += a[ k ] ; prod *= a[ k ] ; Ähnlichkeit zur mathematischen Notation: sum = n a k prod = k=1 eine deklarierte Steuervariable gilt nur innerhalb des Schleifenblocks kein übrig gebliebener Wert außerhalb n k=1 Steuervariable darf im Schleifenblock nicht verändert werden! a k zyklische Vertauschung in einem eindimensionalen Array: gegeben: array[] = 4 12 35 66 81 97 gesucht: array[] = 12 35 66 81 97 4 public void rotate ( int array[] ) int firstelement = array[ ] ; for ( int i = 1 ; i < array.length ; ++i ) array[ i - 1 ] = array[ i ] ; array[ array.length - 1 ] = firstelement ; // end rotate() 18.11.5 6 18.11.5 8 zyklische Vertauschung in einem eindimensionalen Array: gegeben: array[] = 4 12 35 66 81 97 gesucht: array[] = 12 35 66 81 97 4 2. 3. 4. 5. 6. int[][] = new int[ 5 ][] ; // Init. der Gesamtreferenz for ( int i = ; i <.length ; ++ i ) int[] temp = new int[ i + 1 ] ; // Init. der Zeilenreferenzen for ( int j = ; j < temp.length ; ++j ) temp[ j ] = i + j ; // Init. der Werte [ i ] = temp ; // in Tabelle einhängen alloziert und initialisiert verschieden lange Arrays vom Typ int 1. 7. 1 2 2 3 4 3 4 5 6 4 5 6 7 8 überschaubares Bild: 1 2 2 3 4 3 4 5 6 4 5 6 7 8

18.11.5 9 jeder der Steuerteile darf auch leer sein, z.b.: int n = Integer.valueOf( args[ 1 ] ).intvalue() ; if ( n < 1 ) System.out.println( "eingegebene Zahl muss >= 1 sein!" ) ; else for ( ; n >= 1 ; --n )... for ( ; ; ) entspricht while ( true ) echte Endlosschleife 18.11.5 11 zwei Schleifen vorzeitig verlassen public boolean containsnegativeentry ( int array[][] ) boolean returnvalue = false ; for ( int i = ; i < array.length ; ++i ) for ( int j = ; j < array[ i ].length ; ++j ) if ( array[ i ][ j ] < ) returnvalue = true ; break ; // for ( j ) abbrechen if ( returnvalue ) break ; return returnvalue ; // for ( i ) abbrechen // end containsnegativeentry() 18.11.5 1 eine Schleife vorzeitig verlassen 18.11.5 12 sinnvolle Endlosschleife public boolean containsnegativeentry ( int array[] ) boolean returnvalue = false ; for ( int i = ; i < array.length ; ++i ) if ( array[ i ] < ) returnvalue = true ; break ; // for ( i ) abbrechen return returnvalue ; // end containsnegativeentry() Benutze break, um Schleifenbedingung in der Mitte zu prüfen, z.b.: while ( true ) int nvalue = readintfromuser() ; // int-wert einlesen if ( nvalue < ) break ;... // Signal: soll aufhören // while ( true ) beenden

18.11.5 13 einen Laufwert überspringen 18.11.5 15 break und continue Summe der Nichtdiagonalelemente bilden: array[4][4] = beziehen sich immer auf den innersten Schleifenblock werden beide nicht oft benötigt nur einsetzen, wenn wirklich sinnvoll ihren Sinn immer kommentieren! break ist jedoch obligatorisch in der switch-anweisung 18.11.5 14 einen Laufwert überspringen 18.11.5 16 Arrays in JAVA public void sumintodiagonal ( int array[][] ) for ( int i = ; i < array.length ; ++i ) a[ i ][ i ] = ; for ( int j = ; j < array[ i ].length ; ++j ) if ( j == i ) continue ; // restlichen for(j)-block überspringen a[ i ][ i ] += a[ i ][ j ] ; // end sumintodiagonal() Mathematik: indizierte Variablen z.b. bei Vektorkomponenten x i Folgegliedern a n indizierten Funktionswerten f k Permutationswerten π(i) JAVA: der Objekttyp Array Deklaration z.b. int a[] ; Definition z.b. int a[] = new int[ 3 ] ; Zugriff auf Wert durch []-Operator: a[ i ] Index ist allg. int-ausdruck: a[ 2 * i - 1 ] Arrayvariablen sind Referenztypen

18.11.5 17 Eigenschaften von Arrays 18.11.5 19 zweidimensionale Arrays können von jedem Typ angelegt werden, z.b. int[], double[], Complex[], String[], int[][] werden entsprechend ihres Typs per default initialisiert, z.b. int mit, double mit., Referenztypen mit null int[][] = new int[ 5 ][ 1 ] ; alloziert eine 5 1-Tabelle vom Eintragtyp int [] (1. Zeile) [1][6] [4] (5. Zeile) können bei Deklaration literal initialisiert werden, z.b. int a[] = 1, 2, 3, 4 ; 1 2 3 4 boolean b[] = true, false ; true false Speicherbild dazu: 1 1 1 1 [1][6] die Länge wird zur Laufzeit unveränderlich festgelegt [4] 18.11.5 18 Eigenschaften von Arrays 18.11.5 2 zweidimensionale Arrays Länge ist verfügbar durch Datum length, z.b. int a[] = new int[ 5 ] ; System.out.println( "Array a hat Länge " + a.length ) ; int[][] = new int[ 5 ][] ; alloziert ein Array der Länge 5 von Referenzen des Typs int[] "Array a hat Länge 5" der gültige Indexbereich ist immer,..., length - 1: int a[] = 3, -1 ; System.out.println( "Array a hat Werte " + a[ ] + " und " + a[ 1 ] ) ; "Array a hat Werte 3 und -1" die Referenzen sind alle mit null initialisiert der Index wird zur Laufzeit auf Gültigkeit geprüft

18.11.5 21 zweidimensionale Arrays int[][] = new int[ 5 ][] ; // Init. der Gesamtreferenz [ ] = new int[ 1 ] ; [ 1 ] = new int[ 2 ] ; [ 2 ] = new int[ 3 ] ; [ 3 ] = new int[ 4 ] ; [ 4 ] = new int[ 5 ] ; alloziert jeweils verschieden lange Arrays vom Typ int i = 3 überschaubares Bild: [3][1]