Programmtransformationen: Vom PRAM Algorithmus zum MPI Programm

Größe: px
Ab Seite anzeigen:

Download "Programmtransformationen: Vom PRAM Algorithmus zum MPI Programm"

Transkript

1 Programmtransformationen: Vom PRAM Algorithmus Dr. Victor Pankratius David J. Meder IPD Tichy Lehrstuhl für Programmiersysteme KIT die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH)

2 Modell und Realität Das PRAM Modell geht von N logischen Prozessoren aus. Das Rechnerbündel hat aber lediglich P < N physikalische Prozessoren Prozessvirtualisierung notwig. Das PRAM Modell geht von gemeinsamem Adressraum aus. Das Rechnerbündel verfügt jedoch über einen verteilten Speicher Datenverteilung notwig. 2

3 Datenverteilung (1) Problem: Wie verteilt man (globale) Daten auf die Speichermodule der einzelnen Prozessoren? PRAM Ansatz: bei einem N-elementigen Vektor V[0 N- 1] hält jeder Prozessor i das Datenelement V[i]. Prozessor V 3

4 Datenverteilung (2) Was tun bei P < N Prozessoren? (1) Zyklische Datenverteilung Prozessor V (2) Blockweise Datenverteilung Prozessor V

5 Datenverteilung (3) Zyklische Datenverteilung: Jeder Prozessor j bekommt alle Datenelemente i, für die gilt (i mod P) = j. Blockweise Datenverteilung: Jeder Prozessor j bekommt die Datenelemente in Segmenten der Länge N/P (bis evtl. auf den letzten): V[j* N/P (j+1)* N/P -1] 5

6 Datenverteilung (4) Gibt es weitere Verteilungsstrategien? Ja, nämlich die zufällige Verteilung (Random) und die blockzyklische Verteilung (Bcycle(k)), bei der jeweils Datenblöcke der Länge k zyklisch über die vorhanden Prozessoren verteilt werden. V Prozessor ,1 2,3 4,5 6,7 8,9 10,11 12,13 14,15 6

7 Datenverteilung (5) Bcycle(k) ist die allgemeine Verteilungsstrategie, da Zyklisch = Bcycle(1) Block = Bcycle(N/P) Frage: Was tun bei mehrdimensionalen Feldern? Je eine Bcycle(k) Verteilung pro Dimension 7

8 Datenverteilung (6) 2D Spaltenweise: Bcycle(N)/Bcycle(1) (64 Elemente auf 4 Prozessoren) oder Bcycle(N)/Bcycle(2). 8

9 Datenverteilung (7) 2D Zeilenweise Bcycle(1)/Bcycle(N) (64 Elemente auf 4 Prozessoren) oder Bcycle(2)/Bcycle(N). 9

10 Datenverteilung (8) 2D Quadrantenweise (Bcycle(N/SQRT(P))/Bcycle(N/SQRT(P))) (64 Elemente auf 4 Prozessoren) oder Bcycle(2)/Bcycle(2). 10

11 Datenverteilung (9) Bcycle(1)/Bcycle(4) (64 Elemente auf 4 Prozessoren) oder Bcycle(2)/Bcycle(1). 11

12 Daten- und Prozessverteilung Wir wissen jetzt, welche Daten auf welchen Prozessoren liegen (Datenverteilung). Jetzt müssen die N Prozesse auf die P Prozessoren verteilt werden (Prozessverteilung). 12

13 Prozessverteilung (1) Rückblick: einfaches PRAM Programm: FORALL i [0.. N-1] IN PARALLEL DO A[i] := B[i] + C[i] END Jeder gedachte Prozess/Prozessor i ist für die Berechnung des i-ten Datenelements zuständig oder: Datenelement i wird von Prozess/Prozessor i berechnet. 13

14 Prozessverteilung (2) Aus der Datenverteilung kennen wir den physikalischen Prozessor j, der Datenelement i hält. Owner-Computes-Regel (aus Übersetzerbau für parallele Programmiersprachen). Idee: Lege gedachten Prozess/Prozessor i ebenfalls auf physikalischen Prozessor j (denn dort liegen ja die benötigten Daten) Bei gegebener Datenverteilung unter Zuhilfenahme der Owner-Computes-Regel, kann man die Prozessverteilung analog zur Datenverteilung berechnen 14

15 Programmtransformation Systematik: Festlegen der Datenverteilung. Emulation von V = N/P virtuellen Prozessoren auf je einem physikalischen Prozessor (sog. Virtualisierung) Umwandeln von nichtlokalen Datenzugriffen in S / Receive Operationen. 15

16 Virtualisierung (1) Emulation von N virtuellen Prozessoren auf P realen Prozessoren. Beispiel: FORALL i : [0.. N-1] A[i] := B[i] + C[i] wird zu FORALL i : [0.. P-1] FOR v : [i*(n/p)..(i+1)*(n/p)-1] A'[v] := B'[v] + C'[v] 1*N/P N 2*N/P N/P 16

17 Virtualisierung (2) Original PRAM Programm (8 Prozessoren) Programm nach Virtualisierung (4 Prozessoren) Prozessor Prozessor A + B = C A + B = C A, B und C sind die verteilten Felder A, B und C 17

18 Virtualisierung (3) Frage: Ist die Emulation mittels einer (FOR-) Schleife zulässig? Antwort: Ja Bei asynchroner Ausführung: Die ursprünglichen Prozessoren der PRAM arbeiten vollkommen unabhängig voneinander. Diese Eigenschaft überträgt sich auf die Virtualisierungsschleife, deren einzelne Iterationen ebenfalls unabhängig sind. 18

19 Virtualisierung und Kommunikation (1) Bisher haben wir Datenverteilung bei der Virtualisierung nicht betrachtet. Wie erfolgt beim folgen Beispiel die blockweise bzw. zyklische Datenverteilung? FORALL i : [0.. N-1] IN SYNC A[i] := A[(i+1)mod N] Prozessor A A

