Einführung in die Java- Programmierung

Ähnliche Dokumente
Einführung in die Java- Programmierung

Einführung in die Java- Programmierung

Objektorientierte Programmierung

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

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

1 Vom Problem zum Programm

Modellierung und Programmierung 1

Einführung in die Programmierung

Praktikum Ingenieurinformatik. Termin 2. Verzweigungen (if-else), printf und scanf, while-schleife

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

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

2. Semester, 2. Prüfung, Lösung

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Einführung in die Programmierung

Programmierkurs Java

Anleitung über den Umgang mit Schildern

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

Zählen von Objekten einer bestimmten Klasse

Felder, Rückblick Mehrdimensionale Felder. Programmieren in C

IT-Basics 2. DI Gerhard Fließ

7 Rechnen mit Polynomen

Import und Export von Übergängern

Professionelle Seminare im Bereich MS-Office

M. Graefenhan Übungen zu C. Blatt 3. Musterlösung

Objektorientierte Programmierung. Kapitel 12: Interfaces

Programmieren in C. Rekursive Funktionen. Prof. Dr. Nikolaus Wulff

Computeranwendung und Programmierung (CuP)

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Grundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:

Abschlussprüfung Realschule Bayern II / III: 2009 Haupttermin B 1.0 B 1.1

Wenn man nach Beendigung der WINDOWS-SICHERUNG folgendes angezeigt bekommt

Einführung in die Programmierung

Erwin Grüner

Erstellen von x-y-diagrammen in OpenOffice.calc

Übung: Verwendung von Java-Threads

5. Tutorium zu Programmieren

2. Programmierung in C

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben

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

Mathematischer Vorbereitungskurs für Ökonomen

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

Eine Einführung in C-Funktionen

Gleichungen Lösen. Ein graphischer Blick auf Gleichungen

GITS Steckbriefe Tutorial

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Die Programmiersprache C99: Zusammenfassung

Einführung in Eclipse und Java

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Grundlagen der Theoretischen Informatik, SoSe 2008

AutoCAD Dienstprogramm zur Lizenzübertragung

Starten Sie Eclipse: Hier tragen sie Ihr Arbeitsverzeichnis ein. Zu Hause z.b. c:\workspace.

Programmiervorkurs SS 2011 Technische Universität Darmstadt Jan Hendrik Burdinski, Felix Kerger

Eigenwerte und Eigenvektoren von Matrizen

Wir machen neue Politik für Baden-Württemberg

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

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

Einführung in die Programmierung Laborübung bei Korcan Y. Kirkici. 12.Übung bis

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

P&P Software - Adressexport an Outlook 05/29/16 14:44:26

VisualBasic - Variablen

Übungskomplex Felder (1) Eindimensionale Felder Mehrdimensionale Felder

Übung Grundlagen der Programmierung. Übung 05: Arrays. Abgabetermin: xx.xx.xxxx. Java-Programm Testplan Testergebnisse

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Handbuch ECDL 2003 Modul 2: Computermanagement und Dateiverwaltung Der Task-Manager

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

25 Import der Beispiele

Beispiel(unten ist der Spielfeldrand):

Welche Lagen können zwei Geraden (im Raum) zueinander haben? Welche Lagen kann eine Gerade bezüglich einer Ebene im Raum einnehmen?

Programmierung in C. Grundlagen. Stefan Kallerhoff

Programmieren Tutorium

Programmieren in Java

Informationsblatt Induktionsbeweis

CodeSaver. Vorwort. Seite 1 von 6

affilinet_ Flash-Spezifikationen

FH-SY Chapter Version 3 - FH-SY.NET - FAQ -

NODELOCKED LIZENZ generieren (ab ST4)

1. Einführung. 2. Alternativen zu eigenen Auswertungen. 3. Erstellen eigener Tabellen-Auswertungen

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

L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016

Webalizer HOWTO. Stand:

Java Kurs für Anfänger Einheit 5 Methoden

MdtTax Programm. Programm Dokumentation. Datenbank Schnittstelle. Das Hauptmenü. Die Bedienung des Programms geht über das Hauptmenü.

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1

Definition und Begriffe

Wurzeln als Potenzen mit gebrochenen Exponenten. Vorkurs, Mathematik

Programmierkurs Java

6.2 Scan-Konvertierung (Scan Conversion)

Testklausur 1 zur Vorlesung. Modellierung und Programmierung I. Dr. Monika Meiler Zeit: 60 Minuten

Achtung! In Abhängigkeit Ihrer Lohnlizenz können einzelne Felder evtl. nicht angezeigt werden (z.b. Pfänd.summe, PV-frei, UV-frei).

Fotogalerie mit PWGallery in Joomla (3.4.0) erstellen

