Informatik am Johanneum/Java: Unterschied zwischen den Versionen
11jojo (Diskussion | Beiträge) (Reihungen beendet) |
14jojo (Diskussion | Beiträge) (Eigenen Namen eingetragen) |
||
(13 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 7: | Zeile 7: | ||
!offene Aufgabe!!Verantwortlicher | !offene Aufgabe!!Verantwortlicher | ||
|- | |- | ||
|Klassen in Eclipse anlegen||Erik | |Klassen in Eclipse anlegen||Erik, Joshi | ||
|- | |- | ||
|Variablentypen | |Variablentypen | ||
Zeile 13: | Zeile 13: | ||
|- | |- | ||
|eigene Methoden schreiben, Syntax der Signatur, return Statement | |eigene Methoden schreiben, Syntax der Signatur, return Statement | ||
| | |Max | ||
|- | |- | ||
|typische Fehlermeldungen, IndexOutOfBoundsExcecption | |typische Fehlermeldungen, IndexOutOfBoundsExcecption | ||
Zeile 111: | Zeile 111: | ||
<br /> | <br /> | ||
===Erstellen eigener Methoden=== | |||
=====Vor dem Erstellen===== | |||
Um eine Methode zu erstellen, muss man sich erst einmal Gedanken über folgende Punkte machen: | |||
#Soll die Methode auch aus anderen Klassen aus erreichbar sein? | |||
#Sollen der Methode Argumente übergeben werden? | |||
#Soll die Methode einen Wert zurückliefern? | |||
=====Punkt 1: Erreichbarkeit aus anderen Klassen===== | |||
Eine Methode, die nur aus der Klasse erreichbar sein soll, in welcher sie steht, ist "private". Eine Methode, die auch aus anderen Klassen aus erreichbar sein soll, ist "public". | |||
=====Punkt 2: Argumente===== | |||
Wenn der Methode Argumente überliefert werden sollen, legt man sie zwischen den Klammern beim Definieren der Methode mit Komma getrennt fest mit "<Variablentyp> <Variablenname>". Beim Aufrufen der Funktion müssen in Klammen dann auch die geforderten Werte übergeben werden. Wenn der Funktion keine Argumente übergeben werden müssen, lässt man sowohl beim Definieren als auch beim Aufrufen der Funktion den Raum zwischen den Klammern leer. | |||
=====Punkt 3: Das return-Statement===== | |||
Wenn die Methode nichts zurückgeben soll, nutzt man den Methoden-Typ "void". Soll sie einen Wert zurückliefern, nutzt man den jeweiligen Variablen-Typ als Methoden-Typ. Um dann einen Wert zurückzuliefern, wird "return <Wert>" verwendet. Dabei wird die Methode abgebrochen. Es können mehrere return-Statements in einer Methode stehen. | |||
=====Syntax===== | |||
Sobald man weiß, was die Methode machen soll, kann man sie dann erstellen. Dafür nutzt man folgende Syntax: | |||
<public/private> <Typ> <Name>(<Argument1, Argument2, ...){ | |||
<nowiki><Code></nowiki> | |||
} | |||
=====Beispiele===== | |||
======Beispiel 1====== | |||
Diese Methode kann nur aus der Klasse aufgerufen werden, in welcher sie sich befindet. Sie liefert keinen Wert zurück, aber benötigt einen String, weshalb man beim Aufrufen einen String übergeben muss. | |||
private void ausgabe(String str) { | |||
System.out.println(str); | |||
} | |||
ausgabe("Hello world!"); | |||
======Beispiel 2====== | |||
Diese Methode gibt einen Integer zurück und benötigt zwei Integer, um sie aufzurufen. Sie kann aus jeder Klasse aufgerufen werden. | |||
public int addiere(int zahl1, int zahl2) { | |||
return (zahl1 + zahl2); | |||
} | |||
int summe = addiere(5, 4); | |||
===Arithmetische Operatoren=== | ===Arithmetische Operatoren=== | ||
=====Grundlagen===== | =====Grundlagen===== | ||
Zeile 289: | Zeile 333: | ||
} while(o == 2); | } while(o == 2); | ||
Diese Schleife wird einmal ausgeführt, danach nicht mehr, da die Bedingung nicht erfüllt wird. | Diese Schleife wird einmal ausgeführt, danach nicht mehr, da die Bedingung nicht erfüllt wird. | ||
<br /> | |||
===Reihungen=== | ===Reihungen=== | ||
<br>'''Definition'''<p> | <br>'''Definition'''<p> | ||
Eine Reihung besteht aus einer Anzahl von Werten gleichen Datentyps. Sie alle werden unter einem Namen geführt und unterscheiden sich nur in den Feldnummern, welche die Position in der Reihung bestimmt. | Eine Reihung besteht aus einer Anzahl von Werten des gleichen Datentyps. Sie alle werden unter einem Namen geführt und unterscheiden sich nur in den Feldnummern, welche die Position in der Reihung bestimmt.<p> | ||
<p> | <p> | ||
'''Arten von Reihungen''' | '''Arten von Reihungen'''<p> | ||
Es gibt verschiedene Arten von Reihungen. Diese unterscheiden sich in dem Datentyp der Variablen, die in ihnen gespeichert sind. | |||
*<p> int[] a; Reihung aus ganzen Zahlen | |||
*<p> char[] b; Reihungen aus Zeichen | |||
*<p> boolean[] c; Reihung aus Wahrheitswerten | |||
*<p> int[][] d; Mehrdimensionale Reihung, dabei ist in jedem Element ein eigenes Array enthalten. Jede Dimension wird durch ein paar eckige Klammern dargestellt.<p> <p>'''Deklaration von Reihungen''' | |||
<p> | <p> | ||
Reihungen werden grundsätzlich mit dem Operator <b> new </b>deklariert. | |||
<p> | <p> | ||
''Beispiel:''<syntaxhighlight lang="java"> | |||
int[] a = new int[5] | |||
oder | |||
int[] b; | |||
a = new int[5] | |||
''Beispiel''<syntaxhighlight lang="java"> | |||
int[] a = new int[ | |||
</syntaxhighlight><p> | </syntaxhighlight><p> | ||
In | In diesen Beispielen erzeugen wir zwei Reihungen mit je 5 Elementen, welche jedoch noch keine Werte enthalten. | ||
<P> | <P><p> | ||
Möchte man | '''Initialisierung von Reihungen'''<p> | ||
Bei der Initialisierung werden die im vorigen Kapitel erstellten Reihungen mit Werten gefüllt. Dafür gibt es verschiedene Möglichkeiten:<br /> | |||
'' | |||
int[] | #Möchte man eine Reihung mit bereits bekannten Werten initialisieren, fällt der Operator <b> new </b> weg. Die eckigen Klammern werden durch geschwungene ersetzt innerhalb welcher alle Werte, durch ein Komma getrennt, eingetragen werden. Hier wird die Reihung also gleichzeitig '''deklariert''' und '''initialisiert'''. Beispiel:<syntaxhighlight lang="java"> | ||
</syntaxhighlight> | int[] a = {1,2,3,4,5} | ||
In diesem Beispiel erzeugen wir eine Reihungen mit einer Länge von 5 Elementen mit den Werten 1, 2, 3, 4 und 5.'''Auslesen von | </syntaxhighlight>In diesem Beispiel erzeugen wir eine Reihungen mit einer Länge von 5 Elementen mit den Werten 1, 2, 3, 4 und 5. <br /> | ||
#Man kann eine Reihung auch initialisieren, indem man die Positionen einzeln mit Werten befüllt. Beispiel:<syntaxhighlight lang="java"> | |||
b[0] = 1; | |||
b[1] = 2; | |||
b[2] = 3; | |||
b[3] = 4; | |||
b[4] = 5; | |||
</syntaxhighlight>Hier werden die verschiedenen Positionen der Reihung einzeln mit Werten gefüllt. '''Achtung:''' Dabei wird die Position bei 0 beginnend gezählt. Also befindet sich die erste Zahl in der Reihung auf Position 0, die zweite Zahl in der Reihung auf Position 2 und so weiter | |||
'''Auslesen von Reihungen''' | |||
Um Werte aus einer Reihung auszulesen, muss man den Namen der Reihung, sowie die | Um Werte aus einer Reihung auszulesen, muss man den Namen der Reihung, sowie die Position des Elements in der Reihung auswählen. | ||
''Beispiel''<syntaxhighlight lang="java"> | ''Beispiel:''<syntaxhighlight lang="java"> | ||
int[] a = {1,2,3,4,5} | int[] a = {1,2,3,4,5} | ||
Dann gilt: | Dann gilt: | ||
a[3] = 4 | a[3] = 4 | ||
</syntaxhighlight> | </syntaxhighlight> |
Aktuelle Version vom 18. Januar 2021, 17:36 Uhr
Offene Aufgaben
Bitte tragt in die Tabellen ein, welches Thema ihr bearbeiten wollt. Erst wenn ihr euch in der Tabelle für ein Thema eingetragen habt, könnt ihr mit der Bearbeitung beginnen. Ihr könnt Themen auch zu zweit erstellen.
offene Aufgabe | Verantwortlicher |
---|---|
Klassen in Eclipse anlegen | Erik, Joshi |
Variablentypen | Vinzent/J-P |
eigene Methoden schreiben, Syntax der Signatur, return Statement | Max |
typische Fehlermeldungen, IndexOutOfBoundsExcecption | |
Arithmetische Operatoren | Niklas |
Verzweigungen | Finn, Nikita |
Schleifen (For-Schleife, While Schleife) | Vinzent/J-P |
Reihungen (Initialisierung, ...) | Arian, Dharam |
Tipps zur Erstellung eines Eintrags:
- jedes Thema hat eine Überschrift von Typ Unterüberschrift1
- Verwende danach für die einzelnen Teilthemen Unterüberschrift2 oder weitere Unterüberschriften. So erscheinen diese Felder im Inhaltsverzeichnis.
- Quellcode kann eingefügt werden, indem die Zeile im Modus Quelltextbearbeitung mit einem Leerzeichen begonnen wird.
public void quellcodeSchreiben(){ // dies ist ein Beispiel, wie Quellcode dargestellt werden kann. // wechsele dazu in den Modus Quelltextbearbeitung (oben rechts bei dem Stft) // beginne dann jede Quelltextzeile mit einem Leerzeichen. }
Klassen in Eclipse anlegen
Variablentypen
In Java gibt es verschiedene Typen von Variablen. Einige davon werden im Folgenden erläutert.
Syntax einer Variable:
Erste Erstellung: Typ + Name = Wert -> Beispiel: int number = 3 / boolean correct = false
Spätere Bearbeitung: Name = Wert -> Beispiel: number = 1 / correct = true
Abfrage (z.B. in IF/ELSE Anfragen oder WHILE-Schleifen): Name == Wert -> number == 1 / correct == true
Ganzzahl-Typen:
integer (int): alle Zahlen zwischen -2147483648 und 2147483647.
long: alle Zahlen zwischen -9223372036854775808 und 9223372036854775807.
Kommazahl-Typen:
double: Zahlen mit Kommastellen, aber auch ohne. Double wird verwendet, da die Ganzzahl-Typen keine Kommastellen speichern können.
Boolean:
boolean: kann zwei Werte annehmen, entweder true oder false, also wahr oder falsch.
Char
char: kann den Wert eines Unicodezeichens annehmen, also beispielsweise einen Buchstaben oder eine Zahl von 0-9.
Syntax
char i = 'J'
String
String: kann die Werte einer Zeichenkette annehmen
ACHTUNG: Der Typ String muss in Java mit einem großen 'S' geschrieben werden.
Syntax
String java = "Hello World!"
Array
array[]: eine Reihung von Zahlen: man kann jeder Stelle eines Arrays eine bestimmte Zahl zuweisen.
Syntax
Erstellen eines Arrays mit der Länge u
int[] example = new int[u]
Erstellen eines Arrays mit bestimmten vorgegebenen Werten
int example[] = {0, 3, 5, 10, 20, 25}
Die Ausgaben kann folgendermaßen aussehen
example[3] == 10;
example[4] == 20;
Zuweisung eines Wertes für eine Arraystelle:
example[1] = 4;
Die abgeänderte Reihung besitzt nun folgende Werte: {0, 4, 5, 10, 20, 25}
Erstellen eigener Methoden
Vor dem Erstellen
Um eine Methode zu erstellen, muss man sich erst einmal Gedanken über folgende Punkte machen:
- Soll die Methode auch aus anderen Klassen aus erreichbar sein?
- Sollen der Methode Argumente übergeben werden?
- Soll die Methode einen Wert zurückliefern?
Punkt 1: Erreichbarkeit aus anderen Klassen
Eine Methode, die nur aus der Klasse erreichbar sein soll, in welcher sie steht, ist "private". Eine Methode, die auch aus anderen Klassen aus erreichbar sein soll, ist "public".
Punkt 2: Argumente
Wenn der Methode Argumente überliefert werden sollen, legt man sie zwischen den Klammern beim Definieren der Methode mit Komma getrennt fest mit "<Variablentyp> <Variablenname>". Beim Aufrufen der Funktion müssen in Klammen dann auch die geforderten Werte übergeben werden. Wenn der Funktion keine Argumente übergeben werden müssen, lässt man sowohl beim Definieren als auch beim Aufrufen der Funktion den Raum zwischen den Klammern leer.
Punkt 3: Das return-Statement
Wenn die Methode nichts zurückgeben soll, nutzt man den Methoden-Typ "void". Soll sie einen Wert zurückliefern, nutzt man den jeweiligen Variablen-Typ als Methoden-Typ. Um dann einen Wert zurückzuliefern, wird "return <Wert>" verwendet. Dabei wird die Methode abgebrochen. Es können mehrere return-Statements in einer Methode stehen.
Syntax
Sobald man weiß, was die Methode machen soll, kann man sie dann erstellen. Dafür nutzt man folgende Syntax:
<public/private> <Typ> <Name>(<Argument1, Argument2, ...){ <Code> }
Beispiele
Beispiel 1
Diese Methode kann nur aus der Klasse aufgerufen werden, in welcher sie sich befindet. Sie liefert keinen Wert zurück, aber benötigt einen String, weshalb man beim Aufrufen einen String übergeben muss.
private void ausgabe(String str) { System.out.println(str); }
ausgabe("Hello world!");
Beispiel 2
Diese Methode gibt einen Integer zurück und benötigt zwei Integer, um sie aufzurufen. Sie kann aus jeder Klasse aufgerufen werden.
public int addiere(int zahl1, int zahl2) { return (zahl1 + zahl2); }
int summe = addiere(5, 4);
Arithmetische Operatoren
Grundlagen
In der Programmiersprache Java sind arithmetische Operatoren implementiert. Dabei müssen immer numerische Operanten (int, long, float, double) verwendet werden.
Operatoren
Addition
Der Operator der Addition (a+b) addiert einen numerischen Operanden mit einem weiteren numerischen Operanden.
public class Addition {
public static void main(String[] args) { int a = 7; int b = 3; ergebnis = a + b; System.out.print(ergebnis); }
}
Ausgabe = 10
Subtraktion
Der Operator der Subtraktion (a-b) subtrahiert einen numerischen Operanden von einem anderen numerischen Operator.
public class Subtraktion {
public static void main(String[] args) { int a = 7; int b = 3; ergebnis = a - b; System.out.print(ergebnis); }
}
Ausgabe = 4
Multiplikation
Der Operator der Multiplikation (a*b) multipliziert einen numerischen Operanden mit einem anderen numerischen Operanden.
public class Multiplikation {
public static void main(String[] args) { int a = 7; int b = 3; ergebnis = a * b; System.out.print(ergebnis); }
}
Ausgabe = 21
Division
Der Operator der Division (a/b) dividiert einen numerischen Operanden durch einen anderen numerischen Operanden. Division zweier numerischer Operanden gleichen Typs: In diesem Fall sind die beiden numerischen Operanden ganzzahlig, daher ist auch das Ergebnis ganzzahlig:
public class Division {
public static void main(String[] args) { int a = 7; int b = 3; ergebnis = a / b; System.out.print(ergebnis); }
}
Ausgabe = 2
Division zweier numerischer Operanden unterschiedlichen Typs Es ist möglich numerische Operanden unterschiedlichen Typs zu dividieren. Ist einer der numerischen Operanden als Gleitkommazahl definiert, so ist auch das Ergebnis eine Gleitkommazahl:
public class Division {
public static void main(String[] args) { int a = 7; float b = 3;
errgebnis = a / b; System.out.print(ergebnis); }
}
Ausgabe: 2.3333333
Division mit Rest
Bei der Division mit Rest (modulo) dividiert einen numerischen Operanden durch einen zweiten numerischen Operanden (a%b). Dabei wird der ganzzahlige Rest als Ergebnis ausgegeben:
public class Modulodivision {
public static void main(String[] args) { int a = 7; int b = 3; ergebnis = a % b; System.out.print(ergebnis); }
}
Ausgabe = 1
Verzweigungen
Einführung
Verzweigungen gehören zu den Kontrollstrukturen Javas, die einen flexiblen und ereignisgesteuerten Ablauf eines Programmes ermöglichen. Für die Verzweigungen braucht man festgelegte Bedingungen. Beim Durchlauf des Programmes wird dann an den Verzweigungen überprüft, ob die Bedingung erfüllt wird oder nicht. Je nachdem welcher Fall zutrifft, wird ein bestimmter Bereich des Programmes ausgeführt. Im Folgenden unterscheiden wir in drei Verzweigungen: if-Anweisung, if-else-Anweisung und else-if-Anweisung.
if-Anweisung
Bei der if-Anweisung wird als erstes überprüft, ob die gestellte Bedingung erfüllt wird oder nicht. Wird die Bedingung erfüllt, werden die danach folgenden Anweisungen ausgeführt. Wird die Bedingung nicht erfüllt, werden die danach folgenden Anweisungen übersprungen. In Java sieht die if-Anweisung so aus:
if (Bedingung){ Anweisung; }
if-else-Anweisung
Die if-else-Anweisung ist im Prinzip nur eine Erweiterung der if-Anweisung, bei der festgelegt wird, welche Anweisungen ausgeführt werden sollen, wenn die Bedingung nicht erfüllt wird. Man hat also zwei mögliche Fälle. In Java sieht die if-else-Anweisung so aus:
if (Bedingung) { Anweisung1; } else { Anweisung2; }
else-if-Anweisung
Wenn man eine Verzweigung in drei verschiedene Programmbereiche braucht, kann man die else-if-Anweisung verwenden. Bei derelse-if-Anweisung wird erstmal überprüft, ob die erste Bedingung zutrifft. Wenn diese Bedingung zutrifft, wird der erste Programmbereich durchlaufen. Wenn diese Bedingung nicht zutrifft, wird zur nächsten Prüfung einer Bedingung gesprungen. Wenn diese zweite Bedingung zutrifft, dann werden die dazugehörigen Anweisungen ausgeführt. Wenn diese zweite Bedingung nicht zutrifft, dann wird zum letzten Teil der else-if-Anweisung gesprungen und der letzte Programmbereich ausgeführt. In Java sieht die else-if-Anweisung so aus:
if (Bedingung1) { Anweisung1; } else if (Bedingung2) { Anweisung2; } else { Anweisung3; }
Schleifen
FOR-Schleife
Die sogenannte FOR-Scheife wird verwendet, wenn man die benötigten Schleifendurchläufe bereits im Voraus kennt. Man benötigt die folgenden drei Parameter: Initialisierung/Startwert, Zielwert und Schrittweite
Syntax
for(Startwert; Zielwert; Schrittweite)
Beispiel
for(int i = 1; i < 3; i++) { gehe 10 Schritte; }
Mit dieser Schleife wird bei i == 1 10 Schritte gegangen und bei i == 2 ebenfalls, bei i == 3 nicht mehr, da der Zielwert erreicht ist.
WHILE-Schleife
Die sogenannte WHILE-Schleife wird solange ausgeführt, bis eine bestimmte Bedingung nicht erfüllt ist. Diese Bedingung steht am Anfang der Schleife. Sofern die Bedingung anfangs nicht erfüllt wird, wird die Schleife übersprungen.
Syntax
while(Bedingung) { Anweisung; }
Beispiel
boolean correct = true; while(correct) { gehe 10 Schritte; correct = false; }
Die Schleife wird einmal ausgeführt, da die Bedingung anfangs korrekt und danach nicht mehr korrekt ist.
DO-WHILE-Schleife
Die sogenannte DO-WHILE-Schleife ist eine WHILE-SCHLEIFE mit dem Unterschied, dass die Anweisung mindestens einmal ausgeführt wird, hierbei ist es anfangs egal, ob die Bedingung erfüllt ist oder nicht.
Syntax
do { Anweisung; } while(Bedingung);
Beispiel
int o = 1; do { gehe 10 Schritte; } while(o == 2);
Diese Schleife wird einmal ausgeführt, danach nicht mehr, da die Bedingung nicht erfüllt wird.
Reihungen
Definition
Eine Reihung besteht aus einer Anzahl von Werten des gleichen Datentyps. Sie alle werden unter einem Namen geführt und unterscheiden sich nur in den Feldnummern, welche die Position in der Reihung bestimmt.
Arten von Reihungen
Es gibt verschiedene Arten von Reihungen. Diese unterscheiden sich in dem Datentyp der Variablen, die in ihnen gespeichert sind.
int[] a; Reihung aus ganzen Zahlen
char[] b; Reihungen aus Zeichen
boolean[] c; Reihung aus Wahrheitswerten
int[][] d; Mehrdimensionale Reihung, dabei ist in jedem Element ein eigenes Array enthalten. Jede Dimension wird durch ein paar eckige Klammern dargestellt.
Deklaration von Reihungen
Reihungen werden grundsätzlich mit dem Operator new deklariert.
Beispiel:
int[] a = new int[5]
oder
int[] b;
a = new int[5]
In diesen Beispielen erzeugen wir zwei Reihungen mit je 5 Elementen, welche jedoch noch keine Werte enthalten.
Initialisierung von Reihungen
Bei der Initialisierung werden die im vorigen Kapitel erstellten Reihungen mit Werten gefüllt. Dafür gibt es verschiedene Möglichkeiten:
- Möchte man eine Reihung mit bereits bekannten Werten initialisieren, fällt der Operator new weg. Die eckigen Klammern werden durch geschwungene ersetzt innerhalb welcher alle Werte, durch ein Komma getrennt, eingetragen werden. Hier wird die Reihung also gleichzeitig deklariert und initialisiert. Beispiel:In diesem Beispiel erzeugen wir eine Reihungen mit einer Länge von 5 Elementen mit den Werten 1, 2, 3, 4 und 5.
int[] a = {1,2,3,4,5}
- Man kann eine Reihung auch initialisieren, indem man die Positionen einzeln mit Werten befüllt. Beispiel:Hier werden die verschiedenen Positionen der Reihung einzeln mit Werten gefüllt. Achtung: Dabei wird die Position bei 0 beginnend gezählt. Also befindet sich die erste Zahl in der Reihung auf Position 0, die zweite Zahl in der Reihung auf Position 2 und so weiter
b[0] = 1; b[1] = 2; b[2] = 3; b[3] = 4; b[4] = 5;
Auslesen von Reihungen Um Werte aus einer Reihung auszulesen, muss man den Namen der Reihung, sowie die Position des Elements in der Reihung auswählen. Beispiel:
int[] a = {1,2,3,4,5}
Dann gilt:
a[3] = 4