20 Virtualisierung und Kommunikation (2a) Blockweise Datenverteilung: forall i : [0.. P-1] in parallel v := (N/P); ziel := (i-1) mod P; quelle:=(i+1) mod P; // lokale Indizierung tmp := A[0]; //merke altes A[0] for j : [0.. v-2] // verschiebe alle lokalen Werte, bis auf den letzten A[j] = A[j+1]; //se altes A[0] zum Nachbarn SEND(tmp, ziel); //rechtes Element in letzte Pos. holen A[v-1] = RECEIVE(quelle); // Synchronisation durch // SEND und RECEIVE 20

21 Virtualisierung und Kommunikation (2b) Blockweise Datenverteilung: forall i : [0.. P-1] in parallel v := (N/P); ziel := (i-1) mod P; quelle:=(i+1) mod P; // lokale Indizierung tmp := A[0]; //merke altes A[0] for j : [0.. v-2] // verschiebe alle lokalen Werte, bis auf den letzten A[j] = A[j+1]; //se altes A[0] zum Nachbarn SEND(tmp, ziel); //rechtes Element in letzte Pos. holen A[v-1] = RECEIVE(quelle); Beispiel: i=0, N=8, P=4, v=n/p=2 P0: Ziel=3, Quelle=1, snd( 0,3), A[1]=rcv(1) P1: Ziel=0, Quelle=2, snd( 2,0), A[1]=rcv(2) P2: Ziel=1, Quelle=3, snd( 4,1), A[1]=rcv(3) P3: Ziel=2, Quelle=0, snd( 6,2), A[1]=rcv(0) Prozessor A // Synchronisation durch // SEND und RECEIVE A

22 Virtualisierung und Kommunikation (3a) Zyklische Datenverteilung: forall i : [0.. P-1] in parallel v := (N/P); ziel := (i-1) mod P; quelle := (i+1) mod P; for j : [0.. v-1] // Se Wert an Nachbarn SEND(A[j], ziel); //empfange Nachbarwerte in temp. T T[j] := RECEIVE(quelle); //aktualisiere A for j : [0.. v] A[j] := T[j]; 22

23 Virtualisierung und Kommunikation (3b) Zyklische Datenverteilung: forall i : [0.. P-1] in parallel v := (N/P); ziel := (i-1) mod P; quelle := (i+1) mod P; for j : [0.. v-1] // Se Wert an Nachbarn SEND(A[j], ziel); //empfange Nachbarwerte in temp. T T[j] := RECEIVE(quelle); //aktualisiere A for j : [0.. v] A[j] := T[j]; Beispiel: i=0, N=8, P=4, v=n/p=2 P0: Ziel=3, Quelle=1; P1: Ziel=0, Quelle=2 P2: Ziel=1, Quelle=3; P3: Ziel=2, Quelle=0 j=0 P0: snd( 0,3), A[0]=rcv(1) P1: snd( 1,0), A[0]=rcv(2) P2: snd( 2,1), A[0]=rcv(3) P3: snd( 3,2), A[0]=rcv(0) Prozessor A A

24 Virtualisierung und Kommunikation (3b) Zyklische Datenverteilung: forall i : [0.. P-1] in parallel v := (N/P); ziel := (i-1) mod P; quelle := (i+1) mod P; for j : [0.. v-1] // Se Wert an Nachbarn SEND(A[j], ziel); //empfange Nachbarwerte in temp. T T[j] := RECEIVE(quelle); //aktualisiere A for j : [0.. v] A[j] := T[j]; Beispiel: j =1 P0: snd( 4,3), A[1]=rcv(1) P1: snd( 5,0), A[1]=rcv(2) P2: snd( 6,1), A[1]=rcv(3) P3: snd( 7,2), A[1]=rcv(0) Letzte Schleife: Temp. Werte in A kopieren Prozessor A A

25 Virtualisierung und Kommunikation (4) Komplexität des Programms sowie Anzahl und Art der Kommunikationsoperationen hängt direkt von der Datenverteilung ab. Vgl. Beispiel mit Blöcken: Weniger Kommunikation wg. lokaler Rotation des Arrays eine gute Datenverteilung ist ein entscheides Kriterium für die Verständlichkeit des resultieren Programms. Deswegen: VORHER über die Datenverteilung nachdenken Insbesondere wichtig: Indextransformationen, Unterscheidung zw. lokalen und nichtlokalen Zugriffen, Umwandlung von synchroner Ausführung in asynchrone mit Hilfsvariablen und Synchronisation durch Kommunikation. 25

26 Virtualisierung und Kommunikation (5) Beispiel: Reduktions-, Präfix- und Postfixoperationen Frage: Welche Datenverteilung verursacht im unteren Beispiel weniger Kommunikation? Block oder Zyklisch? 26

27 Virtualisierung und Kommunikation (6) Reduktionsoperation (Summe): Idee Bilde lokale Summe Empfange Teilergebnis anderer Prozesse, addiere auf lokale Summe auf Se Teilergebnis an entspreche Prozesse Anm.: Jedes Rechteck ist selbst ein lokaler Vektor 27

28 Virtualisierung und Kommunikation (6) Reduktionsoperation (Summe): forall i: [0.. P-1] in parallel int summe := 0; // lokale Deklaration! //lokale Summe bilden for j : [0.. (N/P)-1] summe := summe + V[j]; int spanne := 1; while (spanne < P) DO if (i MOD (2 * Spanne) = 0) // Empfänger summe := summe + RECEIVE(i + spanne); if (i MOD (2 * Spanne) = Spanne) // Ser SEND(summe, i - spanne)); Spanne := Spanne * 2; // Synchronisation implizit durch // Kommunikation Anm.: Jedes Rechteck ist selbst ein lokaler Vektor der Größe N/P (mit Grenzen 0..(N/P)-1) 28

