Navigation überspringen

Übungen zu Arrays

Arrays

Fragen

  1. Bei der Deklaration eines Arrays muss die Länge des Arrays angegeben werden. Wahr oder falsch?
  2. Welche der folgenden Codezeilen ist korrekt?
    • int Array = new int[ ];
    • int[20] intArray = new int[ ];
    • int[ ] intArray = new int[20];
  3. Ein Element eines Arrays kann einen negativen Index haben, z.B. int myInt = intArray[-2];    Wahr oder falsch?
  4. Gegeben ist folgener Array:
    int [] intArray = new int[] {45, 62, 78, 13, 95, 41, 10};
    Welcher Index muss angegeben werden, um das Element mit der Nummer 13 zu erhalten?

Aufgaben

1. Arrays erstellen
Erstelle je einen Array für

  • 5 ganze Zahlen
  • 3 Strings
  • 4 Kommazahlen
  • 3 boolesche Werte

Befülle anschließend die Arrays mit beliebigen Werten und gib einige Werte einzeln aus, d.h. für ein einzelnes Element eine Print-Anweisung. Probiere anschließend auch folgende Befehle (foo sei ein Array, aber kein String-Array):

println(foo);
print(foo);

2. Array-Elemente addieren
Erstelle einen int-Array namens foo mit den Zahlen 5, 45, -10, 20 (in dieser Reihenfolge). Addiere die ersten zwei Zahlen und lege das Ergebnis in einer neuen int-Variablen a ab. Addiere die letzten zwei Zahlen und lege das Ergebnis einer neuen int-Variablen b ab.

Printe a und b auf die Konsole und überprüfe die Werte.

3. Array-Elemente mulitplizieren
Erstelle einen int-Array namens bar mit den Zahlen 2, 4, 6 (in dieser Reihenfolge). Multipliziere die ersten zwei Zahlen und lege das Ergebnis in der dritten Zelle des Arrays ab. Du solltest also {2, 4, 8} in bar haben. Schreibe bar mit println() auf die Konsole, um dies zu prüfen.

Arrays mit Schleifen

Aufgaben

In den folgenden Aufgaben sollte immer eine For-Schleife zum Einsatz kommen.

1. Befüllen
Erstelle einen Array für 10 ganze Zahlen und befüllen Sie die Elemente mit 1, 2, ..., 10. Das Programm soll so allgemein geschrieben sein, dass du auch Arrays mit 20 oder 100 Elementen befüllen kannst.

Varianten: Befülle den Array mit

  • -10, -9, ..., -2, -1
  • 2, 4, 6, ..., 20
  • 100, 110, 120, ..., 190

2. Befüllen von zwei Arrays
Befülle zwei Arrays gleichzeitig in einer Schleife. Beide Arrays haben Länge 10. Das eine Array wird mit 1, 2, 3, ... befüllt, das zweite Array mit -10, -9, -8, ...

3. Summe
Berechne die Summe von allen Elementen des Array und gib diese auf der Konsole aus. Der Code sollte ohne weitere Änderungen funktionieren, wenn du Zahlen zu foo hinzufügst oder entfernst.

int[] foo = { 22, -10, 8, 10 };

// Hier Code schreiben

Du sollltest das hier auf der Konsole sehen:

30

4. Array filtern
Gegeben sei Array a. Drucke alle negativen Elemente untereinander auf der Konsole aus.

int[] a = { 1, -2, -25, 6, -3, 5 };

5. Mehrere Arrays addieren
Gegeben sind drei Arrays a, b und c. Verändere Array c dahingehend, dass im Element c[0] die Summe a[0] und b[0] steht und entsprechend für die Elemente 1, 2, 3, ...

int[] a = { 1, 2, 25, 6 };
int[] b = { 9, 18, 5, 34 };
int[] c = new int[4];

// Hier Code schreiben

println(c);

Du solltest das hier auf der Konsole sehen:

[0] 10
[1] 20
[2] 30
[3] 40

