Tag 4 Repetitorium Informatik (Java)

Ähnliche Dokumente
Tag 4 Repetitorium Informatik (Java)

Tag 7 Repetitorium Informatik (Java)

Tag 8 Repetitorium Informatik (Java)

Tag 3 Repetitorium Informatik (Java)

Repetitorium Informatik (Java)

Tag 5. Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme)

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

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

Ausgabe:

Java Einführung Klassendefinitionen

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

Tag 2 Repetitorium Informatik (Java)

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Grundlagen der Objektorientierten Programmierung - Statische Arrays

Arrays und Schleifen

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Tag 3 Repetitorium Informatik (Java)

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

Felder - Arrays. Typ feldname[] = new Typ[<ganze Zahl >]; Beispiel: double vektor[] = new double[5]; auch eine Initialisierung ist möglich.

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

Klassenvariablen, Klassenmethoden

Zeiger, Arrays und Strings in C und C++

Grundlagen und Konzepte von C Datenstrukturen

5.1 Mehr Basistypen. (Wie viele Werte kann man mit n Bit darstellen?)

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

+ C - Array (Vektoren, Felder)

Institut für Informatik

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

Variablen, Konstanten und Datentypen

C++ Notnagel. Ziel, Inhalt. Programmieren in C++

Einstieg in die Informatik mit Java

9. Vektoren. (auch Felder/array)

Einstieg in die Informatik mit Java

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

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

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Einstieg in die Informatik mit Java

3. Klassen Statische Komponenten einer Klasse. Klassenvariablen

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

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

Arrays und Schleifen

Methoden und Wrapperklassen

Elementare Datentypen in C++

Arrays. Einleitung. Deklarieren einer Array Variablen

Javakurs für Anfänger

Kapitel 3. Programmierkurs. Arten von Anweisungen. 3.1 Was sind Anweisungen?

3.2 Datentypen und Methoden

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

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

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

Institut für Informatik

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Einstieg in die Informatik mit Java

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

Propädeutikum zur Programmierung

Einstieg in die Informatik mit Java

Vorkurs Informatik WiSe 16/17

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

int i=1; //Integerzahl i anlegen und mit 1 initialisieren float wert; //Floatzahl deklarieren scanf( %f,&wert); //Wert über Tastatur eingeben

2 Eine einfache Programmiersprache

Ein String ist in Java eigentlich eine Klasse, wir können ihn aber zunächst als Datentyp betrachten, der zur Speicherung von Zeichenketten dient.

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Objektorientierte Programmierung OOP Programmieren mit Java

C++ - Objektorientierte Programmierung Konstante und statische Elemente

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren

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

Organisatorisches. Neue Übungsblätter: Nur mehr elektronisch? Abgabe Di, , 14 Uhr bis Do, , 8Uhr

5. Java Arrays und Strings

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

Algorithmen und Programmierung II

Einstieg in die Informatik mit Java

Java Datentypen und Variablen

Java-Applikationen (Java-Programme)

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

Programmiervorkurs Einführung in Java Tag 1

Klassenmethoden. Klassenvariablen. Für das Auslesen des Studentenzählers definieren wir eine öffentliche Klassenmethode:

Ein erstes Java-Programm

Zeiger: Der Adressoperator &

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Programmiervorkurs Einführung in Java Tag 3

Themen der Übung. Methoden und Wrapperklassen. Vorteile von Methoden. Methoden. Grundlagen

8. Referenzen und Zeiger

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 29

2 Eine einfache Programmiersprache

Zentralübung Grundlagen der Programmierung

Javakurs zu Informatik I. Henning Heitkötter

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

Programmierpraktikum

Tag 6 Repetitorium Informatik (Java)

Einstieg in die Informatik mit Java

Einführung in die Java- Programmierung

Java Einführung Methoden. Kapitel 6

Der Datentyp String. Stringvariable und -vergleiche

Abschnitt 6: Klassen, Objekte und Methoden in Java

Programmieren in C/C++ und MATLAB

Einstieg in die Informatik mit Java

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

Transkript:

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! auf Grund der hohen Teilnehmerzahlen: bitte zusammenrücken und keine Plätze in der Mitte freilassen Videoübertragung in mehrere Hörsäle: mit eigenem Notebook laut eigener Angabe im EST: Nachname A R Hörsaal H5 Nachname S Z Hörsaal H6 ohne eigenes Notebook laut eigener Angabe im EST: Nachname A J Hörsaal H15 Nachname K Sch Hörsaal H16 Nachname Sd Z Hörsaal H6 bei Bild- oder Tonausfall bitte im Hörsaal H15 melden für Zwischenfragen liegt auf dem Pult ein Mikrofon bereit Informatik-Repetitorium Tag 4 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 2 / 28