29 Virtualisierung und Kommunikation (6) Reduktionsoperation (Summe): forall i: [0.. P-1] in parallel int summe := 0; // lokale Deklaration! //lokale Summe bilden for j : [0.. (N/P)-1] summe := summe + V[j]; int spanne := 1; while (spanne < P) DO if (i MOD (2 * Spanne) = 0) // Empfänger summe := summe + RECEIVE(i + spanne); if (i MOD (2 * Spanne) = Spanne) // Ser SEND(summe, i - spanne)); Spanne := Spanne * 2; // Synchronisation implizit durch // Kommunikation Lokale Summen bereits vorhanden Anm.: Jedes Rechteck ist selbst ein lokaler Vektor s s s s r r r r 29

30 Virtualisierung und Kommunikation (6) Reduktionsoperation (Summe): forall i: [0.. P-1] in parallel int summe := 0; // lokale Deklaration! //lokale Summe bilden for j : [0.. (N/P)-1] summe := summe + V[j]; int spanne := 1; while (spanne < P) DO if (i MOD (2 * Spanne) = 0) // Empfänger summe := summe + RECEIVE(i + spanne); if (i MOD (2 * Spanne) = Spanne) // Ser SEND(summe, i - spanne)); Spanne := Spanne * 2; // Synchronisation implizit durch // Kommunikation Lokale Summen bereits vorhanden Anm.: Jedes Rechteck ist selbst ein lokaler Vektor r s r s 30

31 Virtualisierung und Kommunikation (6) Reduktionsoperation (Summe): forall i: [0.. P-1] in parallel int summe := 0; // lokale Deklaration! //lokale Summe bilden for j : [0.. (N/P)-1] summe := summe + V[j]; int spanne := 1; while (spanne < P) DO if (i MOD (2 * Spanne) = 0) // Empfänger summe := summe + RECEIVE(i + spanne); if (i MOD (2 * Spanne) = Spanne) // Ser SEND(summe, i - spanne)); Spanne := Spanne * 2; // Synchronisation implizit durch // Kommunikation Lokale Summen bereits vorhanden Anm.: Jedes Rechteck ist selbst ein lokaler Vektor r s 31

32 Virtualisierung und Kommunikation (7) Postfixoperation (Summe) über Zahlenblöcke einzelner Prozessoren: lokalesum 0 Idee: Bilde zunächst parallel lokale Summen der einzelnen Prozessoren lokalesum i Reduktion und Austausch blockweise, addiere Teilsummen auf sum i Schreibe korrekten Postfix-Wert in das letzte Element eines jeden lokalen Arrays Postfix-Werte für Arrays lokal berechnen 32

33 Virtualisierung und Kommunikation (7) Postfixoperation (Summe) über Zahlenblöcke der einzelnen Prozessoren: forall i: [0.. P-1] in parallel spanne := 1; sum := 0; lokalesum :=0; for j : [0.. (N/P)-1] lokalesum := lokalesum + V[j]; sum := lokalesum; while (spanne < N) DO if (i >= spanne) // Ser SEND(sum, i - spanne); if (i + spanne < P) // Empfänger sum := sum + RECEIVE(i + spanne); spanne := spanne * 2; //while V[(N/P)-1] := V[(N/P)-1] + sum - lokalesum; for j : [(N/P)-2.. 0] Step -1 V[j] := V[j] + V[j+1]; //for //forall Anm: Jedes Rechteck ist selbst ein Vektor 33

34 Virtualisierung und Kommunikation (7) Postfixoperation (Summe) über Zahlenblöcke der einzelnen Prozessoren: forall i: [0.. P-1] in parallel spanne := 1; sum := 0; lokalesum :=0; for j : [0.. (N/P)-1] lokalesum := lokalesum + V[j]; sum := lokalesum; while (spanne < N) DO if (i >= spanne) // Ser SEND(sum, i - spanne); if (i + spanne < P) // Empfänger sum := sum + RECEIVE(i + spanne); spanne := spanne * 2; //while V[(N/P)-1] := V[(N/P)-1] + sum - lokalesum; for j : [(N/P)-2.. 0] Step -1 V[j] := V[j] + V[j+1]; //for //forall Aufaddieren auf lokale Summen Anm: Jedes Rechteck ist selbst ein Vektor s s s s s s s r r r r r r r 34

35 Virtualisierung und Kommunikation (7) Postfixoperation (Summe) über Zahlenblöcke der einzelnen Prozessoren: forall i: [0.. P-1] in parallel spanne := 1; sum := 0; lokalesum :=0; for j : [0.. (N/P)-1] lokalesum := lokalesum + V[j]; sum := lokalesum; while (spanne < N) DO if (i >= spanne) // Ser SEND(sum, i - spanne); if (i + spanne < P) // Empfänger sum := sum + RECEIVE(i + spanne); spanne := spanne * 2; //while V[(N/P)-1] := V[(N/P)-1] + sum - lokalesum; for j : [(N/P)-2.. 0] Step -1 V[j] := V[j] + V[j+1]; //for //forall Anm: Jedes Rechteck ist selbst ein Vektor s s s s s s r r r r r r 35

36 Virtualisierung und Kommunikation (7) Postfixoperation (Summe) über Zahlenblöcke der einzelnen Prozessoren: forall i: [0.. P-1] in parallel spanne := 1; sum := 0; lokalesum :=0; for j : [0.. (N/P)-1] lokalesum := lokalesum + V[j]; sum := lokalesum; while (spanne < N) DO if (i >= spanne) // Ser SEND(sum, i - spanne); if (i + spanne < P) // Empfänger sum := sum + RECEIVE(i + spanne); spanne := spanne * 2; //while V[(N/P)-1] := V[(N/P)-1] + sum - lokalesum; for j : [(N/P)-2.. 0] Step -1 V[j] := V[j] + V[j+1]; //for //forall Anm: Jedes Rechteck ist selbst ein Vektor [7..0] [7..1] [7..2] [7..3] [7..4] [7..5] [7..6] [7] Lokale summe über Teil-Arrays 36

