Programmiertechnik Felder (Arrays)

Größe: px
Ab Seite anzeigen:

Download "Programmiertechnik Felder (Arrays)"

Transkript

1 Programmiertechnik Felder (Arrays) Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1

2 Exkurs Code-Formatierung Gute Code-Formatierung ist das erste und einfachste Mittel, den Programmcode lesbarer (und damit besser wartbar) zu machen; spiegelt die logische Struktur des Programms im Layout wider; basiert im wesentlich auf guter Einrückung. Oliver Haase Hochschule Konstanz 2

3 Exkurs Code-Formatierung Gleichwertige Anweisungen Anweisungen, die auf derselben logischen Ebene stehen, d.h. Sequenzen von Anweisungen, stehen direkt untereinander: falsch: int i = 3; String s = "hallo, welt."; double prozentsatz; richtig: int i = 3; String s = "hallo, welt."; double prozentsatz; Oliver Haase Hochschule Konstanz 3

4 Exkurs Code-Formatierung Immer nur 1 Befehl pro Zeile! (sonst stünden auch gleichwertige Anweisungen nicht untereinander wie gefordert.) falsch: int a = i; i++; richtig: int a = i; i++; Oliver Haase Hochschule Konstanz 4

5 Exkurs Code-Formatierung Tieferstehende Anweisungen Anweisungen, die auf der nächst tieferen logischen Ebene stehen, werden um 1 Einheit eingerückt. Das können 2, 3 oder 4 Leerzeichen, oder ein Tabulatoreinrückung sein. Wichtig: konsistent einrücken! Die nächst tiefere Ebene wird eingeleitet durch: eine Klassendeklaration eine Methodendeklaration eine If-Anweisung eine Switch-Anweisung eine Schleife Oliver Haase Hochschule Konstanz 5

