Einführung in die Programmierung Wintersemester 2016/17

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

Einführung in die Programmierung

Einleitung und Begriffliches. Einleitung. Programmiersprachen. Software-Komplexität ist inhärent und hat vor allem folgende Ursachen

Modellierung und Programmierung 1

4.Grundsätzliche Programmentwicklungsmethoden

In den weiterführenden Vorlesungen

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

Programmiersprachen und Programmierkonzepte

Programmierkurs Python I

Informatik Java-Programmierkurs im Rahmen der Berufs- u. Studienorientierung für Schüler. Joliot-Curie-Gymnasium GR 2010 Nico Steinbach

Einführung in die Informatik 1

1 Vom Problem zum Programm

EINI I. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 07/08

Die Programmiersprache C Eine Einführung

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

2 Grundlagen der Programmierung

Programmiersprachen. Organisation und Einführung. Berthold Hoffmann. Studiengang Informatik Universität Bremen

1. Entwicklung der Datenverarbeitung

Funktionale Programmierung (in Clojure)

Vorlesung Programmieren

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Programmierkurs II. C und Assembler

Grundlagen der Informatik

Organisatorisches/Einstieg

Einführung in die Programmierung

Softwaretechnik. Wesentliche Inhalte der Vorlesung

Informatik Programmiersprachen eine kurze Übersicht

Informatik für Elektrotechnik und Informationstechnik

!" Aktive Beherrschung von Modellierungsmethoden! !" Aktive Beherrschung einiger theoretischer Grundlagen!

Formale Sprachen und Automaten

Kapitel 1: Einführung

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

Fundamente der Computational Intelligence

Programmiertechnik. Prof. Dr. Oliver Haase Raum G124 Tel: 07531/ Oliver Haase Hochschule Konstanz 1

Einführung in die Programmierung

Allgemeines. Verschiedene Sprachkonzepte C-Sprachfamilie C-ähnliche Programmiersprachen Allgemeines zu C. #include <stdio.h>

Kapitel 5: Abstrakte Algorithmen und Sprachkonzepte. Elementare Schritte

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

VBA-Programmierung: Zusammenfassung

Einführung in die Programmierung

4 Ausklang. ALP 2, Hannes Federrath, Sommersemester 2001

Java I Vorlesung 1 Einführung in Java

Programmieren in Haskell Einführung

Grundlagen der Programmierung

Vorlesung Programmieren

Komplexität von Algorithmen

Klausur in Programmieren

Teil 2 - Softwaretechnik. Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 2. Übersicht. Softwaretechnik

Vorlesung Berechenbarkeit und Komplexität. Motivation, Übersicht und Organisatorisches

Programmiertechnik II

Informatik - Lehrgang 2000/2001 GRUNDLAGEN

2. Programmierung in C

16. All Pairs Shortest Path (ASPS)

Einführung in die Programmierung

Programmierkurs C++ Grundlagen. Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck

Programmieren Formulierung eines Algorithmus in einer Programmiersprache

! Aktive Beherrschung von Modellierungsmethoden. ! Aktive Beherrschung einiger theoretischer Grundlagen

12. Rekursion Grundlagen der Programmierung 1 (Java)

Einführung in die Programmiertechnik

Kostenmodell. Daniel Graf, Tobias Pröger. 22. September 2016 (aktualisierte Fassung 5 vom 9. Oktober 2016)

Grundlagen der Informatik I (Studiengang Medieninformatik)

Softwareentwicklung Allgemeines und prozedurale Konstrukte

Wie entsteht ein Computerprogramm?

Algorithmen und Datenstrukturen CS1017

Programmieren für Physiker: C++

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Paradigmen im Algorithmenentwurf

Algorithmen & Programmierung. Aspekte von Algorithmen

L1 Programmiersprachen

Funktionale Programmierung. Funktionale Programmierung: Vorlesungsüberblick. Eigenschaften rein funktionaler Programmierung

Grundlagen der Informatik - 6. Praktikum

Kapitel 3. Mein erstes C-Programm

Semantik von Programmiersprachen

DAP2-Programmierpraktikum Einführung in C++ (Teil 1)

Theoretische Grundlagen des Software Engineering

Dynamische Programmierung. Problemlösungsstrategie der Informatik

Geschichte der Informatik 1/5

Einführung in die Programmierung (EPR)

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl

Abgabe: (vor der Vorlesung) Aufgabe 2.1 (P) O-Notation Beweisen Sie die folgenden Aussagen für positive Funktionen f und g:

Algorithmen und algorithmische Sprachkonzepte

Grundlagen der Informatik für Ingenieure I

Ein Streifzug durch die Programmiersprachenlandschaft in der Schule. Gerald Futschek TU Wien Informatiktag 2013