37 Virtualisierung und Kommunikation (7) Postfixoperation (Summe) über Zahlenblöcke der einzelnen Prozessoren: forall i: [0.. P-1] in parallel spanne := 1; sum := 0; lokalesum :=0; for j : [0.. (N/P)-1] lokalesum := lokalesum + V[j]; sum := lokalesum; while (spanne < N) DO if (i >= spanne) // Ser SEND(sum, i - spanne); if (i + spanne < P) // Empfänger sum := sum + RECEIVE(i + spanne); spanne := spanne * 2; //while V[(N/P)-1] := V[(N/P)-1] + sum - lokalesum; for j : [(N/P)-2.. 0] Step -1 V[j] := V[j] + V[j+1]; //for //forall Berechne in jedem P letztes lokales Element Anm: Jedes Rechteck ist selbst ein Vektor [7..0] [7..1] [7..2] [7..3] [7..4] [7..5] [7..6] [7] Sum 0 =Sum i der Prozessoren Addiere Sum 0 auf letztes Element, aber ziehe korrigier lokalesum ab 37

38 Virtualisierung und Kommunikation (7) Postfixoperation (Summe) über Zahlenblöcke der einzelnen Prozessoren: forall i: [0.. P-1] in parallel spanne := 1; sum := 0; lokalesum :=0; for j : [0.. (N/P)-1] lokalesum := lokalesum + V[j]; sum := lokalesum; while (spanne < N) DO if (i >= spanne) // Ser SEND(sum, i - spanne); if (i + spanne < P) // Empfänger sum := sum + RECEIVE(i + spanne); spanne := spanne * 2; //while V[(N/P)-1] := V[(N/P)-1] + sum - lokalesum; SUM for j : [(N/P)-2.. 0] Step -1 V[j] := V[j] + V[j+1]; //for //forall lokalesum V[(N/P)-1] Berechne in jedem P letztes lokales Element Anm: Jedes Rechteck ist selbst ein Vektor [7..0] [7..1] [7..2] [7..3] [7..4] [7..5] [7..6] [7] Sum 0 =Sum i der Prozessoren Addiere Sum 0 auf letztes Element, aber ziehe korrigier lokalesum ab 38

39 Mehrdimensionale Kommunikation (1) Bei mehrdimensionalen Feldern verkompliziert sich die Kommunikationsberechnung, da zusätzlich eine Abbildung der 2D-Datentopologie auf die eindimensionale Nummerierung der Prozessoren stattfinden muss. Vereinfachung: Verwe virtuelle Topologien in MPI. Dann ist Kommunikation rechts, links, unten, oben möglich. 39

40 Mehrdimensionale Kommunikation (2) Datenverteilung ist im mehrdimensionalen Fall extrem wichtig, da sich in der Regel sogenannte Oberflächeneffekte ausnutzen lassen. Beispiel: 2D Block Verteilung (Kantenlänge k) k 2 Berechnungen, aber bei geeigneter Datenverteilung lediglich 4*k Kommunikationen 40

41 Beispiel Jacobi-Iteration (1) In einem N*N Feld wird folge Iteration gerechnet, bis die Änderungen kleiner als eine vorgegebene Schranke sind: forall i: [1.. N-2] in sync forall j: [1.. N-2] in sync A[i, j] += theta/4 * (A[i, j+1] + A[i, j-1] + A[i-1, j] + A[i+1, j]); i,j-1 i-1,j i,j i+1,j i,j+1 (Feldindizes jeweils 0..N-1; N² Prozessoren) 41

42 Beispiel Jacobi-Iteration (2) Idee: Feld in Blöcke aufteilen, mit Rändern für die Nachbarschaft (Überlappungsbereich). Rechenbereich Überlappung 42

43 Beispiel Jacobi-Iteration (3) Damit besteht eine Iteration aus: 1. Ränder austauschen 2. Iteration auf dem lokalen Block 3. größte Änderung pro Block bestimmen 4. Maximum-Reduktion, um Konvergenz zu bestimmen (oder Vergleich mit Schranke mit folger Oder-Reduktion des booleschen Ergebnisses). Optimierung: nicht Einzelelemente sen, sondern jeden Rand als Block. Kommunikationen:4k pro k x k Block. Rechenoperationen: k 2 pro Block. 43

p max = 4 T = 8 Work = 28 3 I = Work / T = 3,5 2 Cost = p max * T = 32 U = I / p max = 87,5% 1

p max = 4 T = 8 Work = 28 3 I = Work / T = 3,5 2 Cost = p max * T = 32 U = I / p max = 87,5% 1 Massivparallele Modelle und Architekturen Wintersemester 2010/2011 Lösungsvorschlag 1. Übung 1. Aufgabe: Leistungsbewertung paralleler Systeme Betrachtet werden soll der Odd-Even-Sort-Algorithmus mit n

Mehr

OpenMP am Beispiel der Matrizenmultiplikation

OpenMP am Beispiel der Matrizenmultiplikation OpenMP am Beispiel der Matrizenmultiplikation David J. Meder, Dr. Victor Pankratius IPD Tichy Lehrstuhl für Programmiersysteme KIT die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe

Mehr

Kommunikationsmodelle

Kommunikationsmodelle Kommunikationsmodelle Dr. Victor Pankratius David J. Meder IPD Tichy Lehrstuhl für Programmiersysteme KIT die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) Grundlegende

Mehr

