Jahrgangsstufe Q1 - Informatik - Dienstag, der 26. Januar 2021



Musterlösungen und Bemerkungen

Lösungen zum 19.01.2021

Aufgabe 3: Formuliere eine Methode feldFuellenA(), die das Feld mit den Zahlen 50, 49,...,3,2,1 füllt.

  public void feldFuellenA()
  {  for(int i = 0; i < x.length; i++)
         x[i] = 50-i;
  }


Bemerkungen:


Aufgabe 4: Formuliere eine Methode feldFuellenB(), die das Feld mit den Zahlen 0, 2, 4, 6,... füllt.

  public void feldFuellenB()
  { for(int i = 0; i < x.length; i++)
        x[i] = 2*i;
  }
  


Aufgabe 5: Formuliere eine Methode feldZufaelligFuellen(), die das Feld mit Zufallszahlen füllt. Eine ganze Zufallszahl erhält man z.B. mit (int)Math.round(Math.random()*100)

  public void feldZufaelligFuellen()
  {  for(int i = 0; i < x.length; i++)
         x[i] = (int)Math.round(Math.random()*100);
  }

Bemerkung:
Mit Math.random() erhält man eine reelle Zahl (double) mit 0 <= Zahl < 1. Durch Multiplikation mit 100 ergibt sich eine reelle Zahl mit 0 <= Zahl < 100. Mit Math.round() wird diese reelle Zahl auf einen ganzzahligen Wert gerundet, bleibt aber immer noch eine reelle Zahl. Durch Voranstellen von (int) wird daraus eine ganze Zahl (Integer).


Aufgabe 6:Formuliere eine Funktion feldSumme(), die die Summe aller Feldinhalte bestimmt.

  public int feldSumme()
  { int summe = 0;
    for(int i = 0; i < x.length; i++)
        summe = summe + x[i];
    return summe;
  }

Bemerkungen:

Lösungen zum 21.01.2021

Aufgabe 1: Der Inhalt der Methode action() wird gelöscht und ersetzt durch geeignete Aufrufe aller vier Methoden (vom 19.01.2021). Ergänze!

  public void action()
  {  feldFuellenA();
     System.out.println("Die Ausgabe von feldFuellenA() ergibt:");
     feldAusgeben();

     feldFuellenB();
     System.out.println("Die Ausgabe von feldFuellenB() ergibt:");
     feldAusgeben();

     feldZufaelligFuellen();
     System.out.println("Die Ausgabe von feldZufaelligFuellen() ergibt:");
     feldAusgeben();

     System.out.println("Die Summe aller Feldelemente ist "+feldSumme()+".");
     /* Variante:
        int summe;
        summe = feldSumme();
        System.out.println("Die Summe aller Feldelemente ist "+summe()+".");
      */
  }

Die fertige und lauffähige Java-Datei kann man hier herunterladen.

Aufgabe 2: Formuliere eine Methode mittelwert(), die den Mittelwert aller Feldelemente berechnet.

  public double mittelwert()
  { double summe = 0;  // Deklaration als double fuehrt dazu, dass beim
                       // return-Statement mit Nachkommastellen gerechnet wird.
    for(int i = 0; i < x.length; i++)
        summe = summe + x[i];
    return summe/x.length;
  }

Bemerkung: Die Variante return feldSumme()/x.length berechnet zuerst mit Ganzzahldivision (Beispiel: 17:5 = 3) und wandelt das ganzzahlige Ergebnis in einen double-Wert um. Dadurch gehen die Nachkommastellen verloren.

Aufgabe 3: Formuliere eine Funktion maximum(), die das größte Element im Feld liefert.

  public int maximum()
  {  int max =  x[0]; // Vorlaeufiges Maximum
     for(int i = 1; i < x.length; i++)  // Weiter mit Index 1
         if (max < x[i])                // neues Maximum gefunden
                  max = x[i];
     return max;
  }

Bemerkung: Auch bei der Verzweigung mit if gilt, dass man bei nur einer Anweisung die geschweiften Klammern weglassen kann.


Aufgabe 4: Formuliere eine Funktion gefunden(int suchzahl), die das Ergebnis liefert, ob die Suchzahl irgendwo im Feld vorkommt.

  public boolean gefunden (int suchzahl)
  {  boolean gefunden = false; // Erst einmal davon ausgehen, dass
                               // nichts gefunden wird.
     for(int i = 0; i < x.length; i++)
          if (suchzahl==x[i]) gefunden = true;
     return gefunden;
  }

Bemerkung: Ein Aufruf der Methode wie gefunden(); bringt natürlich gar nichts. Man muss das boolesche Funktionsergebnis einer booleschen Variablen zuweisen oder die Funktion in einem if-Statement aufrufen (siehe unten).

Aufgabe 5: Welche Zeilen müssen in der Methode action() noch ergänzt werden, damit alle obigen Methoden und Funktionen mit einer entsprechenden Ausgabe aufgerufen werden. Schreibe nur die zu ergänzenden Zeilen hier auf.

public void action()
  {  feldFuellenA();
     System.out.println("Die Ausgabe von feldFuellenA() ergibt:");
     feldAusgeben();

     feldFuellenB();
     System.out.println("Die Ausgabe von feldFuellenB() ergibt:");
     feldAusgeben();

     feldZufaelligFuellen();
     System.out.println("Die Ausgabe von feldZufaelligFuellen() ergibt:");
     feldAusgeben();

     System.out.println("Die Summe aller Feldelemente ist " + feldSumme() + ".");
     /* Variante:
        int summe;
        summe = feldSumme();
        System.out.println("Die Feldsumme von feldZufaelligFuellen() lautet "+summe()+".");
      */

     System.out.println("Der Mittelwert ist " + mittelwert() + ".");
     System.out.println("Der Mittelwert2 ist " + mittelwert2() + ".");
     System.out.println("Das Maximum ist " + maximum() + ".");
     int zahl = 23; // Beispiel fuer eine zu suchende Zahl.
     System.out.print("Die gesuchte Zahl " + zahl + " ist ");
     if(!gefunden(zahl))
          System.out.print("nicht ");
     System.out.print("vorhanden.");
  }

Die fertige und lauffähige Java-Datei kann man hier herunterladen.

Arbeitsauftrag 1 für heute:

Studiere die Bemerkungen zu den Musterlösungen und bringe das Programm zur Ausführung.

Arbeitsauftrag 2 für heute:

In der Datei Zahlenreihen.jpg sind Zahlenreihen A bis I angegeben, die bei einem Bewerbungstraining der Sparkasse Wittgenstein von Herrn Roland Dickel hier am Gymnasium behandelt wurden. Ergänze die Zahlenfolgen jeweils bis zur Nummer 9. Die Folge I ist etwas schwierig. Damit hatte ich selbst Probleme.

Diese Zahlenfolgen bilden die Grundlage für die nächste Unterrichtsstunde. Heute muss dementsprechend nur gearbeitet, aber mir nichts abgegeben werden.