Linuxhotel Wiki

Wie ging das nochmal?

Benutzer-Werkzeuge

Webseiten-Werkzeuge


programmieren_lernen:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
Letzte Überarbeitung Beide Seiten, nächste Überarbeitung
programmieren_lernen:start [2014/05/12 05:57]
ingo_wichmann [Schleifen]
programmieren_lernen:start [2015/10/21 11:20]
ingo_wichmann [Vorbereitung]
Zeile 1: Zeile 1:
-====== ​git ====== +====== ​Vorbereitung ​====== 
-[[git]] +Jeder Teilnehmer öffnet ein Pad und verlinkt es im [[https://lab.linuxhotel.de|Hauptpad zum Termin]]
-====== Hello World ====== +
-  * interaktive Shell +
-  * Quellcode-Datei +
-====== Variablen ====== +
-ErklärungVariablen sind Namen für Werte, ​...+
  
-  * Was sind die Namenskonventionen/​Wie dürfen Variablen heißen? Wird Gross/​Kleinschreibung unterschieden?​ +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.
-  * 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: +Jeder Teilnehmer löst die Basis-Problemlösungsaufgaben eines ThemasSchnelle Teilnehmer lösen auch die ZusatzaufgabenWenn alle Teilnehmer einer Sprachgruppe mit den Basis-Problemlösungsaufgaben fertig sind einigen sie sich auf jeweils eine Basislösung
-  * Schreibe ein Programm, das "​Hallo"​ und einen in einer Variablen vorhandenen Namen ausgibt! Also z.B"Hallo Klaus".+
  
-===== Datentypen (I): Skalar ​===== +====== Inhalte ======
-Erklärung: Werte haben verschiedene Typen+
  
-==== Zahl ====+  * [[Hello World]] 
 +  * [[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]] 
 +  * IO (II): 
 +    * [[Datei importieren]] 
 +    * [[Datei lesen]] 
 +    * [[Serialisierung]] 
 +  * [[Reguläre Ausdrücke]]
  
-  * Wie stelle ich eine (Dezimal-)zahl dar?  +====== Todo ====== 
-  * Wie berechne ich die folgenden arithmetischen Operationen:​ +  * [[Unterprogramme|Unterprogramme/Subroutinen/Funktionen]] 
-    * addieren +  * [[Sichtbarkeit von Variablen]]
-    * 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 ==== +  ​* [[git]]  ​
- +
-  ​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"​ +
- +
-==== 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 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 [[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 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?​ +
- ​-->​ 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+
  
programmieren_lernen/start.txt · Zuletzt geändert: 2018/12/09 15:12 von ingo_wichmann