Präfix-Summe. Das Schweizer Offiziersmesser der Parallelen Algorithmen. Parallele Rechenmodelle Präfix-Summe Brents Lemma Anwendungen

Präfix-Summe. Das Schweizer Offiziersmesser der Parallelen Algorithmen. Parallele Rechenmodelle Präfix-Summe Brents Lemma Anwendungen Präfix-Summe Das Schweizer Offiziersmesser der Parallelen Algorithmen Parallele Rechenmodelle Präfix-Summe Brents Lemma Anwendungen Parallele Rechenmodelle Beispiel: Summieren von Zahlen Verlauf des Rechenprozesses:

Mehr

Peg-Solitaire. Florian Ehmke. 29. März / 28

Peg-Solitaire. Florian Ehmke. 29. März / 28 Peg-Solitaire Florian Ehmke 29. März 2011 1 / 28 Gliederung Einleitung Aufgabenstellung Design und Implementierung Ergebnisse Probleme / Todo 2 / 28 Einleitung Das Spiel - Fakten Peg-33 33 Löcher, 32 Steine

Mehr

Konzepte der parallelen Programmierung

Konzepte der parallelen Programmierung Fakultät Informatik, Institut für Technische Informatik, Professur Rechnerarchitektur Konzepte der parallelen Programmierung Parallele Programmiermodelle Nöthnitzer Straße 46 Raum 1029 Tel. +49 351-463

Mehr

Reihungen. Prof. Dr. Christian Böhm. In Zusammenarbeit mit Gefei Zhang. WS 07/08

Reihungen. Prof. Dr. Christian Böhm. In Zusammenarbeit mit Gefei Zhang.   WS 07/08 Reihungen Prof. Dr. Christian Böhm In Zusammenarbeit mit Gefei Zhang http://www.dbs.ifi.lmu.de/lehre/nfinfosw WS 07/08 2 Ziele Die Datenstruktur der Reihungen verstehen: mathematisch und im Speicher Grundlegende

Mehr

Einführung in die Programmiersprache Julia Vorlesung Computerphysik Sommersemester 2018 Ralf Bulla Universität zu Köln

Einführung in die Programmiersprache Julia Vorlesung Computerphysik Sommersemester 2018 Ralf Bulla Universität zu Köln Einführung in die Programmiersprache Julia Vorlesung Computerphysik Sommersemester 2018 Ralf Bulla Universität zu Köln 1 Einstieg Das erste Programm: a = 1 println(a) Ein Programm ist eine Abfolge von

Mehr

Objektorientierte Programmierung VL: Prof. Dr. Marco Block-Berlitz - Freie Universität Berlin Proinformatik III

Objektorientierte Programmierung VL: Prof. Dr. Marco Block-Berlitz - Freie Universität Berlin Proinformatik III Objektorientierte Programmierung VL: Prof. Dr. Marco Block-Berlitz - Freie Universität Berlin Proinformatik III Text: Hinnerk van Bruinehsen - Grafiken: Jens Fischer powered by SDS.mint SoSe 2011 1 Teil

Mehr

Vorlesung "Verteilte Systeme" Sommersemester 1999. Verteilte Systeme. Adreßraum. Rechner. Verteilte Systeme, Sommersemester 1999 Folie 19.

Vorlesung Verteilte Systeme Sommersemester 1999. Verteilte Systeme. Adreßraum. Rechner. Verteilte Systeme, Sommersemester 1999 Folie 19. Verteilte Systeme 19. Distributed Shared Memory Sharing!! No Sharing! Sharing? Evolution der Berechnungsmodelle Vergangenheit Gemeinsamer Speicher Einzelrechner Gegenwart Nachrichtenkommunikation Verteilte

Mehr

Paralleler Programmentwurf nach Foster

Paralleler Programmentwurf nach Foster Paralleler Programmentwurf nach Foster Die PCAM-Methode Partitionierung - ermittle maximale Parallelität Communication - ermittle Datenabhängigkeiten Agglomeration - erhöhe die Granularität der Aufgaben

Mehr

Programmierung. Rückblick. VWA - Programmierung Winter Algorithmus. Programmiersprache. Variable. Zuweisung. Bedingung.

Programmierung. Rückblick. VWA - Programmierung Winter Algorithmus. Programmiersprache. Variable. Zuweisung. Bedingung. Programmierung 1 Rückblick Algorithmus Programmiersprache Variable Zuweisung Bedingung Schleife (c) Peter Sturm, University of Trier 1 3 Aufgabe: Viele, viele bunte Smarties Rechengeschwindigkeit CPU 5

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Prof. Dr. Ralf Möller Universität zu Lübeck Institut für Informationssysteme Stefan Werner (Übungen) sowie viele Tutoren Teilnehmerkreis und Voraussetzungen Studiengänge

Mehr

Effiziente Algorithmen 2

Effiziente Algorithmen 2 Effiziente Algorithmen 2 Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 2009 Übersicht Algorithmen

Mehr

Algorithmen und Datenstrukturen (für ET/IT) Wiederholung: Ziele der Vorlesung. Wintersemester 2012/13. Dr. Tobias Lasser

Algorithmen und Datenstrukturen (für ET/IT) Wiederholung: Ziele der Vorlesung. Wintersemester 2012/13. Dr. Tobias Lasser Algorithmen und Datenstrukturen (für ET/IT) Wintersemester 2012/13 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Wiederholung: Ziele der Vorlesung Wissen: Algorithmische

Mehr

Parallele Algorithmen in der Bildverarbeitung

Parallele Algorithmen in der Bildverarbeitung Seminar über Algorithmen - SoSe 2009 Parallele Algorithmen in der Bildverarbeitung von Christopher Keiner 1 Allgemeines 1.1 Einleitung Parallele Algorithmen gewinnen immer stärker an Bedeutung. Es existieren

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Wintersemester 2012/13 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Wiederholung: Ziele der Vorlesung Wissen: Algorithmische

