Upload
ilse-boeder
View
105
Download
0
Embed Size (px)
Citation preview
Programmierkurs für absolute Anfänger
http://www.coli.uni-saarland.de/~cabr/teaching.php
Perl, Praat & bash
Caren BrinckmannSommersemester 2005
Programmierkurs für absolute Anfänger – Sitzung 1 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:[email protected]
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 ([email protected])
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
Einführendes BeispielDaten:
g 40
u: 156
t 65
@ 52
n 80
t 72
a: 267
k 91
Aufgabe: Algorithmus, der die Dauer der Äußerung berechnet
1. lies aus der Eingabedatei die Dauerwerte ein
2. summiere die Einzeldauern auf
3. gib die Summe aus
VerarbeitungEingabe Ausgabe
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
Flussdiagramm: GesamtdauerSTART
Dateiöffnen gesamtdauer := 0
alle Zeilengelesen?
lies die nächste Zeile
nein
Zeile aufteilenin Einzelelemente:
nenne 1. Wert einzellautnenne 2. Wert einzeldauer
gesamtdauer := gesamtdauer + einzeldauer
ja Ausgabegesamtdauer
Dateischließen
STOP
Programmierkurs für absolute Anfänger – Sitzung 1 13
Elemente von Flussdiagrammen
Grenzstelle START
STOP
Ein-/Ausgabe(Lesen/Schreiben)
allgemeineOperation
Verzweigung
Übergangsstelle
Ablauflinien
Programmierkurs für absolute Anfänger – Sitzung 1 14
Beispiel: DurchschnittsdauerSTART
Dateiöffnen
gesamtdauer := 0anzahl_laute := 0
alle Zeilengelesen?
lies die nächste Zeile
nein
Zeile aufteilenin Einzelelemente:
nenne 1. Wert einzellautnenne 2. Wert einzeldauer
gesamtdauer := gesamtdauer + einzeldaueranzahl_laute := anzahl_laute + 1
ja
Ausgabe durchschnittsdauer
Dateischließen
STOP
durchschnittsdauer :=gesamtdauer / anzahl_laute
Programmierkurs für absolute Anfänger – Sitzung 1 15
Beispiel: Durchschnittsdauer von 't'START
Dateiöffnen
gesamtdauer_t := 0anzahl_laute_t := 0
alle Zeilengelesen?
lies die nächste Zeile
nein
Zeile aufteilenin Einzelelemente:
nenne 1. Wert einzellautnenne 2. Wert einzeldauer
ja
Ausgabe durchschnittsdauer_t
Dateischließen
STOP
durchschnittsdauer_t :=gesamtdauer_t / anzahl_laute_t
ja
gesamtdauer_t := gesamtdauer_t + einzeldaueranzahl_laute_t := anzahl_laute_t + 1
einzellaut = 't' ?nein
Programmierkurs für absolute Anfänger – Sitzung 1 16
Beispiel: Durchschnittsdauer aller Dateien in einem Verzeichnis
STARTVerzeichnis
öffnengesamtdauer := 0
anzahl_dateien := 0
alle Dateienverarbeitet?
gesamtdauer := gesamtdauer + gesamtdauer_dateianzahl_dateien := anzahl_dateien + 1
ja
Ausgabedurchschnittsdauer
Verzeichnisschließen
STOP
nein
durchschnittsdauer :=gesamtdauer / anzahl_dateien
verarbeite nächste Datei mitUnterprogramm "gesamtdauer"
nenne Rückgabewert gesamtdauer_datei
Programmierkurs für absolute Anfänger – Sitzung 1 17
ÜbungDaten:
g 40
u: 156
t 65
@ 52
n 80
t 72
a: 267
k 91
Aufgaben: Flussdiagramm für ein Programm, das
1) den längsten Laut und seine Dauer ausgibt a: 267
2) 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
A B A oder B A und B
0 0 0 0
0 1 1 0
1 0 1 0
1 1 1 1
A nicht A
0 1
1 0
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