Übersicht Arrays (Reihungen) Deklaration von Arrays Verwendung Ungültige Indizes Mehrdimensionale Arrays Kommandozeilen-Argumente Konstanten Deklaration von Konstanten mittels final Konstante Arrays Informatik-Repetitorium Tag 4 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 3 / 28

Arrays (Reihungen)

Problem mit einfachen Variablen... bisher: pro zu speicherndem Wert eine Variable (mit jeweils eigenem Bezeichner) Probleme: Was tun bei vielen gleichartigen Werten? Was tun, wenn die Anzahl der Werte zur Entwicklungszeit unbekannt ist? jetzt: Array (Reihung, Feld) erlaubt Speicherung mehrerer Werte desselben Datentyps vereinfacht: Array in einer Variable mit einem Bezeichner gespeichert einmalige Festlegung der Anzahl der zu speichernden Werte allerdings: Element-Anzahl kann Wert sein, der erst zur Laufzeit feststeht Informatik-Repetitorium Tag 4 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 5 / 28

Arrays Beispiel: int-array der Größe 6 Index Wert 0 1 2 3 4 5 13-3 0 42 98-110 die einzelnen Elemente werden über einen Index adressiert Achtung: in Java beginnt die Indizierung immer bei 0 ein Array der Länge n hat Elemente mit Indizes {0, 1,..., n 1} werden die Elemente nicht explizit gesetzt, haben sie einen Standard-Wert abhängig vom Datentyp, bei int beispielsweise 0 Informatik-Repetitorium Tag 4 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 6 / 28

Deklaration von Arrays wie bei primitiven Datentypen: Array muss vor Verwendung deklariert werden dabei Angabe von Basis-Datentyp und Bezeichner der Array-Variable Beispiele für die Deklaration von Arrays i n t [ ] zahlen ; / / eckige Klammern [ ] kennzeichnen Array char [ ] buchstaben ; anders als bei primitiven Datentypen: Array muss zusätzlich erzeugt werden dabei Angabe der Anzahl an Elementen Array-Erzeugung: Möglich i n t [ ] zahlen ; zahlen = new i n t [ 1 0 0 ] ; Array-Erzeugung: Üblich i n t [ ] zahlen = new i n t [ 1 0 0 ] ; Informatik-Repetitorium Tag 4 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 7 / 28

Deklaration mit Wertzuweisung weitere Möglichkeit für die Array-Erzeugung: Deklaration mit Wertzuweisung dabei werden die Array-Elemente bei der Array-Erzeugung initialisiert die Array-Größe ergibt sich implizit aus der Element-Anzahl Beispiel: Deklaration mit Wertzuweisung i n t [ ] zahlen = {13, 3, 0, 42, 98, 110}; Informatik-Repetitorium Tag 4 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 8 / 28

Zugriff auf einzelne Elemente lesender und schreibender Zugriff auf ein Element über seinen Index Syntax: <Array-Name>[<Index>] Beispiele für den Array-Zugriff i n t [ ] zahlen = {13, 3, 0, 42, 98, 110}; System. out. p r i n t l n ( zahlen [ 0 ] ) ; / / 13 zahlen [ 0 ] = zahlen [ 1 ] + 10; System. out. p r i n t l n ( zahlen [ 0 ] ) ; / / 7 Informatik-Repetitorium Tag 4 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 9 / 28

Größe eines Arrays bestimmen jedes Array kennt seine eigene Größe, die man abfragen kann Syntax: <Array-Name>.length Beispiel für die Bestimmung der Array-Größe i n t [ ] zahlen = {13, 3, 0, 42, 98, 110}; System. out. p r i n t l n ( zahlen. l e n g t h ) ; / / 6 Informatik-Repetitorium Tag 4 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 10 / 28

Beispiel: Berechnung von Quadratzahlen Ziel Programm, das die ersten x Quadratzahlen berechnet und in einem Array speichert. Mögliche Lösung i n t [ ] quadratzahlen = new i n t [ x ] ; for ( i n t i = 0; i < quadratzahlen. l e n g t h ; ++ i ) { quadratzahlen [ i ] = i i ; } Array-Elemente nach der Ausführung der Schleife Index Wert 0 1 2 3 x 1 0 1 4 9... (x 1) 2 Informatik-Repetitorium Tag 4 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 11 / 28