Mehr

Rechnerarchitektur. Lösungsvorschlag 6. Übung. Sommersemester Aufgabe: Zyklische Verschiebung

Rechnerarchitektur. Lösungsvorschlag 6. Übung. Sommersemester Aufgabe: Zyklische Verschiebung Rechnerarchitektur Lösungsvorschlag 6. Übung Sommersemester 2010 Fachgebiet Rechnerarchitektur Prof. R. Hoffmann Patrick Ediger 1. Aufgabe: Zyklische Verschiebung Gegeben sei eine Folge von n Variablen

Mehr

Computergrafik Universität Osnabrück, Henning Wenke,

Computergrafik Universität Osnabrück, Henning Wenke, Computergrafik Universität Osnabrück, Henning Wenke, 2012-05-14 Kapitel V: Modeling Transformation & Vertex Shader 5.1 Vertex Definitionen: Vertex Vertex Computergrafik Mathematischer Punkt auf einer Oberfläche

Mehr

Kapitel 1 Parallele Modelle Wie rechnet man parallel?

Kapitel 1 Parallele Modelle Wie rechnet man parallel? PRAM- PRAM- DAG- R UND R Coles und Kapitel 1 Wie rechnet man parallel? Vorlesung Theorie Paralleler und Verteilter Systeme vom 11. April 2008 der Das DAG- Das PRAM- Das werkmodell Institut für Theoretische

Mehr

Kombinatorische Optimierung

Kombinatorische Optimierung Juniorprof. Dr. Henning Meyerhenke 1 Henning Meyerhenke: KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Vorlesung 16 Programm: Einführung

Mehr

Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems

Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems 4. Algorithmen Motivation Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems Der Begriff Algorithmus geht auf den Gelehrten Muhammad al-chwarizmi zurück, der um

Mehr

Automatische Parallelisierung

Automatische Parallelisierung MPI und OpenMP in HPC Anwendungen findet man immer häufiger auch den gemeinsamen Einsatz von MPI und OpenMP: OpenMP wird zur thread-parallelen Implementierung des Codes auf einem einzelnen Rechenknoten

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

Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems

Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems 4. Algorithmen Motivation Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems Der Begriff Algorithmus geht auf den Gelehrten Muhammad al-chwarizmi zurück, der um

Mehr

Algorithmische Geometrie: Arrangements und

Algorithmische Geometrie: Arrangements und Algorithmische Geometrie: Arrangements und Dualität Nico Düvelmeyer WS 2009/2010, 19.1.2010 Überblick 1 Strahlenverfolgung und Diskrepanz 2 Dualität Dualitäts-Abbildung Transformation des Problems zur

Mehr

Zentralübung Grundlagen der Programmierung

Zentralübung Grundlagen der Programmierung Zentralübung Grundlagen der Programmierung Bastian Cramer Standardbelegungen für Variablen lokale Variablen müssen initialisiert werden! Ansonsten gilt: 2 Aufgabe 1: while Schleife Quersumme einer beliebigen

Mehr

Parallele und verteilte Programmierung

Parallele und verteilte Programmierung Thomas Rauber Gudula Rünger Parallele und verteilte Programmierung Mit 165 Abbildungen und 17 Tabellen Jp Springer Inhaltsverzeichnis 1. Einleitung 1 Teil I. Architektur 2. Architektur von Parallelrechnern

Mehr

OpenCL. Programmiersprachen im Multicore-Zeitalter. Tim Wiersdörfer

OpenCL. Programmiersprachen im Multicore-Zeitalter. Tim Wiersdörfer OpenCL Programmiersprachen im Multicore-Zeitalter Tim Wiersdörfer Inhaltsverzeichnis 1. Was ist OpenCL 2. Entwicklung von OpenCL 3. OpenCL Modelle 1. Plattform-Modell 2. Ausführungs-Modell 3. Speicher-Modell

Mehr

Kapitel 10. Komplexität von Algorithmen und Sortieralgorithmen

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

Mehr

Tag 4 Repetitorium Informatik (Java)

Tag 4 Repetitorium Informatik (Java) Tag 4 Repetitorium Informatik (Java) Dozent: Michael Baer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Arrays (Reihungen)

Mehr

Schleifen Datenfelder (Arrays) Verzweigungen

Schleifen Datenfelder (Arrays) Verzweigungen Schleifen Datenfelder (Arrays) Verzweigungen Vektoren, Matrizen, Tabellen for, while, foreach, if-else und switch-case Dr. Beatrice Amrhein Überblick Schleifen o for, while, foreach Eindimensionale Arrays

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Übung Simon Wacker Karlsruher Institut für Technologie Wintersemester 2015/2016 GBI Grundbegriffe der Informatik Karlsruher Institut für Technologie 1 / 13 Programmiersprachen

Mehr

Crashkurs: MATLAB (Teil II)

Crashkurs: MATLAB (Teil II) Crashkurs: MATLAB (Teil II) Übungsaufgaben Im Rahmen des Mentorings (SoSe 209) 0.04.209 Funktionen, Kontrollstrukturen, Abbildungen Hinweis. Schreiben Sie jede der folgen Aufgaben in eine eigene Skript-Datei

Mehr

Lösen der Matrizengleichung

