2.7 Felder (Arrays) Das englische Wort array hatte ursprünglich militärische Bedeutung: Aufstellung zur Schlacht : Titel der Zeichnung links:

Größe: px
Ab Seite anzeigen:

Download "2.7 Felder (Arrays) Das englische Wort array hatte ursprünglich militärische Bedeutung: Aufstellung zur Schlacht : Titel der Zeichnung links:"

Transkript

1 2.7 Felder (Arrays) Felder (Arrays) bilden eine Zusammenfassung von Elementen gleichen Typs, deren Anzahl bei der Programmierung noch nicht notwendigerweise feststeht. Das englische Wort array hatte ursprünglich militärische Bedeutung: Aufstellung zur Schlacht : Schlachtaufstellung der Schweden bei Kopenhagen, 1659, Handzeichnung Titel der Zeichnung links: Bataille, welche Ihr Königl. Majst. von Schweden bei Belägerung Kopenhagen den 29. Oktobr in ein Lager gesetzt und selbige Stadt damahls biß den 27 Mai 1660 blokiret gewesen Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 112

2 Arrays ein Array ist eine Tabelle gleichartiger Elemente, d.h. die Elemente haben den gleichen Typ. Die Tabelle hat einen Namen, die einzelnen Elemente werden über eine Indizierung angesprochen. a a[0] a[1] a[2] a[3] a[4] a[5]... In Java sind die Elemente eines Arrays Variablen, die alle den gleichen Typ haben. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 113

3 Das Sieb des Eratosthenes Problem Primzahlen: geg: n N Idee: ges: alle Primzahlen n 1. Schreibe alle Zahlen 2,..., n in ein Array ist eine Primzahl: streiche alle Vielfachen von die kleinste nicht gestrichene Zahl ist 3. 3 ist eine Primzahl: streiche alle Vielfachen von die kleinste nicht gestrichene Zahl ist 5. 5 ist eine Primzahl: usw. Nichtprimzahlen fallen durch ein Sieb. Die Zahlen, die im Sieb verbleiben, sind Primzahlen. Eratosthenes v.chr. (?) Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 114

4 Das Sieb des Eratosthenes schrittweise Implementierung /* Nach Ausführung enthält das Array "sieb" im Element sieb[i] entweder i, wenn i */ /* Primzahl ist, oder einen echten Primteiler von i, wenn i keine Primzahl ist */ int n = In.readInt(); /* lese Obergrenze für Primzahlen */ int[] sieb = new int[n+1]; /* reserviere Platz für n+1 Zahlen sieb[0],...,sieb[n] */ Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 115

5 Das Sieb des Eratosthenes schrittweise Implementierung /* Nach Ausführung enthält das Array "sieb" im Element sieb[i] entweder i, wenn i */ /* Primzahl ist, oder einen echten Primteiler von i, wenn i keine Primzahl ist */ int n = In.readInt(); /* lese Obergrenze für Primzahlen */ int[] sieb = new int[n+1]; /* reserviere Platz für n+1 Zahlen sieb[0],...,sieb[n] */ for (int i = 2; i <= n; i++) sieb[i] = i; /* initialisiere sieb[i] = i */ Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 115

6 Das Sieb des Eratosthenes schrittweise Implementierung /* Nach Ausführung enthält das Array "sieb" im Element sieb[i] entweder i, wenn i */ /* Primzahl ist, oder einen echten Primteiler von i, wenn i keine Primzahl ist */ int n = In.readInt(); /* lese Obergrenze für Primzahlen */ int[] sieb = new int[n+1]; /* reserviere Platz für n+1 Zahlen sieb[0],...,sieb[n] */ for (int i = 2; i <= n; i++) sieb[i] = i; /* initialisiere sieb[i] = i */ for (int i = 2; i <= n; i++) { /* solange noch Zahlen i zu testen sind... */ } // for all i <= n... Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 115