6. Arrays zusammenfügen
Gegeben sind zwei Arrays a und b. Erzeuge einen neuen Array c, der so lang ist wie a und b zusammengenommen und auch die Werte von a und b (in dieser Reihenfolge) enthält.

int[] a = { 1, 2, 25 };
int[] b = { 9, 18 };

// Hier Code schreiben

println(c);

Du solltest das hier auf der Konsole sehen:

[0] 1
[1] 2
[2] 25
[3] 9
[4] 18

Dein Code sollte auch funktionieren, wenn du bei a und/oder b Elemente hinzufügst oder entfernst.

7. Array rückwärts
Gegeben sei ein Array:

int[] foo = { 1, 2, 3, 4 };

Erstelle einen neuen Array bar, wo die Elemente in umgekehrter Reihenfolge abgelegt sind. Wenn du bar ausgibst, siehst du also:

[0] 4
[1] 3
[2] 2
[3] 1

Verwende nicht die Processing-Funktion reverse(). Wie immer soll dein Code auch für andere Arrays funktionieren.

8. Elemente verschieben
Gegeben sei ein Array:

int[] foo = { 10, 20, 30, 40, 50 };

Verschiebe alle Elemente ab Index 1 um eine Stelle nach rechts. Als Ergebnis sollte hinterher das folgende in foo stehen:

[0] 50
[1] 10
[2] 20
[3] 30
[4] 40

9. Nachbarn addieren
Gegeben sei ein Array mit einer geraden Anzahl von Elementen:

int[] foo = { 1, 2, 3, 4, 5, 6 };

Erstelle einen neuen Array bar, das halb so lang ist wie foo und wo jeweils zwei benachbarte Elemente von foo addiert wurden, also hier 1+2 und 3+4 und 5+6. Wenn du bar ausgibst, siehst du also:

[0] 3
[1] 7
[2] 11

Multidimensionale Arrays

Fragen

  1. Multidimensionale Arrays können in den einzelnen Dimensionen jeweils verschiedene Datentypen und Längen haben. Wahr oder falsch?
  2. Finde eine eigene Metapher und erkläre damit, wie man sich einen multidimensionalen Array vorstellen kann.
  3. Bei einem Array int[][][] myArray kann man mithilfe einer Schleife durch alle Elemente iterieren, indem man die Schleife so anlegt:
    for (int i = 0; i < myArray.length; i++) {}  
    Wahr oder falsch?

Aufgaben

1. Tic Tac Toe
Gegeben ist folgender Code:

String tictactoe [] [] = new String [3][3];

Befülle die Arrays mit Daten. Erweitere den Code so, damit das Programm in der Konsole folgendes ausgibt:

xox
oxo
xox

Schreibe eine Funktion, die das Spielfeld anaylisert und herausfindet, ob X oder O gewonnen hat. Sobald ein Sieger gefunden wurde (auch wenn noch nicht alle Felder überprüft wurden), soll die Suche abgebrochen und das Ergebnis in der Konsole ausgegeben werden.

2. Tabelle mit Studierenden
Gegeben ist folgender Code:

String studierende[] [] = new String [3][3];
int anzahlMing = 0;
int anzahlIni = 0;

Befülle die Arrays mit Daten. Im ersten Feld der zweiten Dimension des Arrays sollen Vornamen stehen, im zweiten Nachnamen und im dritten der Studiengang (Ming, INI, MMP, etc.).
Somit soll jede Zeile die Daten eines Studierenden enthalten. Lass dir die Daten zeilenweise ausgeben und füge ein Trennzeichen zwischen den Spalten ein (z.N. | oder ~).

Erweitere den Code so, damit das Programm in der Konsole (zum Beispiel) folgendes ausgibt:

Mara | Meier | Ming
Tom | Sawyer | INI
Luke | Skywalker | Ming

Anzahl der Studierenden: 3
Anzahl der Ming-Studierenden: 2
Anzahl der INI-Studierenden: 1

