Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
programmieren_lernen:start [2014/04/12 08:56] ingo_wichmann |
programmieren_lernen:start [2023/12/27 13:18] (aktuell) 91.240.118.241 alte Version wiederhergestellt (2018/12/09 15:12) |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== git ====== | + | @@ErV2a |
- | ====== 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 ''liste'' am Ende von folgendem Pseudocode: | + | |
- | <file> | + | |
- | a = "eins" | + | |
- | b = 2 | + | |
- | c = 3.0 | + | |
- | liste = [a,b,c] | + | |
- | a = 5 | + | |
- | </file> | + | |
- | * 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, sonst ''Klaus''? | + | |
- | * 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? | + | |
- | ===== Serialisierung ===== | + | |
- | * Wie kann ich Datenstrukturen im YAML-Format speichern? | + | |
- | * Wie kann ich Datenstrukturen aus YAML-Dateien einlesen? | + | |
- | * Wie kann ich Datenstrukturen im JSON-Format speichern? | + | |
- | * Wie kann ich Datenstrukturen aus JSON-Dateien 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 | + |