In diesem Programm soll die Eingabe im Seriellen Monitor dazu verwendet werden, in einem Satz die Anzahl der Vokale zu zählen und anzuzeigen. Außerdem erfährst du einiges über Zeichenketten.
So soll es aussehen:
Zeichenketten (Strings) können aus einem einzelnen Zeichen (char) oder mehreren Zeichen bestehen.
Sie werden mit den Schlüsselwörtern String und char definiert.
String Zeichenkette = "abcd“;
char Buchstabe = "a“;
String und char können auch in einem Array abgelegt werden:
// definiert ein char-Array mit 5 Elementen
char Buchstaben[5];
// definiert ein Array mit den Elementen aeiou
char Buchstaben[] = {"aeiou"};
// definiert ein String-Array
String Satzteile[] = {"Programmieren ", "ist ", "toll!"};
Eine for-Schleife und ➨sizeof ermöglichen den Zugriff auf die Elemente des Arrays.
// definiert ein char Array mit den Elementen aeiou
char Buchstaben[] = {"aeiou"};
// definiert ein String-Array
String Satzteile[] = {"Programmieren ", "ist ", "toll!"};
void setup()
{
Serial.begin(9600);
// auf serielle Verbindung warten
while (!Serial) {;}
// Array mit den Buchstaben anzeigen
// char belegt 1 Byte -> entspricht dem Endwert
for(int i = 0; i < sizeof(Buchstaben); i++)
{
Serial.print(Buchstaben[i]);
}
Serial.println();
// Array mit den Satzteilen anzeigen
// Endwert der for-Schleife mit sizeof bestimmen
for(int i = 0; i < sizeof(Satzteile) / sizeof(Satzteile[0]); i++)
{
Serial.print(Satzteile[i]);
}
}
void loop()
{
// bleibt leer, das Programm läuft nur einmal
}
Für diese Anleitung musst du den Arduino nur über USB verbinden und den Seriellen Monitor öffnen.
Verwende das Eingabefeld im Seriellen Monitor:
Definiere den String Eingabe als globale Variable:
String Eingabe;
Im setup-Block muss du den Seriellen Monitor starten und einen Hinweis für die Eingabe geben:
void setup()
{
Serial.begin(9600);
// auf serielle Verbindung warten
while (!Serial) {;}
Serial.println("Bitte Text eingeben:");
}
Im loop-Teil musst du zunächst die Zähler für die Vokale definieren und auf 0 setzen und den String Eingabe leeren...
void loop()
{
// alle Zähler auf 0 setzen
int ZaehlerA = 0;
int ZaehlerE = 0;
int ZaehlerO = 0;
int ZaehlerU = 0;
int ZaehlerI = 0;
// String Eingabe leeren
Eingabe = "";
… dann auf die Eingabe warten:
while (Serial.available() > 0)
{
// solange lesen, bis return \n eingegeben wurde
String Eingabe = Serial.readStringUntil('\n');
// das letzte Zeichen ist return
// -> soll entfernt werden
Eingabe = Eingabe.substring(0, Eingabe.length() - 1);
Damit Groß- und Kleinbuchstaben erfasst werden, wird der Text in Kleinbuchstaben umgewandelt und dann auf die Anzahl der Vokale untersucht:
Eingabe.toLowerCase();
for (int i = 0; i < Eingabe.length(); i ++)
{
// Vokale zählen
if (Eingabe[i] == 'a') ZaehlerA ++;
if (Eingabe[i] == 'e') ZaehlerE ++;
if (Eingabe[i] == 'i') ZaehlerI ++;
if (Eingabe[i] == 'o') ZaehlerO ++;
if (Eingabe[i] == 'u') ZaehlerU ++;
}
// Text anzeigen
Serial.println("Text:" + OriginalEingabe);
// Ergebnis anzeigen
Serial.println("Anzahl der Vokale:");
Serial.println("-----------------------");
Serial.println(String(ZaehlerA) + " mal das a");
Serial.println(String(ZaehlerE) + " mal das e");
Serial.println(String(ZaehlerI) + " mal das i");
Serial.println(String(ZaehlerO) + " mal das o");
Serial.println(String(ZaehlerU) + " mal das u");
Serial.println("-----------------------");
// Anzahl der Zeichen anzeigen
Serial.println(String(Eingabe.length()) + " Zeichen!");
Serial.println("-----------------------");
}
}
Anschließend kannst du den Satz auch rückwärts anzeigen lassen. Allerdings funktioniert das nicht mit Umlauten.
// Text rückwärts anzeigen
for (int i = OriginalEingabe.length(); i >= 0; i --)
{
Serial.print(OriginalEingabe[i]);
}
Serial.println();
Serial.println("-----------------------");
Zusätzlich kannst du auch alle Vokale durch einen anderen Buchstaben ersetzen. Ergänze das Programm nach der Ausgabe der gezählten Vokale. Im Beispiel werden mit replace alle Vokale durch „i“ ersetzt.
// alle Vokale durch i ersetzen
OriginalEingabe.replace("a", "i");
OriginalEingabe.replace("e", "i");
OriginalEingabe.replace("o", "i");
OriginalEingabe.replace("u", "i");
Serial.println(OriginalEingabe);
Verwandte Anleitungen:
- Einmaleinsreihen anzeigen
- Fußballtipp
- Geldautomat
- Laplace-Versuch
- Lottozahlen - Anzeige im Seriellen Monitor
- Primzahlen ermitteln
- Satzmaschine
- Schneckenrennen
- Städte-Info
- Taschenrechner Grundrechenarten
- Teiler bestimmen
- Vollkommene Zahlen
- Würfeln Serieller Monitor
Letzte Aktualisierung: