Informatik I. Grundlagen der systematischen Programmierung. Peter Thiemann WS 2007/08. Universität Freiburg, Germany

Ähnliche Dokumente
Informatik I. Grundlagen der systematischen Programmierung. Peter Thiemann WS 2008/09. Universität Freiburg, Germany

Einführung in die Informatik

Einführung in die Informatik

Programmierung. Prof. Dr. Michael Hanus Tel , R. 706 / CAP-4

Funktionale Programmierung (in Clojure)

Die Programmiersprache Scheme... DrRacket: Die Programmierumgebung Sprache: Semantik. Sprache: Syntax

Module Angewandte Informatik 1. Semester

Erfolgreiche Anfängerausbildung im Programmieren

Gliederung. Programmierparadigmen. Sprachmittel in SCHEME. Objekte: Motivation. Objekte in Scheme

Programmierparadigmen

Programmieren Formulierung eines Algorithmus in einer Programmiersprache

Quellen: Towards a Human Computer InteractionPerspective. Übersicht. Warum visuelle Sprachen? Begriffsdefinitionen: Hinderungsgründe bisher:

Algorithmen und Datenstrukturen

Was ist ein Compiler?

Bioinformatik I (Einführung)

SWS im Prüfungsgebiet Module 1. Sem. 2. Sem. 3. Sem. 4. Sem. 5. Sem. 6. Sem. V Ü/L S V Ü/L S V Ü/L S V Ü/L S V Ü/L S V Ü/L S

Studieninformationsveranstaltung. Informatik. Institut für Informatik IV Universität Bonn. Tel.: 0228/

den Einsatz von generierenden Werkzeugen und Theorien und von Software-Engineering-Methoden

Informatik und Informationstechnik (IT)

Coma I. Einleitung. Computer und Algorithmen. Programmiersprachen. Algorithmen versus Programmiersprachen. Literaturhinweise

Algorithmen und Berechnungskomplexität I

1 Vom Problem zum Programm

Lineare Gleichungssysteme

Teil II: Konzepte imperativer Sprachen

Grammatiken. Einführung

MDA auf der Grundlage der OMG Konzepte

Part-Of-Speech-Tagging mit Viterbi Algorithmus

Einführung in die Programmierung mit Java

Mathematisch-algorithmische Grundlagen für Big Data

Security Patterns. Benny Clauss. Sicherheit in der Softwareentwicklung WS 07/08

Einführung. Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Vorlesungen zur Komplexitätstheorie. K-Vollständigkeit (1/5)

Einführung in die Programmierung WS 2014/ Algorithmus, Berechenbarkeit und Programmiersprachen 2-1

Grundbegriffe der Wirtschaftsinformatik Informationssystem I

Grundlagen der Informatik

Das Studium im Fach Informatik

Seminar Algorithmische Spieltheorie WS 2007/08. Martin Sauerhoff

Vorlesung: Montag 8:15-10:00 Donnerstag 8:15-10:00 Hörsaal: M 1 M 1

1. Einführung Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi

