Java programmieren mit JavaKara

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

Imperative Programmierung
der Universität Oldenburg
Zusammenfassung der Vorwoche
(kleine!) Java Einführung Mittwoch, Heute Ziel: erstes Java-Programm erstellen Von der Aufgabenstellung bis zur Lösung Grundlagen Einfache.
der Universität Oldenburg
Sequentielle Liste - Array
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Listen Richard Göbel.
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
Strukturen. In einer Struktur kann eine beliebige Anzahl von Komponenten (Daten) mit unterschiedlichen Datentypen (im Gegensatz zu Feldern) zusammengefaßt.
Ein Beispiel in Java.
Konstruktoren.
Polymorphie (Vielgestaltigkeit)
Polymorphie (Vielgestaltigkeit)
Objekte und Arbeitsspeicher
V AdresseWert public static void main(...){ int[] v; v=new int[2]; } Was veranlasst diese Anweisung im Arbeitsspeicher ? Es wird im Arbeitsspeicher.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
Imperative Programmierung Funktionen und Parameter
Imperative Programmierung
Programmieren mit JAVA
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Zusammenfassung der Vorwoche Variable stehen für (einen) Wert, der sich im Programmablauf ändern kann. Variablen besitzen einen.
Zusammenfassung Vorwoche
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Felder1 Felder. DVG Felder 2 Was sind Felder? Felder sind Reihungen aus endlich vielen Elementen gleichen Typs. Z.B.: Vektoren : (x.
DVG Methoden 1 Methoden. 2 int dezi = Integer.parseInt(args[0]); boolean vz = (dezi>=0); dezi = Math.abs(dezi); String Bin = ""; do { } while.
DVG Klassen und Objekte
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
Einführung in die Programmierung Datensammlung
Einführung in die Programmierung Anweisungen und Datentypen
Struktogramme IF-ELSE FOR – Schleife
Grundkonzepte Java - Klassendefinition
Wieder und wieder und wieder …. Nicht vor Pilz? ja Schritt vorwärts.
Guten Nachmittag!.
Wir haben gesehen Das Gerüst ist bei JavaKara fix vorgegeben
Kontrollstrukturen Verwendung: Steuerung des Ablaufs.
IT2 – WS 2005/20061Oct 10, 2005 Externes Verhalten – Quelltext (source code) Durch Aufrufe der Konstruktoren und Methoden kann das externe Verhalten (=die.
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Die Zählschleife int s = 0 for (int k=1; k
Vom Umgang mit Daten. public void myProgram() { int[] saeulenWerte = new int[world.getSizeX()]; for (int i = 0; i < saeulenWerte.length; i++) { saeulenWerte[i]
C-Einstieg. Agenda 1Vorbereitung 2Aufbau eines Programms 2.1Header 2.2 Methoden 2.3Main 3Datentypen & Variablen 4Operatoren(+, -, *, /) 5Logik 5.1IF 5.2Switch.
Die Grundidee Funktionsaufruf Funktionsname (Kopf) Code der Funktion
Einführung in JavaKara
Grundkonzepte des Programmierens (mit ActionScript)
Variablenkonzept Klassisch, in Java Basistyp
Unterprogramme in JAVA
Aufruf einer Methode eines Objektes vom Typ „Bruch“
EPROG Tutorium #3 Philipp Effenberger
Arrays und ArrayLists In JAVA.
PHP: Operatoren und Kontrollstrukturen
Variablen. var meineZahl:Number = 7; meineZahl 7 Name TypWert = Zuweisung von Variablen.
Gestern: Kara Steuerung: Endliche Automaten.
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
Programmiervorkurs WS 2014 Referenzdatentypen
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
Arrays und ArrayLists In JAVA.
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Java-Kurs - 3. Übung Hausaufgabe Arrays For-Schleifen.
Sammlungsklassen Array.
Funktionen. Aufgabe : Eingabe zweier Zahlen ---> Minimum bestimmen Dann nochmals Eingabe zweier Zahlen ---> Minimum bestimmen.
Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.
Tutorium Software-Engineering SS14 Florian Manghofer.
Java Programme nur ein bisschen objektorientiert.
Arrays in Java Ein Array ist eine Variable, die aus einer An-zahl von Elementen des gleichen Datentyps besteht, die aufeinanderfolgend im Speicher liegen.
Arrays in Java Ein Array ist eine Variable, die aus einer An-zahl von Elementen des gleichen Datentyps besteht, die aufeinanderfolgend im Speicher liegen.
Felder in der Informatik
 Präsentation transkript:

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(); x++) { if (world.isLeaf(x, 0)) { anzahlKleeblaetter++; } tools.showMessage("Es hat " + anzahlKleeblaetter + " Kleeblätter!");

Kleeblätter in einer Zeile zählen: Zählschleife @Override public void myMainProgram() { int anzahlKleeblaetter = 0; for (int x = 0; x < world.getSizeX(); x++) { if (world.isLeaf(x, 0)) { anzahlKleeblaetter++; } tools.showMessage("Es hat " + anzahlKleeblaetter + " Kleeblätter!");

Kleeblätter in einer Zeile zählen: Zählschleife for (int x = 0; x < world.getSizeX(); x++) { // Anweisungen } int x = 0 ist eine Anweisung, die zu Beginn einmal ausgeführt wird x < world.getSizeX() ist eine Bedingung Anweisungen werden nur ausgeführt, wenn die Bedingung erfüllt ist x++ ist eine Anweisung, die nach den Anweisungen ausgeführt wird Wichtig: Es muss nicht von 0 an gezählt werden; die Bedingung kann beliebig komplex sein; es muss auch nicht um eins erhöht werden. Auch solche Schleifen find möglich (startX, endX sind irgendwelche Variablen): for (int x = startX; (x < endX) && !kara.treeFront(); x = x+2)

Kleeblätter in einer Zeile zählen: Bedingung @Override public void myMainProgram() { int anzahlKleeblaetter = 0; for (int x = 0; x < world.getSizeX(); x++) { if (world.isLeaf(x, 0)) { anzahlKleeblaetter++; } tools.showMessage("Es hat " + anzahlKleeblaetter + " Kleeblätter!");

Kleeblätter in einer Zeile zählen: Bedingung if (world.isLeaf(x, 0)) { // Anweisungen } world.isLeaf(x, 0) ist die Bedingung. Eine Bedingung kann beliebig komplex sein und andere Bedingungen mit &&, ||, ! verknüpfen. Die Anweisungen werden nur ausgeführt, wenn die Bedingung erfüllt ist. Eine Bedingung muss immer einen Boole’schen Wert liefern: Ein Aufruf einer Methode, die boolean zurückgibt, wie im Beispiel world.isLeaf(x,0). Ein Vergleich wie x < world.getSizeX(). Eine Verknüpfung anderer Bedingungen mit &&, ||, !.

Kleeblätter in einer Zeile zählen: Variablen @Override public void myMainProgram() { int anzahlKleeblaetter = 0; for (int x = 0; x < world.getSizeX(); x++) { if (world.isLeaf(x, 0)) { anzahlKleeblaetter++; } tools.showMessage("Es hat " + anzahlKleeblaetter + " Kleeblätter!");

Kleeblätter in einer Zeile zählen: Variablen int anzahlKleeblaetter = 0; anzahlKleeblaetter++; Variablen speichern Daten. Sie sind von einem bestimmten Typ, im Beispiel oben Ganzzahl (int). Variablen müssen definiert werden, d.h. ihr Typ muss festgelegt werden: int anzahlKleeblaetter. Variablen müssen initialisiert werden, d.h. es muss ihnen ein erster Wert zugewiesen werden: int anzahlKleeblaetter = 0; Variablen können beliebig verändert werden: anzahlKleeblaetter++; anzahlKleeblaetter = anzahlKleeblaetter*10; …

Kleeblätter in Welt zählen @Override public void myMainProgram() { int anzahlKleeblaetter = 0; for (int y = 0; y < world.getSizeY(); y++) { anzahlKleeblaetter = anzahlKleeblaetter + zaehleKleeblaetter(y); } tools.showMessage("Es hat " + anzahlKleeblaetter + " Kleeblätter!"); int zaehleKleeblaetter(int y) { for (int x = 0; x < world.getSizeX(); x++) { if (world.isLeaf(x, y)) { anzahlKleeblaetter++; return anzahlKleeblaetter;

Kleeblätter in Welt zählen: Methodendefinition int zaehleKleeblaetter(int y) { int anzahlKleeblaetter = 0; for (int x = 0; x < world.getSizeX(); x++) { if (world.isLeaf(x, y)) { anzahlKleeblaetter++; } return anzahlKleeblaetter;

Kleeblätter in Welt zählen: Methodendefinition, Parameter Der Parameter y ist innerhalb der Methode zaehleKleeblaetter eine normale Variable. Die Methode zaehleKleeblaetter erhält eine Kopie von y. Sie könnte y = 0; setzen, ohne dass das Auswirkungen auf die aufrufende Methode hätte. Das gilt für alle Parameter von einfachen Datentypen (int, boolean, ...).

Kleeblätter in Welt zählen: Methodendefinition, Parameter int y = 0; zaehleKleeblaetter(y); // y hat immer noch den Wert 0 int zaehleKleeblaetter(int y) { y = 7; return 42; } Die Bezeichnung des Parameters spielt dabei überhaupt keine Rolle: Im Hauptprogramm wird die Variable y definiert. Sie wird als Parameter mit dem Namen y (hier der gleiche Name – kann aber auch ein anderer Name sein!) an die Methoden zaehleKleeblaetter übergeben. zaehleKleeblaetter erhält eine Kopie von y. Änderungen an Parameter y haben keine Auswirkungen auf die aufrufende Methode!

Kleeblätter in Welt zählen: Methodenaufruf @Override public void myMainProgram() { int anzahlKleeblaetter = 0; for (int y = 0; y < world.getSizeY(); y++) { anzahlKleeblaetter = anzahlKleeblaetter + zaehleKleeblaetter(y); } tools.showMessage("Es hat " + anzahlKleeblaetter + " Kleeblätter!");

Kleeblätter in Welt zählen, Version 2: Doppelt geschachtelte Schleife @Override public void myMainProgram() { int anzahlKleeblaetter = 0; for (int y = 0; y < world.getSizeY(); y++) { for (int x = 0; x < world.getSizeX(); x++) { if (world.isLeaf(x, y)) { anzahlKleeblaetter++; } tools.showMessage("Es hat " + anzahlKleeblaetter + " Kleeblätter!");

Kleeblätter in Welt zählen, Version 3: Doppelt geschachtelte Schleife @Override public void myMainProgram() { int anzahlKleeblaetter = 0; for (int x = 0; x < world.getSizeX(); x++) { for (int y = 0; y < world.getSizeY(); y++) { if (world.isLeaf(x, y)) { anzahlKleeblaetter++; } tools.showMessage("Es hat " + anzahlKleeblaetter + " Kleeblätter!");

Säulendiagramm zeichnen: Arrays @Override public void myMainProgram() { int[] zufallsWerte = new int[world.getSizeX()]; for (int x = 0; x < zufallsWerte.length; x++) { zufallsWerte[x] = tools.random(world.getSizeY()-1); } zeichneSaeulenDiagramm(zufallsWerte); void zeichneSaeulenDiagramm(int[] saeulenHoehen) { for (int x = 0; x < saeulenHoehen.length; x++) { for (int y = 0; y < saeulenHoehen[x]; y++) { world.setLeaf(x, world.getSizeY() - 1 - y, true);

Säulendiagramm zeichnen: Arrays int[] zufallsWerte = new int[world.getSizeX()]; Variablen speichern Daten. Sie sind von einem bestimmten Typ. zufallsWerte ist eine Variable vom Typ «Array von Ganzzahlen». Array bedeutet: Eine feste (nicht-veränderliche) Anzahl von Daten vom gleichen Typ, die über einen Index von 0..<Anzahl-1> angesprochen werden. Variablen müssen definiert werden, d.h. ihr Typ muss festgelegt werden: int[] zufallsWerte. Variablen müssen initialisiert werden, d.h. es muss ihnen ein erster Wert zugewiesen werden: new int[world.getSizeX()]. Anschliessend haben alle Elemente den Wert 0: zufallsWerte[0] = zufallsWerte[1] = ... = zufallsWerte[world.getSizeX()-1] = 0. Variablen können beliebig verändert werden: zufallsWerte[0] = 10; // ändert den Inhalt des ersten Arrayelements

Säulendiagramm zeichnen: Arrays als Parameter void zeichneSaeulenDiagramm(int[] saeulenHoehen) { for (int x = 0; x < saeulenHoehen.length; x++) { for (int y = 0; y < saeulenHoehen[x]; y++) { world.setLeaf(x, world.getSizeY() - 1 - y, true); }

Säulendiagramm zeichnen: Arrays als Parameter Der Parameter saeulenHoehen ist innerhalb der Methode zeichneSaeulenDiagramm eine normale Variable. Die Methode zeichneSaeulenDiagramm erhält das Orginal von saeulenHoehen. Würde die Methode zum Beispiel saeulenHoehen[x] = 0; setzen, würde das den Array der aufrufenden Methode ändern. Das gilt für alle Parameter von komplexen Datentypen (Arrays, Objekte, ...).

Säulendiagramm zeichnen: Arrays als Parameter int[] zufallsWerte = new int[world.getSizeX()]; zeichneSaeulenDiagramm(zufallsWerte); // zufallsWerte[0] hat jetzt Wert 7, nicht mehr 0! void zeichneSaeulenDiagramm(int[] saeulenHoehen) { saeulenHoehen[0] = 7; } Die Bezeichnung des Arrays (es gibt in diesem Programm nur einen Array!) spielt dabei überhaupt keine Rolle: Im Hauptprogramm wird der Array zufallsWerte definiert. Er wird als Parameter mit dem Namen saeulenHoehen an die Methoden zeichneSaeulenDiagramm übergeben. saeulenHoehnen «verweist» aber auf den gleichen Array, auch wenn es ein anderer Name ist als zufallsWerte!

Die Welt von Kara: Zwei-dimensionaler Array (wie Tabelle) @Override public void myMainProgram() { boolean[][] neueFelder = new boolean[world.getSizeX()][world.getSizeY()]; berechneNeueFelder(neueFelder); schreibeNeueFelder(neueFelder); } Das Programm soll eine Welt berechnen. Die neue Welt soll zunächst zwischengespeichert werden (Variable neueFelder, Methode berechneNeueFelder). Anschliessend soll die neue Welt dargestellt werden (Methode schreibeNeueFelder).

Die Welt von Kara: Zwei-dimensionaler Array (wie Tabelle) void berechneNeueFelder(boolean[][] neueFelder) { for (int y = 0; y < world.getSizeY(); y++) { for (int x = 0; x < world.getSizeX(); x++) { neueFelder[y][x] = berechneNeuenWert(x, y, world.isLeaf(x, y)); } boolean berechneNeuenWert(int x, int y, boolean l) { return x == y; Diese Methoden berechnen eine Welt mit Kleeblättern in der Diagonale von links oben nach rechts unten.

Es geht auch drei-dimensional... @Override public void myMainProgram() { boolean[][][] neueFelder = new boolean[10] [world.getSizeX()][world.getSizeY()]; for (int i = 0; i < 10; i++) { berechneNeueFelder(neueFelder, i); } schreibeNeueFelder(neueFelder[9]); // neueFelder[9] übergibt den zwei-dimensionalen Array Vielleicht soll der zeitliche Verlauf der berechneten Arrays gespeichert werden (in der dritten Dimension)...