Ausgabe von Arrays Ausgabe eines Arrays Weil ein Array kein primitiver Wert ist, ist die Ausgabe eines Arrays anders als erwartet... Beispiel für die Ausgabe eines Arrays i n t [ ] zahlen = {13, 3, 0, 42, 98, 110}; System. out. p r i n t l n ( zahlen ) ; System. out. p r i n t l n ( java. u t i l. Arrays. t o S t r i n g ( zahlen ) ) ; Ausgabe [ I@2a139a55 [13, -3, 0, 42, 98, -110] Informatik-Repetitorium Tag 4 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 12 / 28

Ungültige Array-Indizes Was geht hier schief? i n t [ ] zahlen = {13, 3, 0, 42, 98, 110}; System. out. p r i n t l n ( " Anfang. " ) ; System. out. p r i n t l n ( zahlen [ 6 ] ) ; System. out. p r i n t l n ( " Ende. " ) ; Bei der Ausführung... benutzer@faui06a: /ordner$ javac Zahlen.java benutzer@faui06a: /ordner$ java Zahlen Anfang. Exception in thread "main" java.lang.arrayindexoutofboundsexception: 6 at Zahlen.main(Zahlen.java:5) Erklärung Ein ungültiger Array-Index hat eine sog. ArrayIndexOutOfBoundsException zur Folge. Ohne weitere Maßnahmen bricht das Programm mit einer Fehlermeldung ab. Informatik-Repetitorium Tag 4 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 13 / 28

Mehrdimensionale Arrays Arrays können in Java auch mehrdimensional sein Array von Arrays von Arrays... von Arrays eines Basistyps Beispiel für ein mehrdimensionales Array char [ ] [ ] tictactoe = new char [ 3 ] [ 3 ] ; / / 3 " Z e i l e n " und 3 " Spalten " tictactoe [ 1 ] [ 2 ] = X ; / / " Z e i l e " 1 und " Spalte " 2 Array-Elemente nach der Ausführung 0 1 2 0 1 X 2 Informatik-Repetitorium Tag 4 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 14 / 28

Ausgabe von Mehrdimensionalen Arrays (I) Ausgabe eines Mehrdimensionalen Arrays Die Verwendung von tostring() führt bei mehrdimensionalen Arrays nicht zum gewünschten Ergebnis... Beispiel für die Ausgabe eines Mehrdimensionalen Arrays char [ ] [ ] tictactoe = new char [ 3 ] [ 3 ] ; tictactoe [ 1 ] [ 2 ] = X ; System. out. p r i n t l n ( java. u t i l. Arrays. t o S t r i n g ( tictactoe ) ) ; System. out. p r i n t l n ( java. u t i l. Arrays. deeptostring ( tictactoe ) ) ; Ausgabe [[ C@2a139a55, [ C@15db9742, [ C@6d06d69c ] [[,, ], [,, X], [,, ]] Informatik-Repetitorium Tag 4 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 15 / 28

Ausgabe von Mehrdimensionalen Arrays (II) Eigene Implementierung char [ ] [ ] tictactoe = new char [ 3 ] [ 3 ] ; tictactoe [ 1 ] [ 2 ] = X ; for ( i n t z = 0; z < 3; ++z ) { System. out. p r i n t ( ". " ) ; for ( i n t s = 0; s < 3; ++s ) { System. out. p r i n t ( tictactoe [ z ] [ s ] ) ; System. out. p r i n t ( ". " ) ; } System. out. p r i n t l n ( ) ; } Ausgabe.......X..... Informatik-Repetitorium Tag 4 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 16 / 28

Kommandozeilen-Argumente

Kommandozeilen-Argumente bei Programmstarts können Kommandozeilen-Argumente übergeben werden Beispiel: javac Foo.java javac: Programmname Foo.java: Kommandozeilen-Argument für das Programm javac die Argumente werden durch ein Leerzeichen voneinander getrennt Argumente mit Leerzeichen: in doppelte Anführungszeichen einschließen auch Java-Programmen können beim Start Argumente übergeben werden landen als Zeichenketten im args-parameter der main-methode einfache Möglichkeit der Benutzereingabe Informatik-Repetitorium Tag 4 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 18 / 28

Beispiel: Echo Aufgabe Programm, das das erste Kommandozeilen-Argument ausgibt. Mögliche Lösung public class Echo { public s t a t i c void main ( S t r i n g [ ] args ) { i f ( args. length >= 1) { / / n i c h t vergessen! System. out. p r i n t l n ( args [ 0 ] ) ; } } } Aufrufe des Echo-Programms benutzer@faui06a: /ordner$ java Echo benutzer@faui06a: /ordner$ java Echo "Repetitorium Informatik" RIP Repetitorium Informatik Informatik-Repetitorium Tag 4 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 19 / 28

Beispiel: Summe (I) Aufgabe Programm, das die Summe aller als Kommandozeilen-Argumente übergebenen Zahlen berechnet und ausgibt. Problem Die Kommandozeilen-Argumente werden stets als Zeichenketten (d.h. vom Typ String) übergeben. Für Berechnungen müssen diese erst explizit in Zahlen konvertiert werden. String int i n t wert = I n t e g e r. p a r s e I n t ( s t r i n g ) ; String double double wert = Double. parsedouble ( s t r i n g ) ; Informatik-Repetitorium Tag 4 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 20 / 28

Beispiel: Summe (II) Mögliche Lösung public class Summe { public s t a t i c void main ( S t r i n g [ ] args ) { double summe = 0. 0 ; for ( i n t index = 0; index < args. l e n g t h ; ++index ) { summe = summe + Double. parsedouble ( args [ index ] ) ; } System. out. p r i n t l n (summe ) ; } } Aufrufe des Summe-Programms benutzer@faui06a: /ordner$ java Summe 0.0 benutzer@faui06a: /ordner$ java Summe 13 3 5 8 29.0 Informatik-Repetitorium Tag 4 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 21 / 28

Konstanten

Konstanten Konstante: einmalig festgelegter Wert nicht mehr veränderbar lesende Verwendung wie bei einer normalen Variable aber: einer Konstanten kann nur einmalig geschrieben werden Verwendung von Konstanten erhöht die Lesbarkeit und Wartbarkeit häufig verwendete konstante Werte als Konstante deklarieren muss bei einer Änderung nur an einer Stelle geändert werden kann dabei helfen, Fehler zu vermeiden der Compiler meldet Fehler, wenn in eine Konstante geschrieben wird Konstanten erlauben dem Compiler, gewisse Optimierungen durchzuführen Verwendung von Konstanten kann zu schnelleren Programmen führen Daumenregel Alles, was nicht veränderbar sein muss, als Konstante deklarieren. Informatik-Repetitorium Tag 4 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 23 / 28

Deklaration und Definition von Konstanten Syntax: Deklaration und Definition einer Konstanten f i n a l Datentyp Konstantenname = Wert ; Hinweise Schlüsselwort final markiert Variable als Konstante Angabe des Datentyps wie bei einer normalen Variable der Konstantenname entspricht dem Variablennamen Konventionen: Verwendung von Großbuchstaben, Unterstrich zur Worttrennung Beispiele: PI, MAX_VALUE der Wert muss nicht schon zur Übersetzungszeit feststehen kann das Ergebnis einer Berechnung sein, das erst zur Laufzeit feststeht Beispiel: der Wert kann dem ersten Kommandozeilen-Argumente entsprechen Informatik-Repetitorium Tag 4 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 24 / 28

Beispiel: Konstanten So nicht! double radius = 13.03; double flaeche = r adius r a d i u s 3.14159; So schon! f i n a l double PI = 3.14159; double ra dius = 13.03; double flaeche = r adius r a d i us PI ; Hinweise Wenn sich radius nicht ändert, kann radius auch als Konstante deklariert werden. PI sollte besser als Klassenvariable bzw. -konstante deklariert werden (siehe Tag 7). Informatik-Repetitorium Tag 4 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 25 / 28

Konstante Arrays auch Array-Variablen können als Konstante deklariert werden Bedeutung ist anders als vielleicht vermutet: die Elemente in einem konstanten Array dürfen verändert werden! aber: es darf kein neues Array erzeugt und i. d. Variable gespeichert werden Geht nicht f i n a l i n t [ ] zahlen = new i n t [ 1 3 ] ; zahlen = new i n t [ 3 ] ; / / Fehler, w e i l zahlen b e r e i t s i n i t i a l i s i e r t Geht schon f i n a l i n t [ ] zahlen = new i n t [ 1 3 ] ; zahlen [ 0 ] = 3; / / e r l a u b t, denn es wird nur ein Element verä ndert Informatik-Repetitorium Tag 4 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 26 / 28

Fragen? Fragen! (hilft auch den anderen)

Jetzt: Praktische Übungen mit eigenem Notebook: Nachname A R Hörsaal H5 Nachname S Z Hörsaal H6 bitte erstmal sitzen bleiben! ohne eigenes Notebook in den Rechnerräumen: Tutoren verteilen Gruppenzettel am Ausgang die Einteilung ist zunächst fest für das gesamte Repetitorium Informatik-Repetitorium Tag 4 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 28 / 28