Programmieren für Fortgeschrittene

Allgemeine Informatik Thema 1 Informatik; Konzepte

Algorithmen und Datenstrukturen

WS 2011/2012. Georg Sauthoff 1. November 10, 2011

Lehrstuhl Informatik VI Grundzüge der Informatik * WS 2008/2009 Prof. Dr. Joachim Biskup

Übungsblatt 1. f(n) = f(n) = O(g(n)) g(n) = O(f(n)) Zeigen oder widerlegen Sie: 3 n = Θ(2 n ) Aufgabe 1.2 Gegeben sei die folgende Funktion:

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Dr. Thomas Neumann

Programmieren ++ Begleitende Übungen zu Veranstaltungen + Umsetzen des Algorithmus in ein lauffähiges Programm

Informatik I (D-MAVT)

Einführung in die C++ Programmierung für Ingenieure

1 Einleitung. 1.1 Höhere Programmiersprachen

Inhaltsverzeichnis. Was ist Informatik? 5. Programmierung 13. Einleitung. 1 Informatik Was ist Informatik? Teilgebiete der Informatik 8

Angewandte Mathematik und Programmierung

Prof. Dr.-Ing. Dietrich Schröder GIS und Programmiersprachen: Wohin geht die Reise?

Syntax (= Satzgefüge), vgl. auch Grammatik

Übersicht Datenstrukturen und Algorithmen. Literatur. Algorithmus: Wikipedia Definition. Vorlesung 1: Einführung. Prof. Dr.

Abstrakte Algorithmen und Sprachkonzepte

Steueranweisungen. Eike Schallehn Grundlagen der Informatik für Ingenieure Wintersemester 08/

Transkript:

Einführung in die Programmierung Wintersemester 2016/17 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund

Einleitung Gliederung Zum Begriff Informatik Zum Begriff Algorithmus Zum Begriff Programmieren 2

Was ist Informatik? Problem Erste Näherung:? Die Informatik handelt vom maschinellen Problemlösen. bzw. Die Informatik ist die Wissenschaft von der methodischen Beherrschung algorithmisch lösbarer Probleme. Maschine 3

Was ist ein Algorithmus? Problem Algorithmus Lösung Algorithmus: (anschaulich) Beschreibung eines Weges vom Problem zur Lösung. Randbedingungen: 1. Der Weg muss formal so präzise definiert sein, dass er im Prinzip von einer Maschine (rein mechanisch) gegangen werden kann. 2. Problem und Lösung müssen vorher formal spezifiziert werden. 4

Algorithmus: Beispiele Algorithmen-ähnlich: Kochrezepte Bastelanleitungen Partituren - Selten exakt ausformuliert - Interpretationsspielräume - Unschärfe ( fuzzy ), Vagheit Algorithmen aus der Schulzeit: schriftliche Addition zweier Zahlen schriftliche Multiplikation zweier Zahlen 2436 +1383 3819 5

Algorithmus: Formalere Definition Ein Algorithmus gibt an, wie Eingabedaten schrittweise in Ausgabedaten umgewandelt werden. Er beschreibt also eine Abbildung f: E A von der Menge der Eingabedaten E in die Menge der Ausgabedaten A und wie die Abbildung zu berechnen ist. Ein Algorithmus wird korrekt genannt, wenn er 1. den spezifizierten Zusammenhang zwischen E und A für alle Eingaben aus E erfüllt und wenn er 2. terminiert. 6

Beispiel: Finde jüngste Person hier im Raum Problemanalyse Annahme: Es sind n 1 Personen im Raum Formulierung jüngste Person eindeutig? Nein! a) Genauigkeit der Altersangabe in Sekunden oder Tage oder Jahre? b) Es könnten 2 Personen gleichen Alters im Raum sein! zu a) Annahme: Jahre zu b) Reihenfolge der Personen festlegen; wähle 1. Person, die minimales Alter hat Spezifikation Gegeben: Folge von n Altersangaben a 1, a 2,, a n in Jahren, n 1 Gesucht: a j = min(a 1, a 2,, a n ), wobei j die erste Stelle in der Folge sei, an der das Minimum auftritt 7

Beispiel Finde jüngste Person hier im Raum Algorithmenentwurf Gegeben: Folge von n Altersangaben a 1, a 2,, a n in Jahren, n 1 Gesucht: a j = min(a 1, a 2,, a n ), wobei j die erste Stelle in der Folge sei, an der das Minimum auftritt (1) [ Wähle 1. Kandidat ] Setze j = 1 und x = a j. (2) [ Suchlauf ] Setze i = 2. Solange i n gilt, falls a i < x, dann setze j = i und x = a j. [ jetzt gilt a j = min(a 1,, a i ) ] erhöhe i um 1 (3) [ Ausgabe ] Person j mit Alter x ist eine jüngste Person 8