7 Das Sieb des Eratosthenes schrittweise Implementierung /* Nach Ausführung enthält das Array "sieb" im Element sieb[i] entweder i, wenn i */ /* Primzahl ist, oder einen echten Primteiler von i, wenn i keine Primzahl ist */ int n = In.readInt(); /* lese Obergrenze für Primzahlen */ int[] sieb = new int[n+1]; /* reserviere Platz für n+1 Zahlen sieb[0],...,sieb[n] */ for (int i = 2; i <= n; i++) sieb[i] = i; /* initialisiere sieb[i] = i */ for (int i = 2; i <= n; i++) { /* solange noch Zahlen i zu testen sind... */ if (sieb[i]==i) { Out.println(i); /* i ist Primzahl */ } // if... } // for all i <= n... Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 115

8 Das Sieb des Eratosthenes schrittweise Implementierung /* Nach Ausführung enthält das Array "sieb" im Element sieb[i] entweder i, wenn i */ /* Primzahl ist, oder einen echten Primteiler von i, wenn i keine Primzahl ist */ int n = In.readInt(); /* lese Obergrenze für Primzahlen */ int[] sieb = new int[n+1]; /* reserviere Platz für n+1 Zahlen sieb[0],...,sieb[n] */ for (int i = 2; i <= n; i++) sieb[i] = i; /* initialisiere sieb[i] = i */ for (int i = 2; i <= n; i++) { /* solange noch Zahlen i zu testen sind... */ if (sieb[i]==i) { Out.println(i); /* i ist Primzahl */ for (int j = 2*i; j <= n; j=j+i) /* markiere echte Vielfache von i */ sieb[j] = i; /* i<j ist echter Primteiler von j */ } // if... } // for all i <= n... Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 115

9 Das Sieb des Eratosthenes Deklaration eines Arrays /* Nach Ausführung enthält das Array "sieb" im Element sieb[i] entweder i, wenn i */ /* Primzahl ist, oder einen echten Primteiler von i, wenn i keine Primzahl ist */ int n = In.readInt(); /* lese Obergrenze für Primzahlen */ int[] sieb = new int[n+1]; /* reserviere Platz für n+1 Zahlen sieb[0],...,sieb[n] */ for (int i = 2; i <= n; i++) sieb[i] = i; /* initialisiere sieb[i] = i */ for (int i = 2; i <= n; i++) { /* solange noch Zahlen i zu testen sind... */ if (sieb[i]==i) { Out.println(i); /* i ist Primzahl */ for (int j = 2*i; j <= n; j=j+i) /* markiere echte Vielfache von i */ sieb[j] = i; /* i<j ist echter Primteiler von j */ } // if... } // for all i <= n... Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 115

10 Das Sieb des Eratosthenes Zuweisung an Arrayelemente /* Nach Ausführung enthält das Array "sieb" im Element sieb[i] entweder i, wenn i */ /* Primzahl ist, oder einen echten Primteiler von i, wenn i keine Primzahl ist */ int n = In.readInt(); /* lese Obergrenze für Primzahlen */ int[] sieb = new int[n+1]; /* reserviere Platz für n+1 Arrayelemente 0,...,n */ for (int i = 2; i <= n; i++) sieb[i] = i; /* initialisiere sieb[i] = i */ for (int i = 2; i <= n; i++) { /* solange noch Zahlen i zu testen sind... */ if (sieb[i]==i) { Out.println(i); /* i ist Primzahl */ for (int j = 2*i; j <= n; j=j+i) /* markiere echte Vielfache von i */ sieb[j] = i; /* i<j ist echter Primteiler von j */ } // if... } // for all i <= n... Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 115

11 Das Sieb des Eratosthenes Abfrage von Arrayelmenten /* Nach Ausführung enthält das Array "sieb" im Element sieb[i] entweder i, wenn i */ /* Primzahl ist, oder einen echten Primteiler von i, wenn i keine Primzahl ist */ int n = In.readInt(); /* lese Obergrenze für Primzahlen */ int[] sieb = new int[n+1]; /* reserviere Platz für n+1 Arrayelemente 0,...,n */ for (int i = 2; i <= n; i++) sieb[i] = i; /* initialisiere sieb[i] = i */ for (int i = 2; i <= n; i++) { /* solange noch Zahlen i zu testen sind... */ if (sieb[i]==i) { Out.println(i); /* i ist Primzahl */ for (int j = 2*i; j <= n; j=j+i) /* markiere echte Vielfache von i */ sieb[j] = i; /* i<j ist echter Primteiler von j */ } // if... } // for all i <= n... Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 115

12 Das Sieb des Eratosthenes Operationen mit Array /* Nach Ausführung enthält das Array "sieb" im Element sieb[i] entweder i, wenn i */ /* Primzahl ist, oder einen echten Primteiler von i, wenn i keine Primzahl ist */ int n = In.readInt(); /* lese Obergrenze für Primzahlen */ int[] sieb = new int[n+1]; /* reserviere Platz für n+1 Arrayelemente 0,...,n */ for (int i = 2; i <= n; i++) sieb[i] = i; /* initialisiere sieb[i] = i */ for (int i = 2; i <= n; i++) { /* solange noch Zahlen i zu testen sind... */ if (sieb[i]==i) { Out.println(i); /* i ist Primzahl */ for (int j = 2*i; j <= n; j=j+i) /* markiere echte Vielfache von i */ sieb[j] = i; /* i<j ist echter Primteiler von j */ } // if... } // for all i <= n... Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 115

13 Deklaration von Arrays int[ ] sieb; /* Deklaration einer Arrayvariablen "sieb" */ /* mit unbestimmter Anzahl von int-elementen */ Damit: BNF-Produktionen für Typdefinition: <Typ> ::= <primitivetype> <complextype> <arraytype> <primitivetype> ::= int long byte short double float char boolean <complextype> ::= String... <arraytype> ::= <Typ>[ ] Nach der Deklaration einer Arrayvariablen unbestimmter Länge existiert noch kein Element des Arrays! Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 116

14 Erzeugung von Arrays mit new und Längenabfrage int[ ] sieb; /* Deklaration der Arrayvariablen "sieb" */ sieb = new int[n+1]; /* Erzeugung von n+1 Arrayelementen vom Typ int */ int[ ] sieb = new int[n+1]; /* Deklaration und Erzeugung */ Arrayelemente werden durchnumeriert. Die Numerierung beginnt immer bei 0. Die Länge eines Arrays ist definiert als die Anzahl der Elemente im Array und kann jederzeit im Programm abgefragt werden: int[ ] sieb = new int[n+1]; /* Deklaration und Erzeugung */ int m = sieb.length... /* jetzt ist m = n+1 */ Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 117

15 Arraytyp Arrayvariablen haben den Arraytyp <Typ>[ ]. Arrayvariablen gleichen Arraytyps können aufeinander zugewiesen werden. Arrayvariablen sind Zeiger auf einen Speicherbereich. Durch Zuweisung ändert sich die Speicherzelle, auf die das Array zeigt: int[ ] a; /* Deklaration */ int[ ] b; /* b und a haben gleichen Typ int[] */ Speicher b a Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 118

16 Arraytyp Arrayvariablen haben den Arraytyp <Typ>[ ]. Arrayvariablen gleichen Arraytyps können aufeinander zugewiesen werden. Arrayvariablen sind Zeiger auf einen Speicherbereich. Durch Zuweisung ändert sich die Speicherzelle, auf die das Array zeigt: int[ ] a = new int[5]; /* Deklaration und Erzeugung */ int[ ] b = new int[3]; /* b und a haben gleichen Typ int[] */ Speicher b a Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 118

17 Arraytyp Arrayvariablen haben den Arraytyp <Typ>[ ]. Arrayvariablen gleichen Arraytyps können aufeinander zugewiesen werden. Arrayvariablen sind Zeiger auf einen Speicherbereich. Durch Zuweisung ändert sich die Speicherzelle, auf die das Array zeigt: int[ ] a = new int[5]; /* Deklaration und Erzeugung */ int[ ] b = new int[3]; /* b und a haben gleichen Typ int[] */ for (int i = 0; i < a.length; i++) a[i] = i+10; /* init(a) */ for (int i = 0; i < b.length; i++) b[i] = i+20; /* init(b) */ Speicher b a Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 118

18 Arraytyp Arrayvariablen haben den Arraytyp <Typ>[ ]. Arrayvariablen gleichen Arraytyps können aufeinander zugewiesen werden. Arrayvariablen sind Zeiger auf einen Speicherbereich. Durch Zuweisung ändert sich die Speicherzelle, auf die das Array zeigt: int[ ] a = new int[5]; /* Deklaration und Erzeugung */ int[ ] b = new int[3]; /* b und a haben gleichen Typ int[] */ for (int i = 0; i < a.length; i++) a[i] = i+10; /* init(a) */ for (int i = 0; i < b.length; i++) b[i] = i+20; /* init(b) */ a = b; /* Zuweisung einer neuen Adresse an a */ Speicher b a Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 118

19 Arraytyp Arrayvariablen haben den Arraytyp <Typ>[ ]. Arrayvariablen gleichen Arraytyps können aufeinander zugewiesen werden. Arrayvariablen sind Zeiger auf einen Speicherbereich. Durch Zuweisung ändert sich die Speicherzelle, auf die das Array zeigt: int[ ] a = new int[5]; /* Deklaration und Erzeugung */ int[ ] b = new int[3]; /* b und a haben gleichen Typ int[] */ for (int i = 0; i < a.length; i++) a[i] = i+10; /* init(a) */ for (int i = 0; i < b.length; i++) b[i] = i+20; /* init(b) */ a = b; /* Zuweisung einer neuen Adresse an a */ Speicher b a Das Array, auf das a zeigte, kann nie wieder referenziert werden. Sein Speicherplatz wird vom Java-System freigegeben. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 118

20 Zugriff auf Arrayelemente Arrayelemente sind indiziert. Auf sie kann mit <Array>[<Index>] zugegriffen werden. Dabei muss der Typ des Index ganzzahlig sein, d.h. int, long, short, byte. sieb[i] =... ; sieb[i%j+k] =... ; Um auf alle Elemente eines Arrays zuzugreifen eignet sich besonders die for-schleife: for (i = 0; i < sieb.length; i++) sieb[i] =... Arrayelemente können wie einfache Variablen gleichen Typs verwendet werden: sieb[i] = i; /* Zuweisung */ if (sieb[i] == i)... /* Ausdruck */ p = sieb[i]/sieb[j]; q = sieb[i] % sieb[j]; /* Operationen für int */ p = p+sieb[j];... for (sieb[i] = 0; sieb[i] <= i; sieb[i]++)... /* unschön */ Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 119

21 Initialisierung von Arrayelementen Nach new haben alle Arrayelemente den Wert 0 (Achtung: Die Elemente sind nicht immer ganze Zahlen. Es werden alle Bits auf 0 gesetzt!) Ist die Anzahl der Elemente zum Zeitpunkt der Programmentwicklung noch nicht bekannt, können die Arrayelemente mit einer Schleife initialisiert werden: int n = In.readInt(); int[ ] sieb = new int[n+1]; for (i = 0; i < sieb.length; i++) sieb[i] = i; Sind die Anzahl der Elemente und ihre initialen Werte zum Zeitpunkt der Programmentwicklung bekannt, kann das Array schon mit der new-anweisung initialisiert werden: String[] monat = new String[] { "Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez" } Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 120

22 Mehrdimensionale Arrays Ein Array ist eine Tabelle gleichartiger Elemente. Sind diese gleichartigen Elemente wieder Arrays, so erhält man mehrdimensionale Arrays. a a[0][0] a[0][4] a[0] a[1] a[2] a[2][0] a[2][4] Das Beispiel links zeigt eine 2-dimensionale Tabelle, oder Matrix. int[][] a; /* Deklaration */ a = new int[3][5]; /* Erzeugung */ for (int i = 0; i < a.length; i++) for (int j = 0; j < a[i].length; j++) a[i][j] = 5*i+j; /* Initialisierung */ /* oder */ int[][] a = {{0,1,2,3,4}, {5,6,7,8,9}, {10,11,12,13,14}}; Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 121

23 Beispiel: Transponieren einer Matrix Es seien m, n N. Eine m n Matrix A über den reellen Zahlen R (A R m n ) ist eine 2-dimensionale Tabelle mit m Zeilen und n Spalten über R. Die Elemente von A werden mit A i,j, 0 i m 1, 0 j n 1 bezeichnet. Zu einer Matrix A R m n ist die Transponierte A T R n m definiert durch A T i,j = A j,i 0 i n 1, 0 j m 1 Beispiel: A = A, A T = A, B = ` 1 2 3, B T = A Die Transponierte einer Matrix entsteht durch Spiegelung der Elemente an der Hauptdiagonalen. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 122

24 Beispiel: Transponieren einer Matrix Problem Transponierte: geg: n N, A R n n ges: A T Es ist A T i,j = A j,i für alle i, j. Also: vertausche die Elemente unterhalb der Hauptdiagonalen mit den entsprechenden Elementen überhalb der Hauptdiagonalen. /* wandelt eine quadratische Matrix A R n n in A T um */ int n = In.readInt(); float a[][] = new int[n][n];... for (int i = 0; i < a.length; i++) for (int j = 0; j < i; j++) { float h; /* vertausche A i,j und A j,i */ h = a[i][j]; a[i][j] = a[j][i]; a[j][i] = h; } Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 123

25 Beispiel: Matrixmultiplikation Es seien m, n, k N, A R m n, B R n k. Dann ist das Matrixprodukt C= A B R m k definiert durch C i,j = Xn 1 p=0 A i,p B p,j, 0 i n 1, 0 j k 1 /* seien die Matrizen a und b schon eingelesen */ float[][] c = new float[a.length][b[0].length]; /* Dimens. beachten */ for (int i = 0; i < a.length; i++) for (int j = 0; j < b[0].length; j++) { c[i][j] = 0; /* initialisiere mit 0 */ for (int p = 0; p < b.length; p++) c[i][j] = c[i][j] + a[i][p]*b[p][j]; /* addiere Summanden */ } Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 124

26 Beispiel: Adjazenzmatrix eines Graphen Ein (gerichteter) Graph G = (V, E) besteht aus einer Knotenmenge V und einer Kantenmenge E V V. Graphen können gezeichnet werden: Knoten sind Punkte, Kanten sind Linien Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 125

27 Beispiel: Adjazenzmatrix eines Graphen Ein (gerichteter) Graph G = (V, E) besteht aus einer Knotenmenge V und einer Kantenmenge E V V. Graphen können gezeichnet werden: Knoten sind Punkte, Kanten sind Linien. Es sei G = (V, E) ein Graph, n = V. Die Adjazenzmatrix A {0, 1} n n ist definiert durch A i,j = 1 (i, j) E Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 125

28 Beispiel: Adjazenzmatrix eines Graphen Ein (gerichteter) Graph G = (V, E) besteht aus einer Knotenmenge V und einer Kantenmenge E V V. Graphen können gezeichnet werden: Knoten sind Punkte, Kanten sind Linien. 0 1 Es sei G = (V, E) ein Graph, n = V. Die Adjazenzmatrix A {0, 1} n n ist definiert durch A i,j = 1 (i, j) E Ein Graph G mit n Knoten kann im Computer dargestellt werden, indem man seine Adjazenzmatrix speichert: A = C A ist die Adjazenzmatrix des Graphen links. 3 2 Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 125

29 Beispiel: Adjazenzmatrix eines Graphen Ein (gerichteter) Graph G = (V, E) besteht aus einer Knotenmenge V und einer Kantenmenge E V V. Graphen können gezeichnet werden: Knoten sind Punkte, Kanten sind Linien Es sei G = (V, E) ein Graph, n = V. Die Adjazenzmatrix A {0, 1} n n ist definiert durch A i,j = 1 (i, j) E Ein Graph G mit n Knoten kann im Computer dargestellt werden, indem man seine Adjazenzmatrix speichert: A = C A ist die Adjazenzmatrix des Graphen links. Transponieren der Adjazenzmatrix von G ist äquivalent zum Umdrehen der Kanten von G. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 125

30 Beispiel: Wegeberechnung in Graphen Es sei G = (V, E) ein Graph, A die Adjazenzmatrix von G, A k = A.{z.. A}, k N. k-mal Dann gilt: es existiert ein Weg von i nach j in G es existiert k N 0 : A k i,j > A 0 = C A, A 1 = C A, 3 2 A 2 = C A, A 3 = C A Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 126

31 Beispiel: Sudoku-Spiel Das Spiel ist gelöst, wenn alle Felder so mit Zahlen gefüllt sind, daß in jeder Zeile, in jeder Spalte und in jedem Teilquadrat jede Zahl aus {1,..., 9} genau einmal vorkommt. (Siehe auch Wir wollen berechnen, welche Zahlen für ein gegebenes Feld (i, j), i, j {0,..., 9} eines Sudokus noch zur Verfügung stehen. Dazu schliessen wir alle Zahlen aus, die in Zeile i, in Spalte j oder dem Teilquadrat von (i, j) schon vorkommen. Wir speichern das Sudoku-Feld in einem zweidimensionalen Array über den ganzen Zahlen. Dabei habe Inhalt 0 eines Feldes die Bedeutung noch nicht besetzt. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 127

32 Beispiel: Sudoku-Spiel Bsp.: Für das Feld (0, 6) stehen die Zahlen 1, 2, 4, 6, 7, 8 nicht mehr zur Verfügung, also kann das Feld (0, 6) nur mit einer der Zahlen 3, 5 oder 9 besetzt werden. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 128

33 Problem SudokuCandidates: geg: ein zweidimensionales, 9 9 int-array A (Eintrag 0 bedeute nicht besetzt ), ein Feld (z, s) von A ges: ein Array B {false, true} 10 so daß für alle j {1,..., 9} gilt: B[j] = true j ist Kandidat für (z, s). /* Initialisiere */ final int n = 9; /* Dimension des Sudokus */ int[][] A = new int[n][n]; /* reserviere Platz für n 2 Arrayelemente in A */ boolean[] B = new boolean[n+1]; /* reserviere Platz für n+1 Arrayelemente in B */ Out.print("A = "); In.open("sudoku.txt"); /* lese Sudoku aus der Datei sudoku.txt */ for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) A[i][j] = In.readInt(); In.close(); /* von jetzt an lese wieder von Tastatur */ for (int j = 1; j <= n; j++) B[j] = true; /* initialisiere B */ Out.print("z,s = "); int z = In.readInt(); int s = In.readInt(); /* lese z, s */... Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 129

34 Problem SudokuCandidates: geg: ein zweidimensionales, 9 9 int-array A (Eintrag 0 bedeute nicht besetzt ), ein Feld (z, s) von A ges: ein Array B {false, true} 10 so daß für alle j {1,..., 9} gilt: B[j] = true j ist Kandidat für (z, s). /* Initialisiere */... /* Analysiere Zeile z */ for (int j = 0; j < n; j++) { int x = A[z][j]; B[x] = false; } /* B[A[z][j]] = false; */ /* Analysiere Spalte s */ for (int i = 0; i < n; i++) { int x = A[i][s]; B[x] = false; } /* B[A[i][s]] = false; */... Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 130

35 Problem SudokuCandidates: geg: ein zweidimensionales, 9 9 int-array A (Eintrag 0 bedeute nicht besetzt ), ein Feld (z, s) von A ges: ein Array B {false, true} 10 so daß für alle j {1,..., 9} gilt: B[j] = true j ist Kandidat für (z, s). /* Initialisiere */... /* Analysiere Zeile z */... /* Analysiere Spalte s */... /* Analysiere Teilquadrat von (z, s) */ final int m = 3; /* Größe des Teilquadrats bei n = 9 */ int p = z/m; int q = s/m; /* (p, q) ist linke obere Ecke des Teilquadrats von (z, s) */ for (int i = p; i < p+m; i++) for (int j = q; j < q+m; j++) { int x = A[i][j]; B[x] = false; }... Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 131

36 Problem SudokuCandidates: geg: ein zweidimensionales, 9 9 int-array A (Eintrag 0 bedeute nicht besetzt ), ein Feld (z, s) von A ges: ein Array B {false, true} 10 so daß für alle j {1,..., 9} gilt: B[j] = true j ist Kandidat für (z, s). /* Initialisiere */... /* Analysiere Zeile z */... /* Analysiere Spalte s */... /* Analysiere Teilquadrat von (z, s) */... /* Ausgabe der Kandidaten für Feld (z, s) */ Out.print("Kandidaten(" + z + "," + s + "):"); for (int j = 1; j <= n; j++) if (B[j]) Out.print(" "+ j); /* B[j] = true j ist Kandidat */ Out.println(); Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 132

37 Verzweigte Arrays Verzweigte Arrays sind Arrays, deren Elemente wieder Arrays sind. Im Unterschied zu mehrdimensionalen Arrays können die Arrayelemente unterschiedliche Längen haben. Es sei G = (V, E) ein Graph. Für einen Knoten v V ist die Adjazenzliste A(v) definiert durch 0 1 A(v) = (w 1,..., w k ), (v, w i ) E, 1 i k 3 2 Ein Graph G kann im Computer dargestellt werden, indem man seine Adjazenzlisten speichert. a a[0] a[1] a[2] a[3] Adjazenzlisten benötigen bei Graphen mit wenigen Kanten signifikant weniger Speicherplatz als die Adjazenzmatrix. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 133

38 Beispiel: Einlesen von Adjazenzlisten eines Graphen int n = In.readInt(); /* lese Anzahl der Knoten von G */ int[][] a = new int[n][]; /* Platz für n Adjazenzlisten */ for (int i=0; i < a.length; i++) { } Out.print("Anzahl der Nachbarn von Knoten "+i+ ": "); int h = In.readInt(); /* lese Anzahl der Nachbarn von i */ a[i] = new int[h]; /* Platz für h Nachbarn */ for (int j = 0; j < a[i].length; j++) { Out.print(j+". Nachbar von "+i+": "); a[i][j] = In.readInt(); /* lese j-ten Nachbarn von i */ } Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 134

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

Vorlesung Programmieren

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

Mehr

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

1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r 1. Felder und Strings Eigenschaften von Referenzdatentypen 1. Referenzdatentypen: Felder und Strings Referenzdatentypen sind Konstrukte, mit deren Hilfe wir aus einfachen Datentypen neue eigene Typen erzeugen

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

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

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

Reihungen. Martin Wirsing. in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03 Reihungen Martin Wirsing in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03 2 Ziele Die Datenstruktur der Reihungen verstehen: mathematisch und im Speicher Grundlegende Algorithmen auf Reihungen

Mehr

Grundlagen der Programmierung Teil1 Einheit III Okt. 2010

Grundlagen der Programmierung Teil1 Einheit III Okt. 2010 Grundlagen der Programmierung Teil1 Einheit III - 22. Okt. 2010 GDP DDr. Karl D. Fritscher basierend auf der Vorlesung Grundlagen der Programmierung von DI Dr. Bernhard Pfeifer Einschub Bevor wir mit den

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

Kapitel 6. Programmierkurs. 6.0 Felder (Arrays) Deklaration von Feldern. Felder (Arrays) Mehrdimensionale Arrays. Birgit Engels, Anna Schulze WS 07/08

Kapitel 6. Programmierkurs. 6.0 Felder (Arrays) Deklaration von Feldern. Felder (Arrays) Mehrdimensionale Arrays. Birgit Engels, Anna Schulze WS 07/08 Kapitel 6 Programmierkurs Birgit Engels, Anna Schulze Felder (Arrays) Mehrdimensionale Arrays ZAIK Universität zu Köln WS 07/08 1/ 21 2/ 21 6.0 Felder (Arrays) Deklaration von Feldern Bisher haben wir

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

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Wiederholung Kapitel 4. Birgit Engels, Anna Schulze WS 07/08

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Wiederholung Kapitel 4. Birgit Engels, Anna Schulze WS 07/08 Kapitel 4 Programmierkurs Birgit Engels, Anna Schulze Wiederholung Kapitel 4 ZAIK Universität zu Köln WS 07/08 1 / 23 2 Datentypen Arten von Datentypen Bei der Deklaration einer Variablen(=Behälter für

Mehr

Der Datentyp String. Stringvariable und -vergleiche

Der Datentyp String. Stringvariable und -vergleiche Informatik 12 mit Java: Gierhardt Zeichenketten bzw. Strings Der Datentyp String Zeichenketten bzw. Strings sind eine häufig benutzte Datenstruktur. Man könnte auch mit Arrays aus Zeichen arbeiten. Da

Mehr

Wertebereich und Genauigkeit der Zahlendarstellung

Wertebereich und Genauigkeit der Zahlendarstellung Wertebereich und Genauigkeit der Zahlendarstellung Sowohl F als auch C kennen bei ganzen und Floating Point-Zahlen Datentypen verschiedener Genauigkeit. Bei ganzen Zahlen, die stets exakt dargestellt werden

Mehr

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

Java programmieren mit JavaKara. Eine Zusammenfassung in Beispielen

Java programmieren mit JavaKara. Eine Zusammenfassung in Beispielen Java programmieren mit JavaKara Eine Zusammenfassung in Beispielen Kleeblätter in einer Zeile zählen @Override public void mymainprogram() { int anzahlkleeblaetter = 0; for (int x = 0; x < world.getsizex();

Mehr

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

Die for -Schleife HEUTE. Schleifen. Arrays. Schleifen in JAVA. while, do reichen aus, um alle iterativen Algorithmen zu beschreiben 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 (

Mehr

2. Programmierung in C

2. Programmierung in C 2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten, Operatoren und Ausdrücke Anweisungen und Kontrollstrukturen (Steuerfluss)

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

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

2.5 Primitive Datentypen

2.5 Primitive Datentypen 2.5 Primitive Datentypen Wir unterscheiden 5 primitive Datentypen: ganze Zahlen -2, -1, -0, -1, -2,... reelle Zahlen 0.3, 0.3333..., π, 2.7 10 4 Zeichen a, b, c,... Zeichenreihen "Hello World", "TIFI",

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

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

Übungspaket 23 Mehrdimensionale Arrays

Übungspaket 23 Mehrdimensionale Arrays Übungspaket 23 Mehrdimensionale Arrays Übungsziele: Skript: Deklaration und Verwendung mehrdimensionaler Arrays Kapitel: 49 Semester: Wintersemester 2016/17 Betreuer: Kevin, Matthias, Thomas und Ralf Synopsis:

Mehr

Inhalt. 4.5 Arbeit mit Zeigern (engl. Pointer)

Inhalt. 4.5 Arbeit mit Zeigern (engl. Pointer) Inhalt Inhalt: 4. Programmiersprache C 4.1 Programmaufbau in C 4.2 Basisdatentypen und einfache Anweisungen 4.3 Steuerfluss-Konstrukte 4.4 Arbeit mit indizierten Größen (Felder) 4.5 Arbeit mit Zeigern

Mehr

String s1, s2; Eine Zuweisung geschieht am einfachsten direkt durch Angabe des Strings eingeschlossen in doppelte Hochkommata:

String s1, s2; Eine Zuweisung geschieht am einfachsten direkt durch Angabe des Strings eingeschlossen in doppelte Hochkommata: Informatik mit Java: Gierhardt Zeichenketten bzw. Strings Der Datentyp String Zeichenketten bzw. Strings sind eine häufig benutzte Datenstruktur. Man könnte auch mit Arrays aus Zeichen arbeiten. Da aber

Mehr

Vorkurs Informatik WiSe 16/17

Vorkurs Informatik WiSe 16/17 Java Schleifen und Arrays Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 06.10.2016 Technische Universität Braunschweig, IPS Überblick Kommentare Typen Kontrollstrukturen Arrays 06.10.2016 Dr. Werner

Mehr

Motivation/Beispiel. Zur Auswertung der Klausuren im Fach Programmieren fallen folgende Daten an:

Motivation/Beispiel. Zur Auswertung der Klausuren im Fach Programmieren fallen folgende Daten an: Kap 5. Arrays Motivation/Beispiel Zur Auswertung der Klausuren im Fach Programmieren fallen folgende Daten an: Für jeden Teilnehmer: Matrikelnummer Name Vorname sowie die Punkte der 8 Aufgaben Daraus wird

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

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Variablen Übersicht 1 Variablendeklaration 2 Initialisierung von Variablen 3 Symbolische Konstanten Variablendeklaration Die Deklaration der Variablen erfolgt durch eine Typangabe

Mehr

Zeiger: Der Adressoperator &

Zeiger: Der Adressoperator & Zeiger: Der Adressoperator & Variablen werden im Computer im Speicher abgelegt. Nach der Deklaration int a,b,c; double x,y,z; Sieht die Speicherbelegung etwa wie folgt aus: a b c x y z Jede Variable hat

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

Arrays und Schleifen

Arrays und Schleifen Arrays und Schleifen Javakurs 2014, 2. Vorlesung Sebastian Schuck basierend auf der Vorlage von Theresa Enghardt, Mario Bodemann und Sebastian Dyroff wiki.freitagsrunde.org 3. März 2014 This work is licensed

Mehr

15. Elementare Graphalgorithmen

15. Elementare Graphalgorithmen Graphen sind eine der wichtigste Modellierungskonzepte der Informatik Graphalgorithmen bilden die Grundlage vieler Algorithmen in der Praxis Zunächst kurze Wiederholung von Graphen. Dann Darstellungen

Mehr

FHZ. K20 Arrays. Lernziele. Hochschule Technik+Architektur Luzern Abteilung Informatik, Fach Programmieren. Inhalt

FHZ. K20 Arrays. Lernziele. Hochschule Technik+Architektur Luzern Abteilung Informatik, Fach Programmieren. Inhalt Inhalt 1. Einführung 2. Array-Komponenten von elementaren Datentypen 3. Array-Komponenten sind Objekte 4. Array als Parameter 5. Kopieren von Arrays 6. Beispiel 7. Vector versus Array Folie 1 Lernziele

Mehr

Tag 4 Repetitorium Informatik (Java)

Tag 4 Repetitorium Informatik (Java) Tag 4 Repetitorium Informatik (Java) Dozent: Patrick Kreutzer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2016/2017 Willkommen zum Informatik-Repetitorium!

Mehr

Arrays Fortgeschrittene Verwendung

Arrays Fortgeschrittene Verwendung Arrays Fortgeschrittene Verwendung Gilbert Beyer und Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik http://www.pst.ifi.lmu.de/lehre/wise-11-12/infoeinf WS11/12 Arrays: Wiederholung

Mehr

2. Programmierung in C

2. Programmierung in C 2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten Operatoren, Ausdrücke und Anweisungen Kontrollstrukturen (Steuerfluss)

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

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

Arrays von Objekten. 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-12-13/infoeinf WS12/13 Arrays: Wiederholung Ein Array ist ein Tupel von Elementen gleichen

Mehr

Inhalt. Peter Sobe 63. Felder in C

Inhalt. Peter Sobe 63. Felder in C Inhalt Inhalt: 4. Programmiersprache C 4.1 Programmaufbau in C 4.2 Basisdatentypen und einfache Anweisungen 4.3 Streuerfluss-Konstrukte 4.4 Arbeit mit indizierten Größen (Felder) 4.5 Arbeit mit Pointern

Mehr

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie Gliederung 1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. äume / Graphen 5. Hashing 6. Algorithmische Geometrie 4/5, olie 1 2014 Prof. Steffen Lange - HDa/bI

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 6. Methoden

Grundlagen der Programmierung Prof. H. Mössenböck. 6. Methoden Grundlagen der Programmierung Prof. H. Mössenböck 6. Methoden Parameterlose Methoden Beispiel: Ausgabe einer Überschrift class Sample { static void printheader() { // Methodenkopf Out.println("Artikelliste");

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

Dynamische Datentypen

Dynamische Datentypen Dynamische Datentypen Tupel und Folgen o Wertebereich eines Structs / einer Klasse: T1 T2... Tk Werte sind k-tupel Tupel und Folgen o Wertebereich eines Structs / einer Klasse: T1 T2... Tk Werte sind k-tupel

Mehr

Programmieren I. Kapitel 5. Kontrollfluss

Programmieren I. Kapitel 5. Kontrollfluss Programmieren I Kapitel 5. Kontrollfluss Kapitel 5: Kontrollfluss Ziel: Komplexere Berechnungen im Methodenrumpf Ausdrücke und Anweisungen Fallunterscheidungen (if, switch) Wiederholte Ausführung (for,

Mehr

Grundlagen der Programmierung in C++ Arrays und Strings, Teil 1

Grundlagen der Programmierung in C++ Arrays und Strings, Teil 1 Grundlagen der Programmierung in C++ Arrays und Strings, Teil 1 Wintersemester 2005/2006 G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de Das C++ Typsystem simple structured integral enum

Mehr

Am Dienstag, den 16. Dezember, ist Eulenfest. 1/48

Am Dienstag, den 16. Dezember, ist Eulenfest. 1/48 Am Dienstag, den 16. Dezember, ist Eulenfest. 1/48 Grundbegriffe der Informatik Einheit 12: Erste Algorithmen in Graphen Thomas Worsch Universität Karlsruhe, Fakultät für Informatik Wintersemester 2008/2009

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

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

Kapitel 6: Graphalgorithmen Gliederung

Kapitel 6: Graphalgorithmen Gliederung Gliederung 1. Grundlagen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. Ausgewählte Datenstrukturen 5. Dynamisches Programmieren 6. Graphalgorithmen 7. String-Matching 8. Kombinatorische Algorithmen

Mehr

Kapitel 7. Zusammengesetzte Datentypen, Vektoren, Zeichenketten

Kapitel 7. Zusammengesetzte Datentypen, Vektoren, Zeichenketten Kapitel 7 Zusammengesetzte Datentypen, Vektoren, Zeichenketten 1 Gliederung Kapitel 7 Zusammengesetzte Datentypen 7.1 Vektoren 7.2 Sortieren eines Vektors 7.3 Mehrdimensionale Felder 7.4 Umgang mit ein-/zweidimensionalen

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. 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

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

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 9. Zeiger Arbeitsspeicher / Adressen Der Arbeitsspeicher des Computers (RAM) besteht aus einem Feld von Speicherzellen, beginnend bei Adresse

Mehr

Theoretische Informatik 1 WS 2007/2008. Prof. Dr. Rainer Lütticke

Theoretische Informatik 1 WS 2007/2008. Prof. Dr. Rainer Lütticke Theoretische Informatik 1 WS 2007/2008 Prof. Dr. Rainer Lütticke Inhalt der Vorlesung Grundlagen - Mengen, Relationen, Abbildungen/Funktionen - Datenstrukturen - Aussagenlogik Automatentheorie Formale

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

Arrays (Reihungen) Arrays (Reihungen) in Java: Syntax, Typisierung, Semantik.

Arrays (Reihungen) Arrays (Reihungen) in Java: Syntax, Typisierung, Semantik. Arrays (Reihungen) Arrays (Reihungen) in Java: Syntax, Typisierung, Semantik. Wichtige Algorithmen mit Arrays Arrays als Implementierung von Mengen und Listen Finden von Maximum und Minimum Binäre Suche

Mehr

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

2.4 Schleifen. Schleifen unterscheiden sich hinsichtlich des Zeitpunktes der Prüfung der Abbruchbedingung: 2.4 Schleifen Schleifen beschreiben die Wiederholung einer Anweisung bzw. eines Blocks von Anweisungen (dem Schleifenrumpf) bis eine bestimmte Bedingung (die Abbruchbedingung) eintritt. Schleifen unterscheiden

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

Schulbesuch Erich-Kästner Gesamtschule 07. April 2011

Schulbesuch Erich-Kästner Gesamtschule 07. April 2011 Schulbesuch Erich-Kästner Gesamtschule 07. April 0 Bünde Fakultät für Mathematik Universität Bielefeld dotten@math.uni-bielefeld.de Übersicht Was ist ein Sudoku-Rätsel? Die Regeln und das Ziel Zentrale

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

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

Wie entwerfe ich ein Programm?

Wie entwerfe ich ein Programm? Wie entwerfe ich ein Programm? Welche Objekte brauche ich? Flussdiagramme für Programmablauf Vorcode Testcode Hauptcode Wir spielen Lotto! Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 5 +

Mehr

FAKULTÄT FÜR INFORMATIK

FAKULTÄT FÜR INFORMATIK TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 2007/2008 Praktikum Grundlagen der Programmierung Lösungsvorschläge zu Blatt 3 F. Forster, T.

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

C++ Teil 5. Sven Groß. 13. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 18

C++ Teil 5. Sven Groß. 13. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 18 C++ Teil 5 Sven Groß 13. Mai 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 13. Mai 2016 1 / 18 Themen der letzten Vorlesung Funktionen Funktionsüberladung, Signatur Rekursion const-deklaration Referenzen

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Funktionen Rückblick Operatoren logische Verknüpfungen Zusammengesetzte Operatoren ( Zuweisungsoperatoren ) Kontrollstrukturen Bedingte Anweisungen (if-abfrage, switch-konstrukt)

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

Übersicht. 4.1 Ausdrücke. 4.2 Funktionale Algorithmen. 4.3 Anweisungen. 4.4 Imperative Algorithmen Variablen und Konstanten. 4.4.

Übersicht. 4.1 Ausdrücke. 4.2 Funktionale Algorithmen. 4.3 Anweisungen. 4.4 Imperative Algorithmen Variablen und Konstanten. 4.4. Übersicht 4.1 Ausdrücke 4.2 Funktionale Algorithmen 4.3 Anweisungen 4.4 Imperative Algorithmen 4.4.1 Variablen und Konstanten 4.4.2 Prozeduren 4.4.3 Verzweigung und Iteration 4.4.4 Globale Größen Einführung

Mehr

Programmieren in C/C++ und MATLAB

Programmieren in C/C++ und MATLAB Programmieren in C/C++ und MATLAB Sven Willert Sabine Schmidt Christian-Albrechts-Universität zu Kiel CAU 5-1 Übung Schreiben Sie ein Programm, das die Zahl π durch π = 4 4 4 4 4 4 + + +... 3 5 7 9 11

Mehr

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

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 8. Arrays. Arrays 1 Kapitel 8 Ziele 2 Die Datenstruktur der kennenlernen Grundlegende Algorithmen auf in Java implementieren können Mit von Objekten arbeiten können 3 Erweiterungen zur Behandlung von : Überblick Bisher

Mehr

Übungspaket 23 Mehrdimensionale Arrays

Übungspaket 23 Mehrdimensionale Arrays Übungspaket 23 Mehrdimensionale Arrays Übungsziele: Skript: Deklaration und Verwendung mehrdimensionaler Arrays Kapitel: 49 Semester: Wintersemester 2016/17 Betreuer: Kevin, Matthias, Thomas und Ralf Synopsis:

Mehr

C++ Teil 5. Sven Groß. 8. Mai IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 8. Mai / 16

C++ Teil 5. Sven Groß. 8. Mai IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 8. Mai / 16 C++ Teil 5 Sven Groß IGPM, RWTH Aachen 8. Mai 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 8. Mai 2015 1 / 16 Themen der letzten Vorlesung Live Programming zu A2 Gleitkommazahlen Rundungsfehler Auswirkung

Mehr

Bereits behandelt: Einfache Datentypen / Variablen. Schleifen und Verzweigungen. Funktionen. Heute: Felder, Zeiger, Referenzen. Freispeicherverwaltung

Bereits behandelt: Einfache Datentypen / Variablen. Schleifen und Verzweigungen. Funktionen. Heute: Felder, Zeiger, Referenzen. Freispeicherverwaltung Kompaktkurs C++ Themen C 1 Bereits behandelt: Einfache Datentypen / Variablen Schleifen und Verzweigungen Funktionen Heute: Felder, Zeiger, Referenzen Freispeicherverwaltung Zeichenketten Kommandozeilenargumente

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

7. Transitive Hülle. Kante des Graphen. Zusatz-Kante der transitiven Hülle

7. Transitive Hülle. Kante des Graphen. Zusatz-Kante der transitiven Hülle In Anwendungen ist es oft interessant zu wissen, ob man überhaupt von einem Knoten v zu einem Knoten w gelangen kann, ganz gleich wie lang der Weg auch ist. Gegeben sei dabei ein gerichteter Graph G =

Mehr

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen

Mehr

Grundlagen der Objektorientierten Programmierung - Statische Arrays

Grundlagen der Objektorientierten Programmierung - Statische Arrays Statische Arrays Ein Array ist ein Behälter für Datenelemente desselben Typs. Arrays können beliebig viele Dimensionen haben. Die Standardform ist das eindimensionale Array, das man sich in Zeilenform

Mehr

Bereits behandelt: Einfache Datentypen / Variablen. Schleifen und Verzweigungen. Funktionen. Heute: Felder, Zeiger, Referenzen. Freispeicherverwaltung

Bereits behandelt: Einfache Datentypen / Variablen. Schleifen und Verzweigungen. Funktionen. Heute: Felder, Zeiger, Referenzen. Freispeicherverwaltung Kompaktkurs C++ Themen C 1 Bereits behandelt: Einfache Datentypen / Variablen Schleifen und Verzweigungen Funktionen Heute: Felder, Zeiger, Referenzen Freispeicherverwaltung Zeichenketten Kommandozeilenargumente

Mehr

Übungspaket 14 Eindimensionale Arrays

Übungspaket 14 Eindimensionale Arrays Übungspaket 14 Eindimensionale Arrays Übungsziele: Skript: Deklaration und Verwendung eindimensionaler Arrays Kapitel: 33 Semester: Wintersemester 2016/17 Betreuer: Kevin, Matthias, Thomas und Ralf Synopsis:

Mehr

3. Grundanweisungen in Java

3. Grundanweisungen in Java 3. Grundanweisungen in Java Die Grundanweisungen entsprechen den Prinzipien der strukturierten Programmierung 1. Zuweisung 2. Verzweigungen 3. Wiederholungen 4. Anweisungsfolge (Sequenz) Die Anweisungen

Mehr

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

Arrays von Objekten. 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

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren 2. Typen und Variablen 27.10./03.11.2014 Prof. Dr. Ralf H. Reussner Version 1.2 LEHRSTUHL FÜR SOFTWARE-DESIGN UND QUALITÄT (SDQ) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION

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

Kodieren Von Graphen

Kodieren Von Graphen Kodieren Von Graphen Allgemeine Anwendungen: Routenplaner Netzpläne Elektrische Schaltungen Gebäudeerkennung aus Luftaufnahmen Definitionen:? Graph Ein Graph G besteht aus einem geordneten Paar G = (V,E)

Mehr

Programmierung mit Feldern OOPM, Ralf Lämmel

Programmierung mit Feldern OOPM, Ralf Lämmel Übung: Deklarieren Sie ein entsprechendes Feld in Java! Programmierung mit Feldern OOPM, Ralf Lämmel Einführendes Beispiel Eingabe: ein Feld von int-werten public static int sum(int[] a) { int result =

Mehr

MLAN1 1 MATRIZEN 1 0 = A T =

MLAN1 1 MATRIZEN 1 0 = A T = MLAN1 1 MATRIZEN 1 1 Matrizen Eine m n Matrix ein rechteckiges Zahlenschema a 11 a 12 a 13 a 1n a 21 a 22 a 23 a 2n a m1 a m2 a m3 amn mit m Zeilen und n Spalten bestehend aus m n Zahlen Die Matrixelemente

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

C# - Einführung in die Programmiersprache Arrays, Enumeration und Collections. Leibniz Universität IT Services Anja Aue

C# - Einführung in die Programmiersprache Arrays, Enumeration und Collections. Leibniz Universität IT Services Anja Aue C# - Einführung in die Programmiersprache Arrays, Enumeration und Collections Leibniz Universität IT Services Anja Aue Arrays... speichern mehrere Werte vom gleichen Datentyp. fassen zusammenhängende Werte

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

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 6.11.07, Weitere Anweisungen Übersicht 1 Verbundanweisung 2 Bedingte Anweisung 3 Auswahlanweisung 4 for Schleife 5 while Schleife 6 do Schleife 7 break Anweisung 8 continue Anweisung 9 Leere

Mehr

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen 1 Kapitel 9 Komplexität von Algorithmen und Sortieralgorithmen Ziele 2 Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:

Mehr

Copyright, Page 1 of 5 Die Determinante

Copyright, Page 1 of 5 Die Determinante wwwmathematik-netzde Copyright, Page 1 of 5 Die Determinante Determinanten sind ein äußerst wichtiges Instrument zur Untersuchung von Matrizen und linearen Abbildungen Außerhalb der linearen Algebra ist

Mehr

Felder, Rückblick Mehrdimensionale Felder. Programmieren in C

Felder, Rückblick Mehrdimensionale Felder. Programmieren in C Übersicht Felder, Rückblick Mehrdimensionale Felder Rückblick Vereinbarung von Feldern: typ name [anzahl]; typ name = {e1, e2, e3,..., en} Die Adressierung von Feldelementen beginnt bei 0 Die korrekte

Mehr

Kapitel 4: Zeiger. Inhalt. Zeiger Zeigerarithmetik

Kapitel 4: Zeiger. Inhalt. Zeiger Zeigerarithmetik Wintersemester 2005/06 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich Informatik Lehrstuhl

Mehr

C-Propädeutikum Höhere Datentypen

C-Propädeutikum Höhere Datentypen C-Propädeutikum Höhere Datentypen Dipl.-Inf. Stefan Freitag freitag@uni-leipzig.de Universitätsrechenzentrum Universitätsbibliothek Universität Leipzig basiert auf den Originalfolien von Jörn Hoffmann

Mehr

Programmierstarthilfe SS 2008 Fakultät für Ingenieurwissenschaften und Informatik 5. Blatt Für den 26. und

Programmierstarthilfe SS 2008 Fakultät für Ingenieurwissenschaften und Informatik 5. Blatt Für den 26. und Programmierstarthilfe SS 2008 Fakultät für Ingenieurwissenschaften und Informatik 5. Blatt Für den 26. und 27.5.2008 Organisatorisches Um auf die Mailingliste aufgenommen zu werden schicke einfach eine

Mehr

Organisatorisches. drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50

Organisatorisches. drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50 Organisatorisches Vorlesung Donnerstag 8:35 bis 10:05 Übung drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50 Tutorium (Mehr oder weniger) abwechselnd Mo und Mi 10-11:30 Termine

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

Grundlagen von C# - 2

Grundlagen von C# - 2 Grundlagen von C# - 2 Marc Satkowski 20. November 2016 C# Kurs Gliederung 1. Arrays 2. Kontrollstrukturen 3. Verzweigungen Bedingte Verzweigung (if else) 4. Schleifen Kopfgesteuerte Schleife (while) Fußgesteuerte

Mehr