Einfache Arrays. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung

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

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

Arrays von Objekten. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung

Kontrollstrukturen: Wiederholungsanweisungen

Kontrollstrukturen: Wiederholungsanweisungen

Kontrollstrukturen: Wiederholungsanweisungen

Arrays Fortgeschrittene Verwendung

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

Variablen. int Flugzeug. float. I write code Hund. String. long. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel

Grunddatentypen, Ausdrücke und Variablen

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

Rekursion. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung

Ausgabe:

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 9. Arrays. Arrays 1

Rekursion. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung

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

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

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

Grunddatentypen, Ausdrücke und Variablen Typkonversion, Überprüfen und Auswerten von Ausdrücken

Übungsstunde 6. Einführung in die Programmierung

Einführung in die Programmierung I. 2.4 Felder. Thomas R. Gross. Department Informatik ETH Zürich

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

Grunddatentypen, Ausdrücke und Variablen Typkonversion, Überprüfen und Auswerten von Ausdrücken

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Wie entwerfe ich ein Programm?

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Informatik II Prüfungsvorbereitungskurs

Universität München, Hans-Peter Kriegel und Thomas Seidl Informatik II a[0] a[1] a[2] a[3] a[n 1]

Zentralübung Grundlagen der Programmierung

10. Felder (Arrays) Teil 2. Java-Beispiele: Echo.java Primzahlen.java Monate.java. K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16

Schwerpunkte. 10. Felder (Arrays) Grundprinzip von Arrays. Klassifikation von Typen in Programmiersprachen

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

Kapitel 2: Grundelemente der Programmierung

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

Beispielprüfung CuP WS 2015/2016

Vorbereitende Aufgaben

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

Ausnahmen. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung

Informatik II Übung, Woche 10

Ausnahmen. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung

Übungsstunde 5. Einführung in die Programmierung

Ausdrücke der Programmiersprache Java

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

Dr. Monika Meiler. Inhalt

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

Computeranwendung und Programmierung (CuP)

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen

Übungsblatt 1. Java Vorkurs (WS 2017)

Klausur zur Vorlesung Einführung in die Programmierung

Java - Programmierung - Prozedurale Programmierung 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 18/19. Klassen. Dr. Philipp Wendler

float: Fließkommazahl nach IEEE 754 Standard mit 32 bit

1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte)

Übung Informatik I - Programmierung - Blatt 2

Grafische Benutzeroberflächen

Institut für Informatik

Informatik II. Woche 15, Giuseppe Accaputo

Übungsstunde 3. Einführung in die Programmierung

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 13. Listen. Listen 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 12. Listen. Listen 1

Grunddatentypen, Ausdrücke und Variablen Typkonversion, Überprüfen und Auswerten von Ausdrücken

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Endklausur 25. September 2012

Klassen, Vererbung, Benutzereingabe

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

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

Test zu Grundlagen der Programmierung Leitung: Susanne Guth/Michael Hahsler. 31. Jänner 2003

Tag 8 Repetitorium Informatik (Java)

Informatik II. Woche 10, Giuseppe Accaputo

Variablenarten. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein

Institut für Informatik

Arrays und Schleifen

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

Einstieg in die Informatik mit Java

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

Übungsblatt 10. Thema: Abstrakte Datentypen, Datenstrukturen in Java

Geoinformatik und Vermessung Prüfung 502 : Informatik (JAVA)

Fragenkatalog ESOP WS 16/17

Software Entwicklung 1

Grunddatentypen, Ausdrücke und Variablen Typkonversion, Überprüfen und Auswerten von Ausdrücken

Grunddatentypen, Ausdrücke und Variablen Typkonversion, Überprüfen und Auswerten von Ausdrücken

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

Grundlagen der Programmierung Teil1 Einheit III Okt. 2010

Informatik. Wiederholung Felder (Arrays), string. Vorlesung

Vorkurs Informatik WiSe 16/17

Vorlesung Programmieren

Einführung in die Programmierung WS 2009/10. Übungsblatt 5: Typen, Variablen und einfache Methoden in Java

3.2 Datentypen und Methoden

Einführung in C. Alexander Batoulis. 5. Mai Fakutltät IV Technische Universität Berlin

Transkript:

Dr. Philipp Wendler Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung WS18/19 https://www.sosy-lab.org/teaching/2018-ws-infoeinf/

Arrays: Wiederholung Ein Array ist ein Tupel von Elementen gleichen Typs a = [w 1,w 2,w 3,,w n ] Elemente müssen den gleichen Typ haben Grunddatentyp z.b. int-array[1,2,3,4], aber nicht [1,1.0,2] Klassentyp (später) Arraytyp z.b. doppeltes int-array [ [1,2],[3,4] ], aber nicht [ [1,2],[1.0,2.0] ] Reihenfolge relevant: [w 1,w 2 ]!=[w 2,w 1 ] Zugriff auf ein bestimmtes Element möglich z.b. a[0] = w 1 Achtung! Array: [ w 1, w 2, w 3,,w n ] Position: 0 1 2 n-1 2