Lösen der Matrizengleichung Lösen der Matrizengleichung Oliver Deussen Lösungsverfahren K 1 letztes Kapitel: Berechnung der Formfaktoren F außerdem: B: zu berechnende Strahlung, E: gegebenes Eigenleuchten nun: Wie löst man K B =

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

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn Ideen und Konzepte der Informatik Programme und Algorithmen Kurt Mehlhorn 26. Oktober 2015 Programme und Algorithmen Programmiersprache = Kunstsprache mit genau definierter Syntax (was ist ein zulässiger

Mehr

Programmieren I. Arrays Heusch 7.2 Ratz Institut für Angewandte Informatik

Programmieren I. Arrays Heusch 7.2 Ratz Institut für Angewandte Informatik Programmieren I Arrays Heusch 7.2 Ratz 5.1 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Arrays: Definition Arrays (dt. Felder) dienen zum Speichern mehrerer gleichartiger Daten

Mehr

7. Sortieren Lernziele. 7. Sortieren

7. Sortieren Lernziele. 7. Sortieren 7. Sortieren Lernziele 7. Sortieren Lernziele: Die wichtigsten Sortierverfahren kennen und einsetzen können, Aufwand und weitere Eigenschaften der Sortierverfahren kennen, das Problemlösungsparadigma Teile-und-herrsche

Mehr

Der folgende Vortrag basiert auf dem Text A Polynomial Time Algorithm for the N-Queens Problem von Rok Sosic und Jun Gu aus dem Jahre 1990.

Der folgende Vortrag basiert auf dem Text A Polynomial Time Algorithm for the N-Queens Problem von Rok Sosic und Jun Gu aus dem Jahre 1990. Ein polynomieller Algorithmus für das N-Damen Problem 1 Einführung Der folgende Vortrag basiert auf dem Text A Polynomial Time Algorithm for the N-Queens Problem von Rok Sosic und Jun Gu aus dem Jahre

Mehr

Tag 3 Repetitorium Informatik (Java)

Tag 3 Repetitorium Informatik (Java) Tag 3 Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Typkonvertierung

Mehr

Kapitel 5 Deklaration und Sichtbarkeitsbereich

Kapitel 5 Deklaration und Sichtbarkeitsbereich Kapitel 5 Deklaration und Sichtbarkeitsbereich Korbinian Molitorisz IPD Tichy Lehrstuhl für Programmiersysteme KIT die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) Deklarationen:

Mehr

8.1.3 Operation Build-Max-Heap Operation zur Konstruktion eines Heaps Eingabe: Feld A[1..n], n = länge(a) BUILD-MAX-HEAP (A)

8.1.3 Operation Build-Max-Heap Operation zur Konstruktion eines Heaps Eingabe: Feld A[1..n], n = länge(a) BUILD-MAX-HEAP (A) Stand der Vorlesung: Datenstruktur Heap: fast vollständiger Binärbaum MaxHeap: sortierter Heap, größtes Element an Wurzel Sortierverfahren: HeapSort: Sortieren eines Feldes A[1.. n] Idee: in place: Feld

Mehr

Übung 04 Mehrkörper Keplerproblem

Übung 04 Mehrkörper Keplerproblem Übung 04 Mehrkörper Keplerproblem 1 1 Lösung 1.1 Skizzieren des Algorithmus Aufgabe 1 1. Erstellen Sie skizzenhaft eine Möglichkeit der Berechnung aller Kräfte einer beliebigen Anzahl von Himmelskörpern.

Mehr

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download Organisatorisches Folien (u.a.) gibt's auf der Lva-Homepage zum Download Diesen Mi erstes Tutorium (15-17) Ab nächster Woche montags 10-12 (jeweils im Computerraum) 17.10.2017 IT I - VO 3 1 Organisatorisches

Mehr

Rechnernetze Übung 10. Frank Weinhold Professur VSR Fakultät für Informatik TU Chemnitz Juni 2011

Rechnernetze Übung 10. Frank Weinhold Professur VSR Fakultät für Informatik TU Chemnitz Juni 2011 Rechnernetze Übung 10 rank Weinhold Professur VSR akultät für Informatik TU hemnitz Juni 2011 Das Weiterleiten (Routing) erfüllt die wichtige ufgabe, einzelne Teilstrecken des Kommunikationsnetzes so zu

Mehr

Einführung in die Programmierung (MA8003)

Einführung in die Programmierung (MA8003) Theorie 2.2: Schleifen, Vektorisierung, bedingte Ausführung Dr. Lorenz John Technische Universität München Fakultät Mathematik, Lehrstuhl für Numerische Mathematik M2 05.10.2016 Numerische Mathematik M2

Mehr

Automatisches Parallelisieren

Automatisches Parallelisieren Automatisches Parallelisieren Vorlesung im Wintersemester 2010/11 Eberhard Zehendner FSU Jena Thema: Datenabhängigkeitsanalyse Eberhard Zehendner (FSU Jena) Automatisches Parallelisieren Datenabhängigkeitsanalyse

Mehr

Control Beispiel. Control wird als kombinatorische Schaltung realisiert. Hierzu die Wahrheitstabelle: Control

Control Beispiel. Control wird als kombinatorische Schaltung realisiert. Hierzu die Wahrheitstabelle: Control Control Beispiel Store R1 4 Bit Register R1 SUB 4 Bit Register R2 Store R2 R2 Bit 0 Control wird als kombinatorische Schaltung realisiert. Hierzu die Wahrheitstabelle: Eingabe R2 Bit 0 Zero 0 0 Ausgabe

Mehr

9. Rekursion. 1 falls n 1 n (n 1)!, andernfalls. Experiment: Die Türme von Hanoi. Links Mitte Rechts. Mathematische Rekursion

9. Rekursion. 1 falls n 1 n (n 1)!, andernfalls. Experiment: Die Türme von Hanoi. Links Mitte Rechts. Mathematische Rekursion Experiment: Die Türme von Hanoi. Rekursion Mathematische Rekursion, Terminierung, der Aufrufstapel, Beispiele, Rekursion vs. Iteration Links Mitte Rechts Mathematische Rekursion Viele mathematische Funktionen

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

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

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

Gedächtnis. Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet. Zugriff. Gedächtnis Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet Hauptspeicher 38265 Telefon CPU Gedächtnis Vorlesender Zugriff Verarbeitungseinheit

