Informatik am Johanneum/Java: Unterschied zwischen den Versionen

Aus ZUM Projektwiki
Keine Bearbeitungszusammenfassung
KKeine Bearbeitungszusammenfassung
Zeile 331: Zeile 331:


'''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...
'''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 Werten'''
'''Auslesen von Werten'''

Version vom 16. Januar 2021, 15:16 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 Aufgaben
offene Aufgabe Verantwortlicher
Klassen in Eclipse anlegen Erik
Variablentypen Vinzent/J-P
eigene Methoden schreiben, Syntax der Signatur, return Statement
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}


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:

  1. 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:
    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.
  2. Man kann eine Reihung auch initialisieren, indem man die Positionen einzeln mit Werten befüllt. Beispiel:
    b[0] = 1;
    b[1] = 2;
    b[2] = 3;
    b[3] = 4;
    b[4] = 5;
    
    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 Werten 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