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

Programmierkurs für absolute Anfänger

  • Upload
    abram

  • View
    34

  • Download
    0

Embed Size (px)

DESCRIPTION

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 - PowerPoint PPT Presentation

Citation preview

Page 1: Programmierkurs für absolute Anfänger

Programmierkurs für absolute Anfänger

http://www.coli.uni-saarland.de/~cabr/teaching.php

Perl, Praat & bash

Caren BrinckmannSommersemester 2005

Page 2: Programmierkurs für absolute Anfänger

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

Page 3: Programmierkurs für absolute Anfänger

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

Page 4: Programmierkurs für absolute Anfänger

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

Page 5: Programmierkurs für absolute Anfänger

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

Page 6: Programmierkurs für absolute Anfänger

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?

Page 7: Programmierkurs für absolute Anfänger

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]

Page 8: Programmierkurs für absolute Anfänger

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

Page 9: Programmierkurs für absolute Anfänger

Programmierkurs für absolute Anfänger – Sitzung 1 9

Scheinerwerb (2)Endnote: Übungsaufgaben: 40% Kurztests: 20% Abschlussaufgabe: 40%

Fragen?

Page 10: Programmierkurs für absolute Anfänger

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

Page 11: Programmierkurs für absolute Anfänger

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

Page 12: Programmierkurs für absolute Anfänger

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

Page 13: Programmierkurs für absolute Anfänger

Programmierkurs für absolute Anfänger – Sitzung 1 13

Elemente von Flussdiagrammen

Grenzstelle START

STOP

Ein-/Ausgabe(Lesen/Schreiben)

allgemeineOperation

Verzweigung

Übergangsstelle

Ablauflinien

Page 14: Programmierkurs für absolute Anfänger

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

Page 15: Programmierkurs für absolute Anfänger

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

Page 16: Programmierkurs für absolute Anfänger

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

Page 17: Programmierkurs für absolute Anfänger

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

Page 18: Programmierkurs für absolute Anfänger

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

Page 19: Programmierkurs für absolute Anfänger

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

Page 20: Programmierkurs für absolute Anfänger

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!

Page 21: Programmierkurs für absolute Anfänger

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!

Page 22: Programmierkurs für absolute Anfänger

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 (=)

Page 23: Programmierkurs für absolute Anfänger

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

Page 24: Programmierkurs für absolute Anfänger

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

Page 25: Programmierkurs für absolute Anfänger

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

Page 26: Programmierkurs für absolute Anfänger

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

Page 27: Programmierkurs für absolute Anfänger

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