Lineare Gleichungssysteme

Bedienungsanleitung Anlassteilnehmer (Vereinslisten)

Punkt 1 bis 11: -Anmeldung bei Schlecker und 1-8 -Herunterladen der Software

Musterlösungen zur Linearen Algebra II Blatt 5

Übungen Programmieren 1 Felix Rohrer. Übungen

Zeichen bei Zahlen entschlüsseln

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: )

Wir arbeiten mit Zufallszahlen

Transkript:

Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1

Rückblick Schleifen while do-while for Methoden Verfahren: Intervallschachtelung 2

Wo sind meine Programme? Windows-Rechner in den Rechner-Räumen sind alle gleich (meistens...) Benutzerdaten (begrenzter Speicherplatz, ein paar 100 MB) zentral im Rechenzentrum, mit Datensicherung Unter Windows erreichbar über Laufwerksbuchstabe Z: Eclipse-Workspace normalerweise bei: Z:\nt\workspace 3

Beispiele in Eclipse importieren Nach dem Entpacken der ZIP-Datei javakurs-wise1213-demo.zip ist darin ein Ordner javakurs-wise1213-demo Dieser Ordner ist ein Eclipse-Projekt und kann so in Eclipse importiert werden File > Import... Existing Projects into workspace, [Next] Select root directory: Browse... Ordner suchen: javakurs-wise1213-demo Auswählen und [Finish] 4

Java-Namenskonventionen Klassennamen sind i.d.r. Substantive und werden in CamelCase mit Großbuchstabe am Anfang geschrieben EinMalEins, JConsole, Rechner, String Methodennamen sind i.d.r. Verbalphrasen (Verb und Objekt) oder mathematische Funktionen und werden in camelcase geschrieben printvalue(), readint(), sqrt(), sin(), cos(), wurzel() Variablennamen sind i.d.r. Substantive in camelcase mit Kleinbuchstabe am Anfangoder im Falle von mathematischen Funktionen die Formelzeichen zaehler, obereschranke, x, y Konstanten werden wie Variablen benannt, aber vollständig in GROSSBUCHSTABEN geschrieben, Trennung mehrerer Teile durch _ EPSILON, MAX_VALUE Will man Programme weitergeben, so empfelt es sich, alle Bezeichner englisch zu schreiben Java unterstützt Unicode (Umlaute, Sonderzeichen, etc.), aber man sollte für Bezeichner besser nur normale Buchstaben und Zahlen, evtl. den Unterstrich _ 5

Themen der heutigen Vorlesung rekursive Methoden Arrays 7

Rekursive Methoden Methoden können sich auch selbst aufrufen (Rekursion) Viele mathematischen Funktionen sind rekursiv defniert, z.b. die Fakultät: 8

Rekursive Methoden Eine rekursive Defnition hat immer einen nicht-rekursiven Basisfall (Abbruchbedingung) 9

Rekursive Methoden 4! = 4 * 3! = 4 * 3 * 2! = 4 * 3 * 2 * 1! = 4 * 3 * 2 * 1 * 0! = 4 * 3 * 2 * 1 * 1 = 4 * 3 * 2 * 1 = 4 * 3 * 2 = 4 * 6 = 24 Rekursionstiefe 10

Demo: Rekursion.java Aufgabe: Schreibe eine Methode fact(), welche die Fakultät einer gegebenen natürlichen Zahl n rekursiv berechnet 11

Rekursive Methoden Beim Aufruf einer rekursiven Methode wird die Aufrufstelle (Rücksprungadresse) und aktuellen Parameter auf dem Stack der Java- Maschine gespeichert Je höher die Rekursionstiefe, desto mehr Speicher wird verbraucht Ab einer gewissen Rekursionstiefe (~1500) wirft die Java-Maschine einen StackOverflowError Für die meisten Programme ist das aber kein Problem 12

Rekursive Methoden Rekursion und Schleifen sind äquivalent in ihrer Mächtigkeit Jedes Programm mit Schleifen kann in ein rekursives Programm ohne Schleifen überführt werden Jedes rekursive Programm kann in ein Programm ohne Rekursion mit Schleifen überführt werden Es gibt einige Programmiersprachen, die tatsächlich keine Schleifen enthalten, funktionale Sprachen: Haskell, Scheme,... 13

Demo: Summe.java Aufgabe: Schreibe eine Methode summevonbis() die zwei Ganzzahlen a und b erhält und die Summe aller Zahlen von a bis b zurückgibt. (Aufgabe C1/C2) Schreibe eine äquivalente Methode summevonbisrekursiv(), welche die gleiche Summe mittels Rekursion berechnet. 14