Seminar SS 09 Amdahl`s Law and Cloud-Computing

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen.

The B Method. B ist eine Methode zur Spezifikation zum Entwurf zur Implementierung von Software Systemen. Bücher zur B-Methode

1. Grundlegende Konzepte der Informatik

Prädikatenlogik - Micromodels of Software

Vorlesung Einführung in die Mathematische Optimierung (Wintersemester 2013/14)

WEKA A Machine Learning Interface for Data Mining

1 ÜBERSETZER. Compilerbau 1

Formale Methoden: Ein Überblick

Wie entsteht ein Computerprogramm?

2 Der Schnelleinstieg *

Kapitel 6. Komplexität von Algorithmen. Xiaoyi Jiang Informatik I Grundlagen der Programmierung

Exascale Computing. = Exascale braucht Manycore-Hardware...und was für Software??? 46/58

Alexander Piehl Grundseminar WS14/15

Approximationsalgorithmen

Seminar über Software Model Checking Vortrag zum Thema Predicate Abstraction

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 1. Einführung und Grundbegriffe

ShopBot, ein Software-Agent für das Internet

IT-Basics 2. DI Gerhard Fließ

Gemeinsam mehr erreichen.

Grundbegriffe der Informatik

Vorlesung C-Kurs 9:15-10:45 Mathe 11:15-12:45 1. Woche Hörsaal 1 2. Woche Hörsaal 7

Kapitel 3 Programmierung Lernen mit Scheme. Xiaoyi Jiang Informatik I Grundlagen der Programmierung

Informatikgrundlagen (WS 2015/2016)

Einführung. Vita Rutka. Universität Konstanz Fachbereich Mathematik & Statistik AG Numerik SS 2009

Rekonfigurierbare Regelung der Stuttgart SmartShell

Msc. Courses at the IST

Einführung in die Computerlinguistik Statistische Grundlagen

Lösung des Kleinste-Quadrate-Problems

Programmieren im Team

Datenmodelle im Kontext von Europeana. Stefanie Rühle (SUB Göttingen)

Haskell zur Constraint-Programmierung HaL8

Mathematik-Dossier. Die lineare Funktion

Language Workbench. Aktuelle Themen der Softwaretechnologie. Vortrag von: Arthur Rehm Steven Cardoso. Betreut von: Prof. Dr.

Auf dem Weg zu einer robusten Programmierausbildung

Einführung in die Informatik

參 考 書 目 現 象 學 及 其 效 應, 北 京 : 三 聯,1994 現 象 學 概 念 通 釋, 北 京 : 三 聯,1999

NP-Vollständigkeit. Krautgartner Martin ( ) Markgraf Waldomir ( ) Rattensberger Martin ( ) Rieder Caroline ( )

Programmierkurs Python I

L1 Programmiersprachen

Grundlagen der Informationverarbeitung

Organisatorisches. Zeit und Ort: Mo MZH 1450 Mi MZH Prof. Carsten Lutz Raum Cartesium 2.59 Tel. (218)

Grundlagen der Informatik II. Teil I: Formale Modelle der Informatik

Modulbeschreibung. The course is principally designed to impart: technical skills 50%, method skills 40%, system skills 10%, social skills 0%.

Einführung in Generatives Programmieren. Bastian Molkenthin

Lernumgebungen fürs Programmieren: Karas... und Turtles

Algorithmic Balancing of Symmetric Strategy Games Using Methods of Game Theory

Entwurf von Algorithmen - Kontrollstrukturen

Ausarbeitung des Interpreter Referats

Laufzeit und Komplexität

Verifikations- und Spezifikationsmethoden

Map Reduce on Hadoop Seminar SS09. Similarity Join. Tim Felgentreff, Andrina Mascher

Transformation und Darstellung funktionaler Daten

Kapitel 11: Wiederholung und Zusammenfassung

Wie lernen Kinder und was lernen sie wann am besten. Barbara Stumper Dipl.-Psychologin und Logopädin

Das Falten-und-Schneiden Problem

Klassenarbeit zu linearen Gleichungssystemen

Extract of the Annotations used for Econ 5080 at the University of Utah, with study questions, akmk.pdf.

Kapitel 15. Lösung linearer Gleichungssysteme

I. Einführung. 1. Ziel und Motivation. Ingenieur, Programmieren?? Ingenieur, Programmieren?? Technische Informatik für Ingenieure (TIfI) WS 2005/2006

Einführung in die Informatik Grammars & Parsers

Algorithmen und Komplexität Teil 1: Grundlegende Algorithmen

Transkript:

Informatik I Grundlagen der systematischen Programmierung Peter Thiemann Universität Freiburg, Germany WS 2007/08

Literatur Herbert Klaeren, Michael Sperber. Die Macht der Abstraktion. Teubner Verlag, 2007. Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi. How to Design Programs An Introduction to Computing and Programming. The MIT Press, Cambridge, Massachusetts, London, England, 2001. Siehe auch http://www.htdp.org/ Max Hailperin, Barbara Kaiser and Karl Knight. Concrete Abstractions: An Introduction to Computer Science Using Scheme. Siehe http: //gustavus.edu/+max/concrete-abstractions.html Harold Abelson, Gerald Jay Sussman with Julie Sussman. Structure and Interpretation of Computer Programs, 2. Auflage. MIT Press, 1996. Gerhard Goos. Vorlesungen über Informatik, Band 1. Springer-Verlag, 3. Aufl., 2001.

Informatik = Information + Mathematik computer science, computing science Ingenieurwissenschaft, Systemwissenschaft

Definition der ACM (Association of Computing Machinery) Computer science is the systematic study of algorithms and data structures, specifically 1. their formal properties, 2. their mechanical and linguistic realizations, and 3. their applications.

Core Subjects Principles of Computer Organization Algorithms Theory of Computation Principles of Programming Languages Vorl. Systeme Informatik II Informatik III Informatik I

Principles of Programming Languages Definition von Programmiersprachen Syntax Semantik Programmiertechniken Abstraktionsmittel Programmierhilfen Analyse von Programmen Implementierung von Programmiersprachen

Algorithmus und Programm Was kann ein Computer? Berechnungsprozesse durchführen

Algorithmus und Programm Was kann ein Computer? Berechnungsprozesse durchführen Was ist ein Berechnungsprozess? Transformation von Eingabedaten in Ausgabedaten unter Erzeugung von Effekten

Algorithmus und Programm Was kann ein Computer? Berechnungsprozesse durchführen Was ist ein Berechnungsprozess? Transformation von Eingabedaten in Ausgabedaten unter Erzeugung von Effekten Was ist ein Algorithmus? Beschreibung eines Berechnungsprozesses

Algorithmus und Programm Was kann ein Computer? Berechnungsprozesse durchführen Was ist ein Berechnungsprozess? Transformation von Eingabedaten in Ausgabedaten unter Erzeugung von Effekten Was ist ein Algorithmus? Beschreibung eines Berechnungsprozesses Was ist ein Programm? Algorithmus ausgedrückt (implementiert) in einer Programmiersprache

Algorithmus und Programm Was kann ein Computer? Berechnungsprozesse durchführen Was ist ein Berechnungsprozess? Transformation von Eingabedaten in Ausgabedaten unter Erzeugung von Effekten Was ist ein Algorithmus? Beschreibung eines Berechnungsprozesses Was ist ein Programm? Algorithmus ausgedrückt (implementiert) in einer Programmiersprache Was ist eine Programmiersprache? Formale (künstliche) Sprache zum Aufschreiben von Algorithmen

Definition: Algorithmus Vorschrift zur Durchführung eines Prozesses mit folgenden Eigenschaften: Effektivität Jeder Teilschritt ist ausführbar. Determinierheit Der nächstfolgende Teilschritt ist immer festgelegt. Finitheit Die Vorschrift ist endlich. Terminierung Die Prozess endet nach endlich vielen Teilschritten.

Beispiel: Algorithmus Fülle einen Einkaufswagen gemäss Einkaufszettel 1. Wähle eine Ware vom Einkaufszettel aus. 2. Fahre mit dem Einkaufswagen zum Standort der Ware. 3. Lade die gewünschte Menge in den Einkaufswagen. 4. Streiche die Ware vom Einkaufszettel. 5. Falls noch Waren auf dem Einkaufszettel, fahre mit 1 fort.

Weitere Beispiele für Algorithmen Kochrezepte Wegbeschreibungen Spielregeln

Programmiersprachen Systemprogrammiersprachen Nah am Berechnungsmodell der Maschine Abbildung auf Maschine offensichtlich Höhere Programmiersprachen Idealisiertes Berechnungsmodell Abbildung auf Maschine einfach Deklarative Programmiersprachen Einfacheres Berechnungsmodell Abbildung auf Maschine schwierig

Elemente von Programmiersprachen Grundbausteine Schreibweisen für Konstanten (Literale) vgl. Wörter mit fester Bedeutung (aus dem Wörterbuch) Namen (Bezeichner, Identifier) Wörter mit frei wählbarer Bedeutung Kombinationsmittel zur Konstruktion von Programmstücken aus vorhandenen Programmstücken vgl. Grammatik Abstraktionsmittel zur Benennung von Programmstücken

Der Programmierprozess 1. Konstruieren von Programmstücken mithilfe von Grundbausteinen und Kombinationsmitteln. 2. Benennen und Beschreiben von Programmstücken mit Hilfe von Abstraktionsmitteln. 3. Die so abstrahierten Programmstücke vergessen und nur die Namen weiter verwenden. 4. Weiter bei 1 bis Problem gelöst.

Was jedes Programm braucht Vertrag Beschreibung der Wirkung des Programms Beschreibung der Eingabe- und Ausgabe-Daten Testumgebung (Beispiele) Definitionen (Programmstücke)

Beispiel: Parkplatzproblem Auf einem Parkplatz stehen PKWs und Motorräder. Es handelt sich um n Fahrzeuge mit r Rädern. Bestimme die Anzahl P der PKWs.

Beispiel: Parkplatzproblem Auf einem Parkplatz stehen PKWs und Motorräder. Es handelt sich um n Fahrzeuge mit r Rädern. Bestimme die Anzahl P der PKWs. Lösungsansatz: Lineares Gleichungssystem Sei M die Anzahl der Motorräder. M + P = n 2M + 4P = r

Lösung des Gleichungssystems Multipliziere erste Gleichung mit 2 und addiere beide Gleichungen. 2M + 2P = 2n 2M + 4P = r 2P = r 2n Also: P = r/2 n

Probleme mit der Lösung P(n, r) = r/2 n P(3, 9) = 1.5

Probleme mit der Lösung P(n, r) = r/2 n P(3, 9) = 1.5

Probleme mit der Lösung P(n, r) = r/2 n P(3, 9) = 1.5 P(5, 2) = 4

Probleme mit der Lösung P(n, r) = r/2 n P(3, 9) = 1.5 P(5, 2) = 4 P(2, 10) = 3

Vollständige Spezifikation (Parkplatzproblem) Auf einem Parkplatz stehen PKWs und Motorräder. Es handelt sich um n Fahrzeuge mit r Rädern. Bestimme die Anzahl P der PKWs. Eingabe: n, r N Vorbedingung: r ist gerade, 2n r 4n Ausgabe: P N, falls die Nachbedingung erfüllbar, sonst Keine Lösung Nachbedingung: Für gewisse M, P N gilt M + P = n 2M + 4P = r

Fazit Ein Programm beschreibt einen Berechnungsprozess zur Lösung eines Problems. Eine Spezifikation/Vertrag ist ein wichtiger Schritt zur Lösung eines Problems. Eingaben außerhalb des Vertrags erzeugen unsinnige Ausgaben. Programme brauchen Verträge!