Was ist ein String-Literal?
Ein String-Literal ist eine Aneinanderreihung von Zeichen des Typs 𝚌𝚑𝚊𝚛, umgeben von Anführungs- und Schlusszeichen. Also z.B. in
𝚜𝚝𝚍::𝚌𝚘𝚞𝚝 «_space;“𝚃𝚑𝚒𝚜 𝚒𝚜 𝚊 𝚜𝚝𝚛𝚒𝚗𝚐.”;
ist “This is a string” ein String-Literal.
Welche zwei Arten von Zeichen repräsentiert der Typ 𝚌𝚑𝚊𝚛?
Druckbare Zeichen (z.B. 𝚊) und Steuerzeichen (z.B. \𝚗).
In welche Typen kann 𝚌𝚑𝚊𝚛 konvertiert werden und wie viel Platz benötigen die Werte von 𝚌𝚑𝚊𝚛? Was ist ihr Wertebereich?
𝚌𝚑𝚊𝚛-Werte sind konvertierbar nach 𝚒𝚗𝚝- und 𝚞𝚗𝚜𝚒𝚐𝚗𝚎𝚍 𝚒𝚗𝚝 und belegen meistens 8 Bit. Der Wertebereich liegt zwischen {-128, …, 127} oder {0, …, 255}.
Was macht der ASCII-Code und wofür braucht man ihn?
Der ASCII-Code wird von allen gängigen Computersystemen unterstützt und definiert konkrete Konversionsregeln von 𝚌𝚑𝚊𝚛 nach 𝚒𝚗𝚝 oder 𝚞𝚗𝚜𝚒𝚐𝚗𝚎𝚍 𝚒𝚗𝚝.
So definiert der Code z.B. für die Zeichen ‘𝙰’ bis ‘𝚉’ die Werte 65 bis 90 und für ‘𝚊’ bis ‘𝚣’ die Werte 97 bis 122.
Dies erlauft Arithmetik über Zeichen.
Was macht folgender Programmausschnitt?
𝚏𝚘𝚛 (𝚌𝚑𝚊𝚛 𝚌 = ’𝚊’; 𝚌 <= ’𝚣’; ++𝚌)
𝚜𝚝𝚍::𝚌𝚘𝚞𝚝 «_space;𝚌;
Er gibt alle Buchstaben von a bis z aus.
Was sind Ein- und Ausgabeströme und was ist der Unterschied zwischen abstrakten und konkreten Strömen?
Ein- und Ausgabeströme lesen einen Input ein und geben einen Output aus.
Der abstrakte Eingabestrom 𝚜𝚝𝚍::𝚒𝚜𝚝𝚛𝚎𝚊𝚖 bzw. Ausgabestrom 𝚜𝚝𝚍::𝚘𝚜𝚝𝚛𝚎𝚊𝚖 gilt für alle Arten von Eingabeströmen und wird in der Funktion deklariert. Beim Aufrufen der Funktion wird mittels eines konkreten Stroms spezifiziert, von wo / wohin die Ein-/Ausgabe kommen bzw. gehen soll. So sind z.B. 𝚜𝚝𝚍::𝚌𝚒𝚗 und 𝚜𝚝𝚍::𝚌𝚘𝚞𝚝 konkrete Ströme für die Konsole, weiter gibt es noch welche für Dateien, usw.
Man kann also z.B. sagen, etwas soll von der Konsole eingelesen und in eine externe Datei ausgegeben werden.
Was muss für zwei Strings 𝚝𝚎𝚡𝚝𝟷 und 𝚝𝚎𝚡𝚝 𝟸 gelten, damit 𝚝𝚎𝚡𝚝𝟷 == 𝚝𝚎𝚡𝚝 𝟸 gilt?
Sie müssen beide zeichenweise gleich sein.
Wo sind die Parallelen zwischen Strings und Vektoren, bzw.: Welche fünf Befehle funktionieren sowohl für Strings als auch für Vektoren?
(1) Initialisierung mittels Literal:
𝚜𝚝𝚍::𝚜𝚝𝚛𝚒𝚗𝚐 𝚝𝚎𝚡𝚝 = “𝙳𝚒𝚎𝚜 𝚒𝚜𝚝 𝚎𝚒𝚗 𝚃𝚎𝚡𝚝.”
(2) Initialisierung mit variabler Länge:
𝚜𝚝𝚍::𝚜𝚝𝚛𝚒𝚗𝚐 𝚝𝚎𝚡𝚝(𝚗, ‘𝚊’)
→ Der Text wird mit n ‘a’s gefüllt.
(3) Strings vergleichen:
𝚒𝚏 (𝚝𝚎𝚡𝚝𝟷 == 𝚝𝚎𝚡𝚝𝟸) …
(4) Grösse auslesen:
𝚏𝚘𝚛 (𝚞𝚗𝚜𝚒𝚐𝚗𝚎𝚍 𝚒𝚗𝚝 𝚒 = 0; 𝚒 < 𝚝𝚎𝚡𝚝.𝚜𝚒𝚣𝚎(); ++𝚒) …
(5) Einzelne Zeichen lesen:
𝚒𝚏 (𝚝𝚎𝚡𝚝[0] == ’𝚊’) …
(6) Einzelne Zeichen schreiben:
𝚝𝚎𝚡𝚝[0] = ‘𝚋’;
Was bedeutet es, einen String zu konkatenieren?
Man kann zwei Strings mittels arithmetischen Operatoren zusammensetzen, z.B.:
𝚝𝚎𝚡𝚝 = “𝚊𝚋”;
𝚝𝚎𝚡𝚝 += “𝚌”;
𝚊𝚜𝚜𝚎𝚛𝚝(𝚝𝚎𝚡𝚝 == “𝚊𝚋𝚌”);