11 EEiinnrriicchhtteenn vvoonn JJBBuuiillddeerr

Werbung
E
Eiinnrriicchhtteenn vvoonn JJB
Buuiillddeerr
W
Waarruum
m JJaavvaa??
W
Waarruum
m
JJB
Buuiillddeerr??
Zu beiden Fragen jetzt kein Wort. Sinnvoller besprechen kann man sie,
wenn man schon ein bisschen Erfahrung mit Java hat, außerdem sind
dazu einige theoretische Erklärungen nötig.
IInnssttaallllaattiioonn
Die Entwicklungsumgebung JJB
Buuiillddeerr PPeerrssoonnaall von B
Boorrllaanndd ist für private
Anwendungen frei.
Auf den Schulrechnern ist sie klickbereit installiert.
Wenn Sie zu Hause damit arbeiten wollen, müssen Sie zunächst JBuilder
installieren. Im Pub-Verzeichnis befindet sich ein Verzeichnis Java_Install
mit einem Unterverzeichnis jb9_windows (66 MByte)
und einem Unterverzeichnis geierGrafik (100 kByte).
Diese beiden Verzeichnisse müssen Sie irgendwie auf ihren heimischen
Rechner transportieren.
Wer mit einem anderen Betriebssystem arbeitet, muss die
Installationsdatei selbst aus dem Internet laden.
In jb9_windows finden Sie die Datei per_install.exe, die Sie starten
müssen.
Es öffnet sich das Installations-Fenster von JBuilder. Sie müssen ok
anklicken.
Maurer. Java mit JBuilder 9 für Einsteiger. Seite 1(12.02.2005)
Das Installationsprogramm läuft alleine. Sie müssen nur zu Beginn ok.,
dann weiter klicken.
Beim Fenster mit den Lizenzbestimmungen müssen Sie Ihr Einverständnis
erklären, dann weiter.
… und immer weiter…..und irgendwann auf fertig klicken.
Das Programm startet dann nicht selbst, Sie starten JBuilder am besten
über Start… Programme.
Es öffnet sich ein Registrierungsfenster. Hier
Registrierungsdatei vorhanden
anklicken.
Maurer. Java mit JBuilder 9 für Einsteiger. Seite 2(12.02.2005)
Die Aktivierungsdatei ist im Verzeichnis
jb9_windows
und heißt nachricht.txt
Jetzt müssen nur noch die Dateiverknüpfungen registriert werden.
Maurer. Java mit JBuilder 9 für Einsteiger. Seite 3(12.02.2005)
G
Geeiieerr--G
Grraaffiikk
ZZeeiicchheennffeelldd
Das Feld, auf dem wir zeichnen werden, habe ich zunächst willkürlich auf
600 mal 600 Pixel (Bildpunkte) festgelegt.
Jedes Pixel auf dem Feld hat eindeutige Koordinaten, allerdings wird
nicht so gezählt wie in einem Koordinatensystem in der Mathematik, also
nach rechts und nach oben, sondern wie bei der Zeilen- und
Spaltenzählung bei einer Tabelle, also nach rechts und nach unten.
0,0
50,0
600,0
0,50
0,300
600,50
50,300
600,300
300,450
0,600
50,600
600,600
W
Wiiee w
wiirrdd ggeezzeeiicchhnneett??
Um, dem Computer zu sagen, was er zeichnen soll, haben wir eine kleine
IIddeeee ddeerr
ZZeeiicchhnnuunngg
Werkzeugkiste, mit Anweisungen um einen Geier über den Schirm zu
bewegen.
Eigentlich bewegt sich eine Schildkröte. Die Idee stammt nämlich
eigentlich aus dem amerikanischen Programm Logo, das ursprünglich
für Vorschulkinder entwickelt wurde. Bei Logo gibt es eine Schildkröte,
turtle, die über den Bildschirm gesteuert werden muss. Man kann ihr z.B.
sagen bewege dich 100 Schritte vorwärts,
fd(100);
drehe dich um 90° nach links,
lt(90);
Maurer. Java mit JBuilder 9 für Einsteiger. Seite 4(12.02.2005)
und gehe weiter 100 Schritte vorwärts.
fd(100);
Auf dem Bildschirm sieht man weder Turtle noch Geier, sondern nur die
Spur, die er normalerweise hinterlässt.
Die Spur kann man aber auch abschalten
pu();
Man kann die Zeichenfarbe ändern, Text schreiben lassen, den Geier an
einer anderen Stelle starten lassen, usw.
G
Grruunnddssttrruukkttuurr
Alle Anweisungen zur Erstellung einer Geiergrafik werden in geschweifte
Klammern eingeschlossen und durch eine so genannten Paint-Methode
an das Grafik-Objekt g übergeben.
Alles klar?
Im Augenblick genügt es zu wissen, dass unsere Zeichenanweisungen
zwischen die geschweiften Klammern dieses Ausdrucks müssen:
public void paint(Graphics g) {
…………..
}
IInniittiiaalliissiieerruunngg
ddeess G
Geeiieerrss
Zuerst muss man einen Geier erzeugen.
Genauer gesagt:
Geier ist unser Muster (In Java: Klasse) und wir erzeugen ein spezielles
Exemplar vom Typ Geier. Oder in Java-Chinenisch: Wir erzeugen ein
Objekt, eine Instanz der Klasse Geier.
Das geht auf verschiedene Arten, die sich nur durch die Startposition
unterscheiden.
Wir wollen z.B. ein Dreieck zeichnen, dann erzeugen wir ein Objekt
dreieck
1)
Geier dreieck = new Geier(g);
Start in (0 ,0) mit Blick nach rechts
2)
Geier dreieck = new Geier(300,300,0,g);
Start in (300 ,300) mit Blick nach rechts
3)
Geier dreieck = new Geier(300,300,90,g);
Start in (300 ,300) mit Blick nach oben
Methoden (Werkzeuge) der Klasse Geier:
Dreh Dich um soviel Grad, wie Winkel angibt, nach
links. (left turn). {winkel vom Typ double}
Z.B.:
lt(120);
rt(winkel);
Dreh Dich um soviel Grad, wie Winkel angibt, nach
rechts. (right turn). {winkel vom Typ double }
Z.B.:
rt(120);
W
Weerrkkzzeeuugg--kkiissttee,, fd(strecke);
Bewege Dich soviel Schritte in Pfeilrichtung, wie
bbeesssseerr
Strecke angibt. (forward) {strecke vom Typ double}
M
Meetthhooddeenn--kkiissttee
Z.B.:
fd(200);
fd(-200); Bewege Dich entgegen der Pfeilrichtung.
pd();
Zeichne bei den folgenden Befehlen Deine Spur auf
den Schirm. (Pen down)
pu();
Zeichne bei den folgenden Befehlen Deine Spur nicht
auf den Schirm. (Pen up)
setColor(farbe); Zeichne bei den folgenden Befehlen Deine Spur in der
Farbe farbe. {farbe vom Typ Color}
Die möglichen Farben befinden sich in der Klasse Color, was das heiß
später. Jedenfalls werden sie mit Color.Farbname aufgerufen:
lt(winkel);
Maurer. Java mit JBuilder 9 für Einsteiger. Seite 5(12.02.2005)
Color.black
Color.blue
Color.cyan
Color.darkGray
Color.gray
Color.green
Color.lightGray
Color.magenta
Color.orange
Color.pink
Color.red
Color.white
Color.yellow
Z. B.: farbeNeu(Color.red);
goTo(x,y,winkel); Bewege den Geier an die Position (x,y) mit dem Blick
in Richtung winkel ohne eine Spur zu hinterlassen. {x,y
vom Typ int} [Von der Bildschirmmitte aus x Pixel nach
rechts oder links, je nach Vorzeichen, y Pixel nach oben
oder unten.]
writeString (text); Schreibe an der aktuellen GeierPosition x,y den Text
text. {Text vom Typ String, x,y vom Typ int }
Z. B.:
WriteString("Stern");
Der Text muss in Anführungszeichen geschrieben
werden!
writeStringXY (text,x,y); Schreibe an der Position x,y den Text text.
{Text vom Typ String, x,y vom Typ int }
Z. B.:
WriteStringXY("Stern",20,200);
Der Text muss in Anführungszeichen geschrieben
werden!
EEiinniiggee eerrssttee
R
Reeggeellnn ffüürr
JJaavvaa-PPrrooggrraam
mm
mee
•
Groß- und Kleinschreibweise muss unterschieden werden.
goto ist nicht dasselbe wie goTo
•
Ans Ende jeder Anweisung kommt ein Semikolon.
•
Man kann mehr als eine Anweisung in eine Zeile schreiben.
Z.B. dreieck.fd(200); dreieck.lt(120);
•
Kommentare können direkt in das Programm geschrieben
werden. Damit der Compiler nicht stolpert, müssen sie
gekennzeichnet werden.
Soll der Rest der Zeile Kommentar sein, reichen zwei Slashes //
dreieck.lt(45); // Jetzt beginnt der Kommentar……
Geht der Kommentar über mehrere Zeilen, dann muss er mit /*
begonnen und mit */ beendet werden.
•
Bei der Beschreibung der Methoden der Geiergrafik habe ich
Abkürzungen wie text, x, y, usw. verwendet. Wie in der
Mathematik nennt man sie Variablen.
•
Variablen können bei Java beispielsweise Texte oder Zahlen
enthalten, Java möchte aber genau wissen, welche Art von Daten
eine Variable enthalten darf. Zu diesem Zweck gibt es zahlreiche
Datentypen. Drei davon sind bereits aufgetreten:
int, Abkürzung von Integer, bezeichnet ganze Zahlen.
double bezeichnet Fließkommazahlen, wir würden sagen
Dezimalzahlen.
String (Achtung groß geschrieben) bezeichnet eine Zeichenkette,
also Texte. Sie müssen immer in Anführungszeichen
eingeschlossen werden.
Näheres aber erst in Abschnitt 3.4.1.
Maurer. Java mit JBuilder 9 für Einsteiger. Seite 6(12.02.2005)
S
Sttaarrtt m
miitt ddeem
m JJB
Buuiillddeerr
ggeeiieerrG
Grraaffiikk--P
Paakkeett iinnssttaalllliieerreenn
Der JBuilder muss auf dem Rechner installiert
sein.
Der Start gelingt problemlos, wenn man mein
vorbereitetes Paket geierGrafik irgendwo in ein
Verzeichnis EigeneJavas oder so kopiert.
Auf den Schulrechnern ist das schon passiert.
Jeder hat das Verzeichnis geierGrafik in
seinem Ordner.
Zum Start des JBuilders muss man nur auf die Datei geierGrafik.jpx doppel-klicken und ein
bisschen warten.
Schlimmstenfalls
sieht es dann auf
dem Bildschirm
so aus.
Dann muss man die
beiden Dateien
Muster.html
und
Muster.java
durch Doppel-Klicken
öffnen.
Jetzt sieht es auf
dem Schirm so
aus:
Maurer. Java mit JBuilder 9 für Einsteiger. Seite 7(12.02.2005)
Scrollen nach
unten bringt den
Bereich ins Bild,
in den unsere
Geier-Befehle
müssen.
Den Rest
ignorieren wir
zunächst.
Beispiel
Java soll uns begrüßen.
Dazu ändern wir die Initialisierungszeile in
Geier gruss = new Geier(200,200,0,g);
weil Java jetzt grüßen soll und kein Muster ohne Wert mehr ist. Man
hätte aber auch muster stehen lassen können.
Wir haben jetzt also ein Objekt gruss vom Typ Geier erzeugt, das auf alle
Methoden der Klasse Geier zugreifen kann.
Wir lassen den Text an der aktuellen geierposition ausgeben benötigen
also die Methode writeString (text);
Angewandt wird sie auf das Objekt gruss, also lautet die Zeile:
gruss.writeString("Hallo! Herzlich willkommen bei Java");
Jetzt soll das Applet getestet werden. Wie das geht zeigt der nächste
Abschnitt:
Bemerkung
Man sieht der Befehl write… funktioniert nur, wenn gruss. davor
steht. Mit ein bisschen Java-Chinesisch: Geier ist eine Klasse, ein
Typ, der diverse Befehle kennt. gruss ist ein Objekt vom Typ Geier
und verfügt daher über diese Befehle (in Java-Chinesisch, Methoden)
JBuilder bietet nach dem Punkt nach gruss in einem Fenster alle
Methoden an, die für Objekte der Klasse Geier zur Verfügung stehen;
nämlich die, die oben im Kasten stehen. Man muss also keine
Befehle auswendig lernen, man muss nur wissen, was es in Etwa
gibt.
TTeesstteenn ddeess A
Apppplleettss
W
Waass iisstt eeiinn
A
Apppplleett??
Was wir hier gebastelt haben ist ein Applet im Unterschied zu einer
Anwendung.
Der entscheidende Unterschied liegt darin, dass eeiinn A
Apppplleett vvoonn eeiinneem
m
B
Brroow
wsseerr ggeessttaarrtteett w
wiirrdd.
Es ist daher sehr einfach Zu diesem Zweck gibt es neben der java-Datei
Muster.java noch eine HTML-Seite Muster.html.
Maurer. Java mit JBuilder 9 für Einsteiger. Seite 8(12.02.2005)
ZZuum
m TTeesstteenn des
Applets, muss
man zunächst
das ganze
Projekt
aakkttuuaalliissiieerreenn.
Am schnellsten
mit Strg+F9.
Sonst über den
Menüpunkt
Projekt…
Dann wird die
Datei
Muster.html in
den Vordergrund
gestellt und
aktualisiert durch
Klicken auf das
markierte Icon.
A
G
A
B
E
AUUUFFFG
GA
AB
BE
E1
1
Schreibe die Zeilen in das Muster-Applet, die dafür sorgen, dass der
Geier auf einem Dreieck läuft.
Der Grußtext soll nun etwas weiter oben geschrieben werden. Dazu
verwendet man am besten die zweite Write-Methode, bei der man die
Schreibposition angeben kann: writeStringXY (text,x,y).
Zunächst kann man die Zeile Geier gruss…. unverändert lassen.
Wenn das Applet funktioniert, kann man gruss durch dreieck ersetzen.
N
Neeuueess A
Apppplleett
Im Menü Datei
wird Neu
angeklickt.
Das Dreiecks-Applet ist nicht so beeindruckend, dass man es unbedingt
für die Ewigkeit konservieren will. Man möchte aber sicher nicht für jedes
neue Applet das alte überschreiben.
Um ein neues Applet zu erzeugen benötigt man zwei neue Dateien eine
html-Datei zum Testen und die eigentliche Programm-Datei mit der
Endung java.
Damit wird das Fenster Objektgalerie geöffnet.
Wir brauchen die Rubrik Web.
Maurer. Java mit JBuilder 9 für Einsteiger. Seite 9(12.02.2005)
Wir wollen ein
Applet
erzeugen, also
klicken Sie
Applet.
Damit wird er Applet-Experte geöffnet, der uns in 4 Schritten die beiden gewünschten
Dateien erzeugt.
SScchhrriitttt 11::
Hier müssen Sie
den
Klassenname
eintragen, das ist
der Name
unserer javaDatei, also jetzt:
Dreieck.
Die java-DateiNamen beginnen
im Allgemeinen
mit einem
Großbuchstaben.
SScchhrriitttt 22::
Hier muss man
gar nicht tun,
außer auf Weiter
zu klicken.
Maurer. Java mit JBuilder 9 für Einsteiger. Seite 10(12.02.2005)
SScchhrriitttt 33::
Hier muss man
wieder den
Dateinamen
eintragen, also
jetzt Dreieck.
SScchhrriitttt 44::
Und zum
Schluss
nochmals weiter,
d.h. hier fertig
stellen.
A
G
A
B
E
AUUUFFFG
GA
AB
BE
E2
2
Legen Sie, wie oben beschrieben, eine Datei Dreieck.html und eine
Dreieck.java an.
Jetzt solle ein gleichseitiges Dreieck mit einer senkrechten Seite
gezeichnet werden.
Variieren Sie die Farben.
A
G
A
B
E
AUUUFFFG
GA
AB
BE
E3
3
Legen Sie nun die Dateien Quadrat.html und Quadrat.java an.
Es soll ein Quadrat gezeichnet werden. Jede Seite soll in einer anderen
Farbe gezeichnet werden. Das Quadrat soll auf der Spitze stehen.
A
G
A
B
E
AUUUFFFG
GA
AB
BE
E4
4
Ein regelmäßiges Sechseck (siehe unten rechts) schaffen wir mit links.
A
G
A
B
E
AUUUFFFG
GA
AB
BE
E5
5
Etwas schwieriger ist es, ein regelmäßiges Fünfeck zeichnen zu lassen
Maurer. Java mit JBuilder 9 für Einsteiger. Seite 11(12.02.2005)
A
G
A
B
E
AUUUFFFG
GA
AB
BE
E6
6
Wer die Herausforderung liebt, versucht
den fünfzackigen Stern zu
zeichnen.
E
Errssttee G
Grruunnddssttrruukkttuurreenn
V
Vaarriiaabblleenn,, W
Weerrttzzuuw
weeiissuunnggeenn uunndd eeiinnffaacchhee R
Reecchheennooppeerraattiioonneenn
Mit der Anweisungsfolge
dreieck.fd(200); dreieck.lt(120);
dreieck.fd(200); dreieck.lt(120);
dreieck.fd(200); dreieck.lt(120);
erhält man ein Dreieck.
Will man die Größe ändern, dann muss man dies drei Mal tun.
Will man aus dem Dreieck ein Viereck machen, dann muss man überall
den Winkel ändern.
Das geht einfacher mit VVaarriiaabblleenn und W
Weerrttzzuuw
weeiissuunnggeenn.
Beispiel
int laenge = 200;
int winkel = 120;
dreieck.fd(laenge); dreieck.lt(winkel);
dreieck.fd(laenge); dreieck.lt(winkel);
dreieck.fd(laenge); dreieck.lt(winkel);
VVaarriiaabblleenn
VVaarriiaabblleenn-N
Naam
meenn
VVaarriiaabblleenn (IIddeennttiiffiieerr) sind eigentlich Postfächer oder Schubladen, in die
man bestimmte Werte ablegen kann.
Die Fächer erhalten N
Naam
meenn (Variablenbezeichner oder Identifier)
folgender Bauart:
• Folge von Buchstaben, Ziffern und dem Verbindungszeichen („_“)
oder jedes Währungssymbol.
• Das erste Zeichen darf keine Ziffer sein.
• Namen sind von Groß- und Kleinschreibung abhängig.
Man beginnt üblicherweise mit einem Kleinbuchstaben, nur
Klassennamen beginnen mit Großbuchstaben. Beliebt sind bei
Java Großbuchstaben im Wortinnern, siehtDochHuebschAus.
• Achtung! „-„ ist nicht zulässig, es wird als Minuszeichen gewertet.
Maurer. Java mit JBuilder 9 für Einsteiger. Seite 12(12.02.2005)
D
Daatteennttyyppeenn
Zu jeder Variablen muss zunächst festgelegt (deklariert) werden, welche
Art von Werte sie annehmen darf.
Zunächst nur die bereits erwähnten drei Datentypen:
int
Abkürzung von Integer, bezeichnet ganze Zahlen.
double bezeichnet Fließkommazahlen, wir würden sagen
Dezimalzahlen.
String (Achtung groß geschrieben) bezeichnet eine
Zeichenkette, also Texte. Sie müssen immer in
Anführungszeichen eingeschlossen werden.
VVaarriiaabblleenn-ddeekkllaarraattiioonn
VVaarriiaabblleennddeekkllaarraattiioonn
IInniittiiaalliissiieerruunngg
int laenge;
String text;
IInniittiiaalliissiieerruunngg
Jede Variable muss einen Anfangswert erhalten.
laenge = 200;
text = "Irgend eine Kette von Zeichen";
Oder D
Deekkllaarraattiioonn und IInniittiiaalliissiieerruunngg in einem Schritt:
int laenge = 200;
String text = "Irgend eine Kette von Zeichen";
String nochEinText =""; //Leerer String
A
G
A
B
E
AUUUFFFG
GA
AB
BE
E7
7
Welche der folgenden Zeichenketten sind keine erlaubten Identifier?
a) a2z
b) ödipus
c) 52pickup
d) _class
e) ca$h
f) total#
W
Weerrtt--zzuuw
weeiissuunngg W
Weerrttzzuuw
weeiissuunngg
zahl = 5; gibt der Variablen zahl den Wert 5.
a = a +1; erhöht den Wert der Variablen a um 1.
Das geht bei Java auch einfacher.
a++;
erhöht den Wert von a ebenfalls um 1.
a--;
verringert den Wert von a ebenfalls um 1.
Damit sind wir schon bei einfachen Rechenoperationen.
EEiinnffaacchhee
R
Reecchhnnuunnggeenn
++,, --,, **,, //
++ bbeeii SSttrriinnggss
TTyyppeennuum
m-w
waannddlluunngg
Mit den Variablen vom Typ int und double kann man wie gewohnt
rechnen.
Rechenzeichen sind +, -; *, / , den Inkrementoperator ++, den
Dekrementoperator --.
Vorsicht mit den Datentypen!
int
verknüpft mit int
liefert int!
Auch bei der Division!
double verknüpft mit int oder double liefert double
Beispiele: 3 + 2 = 5, aber
3.0 + 2 = 5.0
3 / 2 = 1, aber
3.0 / 2 = 1.5
String-Variablen kann man mit + aneinander hängen.
String text1 = "Kuno"; String text2 = "Erkelbrecht";
text1+text2; ergibt "KunoErkelbrecht.
Mit dem + kann man int-und double-Werte in String-Werte
umwandeln.
int zahl = 5; //Typ int
""+zahl;
// Typ String.
Maurer. Java mit JBuilder 9 für Einsteiger. Seite 13(12.02.2005)
Wir benötigen diese Typenumwandlung bei unserem write-Befehl. Der
lässt uns ja nur Strings schreiben.
writeStringXY(5,100,100); // geht schief
writeStringXY(""+5,100,100); // klappt!
A
G
A
B
E
AUUUFFFG
GA
AB
BE
E8
8
Ändern Sie das Applet Sechseck ab, indem Sie Variabeln verwenden.
A
G
A
B
E
AUUUFFFG
GA
AB
BE
E9
9
Legen Sie ein Applet Rechnen.java an.
Erzeugen Sie ein Objekt rech. Geben Sie die folgenden Anweisungen
ein
int a = 3; int b = 5;
String text1 = "sehr "; String text2 = "gut";
rech.writeStringXY(""+a,100,100);
rech.writeStringXY(""+b,100,150);
rech.writeStringXY(""+a+b,100,200);
a) Ersetzen Sie a+b durch a*b, durch a/b, durch a++, durch b--.
b) Variieren Sie die Werte von a und b.
c) Jetzt ergänzen Sie
rech.writeStringXY(text1,200,100);
rech.writeStringXY(text2,200,150);
rech.writeStringXY(text1+text2,200,200);
d) Was schreiben die beiden folgenden Zeilen auf den Schirm?
Überlegen Sie zuerst und probieren Sie dann:
rech.writeStringXY(""+3+6,250,100);
rech.writeStringXY(3+6+"",250,150);
Und was passiert, wenn man 3 durch 3.5 ersetzt.
FFoorr--S
Scchhlleeiiffeenn
Störend ist jetzt immer noch, dass man beim Sechseck sechs Mal
dieselben Befehle schreiben muss. Beim Gedanken an ein 360-Eck
kommt einem das Grausen. – Muss es aber nicht, es gibt eine Struktur,
mit der man Wiederholungen programmieren kann.
Beispiel
SSyynnttaaxx ddeerr
ffoorr--SScchhlleeiiffee
int laenge = 100; int winkel = 60;
for (int i=0;i<6;i++)
{
sechseck.fd(laenge);
sechseck.lt(winkel);
}
Zunächst ist i = 0, die beiden Anweisungen in der geschweiften Klammer
werden ausgeführt,
dann wird i um 1 erhöht, also i = 1, die beiden Befehle werden wieder
ausgeführt,
i wird auf 2 erhöht usw.
for (<Initialisierung>;<Abbruchbedingung>;<Änderung>)
{
Anweisung1;
Anweisung2;
…
}
Zunächst muss die Zählvariable initialisiert werden, beim Beispiel
wurde hier auch i deklariert, das kann man aber auch vorher erledigen
es folgt eine Abbruchbedingung und schließlich
muss angegeben werden, wie die Zählvariable verändert werden soll.
Maurer. Java mit JBuilder 9 für Einsteiger. Seite 14(12.02.2005)
A
G
A
B
E
AUUUFFFG
GA
AB
BE
E1
100
Beispiel
Legen Sie ein neues Applet mit dem Namen Vieleck an. Verwenden Sie
eine for-Schleife.
a) Zunächst ein Achteck.
b) Jetzt ein 60-Eck.
c) Nun soll ein beliebiges n-Eck gezeichnet werden.
Schreiben Sie die folgende Zeile vor die for-Schleife.
int n = 8; // Anzahl der Ecken
Der Drehwinkel muss passend zu n berechnet werden.
int winkel = ??;
Bei n = 3 war der winkel = 120
bei n = 4 war der winkel = 90
bei n = 5 war der winkel = 72
bei n = 6 war der winkel = 60.
Bei beliebigem n gilt winkel = ?.
d) Testen Sie das Applet.
Was beobachten Sie bei n = 150? Woran liegt es? Wie kann man das
Problem beseitigen.
Hinweis: Schauen Sie in den vorigen Abschnitt, 3.4.1.
Man kann mit Schleifen mehr machen als einfach nur dieselben Befehle
wiederholen.
Es sollen die Zahlen von 1 bis 10 addiert werden, z.B. im Applet
Rechnen. Dazu erzeugen wir das Objekt sum
int n = 10; int sum = 0; int y=0; int x = 10;
for (int i=1;i<=n;i++)
{
sum = sum +i;// Der Wert von sum wird um i erhöht
y = y + 20; // y-Schreib-Position. Zeilenhöhe = 20 Pixel
sum.writeStringXY(sum+"",10,y);
}
A
G
A
B
E
AUUUFFFG
GA
AB
BE
E1
111
Füllen Sie das folgende Ablaufprotokoll des Applets aus:
n
i
sum
x
10
1
1
10
A
G
A
B
E
AUUUFFFG
GA
AB
BE
E1
122
Legen Sie ein Applet Blumen an. Erzeugen Sie
ein Objekt blume1.
double laenge;
Die Blume wird erzeugt durch Striche, die vom
Mittelpunkt ausgehen, d.h. man geht immer
wieder zum Mittelpunkt zurück und dreht ein
Stückchen weiter, z.B. 1° mit
blume1.goTo(200,200,…??…)
Die Länge der Striche wird über
laenge*blume1.sin(2*i) oder
laenge*blume1.sin(3*i) usw.
Siehe Werkzeugkiste.
Maurer. Java mit JBuilder 9 für Einsteiger. Seite 15(12.02.2005)
y
20
A
G
A
B
E
AUUUFFFG
GA
AB
BE
E1
133
Man kann auf dieselbe Weise weitere Blumen-Objekte blumen2,
blumen3 usw. erzeugen.
W
Wüürrffeellnn m
miitt JJaavvaa
Mit Java kann man auch würfeln.
Dazu gibt es einen Befehl in der Bibliothek Math, die uns in Java zur
Verfügung steht.
ZZuuffaalllsszzaahhlleenn
erzeugt Zufallszahlen zwischen 0 und 1
Math.random();
double zahl;
zahl = 6*Math.random(); erzeugt Zufallszahlen zwischen 0 und 1
(int)Math.ceil(zahl);
macht daraus Zufallszahlen zwischen 1 und 6
Bemerkung
M
Maatthh..cceeiill
Beispiel
A
Apppplleett ZZuuffaalll
Math.random(); liefert eine Zahl vom Typ double, also eine
Dezimalzahl.
Nach Multiplikation mit 6 erhält man immer noch eine Dezimalzahl. Die
liegt dann zwischen 0,0.. und 6.
Rundet man in der üblichen Weise, erhält man Zahlen zwischen 0 und 6.
In der Bibliothek Math gibt es aber etwas passendes für diesen Fall,
nämlich Math.ceil();
ceil rundet immer auf, d.h. ceil(0.1) ergibt ebenso 1.0 wie ceil(0.99).
Allerdings ist das Ergebnis immer noch eine Zahl vom Typ double, falls
man eine Zahl vom Typ int benötigt, ist wieder eine Typenumwandlung
fällig.
Das geht ganz bequem durch vorangestelltes (int). Diese Art der
Typenumwandlung nennt man neudeutsch casten.
Um sich den Effekt anzuschauen, legen wir ein neues Applet Zufall an
mit den Zeilen:
Geier zufall = new Geier(200,200,0,g);
double zahl = Math.random();
int natZufallsZahl = (int) Math.ceil(6*zahl);
zufall.writeStringXY(""+zufallsZahl ,100,200);
zufall.writeStringXY(""+natZufallsZahl ,100,250);
A
G
A
B
E
AUUUFFFG
GA
AB
BE
E1
144
Lotto
Schreiben Sie ein Applet, das 6 Zahlen aus 49 auswählt.
Man kann die Zahlen z. B. unter die Überschrift Lotto-Zahlen in
eine Zeile schreiben.
Zum Beispiel so:
Lotto-Zahlen
45
7
13
33
21
40
Testen Sie das Programm. Dabei werden Sie zuweilen
Ergebnisse erhalten, die so bei der wirklichen Lotto-Ziehung
nicht auftreten werden.
Maurer. Java mit JBuilder 9 für Einsteiger. Seite 16(12.02.2005)
iiff--A
Annw
weeiissuunnggeenn
Aus Excel kennen wir die Wenn-Bedingung.
Eine solche Anweisung besitzt auch Java, sie heißt if-Anweisung.
Positive und negative Zahlen sollen erkannt werden.
Beispiel
if (zahl > 0) plusMinus ="plus";
else
plusMinus ="minus"; // Die 0 ist hier auch minus. Naja!
if (Bedingung) Anweisung;
else Anweisung;
SSyynnttaaxx ffüürr ddiiee
IIff--A
Annw
weeiissuunngg
Wenn mehr als eine Anweisung ausgeführt werden sollen, müssen
sie in geschweifte Klammern eingeschlossen werden.
if (Bedingung) {
Anweisung;
Anweisung;…
}
else {
Anweisung;
Anweisung;…
}
Bemerkung
<
bedeutet: kleiner als
<=
bedeutet: kleiner oder gleich
>
bedeutet: größer als
>=
bedeutet: größer oder gleich
Zuweilen müssen mehrer Bedingungen verknüpft werden, dazu gibt es
die logischen Verknüpfungen:
&
bezeichnet "und"
|
bezeichnet "oder"
|
bekommt man mit ALT GR +
A
G
A
B
E
AUUUFFFG
GA
AB
BE
E1
155
Legen Sie ein Applet Noten.java an, das Notenpunkte würfelt und den
Notennamen dazu angibt.
Hinweis:
Zunächst werden Zahlen zwischen 0 und 15 gewürfelt.
double zahl = 16*Math.random()-1;
int np = (int)Math.ceil(zahl);
if ((np < 13)&(np > 9)) notenName = "gut";
noten.writeStringXY(np+" Noten-Punkte: "+notenName ,50,200);
A
G
A
B
E
AUUUFFFG
GA
AB
BE
E1
166
Erzeugen Sie ein Applet Max, das zwei Zahlen zwischen 0 und 100
würfelt und die größere ausgibt.
Ausgabetext, wenn z.B. 15 und 21 gewürfelt wurden:
15, 21
A
G
A
B
E
AUUUFFFG
GA
AB
BE
E1
177
Die größere Zahl ist 21.
Erweitern Sie das Applet Max so, dass n mal ganze Zahlen zwischen 1
und 6 gewürfelt werden, mit beispielsweise n = 100.
Das Applet soll den Anteil der 6er angeben.
Maurer. Java mit JBuilder 9 für Einsteiger. Seite 17(12.02.2005)
ssw
wiittcchh--A
Annw
weeiissuunngg
Beim Beispiel Noten musste man eine ganze Serie von if-Anweisungen
hintereinander hängen.
Für solche Fälle gibt es eine einfacherer Struktur, die switch-Anweisung.
Beispiel
Umrechnung von Notenpunkte in Notennamen:
double zahl = Math.random();
int notenZahl=(int)Math.ceil(16*zahl)-1;//Notenpunkte
String notenName="";
switch (notenZahl) {
case 15:
case 14:
case 13: notenName = "sehr gut"; break;
case 12:
case 11:
case 10: notenName = "gut"; break;
case 9:
case 8:
case 7: notenName = "befriedigend"; break;
case 6:
case 5:
case 4: notenName = "ausreichend"; break;
case 3:
case 2:
case 1: notenName = "mangelhaft"; break;
case 0: notenName = "ungenügend"; break;
default: notenName = "falsche Eingabe";
}
noten.writeStringXY(notenZahl+
" Notenpunkte entsprechen der Note "+
notenName,10,100);
Erläuterung
Die Variable notenZahl erhält einen zufälligen Wert zwischen 0 und 15.
In der switch-Anweisung wird der Wert von notenZahl geprüft.
Hat notenZahl z.B. den Wert 15, dann wird zunächst zu case 15
gesprungen, da dort kein break ist, wird zu case 14 und dann zu case 13
gesprungen. Dort erhält notenName den Wert "sehr gut". Es folgt ein
break, d.h. es wird aus der switch-Anweisung herausgesprungen.
Hat notenZahl z.B. den Wert 4, dann wird zu case 4 gesprungen. Dort
findet sich eine Anweisung und sofort ein break, d.h. die Anweisung wird
nach case 4 verlassen.
Hätte notenZahl einen Wert außerhalb des Bereichs 0 bis 15, dann
findet sich keine passende case-Anweisung, das ist der Default-Fall.
Hier kann der nicht eintreten. Man kann aber natürlich die WürfelAnweisung so abändern, dass Werte etwa bis 20 auftreten können, dann
wird der Defaultfall eintreten.
A
U
F
G
A
B
E
AU
UF
FG
GA
AB
BE
E 1188
Schreibe ein Programm Noten2 das Noten zwischen 1 und 6 würfelt und
den Notennamen ausgibt.
Maurer. Java mit JBuilder 9 für Einsteiger. Seite 18(12.02.2005)
A
U
F
G
A
B
E
AU
UF
FG
GA
AB
BE
E 1199
int zahl = 3;
double wert=0;
switch (zahl) {
case 1: wert = 0.1;
case 2: wert = 0.2;
case 3: wert = 0.3;
case 4: wert = 0.4;
case 5: wert = 0.5;
case 6: wert = 1.5;
default:wert = 0;
};
Welchen Wert hat wert nach der Switch-Anweisung?
a) 0.3;
b) 1.5;
c) 3;
d) 0
A
U
F
G
A
B
E
AU
UF
FG
GA
AB
BE
E 2200
Schreiben Sie ein Programm das einen Entschuldigungssatz ausgibt,
"Leider konnte ich wegen einer Autopanne nicht zum Unterricht
kommen."
Dabei soll der Entschuldigungsgrund aus 5 Varianten ausgewürfelt
werden.
A
U
F
G
A
B
E
AU
UF
FG
GA
AB
BE
E 2211
Schreiben Sie ein Programm, das n=10 Dreiecke zeichnet und die
Farben dabei auswürfelt.
Hinweis:
Die Position der Dreiecke kann man z.B. so wählen:
x = 50+40*i;
y = 50+40*i;
Die Farbzuweisung erfolgt (siehe Seite 5) über
….setColor(Color.black);
Zur Farbauswahl bildet man eine Zufallszahl, z.B. zwischen 1 und 7, und
ordnet dann mit einer Switch-Anweisung jeder zahl eine Farbe zu.
A
Apppplleett iinnss IInntteerrnneett.. E
Errzzeeuugguunngg eeiinneerr jjaarr--D
Daatteeii
Maurer. Java mit JBuilder 9 für Einsteiger. Seite 19(12.02.2005)
In Schritt 3 bis 5 wird nur noch weiter bzw fertigstellen geklickt.
Die JAR-Datei geierGrafi.jar wird dann bei der nächsten ProjektAktualisierung erzeugt.
Diese Datei ist eine Archiv-Datei, sie enthält in komprimierter Form alle
Applets des package geierGrafik.
Maurer. Java mit JBuilder 9 für Einsteiger. Seite 20(12.02.2005)
Man findet sie im Verzeichnis:
/geierGrafik/classes
Gestartet werden die Applets über die jeweilige html-Datei.
Beispiel
Das Applet Blumen soll ins Internet gestellt werden.
Dazu benötigt man zwei Dateien:
geierGrafi.jar
und
Blumen.html
Mit dieser html-Datei hatten wir bisher unsere Programme getestet. Dazu
wurde sie im Ansichts-Modus betrachtet. Jetzt muss die Quelle
betrachtet werden.
In diesem Screen-Shot sieht man auch die Änderung, die man
vornehmen muss.
Die Zeile
archive = "geierGrafik.jar"
muss eingeschoben werden.
Achtung: Auf Groß- und Kleinschreibung achten.
SSttaarrtteenn ddeess
A
Apppplleettss
Doppelklickt man jetzt im Explorer auf den Dateinamen Blumen.html,
dann wird das Applet aus dem Browser heraus gestartet.
Auf diese Weise kann man ein Applet leicht ins Internet stellen, man
muss es nur auf einen Server hochladen oder mir geben.
Beispiel: http://www.kk.s.bw.schule.de/inf12/java/JavaBeispiele.html
Jetzt kommt gleich die eigentliche
Stärke des JBuilders zum Einsatz.
Maurer. Java mit JBuilder 9 für Einsteiger. Seite 21(12.02.2005)
Herunterladen