Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
git
Hello World
- interaktive Shell
- Quellcode-Datei
Variablen
Erklärung: Variablen sind Namen für Werte, …
- Was sind die Namenskonventionen/Wie dürfen Variablen heißen? Wird Gross/Kleinschreibung unterschieden?
- Wie weise ich einer Variable einen Wert zu? Muss ich Variablen deklarieren?
- Wie lese ich den Wert einer Variablen wieder aus/wie benutze ich den Wert einer Variablen?
- Gibt es andere Namen für „Variable“?
Durchgängiges Beispiel:
- Schreibe ein Programm, das „Hallo“ und einen in einer Variablen vorhandenen Namen ausgibt! Also z.B. „Hallo Klaus“.
Datentypen (I): Skalar
Erklärung: Werte haben verschiedene Typen
Zahl
- Wie stelle ich eine (Dezimal-)zahl dar?
- Wie berechne ich die folgenden arithmetischen Operationen:
- addieren
- subtrahieren
- multiplizieren
- dividieren
- potenzieren
- Was ist das Ergebnis von:
3 * 5 + 2?2 + 5 * 3?(2 + 5) * 3?2 + (5 * 3)?10/3?10.0 / 3?10.0 / 3 / 10?10.0 / 3 / 10 * 3 * 10?10.0 / 3 / 10 * 10 * 3?- 10000000000000000.0 + 1?
- 10000000000000000 + 1?
- Gibt es einen Tausendertrenner?
- Welche Größenbeschränkungen kennt meine Sprache? Mit welcher Genauigkeit arbeitet sie?
String
- Wie definiere ich einen String?
- Welche unterschiedlichen Arten gibt es? Und wie unterscheiden die sich?
- Wie kann ich Strings aneinanderfügen?
- Gibt es sowas wie sprintf?
- Wie kann ich Variablen in Text einbauen?
- Wie kann ich die Länge eines Strings herausfinden?
- Was ist „1000“ + 1?
Durchgängiges Beispiel:
- Ergänze das hello-world Programm so, dass ein ganzer Satz ausgegeben wird, z.B. „Hallo Klaus!“. Verwende dabei Interpolation.
Boolean
- Wie kann ich Zahlen vergleichen? Größer, kleiner, gleich?
- Wie kann ich das Ergebnis eines Vergleiches in Perl sehen? Einschub: Ternärer Operator
- Wie kann ich Strings vergleichen? Gleich, ungleich?
- Wie kann ich Zahlen und Strings vergleichen?
- Wie kann ich Vergleiche verknüpfen? Und, Oder, Nicht, …?
- Wie kann ich testen, ob eine Zahl zwischen zwei Werten liegt?
- Was ist der Wahrheitswert von:
- 0
- 0.0
- 1
- 0.1
- „0“
- „“
- „true“
- „false“
Bedingte Anweisung und Verzweigung
- Wie kann ich abhängig von einer Bedingung verschiede Anweisungen zur ausführen bringen?
Durchgängiges Beispiel:
- Ergänze das hello-world Programm so, dass bei Namen mit weniger als 10 Zeichen „Guten Tag Klaus“, und bei längeren Namen „Hallo …“ ausgegeben wird.
Schleifen
Erklärung: Wenn man Dinge mehrmals ausführen möchte, benutzt man eine Schleife. (Diagramm) → Wikipedia
- Wie formuliert man eine kopfgesteuerte Schleife?
- Wie formuliert man eine fußgesteuerte Schleife?
- Wie formuliert man eine Zählschleife?
Durchgängiges Beispiel:
- Ergänze das Programm so, dass:
- der Gruß unendlich oft ausgegeben wird.
- der Gruß genau 10 Mal ausgegeben wird (mit Nummerierung).
Datentypen (II): Array
Erklärung: was ist ein Array/eine Liste? Container für mehrere Dinge hintereinander
- Packe die folgenden Elemente in ein Array/eine Liste:
„eins“, 2, 3.0 - Gebe die Länge der vorherigen Liste aus.
- Gebe die Elemente einzeln wieder aus.
- Weise dem zweiten Element der Liste einen neuen Wert zu.
- Welchen Wert enthält die Variable
listeam Ende von folgendem Pseudocode:
a = "eins" b = 2 c = 3.0 liste = [a,b,c] a = 5
- Wie füge am Ende bzw. am Anfang einer Liste ein oder mehrere Elemente an?
- Wie schneide ich sie ab?
- Wie füge ich zwei Listen zusammen?
- Wie finde ich heraus, ob ein bestimmter Wert in einer Liste enthalten ist?
- Wie füge ich ein Array zu einem String zusammen?
- Wie wandle ich einen String der Spaltentrenner enthält in ein Array/eine Liste um?
- Was ist der Wahrheitswert von:
[], [], [0], [False]===== Die Argumentenliste ===== Erklärung * Erweitere das hello-world Programm so, dass es es den übergebenen Namen ausgibt, wenn er vorhanden ist, sonstKlaus''? - Erweitere das Programm so, dass auch mehrere Namen auf der Kommandozeile übergeben werden können und alle einzeln als Gruß ausgegeben werden!
Mengenschleifen und Iteratoren
Erklärung: Anstatt eine Schleife über Indizes laufen zu lassen, wäre es doch besser, die Schleife über die Elemente der Liste laufen zu lassen.
- Schreibe dein Programm so um, dass es über die eingegebenen Namen iteriert.
IO (I)
Diskussionsfrage: Auf welche Arten kann ein Programm mit der Außenwelt kommunizieren? –> Wir wollen: Tastatur (stdin/stdout), Dateien lesen als Daten, Dateien eval'en
STDIN
- Wie kann ich Eingaben von der Tastatur/stdin einlesen?
- Erweitere das Programm, so dass der Benutzer gezwungen wird einen Namen für die Begrüßung einzugeben, sofern kein Name in der Argumentenliste angegeben wurde.
Datei importieren
- Können wir Variablen aus anderen Dateien einlesen? –> import/include/eval/…
- Aufgabe: Erweitere das Programm so, dass der Benutzername in einer Konfig-Datei festgelegt wird.
Datentypen (III): Hash
- Erklärung: was ist ein Hash/Dictionary?
- Wie lege ich einen leeren Hash an?
- Wie lege ich einen Hash incl. erster Elemente an?
- Wie füge ich neue Elemente hinzu?
- Wie lese ich ein Element aus?
- Wie verändere ich Elemente, die schon im Hash drin sind?
- Wie finde ich die Menge aller Schlüssel? Werte?
- Wie iteriere ich über alle Einträge?
- Wann kann ich ein Array in einen Hash umwandeln? Wie geht das?
- Wie kann ich einen Hash in ein Array umwandeln?
- Aufgabe: Erstelle eine Statistik über die Häufigkeit von Zeichen, die über stdin gelesen werden (z.B. 'a': 5, 'b': 10, …).
- Aufgabe: In einer von uns bereitgestellten Log-Datei, finden Sie die Häufigkeit der Worte „POST“, „GET“, „200“, „500“, „404“ heraus.
IO (II)
Datei einlesen
- Wie kann ich den Inhalt von Dateien zeilenweise einlesen?
Reguläre Ausdrücke
- Einführung in Reguläre Ausdrücke mit egrep
- Wie kommen die RE in meine Sprache rein?
- Wie speichere ich die Ergebnisse eines Treffers in ein Array?
- Wie benutze ich einen Regulären Ausdruck um die Gültigkeit einer Eingabe als Telefonnumer zu überprüfen?
Subroutinen/Funktionen
- Einführung Subroutinen
Todo
- Sichtbarkeit von Variablen