Mehr

Zelluläre Automaten. Zelluläre Automaten sind einfache Simulationssysteme zur Untersuchung von komplexen Interaktionsmuster

Zelluläre Automaten. Zelluläre Automaten sind einfache Simulationssysteme zur Untersuchung von komplexen Interaktionsmuster Motivation sind einfache Simulationssysteme zur Untersuchung von komplexen Interaktionsmuster einfache Zellen räumlich angeordnet einfache Interaktionsmuster (Beziehungen zwischen benachbarten Zellen)

Mehr

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn Ideen und Konzepte der Informatik Programme und Algorithmen Kurt Mehlhorn November 2016 Algorithmen und Programme Algorithmus = Schritt-für-Schritt Vorschrift zur Lösung eines Problems. Formuliert man

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen Lerneinheit : Dynamisches Programmieren Prof. Dr. Christoph Karg Studiengang Informatik Hochschule Aalen Sommersemester.. Einleitung Diese Lerneinheit widmet sich einer

Mehr

...imbeispiel: Die Konkatenation der Blätter des Ableitungsbaums t bezeichnen wir auch mit yield(t). liefert die Konkatenation: name int + int.

...imbeispiel: Die Konkatenation der Blätter des Ableitungsbaums t bezeichnen wir auch mit yield(t). liefert die Konkatenation: name int + int. Die Konkatenation der Blätter des Ableitungsbaums t bezeichnen wir auch mit yield(t)....imbeispiel: E 0 E 1 + T 1 T 0 F 2 T 1 F 2 int F 1 int name liefert die Konkatenation: name int + int. 273 Die Grammatik

Mehr

IT-Security. Teil 8b: Rechnen mit beliebiger Genauigkeit Algorithmen

IT-Security. Teil 8b: Rechnen mit beliebiger Genauigkeit Algorithmen IT-Security Teil 8b: Rechnen mit beliebiger Genauigkeit Algorithmen 06.06.17 1 Überblick Potenzieren Quadrieren Euklid'scher Algorithmus In den meisten Fällen wird nur mit positiven Werten gerechnet. Bei

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren 6. Arrays 23.11.2016 Jun.-Prof. Dr.-Ing. Anne Koziolek Version 1.1 ARBEITSGRUPPE ARCHITECTURE-DRIVEN REQUIREMENTS ENGINEERING (ARE) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION

Mehr

Elementare Konzepte von

Elementare Konzepte von Elementare Konzepte von Programmiersprachen Teil 2: Anweisungen (Statements) Kapitel 6.3 bis 6.7 in Küchlin/Weber: Einführung in die Informatik Anweisungen (statements) in Java Berechnung (expression statement)

Mehr

Ideen und Konzepte der Informatik

Ideen und Konzepte der Informatik Ideen und Konzepte der Informatik Programme und Algorithmen Antonios Antoniadis 23. Oktober 2017 Algorithmen und Programme Algorithmus Schritt-für-Schritt Vorschrift zur Lösung eines Problems. Formuliert

Mehr

Kapitel 3: Sortierverfahren Gliederung

Kapitel 3: Sortierverfahren 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

Sprechen Sie Java? Hanspeter Mössenböck. Tm\ dpunkt.verlag. Eine Einführung in das systematische Programmieren

Sprechen Sie Java? Hanspeter Mössenböck. Tm\ dpunkt.verlag. Eine Einführung in das systematische Programmieren Hanspeter Mössenböck Sprechen Sie Java? Eine Einführung in das systematische Programmieren 3., überarbeitete und erweiterte Auflage Tm\ dpunkt.verlag 1 Grundlagen 1 1.1 Daten und Befehle 2 1.2 Algorithmen

Mehr

Kap 7. Funktionen und Arrays

Kap 7. Funktionen und Arrays Kap 7. Funktionen und Arrays Elementare Algorithmen Allgemein Mathematik Text Eingabe ٧ Skalarprodukt wie Allgemein Ausgabe ٧ Länge ersetzen Summation Winkel Laenge Maximum ٧ Polynome berechnen ausschneiden

Mehr

Schriftliche Prüfung

Schriftliche Prüfung OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG FAKULTÄT FÜR INFORMATIK Schriftliche Prüfung im Fach: Rechnersysteme Studiengang: Bachelor (PF CSE / IF; WPF CV / WIF) am: 30. Juli 2008 Bearbeitungszeit: 120 Minuten

Mehr

Einführung in die objektorientierte Programmierung mit C++

Einführung in die objektorientierte Programmierung mit C++ Prof. Dr. Thomas Klinker FB Elektrotechnik und Informatik 08. 03. 2007 Projekt im 4. Semester Elektrotechnik: Einführung in die objektorientierte Programmierung mit C++ Aufgabe 1: Schreiben Sie ein Programm,

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

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn Ideen und Konzepte der Informatik Programme und Algorithmen Kurt Mehlhorn Algorithmen und Programme Algorithmus Schritt-für-Schritt Vorschrift zur Lösung eines Problems. Formuliert man umgangssprachlich,

Mehr

ÜBUNGS-BLOCK 7 LÖSUNGEN

ÜBUNGS-BLOCK 7 LÖSUNGEN ÜBUNGS-BLOCK 7 LÖSUNGEN Aufgabe 1: Gegeben ist folgender Code: Auto[] array = new Auto[3]; // Alle Autos im Array tunen: for (int i = 1; i

Mehr

Grundlagen: Algorithmen und Datenstrukturen

Grundlagen: Algorithmen und Datenstrukturen Technische Universität München Fakultät für Informatik Lehrstuhl für Effiziente Algorithmen Dr. Hanjo Täubig Tobias Lieber Sommersemester 2011 Übungsblatt 1 16. September 2011 Grundlagen: Algorithmen und

Mehr