Wechselseitige Rekursion Eine Funktion kann auch rekursiv sein, ohne sich selbst direkt aufzurufen Demo: GeradeUngerade.java: 0 ist eine gerade Zahl n ist gerade, wenn n-1 ungerade ist n ist ungerade, wenn n-1 gerade ist 15

Demo: Hofstadter.java Aufgabe: Schreibe ein Klasse Hofstadter mit zwei Methoden male() und female(), die jeweils einen long n erhalten und dann die n-te Zahl der jeweiligen Folge zurückgibt 16

Für die Mittagspause http://www.stupidedia.org/stupi/rekursiv 17

Arrays Viele mathematische Probleme müssen Vektoren (oder Matrizen) verarbeiten Vektoren im zweidimensionalen Raum (R²) bestehen aus einem x- und einem y-wert Vektoren im dreidimensionalen Raum (R³) bestehen aus einem x-, einem y- und einem z-wert (Länge, Höhe, Breite) 18

Arrays Beispiel: Sei p1 ein Punkt im zweidimensionalen Raum mit den Koordinaten (1, 2) und p2 ein Punkt mit den Koordinaten (3, 4) Mit dem bisher bekannten Stof können wir einen Punkt mit jeweils 2 einzelnen Variablen darstellen: int p1_x = 1; int p1_y = 2; // Punkt p1 int p2_x = 3; int p2_y = 4; // Punkt p2 // Punkte p1 und p2 addieren int p3_x = p1_x + p2_x; int p3_y = p1_y + p2_y; Noch schlimmer wird es, wenn wir viele Punkte in der Berechnung oder höhere Dimensionen benötigen. Für einen Punkt aus dem R^n benötigen wir hier n Variablen 19

Arrays Ein weiteres Problem: Wir können keine Methode schreiben, die 2 Vektoren/Punkte addiert static??? add2dpoints(int p1_x, int p1_y, } int p3_x = p1_x + p2_x; int p3_y = p1_y + p2_y; return???; int p2_x, int p2_y) { Was ist der Ergebnistyp dieser Methode? Man müsste ja eigentlich 2 Werte zurückgeben, aber das geht in Java nicht. 20

Arrays Die Lösung sind Arrays (Felder) Ein Array ist eine nummerierte Sammlung von Werten genau eines Typs (alle Komponenten haben den selben Typ) Die einzelnen Komponenten werden über ihren Index angesprochen Der Index beginnt bei 0 und endet bei der Länge des Arrays 1 Die Länge eines Arrays ist mit der Deklaration festgelegt und kann nicht verändert werden 21

Arrays Beispiel: Ein Array der Länge 10 (Typ unbekannt) 22

Arrays deklarieren Arrays werden wie Variablen deklariert, allerdings wird dem Element-Typ ein [] nachgestellt: // Uninitialisierte Arrays, Länge // noch nicht festgelegt int[] intarray; long[] longarray; double[] doublearray; 23

Arrays deklarieren und initialisieren Wie Variablen können Arrays direkt bei der Deklaration initialisiert werden Jedes Array kennt seine Länge int[] p1 = {1, 2}; System.out.println(p1.length) //?? double[] p2 = {3.3, 7.9, -1.0}; System.out.println(p2.length) //?? 24

Index-Zugrif Auf die einzelnen Elemente des Arrays wird per Index zugegrifen Ist der Index nicht gültig, d.h. < 0 oder >= als die Array-Länge, wird eine ArrayIndexOutOfBoundsException geworfen double[] p = {3.3, 7.9, -1.0}; // p[0] = 3.3,p[1] = 7.9,p[2] = -1.0 25

Demo: ArrayUtils.java Aufgabe: Schreibe eine Klasse ArrayUtils, die 3 Methoden void printarray(int[] a) void printarray(long[] a) void printarray(double[] a) enthält. Diese Methoden sollen das übergebene Array einfach in der Form {1, 2, 3, 4} auf der Standardausgabe ausgeben. 26

Arrays zur Laufzeit initialisieren In den meisten Programmen wollen wir zur Laufzeit Arrays beliebiger Länge erzeugen int[] onetothree = new int[3]; // Speicher zuweisen, Array-Länge // Nach der Speicherzuweisung haben alle // Komponenten den Standartwert des jeweiligen // Typs, also 0 bei int. onetothree[0] = 1; // Eigene Werte zuweisen onetothree[1] = 2; onetothree[2] = 3; 27

Demo: ArrayUtils.java Aufgabe: Füge der Klasse ArrayUtils die 3 Methoden int[] readintarray(int n) long[] readlongarray(int n) double[] readdoublearray(int n) hinzu. Diese Methoden sollen mittels JConsole n Werte des jeweiligen Typs einlesen und als Array zurückliefern. 28