Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
programmieren_lernen:start [2014/05/13 08:53] johannes_spielmann [Datei importieren] |
programmieren_lernen:start [2025/04/04 19:19] (aktuell) valentin_bachem |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== git ====== | ||
- | [[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? | + | ====== Inhalte ====== |
- | * 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? | + | |
- | Durchgängiges Beispiel: | + | * [[Hello World]] |
- | * Schreibe ein Programm, das "Hallo" und einen in einer Variablen vorhandenen Namen ausgibt! Also z.B. "Hallo Klaus". | + | * [[Variablen]] |
+ | * Datentypen (I): [[Einzelwerte|Einzelwerte/Skalare]] | ||
+ | * [[Bedingte Anweisungen und Verzweigungen]] | ||
+ | * [[Schleifen]] | ||
+ | * Datentypen (II): [[Listen|Listen/Arrays]] | ||
+ | * [[Argumentenliste]] | ||
+ | * [[Mengenschleifen und Iteratoren]] | ||
+ | * IO (I): [[Dateneingabe]] | ||
+ | * [[STDIN]] | ||
+ | * Datentypen (III): [[Hashtabelle|Hash/assoziatives Array/Dictionary]] | ||
+ | * [[Reguläre Ausdrücke]] | ||
- | ===== 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" + 2''? Was ist ''"1000" * 2''? | ||
- | |||
- | 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" | ||
- | |||
- | ==== undefinierte Werte ==== | ||
- | * Welches Schlüsselwort steht für den undefinierten Wert? | ||
- | * Was passiert, wenn ich einen undefinierten Wert als Zahl, Text oder Boolean verwende? | ||
- | |||
- | ====== Bedingte Anweisung und Verzweigung ====== | ||
- | * Wie kann ich abhängig von einer Bedingung verschiede Anweisungen zum 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 [[wpde>Schleife_(Programmierung)|Schleife]]. | ||
- | * 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 ich 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: <code>[], [''], [0], [False]</code> | ||
- | |||
- | |||
- | ===== 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? | ||
- | |||
- | ===== 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 eine Datei komplett 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 ====== | ====== Todo ====== | ||
- | * Sichtbarkeit von Variablen | + | * IO (II): |
+ | * [[Datei importieren]] | ||
+ | * [[Datei lesen]] | ||
+ | * [[Serialisierung]] | ||
+ | * [[Unterprogramme|Unterprogramme/Subroutinen/Funktionen]] | ||
+ | * [[Sichtbarkeit von Variablen]] | ||
+ | * [[git]] | ||
+ | 1 |