Dies ist eine alte Version des Dokuments!
Jeder Teilnehmer öffnet ein Pad und verlinkt es im Hauptpad zum Termin.
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, auf denen die Problemlösungsaufgaben in den folgenden Kapiteln aufbauen.
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.
Schreibe ein Programm hello-world
, das „hello world“ ausgibt.
Aufruf des Programms:
./hello-world
Ausgabe:
hello world
Erklärung: Wofür sind Variablen gut?
Schreibe ein Programm hello-name
, das „hello“ und einen in einer Variablen vorhandenen Namen ausgibt! Also z.B. „hello Klaus“.
Aufruf des Programms:
./hello-name
Ausgabe:
hello Klaus
Erklärung: Warum werden Datentypen unterschieden?
3 * 5 + 2
? 2 + 5 * 3
?(2 + 5) * 3
?2 + (5 * 3)
?(0.1+0.7)*10
?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
?
Schreibe ein Programm rechner
, das die Variablen 'zahl1' und 'zahl2' mit allen oben gefundenen Rechenoperatoren (addieren, subtrahieren, multiplizieren, dividieren, potenzieren) verknüpt und jeweils das Ergebnis ausgibt.
Aufruf des Programms:
./rechner
Ausgabe: (wenn zahl1 = 6 ist, und zahl2 = 2 ist)
8 4 12 3 9
Erklärung: Wofür sind Strings gut? Wo werden Strings verwendet?
„1000“ + 2
? Was ist „1000“ * 2
?
Schreibe ein Programm greeter
so, dass ein ganzer Satz ausgegeben wird, z.B. „Hallo Klaus!“. Dabei soll der Name Klaus aus einer Variablen übernommen werden.
Aufruf des Programms:
./greeter
Ausgabe: (wenn name = 'Klaus' ist)
Hallo Klaus!
Erklärung: Wie kann ich feststellen, ob eine „Bedingung“ wahr oder falsch ist?
(0.1+0.7)*10 == 8
Erklärung: Wie kann ich abhängig von einer Bedingung verschiede Anweisungen zum Ausführen bringen?
n
größer als 25 ist?n
größer als 12 oder k
kleiner als 25 ist?k
größer als 100 ist, und eine andere falls nicht?
Schreibe ein Programm friendly
so, dass der Gruß „Hallo!“ ausgegeben wird, wenn der Name 10 Zeichen oder länger ist, aber für Namen mit 9 Zeichen oder wenigern der vorherige Satz, z.B. „Hallo Klaus!“ Dabei soll der Name wie vorhin aus einer Variablen übernommen werden.
Aufruf des Programms:
./friendly
Ausgabe: (wenn name = 'Klaus' ist)
Hallo Klaus!
Ausgabe: (wenn name = 'Helmut-Jürgen')
Hallo!
Erklärung: Welche praktischen Probleme kann man mit Schleifen lösen? Wenn man Dinge mehrmals ausführen möchte, benutzt man eine Schleife.
print „Hallo!“
) ausführen lassen, bis das Programm beendet wird?
Schreibe ein Programm infinite
so, dass der Gruß „Hallo Welt!“ ausgegeben wird, bis das Programm (per Strg+C) beendet wird!
Aufruf des Programms:
./infinite
Ausgabe:
Hallo Welt! Hallo Welt! Hallo Welt! Hallo Welt! Hallo Welt! Hallo Welt! Hallo Welt! ^C
Schreibe ein Programm finite
, das den Gruß „Hallo Welt“ genau zehn mal ausgibt, und bitte mit Nummerierung.
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!
Erklärung: Wie kann ich mehrere Dinge (z.B. Namen von Benutzern, Zahlen) hintereinander abspeichern?
liste
: „eins“, 2, 3.0
liste
am Ende von folgendem Pseudocode. Bitte durch nachdenken lösen, dann mit einem Programm überprüfen! Warum ist der Wert so, wie du herausgefunden hast?a = "eins" b = 2 c = 3.0 liste = [a,b,c] a = 5
l
eine neue Liste k
, die die ersten 3 Elemente von l
enthält?[], [''], [0], [False]
Erklärung: Wofür ist die Argumentenliste gut? Wie kann ich Werte in das Programm hineingeben?
Wie kann ich aus dem Programm heraus auf die Parameter/Argumenten zugreifen, die dem Programm beim Start mitgegeben wurden?
Schreibe ein Programm greetall
, das für alle auf der Kommandozeile übergebenen Namen einen Gruß ausgibt.
Aufruf des Programms:
./greetall Klaus Frank Thomas
Ausgabe:
Guten Tag Klaus! Guten Tag Frank! Guten Tag Thomas!
Erweitere das Programm greetall
so, dass wenn kein Argument übergeben wurde, „Hallo Welt!“ ausgegeben wird.
Aufruf des Programms:
./greetall
Ausgabe:
Hallo Welt!
Erweitere das Programm greetall
so, dass wenn ein übergebener Name mehr als 10 Zeichen lang ist, statt dessen „Hallo!“ ausgegeben wird (um die Ausgabe nicht so lang werden zu lassen).
Aufruf des Programms:
./greetall Klaus Frank Thomas Karl-Friedrich
Ausgabe:
Guten Tag Klaus! Guten Tag Frank! Guten Tag Thomas! Hallo!
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 greetall
zu greetall2
so um, dass es über die eingegebenen Namen iteriert. Die Ausgabe des Programms bleibt dabei gleich; nur intern verändert sich etwas, so dass der Programmcode etwas anders aussieht.
Aufruf des Programms:
./greetall2 Klaus Frank Thomas
Ausgabe:
Guten Tag Klaus! Guten Tag Frank! Guten Tag Thomas!
Diskussionsfrage: Auf welche Arten kann ein Programm mit der Außenwelt kommunizieren?
Erklärung: Oft sollen Programme vom Benutzer eine Eingabe von der Tastatur lesen, anstatt alle Parameter im Vorhinein auf der Kommandozeile zu bekommen.
Schreibe ein Programm greetme
, das den Benutzer zur Eingabe eines Namens auffordert. Wenn ein Name eingegeben wurde, soll die bekannte Begrüßung („Guten Tag <name>“ bzw „Hallo!“) ausgegeben werden und sich das Programm dann beenden. Wenn kein Name eingegeben wurde, soll das Programm erneut nach einem Namen fragen.
Aufruf des Programms:
./greetme
Ausgabe/Eingabe:
Bitte geben Sie Ihren Namen ein: Bitte geben Sie Ihren Namen ein: Klaus Guten Tag Klaus!
Ausgabe/Eingabe:
Bitte geben Sie Ihren Namen ein: Karlfriedrich Hallo!
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 „Wert“).
Beispiel:
Wie kann man sich die Datenstruktur vorstellen? Bild mit Eimer und Fähnchen
Schreibe ein Programm statistik
, das vom Benutzer eine Eingabe erwartet. Sobald der Benutzer eine leere Zeile eingibt, gibt das Programm eine Statistik über die Häufigkeit der eingegebenen Zeichen aus.
Aufruf des Programms:
./statistik
Ausgabe/Eingabe:
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/Eingabe:
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/Eingabe:
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/Eingabe:
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 +++