Satz­ma­schi­ne

Lese­zeit: 5 Minu­ten

Lösung
Seite als PDF

Wenn du im Seri­el­len Moni­tor den Buch­sta­be 's' ein­gibst, wird im Seri­el­len Moni­tor ein zufäl­lig erzeug­ter Satz angezeigt.

So sieht es aus (Bei­spiel):

Bis­her kennst du Arrays, die eine bestimm­te Anzahl von Ele­men­te in einer Rei­he haben (➨ein­di­men­sio­na­le Arrays).

String Eigenschaft[3] = {"schnell ", "lang­sam ", "im Schritt­tem­po "};
int LED[5] = {3, 4, 5, 6, 7};

Außer­dem gibt es noch mehr­di­men­sio­na­le Arrays, sie sind in Rei­hen und Spal­ten organisiert.

Bei­spiel für ein zwei­di­men­sio­na­les Array:

// 4 Rei­hen, 4 Spal­ten
int Zahlen[4] [4] =
{
{1, 2, 3, 4},
{11, 12, 13, 14},
{21, 22, 23, 24},
{31, 32, 33, 34}
};

mehrdimensionales Array

Das Bei­spiel­pro­gramm zeigt das Array an:

// 4 Reihen, 4 Spalten
int Zahlen[4] [4] =
{
  {1, 2, 3, 4},
  {11, 12, 13, 14},
  {21, 22, 23, 24},
  {31, 32, 33, 34}
};

void setup()
{
  Serial.begin(115200);

  // auf serielle Verbindung warten
  while (!Serial) {;}

  /*
    Elemente des Arrays anzeigen
    for-Schleife durch die Reihen
  */
  for (int Zeile = 0; Zeile < 4; Zeile ++)
  {
    Serial.print("Zeile " + String(Zeile) + ": ");

    // for-Schleife durch die Spalten
    for (int Spalte = 0; Spalte < 4; Spalte ++)
    {
      Serial.print(String(Zahlen[Zeile] [Spalte]) + " ");
    }
    Serial.println();
  }
}

void loop()
{
  // bleibt leer, das Programm läuft nur einmal
}

Wei­te­res Beispiel:
Das Pro­gramm bil­det aus dem Array vier Sät­ze und zeigt sie an.

// 2 Reihen, 4 Spalten
String Wortliste[2] [4] =
{
  {"Der Bus ", "Das Auto ", "Die U-Bahn ", "Das Motorrad "},
  {"h\u00e4lt an der Haltestelle.", "fährt in  die Garage.", "stoppt im Bahnhof.", "flitzt über die Autobahn."}
}; 

void setup()
{
  Serial.begin(9600);

  // auf serielle Verbindung warten
  while (!Serial) {;};
  delay(500);

  // alle Sätze anzeigen
  for (int i = 0; i < 4; i++)
  {
    Serial.print(Wortliste[0] [i]);          
    Serial.println(Wortliste[1] [i]); 
  }
}

 void loop() 
 {  
   // bleibt leer, das Programm läuft nur einmal 
 }  

Für die­se Anlei­tung brauchst du nur einen Arduino.

Defi­nie­re die Arrays:

// Array für die Artikel vor dem Substantiv und das Substantiv
// jeweils 6 Elemente -> Zählung beginnt mit 0
String Artikel_Substantiv [6] [6] =
{
  {"Der ", "Das ", "Die ", "Das ", "Das ", "Der "},
  {"Bus ", "Auto ", "U-Bahn ", "Fahrrad ", "Motorrad ", "Lastwagen "},
};

// eindimensionales Array für die Eigenschaften
String Eigenschaft [6] = {"rasant ", "im Zeitlupentempo ", "schnell ", "langsam ", "zügig ", "im Schritttempo "};

// Array für Verb und das Objekt
String Verb_Objekt [6] [6] =
{
  {"rollt ", "saust ", "rast ", "schleicht ", "fährt ", "bummelt "},
  {"auf die Autobahn. ", "ans Ende der Welt.", "um die Ecke.", "zum Bahnhof.", "zur Haltestelle.", "in die Garage."}
};

// Bereich der zufällig erzeugten Zahlen
int Minimum = 0;
int Maximum = 6;

Der set­up-Teil star­tet den Seri­el­len Monitor.

void setup()
{
  Serial.begin(9600);

  // auf serielle Verbindung warten
  while (!Serial) {;}
  delay(500);
  Serial.println("s = neuer Satz");
}

Der loop-Teil. Beach­te die Kommentare.

void loop()
{
 // auf serielle Eingabe warten 
  while (Serial.available() > 0)  
  {  
    // Eingabe im Seriellen Monitor lesen 
    char Zeichen = Serial.read();

    // wenn s eingegeben wurde
    if (Zeichen == 's')
    {
      int Position =  random(Minimum, Maximum);
      
      /*
        Bestimmung des Artikels und des Substantivs 
        entsprechend der Position im Array Artikel_Substantiv
        0 -> Artikel
        1 -> Substantiv
      */
      Serial.print(Artikel_Substantiv[0] [Position]);
      Serial.print(Artikel_Substantiv[1] [Position]);
      
      // Bestimmung des Verbs -> Position 0 im Array Verb_Objekt
      Position =  random(Minimum, Maximum);
      Serial.print(Verb_Objekt[0] [Position]);
      
      // Festlegung der Eigenschaft
      Position =  random(Minimum, Maximum);
      Serial.print(Eigenschaft[Position]);

      // Objekt auswählen -> Position 1 im Array Verb_Objekt
      Position =  random(Minimum, Maximum);
      Serial.println(Verb_Objekt[1] [Position]);
    }
  }
}

Startseite
Aufgaben A-Z
Suchen
Downloads
Fehlermeldungen
Seite als PDF

Ver­wand­te Aufgaben:


Letzte Aktualisierung: 4. Okt 2023 @ 19:52