Arrays: Elemente gleichen Typs Ein Array ist ein Tupel von Elementen gleichen Typs a = [w 1,w 2,w 3,,w n ] Welche Anweisung wird vom Compiler nicht akzeptiert? a) int[] a = {1,2; b) int[] a = {1,2.0; c) double[] a = {1,2; d) double[] a = {1,2.0; 3

Arrays: Elemente gleichen Typs Ein Array ist ein Tupel von Elementen gleichen Typs a = [w 1,w 2,w 3,,w n ] Welche Anweisung wird vom Compiler nicht akzeptiert? a) int[] a = {1,2; b) int[] a = {1,2.0; c) double[] a = {1,2; d) double[] a = {1,2.0; Wiederholung von ZÜ3: automatische Typkonversion zum größeren Typ byte < short < int < long < float < double 4

Aufgabe 1: Arithmetisches Mittel Schreibe eine Methode, die das arithmetische Mittel aller Zahlen in einem int-array berechnet. Algorithmusidee: Summiere alle Elemente des Arrays auf Teile die Summe durch die Anzahl der Elemente 5

Aufgabe 1: Arithmetisches Mittel (Lösungsidee 1) public static double durchschnitt(int[] daten) { int sum = 0; for (int i = 0; i < daten.length; i++) sum = sum + daten[i]; return sum / daten.length; Welches Problem tritt in dieser Methode auf? 6

Aufgabe 1: Arithmetisches Mittel (Lösungsidee 1) public static double durchschnitt(int[] daten) { int sum = 0; for (int i = 0; i < daten.length; i++) sum = sum + daten[i]; return sum / daten.length; Welches Problem tritt in dieser Methode auf? a) Die Methode darf nicht static sein. b) Es werden nicht alle Elemente aufsummiert. c) Die Division liefert nicht das gewünschte Ergebnis. d) Es kann eine Division durch 0 auftreten. e) Es tritt kein Problem auf. 7

