Motivation stupide Arbeiten dem Computer überlassen

Slides:



Advertisements
Ähnliche Präsentationen
Imperative Programmierung
Advertisements

3. Operatoren und Ausdrücke
Struktur-Funktions-Modelle von Pflanzen - Sommersemester Winfried Kurth Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik.
Zusammenfassung der Vorwoche
Imperative Programmierung
der Universität Oldenburg
Einführung in Berechenbarkeit und Formale Sprachen
Paul, Morten, Yannick Blue J. Entwicklungsumgebung versteht Java Programmcode versteht Java Programmcode Für die Entwicklung eigener Software.
Parser generieren Yet Another Compiler – Compiler YACC.
Java: Objektorientierte Programmierung
Sortierverfahren Richard Göbel.
Java: Dynamische Datentypen
Sortierverfahren Richard Göbel.
Indirekte Adressierung
Dateihandles Um in Perl eine bestimmte Datei zum Lesen, Schreiben oder Anhängen zu öffnen, benötigt man so genannte Dateihandles. Ein Dateihandle ist der.
Programmierkurs für absolute Anfänger Listen und Arrays Caren Brinckmann Sommersemester 2005.
Funktion defined Die Funktion defined testet, ob eine Variable einen anderen Wert als undef enthält. Ist der Wert undef, so wird falsch zurückgegeben,
Übungen 10 Leute haben das erste Übungsblatt allein bearbeitet bzw. separat abgegeben. Wichtig: Übungspartner finden! Außerdem: Lösungen nur einmal abgeben.
Flussdiagramm: längster Laut und seine Dauer
C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.
ARRAY oder FELD oder VEKTOR
Polymorphie (Vielgestaltigkeit)
Polymorphie (Vielgestaltigkeit)
Java- Syntax.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Perl-Grundlagen Teile der Präsentation von A. Grupp,
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 9 Claudio Moraga; Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Imperative Programmierung
Boolesche Ausdrücke Ist der Rückgabewert eines Ausdrucks vom Typ boolean, so wird dieser als Boolescher Ausdruck bezeichnet (nach dem Mathematiker George.
Praxis-Repetitorium JAVA zusätzliche, ergänzende Lehrveranstaltung
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
PKJ 2005/1 Stefan Dissmann Zusammenfassung der Vorwoche Variable stehen für (einen) Wert, der sich im Programmablauf ändern kann. Variablen besitzen einen.
Zusammenfassung Vorwoche
Christian Schindelhauer
Das Java-Hamstermodell
Programmierung 1 - Repetitorium
Einstiegsunterricht - Informatik -. Möglichkeiten des Einstiegsunterricht Benutzung und Analyse eines dokumentierten Systems Einführung in die Programmierung.
SOFTWARE.
University of Applied Sciences Übung Objektorientierte Programmierung II Dipl.-Inf. (FH) Markus Vogler.
Materialien zum Informatikunterricht (Pohlig-Häberle)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Dateien Datei = File (engl.) Mögliche Inhalte einer Datei
Entwicklung der Programmiersprachen
Ganzheitliches Projekt-, Ressourcen- und Qualitätsmanagement 1 Reports und AddOns Auf den folgenden Seiten wird Ihnen die Funktionsweise der Reports und.
Programmieren in C Einführung
Programmierung 1. Einführung Seite 1
Interpreter & Compiler
Einführung in PHP.
Einführung in PHP 5.
Agenda für heute, 20. April, 2006 Wiederholte ProgrammausführungWiederholte Programmausführung Algorithmische Grundlagen Bedingungen zum Abbruch von Programmschleifen.
Agenda für heute, 7. April, 2005 Bedingte ProgrammausführungBedingte Programmausführung Algorithmische Grundlagen Vergleichsoperatoren, Wahrheitswerte.
Agenda für heute, 14. April, 2005 Wiederholte ProgrammausführungWiederholte Programmausführung Algorithmische Grundlagen Bedingungen zum Abbruch von Programmschleifen.
Programmieren in C Grundlagen C 2
BMEVIEEA100 Grundlagen der Programmierung
PHP: Operatoren und Kontrollstrukturen
1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.
Hochschule Fulda – FB ET Sommersemester 2014
Frühjahrs-/Sommersemester 2013
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Mensch – Maschine - Kommunikation
Das Java-Hamster-Modell
1 Tagesüberblick 5 Lösung Hausaufgabe/Fragen Assoziative Felder Funktionen zu Variablenbehandlung.
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/ Übungsaufgabe vom Logische Ausdrücke 1.true & false | true 2.(10>2)
Wann ist eine Funktion (über den natürlichen Zahlen) berechenbar?
Sortierverfahren Mit VB 2010 express edition JBS Tr, info Q1.
Programmieren 1 C++ Aufgaben / Übungen.
 Präsentation transkript:

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

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

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

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

Kursinhalt Sprachen Daten 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

Vorstellungsrunde Name und Studienfächer? Vorwissen: Programmiererfahrung? Windows/Unix-Kenntnisse? Praat? Motivation: was würdest Du gerne können? Erwartungen, Wünsche? Wünsche: vielleicht warst Du schon einmal in einem anderen Programmierkurs: was war gut, was hast Du vermisst? Programmierkurs für absolute Anfänger – Sitzung 1

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 Übung: Ihr stellt Eure Lösungen vor! -> fremde Programme lesen lernen Programmierkurs für absolute Anfänger – Sitzung 1

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 Programmierung + Dokumentation Erklärung: Hauptaugenmerk auf Praxis! Programmieren lernt man nur durch eigenes Programmieren, eigene Erfahrung mit Prolog-Kurs Programmierkurs für absolute Anfänger – Sitzung 1

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

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 Verarbeitung Eingabe Ausgabe Programmierkurs für absolute Anfänger – Sitzung 1

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

Flussdiagramm: Gesamtdauer Datei öffnen START gesamtdauer := 0 alle Zeilen gelesen? lies die nächste Zeile nein ja Ausgabe gesamtdauer Zeile aufteilen in Einzelelemente: nenne 1. Wert einzellaut nenne 2. Wert einzeldauer Datei schließen STOP kursiv: Variablen gesamtdauer := gesamtdauer + einzeldauer Programmierkurs für absolute Anfänger – Sitzung 1

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

Beispiel: Durchschnittsdauer START Datei öffnen gesamtdauer := 0 anzahl_laute := 0 alle Zeilen gelesen? lies die nächste Zeile nein Zeile aufteilen in Einzelelemente: nenne 1. Wert einzellaut nenne 2. Wert einzeldauer gesamtdauer := gesamtdauer + einzeldauer anzahl_laute := anzahl_laute + 1 ja Ausgabe durchschnittsdauer Datei schließen STOP durchschnittsdauer := gesamtdauer / anzahl_laute Programmierkurs für absolute Anfänger – Sitzung 1

Beispiel: Durchschnittsdauer von 't' START Datei öffnen gesamtdauer_t := 0 anzahl_laute_t := 0 alle Zeilen gelesen? lies die nächste Zeile nein Zeile aufteilen in Einzelelemente: nenne 1. Wert einzellaut nenne 2. Wert einzeldauer ja Ausgabe durchschnittsdauer_t Datei schließen STOP durchschnittsdauer_t := gesamtdauer_t / anzahl_laute_t ja gesamtdauer_t := gesamtdauer_t + einzeldauer anzahl_laute_t := anzahl_laute_t + 1 einzellaut = 't' ? nein Programmierkurs für absolute Anfänger – Sitzung 1

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

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

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

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

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

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

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

Kontrollstrukturen Verzweigung / bedingte Anweisung Schleifen 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

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

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 nicht A 1 A B A oder B A und B 1 Programmierkurs für absolute Anfänger – Sitzung 1

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

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