programmieren_lernen:start
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
| Beide Seiten, vorherige ÜberarbeitungVorherige ÜberarbeitungNächste Überarbeitung | Vorherige Überarbeitung | ||
| programmieren_lernen:start [2014/05/18 11:09] – [STDIN] johannes_spielmann | programmieren_lernen:start [2025/04/04 19:19] (aktuell) – valentin_bachem | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ====== Vorbereitung ====== | ||
| - | Jeder Teilnehmer öffnet ein Pad und verlinkt es im [[https:// | ||
| - | Jeder Teilnehmer löst anhand der im Hauptpad zur Verfügung gestellten Links die Syntaxaufgaben eines Themas. Anschließend einigt sich jede Sprachgruppe auf jeweils eine Antwort pro Frage, die sie ins Sprachpad übernimmt. Das Sprachpad dient als Sammlung und Nachschlagewerk für Syntaxbeispiele, | + | ====== Inhalte ====== |
| - | Jeder Teilnehmer löst die Basis-Problemlösungsaufgaben eines Themas. Schnelle Teilnehmer lösen auch die Zusatzaufgaben. Wenn alle Teilnehmer einer Sprachgruppe mit den Basis-Problemlösungsaufgaben fertig sind einigen sie sich auf jeweils eine Basislösung. | + | * [[Hello World]] |
| - | ====== git ====== | + | * [[Variablen]] |
| - | [[git]] | + | * Datentypen (I): [[Einzelwerte|Einzelwerte/ |
| - | ====== Hello World ====== | + | * [[Bedingte Anweisungen und Verzweigungen]] |
| - | * interaktive Shell | + | * [[Schleifen]] |
| - | * Quellcode-Datei | + | * Datentypen (II): [[Listen|Listen/ |
| - | === Problemlösungsaufgaben === | + | * [[Argumentenliste]] |
| - | Schreibe ein Programm '' | + | * [[Mengenschleifen und Iteratoren]] |
| + | * IO (I): [[Dateneingabe]] | ||
| + | * [[STDIN]] | ||
| + | * Datentypen (III): [[Hashtabelle|Hash/ | ||
| + | * [[Reguläre Ausdrücke]] | ||
| - | Aufruf des Programms: | ||
| - | ./ | ||
| - | Ausgabe: | ||
| - | < | ||
| - | hello world | ||
| - | </ | ||
| - | ====== Variablen ====== | ||
| - | Erklärung: Wofür sind Variablen gut? | ||
| - | |||
| - | === Syntaxaufgaben === | ||
| - | * Was sind die Namenskonventionen/ | ||
| - | * Beispiele für nicht erlaubte Variablennamen? | ||
| - | * Wird Gross/ | ||
| - | * 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? | ||
| - | |||
| - | === Problemlösungsaufgaben === | ||
| - | Schreibe ein Programm '' | ||
| - | |||
| - | Aufruf des Programms: | ||
| - | ./ | ||
| - | Ausgabe: | ||
| - | < | ||
| - | hello Klaus | ||
| - | </ | ||
| - | |||
| - | ===== Datentypen (I): Skalar ===== | ||
| - | Erklärung: Warum werden Datentypen unterschieden? | ||
| - | |||
| - | ==== Zahl ==== | ||
| - | === Syntaxaufgaben === | ||
| - | * Wie stelle ich eine (Dezimal-)zahl dar? | ||
| - | * Wie berechne ich die folgenden arithmetischen Operationen: | ||
| - | * addieren | ||
| - | * subtrahieren | ||
| - | * multiplizieren | ||
| - | * dividieren | ||
| - | * potenzieren | ||
| - | * Was ist das Ergebnis von: | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * Welche Größenbeschränkungen kennt meine Sprache? Mit welcher Genauigkeit arbeitet sie? | ||
| - | |||
| - | === Problemlösungsaufgaben === | ||
| - | Schreibe ein Programm '' | ||
| - | |||
| - | Aufruf des Programms: | ||
| - | ./rechner | ||
| - | Ausgabe: (wenn zahl1 = 6 ist, und zahl2 = 2 ist) | ||
| - | < | ||
| - | 8 | ||
| - | 4 | ||
| - | 12 | ||
| - | 3 | ||
| - | 9 | ||
| - | </ | ||
| - | |||
| - | ==== String ==== | ||
| - | Erklärung: Wofür sind Strings gut? Wo werden Strings verwendet? | ||
| - | |||
| - | === Syntaxaufgaben === | ||
| - | * Welche Arten einen String zu definieren gibt es? Und wie unterscheiden die sich? | ||
| - | * Wie kann ich Strings aneinanderfügen? | ||
| - | * Wie kann ich Variablen in Text einbauen? | ||
| - | * Wie kann ich die Länge eines Strings herausfinden? | ||
| - | * Was ist ''" | ||
| - | |||
| - | === Problemlösungsaufgaben === | ||
| - | Schreibe ein Programm '' | ||
| - | Aufruf des Programms: | ||
| - | ./greeter | ||
| - | Ausgabe: (wenn name = ' | ||
| - | < | ||
| - | Hallo Klaus! | ||
| - | </ | ||
| - | |||
| - | ==== Boolean ==== | ||
| - | Erklärung: Wie kann ich feststellen, | ||
| - | |||
| - | === Syntaxaufgaben === | ||
| - | * Wie kann ich Zahlen vergleichen? | ||
| - | * Wie kann ich das Ergebnis eines Vergleiches sehen? | ||
| - | * Einschub (für Perl): Ternärer Operator | ||
| - | * Wie kann ich Strings vergleichen? | ||
| - | * Wie kann ich Zahlen und Strings vergleichen? | ||
| - | * Wie kann ich Vergleiche verknüpfen? | ||
| - | * Wie kann ich testen, ob eine Zahl zwischen zwei Werten liegt? | ||
| - | * Was ist der Wahrheitswert von: | ||
| - | * 0 | ||
| - | * 0.0 | ||
| - | * 1 | ||
| - | * 0.1 | ||
| - | * " | ||
| - | * "" | ||
| - | * " | ||
| - | * " | ||
| - | * '' | ||
| - | |||
| - | ==== undefinierte Werte ==== | ||
| - | === Syntaxaufgaben === | ||
| - | * 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 ====== | ||
| - | Erklärung: Wie kann ich abhängig von einer Bedingung verschiede Anweisungen zum Ausführen bringen? | ||
| - | |||
| - | === Syntaxaufgaben === | ||
| - | * Wie kann ich eine Anweisung ausführen lassen, wenn ein String weniger als 12 Zeichen enthält? | ||
| - | * Wie kann ich mehrere Anweisungen ausführen lassen, wenn '' | ||
| - | * Wie kann ich mehrere Anweisungen ausführen lassen, wenn '' | ||
| - | * Wie kann ich mehrere Anweisungen ausführen lassen, wenn '' | ||
| - | |||
| - | === Problemlösungsaufgaben === | ||
| - | Schreibe ein Programm '' | ||
| - | Aufruf des Programms: | ||
| - | ./friendly | ||
| - | Ausgabe: (wenn name = ' | ||
| - | < | ||
| - | Hallo Klaus! | ||
| - | </ | ||
| - | |||
| - | Ausgabe: (wenn name = ' | ||
| - | < | ||
| - | Hallo! | ||
| - | </ | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | ====== Schleifen ====== | ||
| - | Erklärung: Welche praktischen Probleme kann man mit Schleifen lösen? Wenn man Dinge mehrmals ausführen möchte, benutzt man eine [[wpde> | ||
| - | |||
| - | === Syntaxaufgaben === | ||
| - | * Wie kann ich eine Anweisung (z.B. '' | ||
| - | * Wie kann ich eine Anweisung ausführen lassen, solange eine Bedingung erfüllt ist? | ||
| - | * Wie kann ich eine Anweisung eine bestimmte Anzahl oft ausführen lassen? | ||
| - | |||
| - | === Problemlösungsaufgaben === | ||
| - | Schreibe ein Programm '' | ||
| - | Aufruf des Programms: | ||
| - | ./infinite | ||
| - | Ausgabe: | ||
| - | < | ||
| - | Hallo Welt! | ||
| - | Hallo Welt! | ||
| - | Hallo Welt! | ||
| - | Hallo Welt! | ||
| - | Hallo Welt! | ||
| - | Hallo Welt! | ||
| - | Hallo Welt! | ||
| - | ^C | ||
| - | </ | ||
| - | |||
| - | |||
| - | Schreibe ein Programm '' | ||
| - | Aufruf des Programms: | ||
| - | ./finite | ||
| - | Ausgabe: | ||
| - | < | ||
| - | 1. Hallo Welt! | ||
| - | 2. Hallo Welt! | ||
| - | 3. Hallo Welt! | ||
| - | 4. Hallo Welt! | ||
| - | 5. Hallo Welt! | ||
| - | 6. Hallo Welt! | ||
| - | 7. Hallo Welt! | ||
| - | 8. Hallo Welt! | ||
| - | 9. Hallo Welt! | ||
| - | 10. Hallo Welt! | ||
| - | </ | ||
| - | |||
| - | |||
| - | |||
| - | ====== Datentypen (II): Array ====== | ||
| - | Erklärung: Wie kann ich mehrere Dinge (z.B. Namen von Benutzern, Zahlen) hintereinander abspeichern? | ||
| - | |||
| - | === Syntaxaufgaben === | ||
| - | * Packe die folgenden Elemente in ein Array/eine Liste names '' | ||
| - | * 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 '' | ||
| - | < | ||
| - | a = " | ||
| - | b = 2 | ||
| - | c = 3.0 | ||
| - | liste = [a,b,c] | ||
| - | a = 5 | ||
| - | </ | ||
| - | * Wie füge ich am Ende bzw. am Anfang einer Liste ein oder mehrere Elemente an? | ||
| - | * Wie erhalte ich aus einer Liste einen Teil, d.h. aus einer Liste '' | ||
| - | * 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? Ein mal mit, ein mal ohne Trennzeichnen. | ||
| - | * Wie überführe ich einen String in eine Liste seiner Zeichen? | ||
| - | * Was ist der Wahrheitswert von: < | ||
| - | |||
| - | ===== Die Argumentenliste ===== | ||
| - | Erklärung: Wofür ist die Argumentenliste gut? Wie kann ich Werte in das Programm hineingeben? | ||
| - | |||
| - | === Problemlösungsaufgaben === | ||
| - | Schreibe ein Programm '' | ||
| - | Aufruf des Programms: | ||
| - | ./greetall Klaus Frank Thomas | ||
| - | Ausgabe: | ||
| - | < | ||
| - | Guten Tag Klaus! | ||
| - | Guten Tag Frank! | ||
| - | Guten Tag Thomas! | ||
| - | </ | ||
| - | |||
| - | === Problemlösungsaufgaben (Zusatz) === | ||
| - | Erweitere das Programm '' | ||
| - | Aufruf des Programms: | ||
| - | ./greetall | ||
| - | Ausgabe: | ||
| - | < | ||
| - | Hallo Welt! | ||
| - | </ | ||
| - | |||
| - | Erweitere das Programm '' | ||
| - | Aufruf des Programms: | ||
| - | ./greetall Klaus Frank Thomas Karl-Friedrich | ||
| - | Ausgabe: | ||
| - | < | ||
| - | Guten Tag Klaus! | ||
| - | Guten Tag Frank! | ||
| - | Guten Tag Thomas! | ||
| - | Hallo! | ||
| - | </ | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | ====== 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. | ||
| - | |||
| - | === Problemlösungsaufgaben === | ||
| - | Schreibe dein Programm '' | ||
| - | Aufruf des Programms: | ||
| - | ./greetall2 Klaus Frank Thomas | ||
| - | Ausgabe: | ||
| - | < | ||
| - | Guten Tag Klaus! | ||
| - | Guten Tag Frank! | ||
| - | Guten Tag Thomas! | ||
| - | </ | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | ====== IO (I) ====== | ||
| - | Diskussionsfrage: | ||
| - | |||
| - | ===== STDIN ===== | ||
| - | Erklärung: Oft sollen Programme vom Benutzer eine Eingabe von der Tastatur lesen, anstatt alle Parameter im Vorhinein auf der Kommandozeile zu bekommen. | ||
| - | |||
| - | === Syntaxaufgaben === | ||
| - | * Wie kann ich vom Benutzer eine Eingabe von der Tastatur lesen? Gibt es mehr als eine Möglichkeit? | ||
| - | |||
| - | === Problemlösungsaufgaben === | ||
| - | Schreibe ein Programm '' | ||
| - | Aufruf des Programms: | ||
| - | ./greetme | ||
| - | Ausgabe/ | ||
| - | < | ||
| - | Bitte geben Sie Ihren Namen ein: | ||
| - | Bitte geben Sie Ihren Namen ein: Klaus | ||
| - | Guten Tag Klaus! | ||
| - | </ | ||
| - | Ausgabe/ | ||
| - | < | ||
| - | Bitte geben Sie Ihren Namen ein: Karlfriedrich | ||
| - | Hallo! | ||
| - | </ | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | ====== Datentypen (III): Hash/ | ||
| - | Erklärung: Wie kann ich mir zu einem Wert (z.B. einem Namen) einen weiteren Wert merken (z.B. das Alter)? Oft ist es nützlich, zusätzlich zu einem bekannten Wert (dem Schlüssel) einen weiteren Wert zu kennen (den " | ||
| - | |||
| - | Beispiel: | ||
| - | * Telefonbuch: | ||
| - | | ||
| - | |||
| - | Wie kann man sich die Datenstruktur vorstellen? Bild mit Eimer und Fähnchen | ||
| - | |||
| - | === Syntaxaufgaben === | ||
| - | * 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 überprüfe ich, ob mein Hash zu einem bestimmten Schlüssel einen Wert enthält? | ||
| - | * Wie finde ich die Menge aller Schlüssel? Werte? | ||
| - | * Wie iteriere ich über alle Einträge? | ||
| - | * Kann ich ein Array in einen Hash umwandeln? Geht das? | ||
| - | |||
| - | === Problemlösungsaufgaben === | ||
| - | Schreibe ein Programm '' | ||
| - | |||
| - | Aufruf des Programms: | ||
| - | ./statistik | ||
| - | Ausgabe/ | ||
| - | < | ||
| - | Bitte geben Sie Zeichen ein. Beenden durch Leerzeile! | ||
| - | Dies ist ein Text. Dies ist MEIN Text. Mein Text ist ein toller Text und nicht nur ein Test! | ||
| - | |||
| - | D -- 2 | ||
| - | E -- 1 | ||
| - | I -- 1 | ||
| - | M -- 2 | ||
| - | N -- 1 | ||
| - | T -- 5 | ||
| - | n -- 7 | ||
| - | -- 18 | ||
| - | ! -- 1 | ||
| - | c -- 1 | ||
| - | d -- 1 | ||
| - | e -- 12 | ||
| - | h -- 1 | ||
| - | i -- 10 | ||
| - | l -- 2 | ||
| - | . -- 2 | ||
| - | o -- 1 | ||
| - | r -- 2 | ||
| - | s -- 6 | ||
| - | t -- 10 | ||
| - | u -- 2 | ||
| - | x -- 4 | ||
| - | </ | ||
| - | |||
| - | |||
| - | Zusatz 1: Sortiere die Statistik nach dem eingegebenen Zeichen. | ||
| - | Aufruf des Programms: | ||
| - | ./statistik | ||
| - | Ausgabe/ | ||
| - | < | ||
| - | Bitte geben Sie Zeichen ein. Beenden durch Leerzeile! | ||
| - | Dies ist ein Text. Dies ist MEIN Text. Mein Text ist ein toller Text und nicht nur ein Test! | ||
| - | |||
| - | -- 18 | ||
| - | ! -- 1 | ||
| - | . -- 2 | ||
| - | D -- 2 | ||
| - | E -- 1 | ||
| - | I -- 1 | ||
| - | M -- 2 | ||
| - | N -- 1 | ||
| - | T -- 5 | ||
| - | c -- 1 | ||
| - | d -- 1 | ||
| - | e -- 12 | ||
| - | h -- 1 | ||
| - | i -- 10 | ||
| - | l -- 2 | ||
| - | n -- 7 | ||
| - | o -- 1 | ||
| - | r -- 2 | ||
| - | s -- 6 | ||
| - | t -- 10 | ||
| - | u -- 2 | ||
| - | x -- 4 | ||
| - | </ | ||
| - | |||
| - | |||
| - | Zusatz 2: Sortiere die Statistik nach der Anzahl der Zeichen. | ||
| - | Aufruf des Programms: | ||
| - | ./statistik | ||
| - | Ausgabe/ | ||
| - | < | ||
| - | Bitte geben Sie Zeichen ein. Beenden durch Leerzeile! | ||
| - | Dies ist ein Text. Dies ist MEIN Text. Mein Text ist ein toller Text und nicht nur ein Test! | ||
| - | |||
| - | -- 18 | ||
| - | e -- 12 | ||
| - | i -- 10 | ||
| - | t -- 10 | ||
| - | n -- 7 | ||
| - | s -- 6 | ||
| - | T -- 5 | ||
| - | x -- 4 | ||
| - | M -- 2 | ||
| - | D -- 2 | ||
| - | . -- 2 | ||
| - | l -- 2 | ||
| - | r -- 2 | ||
| - | u -- 2 | ||
| - | I -- 1 | ||
| - | N -- 1 | ||
| - | E -- 1 | ||
| - | h -- 1 | ||
| - | o -- 1 | ||
| - | c -- 1 | ||
| - | ! -- 1 | ||
| - | d -- 1 | ||
| - | </ | ||
| - | |||
| - | |||
| - | Zusatz 3: Gib ein Ascii-Diagramm der Statistik aus. Die Breite der Balken soll dabei für das meist-eingegebene Zeichen auf 60 gesetzt werden. | ||
| - | Aufruf des Programms: | ||
| - | ./statistik | ||
| - | Ausgabe/ | ||
| - | < | ||
| - | Bitte geben Sie Zeichen ein. Beenden durch Leerzeile! | ||
| - | Dies ist ein Text. Dies ist MEIN Text. Mein Text ist ein toller Text und nicht nur ein Test! | ||
| - | |||
| - | -- 18 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | ||
| - | e -- 12 ++++++++++++++++++++++++++++++++++++++++ | ||
| - | i -- 10 +++++++++++++++++++++++++++++++++ | ||
| - | t -- 10 +++++++++++++++++++++++++++++++++ | ||
| - | n -- 7 +++++++++++++++++++++++ | ||
| - | s -- 6 ++++++++++++++++++++ | ||
| - | T -- 5 ++++++++++++++++ | ||
| - | x -- 4 +++++++++++++ | ||
| - | D -- 2 ++++++ | ||
| - | . -- 2 ++++++ | ||
| - | M -- 2 ++++++ | ||
| - | l -- 2 ++++++ | ||
| - | u -- 2 ++++++ | ||
| - | r -- 2 ++++++ | ||
| - | E -- 1 +++ | ||
| - | N -- 1 +++ | ||
| - | I -- 1 +++ | ||
| - | d -- 1 +++ | ||
| - | ! -- 1 +++ | ||
| - | c -- 1 +++ | ||
| - | o -- 1 +++ | ||
| - | h -- 1 +++ | ||
| - | </ | ||
| - | |||
| - | |||
| - | | ||
| - | ====== IO (II) (wird vorr. nicht erreicht) ====== | ||
| - | |||
| - | ===== Datei importieren ===== | ||
| - | * Können wir Variablen aus anderen Dateien einlesen? import/ | ||
| - | * Aufgabe: Erweitere das Programm so, dass der Benutzername in einer Konfig-Datei festgelegt wird. Das heißt, wenn kein Name als Argument übergeben wurde, soll zuerst eine Konfigurationsdatei importiert werden. Wenn in der Datei kein Name festgelegt wird oder die Datei nicht gefunden wurde, soll wie gehabt der Name auf der Eingabe abgefragt werden. | ||
| - | |||
| - | |||
| - | ===== Datei einlesen ===== | ||
| - | * Wie kann ich eine Datei komplett einlesen? | ||
| - | * Wie kann ich den Inhalt von Dateien zeilenweise einlesen? | ||
| - | |||
| - | * Aufgabe: In einer von uns bereitgestellten Log-Datei, finde die Häufigkeit der Worte " | ||
| - | ===== 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/ | ||
| - | * Einführung Subroutinen | ||
| ====== Todo ====== | ====== Todo ====== | ||
| - | * Sichtbarkeit von Variablen | + | * IO (II): |
| + | * [[Datei importieren]] | ||
| + | * [[Datei lesen]] | ||
| + | * [[Serialisierung]] | ||
| + | * [[Unterprogramme|Unterprogramme/ | ||
| + | * [[Sichtbarkeit von Variablen]] | ||
| + | * [[git]] | ||
| + | 1 | ||
programmieren_lernen/start.1400411398.txt.gz · Zuletzt geändert: 2014/05/18 11:09 von johannes_spielmann
