1 / 27

Programmierkurs für absolute Anfänger

Programmierkurs für absolute Anfänger.  Perl, Praat & bash. http://www.coli.uni-saarland.de/~cabr/teaching.php. Caren Brinckmann Sommersemester 2005. Motivation. stupide Arbeiten dem Computer überlassen weniger Zeit und konsistenter als von Hand

abram
Download Presentation

Programmierkurs für absolute Anfänger

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programmierkurs für absolute Anfänger  Perl, Praat & bash http://www.coli.uni-saarland.de/~cabr/teaching.php Caren Brinckmann Sommersemester 2005

  2. Motivation • stupide Arbeiten dem Computer überlassen • weniger Zeit und konsistenter als von Hand • Wiederholungen / Änderungen / Fehlerbehebung leicht möglich • Arbeiten mit großen Datenmengen möglich Programmierkurs für absolute Anfänger – Sitzung 1

  3. Beispiele • Intonationsuntersuchung: Wörter aus der Datenbank CELEX heraussuchen, die nur aus stimmhaften Lauten bestehen • Perzeptionsexperiment • "pieps" vor wav-Dateien einfügen • Ausgabedaten von SCAPE für statistische Analyse umformatieren • Produktionsexperiment: Daten mit Praat labeln, Werte in tabellarischer Form ausgeben und für statistische Analyse umformatieren • Analyse eines annotierten Korpus: • durchschnittliche Dauerwerte aller Laute • Häufigkeiten von Tilgungen und Ersetzungen Programmierkurs für absolute Anfänger – Sitzung 1

  4. Ziele • programmiertechnische Grundkonzepte verstehen • Aufgaben strukturiert analysieren und als Algorithmus formulieren können • einfache Programme selbst schreiben können • klaren Programmierstil aneignen • Fehler suchen und finden • fremde Programme verstehen und verändern können • selbstständig weiterlernen können Programmierkurs für absolute Anfänger – Sitzung 1

  5. Kursinhalt • Sprachen • Schwerpunkt: Perl • höhere Programmiersprache • sehr gut geeignet für die Verarbeitung von großen Textmengen • Praat-Skripte: automatisierte Analyse von Sprachdateien • Shell-Skripte (bash): Wiederholung von UNIX-Befehlen • Daten • CELEX: lexikalische Datenbank (Deutsch, Englisch, Niederländisch) mit Informationen über • Aussprache mit Silbengrenzen • Morphologie und Syntax • Worthäufigkeit • Kiel Corpus: gelesene und spontane Sprachdaten • segmentelle und prosodische Annotation Programmierkurs für absolute Anfänger – Sitzung 1

  6. Vorstellungsrunde • Name und Studienfächer? • Vorwissen: • Programmiererfahrung? • Windows/Unix-Kenntnisse? • Praat? • Motivation: was würdest Du gerne können? • Erwartungen, Wünsche? Programmierkurs für absolute Anfänger – Sitzung 1

  7. Organisatorisches • Di: Vorlesung (5.09) • Fr: Übung (5.08) Besprechung der bearbeiteten Übungsaufgaben Ausgabe der neuen Übungsaufgaben • CIP-Pool (5.08): Einloggen unter Linux und unter Windows möglich? Wenn nicht  Systemgruppe • eigene e-mail Adresse schicken an:cabr@coli.uni-sb.de Programmierkurs für absolute Anfänger – Sitzung 1

  8. Scheinerwerb (1) • regelmäßige Anwesenheit:max. 2 Vorlesungen und 2 Übungen verpassen • Übungsaufgaben • 1 Woche Bearbeitungszeit • Bearbeitung zu zweit! • Abgabe per e-mail (cabr@coli.uni-sb.de) • 2 schriftliche Kurztests im Laufe des Semesters • Termine werden rechtzeitig bekanntgegeben • Minimum: 50% der Gesamtpunktzahl über beide Tests • Abschlussaufgabe • kleines, abgegrenztes Projekt • eigene Vorschläge möglich • Bearbeitung zu zweit! • Programmierung + Dokumentation Programmierkurs für absolute Anfänger – Sitzung 1

  9. Scheinerwerb (2) Endnote: • Übungsaufgaben: 40% • Kurztests: 20% • Abschlussaufgabe: 40% Fragen? Programmierkurs für absolute Anfänger – Sitzung 1

  10. Verarbeitung Eingabe Ausgabe Einführendes Beispiel Daten: g 40 u: 156 t 65 @ 52 n 80 t 72 a: 267 k 91 Aufgabe: Algorithmus, der die Dauer der Äußerung berechnet • lies aus der Eingabedatei die Dauerwerte ein • summiere die Einzeldauern auf • gib die Summe aus Programmierkurs für absolute Anfänger – Sitzung 1

  11. Was ist ein Algorithmus? • Bearbeitungsvorschrift, die aus elementaren Grundschritten besteht: • Lesen • Schreiben • arithmetische Operation • Vergleichen • Springen • liefert auf eine eindeutig festgelegte Weise zu jeder vorgegebenen Eingabe in endlich vielen Schritten eine Ausgabe • jedes Programm führt mindestens einen Algorithmus aus Programmierkurs für absolute Anfänger – Sitzung 1

  12. Dateiöffnen gesamtdauer := 0 alle Zeilengelesen? lies die nächste Zeile Ausgabegesamtdauer nein ja Dateischließen Zeile aufteilenin Einzelelemente:nenne 1. Wert einzellautnenne 2. Wert einzeldauer STOP gesamtdauer := gesamtdauer + einzeldauer Flussdiagramm: Gesamtdauer START Programmierkurs für absolute Anfänger – Sitzung 1

  13. Elemente von Flussdiagrammen Grenzstelle START Verzweigung STOP Ein-/Ausgabe(Lesen/Schreiben) Übergangsstelle allgemeineOperation Ablauflinien Programmierkurs für absolute Anfänger – Sitzung 1

  14. Dateiöffnen START gesamtdauer := 0anzahl_laute := 0 alle Zeilengelesen? lies die nächste Zeile durchschnittsdauer :=gesamtdauer / anzahl_laute nein ja Dateischließen Ausgabedurchschnittsdauer Zeile aufteilenin Einzelelemente:nenne 1. Wert einzellautnenne 2. Wert einzeldauer STOP gesamtdauer := gesamtdauer + einzeldaueranzahl_laute := anzahl_laute + 1 Beispiel: Durchschnittsdauer Programmierkurs für absolute Anfänger – Sitzung 1

  15. gesamtdauer_t := 0anzahl_laute_t:= 0 START Dateiöffnen alle Zeilengelesen? lies die nächste Zeile durchschnittsdauer_t :=gesamtdauer_t / anzahl_laute_t nein ja Zeile aufteilenin Einzelelemente:nenne 1. Wert einzellautnenne 2. Wert einzeldauer Ausgabedurchschnittsdauer_t Dateischließen einzellaut = 't' ? nein STOP ja gesamtdauer_t := gesamtdauer_t + einzeldaueranzahl_laute_t := anzahl_laute_t + 1 Beispiel: Durchschnittsdauer von 't' Programmierkurs für absolute Anfänger – Sitzung 1

  16. Beispiel: Durchschnittsdauer aller Dateien in einem Verzeichnis Verzeichnis öffnen gesamtdauer := 0 anzahl_dateien := 0 START alle Dateienverarbeitet? ja durchschnittsdauer :=gesamtdauer / anzahl_dateien nein Ausgabedurchschnittsdauer verarbeite nächste Datei mit Unterprogramm "gesamtdauer" nenne Rückgabewert gesamtdauer_datei Verzeichnisschließen gesamtdauer := gesamtdauer + gesamtdauer_datei anzahl_dateien := anzahl_dateien + 1 STOP Programmierkurs für absolute Anfänger – Sitzung 1

  17. Übung Daten: g 40 u: 156 t 65 @ 52 n 80 t 72 a: 267 k 91 Aufgaben: Flussdiagramm für ein Programm, das • den längsten Laut und seine Dauer ausgibta: 267 • die maximale Dauer von 't' ausgibt72 Programmierkurs für absolute Anfänger – Sitzung 1

  18. Höhere Programmiersprachen (1) • erlauben strukturierte Beschreibung von Algorithmen • der "Quellcode" eines Programms wird automatisch in entsprechende Maschinenbefehle übersetzt: • kompilierte Sprachen, z.B. C, C++Quellcode  Compiler lauffähiges Binary • Vorteil: kompilierte Programme sind sehr schnell • Nachteil: maschinenabhängig • Skriptsprachen oder interpretierte Sprachen, z.B. bash, Praat-Skriptsprache: Interpreter führt den Quellcode direkt aus • Vorteil: maschinenunabhängig, Übersetzungsschritt fällt weg • Nachteil: langsamer • interpretative Sprachen und virtuelle Maschinen, z.B. Perl, Java: Mischform von Compiler und Interpreter Programmierkurs für absolute Anfänger – Sitzung 1

  19. Höhere Programmiersprachen (2) • imperativ-prozedural: Pascal, Basic, Perl, Skriptsprachen • klassische Aufgabenstellung: Eingabe, Verarbeitung, Ausgabe • "wie?": Weg zur Lösung = Folge von Operationen • Hauptprogramm mit Unterprozeduren • objektorientiert: C++, Java • Zusammenfassung von Daten und auf diesen Daten operierenden Algorithmen zu Objekten • deklarativ: Lisp, Prolog • "was?": Beschreibung was berechnet werden soll, nicht wie diese Rechnung durchzuführen ist Programmierkurs für absolute Anfänger – Sitzung 1

  20. Syntax & Semantik • Syntax: Die Programme müssen der fest vorgeschriebenen Grammatik der jeweiligen Programmiersprache gehorchen • Quellcode muss syntaktisch korrekt sein, damit er vom Compiler-Interpreter übersetzt werden kann Beispiel (Perl):$z=$x+$y; ## syntaktisch korrekt$z=$x plus $y; ## syntaktisch falsch • Semantik: Bedeutung des jeweiligen programmiersprachlichen Konstrukts  was bewirkt es, wenn es ausgeführt wird • Programme können syntaktisch korrekt sein, aber semantisch falsch! Programmierkurs für absolute Anfänger – Sitzung 1

  21. Sprachelemente imperativ-prozeduraler Programmiersprachen (1) • sequenzielle Ablauforientierung: • Anweisungen werden nacheinander ausgeführt • Anweisungen erzeugen oder verändern Werte • Konstante: • Objekt mit einem Wert, der sich über die ganze Programmablaufzeit nicht ändert • Variable: • Objekt, das während des Programmablaufs beliebig oft seinen Wert ändern kann • hat immer einen festen Namen • Typisierung: in vielen Sprachen haben Variablen einen Typ, z.B. dürfen sie nur Zahlen oder Zeichen enthalten • Feld / Array / Vektor: • Liste von durchnummerierten Variablen, z.B. dauer0, dauer1, dauer2 • Felder fangen in vielen Programmiersprachen mit Index 0 an! Programmierkurs für absolute Anfänger – Sitzung 1

  22. Sprachelemente imperativ-prozeduraler Programmiersprachen (2) • Operator: • erzeugt aus einem oder zwei Werten (= Operanden) einen neuen Wert • unäre Operatoren haben einen Operanden, z.B. -2 • binäre Operatoren haben zwei Operanden, z.B. 2 * 3 • Präzedenz von Operatoren  im Zweifelsfall Klammern setzen, z.B. (4 * 3) + 10 • Ausdruck: • besteht aus Konstanten, Variablen und Operatoren,z.B. $x + $y (addiert die Werte der Variablen $x und $y) • Zuweisung: • setzt den Wert einer Variablen auf den Wert eines Ausdrucks, z.B. $z = $x + $y • Achtung: Vergleich (==) vs. Zuweisung (=) Programmierkurs für absolute Anfänger – Sitzung 1

  23. Kontrollstrukturen • Verzweigung / bedingte Anweisung • prüft, ob eine bestimmte Aussage wahr ist • ist sie wahr, wird ein bestimmter Programmteil ausgeführt, sonst ein anderer (oder nichts) • Schleifen • ein bestimmter Programmteil wird mehrmals durchlaufen, solange oder bis eine bestimmte Aussage wahr ist Programmierkurs für absolute Anfänger – Sitzung 1

  24. Prozeduren und Funktionen • Strukturierung und Teamarbeit • Prozedur: Unterprogramm, das für sich alleine lauffähig ist, und das beliebig oft wiederverwendet werden kann • Funktion: Prozedur, die nach Beendigung ihrer Arbeit zusätzlich einen Wert zurückliefert • Funktionen und Prozeduren können Parameter haben, d.h. Eingabedaten, mit denen sie arbeiten Programmierkurs für absolute Anfänger – Sitzung 1

  25. Wahrheitswerte • Überprüfung einer Aussage auf ihren Wahrheitsgehalt, z.B. einzellaut = 't' Aussage hat einen Wahrheitswert • Kodierung von Wahrheitswerten: • 0 = falsch • 1 = wahr • logische Operatoren: nicht, oder, und Programmierkurs für absolute Anfänger – Sitzung 1

  26. komplexe Aussagen • Präzedenz der logischen Operatoren: • nicht hat eine höhere Präzedenz als und • und hat eine höhere Präzedenz als oder • "Gurken sind rot und 5 ist gerade oder Juli ist ein Sommermonat"  "Gurken sind rot und (5 ist gerade oder Juli ist ein Sommermonat)" • Übung: wahr oder falsch? • 4 ist ungerade oder Juli ist ein Sommermonat • 4 ist ungerade und Juli ist ein Sommermonat • 7 ist ungerade und 3 mal 5 ist 15 • nicht 4 ist gerade • 3 plus 4 ist 7 oder 7 ist ungerade und 3 mal 5 ist 17 • (3 plus 4 ist 7 oder 7 ist ungerade) und 3 mal 5 ist 17 • nicht (4 ist ungerade oder Juli ist ein Sommermonat) • nicht 4 ist ungerade und Juli ist ein Sommermonat Programmierkurs für absolute Anfänger – Sitzung 1

  27. zum Nachlesen • Ziegler, Joachim (2002): Programmieren lernen mit Perl. Kapitel 1. Berlin: Springer. • im Handapparat in der Bibliothek Programmierkurs für absolute Anfänger – Sitzung 1

More Related