Einführung in die Programmierung mit Java
Einführung
"Hello World" - das erste Java-Programm
HelloWorld.java
void main () {
println ( "Hello World!" );
}
Die Ausführung des Programms ist (in der Konsole/im Terminal) mit java --enable-preview HelloWorld.java möglich.
Die Datei enthält ein einfaches Java-Programm, das den Text Hello World! auf der Konsole ausgibt.
In der ersten Zeile wird die Methode main
definiert. Diese ist die Einstiegsmethode in das Programm. Der Text Hello World! wird mit der Methode println
auf der Konsole ausgegeben. Die Methoden print
, und println
sind in Java Skripten immer verfügbar (bei Verwendung von --enable-preview (Java 23)) und geben den übergebenen Text auf der Konsole aus. Die Methode print
tut dies ohne und die Methode println
mit Zeilenumbruch (\\n ) am Ende.
Von der Konsole lesen
HelloYou.java
void main () {
println ( "Hello " + readln ( "What is your name? " ));
}
Mit Hilfe von readln können Sie von der Konsole lesen. In Java Skripten ist readln immer verfügbar. Das Programm gibt den Text Hello gefolgt von dem eingegebenen Text aus. Die Methode readln gibt erst den übergebenen String aus und liest dann eine Zeile von der Konsole ein. Der eingelesene Text wird dann an das Wort "Hello " angehängt (mittels des "+" Operators) und als ganzes zurückgegeben.
Ausführung von Java Skripten
Java Skripte können direkt mit java --enable-preview <Datei mit Sourcecode> ausgeführt werden.
Die Option --enable-preview ermöglicht die Verwendung der neuesten Features von Java, die sich in Zukunft aber ggf. noch ändern können.
Java Skripte können aber auch direkt ausgeführt werden, wenn sie ein Shebang (#! ) in der ersten Zeile enthalten, die Datei nicht mit .java endet und die Dateirechte (ausführbar) entsprechend gesetzt sind (Auf Unixoiden: -rwxr-xr-x ... HelloWorldScript ):
# !/ usr / bin / env java -- source 23 -- enable - preview - ea
void main () {
println ( "Hello World!" );
}
Übung - mein erstes Programm
Lesen von und Schreiben auf die Konsole
Schreiben Sie ein Java-Programm (GutenMorgen.java ), das erst nach dem Namen des Nutzers X fragt und dann Guten Morgen X! auf der Konsole ausgibt. Beachten Sie dabei, dass der Text X durch den eingegebenen Namen ersetzt wird und am Ende ein Ausrufezeichen steht.
Als zweites soll das selbe Programm dann nach dem Wohnort Y des Nutzers fragen und dann Y ist wirklich schön! auf der Konsole ausgeben.
Schreiben Sie das Programm und führen Sie es aus!
MTAwMDAw:emln0pf1/O8WreHCx+ZBkuWduFuWdCKk36dgd563QUE=:zqchMyXuvdQ9XqIw:Uf7LRsyoUywMBljWR+0q2WVZPd1l44utYBc1u92VK/eRsMBJ8PwIu9ZDscfli6MBJSkrraew9sbHQfGYJiuTickOdTY3VlQRxZh+zyAg5fVQMqTelS8aO8eOzLbmjiA/w88vkQal71PzmbyKcxBAyF0XEWyO9ub3H4rzpQdFblGagXHKIgudbIhUHpJdEqlBg4NMG9c1Uxrk6hUvoSZhyW2HPO8CrTKYsiuoDG3De+9aSqAXlqQ1hTw7VXyhIA75QannrVl23OOtyeT5NIv7DLUiu88598Cjz6s2dSzV05dxymRx1YEQQhVqa9pLcuvIpT0zeCHGjjBdq+TX4/4ar4A6Rp9gevLnU4GCvmbZ7S+oSXRbvxv2lZyeOoPWnkXgn2bD4x7L828EOO6H2uOoMV4bgM/YRzidJ96zNMUAHzw0N2DdMRanKX+MLmgoNsqoQmbTo9YCcPSurmDKiOW/375Om35AfpFV7nyATdQ+PAEV0I07Lx1Z+OJQNrJkamPx0RDhbEPXpc/R/VPu5GnBnrfmQ4wJ5MbOGNs6SwHW13P6e/cpVFMeytAAzbehqIqZuwHWaxaCujWLnkF3JOWicufUGbPxOhQb2FU8y9nJGUdu152MBgRIxbIfklzV8Fyh4m1Cbgs/xtZdzrvGolbHxw2M0FlpBNI8H2UKQvY/92Jg2v5uecGgAvN6oIBmYTnmT6WBK/mEVTHBoMvrSuR7PlNQyamc0tJoy8ZP51I8UmHM0ta1et/Kpg3e/mR9SGvJFyUmNWVLOrH3pZGtYEMRnaM4Dsof1+4mUSns2nHR+swu8iw3QOaXF8Q8Es2Xa+k9RInT4ECl1q7t1ePp3PWPrH7W2VXoC6DIuC4OyC/8GftffS7C0M1RqijO0eNe0OVjgR7W8/ARbNZA9g8+AFNqnHSqhiaprs3q/LzVcbmiEtNEnC0bdXj0huK8TyCCo2ZV7jpYozvGQNrpTHBs43gMbuRLWaoQqG/tbaHeocaDrLloyax/TWN4+vfDAiYr5kZl7q0/KnDaX3T/WTphjKUOoquILj/TXi04OrFZfEdjCjgDorl2o0ecxL1MZss9095QPAEHN/Lj28BBapmVkYWD1q5Kz3xoHGK1Rc5EFDaMroAlHe9dD8THC6S1VFdbLz5yNrSYvZuKPhzUlXYu+P7QuroY/XHV/3LunGjZU2hunozpf7JS7ITVifbv3hvTtgPdnCi2qSM+T3m9RmqJeO0IwkkMkD4ng9prZDTRMaK+/Kb45F2oOPj1/VImuv89mbCxUEUasyxUAhP2DPN2Fr50e0c+QBCE2bIzF9IHJXVVHW7rhatORXrk/U1B5Jhmp8ilKSI8NQQ2f5N6+P7WBs2c0wQi4tBndly+nDbDSSbRzZNxzrH2GkK9aDaHpM03Uu7nKUmIneg0a/1p/Krb2/wqKWHU7swMX0/NLqVUt2LWlIMV6DTMV5dMeUpPjjqq0x99Atzs5DtRsrMMAJQpuKTNSuo5KOrLx6DalzJqmhG57Najbx7JRkQLAAMPxHfm84wH1S5odvaTKN4G1360MlFQ7+/uk+BK6+Sb1qbuVYSjz5vwsPDhlqWffh0lP9GUpR9lz2EJ+VvVzm4q0QMPKG+RX/3M1FAOYUDNrqlBs4Jp9pv2Bj4gBAALC1qyFdOmsITgsYGsmKUplrXg
Hinweis
Vorgehensweise:
Stellen Sie sicher, dass Java korrekt installiert ist. Öffnen Sie dazu die Konsole und geben Sie java --version ein.
Öffnen Sie einen Texteditor (z. B. Visual Studio Code oder ZED oder ...)
Schreiben Sie den Rumpf des Programms: void main () { < IHR CODE > }
Ersetzen Sie <IHR CODE> durch den Code, der den Nutzer nach seinem Namen X fragt und dann "Guten Morgen X!" ausgibt.
Führen Sie den Code aus in dem Sie die Konsole/ein Terminal öffnen und dort: java --enable-preview GutenMorgen.java
ausführen.
Übung - Java Scripting
Java Scripting
Zur Ausführung der vorhergehenden Programme mussten Sie immer den Java Interpreter starten und das Programm ausführen. Stellen Sie Ihr letztes Programm so um, dass eine direkte Ausführung - wenn Java korrekt installiert ist - möglich ist.
Beispielausführung auf der Kommandozeile:
$ ./GutenMorgen
Wie ist Dein Name? Michael
Hallo Michael!
Wo wohnst Du? In einem schönen Ort
In einem schönen Ort ist wirklich schön!
MTAwMDAw:eMbL+duBwJplMz4oVCJLtJRWLjyl75EVFh6351hn9B4=:uoVaqZrjElHHI2KD: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
Einfache Prozedurale Programmierung mit Variablen, Konstanten, Literalen und Ausdrücken
Kommentare
Beispiel (ab Java 1.0 - spezifische Tags und HTML)
long fak ( long n ){
if ( n == 0 ) return 1 ;
else return n * fak ( n - 1 );
}
Beispiel (ab Java 23 - spezifische Tags und Markdown)
long fak ( long n ){
if ( n == 0 ) return 1 ;
else return n * fak ( n - 1 );
}
Erzeugte Dokumentation (mit Java 23)
JavaDoc tags
@param <name descr>:
Dokumentiert einen Parameter einer Methode.
@return <descr>:
Dokumentiert den Rückgabewert einer Methode.
Java Shell
Die Java Shell (jshell ) ist ein interaktives Werkzeug, das es ermöglicht Java-Code (insbesondere kurze Snippets) direkt auszuführen.
Starten Sie die Java Shell mit dem Befehl jshell --enable-preview in der Konsole.
Den gültigen Java-Code können Sie direkt in der Java Shell eingeben oder über /edit als Ganzes bearbeiten.
Sie beenden die Java Shell mit dem Befehl /exit .
Die Java Shell eignet sich insbesondere für das Ausprobieren von Code-Schnipseln und das Testen von Methoden.
# jshell -- enable - preview
| Welcome to JShell -- Version 23
| For an introduction type : / help intro
jshell > var x = "X" ;
x ==> "X"
jshell > x + "Y"
$2 ==> "XY"
jshell > $2 . length ()
$3 ==> 2
Übung - Java als Taschenrechner
Rechnen auf der Konsole
Verwenden Sie die JShell als Taschenrechner und lösen Sie die folgenden Aufgaben in der angegebenen Reihenfolge jeweils mit Hilfe von einer Formel:
Berechnen Sie, wie viele Sekunden ein Schaltjahr hat.
Sie nehmen einen Kredit über 47865 € auf und zahlen monatlich 3,6% Zinsen. Wie viele Zinsen haben Sie nach 5 Jahren bezahlt?
Ein Bauer hat 120 Äpfel. Er möchte die Äpfel gleichmäßig auf 4 Körbe verteilen. Nachdem er die Äpfel aufgeteilt hat, isst er 5 Äpfel aus jedem Korb. Wie viele Äpfel hat er noch?
Nehmen Sie an, dass weltweit jeden Tag 1 500 000 000 Plastikflaschen produziert werden. Wie viele Flaschen werden in einem Jahr produziert, wenn das Jahr 365 Tage hat, aber an den Wochenenden nicht produziert werden würde (gehen Sie von 52 Wochenenden aus)?
MTAwMDAw:7jagGSphr9+MHSCF8rC7uqrH3xpXpYcAsYQyI3vGbLQ=:uabYHpyuisCso3Qe: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
Zum Starten der JShell müssen Sie die Konsole (ein Terminal) öffnen und jshell eingeben.
Hinweis
In Programmiersprachen wird generell die englische Schreibweise für Zahlen verwendet. D. h. Sie müssen das Dezimalkomma durch einen Punkt ersetzen.)
Die Division wird in (den meisten) Programmiersprachen mit dem Operator / durchgeführt.
Die Multiplikation wird in (den meisten) Programmiersprachen mit dem Operator * durchgeführt.
Sie können Klammern (( und ) ) so verwenden, wie Sie es von der Mathematik gewohnt sind.
Sie können große Zahlen mit einem Unterstrich (_ ) formatieren, um die Lesbarkeit zu erhöhen: z. B. 1_500_000_000
.
Primitive Datentypen
Arten und Verwendung von Datentypen
Um die erlaubten Werte von Parametern, Variablen und Rückgabewerten genauer spezifizieren zu können, werden Datentypen verwendet. Java stellt hierzu (unter anderem) primitive Datentypen zur Verfügung.
Ein primitiver Datentyp ist z. B. int
(d. h. integer bzw. Ganzzahl ).
Dieser Datentyp legt fest, dass ein Wert eine Ganzzahl mit dem Wertebereich: \([-2147483648, 2147483647]\) ist.
Art
Datentyp
Beispiel
Ganzzahlen
byte
, short
, int
, long
123
Fließkommazahlen
float
, double
1.23
oder 3.141d
Zeichen
char
'a'
Wahrheitswerte
boolean
true
Alle von Java unterstützten primitiven Datentypen.
Bitte beachten Sie, dass in Code für Zahlen immer die Englische Schreibweise verwendet wird. D. h. das Dezimalkomma wird durch einen Punkt ersetzt.
Java kennt neben den primitiven Datentypen auch noch Arrays, Aufzählungen (enum
) sowie Klassen und Interfaces. Diese werden wir später behandeln.
Ganzzahlige Datentypen - Hintergrund
Ganzzahlige Werte werden im Speicher als Binärzahlen gespeichert; d. h. als Folge von Nullen und Einsen.
Um verschieden große Werte zu speichern, stellen Programmiersprachen ganzzahlige Werte mit einer unterschiedlichen Zahl von Bits dar.
Zahlen werden immer mit 8 Bit (1 Byte), 16 Bit (2 Byte), 32 (4 Byte) oder 64 Bit (8 Byte) gespeichert.
Hinweis
In Java werden Zahlen immer vorzeichenbehaftet gespeichert. D. h. ein Bit wird für das Vorzeichen verwendet; auch wenn es nicht immer benötigt wird.
Umrechnung Binär-Dezimal
Binär
Dezimal
0000 0000
+0
0000 0001
+1
...
...
0111 1111
+127
1000 0000
-128
...
...
1111 1111
-1
Datentyp
Genauigkeit (in Bit)
Wertebereich
Anzahl Werte
byte
8
-128 bis 127
\(2^8\)
short
16
-32768 bis 32767
\(2^{16}\)
int
32
-2147483648 bis 2147483647
\(2^{32}\)
long
64
-922337022036854775808 bis 922337022036854775807
\(2^{64}\)
Die Größenwahl für long und int ist teilweise historisch bedingt. Auf gängigen Prozessoren sind jedoch 64 Bit und 32 Bit die natürlichen Größen für Ganzzahlen und können effizient verarbeitet werden.
Gleitkommatypen - Hintergrund (Konzeptionell)
Gleitkommazahlen werden in Java nach Norm IEEE 754 (Seit Java 15 Version 2019) durch die Mantisse \(m\) und den Exponent \(e\) dargestellt: \(z = m \times 2^e\) .
Für das Vorzeichen wird das erste Bit verwendet, für Mantisse und Exponent werden zusammen 31- (bei float
) bzw. 63-Bit (bei double
) verwendet.
Die Mantisse und der Exponent sind vorzeichenbehaftete Ganzzahlen.
Beispiel (vereinfacht)
\(7 \times 2^{-1} = { 7 \over 2 } = 3.5\)
\(-7 \times 2^{-1} = { -7 \over 2 } = -3.5\)
\(7 \times 2^{-3} = { 7 \over 8 } = 1.125\)
\(7 \times 2^{0} = { 7 \over 1 } = 7\)
Datentyp
Genauigkeit
Mantisse
Exponent
Wertebereich
float
32
23
8
ca. \(-3.4*10^{38}\; \text{bis}\; 3.4 \times 10^{38}\)
double
64
52
11
ca. \(-1.8*10^{308}\; \text{bis}\; 1.8 \times 10^{308}\)
Ganzzahlen \(< 2^{24}\) können bei Verwendung des Datentyps float
exakt dargestellt werden; bei double
sind es Ganzzahlen \(< 2^{53}\) .
In beiden Fällen gibt es noch die Möglichkeit +/- Unendlich und NaN (Not a Number) zu repräsentieren.
Gleitkommatypen - Verwendung
Warnung
Bei Berechnungen mit Gleitkommazahlen treten Rundungsfehler auf, da nicht alle Werte in beliebiger Genauigkeit dargestellt werden können
Beispiel: Der Wert 0.123456789f (float ) wird durch die Darstellung mit Mantisse und Exponent (\(m \times 2^e\) ) zu 0.12345679 .
Gleitkommazahlen sind somit nicht für betriebswirtschaftliche Anwendungen geeignet.
Gleitkommazahlen sind z. B. für wissenschaftliche Anwendungen geeignet.
Für betriebswirtschaftliche Anwendungen gibt es den Datentyp BigDecimal
. Dieser ist aber kein primitiver Datentyp und wird später behandelt.
Zeichen - Hintergrund
einzelne Zeichen (z. B. 'a
') werden in Java mit dem Datentyp char
dargestellt
ein char
ist (intern) eine vorzeichenlose Ganzzahl mit 16 Bit (d. h. eine Zahl im Bereich \([0,65536]\) ), die den Unicode-Wert des Zeichens repräsentiert
Alle gängigen (westeuropäischen) Zeichen können mit einem char
dargestellt werden.
Warnung
Seit Java eingeführt wurde, wurde der Unicode Standard mehrfach weiterentwickelt und heute gibt es Zeichen, die bis zu 32 Bit benötigen. Diese können mit nur einem char
nicht dargestellt werden und benötigen ggf. zwei char
s.
Für Zeichenketten (z. B. "Hello World" ) existiert ein nicht-primitiver Datentyp String
.
Unicode Zeichen und char
s
Hinweise:
- 0x1F60E ist der Unicode Codepoint von 😎 und Character . toChars ( < Wert > )
rechnet den Wert um.
- In Java ist die Länge (< String > . length ()
) einer Zeichenkette (String ) die Anzahl der benötigten char
s und entspricht somit nicht notwendigerweise der Anzahl der (sichtbaren) Zeichen.
1 jshell > var smiley = Character . toChars ( 0x1F60E )
2 smiley ==> char [ 2 ] { '?' , '?' }
3
4 jshell > var s = new String ( smiley )
5 s ==> "😎"
6
7 jshell > s . length ()
8 $1 ==> 2
9
10 jshell > s . getBytes ( StandardCharsets . UTF_8 )
11 $2 ==> byte [ 4 ] { - 16 , - 97 , - 104 , - 114 }
12
13 jshell > s . codePointCount ( 0 , s . length ())
14 $3 ==> 1
Wahrheitswerte (Boolesche) - Hintergrund
die Wahrheitswerte wahr (true
) und falsch (false
) werden in Java mit dem Datentyp boolean
dargestellt
häufigste (explizite) Verwendung ist das Speichern des Ergebnisses einer Bedingungsüberprüfung
(Wahrheitswerte sind zentral für Bedingungsüberprüfungen und Schleifen, werden dort aber selten explizit gespeichert; z. B. beim Test von n auf 0 im Algorithmus für die Berechnung der Fakultät.)
Konvertierung von Datentypen
Beispiel für die verlustbehaftete implizite Konvertierung
jshell > long l = Long . MAX_VALUE - 1 ;
l ==> 9223372036854775806
jshell > float f = l
f ==> 9.223372E18
jshell > f == l
$1 ==> true
jshell > (( long ) f ) == l
$2 ==> false
jshell > (( long ) f )
$3 ==> 9223372036854775807
Wahrheitswerte können nicht konvertiert werden.
Literale
Literale - Übersicht
Literale stellen konstante Werte eines bestimmten Datentyps dar:
Datentyp
Literal (Beispiele)
int
Dezimal: 127 ; Hexadezimal: 0xcafebabe ; Oktal: 010 ; Binär: 0b1010
long
123_456_789l oder 123456789L ("_" dient nur der besseren Lesbarkeit)
float
0.123456789f oder 0.123456789F
double
0.123456789 oder 0.123456789d oder 0.123456789D
char
'a' (Zeichen-Darstellung) oder 97 (Zahlen-Darstellung) oder
'\u0061' (Unicode-Darstellung) oder Sonderzeichen (siehe nächste Folie)
String
"Hallo" oder
"""
Text-block"""
boolean
true oder false
Textblöcke werde seit Java 15 unterstützt.
Mittels: -Xlint:text-blocks
können Sie sich warnen lassen, wenn die Textblöcke potentiell nicht korrekt formatiert sind.
Literale - Sonderzeichen ("\" ist das Escape-Zeichen)
Datentyp
Literal (Beispiele)
\'
Einfaches Hochkomma
\"
Doppeltes Hochkomma
\ \
Backslash
\b
Rückschrittaste (backspace)
\f
Seitenvorschub (form feed)
\n
Zeilenschaltung (line feed)
\t
Tabulator
\r
Wagenrücklauf
Variablen und Konstanten
Variablen - Übersicht
Variablen stellen einen logischen Bezeichner für einen Wert eines bestimmten Datentyps dar.
Variablen müssen erst deklariert werden. Danach können sie weiter initialisiert werden, wenn der Standardwert nicht ausreicht.
Deklaration:
Variablennamen und Datentyp werden festgelegt
Initialisierung (optional):
Variablen werden mit einem bestimmten Wert versehen
Beispieldeklaration und -initialisierung
void main () {
int alter ;
String name = "Asta Mueller" ;
var geburtsOrt = "Berlin" ;
var wohnort = "Schönau" ;
var geschlecht = 'd' ;
alter = 25 ;
println ( name + "(" + geschlecht + "), " + alter + " Jahre, aus " + wohnort );
}
Konstanten - Übersicht
Konstanten sind Variablen, die nach der Initialisierung nicht mehr verändert werden können
Konstanten werden in Java mit dem Schlüsselwort final
deklariert
Es wird überprüft, dass keine weitere Zuweisung erfolgt
Konvention: Konstanten werden in Großbuchstaben geschrieben
Beispieldeklaration und -initialisierung
void main () {
final String NAME = "Asta Mueller" ;
final var WOHNORT = "Schönau" ;
final var GESCHLECHT = 'd' ;
println ( NAME + "(" + GESCHLECHT + "), " + " Jahre, aus " + WOHNORT );
}
Bezeichner (Identifier ) - Übersicht
Bezeichner sind Namen für Variablen, Konstanten, Methoden, Klassen, Interfaces, Enums, etc.
Erstes Zeichen: Buchstabe, Unterstrich (_) oder Dollarzeichen ($);
Folgende Zeichen: Buchstaben, Ziffern, Unterstrich oder Dollarzeichen
Groß- und Kleinschreibung wird unterschieden
Schlüsselworte (z. B. var
, int
, etc.) dürfen nicht als Bezeichner verwendet werden
Konvention:
Variablen (z. B. aktuellerHerzschlag
) und Methoden (z. B. println
) verwenden lowerCamelCase
Konstanten verwenden UPPER_CASE und Unterstriche (z. B. GEWICHT_BEI_GEBURT
)
Klassen, Interfaces und Enums verwenden UpperCamelCase (z. B. BigDecimal
)
In Java ist es unüblich, das Dollarzeichen ($) in eigenem Code zu verwenden und es wird in der Regel nur von der JVM (der Java Virtual Machine; d. h. der Ausführungsumgebung) verwendet.
Ein Unterstrich am Anfang des Bezeichners sollte ebenfalls vermieden werden. Ganz insbesondere ist darauf zu verzichten den Unterstrich als alleinigen Variablennamen zu verwenden, da der reine Unterstrich seit Java 22 für unbenannte Variablen verwendet wird und dies die Migration von altem Code erschwert.
Übung - Bezeichner
Welche der folgenden Bezeichner sind (a) ungültig, (b) gültig aber sollten dennoch nicht verwendet werden oder (c) gültig und entsprechen den Konventionen?
Bezeichner
1 var 1 a = ...
2 var 1 _a = ...
3 var _1a = ...
4 var a1 = ...
5 int i ;
6 int _i ;
7 float $$f ;
8 final float E = ...;
9 String Wohnort ;
10 String ortDerGeburt ;
11 void BucheFlug (){...}
12 class FlugBuchungen {...}
MTAwMDAw:GaykHiW93FFTTm+Nmjqnj0XxZQ+qhpDWMBRbSvDi7wA=:PDKb5GO8MTJza3mF:YMS3C3GQmXj87aHO6ck6mB0lYG0dbNSG3cuHE2d83D41bHTM0FaxEkGhx1OoPgei345SlXgJmlE5CPgcLo3bwvNnigDjWZyiFvmOzaywI1lI7XH60rNTXCN0tjAJ1AA9hD68tiwgRiCYKaKPmmxoMoC30Ac3B61DJh83Gsz7sZE/pGFb74I8NOAIu63Jieho6bxs+urqJGzxu3Nto6QVXhJSmd3DdjJWn3+uF3yU/wMEIibGgTSPnyBf1989VnKi7MhFlfW9Y+wHSqZEDQ2R1Q7Nqx61kbKK7dY5KQWISNMjN1o/b+rbeqpqTp/3c580K/9UbJDp5xGxl+xERZoYJl7Wm/Jc1rn+xQnlr9z2s//XTCc2Zx0Swu4tpufYuWdekAwrnLPLnT3s3M3WrcAIC8q1hCTNsx+JrXSj8BdfwwXHX+iF6QnTSwIf68Xp4N8EkhXmeb2MLGz/SAeYX+oBJuWQYSpixTtdP9hMsT4PpTPKFp8FS/sshJh6bJliWCFv+AGB7bcz0tO32kDxNDV4Lo5c++4P+ynyVF9el6azFWuGXD85stKx0gZK3dbKI/SZTGbePq1jjRnypkzkfHYNbmSeaUN1/U3B2kya/AATBn7fCEZDMntGJ/Vddvr9q4zLTRRY4gtNSwyOw7QfDQmbC/BjfwpxSy4uo6RgreTUHbthYxXE2MLoWeNdJym6Hb2TMxYDxlbivc0YsawUdAqfHZC7UKqIVGTAvRHjGVC/RYShDyU=
Übung - Variablen und Konstanten
Grundlegende Datentypen
Deklarieren und initialisieren Sie eine Variable x mit dem Ganzzahlwert 42.
Welche Datentypen können Sie verwenden, wenn eine präzise Darstellung des Wertes notwendig ist?
Welcher Datentyp wird verwendet, wenn Sie keinen Typ angeben (d. h. wenn Sie var
schreiben bzw. anders ausgedrückt welchen Typ hat das Literal 42 )?
Weisen Sie den Wert der Variable x einer Variable f vom Typ float
zu.
Ändern Sie den Wert der Variablen x . Welche Auswirkungen hat das auf die Variable f vom Typ float
?
Deklarieren und initialisieren Sie die Konstante π (Wert 3.14159265359).
Deklarieren Sie eine Variable poem
. Die folgendes - von GitHub Copilot erzeugtes - Gedicht enthält:
1 Roses are red,
2 Violets are blue,
3 Sugar is sweet,
4 And so are you.
Achten Sie auf eine konsistente Einrückung/Formatierung des Gedichts.
MTAwMDAw:TqqR2J8E0dJk7cNlQtweW72cQSRd1AMZ3Jk8QpGFwO4=:MbfMvmMH8IUoAKbw:r//JDSdyuhd7gT6UCJCZl9NpTFDMj6s5PYm7+PVQWz7ptVkqELRrLpc0EE6gToLyCd1tHwDHYpcgpzZ12ECWEh5Bb82vo+zy63X5OHC8Uh0/lO6O37C4BFjWweY7fjbqcg+NOvWpJIgRlaK7Ffy0StBSVyJFmteRTNJ4gRpEO1hSQ5/aoN0REsTWonclV50c5bupQ3rTDa2dyH/tCqXqNSG66CtN8dcL60ytZihhITSveoQA6KOEhuMcbXsfjiVcJYALky3wga+p5hHy7Tz3+VBQ+afK6xenmEMfjNxFK13QB0imiQ8rGp8Iv9lWq2Ffm1v6JNupDhntWM4NU6dkKS8QZXVEvYYXjlSF9zTxYaZxVGbg3/qsZuWkyVzbfgPF7zxcTKjyxIjqzmhn24/XImxECWhTAAGMSQdN+FrzEwjovXLcUMY3Mr10AFDObutmK1HjI0S4zbmZ8URv5yumT1LmWjBRTrqkRUmftnlSUNcIam1JNWzEfal+dsQBfA15s5nPRcps1VbXXn5iWezynujaNHKPBngg7HZI5CPNhGrT6bUnH7JlSJlUyf4K1PqUiF/SVplgLzYDrY47f1HXzNL8cEe9/hWpJTrPm/8HuAt0pUbqQ9qySZ5O4Z/gRC8awXMFdvSKzKDnwnp/C/CGeVOvmY9PoGLSa2RpAfnn+ect2lmDM9RdJQmoFfh8BLdVafa4VGOh1eaPQjkAjl2BKAgdKB+to1ALpoq2825W2nrqCmMzCmDq5zQ/QVcgC+yzwxe2rH2yLGZc0ohdL+2X2DJiHpQEzRyk2QXoqLnYUtZSpkfQWhRqKW13uYxEsbZs+e/GhVI9g0A8+h3xDgaTqnxChp5Z2SG21u+9TbdrJoOliZZwyKTjJ9K2mqxHD31LKiLAe+v/HnhOKDc2IUsi0hXshLEspOZ7abaH98KfjBitQ4U0YcfIEiHyIHGk/Dt5vzqC52qxfzmzNaBOIyv/ArZVeTGUokleezXmwrxOly+LQ5049nWCe1MfACHrWy2QyGwDt/X6IVxAQMifuAglx8L7Eq20XifBtNHwMO/2YPwxXpg3MRZ4LmR5y/sxmImoSMiLf/hf8yMY4t3ZZ8GZTFpTvmduuLkh6bE6g2hQgpnRueK+GkuYSLxIEKX5OfaEjHZa9Soet/kz7+o26BFbMB06jOPzeA3pOi/OEFIR7bF9HpqevZKwyUV401D9ECo02+L1KYRNnMb4TAIp0NYrEbCQCGJRYATAR2ueL5Dno0/93aqOXRkV5dBekLcv397GmghOagZ2ttDCnjtd/0Uk5c9gIv/sAJs5QvOVlZoLVoylHNJN+XsypDu8REvjgmqvQN17l5efA+NlwxlqaYBdOITPDPreR6c6riF24ZfWXtTt9k7K1xjpGYGzpPxD5n2+MOwk0ggn/oZ08urRnXxbgKIn13s+G7wy+vVGV/xqG4qSugzQJARFFXIhoWUOKBqWVlRtONbfSdIsa910hWNcrmB5Sf4Lxr0rg69N/YpxS71M+HSl40MFJr2dRF6PybXgzIc+1BzzAVUfz85w2zqvQorqnGgeC3Xw8ACM6R+TjP3St8lKhzhIby/0Kx8Y35piq1R12NBeXQqZHElC1ZieJj1erbGBuAC7dX5c9skRvQiVGuYJ0x4lFbBjiZGeADC+qhuxq2OFL4OS2cr8yCGJsPxqhUrxI+c78SAn/aiMbjVVEbPeeGHbG8MIHr0EDtTZ5n+7KfdYufBkqIodaPEQ8DOg5zNv+TRMRK2MAxekJ++zZLCtwLeAC9dhow33deDUDYdj0sgD432Ac0ZJy+uuwLRln5VK53s0cL+FmSQBRVuzYXk65zRuUl30QfRG05Mp+DmaAFsCWFtlhtvEqE5BoKOfuanZPrjZ2dtNXsukRajgmi42uJbqr0T0LtCskhJhdCGwsXasJ3pPaiCikGjm3Db6C4a9kEl5DoqGB29IUsHCfofbVTbZzvQisMUXn2bjkHTmHjKHeXbXrt5R8q8zZcVtGJ1g9t5ssvccJ5RsaEwXCHfWDaQbposHlAL0rI3EqpwE/sAVouiU+is4GykkhoO5jInGubLjH6Mil6GHMM4wHOrLqzykm//0F7kUHbYqBldtoKmrPw+oVAOfef8SDOLaA8M5dvIUBbC5lv0Ql/LHzjuIOSletvED9KK+ikt71SOxVkuPob5d2+LNLHuxznC/B805TVGIVQdDCoKPshYf3Psv/3bbot/Vikg04+eH9DkCV+z2i+kyVZkgvQmJscibpHIlCNgDDXUv+Vox7iDL2lFdjQZcksGty7xDrJvWeeBZVr1my8p9Wx9wr/V4He2ZMb6ZGEDqV4aeaeoWsmF3FKYm7jnmFvAqX+QB9J/8fj3KrjKCIZkU+HzbloFaj6EEGFhyEU8hzz8tDQlQoV/biOS3UW5Oq3qCk7xLzSkmsrB1wCFFlVrxGFvP4dkmCfYLN8NKvPg5SsRjNaxmvJrKqRtB1iEBwfs+RGfCvH2ARNRuzdqY1Hr0Ax3DPNm7bdzfZRMjzfEDz5Pv9qDt3flK+UvNTPwguIC2De7DUmURXR6m97tZts9QPq0De3iAfgbhimzvJuo+lX4FmXkjzaHUszShs2naZbtWxVK2dvB+jYA4Xn3dqm/xWDjmsy//UxU17+RsC8ZvteeItPqyPEhxccb1XOgOPDoDi03AYTtjwnpB1+BoduSIvOS3oE7lK6ylIeVJdyVtzFPev8Nw3ZQCAPuehHC1ecEC4sA8NdXi4mQegY/77Z6vruin+7M8c6Ar/4Vv3LCgAUUC0sRqzVpynHhajNIHmwu8iho6sNMIZr/pdh5KpebOMFu8Kv41FD+Fp+qJj9AKPhN0zkoukMns4ILTJ2YlrmM8HC1Yp8DlrWF3cqkpH6ZLvrmXc22IFjUnfcUcuJ/bCUMRcraOI1ogZoxJVfL8PMMT/lfqyWvct1e9gOHpgTpi3e6xR2saFOJ7p4Rv/+lhMh4WD0A1QkJoWXF095TNrXsxruxsMIYRzNHgQnsnxmW4kklFqHeNYznV3YpmdQGe4Zf2KXBF87ZUQqbPj2T6CybDBPQ3vCn24YaWuyo0uUFBwsu8ne218agvHmYLwku4I1os29cTXw/r1euGHiU/02s7EdJnmmzSlyvrZsnKgg6urDTx55+zepJH1rFlr6SeSeNjqU0O1WwJzW6QwP1sNRahe39t4SEMbQplIWHYmZcK8/oNVUM7gO4IF/NTXKitVfBz+sVpdLXYV0MccexIifO2IvUHFIre7ffTQtshw6Fh+AXHRvX9U9LZ+Uh2Zf7CT48pdIoudjn7bK5mKkmdpmCv+i39s2wehwsS6GjWBBosLTEVu7nmsbV/sVU6x7tpQcmyECJ1GfuEPFpOO2PJq/mFm4T2V748Pb24u8j4TSFPGux5+3oUN9Hc5a5qTWQSaH7WI/yE+Vjn1kexRwCDKvjqFTFoEcc7zSTpK1FMakb1oOyi6NnZyYCJEYDmgHTMTT18g0zsWhG19E3FzlYzzMjBC9IrcjrKV6ZGb+rxUlwrKmyFNOqddvOEFksRJW7XGVRTaHepcmT6sev+pMsxrlTKc/IpW2uppr5+XWmvflTIgi7w3ZW9tkx0KbMriIXH6vhjAYYvYgmlcpv/bvugk3tCtboJmnEmOpdKkB+mfqEGT0F0WWpKN+7haAFk6NfSCv0sKc0f1QdTJx8mXeJvwYRTKrJrN75vvU5TO9SmgqJdfZH7b2NCMLVLI7HuYlZCIw/WjckmT4Xju0wcinDTYfIohiDOnZJ98zGZlkSOshmjT7qR0b8xKSGPDSwW9WoJvCsiV5Tfvf9xZC78N+uH+Rx762v/12ezWBBSSKPOd6kEr3Mk1MKgHI0El931Vf4VXL0/w5Ka3o8IsXZhkDYh4nYBNdf57call8u06oDa2W0uVCg+M6yf8Wy2u0D6JBZaKJQLuMh56E0TZjFfoITt3OpyH+At4x512rkIHMEfmLDbChADMwNChFTa8ytHqL2XcmzENEhfKoeUcruw5I8X6jCXFfAhz4yXzYE2JbkLFqlbvypJDFuyc+VafTwDg0jdv/LHRgxugRrt5knl7eTvZk6mrKjMYsD5yrMzP+5qAYbxvLYyzIblvmlw42yBdkNbcOlzmLqfXAHRIM43+IsUgk7GNVFmkVB32lAWC2T4ZeKcRb+M6ZXyaf6SlrgJIZQjenGzmz0dgJyVna4nEkTrKedx4tGy6ZR6EmvAUITcPnKZ5e25vVUXFc/iiU9KKhVkQeVv623name/408tevyK4eW1JWRQD9/i1E/JnZY3TrVEaEyeCn+hYf0UzTp8Q6eq6hgbjJwpOgy/HPQdJCentZiAgRO2m+nasCOtxVeNSRUGQModB9I+lC3yAAv5wr0o9hTv/VnYcNU1XL4Hwij+znFW7vLAr1ubJKhjWxLYCqZoIuXxnG1pls/bQuo9qoHH3+zINzEXDkp8tpCkXiS0tzWMMHUFeZ7AbFoQgJpFQcAtRd3MmMl9pArlSyiixI9bYEEy5kd9QsV0AnLYZ3YiEABolFUWSKHGBdI9bgxcTHzxNlAxbw4eSY2FHLtqFYlaram+8xo+zCEaGJx+VKn9p7YtBUpHuI0/0/NtuwfrJuG5D7RHQg4uTd4o/il8KmFnFanjyqexDt81/kKHGCz0BQt577KuYZJaRtf7bwHQDCSDhbCfMKGocoWviP2/mQDzX0RLfil/fQEMT91yeBmO6rEqogQUWK27AW9vzyMn9fG6YhvROcp/+NdioY8TDlmI5MmLIJi6Mgwom17+EaNmw4XIe6ivmRx9poKhKSN+iInLD8vmk2HVYgAnH3wFS++cZJsK9wV+5+/btd6Hs1lb81Q1sZ6nq/+JF6y1raCwrAwe6I2Le/qhViOfxBWYtLHHkoMOrGzdr6rCYNjLbj1gHo4wImQ3m0YzLbjp5ZGJszSu+fOAp+iW++diy/LTmCUl65tt8OGUYrXr5r/xG4NBnneAuslDzFkB3GxOJYxvggz+Y9GCsoDFYyZr1KpknFPB/ios5VVJn1ETINoheyK5/C0AgwBSBPxuBFsFA1E8Q2ocVlHmNTK6/5q1/XQkmDKshJkUxiDlT3DfvmugOdIgKAPhHOQnAfs6L/xXKi0rVHVFlCXE49io70xFDnmNUn21qeUZuSadCrBMqQS6oTaIhiqeqGW0ZUvYwGW0s+CGUG47XZNbHaPCvvMcu+efOL1FAXRAXZweZqqCRTCBVTD6whcU1T5XP4mZuw7VnWcuvO2cIauQX4UOk1V35F641fjdhWx4Zr1/55mcrXMZvT/Cmdi8TszPtHho4sCIhSvX2ubH6rf++o4mQUIGRru4y0Z3iOHXDzQl6PU/BDdso+tlGKVGvUmWRPrV+jGiw8+WzqGXHx+FHDa8yWts+7jIpbHn0rwOHgmc90NqvN20QPoEz9zKWANKMkYyUaJNCYvUVK7YIMNjwGEG5BoyDzOFyeX4/VJ5cXnvJCI6uuKaagfY+Rljyq2B8SdVhBkIXuKIceTf6ZW6LBXZtB3KTC07m1c3TuqkwFfOh8W5YeaWVjQrIMIHm8lzmn22p//jmBoYpb2mn5kwLfkfoSyTtV0vSLbX/foD8+SW4dorAlPGoAEWmSZSkz3WDHvcw2JiuI/aQVZ4C7RKiJquFCzXKusixv9v/nrlyQ3LcfI71ATR5jakC3wukrsfG2zsApweNSPFdrL4AzTmGB4c4Ev3bneaTp5JiZwEUhhvgKeAiPysjP1hkEkcKwhfaJDUtxzOpgDu4DgPwJv1IGHb8xDs5cFKZ7mt2hyRJsjK/LB96CKfgxE1W3BH2+q+++s2+YuqvBolzEtOnH5LArpJ/GA9fosVvN0Yoq1OweduAy6e24S+LcexUtPd3W7twBgbQwRDyze6Pv5YwQwwBMbgsRNQ2RGGB6RMa7ZbMNlhVymca14Vk22wQahV9hxfp+vNNossuzsU3/6JLqHT2gepBKrokQNaVb0lDVYeuGEbrA4zzEjkmTZUcu4mPrQpDDD+ECSH300R2JhZ0OGLlX/DOGGn+6cHiXbxcIazljNV5gtR0t6AP6knoUk0zbMmcagptBQR+AMPqonENqIXIsj8J1u25TGT+L65OLS2duBC3Kk/N3lHek3IVYMBEpI3pFhTDDEi9ZhlJ1f6muUpQUR9BN/pEXUUllwgnhg29x2dosrbtU7SK4nv4upStHDFb/yv2e1x+1i/1ADSdKB+0ejdCWV2a+UlWKjI94KDDg/QdAHvWmWHEA4ArcVI51FDsWLbuzjvCy5vYt5glNi0IIt5rM0S9MydRKguV3iTdpPUzknS6cxJ/bUCoGIEwA4Vw4irD5jda0gBSpzG4hK4/lO6L6Bd4ISXuj7XibXOZzH0FXlGt7Us4KTLIFzceMA8LZbZc5XePTyLgPd0SaBttZp1+SJmSjZecPumcKFQtDxObxvbYCgpwA7cIbuKaPGEFU6rOv4KSLZId5i0gVyz0A4TWjApZnzs7ebfwJShbUIs/iGwqqk5t31c2xJAmL1Z185J5W4lSEzzuwhcxyG/Q45yHvLt043PEfWTUjhdZ/9EBJ+NIgHkFVBwqyHNFDbBHRrwUdjKPMvKOf27qRafpYxjua9ruCoto/S9/vHY11WFM5nsKDtwZQ1e0wZW9zutohLcUcNMr3A8cMrEXLox2CF1WIvNcPfu9ZsWikTYurHyEsmlXMn9u3hPdYBXoYiygt9tWeqxprOsWGundws2ltMfCLNX0zCqD6FgQ/ox/2nnVBTQCtwA5zENvuXQ0UfCkZGp/EsugkB2aWTOAR65R7ZPhpFGo8cxDX1R08PCTtvuzRBDL0KtuvS/WreKrP3Y2yE7vm6ErcZF08D4fn5Vth2FZI9SPGVX1WxceF5zIRJR7CsCovP+ThmnmsmDHJp785bbiKxc1A4G0GP2Mn4Zq++p+lMgtGioi3GO52gRN96TzhbcQUcGuZoT7bEoeW7k2bG5hRejTbuNL/viC7pFdkYlqUzGTeLTi+RlhBi+EN6xhNs74bldaY8dnHPc4CSmRy7k12czayDusSFZheipmP2cCvC+JGpvzPandgUeJN6ikhuY4ihEG2YDwgpmXOhOu8E98vMQdVTOAuJUBwjnkuZZ5VYvjzAoX1PfM1j/1ceNcRjlkkTFYv7wmHmX053aY+20v1RzHOFqWGd8tv7qoI0h2+s6ZQzO3+tC+Z2RS4GbpGlQyRVtfrrOLA2JNRIZ7R5FAXLaciHJLy1p+GkhQniNI44tFvkn+f2LQr6jq3A+rtJxm4YMy9EP8vVbqod/MU20BOvUWAv2UUip3m+/i9jcni8K6EK3x9xgxX678VA0NvgOD1gWps/XwCCBWEFF9QE0nryrZZ9p3T1m/YSpfUujFAPZxLOeqfXj4PhWoptU96hukc4fvCoS1UNjkfJo/2uKq9SZbpLuXmgSy3F2krO3RN9W37uev1d8LGUCTj9RY3aoWtr+qah7f6yy4N356YsKbMyJ3nk5mZZTtqCSnXtlFykEwbx5u/w40sYjdW2dtoukeycX6YpIGzVAkouvyMmceE+O9jm1Zl25kruWaWSRXtV6lZfsANv7BBoJpZifgmUdTc3HXe2nAlQAgUPJJ4kQovcUXHNpqJQZmpZc1gH7kkwawUc2cNzekAyI5nPc62jmZniHqpTt6r8vzzr7lrl68xyhzRjNGxdN2BFGGHtgSctrRPc5rBbSvev0AkZa4DXiRBqiKqBk04TOyNINRQC8etq1DL9ds18ZeppW5u8BgMm+064J4TaCdc8cBJ5N7B/tyZhq3h/iXXq4LcALkTUCrDNXXsXbCGloVRzX7G/iXfVVpoH/tjLpQM18QEuAvII3Bl96h/eNrQjAYPHiBanSahIICNNqDkXPTTt8Fi2scPH1vSN+NJzR2+8jmcyaPe9n0Ybw2mbgkocvApXwAoNk3yMyWrJF/GrECVtPeNgOE1xIpJ8T4ZyRkZuL/GfYyvSM6yB5anqlstE7wBt6TAr3rKh+1LNYIuILmD5vCBwAUaP5/+z8HlPnKgMUo8TT+sDBCon5dGI/FeDoTcxvwBEb4GxvMidpFEtWyS5qxmN5hS84BtaU+NUsobivpMuLHjOOjwmiUaOtuPEnVlv18xECcizONX2foc3L+wISs4PAN/zM6a25K8AuFn2k2fuAXHVi1zLgvdMVVEyAPzTs/kn/Sm0DRBo9RuCC6ARGyHLCGpwzlpGb7CnQpIWbjzS+N3jEOOetOEWAARd348Rx+pu/xLK62WaOBvWzWTsTmgb0qBnnS+yWPdpmGccLmHdVihTLZhZB0Wv/pXM1vzTh64tjmE5U8p5azPZMp90CkYtiZNDIWJd/2zmUCB4QN5STBGHoW9efip+iVYDASjefRHH+gX600KNkDRtVDza4jxkCda2UiQ1bMGazt68kTDaaw8eKNcqb6nT7E5/g9XfiBP4sNeZ+Y4bSjM0TUCznPRJ4kFHzx6lJaUWdgd6ZYE/JYgCWPeaqneiKANVIHNYZjBxJig29N/+hf6FH9SgFODN24W2Z6P/IIX7ImH6ARbQN9nplCamWZxpoUuM+w3nuDZn2/XDrOS4qVg5hDvORXzRP1ve/EC94IfFxgzWXBV4MSGjYpucbQS1CqJBclrDW53lSRtAuXrxrcyA5hK4c2vnBdbYSWEYXlK/sRp9X/yeoprTO9KV0/k6MGZQL8YZVvLGj7F6mnuijB33nrBBPEBpGn8LVxeTud7IP6mIfW3cWRo9if7Ap3VhTpJmBZAD7jXMBwgkAVEE4DD9OjNpeR3OWJ60J04+eiQ7RxnPh7QQM0P8qo4sy9kmXYmdyHy3MhhlCUOeI8CoM0nty3/jww95f5cmhU4hFI0oyZaFPgR9umIuSJ6eAQIU9CjkUB0Sxa3nZoow3rtISU0SEzwEkto/oS0peFEIoBevSJpKyClJRyryMQCrMweO5H5iTwOiGjx7SVIEgXTPPwz7g7qhisn/usxcP8zuzFVK1gPRB+Jx5EqVTV5ykgfxrxgzgTQlVEbsejhCaFCNVpSJl7iNG3qqfduP4WxGVret12VTulGYsF1iTortQ06RI9EGeSGfoUPbjR9w3NNmO3k8Vcdpkj5/TzDHtP+96JVUCw1hwmAD7xT1und/AySSCj7sno88sPRsd0wfDSaOSC2v9MDr7ZuRY5EQuyqIdcITkNwhBVjnZvaQn/2O8tGJnghSwIUAorB0jQ3yvxZ5wcdONBA+JR1KW5hv3h6bd6yiYhaAHqRT2OxtCTlFOBzqBJOoU3v6BuYJQZeiuGPV3DlVHhnir6mAXevtgmFtBZWjtqyId/TpDH0+RrJb5J2Ql7MaqSa+3KCjj1S2ecnXUBoVWdapJNOScdLn2QAwe+ykY8hnl6ATrBTm51Djt5fs2UUZzCiaFc+1QmMMAjodKAXna5Y+QJ2yQwaHMamyJ42qzB+Z1/ZKjUOw+kbHAJbG5USbJ1AY03AX2BbjWlYklsv6fTMhkRcZBbcy1rx1ximV5FyEhPeWCCP920nX1L9PgbdfjdFMQGsmJ2anAbiYL4sjKeaIesSzndOLwk2OP8vyxMTJ7fFSa5RkrNNfnCToIGGHspnya58A54sRviKebrVkIkroBL6QEQ0QxUQexSHJsZLsE6+1513voRlHqEDhiD1uwmL9H/1pcK5lpLvw2uFJyo54SdM39Zu5G9RdxIambe9THoBPepyshrdXVDTubgDyyr281zbY7lGCv3K6t0MYC4lEfxqh0Cwy36bbLhTJfV8xIOPQ4/dqT1tVcm26QO1nAACUbs/VpOLb95JaScnp2pRsvCedIJ5y2oZ+XQj+ezxL5nbWluWfzocJEmDlCwXsa0SbdJgJNZZBYYrwXFR1FSSWHIMgh4cXGas2VRmcCCUAIe0/fbOcS8XXdlqo3n6ZI9t5T3bCUlO+czkedrBmWuvwIR74aEUOER+PTyd1x+X28XXzDv+TbZs9EyAmgGKOpL+Nk/oe750BEhr+Bynh2vcICVaO5SilEhkNo/jYnQkDoU1UHE0vS8L5HKdrScd8Hmgvyy1/TASb0h+R/96Gm6E1NMzhJL1aSWuRztANvW/yp/ONHYVwuX714NryjrxbsJLWKnj5Wie8J6YIoT24+tkxh1CaGPTkiVMDUM3kJMu1yhVlSpa/wqJRP4avm4JZHqSyMbgrY+fSl4UaCVIapiFfHW3+KPllc5zZfRZJtIFNOvmdsYLAqBqjNJxO7r4nedubqqryxstprE9kiH3X0+m5GycMBwZI04PoUU/9CgJxzd4NJH0AHp2SADDoVJsOW03yrOpBNTMRUIZ8zYq2H7fTB7+UHA5OqB4QFofKYFPwghUHxac9fo7JSAt1QWvPF/4STOZkeU7XWhsgAy9buuqs5+FcR59NN0HEIkmNpVmy3fCDO1bO4Lep1vnfeaD6q+KtwFqTknGbTFQg8JWefTEpVHlvXFnl2o2hMIwp8g+XmHv4u1ep+lkJh6fjb8bzWcBOtFHJm7lVnxUkgTPhqSMos3Q0JnhcKkNghh/XdisJMSl1NpJ/D4LYo0dbbB8sTZSFP0LOm4km+oFpvrOdoIy8jnAzqY72zjFfeUxLYlIwnpATUSGJ8ehRPwN87BLlFAqH8pHEg3bkZzshAI2G8RcST6g4qdw+n9ENBJuirwOEEQZhcDhp56iokkG3MpAfcIkIfn9pnInsTF7oM00zBObIQbx99x2nGxtWdncQi+f7VnIxDSK9rYMoe3RRKSllfaeosi6ZxYLSxLdZkGcmLiHutcYTfmhRIKUy7Rtiak+Jb3J9CHMl+MiZYOKUHIHVX4D2lI/9O4nItUxJ4PSGFbXnCYyCQaAFV
Hinweis
Für diese Aufgabe können Sie sowohl die Java Shell verwenden als auch Ihren Code in eine Datei schreiben. Denken Sie in diesem Fall daran, dass der Code in einer Methode main
stehen muss (void main (){ < IHR CODE > }
).
Ausdrücke und Operatoren
Ausdrücke und Operatoren - Übersicht
Berechnungen erfolgen über Ausdrücke, die sich aus Variablen, Konstanten, Literalen, Methodenaufrufen und Operatoren zusammensetzen.
Jeder Ausdruck hat ein Ergebnis (d. h. Rückgabewert).
Beispiel: (age + 1 ) addiert zwei Werte und liefert das Ergebnis der Addition zurück.
Einfache Ausdrücke sind Variablen, Konstanten, Literale und Methodenaufrufe.
Komplexe Ausdrücke werden aus einfachen Ausdrücken und Operatoren (z. B. +, -, *, /, %, >, <, >=, <=) zusammengesetzt
Ergebnisse von Ausdrücken können insbesondere Variablen zugewiesen werden (z.B. int newAge = age + 1
oder var isAdult = age >= 18
)
Ausdrücke, die einen Wahrheitswerte ergeben können zusätzlich in Bedingungen (z. B. if ( age + 5 >= 18 ) ...
) verwendet werden.
Ausdrücke und Operatoren - Beispiele
void main () {
String s = readln ( "Enter your age: " );
int age = Integer . parseInt ( s );
if ( age >= 18 ) {
println ( "You are an adult." );
} else {
println ( "You are a minor." );
}
var yearsUntil100 = 100 - age ;
println ( "You will be 100 in " + yearsUntil100 + " years." );
}
Operatoren und Operanden in der Mathematik
Binäre/Zweistellige Operatoren (Binary Operators )
Addition
\begin{equation*}
\begin{matrix}
\text{1. Operand} & \text{Operator} & \text{2. Operand} \\
1 & + & 2 \\
\end{matrix}
\end{equation*}
Unäre/Einstellige Operatoren (Unary Operators )
Negation
\begin{equation*}
\begin{matrix}
\text{Operator} & \text{Operand} \\
- & ( 2 ) \\
\end{matrix}
\end{equation*}
Fakultät
\begin{equation*}
\begin{matrix}
\text{Operator} & \text{Operand} \\
2 & ! \\
\end{matrix}
\end{equation*}
Operatoren
Operatoren sind spezielle Zeichen, die auf Variablen, Konstanten und Literale angewendet werden, um Ausdrücke zu bilden.
Die Auswertungsreihenfolge wird durch die Priorität der Operatoren bestimmt.
(Wie aus der Schulmathematik bekannt gilt auch in Java: * oder / vor + und - .)
Runde Klammern können verwendet werden, um eine bestimmt Auswertungsreihenfolge zu erzwingen bzw. dienen zur Strukturierung
Es gibt Operatoren, die auf eine, zwei oder drei Operanden angewendet werden: diese nennt man dann ein-, zwei- oder dreistellige Operatoren.
Für einstellige Operatoren wird die Präfix- oder Postfix-Notation (z.B. ++ a
oder a ++
) verwendet,
Für mehrstellige Operatoren wird die Infix-Notation (z.B. a + b
) verwendet
Klassifikation der Operatoren
Arithmetische Operatoren (auf numerische Datentypen)
Vergleichsoperatoren
Logische Operatoren (auf boolean Datentypen)
Bedingungsoperatoren
Bitoperatoren (auf ganzzahligen Datentypen)
Zuweisungs- und Verbundoperatoren (auf alle Datentypen)
Konkatenationsoperator (String)
Explizite Typkonvertierung
Einige Operatoren sind nur auf bestimmten Datentypen anwendbar. So sind Vergleichsoperatoren wie <= oder >= nur auf numerische Datentypen anwendbar, aber == und != auf allen Typen. Es gilt immer, dass die linke und die rechte Seite Typkompatibel sein müssen; mit anderen Worten wir können nur Dinge vergleichen, die den gleichen Typ haben oder für die eine automatische Typumwandlung möglich ist. Ein Vergleich von einem String und einer Zahl ist z. B. nicht möglich.
Beispiel für unzulässigen Vergleich:
jshell> "s" == 1
| Error:
| bad operand types for binary operator '=='
| first type: java.lang.String
| second type: int
| "s" == 1
Verwendung der JShell
Hinweis
Wenn Sie die folgenden Codeschnipsel (Snippets ) in der Java Shell (jshell ) ausführen möchten, dann müssen sie noch die Methoden println
und readln
definieren: void println ( Object o ) { System . out . println ( o ); }
und String readln ( String s ) { return System . console (). readln ( s ); }
.
Alternativ können Sie den unten verlinkten Code direkt in die JShell laden:
jshell --enable-preview <DATEINAME>
Alternative können Sie ein Java Script schreiben (inkl. main Methode). In diesem Fall sind die beiden Methoden direkt verfügbar und müssen nicht extra deklariert werden.
Ich empfehle Ihnen, die Beispiele händisch einzugeben, dann lernen Sie mehr!
Zweistellige Arithmetische Operatoren
Operator
Anwendung
Bedeutung
+
x + y
Summe von x und y (Additions-Operator)
-
x - y
Differenz von x und y (Subtraktions-Operator)
*
x * y
Produkt von x und y (Multiplikations-Operator)
/
x / y
Quotient von x und y (Divisions-Operator)
%
x % y
Rest der ganzzahligen Division von x und y (Modulo-Operator)
JShell-Beispiel: ArithmetischeOperatoren.jshell.java
1
2 int x = 3 ;
3 int y = 5 ;
4 println ( x + y );
5 println ( x * y );
6 int z = y / x ;
7 println ( z );
8 int result = z + z ;
9 println ( result );
Zweistellige Operatoren - welche Werte werden ausgegeben?
MTAwMDAw:Yxtpmx4EwCdb6EcU5L2d/S3ahi2ZoBESfmvPbvvYGWo=:OZEiOXuUm1rQqn9S:9AKHcwk3IHirB9ieDa+bPcoGORINAVzNX/8tOSkKI2jbfEMPplZGI8FTXvWILtzfmroidXGVgEOp
Andere Sprachen (z. B. JavaScript oder Python) haben häufig noch ** für die Potenzierung. Dies ist in Java über Math.pow möglich.
Einstellige Arithmetische Operatoren
Operator
Anwendung
Bedeutung
+
+x
Positiver Wert von x
-
-x
Negativer Wert von x
(Präfix) ++
++x
Prä-inkrement: Gleichbedeutend mit \(\{ x_{neu}=x_{alt}+1; x_{neu} \}\)
++ (Postfix)
x++
Post-inkrement: Gleichbedeutend mit \(\{ x_{neu}=x_{alt}+1; x_{alt} \}\)
(Präfix) --
--x
Prä-dekrement: Gleichbedeutend mit \(\{ x_{neu}=x_{alt}-1; x_{neu} \}\)
-- (Postfix)
x--
Post-dekrement: Gleichbedeutend mit \(\{ x_{neu}=x_{alt}-1; x_{alt} \}\)
JShell-Beispiel: ArithmetischeOperatoren.jshell.java
1
2 int a = 5 ;
3 println ( ++ a );
4 println ( a ++ );
5 println ( - a );
Einstellige Operatoren - welche Werte werden ausgegeben?
MTAwMDAw:3mly1vGCJzEw0INdVNm9aPSfN/JopvYUMQbGoFenEbI=:W84g5Lg3NV79E42M:c4s/PmLtwiD9C94JEc2YZl8pxFs+5uGPP3uvWDS+EZQ=
Zweistellige Vergleichsoperatoren
Operator
Anwendung
Bedeutung
==
x == y
Überprüft, ob die Werte von x und y gleich sind
!=
x != y
Überprüft, ob der Werte von x und y ungleich sind
<
x < y
Überprüft, ob der Wert von x kleiner dem Wert von y ist
<=
x <= y
Überprüft, ob der Wert von x kleiner oder gleich dem Wert von y ist
>
x > y
Überprüft, ob der Wert von x größer dem Wert von y ist
>=
x >= y
Überprüft, ob der Wert von x größer oder gleich dem Wert von y ist
JShell-Beispiel: Vergleichsoperatoren.jshell.java
1
2 println ( "Michael" == "Michael" );
3 println ( "Michael" == "michael" );
4 println ( "Michael" != "michael" );
5
6
7 println ( 1 >= 1 );
8 println ( 2 >= 1d );
9 println ( 2d >= 3l );
10
11
Zweistellige Operatoren - welche Werte werden ausgegeben?
MTAwMDAw:ZeGu7KePCDuU1UpAZYFqjyblN0/d3jOqfYgnfBQNSsE=:t3aY7YiGsgMW3WlF:Rl4nTuRGZHQ1GwdNhl3HNz/tB8Gq1HyTi2OfIqWSmu+s1V+GKCTbY36h7pFUcss9EiSOGaRyKx38lXw6O+GXjVww6XC5SASFlNEOL2xr8YJxO44QHMzaQLxIkXecKkIxsqSSwYCzmCsNSITSOf1R3SToBx4Irddhx9EHab9gDN9vWnrQYP+3y4fbzW6H2IVZ6JkRkUwJTbKgj1DILcLHTjU=
Ein- und zweistellige logische Operatoren
Operator
Anwendung
Bedeutung
!
!x
Negation (Aus true wird false und umgekehrt)
&
x & y
Logisches UND (AND)
&&
x && y
Bedingtes logisches UND (AND Short-circuit Evaluation)
|
x | y
Logisches ODER (OR)
||
x || y
Bedingtes logisches ODER (OR Short-circuit Evaluation)
^
x ^ y
Logisches ENTWEDER-ODER (XOR exclusive OR )
Wahrheitstabelle
x
y
!x
x & y oder x && y
x | y oder x || y
x ^ y
true
true
false
true
true
false
true
false
false
false
true
true
false
true
true
false
true
true
false
false
true
false
false
false
JShell-Beispiel: LogischeOperatoren.jshell.java
1 int x = 5 ;
2 int y = 7 ;
3 int n = 0 ;
4
5 println ( x == 5 && y == 7 );
6 println ( n != 0 && y / n == 1 );
7 println ( n != 0 & y / n == 1 );
8 println ( x == 5 && y / x >= 1 );
9
10 println ( x == 5 || y / x >= 0 );
11 println ( x == 5 || y / n >= 0 );
12 println ( y / n >= 0 || x == 5 );
Logische Operatoren - welche Werte werden ausgegeben?
MTAwMDAw:Tb5n0wcNCKcWfRoD/0FyJV2LbmDk0nDlkxPsCThcmhc=:IGfunk1bd9k0kLVu:vvDjW/Ap/Ln5YtkdZnvrHPkNh14pqMhNveuGDCHjgmtriJaWGfLcStm+JxtIdf3TP7f2RnhxR4aD4fh7hIoRQCx9E1aHt5K02kifby3kazJeUA11MHPjcjwY/5J5Q9AKwGPQMqAIab8pK98OBGNBj7L2aOxev3UJ7qFiEAEUpJ5tZEpT9uyae/ybP4uOfSbH/MU/waPa1ZJcUUxy9M1x6nyVDV2SBc1IkHZc7gabDzszO+WL/rHoT3JA2tp8TiF8FWSOI3CtBh/PsW3AhEJj6XLJ5eyFW8gAfyf+xGrPgLWwfbR9WGqPXYzxfyzrSzbPADLAOS5aWtLi/k2P0CpSTBFiCpPWJ0XRARGQd5xygOLw2+2m/she7wUT3m3Dair+YQTG8PbxzwN1BT+XOU5HE9+FT0y2modzOPmvbqfz1uK2aCCiYgDMdjLROaZeHCmorWmeSQnJsQi3XyDsVq69b55vjeMTJ1W2iPTbmw==
Der Unterschied zwischen & und && ist, dass && nur den rechten Operanden auswertet, wenn der linke Operand true ist.
Der Unterschied zwischen | und || ist, dass || nur den rechten Operanden auswertet, wenn der linke Operand false ist.
Mit anderen Worten bei && und || wird der Ausdruck nur so weit ausgewertet, wie nötig ist, um das Ergebnis des Ausdrucks als Ganzes zu bestimmen.
Übung
Vergleichsoperatoren
Lesen Sie zwei Zahlen von der Console ein (siehe Von der Konsole lesen ) und vergleichen Sie diese auf Gleichheit. Speichern Sie das Ergebnis in einer Variable und geben Sie das Ergebnis danach auf der Konsole aus.
Zum Konvertieren der eingelesenen Zeichenketten in Zahlen verwenden Sie die Methode Integer . parseInt ( < EINGABE > )
. Sie können hier den eingelesen String direkt an die Methode übergeben oder vorher in einer Variable speichern.
Denken Sie daran, dass Ihr Code in die main Methode gehört:
void main () {
}
Schreiben Sie ein vollständiges Java Script, dass Sie mit dem Java Interpreter (java --enable-preview <JAVA-DATEI> ) ausführen können.
MTAwMDAw:m7RTGiyUHIYqP5L4BYjH+eGp3bdYAqLkX2SZHwDqFTc=:xZ3m5TbEAlV1oDol:znm9GdyGOnFn8kqk3XbG05FVBiTdP2InZf3RnftDYP0V44yB1bZwZfhIbHW+F+6aIXWD1Uo7JXhrbixwyCjQWxpNJo91Z+XiK9OKecftMpzUOQwhM8OVpbAKUGRBIJDQu1Y2l7ovcBSB7EOjK5KT+FctxAfjVM028luB2CM38OYfkVduif+wm/QLu1uOD3Le5iGOy5MlancEzkeCw1aMebqPxTxi7Y5hGDNY1wdN3CBIaXlm9xwfrYPvwDHeYWmIZ2wT62zYJ3M5/6sWfqu1y2Tmt6x5G91f6nwxEx3Z7pj0i+wG8w3XAukYfmTYzmIClqSIhDz29K9q2wZDIFqJnnY/VD2zvoSM6kLMub/++SEcN8K0vD0zEhFU4eKGNeD1AS77LmDvCRFyHYHrpMWvbVNXL/Q0v7sXAcRIXQVGAYepkIESh95EMsfhivhcCCvhhqdgMtZtfSQcFRtmFGhJDwN1ft/oZeWVuDhzeaPgqpDU+0onLc5dSKN5J4erCLLKJ7v6pjwp/he000X/KBKq5mb6/+ZiA+O/CoshPEwXus/KYXVZWeS7sGmXMsHWJP5y8smibk+RMx7ANUimBOc2cUx6kOHOOe2l5LrlsIY2vkQstzfHK1uct6ymLC7E0YhJT7J7evx5Vh+zCULnELCss6fju6DAL/VP9c5eIBY3PN1Z3zlraw1YWWbm0bhw0Xupa+DASj7ALud0sZVSh5K9JJm0AZ62pPxW/FSSopAMFj+kBgLWmGCmDiwFngCmVp+zEPaIHsjcNWga6nLj6dl0INMrqJGyUtW624kT2a/hDNrYtdS6Q9p2ltDYyG8vWsYRnBX9VnSJpLg209jB/17nAkwq3SXN9tP9dfUjt7Af8HOj/lREr84RmvtDYKuFziSpp0JoqPDbJvEN3CA0k38oKTJy62QkvWuy0MjssImU6xeB6UNnH+Ldlj1d7zaE8SesssP+1oV8QTzeMy4yX85KJp9db2EMS/dfsOijSfuUQYDON5sR+S4qR+DEABxU9BrcTIoMBWXAqzl+C5kKAGeY5DyCZkCfm4BQPgBfW5xxgzCxM4fV5yAWUoXXypEwqyhyGjMJcM6ljtHCwG0rMzDzDg/W9B4F/WkoxFUqNd8blV3ZK6ngbTDWA8RkDr7K1ckT2P3IIlrPIquCfySnP/Ge2ZE6l4XMAI+ShFGDqqPd30VosmZHVl6E8ADFZ8Ps6MF8onrAzpH2Y9Fa0H6mzl3/uh+YjYTSktj4uWFZ+BvX3NubwDOQSgxLlGBaTojltsEk2abnMSqds7qAmWKGr4gd95+W+M2CkIqHHsle2sUftWPnwgqjoQTlQ80jUzA11tD81DaO95HaDu85m6ELlGTQivX4n/d/b2yz1d/36J5cWgFtjeVsCWwr2MDW6fzEDH5PvYsIBirznY/mbwOqkNoTqPioZ6Zw21AzDOBQEMORbyQFjIRe+P6X3v4IJvMrnNIK40Ac1N9Ps4W9cQ0VByvHJkqI+XsyVSOKygZKk6++nKzkbqwTm5KAjmImJsgKWmZ/neBoWP4Fg5yuGB7v1TxjlLujRmL2A9O6MLb6H7nfPNCKi9+lxs7ER9mA5FJ9HeYBFhrjpZRdyNZZ1KK9iicEeBypDLHNvRvla2KO4ddCgC7x2GKb8TISMh8ifO3wGm9UtpMf9IwwgSA9Zhsmo0GIgCsPMjkRdEBqnURAJNc6+wjgilCJYiegreC+mIpOzbBNgkuO4sa4xyFQJs4fdzG4iZNgn5+Ic9CibuYGU+JvMRNjOF7CvLQUrV/XlARGjOXDqU+TO6SF4Z+zFV2Rg5h6Lv0jyXQHWixsyvZx7JaaY4YuqKMK8vdG50GRLZZV3GfO46lvJrrar8cXjSms2cWZGJULm7BTICEN+XQCvu6eE0utkb4kBQCM3FXmmV5kZjFSGK1TIkIW6aCgnF67k59WuxnLQRWr/Hxnz8+9VsL3ZjeBEsGE/asAQ09d6qH7H2V0GYG+ehIsyWtV0zNEuy9D9iHUTfYS2fD3BQ6Ke4RHTMcYG/gaqE7nJhJ/JnCZZf8t5KWt0+2QqSAQs9xqEav5zGa+fIsC8FQOhdUuGTZPGHaUT6c94adfYM3EK/f4BlKwNghoANXImTDH2UKAHnbqV2Pl0MpkX0NTg/OGi6XHTtdHZ9jzVvlRejvj0Y2bYCzI3eplqZjO+Bn9VRdhwHaxNdfrX4olwAXrd/tToREpWCBnDwHthmNwBk76uezFsoZS67I02uAjIdrrgWA7xgS2mrgKE8ZxqLxi6eoZ7QQnr0KVI7yIhfk/SRuYVeP6NgOH2eP55OXx12Brg4CX68te57C7kWFy94/UnSuMYweceGiqLioB2PXy9UlG4t8jHOxr218wQbj6WLM582Luf64gc//tDQdqCMDb0hhRkWnk4t1/Jl8nOmkjcNmn9R82BCS+o8mCQ76Qz18XM83L7Mg7L4ySCfqOC5pH/yZPNhTaopibqjkSqkRga01pOdMqB+N54KM8EMoV2+tAFzp2XhCGOIbDkmg5w0M/gYNp7THu176FQoAELFqZ3R62mUDuCEKZ5+8znD/0fxc6Xy4mk9UuDvX6To5EUk0gJyzU6DAINDr5j2VqKwiJHQWnEAQq3a6LUEwsehrnRM55QV2OJA/FGl7xHC6EvSM098A7fFx6AvPp1ou8/W0P2XSI72svxSV69HxgSMrYnb9XI77qStrrQGKJp3OXIjiyg4KBvyTAyNCgZSAHoQqAlps8vHq5BYAa8gDUU/AHPnhgaqwkfvF8mYgLmJVadxz3iE9fEUGZXAwjeekZxAspgGZyc96g4fpJR6wkCOW7ihfmj+JuoEECOaSFj8Evv3z2m0CHLo4LYcmw7K3fLgz1M5LW2ITegeR/OYIQfV4KgsVILG+He3xwWaGub+vL+SQeUP9iqgeGQgyyvwVMmlXkPY4NyIg3CamK9qRF06aS72hBTASsN5LSzzv+PbIaNo1vQrDN1ZbF4csYfXMyJff58ayIbArozf4mnTxd3wDzUsec6PsBxJmiP/KwotzLmTqUS3TeJoC/UQ0kII+6t6lrVdUfGahTvtzGjiebfAb+i4oEMMo/WLFq5nCFy18eE3adc+C8RY8qJo7iE7iTJ9t0Pe4BTUr+sh9pXyXO0hx5abKVjXUo00SYlT4CBEFcDOBpVJTXAAbJvyOQ1JB309TAYoryInVP8PJYUTJSRhr3mnsuHVUisFe+1xF/YB0/Jhu0sKhljwaVKBREfg5bnJgD1w/B7k239uj1f+pZ7KITOmDJmD5O1QpoqS71A1VQJcGIMTZzwNomLOSWMFHwYDDqL08iOvTB4D6mkzLhmiOipGy+jpSdG/EtCVCkRV+FRzbjHXgzMJV5668a3Wia56ciAuJAoOvuiWRtwsie9s1OLqsSn+U6lxCeyAD2RfGYIUpGiEUXTU+9lGjxOdeZQmF/ZFbAs/lKb34/lWIZ+/sgVc1EEgWF4zglsk2Qo9DmE6JRfL4MeBq0C4ec7ZU10xyHAJBBIW0sWqeQOHQWjvUcVSnoWUmZca46IB2sEtdi8d+BjFOmiSW5KAPIxe3KeQTQCIiKBzyQE3whOC6SXCU5eVbyA78pfmoZK9XyqpxcnSy0fJ0v10yMPvYHxO1rv9x89WW3URQk9zIsAOtrypoqeMmCibRzq81SyzjmEgjIqIPopVWUJB2SqUIHeDWDI/n5FrX/j2TTbTKlTD3f7CIqtyJZuU7BM0cs/eaZXOsbWuXMUfdvL4dAWc6mdeo4RRbooT9p5VcpCpFc2oknKkQRJzJGbK0UzVX83Wa9SM0WMoeUR7LsQ9j+D6eepw0u/+RbV/w5BUxUtg+jkYjTLWTMCgXXTHHdcYNuRWQkgWQYgBJ1GOlkEIdCu0LH0QqSsyLcppBh6WG1jW9dU27VT+xPN4ZwmaOgb0zalbmOAHepc5ZjyXs/LMokegef9NfEryirjEo1e4ZFOs26lzhbVzwbsT+7AylrZnVECf9V0UChjwPUgmXIgCBamotJTi4uZMvreJO5M2RgJjiDZwQVPf9x3IKsKm/faKVAkd/VTgLB2j1wY8UFYQ4dpN5LqJlWifq9eBzMgsOroMRWVjWpjhKFxYXBGl8nVKZoVXCPK4BYMPXiOXJxC6Cy9mzbcnMUBNPFuX0CSmLArjmiC8hsjZp9mVhFbxvJsBdAIbWfBQDLCXSOEf03/gcAU5QMJl2UtClbVcqr
Bedingungsoperator
Der Bedingungsoperator:
<Bedingungsausdruck \(c\) > ?
<auszuwertender Ausdruck \(a_{(c\,wahr)}\) falls \(c\) wahr >
:
<auszuwertender Ausdruck \(a_{(c\,falsch)}\) falls \(c\) falsch/unwahr>
liefert in Abhängigkeit eines Ausdrucks c (der einen Wahrheitswert liefert) das Ergebnis des ersten Ausdrucks oder des zweiten Ausdrucks zurück.
\(c\; ?\; a_{(c\,wahr)}\; :\; a_{(c\,falsch)}\)
Beide Ausdrücke \(a_{(c\,wahr)}\) und \(a_{(c\,falsch)}\) müssen entweder numerische Werte oder boolean Werte oder Instanzen einer Klasse zurück liefern (d. h. Werte die implizit ineinander konvertiert werden dürfen)
Von den beiden Ausdrücken wird nur ein Ausdruck ausgewertet .
Beispiele
int n = 0 ;
n == 0 ? 1 : 2
Verschachtelung ist möglich aber nicht empfehlenswert:
int alter = Integer . parseInt ( readln ( "Wie alt sind Sie?" ));
alter < 18 ?
"jugendlicher" :
alter < 65 ?
"erwachsener" :
"senior" ;
Bitoperatoren
Bitoperatoren (>> , << , ...) arbeiten auf der binären Darstellung der numerischen, primitiven Datentypen für Ganzzahlen.
Bitoperationen werden häufig für spezielle Algorithmen verwendet, um die gleiche Operation auf mehreren Daten (den Bits) gleichzeitig anzuwenden (1 CPU Zyklus). Ein Beispiel ist das Ver-/Entschlüsseln von Daten (insbesondere mit XOR ).
Bestimmte mathematische Operationen (z. B. Division durch \(2^x\) ) können durch Bitoperationen ersetzt werden, die effizienter sind (z. B. 16 / 4 == 16 >> 2
).
Operator
Anwendung
Bedeutung
~
~x
Bitweise-Negation
&
x & y
Bitweise UND
|
x | y
Bitweise ODER
^
x ^ y
Bitweise ENTWEDER-ODER
<<
x << y
Bits von x werden um y Positionen nach links verschoben und von rechts mit 0 aufgefüllt
>>
x >> y
Bits von x werden um y Positionen nach rechts verschoben und von links mit dem höchsten Bit aufgefüllt
>>>
x >>> y
Bits von x werden um y Positionen nach rechts verschoben und von links mit 0 aufgefüllt
Bits verschieben (shiften ) um eine bestimmte Anzahl von Positionen:
jshell > Integer . toBinaryString ( Integer . MIN_VALUE )
$1 ==> "10000000000000000000000000000000"
jshell > Integer . toBinaryString ( Integer . MIN_VALUE >> 31 )
$2 ==> "11111111111111111111111111111111"
jshell > Integer . toBinaryString ( Integer . MIN_VALUE >>> 31 )
$3 ==> "1"
Verschlüsselung mit XOR (EncryptionWithXOR.jshell.java ):
final var key = new java . util . Random (). nextInt ();
Integer . toBinaryString ( key );
final var income = 13423 ;
Integer . toBinaryString ( income );
final var encryptedIncome = income ^ key ;
Integer . toBinaryString ( encryptedIncome );
Warnung
Die dargestellte Verschlüsselung mit XOR ist die Grundlage aller modernen Verschlüsselungsalgorithmen, aber es gibt sehr viel zu beachten, um eine sichere Verschlüsselung zu gewährleisten.
Zuweisungs- und Verbundoperatoren
Zuweisungs- und Verbundoperatoren weisen einer Variablen einen neuen Wert zu (z. B. int newAge = age + 1 ;
).
Die Variable steht auf der linken Seite des Operators.
Der Ausdruck zur Berechnung des neuen Wertes ist durch den Operator selbst und den Ausdruck auf der rechten Seite festgelegt.
Das Ergebnis des kompletten Ausdruckes ist der zugewiesene Wert mit dem entsprechenden Datentyp.
Standardbeispiele:
jshell > int age = 1 ;
age ==> 1
jshell > age = age + 1 ;
age ==> 2
jshell > age += 1 ;
age ==> 3
Folgendes wäre auch erlaubt, aber nicht empfehlenswert, da schwer(er) zu lesen:
jshell > var newAge = age = age + 1 ;
newAge ==> 4
jshell > var newAge = age += 1 ;
newAge ==> 5
Operator
Bedeutung
x = y
Zuweisung des Wertes von y an x
x <Operator>= y
Zuweisung des Wertes von x <Operator> y an x
Operatoren: + , - , * , / , % , & , | , ^ , << , >> , >>>
Zum Beispiel: x <<= y
ist gleichbedeutend mit x = x << y
.
String Konkatenation (Verbinden von Zeichenketten)
Literale, Variablen, Konstanten vom Datentyp String werden durch den Konkatenationsoperator + zu einem neuen String-Wert verkettet.
jshell > final String name = "Max" ;
name ==> "Max"
jshell > String greeting = "Hallo " + name + "!" ;
greeting ==> "Hallo Max!"
Implizite Typkonvertierung
Bei Zuweisungen und arithmetischen Operationen werden die Datentypen von Operanden unter bestimmten Umständen implizit konvertiert.
Bei arithmetischen Operationen erfolgt eine Konvertierung in den nächst größeren Datentyp der beteiligten Operanden bzgl. int
, long
, float
, double
.
Bei Operationen auf primitiven, ganzzahligen Datentypen wandelt der Compiler die beteiligten Operanden mindestens in int
um.
Bei Zuweisungen wird das Ergebnis des Ausdruckes auf der rechten Seite in den Datentyp der Variablen auf der linken Seite konvertiert gemäß der Regeln (Konvertierung von Datentypen ).
⚠️ Die Typkonvertierung erfolgt unabhängig von den konkreten Werten der Operanden.
jshell > byte b = 13 ;
short s = Short . MAX_VALUE ;
float f = b + s ;
b ==> 13
s ==> 32767
f ==> 32780.0
jshell > int r = Integer . MAX_VALUE + Integer . MAX_VALUE ;
r ==> - 2
Warnung
Hier erfolgt keine Überlaufprüfung und demzufolge auch keine (implizite) Konvertierung (z. B. in Long).
Hinweis
Bei der Addition von Integer . MAX_VALUE
und Integer . MAX_VALUE
wird der Wert - 2
zurückgegeben, da der Wert Integer . MAX_VALUE + 1
den Wert Integer . MIN_VALUE
ergibt (wir haben einen Überlauf (Overflow )).
Integer . MAX_VALUE + Integer . MAX_VALUE
entspricht also Integer . MIN_VALUE + ( Integer . MAX_VALUE - 1 )
.
jshell > short s = Short . MAX_VALUE + Short . MAX_VALUE ;
| Error :
| incompatible types : possible lossy conversion from int to short
| short s = Short . MAX_VALUE + Short . MAX_VALUE ;
Explizite Typkonvertierung
Das Ergebnis eines Ausdruckes kann durch explizite Typkonvertierung in einen anderen primitiven Datentyp umgewandelt werden.
Bei primitiven Datentypen erlaubt für numerische Datentypen.
Wird ein ganzzahliges Ergebnis in einen kleineren ganzzahligen Datentyp konvertiert, dann werden die führenden Bits abgeschnitten.
Nachkommastellen gehen bei der Konvertierung von Gleitkommazahlen in Ganzzahlen verloren
Bei Konvertierung von double
in float
kommt es ebenfalls zu einem Genauigkeitsverlust in der Darstellung (durch Abschneiden der Bits in Mantisse und Exponent)
Standardfälle
jshell > int i = 42 ;
i ==> 42
jshell > byte b = ( byte ) i ;
b ==> 42
Sonderfälle
jshell > ( byte ) 128 ;
$1 ==> - 128
jshell > ( byte ) 256 ;
$2 ==> 0
Überlauf und Unterlauf
Unter-/Überschreitet das Ergebnis eines Ausdruckes den minimalen/maximalen Wert des resultierenden Datentyps, erfolgt ein Unter-/Überlauf. (Overflow /Underflow )
Bei einem Unterlauf bzw. Überlauf werden bei Ganzzahlen die nicht mehr darstellbaren höheren Bits abgeschnitten.
Bei Fließkommazahlen werden die Konstanten: Float . NEGATIVE_INFINITY
und Float . POSITIVE_INFINITY
bzw. Double . NEGATIVE_INFINITY
und Double . POSITIVE_INFINITY
verwendet.
Integer . toBinaryString ( Integer . MIN_VALUE )
Integer . toBinaryString ( Integer . MIN_VALUE - 1 )
Long . toBinaryString ( Integer . MIN_VALUE - 1l )
In der Praxis wird häufig der Begriff Overflow verwendet, wenn bei einer Berechnung der Wertebereich eines Datentyps nicht ausreicht, um das Ergebnis zu speichern. D. h. die Unterscheidung zwischen Über- und Unterlauf ist nicht immer eindeutig.
Bei Double erfolgt der Überlauf erst, wenn man eine Zahl auf Double . MAX_VALUE
addiert, die mind. 292 Stellen vor dem Komma hat.
jshell > Double . MAX_VALUE + 1
$0 ==> 1.7976931348623157E308
jshell > Double . MAX_VALUE + 8999999999999999999999999
9999999999999999999999999999999999999999999999999999
9999999999999999999999999999999999999999999999999999
9999999999999999999999999999999999999999999999999999
9999999999999999999999999999999999999999999999999999
9999999999999999999999999999999999999999999999999999
9999999 d
$1 ==> 1.7976931348623157E308
jshell > Double . MAX_VALUE + 9999999999999999999999999
9999999999999999999999999999999999999999999999999999
9999999999999999999999999999999999999999999999999999
9999999999999999999999999999999999999999999999999999
9999999999999999999999999999999999999999999999999999
9999999999999999999999999999999999999999999999999999
9999999 d
$2 ==> Infinity
Auswertungsreihenfolge
Die Auswertungsreihenfolge von komplexen Ausdrücken mit mehreren Operatoren wird durch die Priorität der Operatoren bestimmt.
Kommen in einem Ausdruck mehrere Operatoren mit gleicher Priorität vor, dann wird der Ausdruck von links nach rechts ausgewertet.
Ausnahmen sind die Verbund- und Zuweisungsoperatoren die von rechts nach links bewertet werden.
Klammern haben die höchste Priorität und erzwingen die Auswertung des Ausdrucks in den Klammern zuerst. Klammern dienen aber (insbesondere) auch der Strukturierung von Ausdrücken.
Beispiele zur Auswertungsreihenfolge
Auswertung von Ausdrücken
Sind die folgenden Ausdrücke (a) gültig und wie ist (b) ggf. das Ergebnis der folgenden Ausdrücke und (c) welchen Wert haben die Variablen nach der Auswertung (der neue Wert wird dann für den nachfolgenden Ausdruck verwendet)?
Initiale Belegung der Variablen: int x = 4 , y = 2 , z = 3 ;
.
1 x + y * z / x
2 ( x + - ( float ) y * 2 ) / x == ( x + ( ( ( float ) - y ) * 2 ) ) / x
3 x + ++ y * z ++ % x
4 x < 5 && -- y <= 1 || z == 3
5 x << 2 * y >> 1
6 z & 1 % 2 == 0
7 ( z & 1 ) % 2 == 0
MTAwMDAw:p/MihtVqwRVWGZTEzIv76RhcEWf6MvPW4s3AkU7af+8=:QTFUBSzohuERZN/T:ip6an7/vhzDTfPiKHbZdT+0rQnz3Sdqn+IVj+8OOJb1wVtEkY90WqIdQoUNUzQ2vHZRz+wBWE2G5gx2Ck3y7U7vO3mlF3XdgB+f2Jg1kOo6JI6P4jBDQUgEzxm9K3Bkmdn3gUYPLVdQXiJcvGKmmhMLSMgkc7aK/9zaDBVyq/LqqvaKAuA7sKiVteaBHbo+tEQ5aBOSfiWvxftcY77wm8GC17WkDDMigkQpL/VMnAkW2nHt8wdgEoGuXoDdZ13CqnYEjdbEAlWdXBfrFeeuZQrlRz9XqUC3XSm55RRqfLY1mpgUvZzi4tf3wGX03j3XA6q24fVVtzqNoBaTiMiyjil+rL6igd1wDQoJWZi/sADJiSbMCC1tFhL+wS4xrzmrBfsbpcwi5YnNFMeXnckszfNw1SZC3QQZ9Pf1bzadHRyUOcyw9EO+C5JMsvx3Qzx5yGK4IxQx5hyIFVC8YsGVtKTKYrLbLWYwtux+/d7MP3UhiNxevHeG5ZgngrClYJjIXgEHqQ1PBmis+xD1w6Fef1d9Zrp4u00tcRI+EOoaGkHAJAH6etIchmbsE
Übung
Umrechnung von Sekunden
Schreiben Sie ein Java Script, dass die Anzahl von Sekunden in Stunden, Minuten und Sekunden umrechnet. Lesen Sie die Anzahl von Sekunden von der Konsole ein und geben Sie die Umrechnung auf der Konsole aus.
Beispielinteraktion:
Bitte geben Sie die Sekunden ein: 3455
0 Stunde(n), 57 Minute(n) und 35 Sekunde(n)
MTAwMDAw:8TtBjVFnx/RPwX1ACJqRRdWrRI9QAuqaY5AVveCE/FE=:yVxHyBg2Xk2xEBbd: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
Denken Sie daran, dass Ihr Code in die main Methode gehört:
void main () {
}
Denken Sie daran, dass Sie einen Zeichenkette (String ) in eine Zahl umwandeln können, indem Sie die Methode Double . parseDouble ( < String > )
für Fließkommazahlen verwenden oder Integer . parseInt ( < String > )
für Ganzzahlen.
Schreiben Sie ein vollständiges Java Script, dass Sie mit dem Java Interpreter (java --enable-preview <JAVA-DATEI> ) ausführen können.
Übung
Body-Mass-Index (BMI) berechnen mit Java Script
Lesen Sie das Gewicht in Kilogramm und die Größe in Metern von der Konsole ein und geben Sie den BMI auf der Konsole aus. Geben Sie auch aus, ob die Person Untergewicht (BMI < 18 , 5
), Normalgewicht oder Übergewicht (BMI >= 25
) hat. Falls die Person nicht das Normalgewicht hat, geben Sie auch an, wie viel Gewicht sie bis zum Normalgewicht zunehmen oder abnehmen muss. Berechnungsvorschrift: \(BMI = \frac{Gewicht}{Größe^2}\) .
Beispielinteraktion:
Bitte geben Sie Ihr Gewicht in Kilogramm ein: 80
Bitte geben Sie Ihre Größe in Metern ein: 1.80
Ihr BMI beträgt 24.69
Untergewicht: nein
Normalgewicht: nein
Übergewicht: 5.897499999999994 kg bis Normalgewicht
MTAwMDAw:XLJx1gx/v0LdcnYxExvwzxmMAuiA8HPRc4zhv3mFi2Y=:J5PxmqpKXHbwBe7K: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
Von Variablen, Konstanten, Literalen und Ausdrücken
Variablen sind Speicherorte, die einen Wert enthalten.
Konstanten sind unveränderliche Werte, die an einem Speicherort gespeichert sind.
Literale sind konstante Werte, die direkt im Code stehen.
Operatoren haben eine Priorität und bestimmen die Auswertungsreihenfolge von Ausdrücken.
Ausdrücke sind Kombinationen von Variablen, Konstanten und Operatoren, die einen Wert ergeben.
Implizite Typkonvertierung erfolgen automatisch und führen meist zu keinem Verlust von Genauigkeit.
(Bedingte) Anweisungen, Schleifen und Blöcke
Anweisungen
Eine Anweisung in einem Java-Programm stellt eine einzelne Vorschrift dar, die während der Abarbeitung des Programms auszuführen ist.
In Java-Programmen werden einzelne Anweisungen durch einen Semikolon ;
voneinander getrennt.
void main () {
int a = 1 ;
println ( "a = " + a );
}
Programme setzen sich aus einer Abfolge von Anweisungen zusammen.
Die einfachste Anweisung ist die leere Anweisung: ;
.
Weitere Beispiele für Anweisungen sind Variablendeklarationen und Initialisierungen, Zuweisungsausdrücke, Schleifen, Methoden-Aufrufe.
Blöcke
Ein Block in einem Java-Programm ist eine Folge von Anweisungen, die durch geschweifte Klammern { ... } zusammengefasst werden.
Blöcke werden nicht durch einen Semikolon beendet.
void main () {
{
int a = 1 ;
println ( "a = " + a );
}
}
Ein Block kann dort verwendet werden, wo auch eine Anweisung erlaubt ist.
Ein Block stellt ein Gültigkeitsbereich (scope ) für Variablendeklarationen dar. Auf die entsprechenden Variablen kann nur von innerhalb des Blocks zugegriffen werden.
Leere Blöcke {}
sind erlaubt und Blöcke können verschachtelt werden.
Anweisungen und Blöcke - Beispiele
int age = 18 + 1 ;
char gender = 'm' ;
;
{
boolean vegi = true ;
gender = 'f' ;
System . out . println ( "vegi=" + vegi );
{}
}
println ( "age=" + age );
println ( "gender=" + gender );
Bedingte Anweisungen und Ausdrücke
Bedingte Anweisungen und Ausdrücke in einem Java-Programm dienen dazu Anweisungen bzw. Blöcke nur dann auszuführen wenn eine logische Bedingung eintrifft.
Bedingte Anweisungen und Ausdrücke zählen zu den Befehlen zur Ablaufsteuerung.
Bedingte Anweisungen und Ausdrücke können in Java-Programmen mittels if
-Anweisungen, if
-/else
-Anweisung und switch
-Anweisungen/-Ausdrücken umgesetzt werden.
Der Bedingungs-Operator (< Ausdruck > ? < Ausdruck > : < Ausdruck >
) stellt in bestimmten Fällen eine Alternative zu den bedingten Anweisungen dar.
if
-Anweisung
Die if
-Anweisung setzt sich zusammen aus dem Schlüsselwort if
, einem Prüf-Ausdruck in runden Klammern und einer Anweisung bzw. einem Block.
Syntax:
if ( < Ausdruck > ) < Anweisung > bzw . < Block >
1 void main () {
2 var age = Integer . parseInt ( readln ( "Wie alt sind Sie?" ));
3 boolean adult = false ;
4
5 if ( age >= 18 ) {
6 adult = true ;
7 }
8
9 println ( "adult=" + adult );
10 }
1 void main () {
2 var age = Integer . parseInt ( readln ( "Wie alt sind Sie?" ));
3 var adult = false ;
4 char status = 'c' ;
5
6 if ( age >= 18 ) {
7 adult = true ;
8 status = 'b' ;
9 if ( age >= 30 && readln ( "Geschlecht (m/w/d)?" ). charAt ( 0 ) == 'm' )
10 status = 'a' ;
11 }
12 println ( "adult=" + adult + ", status=" + status );
13 }
Der < Ausdruck >
muss einen Wert vom Datentyp boolean
zurückliefern
Die < Anweisung >
bzw. der < Block >
wird ausgeführt, wenn der Ausdruck true
zurück liefert
Ansonsten wird die nächste Anweisung nach der if
-Anweisung ausgeführt
if
-Anweisungen können verschachtelt werden (in der Anweisung bzw. im Block).
if
-else
-Anweisung
1 void main () {
2 println ( "Anzahl der Tage in einem Monat" );
3
4 var month = Integer . parseInt ( readln ( "Welchen Monate haben wir(1-12)? " ));
5
6 int days = 31 ;
7 if ( month == 2 && readln ( "Schaltjahr (j/n)? " ). charAt ( 0 ) == 'j' )
8 days = 29 ;
9 else if ( month == 2 )
10 days = 28 ;
11 else if ( month == 4 )
12 days = 30 ;
13
14 println ( "days=" + days );
15 }
1 void main () {
2 println ( "Anzahl der Tage in einem Monat" );
3
4 var month = Integer . parseInt ( readln ( "Welchen Monate haben wir(1-12)? " ));
5
6 int days = 31 ;
7 if ( month == 2 && readln ( "Schaltjahr (j/n)? " ). charAt ( 0 ) == 'j' )
8 days = 29 ;
9 else
10 if ( month == 2 )
11 days = 28 ;
12 else
13 if ( month == 4 )
14 days = 30 ;
15
16 println ( "days=" + days );
17 }
Die if
-Anweisung kann um einen else
-Zweig erweitert werden, der aus dem Schlüsselwort else
und einer Anweisung bzw. einem Block besteht.
Syntax:
if ( < Ausdruck > ) < Anweisung bzw . Block > else < Anweisung bzw . Block >
Die < Anweisung >
bzw. der < Block >
im else-Zweig wird ausgeführt, wenn der Ausdruck in der if
-Anweisung false
zurück liefert.
Im else
-Zweig kann wieder eine weitere if
-Anweisung verwendet werden (if
/ else - if
Kaskade).
Bei verschachtelten if
-Anweisungen gehört der else
-Zweig zur direkt vorhergehenden if
-Anweisung ohne else
-Zweig.
Übung
Berechnung des BMI mit if-else Anweisung
Stellen Sie die vorherige Lösung zum Berechnen des BMI so um, dass Sie nur if
-else
-Anweisungen verwenden.
MTAwMDAw:VRt03zHTADrxNojR+IDD7HyKxe0dHe7dCI1UzkFGimM=:uZ07nKVfCEn93wPT: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
switch
-Anweisung/-Ausdruck (Grundlagen)
Die switch
-Anweisung bzw. der switch
-Ausdruck setzt sich aus dem Schlüsselwort switch
, einem Prüf-Ausdruck in runden Klammern und einem oder mehreren case
-Blöcken zusammen.
Syntax:
switch ( < Ausdruck > ) < case - Block >* [< default - Block >]
Im Gegensatz zur if
-else
Anweisung wird hier nur ein <Ausdruck> ausgewertet für den mehrere Alternativen (case
-Blöcke) angegeben werden können.
Der default
-Zweig stellt eine Möglichkeit dar, die immer dann ausgeführt wird, wenn kein anderer case
-Block zutrifft
Syntax:
default : < Anweisungen >
case L :
Syntax:
case < Literal > : < Anweisungen >
.
Ein case
-Block setzt sich zusammen aus dem Schlüsselwort case
, einem oder mehreren Literal
en (konstanter Ergebniswert) und einer Abfolge von Anweisungen.
Die Anweisung in einem case :
-Block werden bis zur folgenden break
-Anweisung ausgeführt (fall-through ).
Gibt es keine break
-Anweisung in einem case
-Block werden alle Anweisungen bis zum Ende der switch
-Anweisung ausgeführt.
1 void main () {
2 var month = Integer . parseInt ( readln ( "Welchen Monate haben wir(1-12)? " ));
3 int days = 31 ;
4 switch ( month ) {
5 case 2 :
6 if ( readln ( "Schaltjahr (j/n)? " ). charAt ( 0 ) == 'j' )
7 days = 29 ;
8 else
9 days = 28 ;
10 break ;
11 case 4 :
12 case 6 : case 9 : case 11 :
13 days = 30 ;
14 break ;
15 }
16 println ( "Anzahl der Tage im Monat " + days );
17 }
1 void main () {
2 var month = Integer . parseInt ( readln ( "Welchen Monate haben wir(1-12)? " ));
3 int days = 31 ;
4 switch ( month ) {
5 case 2 :
6 if ( readln ( "Schaltjahr (j/n)? " ). charAt ( 0 ) == 'j' )
7 days = 29 ;
8 else
9 days = 28 ;
10 break ;
11 case 4 , 6 , 9 , 11 :
12 days = 30 ;
13 break ;
14 }
15 println ( "Anzahl der Tage im Monat " + days );
16 }
1 void main () {
2 var month = Integer . parseInt ( readln ( "Welchen Monate haben wir(1-12)? " ));
3
4 int days = switch ( month ) {
5 case 2 :
6 yield readln ( "Schaltjahr (j/n)? " ). charAt ( 0 ) == 'j' ? 29 : 28 ;
7 case 4 , 6 , 9 , 11 :
8 yield 30 ;
9 default :
10 yield 31 ;
11 };
12 println ( "Anzahl der Tage im Monat " + days );
13 }
case L ->
Syntax:
case < Literal > -> < Ausdruck oder Block >
.
Auf der rechten Seite ist nur ein Ausdruck oder ein Block erlaubt - keine Anweisung.
Bei dieser Variante gibt es kein durchfallen Fall-Through-Effekt , d. h. ein break
ist nicht zur Beendigung eines case
-Blocks zu verwenden!
1 void main () {
2 var month = Integer . parseInt ( readln ( "Welchen Monate haben wir(1-12)? " ));
3 int days = 31 ;
4 switch ( month ) {
5 case 2 -> {
6 if ( readln ( "Schaltjahr (j/n)? " ). charAt ( 0 ) == 'j' )
7 days = 29 ;
8 else
9 days = 28 ;
10 }
11 case 4 , 6 , 9 , 11 ->
12 days = 30 ;
13 }
14 println ( "Anzahl der Tage im Monat " + days );
15 }
1 void main () {
2 var month = Integer . parseInt ( readln ( "Welchen Monate haben wir(1-12)? " ));
3
4 int days = switch ( month ) {
5 case 2 -> readln ( "Schaltjahr (j/n)? " ). charAt ( 0 ) == 'j' ? 29 : 28 ;
6 case 4 , 6 , 9 , 11 -> 30 ;
7 default -> 31 ;
8 };
9 println ( "Anzahl der Tage im Monat " + days );
10 }
Als Wert im case
-Block können Literale vom Datentyp int
und ab Java 7 auch String
und Aufzählungen (enum
Klassen) verwendet werden; ab Java 21 wird der Musterabgleich (pattern matching ) unterstützt es können auch beliebige (sogenannte) Referenztypen (nicht nur String
) verwendet werden. Wir werden dies später bei der Diskussion von Referenztypen detailliert behandeln.
case L ->
wird erst seit Java 14 unterstützt. Ein Mischen ist nicht möglich.
switch-Anweisung ≘ switch-statement
switch-Ausdruck ≘ switch-expression
switch
-Anweisung/-Ausdruck mit Musterabgleich und when
Bedingungen (seit Java 21)
Seit Java 21 werden auch case
-Label unterstützt, die Muster abgleichen (match a pattern ), und die mit when
-Bedingungen kombiniert werden können.
Syntax:
case < Pattern > when < Bedingung > -> < Ausdruck oder Block >
.
1 void main () {
2 var name = readln ( "Wie ist Dein Name? " );
3 String nameAnalysis = switch ( name ) {
4
5 case "Michael" , "Tom" , "Erik" -> "m" ;
6 case "Alice" , "Eva" , "Maria" , "Eva-Maria" -> "w" ;
7 case String s when s . length () < 2 -> "kein Name" ;
8 case _ when name . contains ( "-" ) -> "Doppelname" ;
9 default -> "<unbekannt>" ;
10 };
11 println ( "Namensanalyse = " + nameAnalysis );
12 }
Erfolgreicher Musterabgleich?
Bei welchem Name wäre ein erfolgreicher Musterabgleich in mehreren Fällen möglich?
MTAwMDAw:Jc+x9ZuMdzZIbVQGKs7zrt2KYb7pM0PpP0Ln1lwRXAg=:/2Uh759O19pNl0gO:BoZkY7DdHe9dnLBrYOFZaq2LtIzl4CROD87ezAOJVOTnB5A2E/ZcD+siQCm4APtVZQU=
Wir werden Pattern Matching später detailliert behandeln.
Effizienz von bedingten Anweisungen
Bei if
-/else
-Anweisungen werden die Prüf-Ausdrücke sequentiell (in der angegebenen Reihenfolge) ausgewertet (ein Ausdruck pro Alternative).
Bei switch
-Anweisungen/-Ausdrücken wird nur ein einziger Prüf-Ausdruck ausgewertet und die entsprechende(n) Alternative(n) direkt oder zumindest sehr effizient ausgeführt.
Daher benötigt die Auswertung einer switch
-Anweisung i. d. R. weniger Rechenschritte als eine äquivalente if
-/else
-Anweisung.
Übung
Wochentag benennen
Berechnen Sie den Wochentag für ein gegebenes Datum.
Lesen Sie (a) den Tag des Monats, (b) den Monat, (c) ob das Jahr ein Schaltjahr ist und (d) den Wochentag des 1. Januars des Jahres von der Konsole ein. Benutzen Sie die switch
und/oder if
-Anweisungen und geben Sie den Wochentag des gegebenen Datums auf der Konsole aus.
Beispielinteraktion:
# java --enable-preview Wochentag.java
Welchen Monat haben wir (1-12)? 12
Welchen Tag des Monats haben wir (1-28/29/30/31)? 24
Welcher Wochentag war der 1. Januar (0=Montag, 1=Dienstag, ..., 6=Sonntag)? 0
Ist das Jahr ein Schaltjahr (j/n)? j
> Tag im Jahr: 359
> Tag in der Woche: 2
> Der 24.12. ist ein Dienstag
MTAwMDAw:NH2dw9KtM8xEg81CdbAjT2Wz7nSfaGxPU8m1L/BMaDg=:IccK9XwfnshGbGnK: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
Heimaufgabe: Erlauben Sie statt der Eingabe einer Zahl für den Wochentag auch die Eingabe des Wochentages als Text (z. B. "Montag", "Dienstag", ...).
Schleifen
Schleifen
Schleifen dienen dazu gleiche Anweisungen bzw. Blöcke mehrfach auszuführen
Schleifen zählen wie auch bedingte Anweisungen zu den Befehlen der Kontrollflußsteuerung
Schleifen können in Java-Programmen mittels for-Anweisungen, while-Anweisung und do-while-Anweisungen umgesetzt werden
Es muss darauf geachtet werden, dass keine Endlosschleifen entstehen
for
-Schleife
1 int sum = 0 ;
2
3
4 for ( int i = 0 ; i < 10 ; ++ i ){
5 sum += i ;
6 System . out . println ( "sum=" + sum );
7 }
Die for
-Schleife setzt sich zusammen aus einer Initialisierungsliste (<Init>), einer Abbruchbedingung <Ausdruck>, einer Änderungsliste (<Update>) und einen Schleifenrumpf (<Anweisung> bzw. <Block>). Alle drei Teile sind optional.
Syntax:
for(<Init>;<Ausdruck>;<Update>) <Anweisung> bzw. <Block>
Initialisierungsliste:
wird vor dem ersten evtl. Schleifendurchlauf ausgeführt
Abbruchbedingung:
wird vor jedem Schleifendurchlauf geprüft
Änderungsliste:
wird nach einem Schleifendurchlauf ausgeführt
Sowohl die Initialisierungsliste als auch die Änderungsliste können mehrere Ausdrücke enthalten, die durch Kommas getrennt sind.
Beispiel:
1 int sum = 0 ;
2
3
4 for ( int i = 0 , j = 2 ; i < 10 ; ++ i , j += 2 ){
5 sum += j ;
6 System . out . println ( "sum=" + sum );
7 }
1 int sum = 0 ;
2 int i = 0 ;
3 int j = 2 ;
4 for ( i ++ , j -- ; i < 10 ; ++ i , j += 2 ){
5 sum += j ;
6 System . out . println ( "sum=" + sum );
7 }
Gültiger Code:
for (;;) { System . out . println ( "forever" ); }
while
-Schleife
1 int sum = 0 ;
2 int i = 0 ;
3
4
5 while ( i < 10 ){
6 sum += i ;
7 System . out . println ( "sum=" + sum );
8 ++ i ;
9 }
Die while
-Anweisung setzt sich zusammen aus einem <Ausdruck> als Abbruchbedingung und einen Schleifenrumpf (<Anweisung> bzw. <Block> ).
Syntax:
while ( < Ausdruck > ) < Anweisung > bzw . < Block >
Die Abbruchbedingung wird vor jedem Schleifendurchlauf geprüft.
do
-while
-Schleife
1 int sum = 0 ;
2 int i = 0 ;
3
4
5 do {
6 sum += i ++ ;
7 System . out . println ( "sum=" + sum );
8 } while ( i < 10 );
Die do
-while
-Schleife setzt sich zusammen aus einem Schleifenrumpf (<Anweisung> bzw. <Block>) und einem <Ausdruck> als Abbruchbedingung.
Die Abbruchbedingung wird nach jedem Schleifendurchlauf geprüft.
Im Gegensatz zur while
-Schleife wird der Schleifenrumpf mindestens einmal ausgeführt, bevor die Abbruchbedingung geprüft wird.
Kontrolle des Schleifenablaufs
1 int sum = 0 ;
2
3 for ( int i = 0 ; i < 10 ; ++ i ) {
4 if (( i + 1 ) % 5 == 0 )
5 break ;
6
7 sum += i ;
8 System . out . println ( "i=" + i );
9 }
10 System . out . println ( "sum=" + sum );
1 int sum = 0 ;
2
3 for ( int i = 0 ; i < 10 ; ++ i ) {
4 if (( i + 1 ) % 5 == 0 )
5 continue ;
6
7 sum += i ;
8 System . out . println ( "i=" + i );
9 }
10 System . out . println ( "sum=" + sum );
1 int sum = 0 ;
2
3 outer : for ( int i = 0 ; i < 10 ; ++ i ) {
4 System . out . println ( "i=" + i );
5
6 for ( int j = 0 ; j < i ; ++ j ) {
7 System . out . println ( "j=" + j );
8 if (( j + 1 ) % 5 == 0 )
9 break outer ;
10 sum += j ;
11 }
12
13 sum += i ;
14 }
15 System . out . println ( "sum=" + sum );
Mit den Anweisungen break
, break < Marke >
, continue
und continue < Marke >
kann die Abarbeitung einer Schleife beeinflusst werden.
Bei break
wird die Ausführung des aktuellen Schleifendurchlaufs abgebrochen und mit der Anweisung direkt nach dem Schleifenrumpf fortgefahren.
Bei continue
wird die Ausführung des aktuellen Schleifendurchlaufs abgebrochen und zum nächsten Schleifendurchlauf gesprungen.
break < Marke >
bricht auch die Ausführung des aktuellen Schleifendurchlaufs ab und es wird zur Anweisung nach einem Schleifenrumpf der Schleife mit der gegebenen Marke gesprungen.
Eine Marke setzt sich zusammen aus einem Java-Bezeichner und einem „:“ und kann vor einer Schleife bzw. einem Block stehen
Corner Cases
jshell > farOuter : for ( int j = 0 ; j < 5 ; j ++ )
outer : for ( int i = 0 ; i < 5 ; i ++ ) {
System . out . println ( j + " " + i ); break farOuter ;
}
0 0
jshell > farOuter : for ( int j = 0 ; j < 5 ; j ++ )
outer : for ( int i = 0 ; i < 5 ; i ++ ) {
System . out . println ( j + " " + i ); continue farOuter ;
}
0 0
1 0
2 0
3 0
4 0
Übung
Einfacher Primzahltest
Verwenden Sie eine Schleife, um festzustellen ob eine Zahl eine Primzahl ist. Lesen Sie die Zahl von der Konsole ein. Geben Sie am Ende aus, ob die Zahl eine Primzahl ist oder nicht; geben Sie ggf. auch den kleinsten Teiler der Zahl aus.
Schreiben Sie den Code für den Java Interpreter.
Es ist nicht erforderlich, dass der Algorithmus effizient ist.
Beispielinteraktion:
Geben Sie eine ganze positive Zahl ein? 97
97 ist eine Primzahl
Geben Sie eine ganze positive Zahl ein? 123
3 ist ein Teiler von 123
MTAwMDAw:ABD3MkdoMO58dFgOEQunejWJa849JOiqChQBMtlva8w=:JaYfsG89+dQHUjPa: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
Übung
Berechnung der Fibonacci Zahlen
Schreiben Sie ein Programm, das die n-te Fibonacci-Zahl berechnet und auf der Konsole ausgibt. Lesen Sie n von der Konsole ein.
Die Fibonacci-Zahlen sind definiert durch die Rekursionsformel \(F(n) = F(n-1) + F(n-2)\) mit den Anfangswerten \(F(0) = 0\) und \(F(1) = 1\) .
Die ersten 10 Fibonacci Zahlen:
F0
F1
F2
F3
F4
F5
F6
F7
F8
F9
F10
0
1
1
2
3
5
8
13
21
34
55
Beispielinteraktion:
Welche Fibonacci Zahl möchten Sie berechnen? 10
55
MTAwMDAw:uwpFM8VAPuL3LN/FRkJyswCUSUayZc/Y7fbLdTVO204=:8eKTddp+81JG7XsK:OgXCmqsIWJQoAL6rAo4kdoxOnoB/jD2NaG4ic6mfMSTBwcnmrAt7rjnP+8L/3Yp8pEyM9OmguQldA5eyylD70K+GtyxNNLb4AqWL64HnMHrMRhO3UxAtdJfGjK0kp8jEULA/1rLo0wfVh/ffT66+iAHxu46wdDdbbgYG/hCynVBqBVrhQy1XNA9MSfXgDBMCVCMyUV1AiKpFYI6sWPrQ8YctsEIuzE30G44NmHGyGy/XxN7ZNlQ5MkJUI+MaQvVcHV14GOJkGnHayta5QK/Xw5H3AliuFwr/IJ2a8SAJZowtF2tl7inD5Hf7yZHnzKayQyUolxo7SV+Qi+CH7WdQdWOKkF+noR6DXN6iMegREOe8jdJW+o4p21RyX0Hx7r/6dNZ2X1JFStinaKKAWBiZ3sVhi+PpiP9bE7iKEFZhldQ1pLOjVEGcgnEj1CpdVxE1Pz5oWOWMqASE9WwUZC3Ql9rbRPYn1ngA4K+eGAE/GgLfit5qhUrQejaD+JMrPM6VFjze/IBBxLETJYdjnKVjq4rR0Jb08ynwfxC+eAkJb2OQQxq9WoEXjSqoyHu9FQVxGTDeZuDi6g7yGfErVkmZ8pc/32tEm4OKF0GuvrFFQ/X8OHjAOVut9VwjpTPZMJBqROiKmGnj5+XwqrV/jiUJxf8kz8XLNTvPp/+bUiA6rBYAdWcBzGHOaCbWeQe4or3p/QJ6pd7AzmtCiZd/SVVDgmiKzc1q3YwzS5+nkzp/ouMAkAsNVuVKyiMMntpPhDwy1Hhvi18ynbgTNmsgipYqE5NP3Bntq+Ux9R927NM8vjgr1aNoeuOcHbiuLFJYwJBwqDmUmZUuGEQKODNuaGKggQnTGhHtrpbqwVXtmC9Ec8B+kSCtwHxeED3G+/sGat93ujBeHBuCGCZwmUKRXBZC3Ftjw1BPNLRujayNBgfYm+phhxPMOXVbP+OEDU4udcfZRX9jdBneKQy63+ituDrhuJG+qAdIhxmCQbwwq/Dy+U421qk18MR87DHNwQ1SVhiF8jZ1cC8uqN/Gtr7NNFfjZhQJPKFE91543kssesrjt0aFMPWGx3DleePH4qLpMvs+lEN/1o7bYQUf9RnNlSMyWJRlsyevHM8EMmA4+P0P07OwqjT6wJ7MSE3Spns6p/B54rjTW5NedJHBdFkEEsJC7aZhRUZSScH40oYVP6sApX3m7cHtKN9OrSIkhNz/gjJWCwyxWgf39oL+jqokd94NmvSxmOtEPcAgyJa87eQaFLyOmKWedfhXOtK3zH2VVKDDY9Dy4Sid7NWSjXwSafAo/PP58m1Lm+nA0l/sdIUBRPeFwO0RODBFpMoPm4iEotuhzzDrrxd+984SRl97edqbV2QQgZIArCqttvVdYAJXSoOTZU2MXwgu/Zd9+6omnuSRAh3oqVNuPu76LSZ84179Fm7dzOP4Bh8B+q5dzCsHpksIQTpOOcOpy7G9cJufOVYp/wg/JQr4vBPaTwVeg4Oitjr3QAJ2tFaTanFL7qTqZcWHP/996QKQ9DdDFjJYg8tN32QXk8DyE6HtD9C6HUwgg4/107D+sgcRP+5QoRV7iCIqGp6UBBcnC/KQGZV1FH51JgVFEqXzQ2E9/KzZ6fOqXSDUu53y+yHp4XlEK16SVN53+P1rhzJfq2ozW2DqgqlXHLVtjgxzNfm683WwJpPhTm/eyXWp8gaFP2cs/F77SPci4pxAV2z2paGO4nVwXJUHOK+PkBKnJV7M3cfCrNi81MrzQk25wwCEUUPgz3LLNhmY5UK5Dt7tcQnaQW+HVnhTGVV/SwE8jPgEoV+m6j9sIftdNuQXhdISIoY89QfqdzuM7AwL9kEDsMR//Kg8g+39NuN+zLJmzV0j09myIvBtZXCR7/cZxwO3j5mPvDFofne7jIBPxHUbHvnkUNaUANtGzNBS7NnQMLuwTcEqSa+RfYD0wIijZo6uwMB7sKxatBYB2OF6XzsTnnaIX9DIW6N24HI/VPbkurTVITDKxf+StTc3Uyt2R7AbpgNqFbSmTJRNWetAoIRYeae2LzKhc8m1A6IiTyShJCDgz0Yihi7WaqN6W2uskFAClzoN+8AwQ3sISYu/eDkhk8H2dNDR21JhQ0NkHXmSZ8D0AFW9YvGIQaZKmGaH5wnQyo1GxIUm2hNZveiLgqozg2mV0iYebgkS+BPw1EzDmH8zAbdlCAf1z4Txb/j61A7rqVVKkK+C3bU9fwEC92/WTwAVbpE3Wh0JTz4xMp1VD+GbhXEfV41TRUKWVUk5Nmambe2pyfBDFrD+Xk54R+Y+PdwLj5qgiuiGTyCFXfZttCAdPg71A2zD7IYiOYYgD4H41eZdbuhRWzaJfUlNXse3eyd5xm1LzZ5TaUdKHRZCVI8QBvvqCXJLv0NoYQCsrRe79M0cz/C1QQn/LSYJE7WswLNcGgLcRNQphpj7lofHrQzng8JRJI+KayZo7mfMZxGBj1eyajdHq1D19vLyYk7DQ0pk7F0XeYMSZVMQ8ug6z4vg8yYMpCF5XAlMh2YY86L4b+rNSCbwYhvUYQCOUC8OEHtuVHuCXb0jDHMS3YTMurdkSXuY+UHfV/n0Pg5El7tEQjtXaCROLxjmRI+0mw8ILQrX3iojhbBvOuf6uwkXI1n29eAjCnKyDwF+8oE2mvCz/zI679edl2TGzStJEQ75+Zvv63CxLZcRYemOi6zMlxYPLjhWVskLOZDjI1ne+tKfkuyCx9v2vvi7NjD8I0ky3Od1Q9DeelXQweynyXoffBXgVX1F/MumoJKhbhtdLcR/3gbuON8esAmGJZeHONYhib7I9sXiqzLyx2fqVUATEseJy8iZkqJy1T1G7e3xQCv+iPYQUz9hPv67Py1jmtQ+UNrDslrEZppUp1A6RI7KiaimWWKseEJlKijDXYd/vEY+e1NljpU6aicfL4LV7qm2Jdn/BGnfYZUdvCGNZNLdUZy1euWBM1G3oZ8LLBKRXwN+FOPuEDxjZJfmSE9MGicgKqOVMDy23ksDzu4xBsnTC1yw7YuCdanpR0wWB1TyojhKOFjjSc8+EYQhS1CX5vvJnqxuHox/cA+5xXn2TgAOSkG8ixtKEk8efi0Fkdzp9tnmXBEBlvAciAFsleFghRP3vzBYee9Zc7XZRX9h3RtvjmzC95VzufNAO/DNVy3k7DAL7U+xt1VazXBnwbvL4F4FA9lOiOWEHCdPYDgFchnayj4qA9k8BauRqLPcC6uAyW7RJFRXqWDC/5uTpsvANakZwF4N/jX0wjhsqx2c0dFWBvyllBEj40OHfC5crruMAIwPDegGABq66KOmUDAzb9ZWzwSf1uqZaRO0WjzgezXZZBkv+DvpCaToSlqhrayiZkPgr6A8CAeYvXI7JfVESPPr99Q6lpT7+7Lkf8/cbhRIvg/DJnfz9CBmpT8t3dKl3OnKbKxUKkpaB1gbxP7UnUpTPZIZS08zs5/8ZlL6fegWTl81CnUx3zn1ZZxEr1NzpQiv3UUk/OJ6YASVCfEKxJInZdD3pk+DnAwIuRJcsMPEuNESfeddgGAw3JkCx19eiHJtZNaJlZi2KRcL2NUXcHKvESaioEtwQbPSya0UPLBjkvZSXUkcERYLIvFOnNWLive+CJZE73G5CxVssiEOvUO4aFbtURVQgvswfbFOotV/5k3bkdmFHw8moMXOqdIj+Vbh/z0uwhhKj7RhGcKC5ZPsG53jgKh1QF7I/RFeBF8pOJgTKoOyOKe+qP4OCSfAdcy1XzII9nrhe2Mx1xvGk/LXB8yvrRcbzMquxlyK0WU2+5f6LzSzgGLVh00E1w4ioZmhtazez0OtVGdyHRp5yleVAv/AsilAL6YAuz9P7KUXAWaGskhE7HeGIzlVgsIRzZUzGQHYmz9Diy7xshpUFzPLhR56IvQBXBwx8HhS9SVA0XeB3DOA5qHqk5aadekKOwlj5PUsdHVupqWS8BvbrIGKIvuO3LyFfiio+KoZRQ8YJRoy8CT/J1E7TuVyxtw/Vty6eHspRkmWdouNAisg597pTswe+9zzaSSYZBsN7L7Mo6wJyvtQl3RjoWRy66aGwG6JHx0UfpNxcwh44sHA0H79R9G67CxhylQMk6CVYObw2DlM8+uGebpLR+MU6TStXmxfS2izWd0gqacbKGqFDXoBk+EcVyh94ovGNv4PGkyqY+vT5PxdGW1o71WaCS+y5TGvCPdP9XsXJUXRsJLny8KOAz9mj3U0zglQ6OnegLpVKJpA9NxmnqcNJ1Y++Vfk9r3BjWNLXpuLmZhqoO/LMwPACasx4b5ZSCac+N71v/03FcrTiPM6KOIUuALzVIsTxLRLkCuGEhPRHxiKdUgSVaxq5UtekVgV56tW9ZEHxvDQQUrt358Bvpr4M8DrP0292ywHGu5t/zp0b/0sRmcqIKuMP5gUts04Hx+1CiigTX1q0ttVh8grdZmiCDnmVMqe/A2YRC/mRK+mDSyod+hAb4PfAuxO3AjTo0x08fVV6XqY5gyMrXeWrTtws/Rzx/aOLEHpCTHviaJaYwpFbsV3UbAmq300GOzBryPAZ0AtaUMyUMhW1fNaW3nCSON9cfzNoDIpKZftTFDWoxl5C70lFoxoFVaVxOJClIW5HmCWdxlPrTfazxTZMVOdoLHFNQOG4atSF48t5c7KwTjb7v4dsH18JNeUAadRYf0Q7mjNTIEakc1g8GZi8GKOs+YlTXaqDO9Etc5+KEQbszd2m9w5cZ64FfxnAGwZ/HbWQup2bg8vN4RmemJ3/Bd2jvwr0rzr8RUFWAq+8lfvGrweah1UZda0x6aWbI/0flDbuAXDBLXhmjYfga+avPycCvFNQXcdsHBmO5XRQQFAaCbkDAVA5LGTHAAXxcEEVMv2fzvbS/kh5htyh+Ca5V/6wPc0RST6hTcOld/mnzL2QiVbXZehrjHamD/yD5A8bx921d4ThXdCQXpoZVx3a3JKb1YXY8G2JDwYD9KMhRPnqTsvPBIH4EYOh6VnswVIGVK0Hq33Uodxhw6zITXyojOBtTpKVK/ZtV1mjr/k/IX74xB3OyKGirJdYH48oXUAsV+VUefww3+X0NO97enfEiJtWXqjIf4ng5+98w3ZDQ2Za0lHheQKlUVxpRihPg7qzK5XEsohiHClzp9BFycm6IZT7vAQX+6oTrcCtn5Pr2U0wsqbYIb9THNWkqwtCXND89ShbCf1Yb7pnZ8ESs/u+R/JZPdejh3LhWoBopdkdZp2cwDMH+4YzYuk/LuZWiZAQ7wXGLP5Ik8MlRZcuPDCKj1eD8WtuhKUmF7Rpu+kr2eViTy7XzsGmxp6URmtNUgfIXLpt8NkYG9jhln2qx8Eh9dyxV9k1MkOMHjrS5UE6vNcfzmcaGDHo53+zg1CYGiEggmVCp6dwD2X7/nrFlm/1IxY+9t91Ff+5SBR1aXCjEMLbTtLwVCJmJBf9qAbv9K4B4KDAbScxDIpu7I5CVE7G30TWeZCHCtvZISq3tua0aV/BO0fxa+MGfYJTjXfRqxs91VVqNQoYgtx+s6aNNf1b1vDyIJ+4qCHve7G9qwl6cPEeRLCQ/kbM0Y4LZVWHM1vU24IxJKJrpYBOD84DZZlA5TChaS2VVhCFatwAQyNcY8qxkeLbN9JDj8cWicj3dnfcARcZwjiAhbo/dO+mxLXAbOb7l87HHMuAQ7UcQu9akS1HjR65BGDhika6kGYQFy5AWKFb2DmT7TEcqprn4scBFBbDkAzOIBHtpfsQ8M+LNHeC6ThbquOJysoNyUZLf4xbYIka4Qkm4srg3Nl28dE3KXlPu68ZZLaIxkhZEnYCCqeBrNpWAope2F4G7kDixZ/u7UBaLCCLAqWisXYd4/6emJc3feFi1c9nCjMJAUDbCE2rDe/60FLV/pi4Ns7GDYSF8fqwR5GC/WL1ZUOU7v/7HiXE35s2sm4a22Z7JsRhtHPJXPW7wLow+ggYp7mSrzuueXMncUcTjFR1f51AyDzL3NtHiZkjZL37QQvVIv7W/7pyGVXj8DMNmAp4NQ4fn3pd3Jk5cuHKVER6wS5ye/nid4XAaKDD5s1HHH+0T+G34KqP4pHdsID5BAIP09XRo5TpfihwE3k3gVIq4BKJbbb659T1gDJ/+I17W5TF9dLIqhnJEjHNQzSYY5ywHtkTnlC/yhBVNTKVJ92tyOxYZ+2r+CI3l5WSSs3apsA92Fe7AyU+yoT7opyaJPtf0GfJK/fVy71q78RdKl7tbL58OzAgoK6JZO6wN43E9w/a5g59GfnBKqDbXVXjwRnv9nNks33Fec3QHOTm04v1jashUZAA0H+BjYYP0DzMoh7/YnTJjgBgI/MMSZNNqCbmZwUoCivVJA2XPul8t2BXbQmurlDV1W55DqDD+XJW0myGqmeTEWSMfa9EJ/cMy20X58g0Y+652uYH4D3xEXUE9+a0M9UFbPOXSmtTibeF31c5nr4I01b2mmLuCxbp6LoDBHz+oLXPPRDT3i8E/vYUyPQ2jVpq8SQNn4rHJiOP8wC6JuPFt18A1UR39I/Ci8D9EeOc85PZt9pyDBzdzLbAosSiaES3oc1P+wTWrfBLEr1Ha6e3jSd4On7IpLWc0PaE6E5S4RxC83JgJA/FJrex7aUomXO3dvxQ+ESquPUBCRrzkxkQ47VdV13ahRJ5bR6aHOBsRebmfGMXWpxuN+lI5GWqRIDOw3kgoBW6yxT5/1/qST9KUVINdzR6XyhNbTY5hU+GjZhKxtQJkrYxkctECKRHxV1fe55cc0g5poPtlGiuXXc0qGZxvWg5AlDnR98IWiH+CZdS+gq5ZQ0RmQ77Sud0Z+SQgBbYC5jukgf0vVhFtbwy8ALddTQoH5L9PL2xTVCwnUrs12Iq+7I1fwwygyLU/5tHJZrsxS3dhrc515qULYfXKtaiXAcSWXMIQ3uzyMbVTayIwbG+LYulBBcZ+5UNV0uxoxtbA6RhwdHXxxPhDnU5UB/osbLifHEx70Q6bX1CqopLGmnhKGnZFa2YcevtGxnjTc09Jxyvgh6P89lrq612+NjXj/uM2iG0T3muKdETvA5BK6sqin/RHxUehDkMEn/kyRmu5FYD4KIUq1YaRozpSkDsJXbK3oX9r/uV1ieJtAX1gMl+TlGYPguagIv9s0FyD+36RaNj4H3haXfikIk5D1yr5PfIWOt9V6p5zJX3TNO9Ehz1ICD5AszM7I4En432KbD2coqFpmhMrPX74vfKHaygWLKpyeItQJR542S0j/DvafPcy0NHZvkdVJD7mZ4TOvatv37Kib5EHLbLZP112Ka5MsBOn17Zy8VJtTOqCCUJFlfIJRZMj2kebCaTuyDk8RsWAd1sSOUrZBAImFvfW27On1qdGL8/eKsjL+WRl2D+7LSordaulNAPKHfyDxDKySZ4QeATacmEE8XdujGMNgYj3WUV84jRJjw3F8qdCEejYDbIkCwA30O9cIzGNLFifuqOssdGK/49Y1gIlBALlkvb9QYvcmJPnlhz3I6oy01HNaHdWUGVDjb4Pp4CNTVzZwqroOlccivv0yp1723XNbhoS6so1F9tUSqBRCWnY9SRVWEnlz/InqYGsuxJ7WZErIeuWsKtjgqzEbtr6txvhdDee0Z4amXTHYBqumWFDVgXu/quKeiqchQOpdk+bcl16VDtcxu4L2Cv9MK0NItWtnXyLzsbvHfmgLrJ0c7fu9TEOtxktkTc2n8OhXUsvBh7OjFWmgwLZ8Ptu/hUCks6WTrk9ufBspb4GHfVEsvyYWMyLbCddoK9nlN75j/HVN2aCoEDDZrOVPA8PU6sRCdVCLN6k9b0l/81MxV/18hIcNuSKiyW/RBvsj0Gi3UU75XW5EqBY1R1NLmFW/hmfQtH8T86jf+v6B2xsncYKeRb5oU8fHNmcdXjbDCrXnkEl4PKpTJJPZv58eaDqDaLwscN+0lboyXudt67loeGCjgIKw6vYgcjIDDQ4v4iEQ9PTo2tllgbf9EnJlF7Qs9aqG6u5qn61Q/M5RQG2t2LmeYcK9lHyJRe2nGvzDniuczcjfcXzVN8xFC64sLd9QbqFiLXZJTD551rorYfpIrWULKQ2vZw06C6Pu0gkXkdOnuj5AyeqIG2sl6RdKzyjSb5wNRamOR+Bs1lVemvEdetdk5odzVKxEyddemQe6pGTR+Sn0pVRc0fxBmtjroakTp83W2Jq1zAm/y9UwGRNSCZXwY8i1IiO2vYkNUBX59uYjWmyzHSjNKuDsvlmyQI4RBQzPtro5MVwhixJaDSXMoZPtHCYN5p9v33Yy08Vl/hkqnqg0vm0MzhF3ja76G6kOch2amRgTULMJGtyoPTEO8RbCaEIeULiquDIdM8pqhVZR9ValbsI7ieYvvXD1YLdORv2Kp6LmyrQKO3w2ST5NjeCt3VjTPvNxNsOmtrPfQNGxy/hjVAN+B61c9L2JlDZX9m4iAzQBPQYvgZHA1FUGSI25JBLOnInMISCXtzD6zDZXaU9mA/9D0b/J9uqIzAFQ4XR+mjMrU3XKwOTf0eeb+8ZPhHCJGg2f+3NJd5No6gc1Odo9RwY8aSfwC7/+ijyXB78dAgLdjzjDF26VDocg70r4fPdzI4YyW0NrMCr9LLmNt13hL78H0RBGpvdXuuB5zuhRdPDUM060M4gYP0AcbB9PG9TEzetXISv+T2/vBAECvJ/wll8WihrLZ3ZvuEeIjBsS1sjejEf+HS/b+LqOTMy40tfGH2KijoFpq7FGTMhNSJUgQLQ2NxEAY63hlxV4k2ZYfgi7QOM0IKuoQX+hGTzzn6QdmQjEJC67p8Zk5BUj4CtJDBpoddm9ApAYY7Cav1PxNm4hui4DyFV5tKT71imLl9sxUkDhJSh7V10K+UKVs6Q==
Übung
Berechnung der Kubikwurzel mit Newton-Raphson
Berechnen Sie die Kubikwurzel \(x\) einer Zahl \(n\) mit Hilfe einer Schleife. Nutzen Sie dazu das schnell konvergierende, iterative Verfahren von Newton-Raphson.
\begin{equation*}
x_{n+1} = x_n - \frac{x_n^3 - n}{3 \times x_n^2}\qquad\qquad\text{ein mgl. Startwert:}\; x_0 = 1
\end{equation*}
Beispielinteraktion:
Geben Sie eine Zahl n ein deren Kubikwurzel w Sie berechnen wollen
( d.h. n = w*w*w) : 1000000
Wie viele Schritte wollen Sie machen? 50
...
Das Ergebnis ist: 100 .0
Stellen Sie sich die folgenden Fragen:
Welchen Datentyp sollten Sie für die Kubikwurzeln verwenden?
Macht es Sinn die Anzahl der Iterationen zu begrenzen?
(D. h. wie schnell konvergiert das Verfahren?)
Können Sie die Kubikwurzel von 2.251.748.274.470.911 (2251748274470911
) berechnen?
Wie kann man feststellen ob eine gute Näherung an die Kubikwurzel vorliegt?
MTAwMDAw:OGow1ygfRM1pMIci4hcpdhn1efbgINuQ6mBIowIf/Dw=:2hwjkeKsI8+s17YQ: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
Um zu verstehen wie schnell der Algorithmus konvergiert können sie sich den aktuellen Wert \(x_n\) ausgeben lassen.
Hausübung: Implementieren Sie den Algorithmus auch mit einem anderen Typ von Schleife.
Methoden
Methoden (in Java Scripts)
Methoden in Java-Programmen dienen dazu die Anwendungslogik zu strukturieren und in wiederverwendbare Unterprogramme zu zerlegen.
Methoden können von einer anderen Methode aufgerufen werden.
Eine Methode hat einen Namen, eine Parameterliste und einen Rückgabetyp.
Methoden können bzw. müssen weiterhin deklarieren welche Ausnahmen auftreten können. Dies werden wir aber erst später behandeln.
Der Methodenrumpf ist eine Abfolge von Anweisungen bzw. Blöcken.
Syntax:
< Rückgabetyp > < Methodenname > ( < Parameterliste > ){
< Methoden - Rumpf >
}
Wir haben bereits Methoden wie println ( String )
und double Double . parseDouble ( String )
kennengelernt.
Wenn wir void main () { ... }
verwenden, dann definieren wir eine Methode, die von der Java-Laufzeitumgebung beim Start aufgerufen wird.
Per Konvention ist festgelegt, dass diese Methode main
heisst.
Beispiel
Deklaration einer Methode zum Berechnen des größten gemeinsamen Teilers (ggt
) zweier Zahlen.
1 int ggt ( int z1 , int z2 ) {
2 z1 = Math . abs ( z1 );
3 z2 = Math . abs ( z2 );
4
5 int rest = 0 ;
6 while ( z2 != 0 ) {
7 rest = z1 % z2 ;
8 z1 = z2 ;
9 z2 = rest ;
10 }
11 return z1 ;
12 }
Im ggtEuklid
-Beispiel werden die Parameter als normale Variablen behandelt. Dies wurde hier aus Kompaktheitsgründen so gewählt. Im Allgemeinen sollten die Parameter als Konstanten betrachtet werden, d. h. sie sollten nicht verändert werden.
Methodenparameter und Rückgabewerte
Die Parameterliste definiert über eine komma-separierte Liste die optionalen formalen Parameter der Methode:
Syntax:
< Typ > < Bezeichner > (, < Typ > < Bezeichner > ) *
Rückgabewerte werden im Methodenrumpf mit der return Anweisung zurückgegeben:
Syntax:
return < Ausdruck >
Bei Methoden ohne Rückgabewert (void
) dient die leere return
Anweisung (return ;
) zum - ggf. vorzeitigem - Beenden der Methode. Am Ende der Methode ist in diesem Fall die return
Anweisung optional.
Methodenaufruf
Der Aufruf erfolgt durch die Angabe des Klassennamens, des Methodennamens und der aktuellen Parameterwerte.
Syntax:
<Methode>(<Parameterwerte>)
Als aktuelle Parameterwerte können Variablen, Ausdrücke oder Literale übergeben werden.
Der Datentyp des übergebenen Wertes muss in den Datentyp des formalen Parameters implizit konvertierbar sein. Andernfalls muss explizit konvertiert werden.
Von allen übergebenen Werten wird eine (ggf. flache) Kopie übergeben.
D. h. Änderungen an den Parametern innerhalb der Methode haben keine Auswirkungen auf die Werte der Argumente (Fachbegriff: call-by-value ).
Methoden dürfen sich selber aufrufen (Rekursion ).
Rekursive Methoden - Beispiel
Schleifen basierte Implementierung des Algorithmus von Euklid:
1 int ggt ( int z1 , int z2 ) {
2 int rest = 0 ;
3 while ( z2 != 0 ) {
4 rest = z1 % z2 ;
5 z1 = z2 ;
6 z2 = rest ;
7 }
8 return z1 ;
9 }
Elegante rekursive Implementierung des Algorithmus von Euklid:
int ggt ( int z1 , int z2 ) {
if ( z2 == 0 )
return z1 ;
else
return ggt ( z2 , z1 % z2 );
}
Überladen von Methoden (Overloading )
Eine überladene Methode ist eine Methode mit dem gleichen Namen wie eine andere Methode, aber mit einer unterschiedlichen Parameterliste. Folgende Unterschiede sind möglich:
Eine Methode definiert eine unterschiedliche Anzahl von Parametern
Eine Methode hat unterschiedliche Datentypen für ihre formalen Parameter
Unterschiedliche Rückgabetypen sind in Java nicht ausreichend.
Zum Beispiel gibt es in Java die Methode int Math . max ( int , int )
und double Math . max ( double , double )
.
max(long, long)?
Warum definiert Java auch noch die Methode long Math . max ( long , long )
bzw. warum reicht es nicht aus nur long Math . max ( long , long )
zu definieren und auf int Math . max ( int , int )
zu verzichten?
MTAwMDAw:p4zMOU790QXXC5YMYuzD59+74zX/UpaF9eC1Kr91Ljw=:jqpjeTqtXXFSf5Yy:N8V7/7bwwlE332gNz2cnt7xuau/HOgmLUqva7uLNcm4Vo/cW8FIImHK8tb+LvyL2IcojppkRWO71r+QKWFOyR3Q9TvgQEnFSP/pW4zozKTe7AKcZfDmFFHr2xdmmT2Hn9xeSYUgcED4JyRzkkHhh1FDzhuxS85WAVstDhP+VOmprjREW1kYsifMiU7YLmPtZM5c83vk2M7ggG6Hmr3c8kwGKRz0y9rc91zXV/STEJdSAm00pzs8gN2uzJg75bUcOV5bzGMCtlEBW1njKCZ75Qu9MPq0MKQKcbQs8Zqb0muc+GNH9ipxghfpTh+neleWUG2LxrSBcPJWlip6+MvSBfLJDwV35GbFiVyzBsG1/MhAs86yPS2p0XJ6PxJFiZw97PYMOyNPlVPuPB0JsoF6KK/JF+k7/OwhWy43OdHPTmJtKsGentvTDGdJJ9OjrzKzNL6KnN3n+DdFS3gdfB3W3z1tH+gfSrkQJqRGMwSNEqJAFBjG55Dj7zQX66Q9EMmv9+5oaeJxqqPEBEbURk645VYXMTbxEU18aWugDOADsDlL8I/uqrxftJpGcJZCUNE8J5rUzKrHMF3Ia2ZAz3gSZ7ObN1v2POdJP80RgN65g4cGYiKmntPz6FEuxlIP/4ci6G5R91KoPWABO1PAZsIHA2k8uMIKE0PC33jA7Shos2+KNkbIHZ9lMnB80GMX5pZMOCWoYUa0qpB6zbc8DyU9k2Vk66HPSL9r0vG2UEJ1RurIpGCBqcprzvHJK/ilj+S7KWcKl+5bSIA3TquqFcGcKNTpA6m4/j/jrS6OzBcFmrQHNEoPKJh7FC9SnrYwS6SGTGJE2B5+RejdRLSpGMa12nNMpif4EaFbNxE60i0MP/A/tobLDatUVMYxHE4p0l+8oyv/1QSc7sOTSMsxXV9h/riC8O1xdVhszJXiZxyzgEqzKlbBNruuJdSQtXoWFv0nJOJ+nH/t0XNogGtBCKR2m+dy68Ewucdv9SpGmSPZFszcU8LxlY7L5r6pMZsiq9Rwnzv053VqZ8Qold70Cl0quUK/yoWRVWGHCWcs369jMgug27ytanX5fZgrLRkeS0pl8Rh6Dy0fjfzVqxlcrcYRomjQRJTaXf6zFLHdCUb83PqhyxOH5iiz3JoKVspVP/RNTb9YDjajj10EQ/pkmH2tfvFBr29DvKDRjd6A/xME+fyCOM/1p7i4oGxU9QlB5W9gXERMCEtEZ7bo5TU75m3KcMSJieoJ79GnLc1VtYndhggRNTcx8x5YhYajeFkNqjPAODPVYzJDadDhbTgtM+HwAyYKuRvjOkvbD6TPbKpraQdX9KeTq7Oqx1w60B9KlqB+/tj+WZZPsZOCypWeGhhlRI0xGjT+Ewpm80U/xpD2k5IG7xBNhlmjvVoU23rnKdNRYnDd2smu1bdxD8icWS7eIXZ3n+dVArWbLnVTqtFAF5j9X9aZPubv8QJzi/VpYi9YKLI9uJuSpXDQCo5o2fyQuEEWk/PU+FM2P10GagH3/5PhZajc8Qt5qzt0yFhthAtXs1Z0KdcRgntjj0IM8FXhupHZXd18RZ6bu/aZX6RhaVThYuPx/nnzBGJwyoMEbiczmRIPXYtoxXeALedoeaq42HNwTQOfEd515oMHmuqqbV2h5VNpOPbSy2prq/P3xCfqd5gY0/8yvY5jI5AkHs9EKKmm2n2h7aGpiF8aPkc+v3z31tppcRVWxV9+eteZZ43rgBxR81RLDII4hsEbZAgy6+BH3sQDG8lOQewjvoMI3DCq/gtYzaRfF6irXzL2NEteMA8Gxq2t1rh1AQ/4ooGwuZ5gZhyw0i2capDSZiMRLuY9neevHEtMwMEplOhn8xyie2yHRf7/rBnRwRUwji7tde65VAMJg/8YzwKihkykfAHj4TXCEoanMHAleaHZ//fdAN8wKoItdjjUyJdy+FwpXrfp3tQ==
void print ( int i ) {
println ( "int: " + i );
}
void print ( double d ) {
println ( "double: " + d );
}
void main () {
int i = 1 ;
print ( i );
float f = 1.0f ;
print ( f );
}
Aufruf von Methoden aus anderen Klassen
Für den Moment ist eine Klasse für uns eine Sammlung von Methoden und Konstanten, die inhaltlich in einem logischen Zusammenhang stehen.
Der Aufruf einer sogenannten Klassenmethode (solche mit dem Modifizierer static
) einer Klasse erfolgt durch die Angabe des Klassennamens, des Methodennamens und der aktuellen Parameterwerte.
Syntax:
<Klasse>.<Methode>(<Parameterwerte>)
Wir haben bereits entsprechende Beispiele gesehen, z. B. Double . parseDouble ( String )
oder Integer . parseInt ( String )
.
Hinweis
Auf diese Weise können nur statische Methoden aufgerufen werden. Die Details werden wir später beim Thema Klassen und Objekte behandeln.
Übung
Methoden definieren
Nehmen Sie die Ergebnisse der letzten Übung und definieren Sie jeweils eine Methode für die Berechnung der Kubikwurzel
und für den Primzahltest. Die Methode isPrime
soll dabei den Rückgabetyp boolean haben.
Auf die Ausgabe des kleinsten Teilers beim Primzahltest soll verzichtet werden.
Rufen Sie die Methoden aus Ihrer main
-Methode auf. Die main
-Methode soll dabei nur die Eingabe und die Ausgabe übernehmen.
Wandeln Sie die Methode für die Berechnung der Kubikwurzel in eine rekursive Methode um.
MTAwMDAw:x95gEos5F27OLhRv7Rya4JRA7O+4wsrNkeUuEAzkgRI=:mfVaCTnCsSuMbweV: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
Übung
Fakultät berechnen
Schreiben Sie eine nicht-rekursive Methode zur Berechnung der Fakultät einer Zahl. Lesen Sie die Zahl von der Konsole ein und geben Sie die Fakultät auf der Konsole aus.
MTAwMDAw:cNWEr7PyDwp9Too/CVaVfPBZWPZ+9EluQq9TsR4Ysug=:/K/2OkXWCo9Yvnrs:z83qIj8mArEFOFX+eadq5sKiWGFZaef8YewkhUyVBriMA2qUvpENWSrcdg+4Pj8DCpM76/5tqY6tPnYHr1VdXERcy/qDIYZ7GgrkcyuCfKi/1lRnpvsFiW0VooqRzcjF/ye9/GPXMdHuDkE9WepQJYjiBIOK5xHvQtnj8jbJLRP7urh5Ba/0aJlIt7nYFPl8Tx++dtKJMofmb3DgF5g5qSRm7f4zXDFDv5OAEBuJbrbj4631xOsvNdwS3gQPOXPjtc2pLcUQW4AZKJ1bu01bIlPUb83qa7ONronFjEG24oPKneYXpvmnFMcnGcaKsAR8V0z89Hy2nbigFzun6oPi5GJTpcpUBmxX4KjgEVejgoHeHyOrKBe3/2bU/MTeNrQK2mq8fb7g2fZ4AjFX5fdT7aCK38ThxPZ5OwCxlgz/E6SKqaUwalqx1b/jqMji/L3G/0rMKXRw64WZqWcqhO4wVvCxcf0YZ2KOs75cB9v4Ro6QUshuyZ6+PMo7z88HtSlABTXMiQzjgrDu9LVYfHIzE1X1vuXpwtyd+ejED4TNm8dLXm++W18SJ36nL9Z7nI4T0BGnY6t1rcafYf+93fszZwuuwBkLsTW9ki/IFHvHDpFUPGAYfzeaZXV3zxxRHmHJpQbTDXt4F43XfK2G+LYJyKeZ8vKgrSi9nn/5O9m87r7brnibw9JV1b2sdl9bXd2llWY2TwVy610GQ7kXW084W+B4Z9F95ysEhpztJfSlkwQjcukDuN/x4rnu+Cs3kyR2lRp3GMUQl5Pk5pBziMrnYKFKFlry8lpgIwDIOQEkbK+4gSrTx9UE/eLUqHFzYo2NIt6dAt7XMzHm+jlqfS7ydTurG6wZZ49bM6SAgTu/cL10rOK6HXpEUIbulk2Fev1SAKtrZnc2M3n6kpmcSuHBLoG6ZZsEEtgJzHbM8q4NjX23KgBSQElh4uVosEDEbd2bscl+pLXcb2Bmz3XfrtcsOuPLOtZ8h+0243usXmo55/kHcKHgXjPhAkGmwJ5MdM4J47AYZMiY6ItDKZFZS/kY/Bv+85KNDwryKM4mlWu2lnazzX3UltoaSWMgapo7wP3Xw1hZQzmtyhDQal50/Dsq4AioC9HiZ05D8OWem673ZSpYNPQrK7fwHRlnTwXA0N4jI/LZ1cd5VIjgS+FoqcYXQVZyJ4DPqwNuNOas6msL4f6N4uGXaotjc37n5Cdbv1TJTxHhWTtMnuWkD2vmZcSc1Kwv5UlW7AML0xfm87DAAQYeoxZbppTk/wcfcw0M2PZwNXk/cxXG6hTFahEVc++joPhceR/WTAucnYVaq6K2iEfxFWrVD25S8F77W0L6MvN7qNatd15u8pznaOhqFzfIvRtiSR0mnv8z7YWwEep1Dyaef6R7bVEj7I29PchSHY4k3BW910bL6wnX+lG4lh4ZX8ykqojzc34l7A9hHlNg8++gkOmqO5RiHPWECL6bQB8CI1t7N/5TfGVleq5xITtolqF1/V5Xc40XtbD3SrPwZ1YmrMcJLUNyKM8uvXCT1apH70emTh7oIOI7p4KV3taeapH178F8zxeJ1roJDgsb/P8Yyyx0jYDr2EHeNurlgiB/937Dpt8MtELHAhk52f7wvPtFxkqrp05MoA80GjbINvyoqmi5ByqK7izuNFsQWmulf5+G1604hL56GcLBVkK/lklyRysHRoxyrhJfQ64W1sNkNpShfVQeujjAEAAo1Wik5kNr2dMPTBk0qM+k9f92ZpwYYucZVzvFdtatuo6PDMLIf/9vgB2yGoaq3wv7/qvA+07GP0+a8WEHjrlIXtRXE1dLpq5g58c2zb/h+CEsTXffXW0KeqZ8hzGBVwTP0Gg3XyRpglTuAC/50gIvYDCe0fOJYtr7I/79w0HuptC90Zu0vRLTm1L5b9H1JlBYtza3XHwCQ7v0q4ssRuU7kfP2lYc5ZZFjCugzXknA2WAUeIj+Vu0bWnZ0eiLIlTELSeJOu7FLD4/rdda2G4FPeG1FB0RX9Mzel14iXX6srwVQU1Qmui53jJmacgCUZp6LFkN7zrbVN58SCg6hT/d5rFIFSwk/w65fRyCOS8TcESM36sR+OfQZRMSQ47FhDSc2P1Twx82V8gVMorPbzxR/fV2Z8inm1BWWpqSs86EM/UNakrLGJutYqeF0QYYnxoIPyfxmb5hzsfW0tRZc7O6+iHgXRZgL93GWA0MPtStaIcYjsCn+6E5CC9wkc+PIfX5FMfllUUUCifv4w1HPE8BeWFLc9GTX08MutXyaHosJi+aA2WjkmIrtTx7RKD4iIx7Qdp3F7+m++2mG8jDgvyv4SapaRBorRHuAQwqqA/YC27RK+PghQH6pzj00FUZdYK307jiWPLsi91OazltaMpdA/46KNnenVamrxrGxNX+ypfZhCUxdX80WjypatEH6wTiiKcYKKo3MTMmcA6U5zikBZyTcx02eT/7UjejMi6xNmfwsUAH6h1xt1lGs82OOAzSdHglx8oj+WU0dOT7qOY88XqhNKGYZawZFbAfACEILuWUcpbLPUAqMbi/uxz871a/pJZRHUFQw+QT+Sl/a1N1gx2CJiWANN17RaHEbAwgs7oUGZvW+r6IVxTHuLZ9trj06PX53F6WgpkKJAzVC0phHzW3rMLrFIH4Cg3eiRZPVa1FpdJL4RtOgntEVylTc2ye5aGrqk8AZgh7USrpmgv5MUaVaI7zVg1CMvsZbAMVM6U32Or9srTWTZv9swxanEUHHM9kGn+hAQfStuW1WUjVYKDIXpRhLF1YubanR4zZJStSwr08xrXEuC/LP5ybL76hNPy3j4soQywlH2ODnEFxgERX2OaeLg6ooP0Z6GJNwlWRomi80/lFMfc8FwqqvXsR66bGBSZW8dvaO1QbboELvcAf32A/dJqyIpPaxCoLs7np2jke6LUgtOSSfZpZvd0RMMAVsk9F79beFcJCQW77ZxRWyyzAliEU9MMB+MV+Cx9i1zdHQrPSanoGfXrjHkZElZCf5sNIpTCGawyxphJEVEP2LS9SjSvJ5/uGvjkgXEqinOIVjwVwvGY8obw927Tc8SYAnZkOHAWib0hsqUvmW5XBEAhgPG6sE01drRysjAxIvVPUN+bWdQHhjaf14PUgHEixoa3012ifHYVnSapeGffKxvQaIQOptoKMmhRBW0hweDG8EO/6jxtyqEtOujGNSVt72W2fepdDXQ7ox2/Pjtq636qbdWIK6DQkVq21T4O8d1Ckk5dKT9OohuiEVRQIsomH511g72UZMRuGv+puiqVNu7VxbsRm+oI489LuiM1Hl6bkfpAZr8m5sydfZleNQtOAq7iwylUyLAjDaDKKNQerNbBIBnORZOrTsg7YTJFM45Ykfc724foGoqcMyYT4RTGzA9yQsHKtsIVJn424YSr4woL/+V0Orq5t3yMmGKe7ytCMMJdLxJix/+tt2UsD5LSxZkVVc06cgtN1AzF2bVmtjUK16J0RtigWgNyNCIgUREbDodtp+8pdsBPuDqxqxAJcs0UmHGjPtK0YpvBlnx70/yl7XFRKPMRqXywb6m2maVypenOevwRFZzXnRLwRZBDKuLi4z5eleqFU05It17xHgR/dLNtmulsvaXmhfJvj2Wfg4Rw0Z3qjCpIz3SxfLXdqjs/0Q9y/E/fgnbh40QIqRn9oxHDeRprxEP8m1K0+U7pSboVdYOWiCDPcYIoy8+7iExpB+G8h3dIElPLwG2qUnwur/lOVM8oxQSy89M5PhrGeqwg78wqdIEnWs3fSXsXEwhLE6c4O6JyQV28ZHUm8PUu9tGrRv0NTXUxEob0RtlYeJG/I5pzOivWFn79lNpL6FTsOaBLido2X8rtlYKUcK+x3gRqUdH/IXVe34y9B7nCSO7T4xgJUCOCWtrRaiyls5qa4BNv50aVwt0W9v/QOYnN7ZJJXErUbxj2ZwuKNTquxLdQjrLHBBh0actDFQFGdsd97B4G2ZIUy9S4cbHCsLJRCZio+Wk/QrYAM2YNqM6sdiFIHXk8wdb5iSZ+40q90XVbH16Hd/3skPgMqXq/JmiEBCTXTjWuDfB1T6rAX9Hjr8pYmwvWCILOs8WxfYFH2sVdb9iwZCI7iD8RSU5SHSoFr5wUZzne+2TznV82b3nIkOu5QfJjec+kfkSE0iGkbCFXMjjHawslc7XNH3pr1wc6vFlCQWkudWcVL76ha0l1/L9MkA6jiao02xbQFbIJrhLIOfv/ui3IrCWgVL6oAPaDsn8w1ve3vBE5s0hBUcs7hzhN1IH72+Y53jGkgQy4o+gnmPkWaASAR84lWPU+jyxsCVEMdhfx3QYuENV1vaVUtcAgKYk1EWCdagGL4cUwlccVG77nfmSUY/6kA5sRDpYQM+l3keh1/CeB/3LthBvrx8hZq6UYd1skr29aSUGkydpGFnPEEEX+u2wyvfdUig87mzQVmW/LyBfJry6TY7WhlN5hvXplP5ZztjKz2znY/Dlac6hM73rDDaRxCOkzkbqc2fPvcW/fIqFJhanuzPrlIaph42lq2wp1eyRDmbeDIfzx51Bp7hxD7PNYykE7+3hGD3bR8DHu1d/nQX5fr6rM3aH3cwywXnlwL4e4qFTTEuMI5MmYnWcV50wNhIeoiPVXXRyezv6yMy3vZqb2WKObZemmiwHq8/DHmjJJkYt/SSu5drPZJxx1t7M88xajhwGj3px3t+q/M+obde+zSZTblxzu8ix3A4beB/v03eZZs/GJ1K9hFSy8J/SXEzjsKU6D6svVTdD1Ipx+Brm+CUvOCGGCYAgC3TWNI/T/tUF4jrB12CZb/WlqVIUHJgtWqs3woJjB6G9GP0OIN2JBAJPMd/zXTq7DNEwyrnGJcEKlcgjvY/EaSkklUu8T9UCS0mQ/1EGKub5omIKgA48h611n8v6KE5vwOLtdrmTFOPSMwA6dtFLJw1qD68+2N5AiOxkgIUb+pYorg2s7yiSDQgxPZFKY7ERehlvX43mQRgkp7Bu9r5NTD84O9Di2bdB4ortiCyNy0mgr2Zc5m06NJtih6ugiH2/6ubK8qRFeRL/jVwNK3PUOpfop/VOrI698vyXu4qTQrW7YjOOGqAbkJ+KZGEJboViiYa6N5GpDcAAhlLNhOGU10m98AqvHSnJfykTOO5c88Nv7I2Wv2CeJRedtW6G1f4DIwDQNhutawqli3ooHgOhehN+lypCLx4vSoO/WMqCfeELd3xbTahDyYbe/CvDFANX6HBc4AOLusG10NLydHmUIMCBGEqBZ1C43F5NiJyF9G0oIPTAPAwzAlCWV9PwhyEOj9Ah5jpHVCCQw/Mu4RPCZ7nCgjmAPBPek0Ne70+SmOfoH//kivO/q3wjDN8ujMialDYvCEcsSR4JQYhv3vR4PzK3yeQIvARMgZufC63BfYXlN0LehiELbDAtv/pSKTIxFEuvbLt59AadOwEO5xESPW14LeQmXbutDss748d7rJuqer1YpXGUcA9o0hR2qgMVhlHotfqR2H8/j3k+5+gUx9VN7+S2Za37H54YWiFh1WLKTFcW+0kh9RZ1xFmLbw4GOoMvISQzR8bHxe9SCaGSm/skou1axF0VKj6ArExMq57EN+K/h6AWV88UFi0cCJa+G/U0k/PaH0LJNymAsPLIdoX6f3RxHYP+SK0sm/+J0wmkpUDECAK14cMqsOKjv6toB2tPzW1jcJx0OiXsdqUPDnRwLYwCspiUiX1Sc+ZsogGcixaHweikTRW4A5jY++NCWpBsfFr/tGoXUHZ9U8sIIIAHAIMdjAJQHYmcDvQdOjRVWWM5BwJHI7pSRastYwfYCbafjsvpwPyN1RvJf6/N6pBwJNAnG7bdJVIAbDt
Übung
Fibonacci berechnen
Stellen Sie Ihre Lösung zur Berechnung der Fibonacci Zahl (siehe vorherige Übung) so um, dass die Berechnung eine rekursive Methode verwendet.
Die rekursive Methode soll kein if
verwenden (aber ggf. ein switch
Ausdruck ).
Vergleichen Sie die beiden Lösungen insbesondere für die Berechnung von größeren Fibonacci Zahlen (30, 40, 50, ...).
MTAwMDAw:xhav7xTfRxUWDtOm0VmNXD7VWOeKNeMjlxBy8yzf2ec=:HW8tRRRA9ZieP0bU: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
Von Codekonventionen und Lesbarkeit
Lesbarer Java-Code
Halten Sie sich an die Java-Konventionen .
(Die Konventionen haben sich - aus guten Gründen - seit Jahrzehnten nicht geändert.)
Formatieren Sie Ihren Code konsistent; d. h. stellen Sie konsistente Einrückungen sicher!
Verwenden Sie inhaltsorientierte, sprechende Namen für Variablen, Konstanten, Methoden etc.
Einrückungen und Blöcke
Rücken Sie zusammenhängende Blöcke um die gleiche Anzahl von Leerzeichen ein.
Gängig ist ein Vielfaches von 2 oder 4 Leerzeichen.
Verwenden Sie keine Tabulatoren (\\t ) für Einrückungen.
Beginnt ein neuer Block innerhalb eines äußeren Blockes, so werden die zugehörigen Anweisungen tiefer eingerückt als der äußere Block.
Pro Zeile sollte nur ein Block oder eine Anweisung stehen.
Einrückungen und Blöcke - Beispiele
Falsche Einrückung
int ggtNaiv ( int z1 , int z2 ){
int min = ( z1 > z2 ) ? z2 : z1 ; println ( "current min=" + min );
for ( int ggt = min ; ggt > 1 ; -- ggt ){
if ( z1 % ggt == 0 && z2 % ggt == 0 )
return ggt ;
}
return 1 ;
}
}
Korrekte Einrückung
int ggtNaiv ( int z1 , int z2 ) {
int min = ( z1 > z2 ) ? z2 : z1 ;
println ( "current min=" + min );
for ( int ggt = min ; ggt > 1 ; -- ggt ) {
if ( z1 % ggt == 0 && z2 % ggt == 0 )
return ggt ;
}
return 1 ;
}
Klammern
Verwenden Sie Klammern um Blöcke, auch wenn sie nur eine Anweisung enthalten.
(Insbesondere bei verschachtelten Blöcken bzw. If
-Anweisungen ist dies wichtig.)
Bei bedingten Anweisungen und Schleifen steht die öffnende geschweifte Klammer am Ende der 1. Zeile. Die schließende geschweifte Klammer steht in einer eigenen Zeile am Ende. Sie hat die gleiche Einrückung wie die Anweisung.
Zeilenlängen
Warnung
Zeilen, mit mehr als 80 bis 100 Zeichen erfordern beim Lesen häufig horizontales Scrollen und sind unter allen Umständen zu vermeiden!
Konfigurieren Sie Ihren Editor so, dass Sie unmittelbar sehen, wenn eine Zeile zu lang wird.
Methoden und Kommentare
Woher könnte die Anforderung n < 13
für die Fakultät kommen?
Team und Projektspezifische Konventionen
Übung
Überprüfen Sie den von Ihnen geschrieben Code auf korrekte Formatierung.
Installieren Sie für VS Code das Java Extension Pack (falls noch nicht geschehen) und verwenden Sie den eingebauten Code Formatter über die entsprechende Tastenkombination.
(Auf Mac mit Standardeinstellungen zum Beispiel: Shift + Alt + F .)
Schreiben Sie für die Methoden passende Kommentare im Javadoc-Stil.
Am Ende diskutieren wir Ihren Code/Ihre Kommentare.
Von Codekonventionen und Lesbarkeit - Zusammenfassung
Auf dem Weg zu einem professionellen Programmierer (egal welcher Sprache) ist es wichtig, neben den Sprachkonstrukten auch die geltenden Konventionen zu erlernen und einzuhalten. Diese sind je nach Sprache meist leicht unterschiedlich, aber in der Regel sehr ähnlich.
Das Einhalten fördert die Zusammenarbeit mit anderen Programmieren - insbesondere auch Ihrem zukünftigen Ich - und erhöht die Lesbarkeit des Codes.
Übung
Tage seit Geburt berechnen
Schreiben Sie ein Programm, dass berechnet wie viele Tage ein Mensch bereits auf der Welt ist. Als Eingaben sollen das Geburtsdatum und das aktuelle Datum eingegeben werden. D. h. Sie fragen erst den Tag, dann den Monat und dann das Jahr der Geburt ab. Anschließend fragen Sie den aktuellen Tag, Monat und das Jahr ab. Geben Sie dann die Anzahl der Tage aus.
Verwenden Sie Methoden für sinnvolle Teilaufgaben. (Z. B. Ist ein Jahr ein Schaltjahr, Tage eines Jahres. Tag im Jahr (siehe vorhergehende Übung)).
Anforderungen
Kommentieren Sie Ihre Methoden sinnvoll.
Testen Sie Ihren Code mit verschiedenen Eingaben.
Wenn Sie einen Fehler in der Eingabe finden, geben Sie eine Meldung aus und beenden Ihr Programm mit System . exit ( 1 )
.
MTAwMDAw:PDYfl+wRwSw0ZxQJPdbj++vgTkUaJD4oKbYJLqO1Uag=:oGXoZ6WD+aIIKrCF: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
Berechnung eines Schaltjahres:
Ein normales Jahr aus 365 Tagen. Da die Zeit, die die Erde benötigt, um sich einmal um die Sonne zu drehen jedoch 365,2425 Tage beträgt, wird alle vier Jahre ein „Schaltjahr“ von 366 Tagen verwendet, um den durch drei normale (aber kurze) Jahre verursachten Fehler zu beseitigen. Jedes Jahr, das gleichmäßig durch 4 teilbar ist somit ein Schaltjahr: 1988, 1992 und 1996 sind beispielsweise Schaltjahre.
Um den kleinen entstehenden Fehler zu korrigieren, ist ein Jahr, das durch 100 teilbar ist (z. B. 1900), nur dann ein Schaltjahr ist, wenn es auch durch 400 teilbar ist.
Assertions
Java Assertions
Assertions sind eine Möglichkeit, um sicherzustellen, dass bestimmte Bedingungen erfüllt sind.
Syntax:
assert < Bedingung > ;
bzw.
Syntax:
assert < Bedingung > : < Ausdruck > ;
Die Bedingung muss ein boolescher Ausdruck sein. Der Ausdruck ist optional und wird nur ausgewertet, wenn die Bedingung falsch ist. Normalerweise wird der Ausdruck verwendet, um eine Fehlermeldung zu erzeugen.
Beispiel: Funktion mit Assertion
int ggt ( int z1 , int z2 ) {
assert z1 >= 0 && z2 >= 0 : "z1 und z2 müssen >= 0 sein" ;
if ( z2 == 0 )
return z1 ;
else
return ggt ( z2 , z1 % z2 );
}
ggt ( - 2 , 4 )
Assertions sind gut geeignet zur Überprüfung von:
Warnung
Die Auswertung der Bedingung sollte keine Seiteneffekte haben, da diese nur bei aktivierten Assertions überhaupt ausgeführt wird und dies auch die Erwartungen anderer Programmierer verletzen würde .
Beispiel: Assertion mit Seiteneffekt
int ggt ( int z1 , int z2 ) {
assert ( z1 = Math . abs ( z1 )) >= 0 && ( z2 = Math . abs ( z2 )) >= 0 ;
if ( z2 == 0 ) return z1 ;
else return ggt ( z2 , z1 % z2 );
}
Hinweis
Java Assertions sollten nur für Bedingungen verwendet werden, die niemals falsch sein dürfen.
Assertions dienen der Identifikation von Programmierfehlern und sollten nicht für Bedingungen verwendet werden, die auf zu erwartende Fehler zurückzuführen sind. (Z. B. falsche Nutzereingaben oder Netzwerkfehler etc.)
Assertions werden in Java nur bei expliziter Aktivierung überprüft .
Um im Code zu prüfen, ob Assertions aktiviert sind, kann folgender (auf einem Seiteneffekt basierender) Code verwendet werden:
var assertionsEnabled = false ;
assert ( assertionsEnabled = true );
if ( assertionsEnabled ) { ... }
Um Assertions zu aktivieren, müssen Sie den Kommandozeilenparameter - ea
oder - enableassertions
verwenden. Bzw. bei der JShell - R - ea
.
Zum Beispiel können Sie die JShell wie folgt starten:
jshell --enable-preview -R -ea
Die Tatsache, dass Assertions nur bei expliziter Aktivierung überprüft werden, ist einer der größten Kritikpunkte an Java Assertions.
Übung
Assertions
Erweitern Sie Ihre Methode zur Berechnung der Fakultät um Assertions, die sicherstellen, dass die Eingabe nicht negativ und nicht größer als 20 ist.
MTAwMDAw:TIZZgZyuONL2DacIQ4MDtzOu0DNRL2atY384Xwxsx28=:FepgswlhgSE3rCVk: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