Aufgabe 1: Arithmetisches Mittel (Lösungsidee 2) public static double durchschnitt(int[] daten) { int sum = 0; for (int i = 0; i < daten.length; i++) sum = sum + daten[i]; return (double)sum / daten.length; 8

Aufgabe 1: Arithmetisches Mittel (Lösungsidee 2) public static double durchschnitt(int[] daten) { int sum = 0; for (int i = 0; i < daten.length; i++) sum = sum + daten[i]; return (double)sum / daten.length; Array daten muss mind. ein Element enthalten, sonst Division durch 0! 9

Aufgabe 2: Sortierung (I) Schreibe eine Methode, die überprüft, ob ein double-array aufsteigend sortiert ist. Algorithmusidee: Durchlaufe das Eingabe-Array elementweise Falls ein Element größer als sein rechter Nachbar ist, gib false zurück Falls alle Elemente kleiner als ihr rechter Nachbar sind, gib true zurück 10

Aufgabe 2: Sortierung (I) Schreibe eine Methode, die überprüft, ob ein double-array aufsteigend sortiert ist. Algorithmusidee: Durchlaufe das Eingabe-Array elementweise Falls ein Element größer als sein rechter Nachbar ist, gib false zurück Falls alle Elemente kleiner als ihr rechter Nachbar sind, gib true zurück public static boolean istsortiert(double[] arr) { for (int i = 0; i < arr.length-1; i++) { if (arr[i] > arr[i+1]) return false; return true; sofortige Beendigung der Methode 11

Aufgabe 2: Sortierung (II) Schreibe eine Methode, die überprüft, ob ein double-array aufsteigend sortiert ist. Algorithmusidee: Durchlaufe das Eingabe-Array elementweise Falls ein Element größer als sein rechter Nachbar ist, gib false zurück Falls alle Elemente kleiner als ihr rechter Nachbar sind, gib true zurück public static boolean istsortiert(double[] arr) { for (int i = 1; i < arr.length; i++) { if (arr[i - 1] > arr[i]) return false; Achtung: Beginne mit return true; dem Index 1, sonst ist arr[i-1] nicht definiert. 12

Aufgabe 2: Sortierung (III) public static boolean istsortiert(double[] arr) { for (int i = 1; i < arr.length; i++) { if (arr[i - 1] > arr[i]) return false; return true; Wann tritt in dieser Methode ein Problem auf? a) falls arr leer ist. b) falls arr nur ein Element hat. c) falls arr zwei Elemente hat. d) nie. 13

Aufgabe 3a: Kleines Einmaleins mit Arrays Gib das kleine Einmaleins auf der Konsole mit Hilfe von Arrays aus. Algorithmusidee: (siehe ZÜ5) x * y = produkt Erzeuge ein leeres doppeltes Array (=> Matrix) Für x: gehe die Zahlen von 1 bis 10 durch Für y: gehe nochmal die Zahlen 1 bis 10 durch für jede Möglichkeit der Zahl x Berechne das Produkt aus den Zahlen x und y und speichere den Wert in der entsprechenden Zelle des doppelten Arrays. 14

Aufgabe 3a: Kleines Einmaleins mit Arrays public class EinmaleinsArrays { public static void main(string[] args) { int[][] elements = new int[10][10]; for (int i = 1; i <= 10; i++) { for (int j = 1; j <= 10; j++) { elements[i-1][j-1] = i*j; 15

Aufgabe 3a: Kleines Einmaleins mit Arrays public class EinmaleinsArrays { public static void main(string[] args) { Erzeuge ein doppeltes leeres Array int[][] elements = new int[10][10]; for (int i = 1; i <= 10; i++) { for (int j = 1; j <= 10; j++) { elements[i-1][j-1] = i*j; 16

Aufgabe 3a: Kleines Einmaleins mit Arrays public class EinmaleinsArrays { public static void main(string[] args) { int[][] elements = new int[10][10]; for (int i = 1; i <= 10; i++) { Erzeuge ein doppeltes leeres Array Für x: gehe die Zahlen von 1 bis 10 durch for (int j = 1; j <= 10; j++) { elements[i-1][j-1] = i*j; 17

Aufgabe 3a: Kleines Einmaleins mit Arrays public class EinmaleinsArrays { public static void main(string[] args) { int[][] elements = new int[10][10]; for (int i = 1; i <= 10; i++) { for (int j = 1; j <= 10; j++) { elements[i-1][j-1] = i*j; Erzeuge ein doppeltes leeres Array Für x: gehe die Zahlen von 1 bis 10 durch Für y: gehe nochmal die Zahlen 1 bis 10 durch für jede Möglichkeit der Zahl x 18

Aufgabe 3a: Kleines Einmaleins mit Arrays public class EinmaleinsArrays { public static void main(string[] args) { int[][] elements = new int[10][10]; for (int i = 1; i <= 10; i++) { for (int j = 1; j <= 10; j++) { elements[i-1][j-1] = i*j; Erzeuge ein doppeltes leeres Array Für x: gehe die Zahlen von 1 bis 10 durch Für y: gehe nochmal die Zahlen 1 bis 10 durch für jede Möglichkeit der Zahl x Berechne das Produkt aus den Zahlen x und y und speichere den Wert. 19

Aufgabe 3b: Speicherdarstellung int[][] elements = new int[10][10]; elements :int[][] length = 10 [0] = [1] = [2] = [3] = [4] = [5] = [6] = [7] = [8] = [9] = :int[] length = 10 [0] = 0 [1] = 0 [2] = 0... :int[] length = 10 [0] = 0 [1] = 0 [2] = 0... Stack s Heap h 20

Aufgabe 3b: Speicherdarstellung (partiell initialisiert) int[][] elements = new int[10][]; elements :int[][] length = 10 [0] = null [1] = null [2] = null [3] = null [4] = null [5] = null [6] = null [7] = null [8] = null [9] = null Stack s Heap h 21

Einschub: Kann ein doppeltes Array unterschiedlich lange "Zeilen" haben? 22

Einschub: Kann ein doppeltes Array unterschiedlich lange "Zeilen" haben? elements Stack s :int[][] length = 2 [0] = [1] = Heap h :int[] length = 10 [0] = 0 [1] = 0 [2] = 0... :int[] length = 5 [0] = 0 [1] = 0 [2] = 0... 23

Einschub: Kann ein doppeltes Array unterschiedlich lange "Zeilen" haben? Codeausschnitt: int[][] elements = new int[2][]; elements[0] = new int[5]; elements[1] = new int[10]; elements Stack s :int[][] length = 2 [0] = [1] = Heap h :int[] length = 10 [0] = 0 [1] = 0 [2] = 0... :int[] length = 5 [0] = 0 [1] = 0 [2] = 0... 24

Aufgabe 3c: Ausgeben einer Matrix public class EinmaleinsArrays { public static void main(string[] args) { int[][] elements = new int[10][10]; for (int i = 1; i <= 10; i++) { for (int j = 1; j <= 10; j++) { elements[i-1][j-1] = i*j; for (int i = 0; i < elements.length; i++) { for (int j = 0; j < elements[i].length; j++) { System.out.print(elements[i][j] + " "); System.out.println(); 25

Aufgabe 3c: Ausgeben einer Matrix 26