Hinweis: Auf diese Weise kannst du Daten aus deinem Programm formatieren und ausgeben und in einer Text-Datei speichern, die später als CSV-Datei ausgelesen werden kann.

Kontrollanweisungen

Aufgaben

1. Zahl finden
Gegeben ist folgender Code:

int start = 200;
int ende = 300;
int teiler = 36;
int gefundeneZahl;

// Dein Code

println("Die gefundene Zahl ist " + gefundeneZahl);

Schreibe ein Programm, das eine Spanne von Zahlen auswertet und die erste Zahl ausgibt, die durch einen bestimmten Teiler teilbar ist (ohne Rest). Verwende eine For-Schleife und eine Kontrollanweisung. Schreibe dein Programm so, dass auch wenn keine Zahl gefunden wird, eine sinnvolle Feedback-Message gegeben wird.

2. Zahlen überspringen
Gegeben ist folgender Code

int start = 10;
int ende = 20;
int teiler = 5;
int spruenge;

// Dein Code

println("Es wurden " + spruenge + " Zahlen übersprungen.");

Schreibe ein Programm, das eine Spanne von Zahlen nacheinander Zeile für Zeile in der Konsole ausgibt und dabei alle Zahlen, die durch teiler teilbar sind, überspringt. Am Ende soll ausgegeben werden wie viele Zahlen übersprungen wurden.

Bei den oben angegeben Werten würde die Ausgabe so aussehen:

11
12
13
14
16
17
18
19
Es wurden 3 Zahlen übersprungen.

3. Namen suchen
Gegeben ist folgender Code

String[][] namen = {{"Max", "Lisa", "Oleg", "Celine", "Tabita"},{"Meier", "Nguyen", "Petersen", "Bergner"}};
String vorname = "Oleg";
String nachname = "Petersen";

// Dein Code

Schreibe ein Programm, das den Array namen nach bestimmen Vor- und Nachnamen durchsucht. In der ersten Dimension des Arrays sind die Vornamen, in der zweiten die Nachnamen gespeichert. Schreibe dein Programm so, dass die erste Dimension nach dem Namen gespeichert in vorname durchsucht wird. Sobald der Vorname gefunden wurde, soll sofort mit der Suche nach dem Nachnamen gepseichert in nachname in der zweiten Dimension weitergemacht werden.

Außerdem soll dein Programm ausgeben, welche Namen überprüft werden. Bei den oben genannten Werten würde die Ausgabe so (ode so ähnlich) aussehen:

Vergleiche Max mit Oleg
Vergleiche Lisa mit Oleg
Vergleiche Oleg mit Oleg
Vergleiche Meier mit Petersen
Vergleiche Nguyen mit Petersen
Vergleiche Petersen mit Petersen



Debugging

Fragen

  1. Was ist der Unterschied zwischen einem Compilerfehler und einem Laufzeitfehler?
  2. Was kann beim Debugging verwendet werden, um das Programm an einer bestimmten Stelle bzw. Zeile anzuhalten?
  3. Mit welchem Debugging-Verfahren werden Fehlermeldungen bzw. Daten aus dem Programm in z.B. einem Textdokument protokolliert und gespeichert, um diese später auswerten zu können?
  4. Welche Werte/Variablen/... kannst du im Debug-Modus in Processing überwachen?(mehrere Antworten sind richtig)
    • nur globale Variablen
    • Funktionen
    • nur Variablen, keine Konstanten
    • Variablen und Konstanten, die Processing im Hintergrund überwacht (auch, wenn ich sie nicht verwende)
    • nur die Variablen, die in meinem Code vorkommen
    • alle Variablen und Konstanten
  5. Welche Art von Fehler wirft dieser Code?
    • String message;

      void setup() {
         size(300, 100);
         textSize(36);
      }

      void draw() {
         background(64);
         text(message, 20, 50);
      }

    • Logikfehler
    • Laufzeitfehler
    • Compilerfehler
    • gar keinen Fehler

Aufgaben

Dein eigener Code ist Übung genug bei diesem Thema ;)

Made with eXeLearning (New Window)