Beispiel Finde jüngste Person hier im Raum Beispiel Gegeben: Folge von 8 Altersangaben 20, 21, 20, 19, 18, 19, 18, 20 1 2 3 4 5 6 7 8 j (1) 20 1 (2) 20 21 1 (2) 20 21 20 1 (2) 20 21 20 19 4 (2) 20 21 20 19 18 5 (2) 20 21 20 19 18 19 5 (2) 20 21 20 19 18 19 18 5 (2) 20 21 20 19 18 19 18 20 5 9

Beispiel Finde jüngste Person hier im Raum Korrektheit Behauptung: Beweis: Der Algorithmus ist korrekt. Wenn der Algorithmus anhält, dann ist a) a j = min(a 1,, a i ) mit 1 i n. Das gilt für i = 1 nach Schritt (1) und während des Suchlaufs invariant für alle i an der angegeben Stelle. b) j ist die erste Stelle, an der (a) gilt, weil im Fall a i = x kein Austausch mehr stattfindet, sondern nur bei a i < x. Der Algorithmus hält an, nachdem i = n war. q.e.d. 10

Beispiel Finde jüngste Person hier im Raum Effizienz Wir messen den Zeitaufwand in Einheiten E. Aktion Aufwand Häufigkeit der Aktion Setze j = 1, x = a j 2 E 1 Setze i = 2 1 E 1 Test i n 1 E n Test a i < x 1 E n - 1 Setze j = i, x = a j 2 E A Erhöhe i 1 E n - 1 Insgesamt also: T(n) = 2 + 1 + n + (n-1) + 2A + (n-1) E = (3n + 2A + 1) E 11

Beispiel Finde jüngste Person hier im Raum Effizienz T(n) = (3n + 2A + 1) E Welche Werte kann A annehmen? Hier: zwei Szenarien 1. Schlimmster Fall (engl. worst case): A = n 1 d.h., das Alter aller Personen ist paarweise verschieden und es ist in der Aufzählung absteigend sortiert T max (n) = (5n 1) E 2. Bester Fall (engl. best case): A = 0 d.h., erste Person in der Aufzählung ist bereits eine jüngste Person T min (n) = (3n + 1) E 12

Vom Problem zur Maschine Problem Erfahrung & Kreativität Algorithmus Handwerk Compiler #include <iostream> using namespace std; int main() { cout << Hi! ; return 0; } Maschine Programm 13

Schwerpunkte der Veranstaltung Problemanalyse Spezifikation Algorithmenentwurf Korrektheit / Verifikation Effizienzuntersuchungen Programmieren (kodieren) Testen / Fehlerbeseitigung Wartung / Pflege Vorlesung + Übung + Praktikum BSc Informatik DAP 2 Vorlesung + Praktikum Übung + Praktikum 14

Programmiersprachen Vorbemerkungen Denken Sprache Fachsprachen für komplexe Sachverhalte mit akzeptablen Aufwand für Fachleute Programmiersprache syntaktische Form, um Problemlösungen zu beschreiben muss von Maschine interpretiert werden können der Programmierer muss genau wissen, wie die Maschine die vereinbarte Sprache interpretiert! 15

Programmiersprachen Historisches in Kürze: In den 1930er Jahren: Präzisierung von berechenbaren Funktionen, Algorithmus, Turing-Maschine, µ-rekursive Funktion, λ-kalkül, In den 1940er Jahren: reale technische Realisierung von Rechenmaschinen (von-neumann) Konrad Zuse (Z3), Howard Aiken (Mark I), Eckert/Mauchly (ENIAC), zuerst: Programmierung in Maschinensprache (oder mit Kabeln) dann: Assemblersprachen Ersetzung von Zahlen (Maschinencode) durch mnenomische Bezeichnungen leichter zu merken, z.b. ADD, JMP, BNE, darauf aufbauend: höhere Programmiersprachen sind abstrakter, ermöglichen komplexe Sachverhalten einfacher auszudrücken Übersetzungsalgorithmen erlauben Rückführung auf niedere Sprachen Compiler, Assembler, 16

Programmiersprachen Klassifikation nach Denkweisen (Paradigmen) Imperativ / prozedural FORTRAN, BASIC, PASCAL, C, Funktional LISP, SCHEME, HASKELL, F#, Relationen- oder Logik-bezogen PROLOG, Objektorientiert Smalltalk, C++, Java, C#, Mehr dazu am Semesterende, wenn Sie C und C++ kennen gelernt haben! 17