Programmierung mit Java

Werbung
BBS Gerolstein
Informatik
Programmierung
mit Java
Stand: 15.08.2010
www.p-merkelbach.de
−1−
© Merkelbach
Programmierung mit Java
Inhaltsverzeichnis
1.
Die Funktionsweise von Java ..................................................................................................3
1.1.
Der Bytecode ...................................................................................................................3
1.2.
Java JDK installieren .......................................................................................................4
1.3.
Übung 1 ...........................................................................................................................4
1.4.
Kommentare ....................................................................................................................5
1.5.
Übung 2 ...........................................................................................................................5
2. Datentypen und Rechenoperationen .......................................................................................6
2.1.
Datentypen ......................................................................................................................6
2.2.
Rechenoperationen..........................................................................................................7
2.3.
Übung 3 ...........................................................................................................................8
2.4.
Übung 4 ...........................................................................................................................8
3. Benutzereingaben und formatierte Ausgaben..........................................................................9
3.1.
Benutzereingaben mit der Klasse Scanner ......................................................................9
3.2.
Formatierte Ausgaben......................................................................................................9
3.3.
Übung 5 .........................................................................................................................10
4. Kontrollstrukturen ..................................................................................................................10
4.1.
Sequenz (Folgeanweisung) ...........................................................................................11
4.2.
Selektion (bedingte Verzweigung, Auswahlanweisung)..................................................11
4.3.
Mehrfachauswahl...........................................................................................................12
4.4.
Repetition (Wiederholungsanweisung, Schleife) ............................................................12
4.5.
Zählschleife....................................................................................................................13
4.6.
Logische Operatoren .....................................................................................................13
4.7.
Übung 6 .........................................................................................................................13
4.8.
Übung 7 .........................................................................................................................14
4.9.
Übung 8 .........................................................................................................................15
4.10.
Übung 9 .....................................................................................................................16
4.11.
Übung 10 ...................................................................................................................17
5. String-Methoden ....................................................................................................................19
6. Parametereingabe .................................................................................................................20
7. Inkrement / Dekrement ..........................................................................................................21
8. For-Schleifen .........................................................................................................................22
8.1.
Sterne0.java...................................................................................................................22
8.2.
Sterne1.java...................................................................................................................22
8.3.
Sterne2.java...................................................................................................................23
8.4.
Sterne3.java...................................................................................................................24
8.5.
Sterne4.java...................................................................................................................25
www.p-merkelbach.de
−2−
© Merkelbach
Programmierung mit Java
1. Die Funktionsweise von Java
Die Java.exe ist eine virtuelle Maschine, die als Bindeglied zwischen dem Programm im
Bytecode und dem entsprechenden Betriebssystem fungiert.
Der Bytecode ist dabei Plattform unabhängig. Er wird erst von dem entsprechenden JavaInterpreter (Virtuelle Maschine) passend zum vorliegenden Betriebssystem übersetzt.
Hardware 1
Hardware 2
Java-Interpreter
Java-Interpreter
Bytecode
Java-Compiler
Quellcode
java.exe
HelloWorld.class
javac.exe
HelloWorld.java
1.1. Der Bytecode
Zunächst schreibt man die Javabefehle im Quellcode in eine normale Textdatei z.B.
HelloWorld.java. Die Quellcodedatei muss die Endung .java haben und der Dateiname sollte
mit einem Großbuchstaben beginnen.
Um ein Java Programm durch die virtuelle Maschine (Java Prozessor) ausführen zu lassen, muss
der Quellcode in den Bytecode (Maschinensprache für den Java Prozessor) übersetzt werden.
Das Programm javac.exe ist ein Compiler (Übersetzer) der den Quellcode in eine Bytecodedatei
mit dem Namen HelloWorld.class übersetzt.
Der Java Compiler auf einem Macintosh wird exakt den gleichen Bytecode erzeugen, wie der
Java Compiler auf einem Intel System, d.h. er arbeitet Betriebssystem unabhängig. Man nennt
das auch „Plattformunabhängig“.
Die virtuelle Maschine (Java Prozessor) installiert man mit Hilfe der JRE bzw. JDK auf einem
Rechnersystem. Diese virtuelle Maschine java.exe liest den Bytecode und führt ihn aus. Das
Programm java.exe ist ein sogenannter Interpreter.
Jedes Computersystem kann Java Bytecode Programme ausführen, wenn es einen Java
Interpreter hat. Der Java Interpreter muss speziell für den bestimmten Prozessortyp des
www.p-merkelbach.de
−3−
© Merkelbach
Programmierung mit Java
Computersystems geschrieben sein, aber wenn das geschehen ist, kann das Computersystem
eine Java Virtuelle Maschine werden. Das heißt, es verhält sich wie ein Computer mit einem Java
Hardware Prozessorchip der Java Bytecode ausführen kann.
1.2. Java JDK installieren
Das Java SE Development Kit (JDK) ist eine kostenlose Sammlung von Software von Sun
Microsystems. Der Download ist bei java.sun.com erhältlich. Wenn Sie Java noch nicht installiert
haben, besorgen Sie sich die neueste Version. Die aktuelle Version ist die JDK 6.
Möchte man nur Java Programme auf einem Rechner ausführen reicht die sogenannte Java SE
Runtime Environment (JRE) aus. Möchte man aber Java Programme oder Applets selber entwickeln,
benötigt man die JDK. In der JDK ist die JRE enthalten.
Beim Download muss man das Betriebssystem, für welches man die JDK benötigt auswählen, da
jedes Betriebssystem eine andere virtuelle Java-Maschine benötigt. Die aktuelle Datei für Windows
heißt z.B. jdk-6u12-windows-i586-p.exe.
Sobald Sie die Datei haben können Sie Java installieren, indem Sie diese Datei (doppelt)
anklicken. Damit starten Sie das Installationsprogramm. Alles, was Sie dann noch zu tun haben ist
auf die Schaltflächen zu klicken und die Standardeinstellungen zu akzeptieren.
1.3. Übung 1
a) Öffnen Sie einen Texteditor und schreiben Sie folgende Programmzeilen ab:
public class HelloWorld
{
public static void main(String argv[ ])
{
System.out.println(„Hallo Welt“);
}
}
b) Speichern Sie die Datei unter dem Namen HelloWorld.java im Unterordner bin im JDKOrdner ab.
c) Öffnen Sie die Eingabeaufforderung und wechseln Sie in den Unterordner bin im JDK-Ordner.
Geben Sie dort folgende Zeile ein:
javac HelloWorld.java
Aufruf des Compilers
erstellt die Datei HelloWorld.class
Wenn keine Fehlermeldung erscheint geben Sie folgende Zeile ein:
java HelloWorld
Aufruf des Programms (HalloWelt.class)
es wird die Klasse aufgerufen
Erläuterungen zu dem Programm:
1. Eine Java-Quellcodedatei beginnt immer mit Großbuchstaben, darf keine Leerzeichen oder
Sonderzeichen enthalten und hat die Endung .java
2. Die Klasse muss genauso heißen wie der Dateiname
www.p-merkelbach.de
−4−
© Merkelbach
Programmierung mit Java
3. public class HelloWorld besagt, dass dieses Quellprogramm eine öffentliche Klasse
mit dem Namen "HelloWorld" definieren wird. Eine Klasse ist ein Abschnitt eines
Programms. Kleine Programme bestehen oft nur aus einer Klasse. Wenn das Programm
kompiliert ist, wird der Compiler eine Datei aus Bytecode mit dem Namen HelloWorld.class
erzeugen.
Manche Klassen enthalten viele Zeilen. Alles, was eine Klasse ausmacht, wird zwischen
die erste geschweifte Klammer ( { ) und die dazugehörige letzte geschweifte Klammer ( } )
gestellt.
4. Das Wort main bedeutet, dass die Methode den Namen main hat und für die Java
Virtuelle Maschine bedeutet es, dass hier der Startpunkt des Programms ist.
public bedeutet die Methode ist öffentlich, static bedeutet, die Methode ist statisch und
void bedeutet, die Methode gibt an das aufrufende Programm keinen Wert zurück.
String argv[ ] bedeutet, dass mehrere Parameter mit dem Namen argv[0], argv[1],
argv[2] … übergeben werden können. Jeder Parameter wird als Zeichenkette (String)
interpretiert.
5. Die main() Methode dieses Programms besteht aus einer einzigen Anweisung:
System.out.println(„Hallo Welt“);
Diese Anweisung gibt die Zeichen innerhalb der Anführungszeichen auf den Bildschirm des
Computersystems aus.
Dabei ist System wiederum eine schon vordefinierte Klasse mit der Methode
.out.println . Wichtig ist die Groß- und Kleinschreibung bei den Javabefehlen zu
beachten.
6. Jede Programmzeile endet mit einem Semikolon.
1.4. Kommentare
Ein Kommentar ist ein Hinweis des Programmierers im Programm. Ein Kommentar beginnt mit
zwei Slash-Zeichen "//". Diese Zeichen und alles, was nach diesen Zeichen bis zum Ende der Zeile
folgt, wird vom Java Compiler ignoriert. Mehrzeilige Kommentare werden zwischen /* und */
gesetzt.
Beispiele:
System.out.println("Hallo Welt");
//Hier steht ein Kommentar
/*
Hier steht
ein mehrzeiliger
Kommentar
*/
1.5. Übung 2
Erstellen Sie das Programm Lattenzaun.java, dass folgenden Text ausgibt. Vor dem Text soll im
Quellcode als Kommentar stehen: „Der Lattenzaun von Christian Morgenstern“.
Es war einmal ein Lattenzaun
mit Zwischenraum, hindurchzuschaun
Ein Architekt, der dieses sah,
stand eines Abends ploetzlich da
und nahm den Zwischenraum heraus
und baute draus ein grosses Haus.
Der Zaun indessen stand ganz dumm,
mit Latten ohne was herum.
www.p-merkelbach.de
−5−
© Merkelbach
Programmierung mit Java
Ein Anblick graesslich und gemein.
Drum zog ihn der Senat auch ein.
2. Datentypen und Rechenoperationen
2.1. Datentypen
Mit Datentypen kann man das Aussehen von Variablen definieren und den Speicherbedarf für eine
variable festlegen. Bei Java müssen Variablen einen Datentyp zugewiesen bekommen, weil Java
zu Beginn des Programms den Speicherbedarf für alle Variablen reserviert.
Bei Java unterscheidet man folgende Datentypen:
Ganze Zahlen:
byte, short, int und long
Kommazahlen:
float und double
Ein Zeichen:
char
Wahrheitswert:
boolean
Speicherbedarf und Bereiche der Datentypen:
Datentyp Speicherbedarf
Bereich
byte
1 Byte
-128 bis +127
short
2 Byte
-32768 bis +32767
int
4 Byte
-2147483648 bis +2147483647
long
8 Byte
-9223372036854775808 bis +9223372036854775807
float
4 Byte
±3,40282347E+38 bis ±1,40239846E-45
double
8 Byte
±1,7976931348623157E+308 bis ±4,94065645841246544E-324
char
2 Byte
Unicode-Zeichen con \u0000 bis \uffff
boolean
1 Bit
true oder false
Bei vielen anderen Programmiersprachen gibt es auch einen Datentyp String für lange
Zeichenketten. Bei Java ist dies kein Datentyp sondern ein Objekt.
Beispiel: Variablendeklaration.java
public class Variablendeklaration
{
public static void main(String argv[])
{
//Deklaration von Variablen
byte b1;
short s1;
int i1;
long l1,l2,l3;
float a1,a2,a3,a4;
double d1;
boolean bo1;
char c1;
String str1 = "Weihnachten";
//Deklaration von Konstanten
final float PI=3.1415f;
final byte MWST=16;
//Zuweisung von Werten
b1 = 50;
s1 = 15000;
i1 = 15;
l1 = 100;
www.p-merkelbach.de
−6−
//sehr kurze Ganzzahl
//kurze Ganzzahl
//Ganzzahl
//lange Ganzzahl
//reelle Zahl
//reelle Zahl mit doppelter Genauigkeit
//boolsche Variable
//ein Zeichen
//Zeichenkette
//Variable kann im Programm nicht mehr
//geändert werden
© Merkelbach
Programmierung mit Java
a1 = (float)1.2345; //1.2345 ist konstant und somit mit 64 Bit gespeichert
a2 = 1.2345f;
//daher muss sie in Float umgewandelt werden d.h. 32 Bit
a3 = a1*5+7;
d1 = 1.5E+20;
bo1 = true;
c1 = 'z';
//nur einfache Anführungszeichen bei char-Variablen
l2 = 5/3;
//Ganzzahldivision Ergebnis = 1
l3 = 5%3;
//Modulo Ergebnis = 1
a4 = a2 / a3;
//Ausgabe
System.out.println(b1);
System.out.println(s1);
System.out.println(i1);
System.out.println(l1);
System.out.println(a1);
System.out.println(a2);
System.out.println(a3);
System.out.println(d1);
System.out.println(bo1);
System.out.println(c1);
System.out.println(l2);
System.out.println(l3);
System.out.println(a4);
System.out.println(PI);
System.out.println(MWST);
}//public static void main(String argv[])
}//public class Variablendeklaration
2.2. Rechenoperationen
Die Rechenoperationen sind als Methoden in der Klasse java.lang.Math definiert.
Rechenoperation
Rechenzeichen
Beispiel
Addition
+
c=a+b
a=5 b=3 c=8
Subtraktion
-
c=a-b
a=5 b=3 c=2
Multiplikation
*
c=a*b
a=5 b=3 c=15
Division
/
c=a/b
a=5.0 b=3.0 c=1.666
Ganzzahldivision
/
c=a/b
a=5 b=3 c=1
c=a%b
a=5 b=3 c=2 (Rest)
Modulo bei Ganzzahldivision
%
Quadratwurzel
Math.sqrt(Radikand)
Potenz
Math.pow(Basis,Exponent)
e-Funktion
Math.exp()
Logarithmus
Math.log()
Sinus
Math.sin()
Cosinus
Math.cos()
Tangens
Math.tan()
Runde ganzzahlig auf
Math.ceil()
Runde ganzzahlig ab
Math.floor()
Runde zur nächsten Ganzzahl
Math.round()
Betrag eines Wertes
Math.abs()
Maximum zweier Werte
Math.max()
Minimum zweier Werte
Math.min()
Zufallswert zwischen 0 und 1
Math.random()
www.p-merkelbach.de
−7−
© Merkelbach
Programmierung mit Java
2.3. Übung 3
Erstellen Sie das Java Programm Reihenschaltung.java
zur Berechnung des Gesamtwiderstands bei zweier in
Reihe geschalteter Ohmscher Widerstände.
Richten Sie Ihren Programmaufbau nach dem gegebenen
Struktogramm.
Die Variablen bekommen die Werte zunächst im Programm
direkt zugewiesen.
Reihenschaltung.java
Ausgabe:
Berechnung des Gesamtwiderstands
bei einer Reihenschaltung
r1 = 10 Ohm
r2 = 20 Ohm
Verarbeitung:
rges = r1 + r2
Ausgabe:
Der Gesamtwiderstand beträgt "rges"
Ohm.
2.4. Übung 4
Erstellen Sie das Java Programm Parallelschaltung.java
zur Berechnung des Gesamtwiderstands bei zweier parallel
geschalteter Ohmscher Widerstände.
Parallelschaltung.java
Ausgabe:
Berechnung des Gesamtwiderstands
bei einer Parallelschaltung
r1 = 10 Ohm
r2 = 20 Ohm
Verarbeitung:
rges = (r1 * r2)/(r1 + r2)
Ausgabe:
Der Gesamtwiderstand beträgt "rges"
Ohm.
www.p-merkelbach.de
−8−
© Merkelbach
Programmierung mit Java
3. Benutzereingaben und formatierte Ausgaben
import java.text.DecimalFormat;
import java.util.Scanner;
public class Programmname
{
public static void main(String argv[])
{
//Variablendeklaration
float a;
int b;
DecimalFormat df = new DecimalFormat("###,##0.00");
Scanner eingabe = new Scanner(System.in);
//Eingabe
System.out.println("Geben Sie a ein: ");
a = eingabe.nextFloat();
System.out.println("Geben Sie b ein: ");
b = eingabe.nextInt();
//Ausgabe
System.out.println("Die Variable a hat den Wert "+df.format(a)+".");
}
}
3.1. Benutzereingaben mit der Klasse Scanner
Damit der Benutzer Eingaben machen kann, muss man die Klasse Scanner benuzten (Alternativ
den Buffered Reader). Die Klasse Scanner muss vor der Definition der Klasse importiert werden.
Man erzeugt ein Objekt mit dem Namen eingabe vom Typ Scanner. Mit a =
eingabe.nextFloat(); wird die nächste Float-Variable eingelesen und der Variablen a
zugewiesen. Die Datentypen müssen dabei übereinstimmen!
3.2. Formatierte Ausgaben
Damit der Benutzer formatierte Ausgaben machen kann, muss man die Klasse DecimalFormat
benuzten. Die Klasse DecimalFormat muss vor der Definition der Klasse importiert werden.
Man erzeugt ein Objekt mit dem Namen df vom Typ DecimalFormat. Mit df.format(a) wird die
Variable a nach dem definierten Format ausgegeben.
www.p-merkelbach.de
−9−
© Merkelbach
Programmierung mit Java
3.3. Übung 5
Erweitern Sie die Programme aus Übung 3 und Übung 4 so, dass der Benutzer die Widerstände r1
und r2 eingeben kann.
Parallelschaltung2.java
Reihenschaltung2.java
Ausgabe:
Berechnung des Gesamtwiderstands
bei einer Reihenschaltung
Ausgabe:
Berechnung des Gesamtwiderstands
bei einer Parallelschaltung
Ausgabe:
Geben Sie den Widerstand R1 in
Ohm ein:
Ausgabe:
Geben Sie den Widerstand R1 in
Ohm ein:
Eingabe:
r1
Eingabe:
r1
Ausgabe:
Geben Sie den Widerstand R2 in
Ohm ein:
Ausgabe:
Geben Sie den Widerstand R2 in
Ohm ein:
Eingabe:
r2
Eingabe:
r2
Verarbeitung:
rges = r1 + r2
Verarbeitung:
rges = (r1 * r2)/(r1 + r2)
Ausgabe:
Der Gesamtwiderstand beträgt "rges"
Ohm.
Ausgabe:
Der Gesamtwiderstand beträgt "rges"
Ohm.
4. Kontrollstrukturen
Man unterscheidet drei Elementaralgorithmen:
Anweisung (Sequenz)
Anweisung 1, Anweisung 2, Anweisung 3 ...
Entscheidung (Selektion)
Wenn Bedingung Dann Anweisung 1 Sonst Anweisung 2
Wiederholung (Repetition)
Solange Bedingung Tue Anweisung EndeSolange
Diese drei Elementaralgorithmen besitzen jeweils einen Startpunkt und einen Endpunkt.
Zu jedem Algorithmus gibt es stets einen äquivalenten Algorithmus, der sich aus den
drei Kontrollstrukturen:
Sequenz, Selektion und Repetition aufbauen lässt.
Unter Kontrollstrukturen versteht man sprachliche Ausdrucksmittel, die die Abfolge
von Aktionen regeln.
www.p-merkelbach.de
− 10 −
© Merkelbach
Programmierung mit Java
4.1. Sequenz (Folgeanweisung)
Struktogramm
Programmablaufplan (PAP)
Anweisung 1
Anweisung 1
Anweisung 2
Anweisung 3
Anweisung 2
Anweisung 3
Java:
System.out.println("Geben Sie a ein: ");
a = eingabe.nextFloat();
System.out.println("Geben Sie b ein: ");
b = eingabe.nextInt();
4.2. Selektion (bedingte Verzweigung, Auswahlanweisung)
Bedingung
Ja
Nein
Anweisung
%
Einseitige
Auswahl
Java:
if (Bedingung)
Zweiseitige
Auswahl
Java:
Ja
Anweisung
Anweisung;
Ja
Bedingung
Ja
Anweisung 1
Nein
Bedingung
Nein
Anweisung 2
Bedingung
Anweisung 1
Nein
Anweisung 2
if (Bedingung)
{
Anweisung 1;
}
else
{
Anweisung 2;
}
www.p-merkelbach.de
− 11 −
© Merkelbach
Programmierung mit Java
4.3. Mehrfachauswahl
1
Mehrfache
Auswahl
3
Anw
1
Java:
c
c
2
Anw
2
Anw
3
4
Sonst
Anw
4
Anw
5
Anw 1 Anw 2 Anw 3 Anw 4 Anw 5
switch(c)
{
case wert1: Anweisung1; break;
case wert2: Anweisung2; break;
case wert3: Anweisung3; break;
default: Anweisung5;
}
4.4. Repetition (Wiederholungsanweisung, Schleife)
Kopfgesteuerte
Schleife
Solange Bedingung (Wahr)
Bedingung
Anweisung
Wahr
Anweisung
Die Bedingungsprüfung wird auf jeden Fall einmal durchgeführt!
Java:
WHILE (Bedingung) Anweisung;
Anweisung
Anweisung
Fußgesteuerte
Schleife
Solange Bedingung (Wahr)
Wahr
Bedingung
Falsch
Die Anweisung wird das erste Mal ohne Bedingungsprüfung durchgeführt!
Java:
DO
{
Anweisung1; ...Anweisung n;
}
while (Bedingung);
www.p-merkelbach.de
− 12 −
© Merkelbach
Falsch
Programmierung mit Java
4.5. Zählschleife
Zähler = i
Für Zähler = i Bis k
Zähler < k
Anweisung
Falsch
Wahr
Anweisung
Zähler = Zähler + 1
Java:
for (Zähler=Anfangswert; Zähler <=Endwert; Zähler++)
{
Anweisung;
}
4.6. Logische Operatoren
Operator
Beispiel
Ergebnis
<
a=5 b=3
a<b
false
>
a=5 b=3
a>b
true
<=
a=3 b=3
a<=b
true
>=
a=3 b=5
a>=b
false
== (ist gleich)
a=5 b=5
a==b
true
!= (ist ungleich)
a=5 b=5
a!=b
false
&& (und)
a=5 b=3 c=7 d=9
a>b && c<d
true
|| (oder)
a=5 b=3 c=7 d=9
a>b || c>d
true
4.7. Übung 6
Erstellen Sie aus den Java-Programmen der Übung 5 ein Programm mit dem Namen
Widerstand.java. Der Benutzer soll durch eine Auswahl die Möglichkeit haben, zu entscheiden, ob
er eine Reihen- oder Parallelschaltung haben möchte.
Verwenden Sie für die Auswahl eine Character-Variable.
Der Benutzer darf Klein- und Großbuchstaben eingeben.
www.p-merkelbach.de
− 13 −
© Merkelbach
Programmierung mit Java
Erläuterungen zu der neuen Syntax:
Einlesen einer Character-Variablen:
variablenname = (char)System.in.read();
System.in.skip(2);
System.in.read() liest insgesamt 3 Zeichen ein. 1. den Buchstaben, den der Benutzer eingibt,
2. ein Carrige Return (Wagenrücklauf) und ein LineFeed (neue Zeile). Die letzten beiden
Steuerzeichen muss man mit System.in.skip(2) wieder löschen, damit sie beim nächsten
Einlesevorgang nicht aus dem Zeichenpuffer eingelesen werden und einen Fehler erzeugen.
Die Methode System.in.read() benötigt eine Fehlerbehandlung die durch die Ergänzung von
throws IOException in der Zeile public static void main(String argv[]) throws
IOException eingefügt wird. Zusätzlich muss man noch hierfür ein Paket importieren: import
java.io.*;
4.8. Übung 7
Erstellen Sie zu Übung 6 ein Struktogramm.
Widerstand.java
float r1, r2, rges
char auswahl
Ausgabe:
Widerstandsberechnung
(P)arallel- oder (R)eihenschaltung
Eingabe:
auswahl
Ausgabe:
R1 in Ohm:
Eingabe:
r1
Ausgabe:
R2 in Ohm:
Eingabe:
r2
J
Verarbeitung:
rges = r1 + r2
Wenn auswahl = "R" oder "r"
N
Wenn auswahl = "P" oder "p"
J
Verarbeitung:
rges = (r1 * r2)/(r1 + r2)
N
Ausgabe:
Fehlerhafte Eingabe!
Ausgabe:
Der Gesamtwiderstand beträgt "rges" Ohm.
www.p-merkelbach.de
− 14 −
© Merkelbach
Programmierung mit Java
4.9. Übung 8
a) Ergänzen Sie das Programm aus Übung 7 so, dass der Benutzer die Berechnung solange
wiederholen kann bis er das Programm abbricht.
Nennen Sie das Programm Widerstand_2.java.
b) Verändern Sie das Programm so, dass die Eingabe der Schaltungsart solange wiederholt wird,
bis der Benutzer ein „p“, „P“, „r“ oder „R“ eingegeben hat.
Was können Sie dann wieder von den IF-Verzweigungen wieder entfernen?
Widerstand_2.java
float r1, r2, rges
char auswahl, wiederholen
Ausgabe:
Widerstandsberechnung
(P)arallel- oder (R)eihenschaltung
Eingabe:
auswahl
Ausgabe:
R1 in Ohm:
Eingabe:
r1
Ausgabe:
R2 in Ohm:
Eingabe:
r2
Wenn auswahl = "R" oder "r"
J
Verarbeitung:
rges = r1 + r2
N
Wenn auswahl = "P" oder "p"
J
Verarbeitung:
rges = (r1 * r2)/(r1 + r2)
N
Ausgabe:
Fehlerhafte Eingabe!
Ausgabe:
Der Gesamtwiderstand beträgt "rges" Ohm.
Ausgabe:
Möchten Sie das Programm wiederholen?
Eingabe:
wiederholen
Solange wiederholen = "J" oder "j"
www.p-merkelbach.de
− 15 −
© Merkelbach
Programmierung mit Java
4.10.
4.11. Übung 9
Erstellen Sie ein Programm zur Berechnung von quadratischen Gleichungen.
Was das Programm können soll sehen Sie in den abgebildeten Boxen.
Verwenden Sie als Datentyp double.
Nennen Sie das Programm QuadratischeGleichung.java.
Erstellen Sie ein Struktogramm zu Ihrem Programm.
Hinweise:
Diskriminante
D=−
c  b 
+
a  2a 
2
D<0
es existiert keine Lösung
D=0
es existiert eine Lösung
D>0
in Java: z.B.
−b
2a
−b
es existieren zwei Lösungen x1 =
− D
2a
−b
x2 =
+ D
2a
www.p-merkelbach.de
(a+b)2
Math.pow((a+b),2)
x1 =
− 16 −
in Java:
z.B.
x
Math.sqrt(x)
© Merkelbach
Programmierung mit Java
Struktogramm
QuadratischeGleichung.java
double --> a,b,c,d
char --> wiederholen
Ausgabe:
Berechnung quadratischer Gleichungen
Geben Sie die Koeffizienten der quadratischen Gleichung in der Form a*x^2+b*x+c=0 ein:
Ausgabe: a=
Eingabe: a
Ausgabe: b=
Eingab: b
Ausgabe: c=
Eingab: c
d = (-c/a)+(b/2a)^2
d<0
J
Ausgabe: "Es existiert J
d=0
keine Lösung!"
Ausgabe:
Ausgabe:
Es existiert eine Lösung!
Es existieren zwei Lösungen!
Ausgabe:
Ausgabe:
x1=-b/(2a)
x1=-b/(2a)-sqrt(d)
x2=-b/(2a)+sqrt(d)
Ausgabe:
Möchten Sie das Programm wiederholen?
Eingabe:
wiederholen
Wiederhole, solange wiederholen ="J" oder "j" ist
Ausgabe:
"Programmende Quadratische Gleichung"
4.12. Übung 10
Schreiben Sie ein Programm, das Dezimalzahlen in Binärzahlen umrechnet.
Die Variable in die Sie das Ergebnis speichern muss ein String-Objekt sein.
Möchten Sie eine Integer-Variable in einen String verwandeln, so muss man die Methode
Integer.toString(Integervariable) nehmen.
Erstellen Sie erst ein Struktogramm.
Nennen Sie das Programm DezimalInBinär.java.
www.p-merkelbach.de
− 17 −
© Merkelbach
N
N
Programmierung mit Java
DezimalInBinär.java
int --> zahl, dezimalzahl, rest
String --> binärzahl
Ausgabe:
Umrechnung von Dezimalzahlen in Binärzahlen
Ausgabe:
Geben Sie die Dezimalzahl ein:
Eingabe:
dezimalzahl
rest = zahl modulo 2
zahl = zahl / 2
binärzahl = rest + binärzahl
Solange zahl > 0
Ausgabe:
Die Binaerzahl lautet: "binärzahl"
www.p-merkelbach.de
− 18 −
© Merkelbach
Programmierung mit Java
5.
String-Methoden
Zeichenketten werden in Java nicht mittels eines elementaren Datentyps, sondern in Form eines
Referenzdatentyps namens String darggestellt. Es gibt verschiedene Möglichkeiten ein StringObjekt zu erzeugen:
String s1 = „abc“;
String s2 = new String(„abc“);
Da es sich bei den Strings s1 und s2 um Objekte handelt, sind es Referenzvariablen die auf
unterschiedliche String-Objekte verweisen. Auch wenn s1 und s2 die gleiche Zeichenkette
beinhaltet, liefern Vergleiche wie s1 == s2 immer false.
Das kommt daher, weil beim Vergleich von Referenzvariablen nur die Referenzen und nicht die
Objektinhalte verglichen werden.
Um die Objektinhalte zu vergleichen benutzt man z.B. die Methode: s1.equals(s2).
Die Methoden der Klasse java.lang.String:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class StringTest {
public static void main (String[ ] args)
String s1 = "Weihnachten";
String s2 = "Veihnachten";
String s3 = "Xeihnachten";
String s4 = "WEIHNACHTEN";
// Ausgabe
System.out.println(s1);
System.out.println(s1.charAt(4));
System.out.println(s1.compareTo(s1));
System.out.println(s1.compareTo(s2));
System.out.println(s1.compareTo(s3));
System.out.println(s1.endsWith("ten"));
System.out.println(s1.equals(s2));
System.out.println(s1.equalsIgnoreCase(s4));
System.out.println(s1.indexOf("n"));
System.out.println(s1.indexOf("ach"));
System.out.println(s1.length());
System.out.println(s1.replace('e','E'));
System.out.println(s1.startsWith("Weih"));
System.out.println(s1.substring(3));
System.out.println(s1.substring(3,7));
System.out.println(s1.toLowerCase());
System.out.println(s1.toUpperCase());
System.out.println(String.valueOf(1.5e2));
}
}
Ergebnis der String-Methoden:
www.p-merkelbach.de
Weihnachten
n
0
1
-1
true
false
true
4
5
11
WEihnachtEn
true
hnachten
hnac
weihnachten
WEIHNACHTEN
150.0
− 19 −
© Merkelbach
Programmierung mit Java
6.
Parametereingabe
Parameter.java
public class Parameter
{
// Aufruf: java Parameter Vorname Nachname
public static void main(String argv[])
{
System.out.println("Hallo, " + argv[0] + "!");
System.out.println(argv[1] + " ist ein schoener Name!");
}//public static void main(String argv[])
}//public class Parameter
Configure OptionsJDK-Tools
Run Application auswählen
Default markieren
Edit auswählen
Parameters auswählen
Bei Main (...) die Parameter eingeben
Haken setzen
www.p-merkelbach.de
− 20 −
© Merkelbach
Programmierung mit Java
7.
Inkrement / Dekrement
Inkrement_Dekrement.java
public class Inkrement_Dekrement
{
public static void main(String argv[])
{
//Deklaration von Variablen
int a = 0;
int b = 7;
//
System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println();
//Postinkrement
b = 7;
a = 3 + b++;
System.out.println("Postinkrement");
System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println();
//Präinkrement
b = 7;
a = 3 + ++b;
System.out.println("Praeinkrement");
System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println();
//Postdekrement
b = 7;
a = 3 + b--;
System.out.println("Postdekrement");
System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println();
//Prädekrement
b = 7;
a = 3 + --b;
System.out.println("Praedekrement");
System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println();
}//public static void main(String argv[])
}//public class Inkrement_Dekrement
www.p-merkelbach.de
− 21 −
© Merkelbach
Programmierung mit Java
8.
For-Schleifen
8.1. Sterne0.java
import java.io.*;
public class Sterne0
{
public static void main(String argv[])throws IOException
{
//********Vereinbarungen**************************************************
int anzahl;
//int i; globale Variable
BufferedReader input = new BufferedReader(new
InputStreamReader(System.in));
//********Anweisungen******************************************************
System.out.println("Geben Sie die Anzahl der Zeilen ein:");
System.out.print("Anzahl = ");
anzahl=Integer.parseInt(input.readLine());
Geben Sie die Anzahl
for (int i=1; i<=anzahl; i++) //lokale Variable
der Zeilen ein: 10
{
*
System.out.println("*");
*
}
*
//System.out.println(i);
*
System.out.println("Programmende.");
*
}//public static void main
*
}//class
*
*
*
*
Programmende
8.2. Sterne1.java
import java.io.*;
public class Sterne1
{
public static void main(String argv[])throws IOException
{
//********Vereinbarungen**************************************************
int anzahl;
//int i; globale Variable
BufferedReader input = new BufferedReader(new
InputStreamReader(System.in));
//********Anweisungen******************************************************
System.out.println("Geben Sie die Anzahl der Zeilen ein:");
System.out.print("Anzahl = ");
anzahl=Integer.parseInt(input.readLine());
for (int i=1; i<=anzahl; i++) //lokale Variable
{
Geben Sie die Anzahl
for (int k=1; k<=i; k++)
der Zeilen ein: 10
//for (int k=i ; k>=1 ; k--)
*
{
**
System.out.print("*");
***
}
****
System.out.println();
*****
}
******
//System.out.println(i);
*******
System.out.println("Programmende.");
********
}//public static void main
*********
}//class
**********
Programmende
www.p-merkelbach.de
− 22 −
© Merkelbach
Programmierung mit Java
8.3. Sterne2.java
import java.io.*;
public class Sterne2
{
public static void main(String argv[])throws IOException
{
//********Vereinbarungen**************************************************
int anzahl;
BufferedReader input = new BufferedReader(new
InputStreamReader(System.in));
//********Anweisungen******************************************************
System.out.println("Geben Sie die Anzahl der Zeilen ein:");
System.out.print("Anzahl = ");
Geben Sie die Anzahl
anzahl=Integer.parseInt(input.readLine());
der Zeilen ein: 10
**********
for (int k=1; k<=anzahl; k++)
*********
{
********
for (int i=k; i<=anzahl; i++)
*******
{
******
System.out.print('*');
*****
}
****
System.out.println();
***
}
**
System.out.println("Programmende.");
*
}//public static void main
Programmende
}//class
www.p-merkelbach.de
− 23 −
© Merkelbach
Programmierung mit Java
8.4. Sterne3.java
import java.io.*;
public class Sterne3
{
public static void main(String argv[])throws IOException
{
//********Vereinbarungen**************************************************
int anzahl;
BufferedReader input = new BufferedReader(new
InputStreamReader(System.in));
//********Anweisungen******************************************************
System.out.println("Geben Sie die Anzahl der Zeilen ein:");
System.out.print("Anzahl = ");
anzahl=Integer.parseInt(input.readLine());
for (int k=0; k<anzahl; k++)
{
for (int i=1; i<=(anzahl*2)-1; i++)
{
if (i>=anzahl-k && i<=anzahl+k)
{
System.out.print('*');
}
else
{
System.out.print(' ');
}
Geben Sie die Anzahl
der Zeilen ein: 6
*
***
*****
*******
*********
***********
*********
*******
*****
***
*
Programmende
}
System.out.println();
}
for (int k=anzahl-2; k>=0; k--)
{
for (int i=1; i<=(anzahl*2)-1; i++)
{
if (i>=anzahl-k && i<=anzahl+k)
{
System.out.print('*');
}
else
{
System.out.print(' ');
}
}
System.out.println();
}
System.out.println("Programmende.");
}//public static void main
}//class
www.p-merkelbach.de
− 24 −
© Merkelbach
Programmierung mit Java
8.5. Sterne4.java
import java.io.*;
public class Sterne4
{
public static void main(String argv[])throws IOException
{
//********Vereinbarungen**************************************************
int anzahl;
BufferedReader input = new BufferedReader(new
InputStreamReader(System.in));
//********Anweisungen******************************************************
System.out.println("Geben Sie die Anzahl der Zeilen ein:");
System.out.print("Anzahl = ");
anzahl=Integer.parseInt(input.readLine());
for (int k=0; k<anzahl; k++)
{
for (int i=1; i<=(anzahl*2)-1; i++)
{
if (i>=anzahl-k && i<=anzahl+k)
{
System.out.print('*');
}
else
{
System.out.print(' ');
}
}
System.out.println();
}
//Teil 2
for (int k=0; k<anzahl; k++)
{
for (int i=1; i<=(anzahl*2)-1; i++)
{
Geben Sie die Anzahl
der Zeilen ein: 6
*
***
*****
*******
*********
***********
***** *****
****
****
***
***
**
**
*
*
Programmende
if (i>=anzahl-k && i<=anzahl+k)
{
System.out.print(' ');
}
else
{
System.out.print('*');
}
}
System.out.println();
}
System.out.println("Programmende.");
}//public static void main
}//class
www.p-merkelbach.de
− 25 −
© Merkelbach
Herunterladen