Linuxhotel Wiki

Wie ging das nochmal?

Benutzer-Werkzeuge

Webseiten-Werkzeuge


programmieren_lernen:start

Dies ist eine alte Version des Dokuments!


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?
  • 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:

  • 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“ + 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 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:
a = "eins"
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 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

Aufgabe

Erweitere das hello-world Programm so, dass es es für alle übergebenen Namen einen Gruß ausgibt. Also z.B. so:

./hello Klaus Frank Thomas

Ausgabe:

Guten Tag Klaus!
Guten Tag Frank!
Guten Tag Thomas!

Erweitere das hello-world Programm so, dass wenn kein Argument übergeben wurde, „Hello World“ ausgegeben wird.

Erweitere Das hello-world Programm so, dass wenn ein übergebener Name mehr als 10 Zeichen lang ist übergeben wurde, statt dessen „Hallo!“ ausgegeben wird.

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

  • Sichtbarkeit von Variablen
programmieren_lernen/start.1399971820.txt.gz · Zuletzt geändert: 2014/05/13 09:03 von ingo_wichmann