6 Exkurs Code-Formatierung Klassendeklaration Die Klassendeklaration steht eine Ebene höher als die Klassenkomponenten: falsch: public class MyClass { public static void main(string[] args) { richtig: public class MyClass { public static void main(string[] args) { Oliver Haase Hochschule Konstanz 6

7 Exkurs Code-Formatierung Methodendeklaration (bisher nur main) Die Signatur steht eine Ebene höher als der Methodenrumpf: deshalb z.b.: public class MyClass { public static void main(string[] args) { System.out.println( Hallo Welt"); Oliver Haase Hochschule Konstanz 7

8 Exkurs Code-Formatierung if-anweisung Die Bedingung und das Schlüsselwort else stehen eine Ebene höher als die Anweisungen: falsch: if ( i == 1 ) System.out.println("OK"); else i++; richtig: if ( i == 1 ) System.out.println("OK"); else i++; Oliver Haase Hochschule Konstanz 8

9 Exkurs Code-Formatierung noch besser: if ( i == 1 ) { System.out.println("OK"); else { i++; Oliver Haase Hochschule Konstanz 9

10 Exkurs Code-Formatierung Switch-Anweisung Das Schlüsselwort switch steht eine Ebene höher als das Schlüsselwort case, das wiederum eine Ebene höher steht als die Anweisungen: switch ( i ) { case 1: System.out.println("i ist 1"); break; case 2: System.out.println("i ist 2"); break; default: System.out.println("Defaultfall"); Oliver Haase Hochschule Konstanz 10

11 Exkurs Code-Formatierung Schleifen Der Schleifenkopf steht eine Ebene höher als der Schleifenrumpf: For-Schleife: for ( int i = 0; i < 10; i++ ) System.out.println(i); und for ( int i = 0; i < 10; i++ ){ System.out.println(i); System.out.println(2 * i); Oliver Haase Hochschule Konstanz 11

12 Exkurs Code-Formatierung While-Schleife: while ( i < 10 ) System.out.println(i++); und while ( i < 10 ) { System.out.println(i); i++; Oliver Haase Hochschule Konstanz 12

13 Exkurs Code-Formatierung Do-Schleife: do System.out.println(i++); while ( i < 10 ); und do { System.out.println(i); i++; while ( i < 10 ); Oliver Haase Hochschule Konstanz 13

14 Exkurs Code-Formatierung Klammerungsregel Sich öffnende geschweifte Klammern stehen am Ende des vorangehenden Befehls, sich schließende Klammern in einer eigenen Zeile. Letztere werden so eingerückt, dass sie mit dem Beginn der Zeile übereinstimmen, in der die zugehörige offene Klammer steht. Außer bei Do-Schleifen darf in dieser Zeile kein weiterer Befehl stehen. Oliver Haase Hochschule Konstanz 14

15 Exkurs Code-Formatierung Beispiel: public class MyClass { public static void main(string[] args) { int i = 0; while ( i < 10 ) { if ( i%3 == 0 ) { System.out.println("Dreierzahl: " + i); else { System.out.println("keine Dreierzahl"); i++; Oliver Haase Hochschule Konstanz 15

16 Exkurs-Ende Felder (Arrays) - diesmal wirklich - Oliver Haase Hochschule Konstanz 16

17 Was sind Referenzdatentypen? In Java gibt es 2 Arten von Datentypen: skalare Typen (Basistypen, einfache Datentypen): byte short int long float double char boolean Referenzdatentypen Oliver Haase Hochschule Konstanz 17

18 Was sind Referenzdatentypen? Referenzdatentypen erlauben es, aus vorhandenen Typen neue, komplexere, eigene Typen zu konstruieren Java kennt 2 Arten von Referenzdatentypen: Felder (Arrays) Klassen Variablen eines Referenzdatentyps sind keine direkten Werte, sondern Referenzen, d.h. sie verweisen nur auf die eigentlichen Werte. Oliver Haase Hochschule Konstanz 18

19 Speicherschema Situation: Ganzzahl-Variable b mit Wert 107, gespeichert in Zelle 94 Referenzvariable r, gespeichert in Zelle 101, verweist auf Zelle 123 Variablen Speicheradressen Hauptspeicher Datentyp b r 94: : : Ganzzahl Referenz (Adresse, Verweis) Oliver Haase Hochschule Konstanz 19

20 graphische Darstellung graphische Darstellung: Variable als Kästchen mit Variablennamen, ohne Speicheradresse Kästcheninhalt: für skalare Typen: Wert für Referenzen: Pfeil auf anderes (Speicher-)Kästchen: b 107 r zwei Referenzen r und s sind gleich, wenn sie auf denselben Speicher verweisen: r s Oliver Haase Hochschule Konstanz 20

21 Kalenderprogramm Aufgabe: Kalenderprogramm zur Verwaltung von Terminen Vereinfachung: Nur ein Wochentag (Montag) 00:00 01:00 02:00 03:00 04:00 05:00 06:00 07:00 08:00 09:00 10:00 11:00 Montag Mittagessen mit Kalle Aufgaben bearbeiten Sport der Wecker klingelt aufstehen Vorlesung schwänzen dösen 12:00 13:00 14:00 15:00 16:00 17:00 18:00 19:00 20:00 21:00 22:00 23:00 Oliver Haase Hochschule Konstanz 21

22 Kalenderprogramm Erste, umständliche, Realisierung (Warnung: 7 Seiten Programm!) public class UmstaendlicherKalender { public static void main(string[] args) { java.util.scanner scanner = new Java.util.Scanner(System.in); // fuer jede Stunde eine Variable String termin_00 = ""; String termin_01 = ""; String termin_02 = ""; String termin_03 = ""; String termin_04 = ""; String termin_05 = ""; String termin_06 = ""; String termin_07 = ""; Oliver Haase Hochschule Konstanz 22

23 Kalenderprogramm String termin_08 = ""; String termin_09 = ""; String termin_10 = ""; String termin_11 = ""; String termin_12 = ""; String termin_13 = ""; String termin_14 = ""; String termin_15 = ""; String termin_16 = ""; String termin_17 = ""; String termin_18 = ""; String termin_19 = ""; String termin_20 = ""; String termin_21 = ""; String termin_22 = ""; String termin_23 = ""; Oliver Haase Hochschule Konstanz 23

24 Kalenderprogramm // die Hauptschleife boolean fertig = false; while (!fertig) { // zuerst ein Auswahlmenue System.out.print("1 = neuer Eintrag\n" + "2 = Termine ausgeben\n" + "3 = beenden"); int auswahl = scanner.nextint(); // nun eine Fallunterscheidung switch (auswahl) { case 1: // neuen Termin eingeben System.out.print("Wieviel Uhr?"); int stunde = scanner.nextint(); System.out.print("Termin?"); String termin = scanner.next(); Oliver Haase Hochschule Konstanz 24

25 Kalenderprogramm switch (stunde) { case 0: termin_00 = termin; break; case 1: termin_01 = termin; break; case 2: termin_02 = termin; break; case 3: termin_03 = termin; break; case 4: termin_04 = termin; break; case 5: termin_05 = termin; break; case 6: termin_06 = termin; break; case 7: termin_07 = termin; break; case 8: termin_08 = termin; break; case 9: termin_09 = termin; break; case 10: termin_10 = termin; break; case 11: termin_11 = termin; break; case 12: termin_12 = termin; break; case 13: termin_13 = termin; break; Oliver Haase Hochschule Konstanz 25

26 Kalenderprogramm case 14: termin_14 = termin; break; case 15: termin_15 = termin; break; case 16: termin_16 = termin; break; case 17: termin_17 = termin; break; case 18: termin_18 = termin; break; case 19: termin_19 = termin; break; case 20: termin_20 = termin; break; case 21: termin_21 = termin; break; case 22: termin_22 = termin; break; case 23: termin_23 = termin; break; break; Oliver Haase Hochschule Konstanz 26

27 Kalenderprogramm case 2: // Termine ausgeben System.out.println(" 0h: " + termin_00); System.out.println(" 1h: " + termin_01); System.out.println(" 2h: " + termin_02); System.out.println(" 3h: " + termin_03); System.out.println(" 4h: " + termin_04); System.out.println(" 5h: " + termin_05); System.out.println(" 6h: " + termin_06); System.out.println(" 7h: " + termin_07); System.out.println(" 8h: " + termin_08); System.out.println(" 9h: " + termin_09); System.out.println("10h: " + termin_10); System.out.println("11h: " + termin_11); System.out.println("12h: " + termin_12); System.out.println("13h: " + termin_13); System.out.println("14h: " + termin_14); System.out.println("15h: " + termin_15); Oliver Haase Hochschule Konstanz 27

28 Kalenderprogramm System.out.println("16h: " + termin_16); System.out.println("17h: " + termin_17); System.out.println("18h: " + termin_18); System.out.println("19h: " + termin_19); System.out.println("20h: " + termin_20); System.out.println("21h: " + termin_21); System.out.println("22h: " + termin_22); System.out.println("23h: " + termin_23); System.out.println(" "); break; case 3: fertig = true; break; default: // falsche Zahl eingegeben System.out.println("Eingabefehler!"); Oliver Haase Hochschule Konstanz 28

29 Analyse Kalenderprogramm hat eine Länge von ca. 100 Zeilen Davon 72 Zeilen für Verwaltung der Termineinträge: 24 Zeilen für Variablendeklaration 24 Zeilen für Fallunterscheidung bei Termineingabe 24 Zeilen für Ausgabe der einzelnen Zeiten Kalender für ganzes Jahr: = Zeilen nur für Termineintragsverwaltung! Beobachtung: alle 24 Terminvariablen haben denselben Typ (String) denselben Namen bis auf einen Index zwischen 00 und 23. Oliver Haase Hochschule Konstanz 29

30 Felder Felder (engl: Arrays) erlauben, mehrere Variablen desselben Typs unter demselben Namen zusammenzufassen, und durch einen Index voneinander zu unterscheiden, etwa termine[0], termine[1],, termine[23]. Einzelnen Variablen eines Feldes heißen Komponenten. Index ist vom Typ int, es sind aber nur positive Werte erlaubt. Die erste Komponente eines Feldes hat immer den Index 0. Der Index einer Komponente beschreibt deren Position innerhalb des Feldes. Ein Feld kann auch als eindimensionale Tabelle aufgefasst werden. Oliver Haase Hochschule Konstanz 30

31 Felder termine Beispiel: Feld termine für vereinfachtes Kalender- Programm: termine[0]... termine[6]... termine[14]... termine[23] der Wecker klingelt Aufstehen Vorlesung schwänzen Mittagessen mit Kalle Aufgaben bearbeiten Sport dösen Oliver Haase Hochschule Konstanz 31

32 Felder Beispiel: Ausgabe des 6 Uhr Termins: System.out.println("6h: " + termine[6]); erzeugt die Bildschirmausgabe: Konsole 6h: der Wecker klingelt Beispiel: Ausgabe aller Termine: for ( int i = 0; i < 24; i++ ) { System.out.println(i + "h: " + termine[i]); Merke: die obige Verwendung einer Schleifenvariable als Index für ein Feld ist eine sehr häufige Programmiertechnik! Oliver Haase Hochschule Konstanz 32

33 Felddeklaration Syntaxregel <Komponententyp> [] <VariablenName>; erzeugt eine Referenzvariable mit Namen <VariablenName>, die auf ein Feld mit Komponententyp <Komponententyp> verweist. Merke: Die Felddeklaration erzeugt nicht das eigentliche Feld, nur eine Referenz auf ein Feld! Aus Kompatibilitätsgründen mit C/C++ können die Klammern auch nach dem Variablennamen stehen wird hier nicht verwendet. Oliver Haase Hochschule Konstanz 33

34 Felddeklaration Die Zeilen int[] feld1; double[] feld2; String[] feld3; int[] feld4; erzeugen 4 Referenzvariablen, aber noch keine eigentlichen Felder. Zu diesem Zeitpunkt ist noch nicht einmal festgelegt, wieviele Komponenten die Felder einmal haben sollen. feld1 Ein Komponentenzugriff, etwa feld1[0], ist zu diesem Zeitpunkt noch nicht möglich ( Kompilierfehler)! Oliver Haase Hochschule Konstanz 34

35 Felderzeugung Syntaxregel <VariablenName> = new <KomponentenTyp>[<Feldlaenge>]; Beispiel: Die Zeilen feld1 = new int[4]; feld2 = new double[2]; feld3 = new String[4]; feld4 = new int[5]; erzeugen 4 Felder der geeigneten Typen und setzen die Referenzen entsprechend. feld Die einzelnen Komponenten sind noch nicht mit Startwerten belegt! Oliver Haase Hochschule Konstanz 35

36 Feldinitialisierung Die einzelnen Komponenten eines Feldes können durch einfache Wertzuweisungen initialisiert werden: Syntaxregel <VariablenName>[<Index>] = <Wert>; Bei regelmäßigen Werten geschieht dies meistens in einer Schleife: for ( int i = 0; i < 4; i++ ) { feld1[i] = 2 * i + 1; feld Oliver Haase Hochschule Konstanz 36

37 Feldinitialisierung Alternativ kann ein Feld gleichzeitig deklariert, erzeugt und initialisiert werden: int[] feld1 = {1, 6, 4, 7; double[] feld2 = {3.14, ; String[] feld3 = {"Hallo", "dies", "ist ein", "Feld"; der Klammerausdruck heißt Feldinitialisierer. Hierbei ergibt sich die Feldlänge automatisch aus der Anzahl der Startwerte. Diese Schreibweise ist vor allem geeignet für Felder, die nicht zu lang sind; deren Komponenten keinen regelmäßigen Gesetzmäßigkeiten folgen. Oliver Haase Hochschule Konstanz 37

38 Kalenderprogramm Vereinfachte Realisierung mit Feldern: public class EinfacherKalender { public static void main(string[] args) { java.util.scanner scanner = new Java.util.Scanner(System.in); // ein Feld fuer den ganzen Tag String[] termine = new String[24]; for ( int i = 0; i < 24; i++ ) { termine[i] = ""; Oliver Haase Hochschule Konstanz 38

39 Kalenderprogramm Vereinfachte Realisierung mit Feldern: // die Hauptschleife boolean fertig = false; while (!fertig) { // zuerst ein Auswahlmenue System.out.print("1 = neuer Eintrag\n" + "2 = Termine ausgeben\n" + "3 = beenden"); int auswahl = scanner.nextint(); switch (auswahl) { case 1: // neuen Termin eingeben System.out.print("Wieviel Uhr?"); int stunde = scanner.nextint(); System.out.print("Termin?"); termin[stunde] = scanner.next(); break; Oliver Haase Hochschule Konstanz 39

40 Kalenderprogramm case 2: // Termine ausgeben for ( int i = 0; i < 24; i++ ) { System.out.println(i + "h: " + termine[i]); System.out.println(" "); break; case 3: fertig = true; break; default: // falsche Zahl eingegeben System.out.println("Eingabefehler!"); Programmlänge reduziert von ca. 100 auf 35 Zeilen! Oliver Haase Hochschule Konstanz 40

41 Feldlänge Felder kennen ihre eigene Länge. Syntaxregel <VariablenName>.length Das ist praktisch z.b. wenn die Länge erst zur Laufzeit vom Benutzer eingegeben wird; eine Feld mit Hilfe eines Feldinitialisierers deklariert und initialisiert wird; ein Feld als Parameter in eine Methode übergeben wird. Beispiel: String[] feld = {"Hallo", "dies", "ist ein", "Feld"; for ( int i = 0; i < feld.length; i++ ) { System.out.println(feld[i]); Oliver Haase Hochschule Konstanz 41

42 Feldlänge Es ist guter, defensiver Programmierstil, die Feldlänge abzufragen anstatt sie direkt zu verwenden. Beispiel: Welches der folgenden Programme ist besser? Warum? String[] feld = {"Hallo", "dies", "ist ein", "Feld"; for ( int i = 0; i < feld.length; i++ ) { System.out.println(feld[i]); oder String[] feld = {"Hallo", "dies", "ist ein", "Feld"; for ( int i = 0; i < 4; i++ ) { System.out.println(feld[i]); Oliver Haase Hochschule Konstanz 42

43 Referenzzuweisungen Betrachte folgendes einfaches Programmfragment: System.out.print("Zahl: "); int wert = scanner.nextint(); // kopiere wert in eine neue Variable int wert2 = wert; // verdopple die neue Variable wert2 *= 2; // Ausgabe System.out.println("Die Zahl " + wert + " ergibt verdoppelt " + wert2); Konsole Zahl: 17 Die Zahl 17 ergibt verdoppelt 34 Oliver Haase Hochschule Konstanz 43

44 Referenzzuweisungen Erweiterte Version für ein Zahlenfeld: int[] werte = new int[3]; for ( int i = 0; i < werte.length; i++ ) { System.out.print("Zahl Nr. " + i + ": "); werte[i] = scanner.nextint(); // kopiere Feld und verdopple die Eintraege int[] werte2 = werte; for ( int i = 0; i < werte2.length; i++ ) { werte2[i] *= 2; // Ausgabe for ( int i = 0; i < werte.length; i++ ) { System.out.println("Die Zahl " + werte[i] + " ergibt verdoppelt " + werte2[i]); Oliver Haase Hochschule Konstanz 44

45 Referenzzuweisungen Ausführen des erweiterten Programms: Konsole Zahl Nr. 0: 1 Zahl Nr. 1: 2 Zahl Nr. 2: 3 Die Zahl 2 ergibt verdoppelt 2 Die Zahl 4 ergibt verdoppelt 4 Die Zahl 6 ergibt verdoppelt 6 Was ist da schiefgegangen? Oliver Haase Hochschule Konstanz 45

46 Referenzzuweisungen Graphische Speicherdarstellung int[] werte = new int[3]; werte[0] = 1; werte[1] = 2; werte[2] = 3; werte werte werte2 = werte; werte2[0] *= 2; werte2[1] *= 2; Nur die Referenzvariable wird kopiert, nicht das eigentliche Feld! Jede Änderung an einer der beiden Variablen ändert auch die andere! werte2[2] *= 2; Oliver Haase Hochschule Konstanz 46

47 Kopieren eines Feldes Kopieren eines Feldes (nicht nur Referenzvariable) erfordert etwas Handarbeit: Das neue Feld muss nicht nur deklariert, sondern auch erzeugt werden: int[] werte2 = new int[werte.length]; Die einzelnen Komponenten müssen vom alten in das neue Feld kopiert werden. Dazu gibt es 3 Möglichkeiten: 1. per Hand in einer Schleife 2. Verwendung der Java-Methode System.arraycopy 3. Verwendung der clone-methode. Diese Option wird noch nicht besprochen. Oliver Haase Hochschule Konstanz 47

48 Kopieren eines Feldes Kopieren der Feldkomponenten in einer Schleife: for ( int i = 0; i < werte.length; i++ ) { werte2[i] = werte[i]; Oliver Haase Hochschule Konstanz 48

49 Kopieren eines Feldes Verwendung der Java-Methode System.arraycopy: Syntaxregel System.arraycopy(<Quelle>, <QuellStartIndex>, <Ziel>, <ZielStartIndex>, <Anzahl>); kopiert <Anzahl> Komponenten von Feld <Quelle>, beginnend bei Index <QuellStartIndex> nach Feld <Ziel>, beginnend mit Index <ZielStartIndex>. Beispiel: System.arraycopy(werte, 0, werte2, 0, werte.length); Oliver Haase Hochschule Konstanz 49

50 Vergleich von Referenzen Was gibt das folgende Programm aus und warum? int[] werte = {1, 2, 3; int[] werte2 = new int[werte.length]; for ( int i = 0; i < werte.length; i++ ) { werte2[i] = werte[i]; if ( werte == werte2 ) { System.out.println("Gleichheit"); else { System.out.println("Ungleichheit"); Oliver Haase Hochschule Konstanz 50

51 Vergleich von Referenzen Ungleichheit Konsole Was verglichen wird, sind die Referenzen, und die sind unterschiedlich! Oliver Haase Hochschule Konstanz 51

52 Mehrdimensionale Felder Aufgabe: erweitere Kalenderprogramm so, dass Termine eines ganzen Monats (Januar) verwaltet werden. Tag 1 Tag 2 Tag 31 00:00 01:00 02:00 03:00 04:00 05:00 06:00 07:00 21:00 22:00 23:00... Oliver Haase Hochschule Konstanz 52

53 Mehrdimensionale Felder Lösung: Feld von Feldern mehrdimensionales Feld genauer: Feld mit (31) Komponenten des Typs Feld mit (24) Komponenten des Typs String. Deklaration: Verschachtelte Anwendung der Syntaxregel Syntaxregel <Komponententyp> [] <VariablenName>; ergibt <Feld mit Komponenten des Typs String>[] termine; String[][] termine; erzeugt: termine Oliver Haase Hochschule Konstanz 53

54 Mehrdimensionale Felder 2. Schritt Feld erzeugen: termine = new String[31][]; erzeugt: termine termine[0] termine[1] termine[30] Merke: Die Länge des äußeren Felds wird im linken Klammernpaar angegeben. Oliver Haase Hochschule Konstanz 54

55 Mehrdimensionale Felder 3. Schritt Innere Felder erzeugen: for ( int i = 0; i < termine.length; i++ ) { termine[i] = new String[24]; for ( int j = 0; j < termine[i].length; j++ ) { termine[i][j] = ""; erzeugt: termine[0] termine[1] termine[30] termine termine[0][0] termine[0][1] termine[0][2]. termine[0][23]... Oliver Haase Hochschule Konstanz 55

56 Mehrdimensionale Felder Zugriff auf mehrdimensionale Felder: termine[i] bezeichnet die i-te Komponente des äußeren Felds, d.h. die i-te Spalte einer zweidimensionalen Tabelle. Diese Komponente ist selbst ein Feld von 24 Strings. termine[i].length gibt die Länge der i-ten Komponente (Spalte) an. termine[i][j] bezeichnet den j-ten Eintrag in der i-ten Spalte. Der Ausdruck termine[1][7] = "Fruehstueck"; weist dem 7h Termin am Tag 2 den Eintrag "Fruehstueck" zu. Oliver Haase Hochschule Konstanz 56

57 Kalenderprogramm Erweiterte Version für einen ganzen Monat: public class ErweiterterKalender { public static void main(string[] args) { java.util.scanner scanner = new Java.util.Scanner(System.in); int tag; // ein Feld fuer den ganzen Monat String[][] termine = new String[31][]; for ( int i = 0; i < termine.length; i++ ) { termine[i] = new String[24]; for ( int j = 0; j < termine[i].length; j++ ) { termine[i][j] = ""; Oliver Haase Hochschule Konstanz 57

58 Kalenderprogramm // die Hauptschleife boolean fertig = false; while (!fertig) { // zuerst ein Auswahlmenue System.out.print("1 = neuer Eintrag\n" + "2 = Termine ausgeben\n" + "3 = beenden"); int auswahl = scanner.nextint(); Oliver Haase Hochschule Konstanz 58

59 Kalenderprogramm // nun eine Fallunterscheidung switch (auswahl) { case 1: // neuen Termin eingeben System.out.print("Welcher Tag?"); tag = scanner.nextint(); System.out.print("Wieviel Uhr?"); int stunde = scanner.nextint(); System.out.print("Termin?"); termin[tag -1][stunde] = scanner.next(); break; Oliver Haase Hochschule Konstanz 59

60 Kalenderprogramm case 2: // Termine ausgeben System.out.print("Welcher Tag?"); tag = scanner.nextint(); for (int i = 0; i<termine[tag-1].length; i++) { System.out.println(i + "h: " + termine[tag-1][i]); System.out.println(" "); break; case 3: fertig = true; break; default: // falsche Zahl eingegeben System.out.println("Eingabefehler!"); Oliver Haase Hochschule Konstanz 60

61 Mehrdimensionale Felder Vereinfachte Deklaration Anstelle von int[][] table; table = new int[2][]; for ( int i = 0; i < table.length; i++ ) { table[i] = new int[3]; kann auch die folgende Kurzschreibweise verwendet werden: int[][] table = new int[2][3]; Merke: Das funktioniert nur wenn alle inneren Felder dieselbe Länge haben bei sogenannten rechteckigen Feldern. Oliver Haase Hochschule Konstanz 61

62 Kopieren mehrdimensionaler Felder Aufgabe: Kopiere zweidimensionales Feld int[][] table in ein neues zweidimensionales Feld int[][] newtable. 1. Lösungsversuch: int[][] newtable = new int[2][3]; newtable = table; 1. Zeile legt neues zweidimensionales Feld an, aber nach 2. Zeile verweist Referenzvariable newtable auf dasselbe Feld wie Referenzvariable table. führt keine Feldkopie durch! Oliver Haase Hochschule Konstanz 62

63 Kopieren mehrdimensionaler Felder 2. Lösungsversuch: int[][] newtable = new int[2][3]; for ( int i = 0; i < newtable.length; i++ ) { newtable[i] = table[i]; 1. Zeile legt neues zweidimensionales Feld an, aber nach Schleife verweisen alle inneren Referenzvariablen auf die Spalten in der alten Tabelle table. führt nur flache Kopie durch; nicht ausreichend! Oliver Haase Hochschule Konstanz 63

64 Kopieren mehrdimensionaler Felder 3. Lösungsversuch: int[][] newtable = new int[2][3]; for ( int i = 0; i < newtable.length; i++ ) { for ( int j = 0; j < newtable[i].length; j++ ) { newtable[i][j] = table[i][j]; führt gewünschte "tiefe Kopie" durch! Oliver Haase Hochschule Konstanz 64

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 5 Referenzdatentypen - Felder... 5-2 5.1 Eindimensionale Felder - Vektoren... 5-3 5.1.1 Vereinbarung... 5-3 5.1.2 Referenzen sind keine Felder... 5-4 5.1.3 Kopieren eindimensionaler Felder... 5-6

Mehr

Programmieren I + II Regeln der Code-Formatierung

Programmieren I + II Regeln der Code-Formatierung Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme WS 2016/2017, SS 2017 Programmieren I + II Regeln der Code-Formatierung In diesem Dokument finden

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 26 Einstieg in die Informatik mit Java Felder Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Was sind Felder? 2 Vereinbarung von Feldern 3 Erzeugen von Feldern

Mehr

RO-Tutorien 3 / 6 / 12

RO-Tutorien 3 / 6 / 12 RO-Tutorien 3 / 6 / 12 Tutorien zur Vorlesung Rechnerorganisation Christian A. Mandery WOCHE 2 AM 06./07.05.2013 KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 26 Einstieg in die Informatik mit Java Felder, mehrdimensional Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Überblick: mehrdimensionale Felder 2 Vereinbarung

Mehr

Programmiertechnik Klassenmethoden

Programmiertechnik Klassenmethoden Programmiertechnik Klassenmethoden Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Motivation Programm zur Berechung von public class Eval1 { public static void main(string[] args) { java.util.scanner

Mehr

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

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Klassenmethoden Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer Programmiertechnik Klassenmethoden Motivation Programm zur Berechnung von public class Eval1 { public static void main(string[] args) { java.util.scanner

Mehr

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

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

Mehr

3. Anweisungen und Kontrollstrukturen

3. Anweisungen und Kontrollstrukturen 3. Kontrollstrukturen Anweisungen und Blöcke 3. Anweisungen und Kontrollstrukturen Mit Kontrollstrukturen können wir den Ablauf eines Programmes beeinflussen, z.b. ob oder in welcher Reihenfolge Anweisungen

Mehr

PROGRAMMIERUNG IN JAVA

PROGRAMMIERUNG IN JAVA PROGRAMMIERUNG IN JAVA ZUWEISUNGEN (1) Deklaration nennt man die Ankündigung eines Platzhalters (Variablen) und Initialisierung die erste Wertvergabe bzw. die konkrete Erstellung des Platzhalters. In einem

Mehr

Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe

Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Was sind Operatoren? Ein Operator ist eine in die Programmiersprache eingebaute Funktion,

Mehr

Primitive Datentypen

Primitive Datentypen Primitive Datentypen 2 Arten von Datentypen: primitive Datentypen (heute) Objekte (später) Java ist streng typisiert, d.h. für jede Variable muß angegeben werden was für eine Art von Wert sie aufnimmt.

Mehr

+ C - Array (Vektoren, Felder)

+ C - Array (Vektoren, Felder) + C - Array (Vektoren, Felder) Eindimensionale Arrays Beim Programmieren steht man oft vor dem Problem, ähnliche, zusammengehörige Daten (vom gleichen Datentyp) zu speichern. Wenn man zum Beispiel ein

Mehr

620.900 Propädeutikum zur Programmierung

620.900 Propädeutikum zur Programmierung 620.900 Propädeutikum zur Programmierung Andreas Bollin Institute für Informatik Systeme Universität Klagenfurt Andreas.Bollin@uni-klu.ac.at Tel: 0463 / 2700-3516 Arrays Wiederholung (1/5) Array = GEORDNETE

Mehr

Tutorium Rechnerorganisation

Tutorium Rechnerorganisation Woche 2 Tutorien 3 und 4 zur Vorlesung Rechnerorganisation 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu

Mehr

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

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form

Mehr

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015 Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 4, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)

Mehr

Algorithmen und Programmierung II

Algorithmen und Programmierung II Algorithmen und Programmierung II Vererbung Prof. Dr. Margarita Esponda SS 2012 1 Imperative Grundbestandteile Parameterübergabe String-Klasse Array-Klasse Konzepte objektorientierter Programmierung Vererbung

Mehr

AuD-Tafelübung T-B5b

AuD-Tafelübung T-B5b 6. Übung Sichtbarkeiten, Rekursion, Javadoc Di, 29.11.2011 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit 3 Stack und Heap Stack Heap 4 Blatt 6 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit

Mehr

Objektorientierte Programmierung OOP Programmieren mit Java

Objektorientierte Programmierung OOP Programmieren mit Java 4 Datenfelder, Parameterübergabe, Casting Objektorientierte Programmierung OOP Programmieren mit Java 4 Datenfelder, Parameterübergabe, Casting 4 Datenfelder, Parameterübergabe, Casting 4.1 Datenfelder

Mehr

Welche Informatik-Kenntnisse bringen Sie mit?

Welche Informatik-Kenntnisse bringen Sie mit? Welche Informatik-Kenntnisse bringen Sie mit? So gehen Sie vor! Lösen Sie die Aufgaben der Reihe nach von 1 bis 20, ohne das Lösungsblatt zur Hilfe zu nehmen. Der Schwierigkeitsgrad der Aufgaben nimmt

Mehr

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

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8 Java 8 Elmar Fuchs Grundlagen Programmierung 1. Ausgabe, Oktober 2014 JAV8 5 Java 8 - Grundlagen Programmierung 5 Kontrollstrukturen In diesem Kapitel erfahren Sie wie Sie die Ausführung von von Bedingungen

Mehr

Modellierung und Programmierung 1

Modellierung und Programmierung 1 Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 19. November 2015 Gültigkeitsbereich (Scope) von Variablen { int m; {

Mehr

5.4 Klassen und Objekte

5.4 Klassen und Objekte 5.4 Klassen und Objekte Zusammenfassung: Projekt Figuren und Zeichner Figuren stellt Basisklassen für geometrische Figuren zur Verfügung Zeichner bietet eine übergeordnete Klasse Zeichner, welche die Dienstleistungen

Mehr

Ein erstes Java-Programm

Ein erstes Java-Programm Ein erstes Java-Programm public class Rechnung { public static void main (String [] arguments) { int x, y; x = 10; y = -1 + 23 * 33 + 3 * 7 * (5 + 6); System.out.print ("Das Resultat ist "); System.out.println

Mehr

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

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML. JavaScript JavaScript wird direkt in HTML-Dokumente eingebunden. Gib folgende Zeilen mit einem Texteditor (Notepad) ein: (Falls der Editor nicht gefunden wird, öffne im Browser eine Datei mit der Endung

Mehr

Java Einführung Klassendefinitionen

Java Einführung Klassendefinitionen Java Einführung Klassendefinitionen Inhalt dieser Einheit Java-Syntax Klassen definieren Objekte instanziieren Instanzvariable deklarieren Klassenvariable deklarieren 2 Klassen definieren In der Problemanalyse

Mehr

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Blöcke. Beispiel: Variablen in Blöcken

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Blöcke. Beispiel: Variablen in Blöcken 4 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Blöcke Blöcke erweitern einzelne Anweisungen, etwa bei Kontrollstrukturen später Beispiel: Einzelne Anweisung: anweisung; Erweiterung

Mehr

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

S. d. I.: Programieren in C Folie 4-1. im Gegensatz zu Pascal gibt es in C kein Schlüsselwort then S. d. I.: Programieren in C Folie 4-1 4 Anweisungen 4.1 if-anweisung 1) if (Ausdruck) 2) if (Ausdruck) } else im Gegensatz zu Pascal gibt es in C kein Schlüsselwort "then" es wird nur der numerische Wert

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung 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

Mehr

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden. Grundwissen Informatik Objekt Attribut Methoden Als Objekte bezeichnet man alle Gegenstände, Dinge, Lebewesen, Begriffe oder Strukturen unserer Welt ( Autos, Räume, Bakterien, Lehrer, Schüler, Kunden,

Mehr

Objektorientierte Programmierung OOP Programmieren mit Java

Objektorientierte Programmierung OOP Programmieren mit Java Übungen: 6 Schleifen Objektorientierte Programmierung OOP Programmieren mit Java 1. do-schleife 2. while-schleife 3. a) c) Verschiedene for-schleifen 6 Schleifen Übungen 4. for-schleife: halber Tannenbaum

Mehr

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen

Mehr

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

HEUTE. Effizienzbeispiel: bekannte Version (Übung 04.11.04) Mathematik: Was ist Effizienz? vollständige Induktion 17.11.04 1 HEUTE 17.11.04 3 Effizienzbeispiel: bekannte Version (Übung 04.11.04) Mathematik: was ist Effizienz? vollständige Induktion JAVA: Arrays die for -Schleife die Sprunganweisungen break und continue

Mehr

Kapitel 3: Variablen

Kapitel 3: Variablen Kapitel 3: Variablen Thema: Programmieren Seite: 1 Kapitel 3: Variablen Im letzten Kapitel haben wir gelernt, bestimmte Ereignisse zu wiederholen solange eine Bedingung erfüllt ist. Nun möchten wir aber

Mehr

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden Javaprogrammierung mit NetBeans Variablen, Datentypen, Methoden Programmieren 2 Java Bezeichner Bezeichner: Buchstabe _ $ Buchstabe _ $ Ziffer Groß- und Kleinbuchstaben werden strikt unterschieden. Schlüsselwörter

Mehr

Programmierung mit C Zeiger

Programmierung mit C Zeiger Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch

Mehr

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

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

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 02: Klassen & Objekte Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Klassen Grundstruktur einer Java-Klasse Eigenschaften (Attribute) Variablen

Mehr

Programmieren I. Kontrollstrukturen. Heusch 8 Ratz 4.5. www.kit.edu. Institut für Angewandte Informatik

Programmieren I. Kontrollstrukturen. Heusch 8 Ratz 4.5. www.kit.edu. Institut für Angewandte Informatik Programmieren I Kontrollstrukturen Heusch 8 Ratz 4.5 KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Arten von Kontrollstrukturen

Mehr

Einfache Rechenstrukturen und Kontrollfluss II

Einfache Rechenstrukturen und Kontrollfluss II Einfache Rechenstrukturen und Kontrollfluss II Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer http://www.pst.informatik.uni-muenchen.de/lehre/ss06/infoii/ SS 06 Ziele Lernen imperative

Mehr

Schleifen in C/C++/Java

Schleifen in C/C++/Java Schleifen in C/C++/Java Alle 3 Sprachen stellen mindestens die folgenden 3 Schleifenkonstruktionen zur Verfügung. In C gibt es auch keine weiteren, C++, Java und C# haben noch weitere nützliche Varianten.

Mehr

GI Vektoren

GI Vektoren Vektoren Problem: Beispiel: viele Variablen vom gleichen Typ abspeichern Text ( = viele char-variablen), Ergebnisse einer Meßreihe ( = viele int-variablen) hierfür: Vektoren ( = Arrays = Feld ) = Ansammlung

Mehr

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel.

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel. Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 7, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)

Mehr

JAVA-Datentypen und deren Wertebereich

JAVA-Datentypen und deren Wertebereich Folge 8 Variablen & Operatoren JAVA 8.1 Variablen JAVA nutzt zum Ablegen (Zwischenspeichern) von Daten Variablen. (Dies funktioniert wie beim Taschenrechner. Dort können Sie mit der Taste eine Zahl zwischenspeichern).

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

Datenbankanwendungsprogrammierung Crashkurs Java

Datenbankanwendungsprogrammierung Crashkurs Java Datenbankanwendungsprogrammierung Crashkurs Java Denny Priebe Datenbankanwendungsprogrammierung p. Unterschiede zu C, C++ typedefs, Präprozessor Strukturen, Unions globale Funktionen Mehrfachvererbung

Mehr

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Inhalt dieser Einheit Variablen (Sinn und Aufgabe) Bezeichner Datentypen, Deklaration und Operationen Typenumwandlung (implizit/explizit) 2 Variablen

Mehr

Einführung in die Programmierung 1

Einführung in die Programmierung 1 Einführung in die Programmierung 1 Einführung (S.2) Einrichten von Eclipse (S.4) Mein Erstes Programm (S.5) Hallo Welt!? Programm Der Mensch (S.11) Klassen (S.12) Einführung Wie Funktioniert Code? Geschriebener

Mehr

Selbsteinstufungstest Vorkurs Programmieren

Selbsteinstufungstest Vorkurs Programmieren VPR Selbsteinstufungstest Vorkurs Programmieren Zeit 90 Minuten Aufgabe 1: Einzigartig (10 Punkte) Schreiben Sie eine Methode die angibt, ob ein String str1 in einem zweiten String str2 genau einmal vorkommt.

Mehr

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

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative student"

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 03: Wiederholung und Nutzereingaben Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Wiederholung Klassen, Objekte, Attribute und Methoden

Mehr

Elementare Datentypen in C++

Elementare Datentypen in C++ Elementare Datentypen in C++ bool signed/unsigned char signed/unsigned short int signed/unsigned int signed/unsigned long int (signed/unsigned long long int) float double long double void enum char Der

Mehr

Java Einführung ABLAUFSTEUERUNG Kapitel 3 und 4

Java Einführung ABLAUFSTEUERUNG Kapitel 3 und 4 Java Einführung ABLAUFSTEUERUNG Kapitel 3 und 4 Inhalt dieser Einheit Merkmale und Syntax der verschiedenen Kontrollstrukturen: if else switch while do while for break, continue EXKURS: Rekursion 2 Kontrollstrukturen

Mehr

Primitive Datentypen und Felder (Arrays)

Primitive Datentypen und Felder (Arrays) Primitive Datentypen und Felder (rrays) Primitive Datentypen Java stellt (genau wie Haskell) primitive Datentypen für Boolesche Werte, Zeichen, ganze Zahlen und Gleitkommazahlen zur Verfügung. Der wichtigste

Mehr

5. Tutorium zu Programmieren

5. Tutorium zu Programmieren 5. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by IPD Snelting

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Vordefinierte Datentypen Übersicht 1 Ganzzahlige Typen 2 Boolscher Typ 3 Gleitkommatypen 4 Referenztypen 5 void Typ 6 Implizite und explizite Typumwandlungen Ganzzahlige Typen Die

Mehr

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

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2 Fakultät Verkehrswissenschaften Friedrich List, Professur für Verkehrsbetriebslehre und Logistik Modul Entscheidungsunterstützung in der Logistik Einführung in die Programmierung mit C++ Übung 2 SS 2016

Mehr

Grundlagen der Informatik Enums, Strings und Arrays

Grundlagen der Informatik Enums, Strings und Arrays Grundlagen der Informatik Enums, Strings und Arrays Prof. Dr. Bernhard Schiefer (basierend auf Unterlagen von Prof. Dr. Duque-Antón) bernhard.schiefer@fh-kl.de http://www.fh-kl.de/~schiefer Inhalt Aufzählungen

Mehr

JAVA - Methoden

JAVA - Methoden Übungen Informatik I JAVA - http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 Folie 1 sind eine Zusammenfassung von Deklarationen und Anweisungen haben einen Namen und können

Mehr

Programmiervorkurs. Organisation: Steffen Gebert, Alexander Wolff. Tutoren: Jürgen Zöller, Jonathan Stoll. Wintersemester 2012/2013

Programmiervorkurs. Organisation: Steffen Gebert, Alexander Wolff. Tutoren: Jürgen Zöller, Jonathan Stoll. Wintersemester 2012/2013 Programmiervorkurs Wintersemester 2012/2013 Organisation: Steffen Gebert, Alexander Wolff Tutoren: Jürgen Zöller, Jonathan Stoll Kontakt (für Organisatorisches, Fehler auf Folien...): Steffen Gebert steffen.gebert@informatik.uni-wuerzburg.de

Mehr

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

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung Übersicht 3.1 Modell Konto 3.2 Modell Konto - Erläuterungen 3.3 Benutzer Ein- und Ausgabe mit Dialogfenster I 3.4 Benutzer Ein- und Ausgabe mit Dialogfenster II 3.5 Klassen- und Objekteigenschaften des

Mehr

6 Speicherorganisation

6 Speicherorganisation Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen Speicherbereich für

Mehr

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

Programmieren I. Kontrollstrukturen Heusch 8 Ratz Institut für Angewandte Informatik Programmieren I Kontrollstrukturen Heusch 8 Ratz 4.5 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Arten von Kontrollstrukturen Neben der Aneinanderreihung von Anweisungen (Sequenz)

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags Pommes... Praktikum A 230 C 207 (Madeleine) F 112 F 113 (Kevin) E

Mehr

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

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7 Java 7 Elmar Fuchs Grundlagen Programmierung 1. Ausgabe, Dezember 2011 JAV7 5 Java 7 - Grundlagen Programmierung 5 Kontrollstrukturen In diesem Kapitel erfahren Sie wie Sie die Ausführung von von Bedingungen

Mehr

Wiederholung Wozu Methoden? Methoden Schreiben Methoden Benutzen Rekursion?! Methoden. Javakurs 2012, 3. Vorlesung

Wiederholung Wozu Methoden? Methoden Schreiben Methoden Benutzen Rekursion?! Methoden. Javakurs 2012, 3. Vorlesung Wiederholung Wozu? Schreiben Benutzen Rekursion?! Javakurs 2012, 3. Vorlesung maggyrz@freitagsrunde.org 5. März 2013 Wiederholung Wozu? Schreiben Benutzen Rekursion?! 1 Wiederholung 2 Wozu? 3 Schreiben

Mehr

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

Java - Schleifen. Bedingung. wiederhole. Anweisung Anweisung Anweisung. Leibniz Universität IT Services Anja Aue Java - Schleifen Bedingung wiederhole ja Anweisung Anweisung Anweisung Leibniz Universität Anja Aue Schleifen Iterationsanweisungen. Wiederholung von Anweisung in Abhängigkeit einer Bedingung. Eine Verschachtelung

Mehr

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3.

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3. Hello World Javakurs 2014, 1. Vorlesung Sebastian Schuck basierend auf der Vorlage von Arne Kappen wiki.freitagsrunde.org 3. März 2014 This work is licensed under the Creative Commons Attribution-ShareAlike

Mehr

Objektorientierte Programmierung OOP Programmieren mit Java

Objektorientierte Programmierung OOP Programmieren mit Java Objektorientierte Programmierung OOP Programmieren mit Java 5.1 Elementare Anweisungen 5.1.1 Ausdrucksanweisung 5.1.2 Leere Anweisung 5.1.3 Blockanweisung 5.1.4 Variablendeklaration 5.2 Bedingungen 5.2.1

Mehr

Prof. H. Herbstreith Fachbereich Informatik. Leistungsnachweis. Informatik 1 WS 2001/2002

Prof. H. Herbstreith Fachbereich Informatik. Leistungsnachweis. Informatik 1 WS 2001/2002 Prof. H. Herbstreith 30.01.2002 Fachbereich Informatik Leistungsnachweis Informatik 1 WS 2001/2002 Bearbeitungszeit 120 Minuten. Keine Hilfsmittel erlaubt. Aufgabe 1: 20 Punkte Vervollständigen Sie folgende

Mehr

Einführung in die Informatik für Hörer aller Fakultäten II. Andreas Podelski Stephan Diehl Uwe Waldmann

Einführung in die Informatik für Hörer aller Fakultäten II. Andreas Podelski Stephan Diehl Uwe Waldmann Einführung in die Informatik für Hörer aller Fakultäten II Andreas Podelski Stephan Diehl Uwe Waldmann 1 Einführung in die Informatik für Hörer aller Fakultäten II Andreas Podelski Stephan Diehl Uwe Waldmann

Mehr

Felder (1) Allgemeines

Felder (1) Allgemeines Felder (1) Allgemeines Gleichartige Daten, wie Tabelle von Zahlen, Datumswerten, Namen etc. Felder (engl. Array) stellen einen Verbundtyp dar, in dem mehrere Daten desselben Typs gespeichert werden Oft

Mehr

Einführung in den Einsatz von Objekt-Orientierung mit C++ I

Einführung in den Einsatz von Objekt-Orientierung mit C++ I Einführung in den Einsatz von Objekt-Orientierung mit C++ I ADV-Seminar Leiter: Mag. Michael Hahsler Syntax von C++ Grundlagen Übersetzung Formale Syntaxüberprüfung Ausgabe/Eingabe Funktion main() Variablen

Mehr

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

1. Der Einstieg in Java. Was heißt Programmieren? 1. Der Einstieg in Java Lernziele: Am Ende dieses Kapitels sollen Sie wissen, aus welchen Bestandteilen ein Java-Programm besteht, Java-Programme übersetzen und ausführen können, Möglichkeiten der Kommentierung

Mehr

Einführung in die Programmierung Wintersemester 2011/12

Einführung in die Programmierung Wintersemester 2011/12 Einführung in die Programmierung Wintersemester 2011/12 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund : Kontrollstrukturen Inhalt Wiederholungen - while

Mehr

Modul 122 VBA Scribt.docx

Modul 122 VBA Scribt.docx Modul 122 VBA-Scribt 1/5 1 Entwicklungsumgebung - ALT + F11 VBA-Entwicklungsumgebung öffnen 2 Prozeduren (Sub-Prozeduren) Eine Prozedur besteht aus folgenden Bestandteilen: [Private Public] Sub subname([byval

Mehr

Zeichendarstellung. Zeichen sind Zahlen (in C) Zeichen und switch

Zeichendarstellung. Zeichen sind Zahlen (in C) Zeichen und switch darstellung Arbeiten mit darstellung werden im Computer durch (kleine) Zahlen dargestellt in C können im Datentyp char gespeichert werden, dieser umfasst ein Byte und gilt als Ganzzahltyp darstellung Arbeiten

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 34 Einstieg in die Informatik mit Java Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Definition von Klassen 2 Methoden 3 Methoden

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

Werkzeuge zur Programmentwicklung

Werkzeuge zur Programmentwicklung Werkzeuge zur Programmentwicklung B-15 Bibliothek Modulschnittstellen vorübersetzte Module Eingabe Editor Übersetzer (Compiler) Binder (Linker) Rechner mit Systemsoftware Quellmodul (Source) Zielmodul

Mehr

Zeiger, Arrays und Strings in C und C++

Zeiger, Arrays und Strings in C und C++ Zeiger, Arrays und Strings in C und C++ 1 Zeiger in Java und C/C++ Zeigervariable (kurz: Zeiger, engl.: pointer): eine Variable, die als Wert eine Speicheradresse enthält Java: Zeiger werden implizit für

Mehr

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

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. Einfache Ein- und Ausgabe mit Java 1. Hallo-Welt! Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. /** Die Klasse hello sendet einen

Mehr

Distributed Computing Group

Distributed Computing Group JAVA TUTORIAL Distributed Computing Group Vernetzte Systeme - SS 06 Übersicht Warum Java? Interoperabilität grosse und gut dokumentierte Library weit verbreitet Syntax sehr nahe an C Erfahrung: Java wird

Mehr

Die Programmiersprache C Eine Einführung

Die Programmiersprache C Eine Einführung Die Programmiersprache C Eine Einführung Christian Gentsch Fakutltät IV Technische Universität Berlin Projektlabor 2. Mai 2014 Inhaltsverzeichnis 1 Einführung Entstehungsgeschichte Verwendung 2 Objektorientiert

Mehr

JAVA - Methoden - Rekursion

JAVA - Methoden - Rekursion Übungen Informatik I JAVA - Methoden - Rekursion http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 1 Methoden Methoden sind eine Zusammenfassung von Deklarationen und Anweisungen

Mehr

public class SternchenRechteckGefuellt {

public class SternchenRechteckGefuellt { Java programmieren: Musterlösungen Konsolen-Aufgaben Aufgabe 1: Gefüllte Rechtecke zeichnen Schreiben Sie ein Programm, das ein durch Sternchen gefülltes Rechteck zeichnet. Der Benutzer soll Breite und

Mehr

Tutoraufgabe 1 (Zweierkomplement): Lösung: Programmierung WS16/17 Lösung - Übung 2

Tutoraufgabe 1 (Zweierkomplement): Lösung: Programmierung WS16/17 Lösung - Übung 2 Prof. aa Dr. J. Giesl Programmierung WS16/17 F. Frohn, J. Hensel, D. Korzeniewski Tutoraufgabe 1 (Zweierkomplement): a) Sei x eine ganze Zahl. Wie unterscheiden sich die Zweierkomplement-Darstellungen

Mehr

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH Java Einleitung - Handout Kurzbeschreibung: Eine kleine Einführung in die Programmierung mit Java. Dokument: Autor: Michael Spahn Version 1.0 Status: Final Datum: 23.10.2012 Vertraulichkeit: öffentlich

Mehr

Java-Schulung Grundlagen

Java-Schulung Grundlagen Java-Schulung Grundlagen Java 2 Standard Edition JDK 5 / 6 31.05.2008 Marcel Wieczorek 1 Themenübersicht Basiswissen Objektorientierung Datentypen Fehlerbehandlung Sonstiges Einführung Klassen, Strings

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren 3. Kontrollstrukturen 04.11.2015 Prof. Dr. Ralf H. Reussner Version 1.1 LEHRSTUHL FÜR SOFTWARE-DESIGN UND QUALITÄT (SDQ) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD),

Mehr

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

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik Informatik I WS 2012/13 Tutorium zur Vorlesung 1. Alexander Zietlow zietlow@informatik.uni-tuebingen.de Wilhelm-Schickard-Institut für Informatik Eberhard Karls Universität Tübingen 11.02.2013 1. 2. 1.

Mehr

Access [basics] Programmieren mit Arrays. Beispieldatenbank. Arrays. Eindimensionale Arrays. VBA-Grundlagen Programmieren mit Arrays

Access [basics] Programmieren mit Arrays. Beispieldatenbank. Arrays. Eindimensionale Arrays. VBA-Grundlagen Programmieren mit Arrays Dass Sie unter Access Daten in Tabellen speichern und gezielt darauf zugreifen können, wissen Sie als Access [basics]-leser schon längst. Aber was, wenn Sie nur ein paar gleichartige Daten zwischenspeichern

Mehr

Musterlösungen zur Klausur Informatik 3

Musterlösungen zur Klausur Informatik 3 Musterlösungen zur Klausur Informatik 3 Justus-Liebig-Universität Gießen Wintersemester 2003/2004 Aufgabe 1 (6 Punkte) Man kreuze bei den folgenden Deklarationen und Definitionen jeweils an, ob sie aus

Mehr

Studentische Lösung zum Übungsblatt Nr. 7

Studentische Lösung zum Übungsblatt Nr. 7 Studentische Lösung zum Übungsblatt Nr. 7 Aufgabe 1) Dynamische Warteschlange public class UltimateOrderQueue private Order[] inhalt; private int hinten; // zeigt auf erstes freies Element private int

Mehr

Objektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ

Objektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ Objektorientierte Programmierung Objektorientierte Programmierung Eine Einführung mit BlueJ stellt die Daten, ihre Struktur und ihre Beziehungen zueinander in den Vordergrund. Weniger im Blickpunkt: die

Mehr

Datenfelder (Arrays) Vektoren, Matrizen, Tabellen. Dr. Beatrice Amrhein

Datenfelder (Arrays) Vektoren, Matrizen, Tabellen. Dr. Beatrice Amrhein Datenfelder (Arrays) Vektoren, Matrizen, Tabellen Dr. Beatrice Amrhein Überblick Eindimensionale Arrays o Deklaration, Initialisierung, Zugriff Mehrdimensionale Arrays o Deklaration, Initialisierung, Zugriff

Mehr

Prof. H. Herbstreith 10. Juli Uhr bis 11:00 Uhr Leistungsnachweis Informatik 1 SS 2001

Prof. H. Herbstreith 10. Juli Uhr bis 11:00 Uhr Leistungsnachweis Informatik 1 SS 2001 Prof. H. Herbstreith 10. Juli 2001 9.30 Uhr bis 11:00 Uhr Leistungsnachweis Informatik 1 SS 2001 Aufgabe 1: Vervollständigen Sie folgende Sätze und schreiben die Ergänzungen auf das Prüfungspapier und

Mehr