Termin 2: Grundlagen der Programmierung - Algorithmen. Folien im Web:

Ähnliche Dokumente
Grundlagen der Programmierung - Algorithmen

einseitige Selektion zweiseitige Selektion

Flussdiagramm / Programmablaufplan (PAP)

11. Rekursion, Komplexität von Algorithmen

Problemlösen, ein Einstieg nicht nur für die Informatik

1. Grundkonzepte der logischen Programmierung 2. Syntax von Prolog 3. Rechnen in Prolog. IV.1 Grundkonzepte der logischen Programmierung - 1 -

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22

Elementare Konzepte von

Labor Software-Entwicklung 1

2. Algorithmenbegriff

Grundlagen der Informatik I (Studiengang Medieninformatik)

Motivation und Überblick

DIN FB Technologie und Management DIN DIN 66001

Kontrollstrukturen - Universität Köln

Kapitel 1: Informationsverarbeitung durch Programme

Kontrollstrukturen. Verzweigungen Einfache Mehrfache Wiederholungen Eine Sequenz durchlaufen Wiederhole bis Solange. Tue

Wie rechnet ein Rechner?

Kapitel 2: Python: Ausdrücke und Typen. Grundlagen der Programmierung 1. Holger Karl. Wintersemester 2016/2017. Inhaltsverzeichnis 1

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

Funktionen in Matlab. Nutzerdefinierte Funktionen können in.m-datei gespeichert werden

EIGENSCHAFTEN VON SPRACHEN

5. Einführung in die Algorithmik

Javakurs für Anfänger

Programmentwurf mittels strukturierter Programmierung. Programmentwurf. Nassi-Shneiderman-Diagramm [DIN ]

Übungs- und Praktikumsaufgaben zur Systemprogrammierung Dipl.-Ing. H. Büchter (Lehrbeauftragter) FH-Dortmund WS 2001/2002 / SS 2002

4.Grundsätzliche Programmentwicklungsmethoden

2 Eine einfache Programmiersprache

2. Programmierung in C

Mächtigkeit von WHILE-Programmen

Einführung in die Programmierung mit VBA

Grundlagen der Informatik 0

Programmablaufplan. Vorkurs Informatik. Sommersemester Institut für Informatik Heinrich-Heine-Universität Düsseldorf

Computergrundlagen Programmiersprachen, Interpreter, Compiler, Linker

Programmieren lernen mit Perl

VBA-Programmierung: Zusammenfassung

5. Übung - Kanalkodierung/Programmierung

Kapitel 1: Einführung

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff

Zwischenklausur Informatik, WS 2016/17. Lösungen zu den Aufgaben

Inhalt. 1. Einführung in die Informatik. 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele.

Konzepte der Programmiersprachen

Grundlagen der OO- Programmierung in C#

Technische Informatik II Rechnerarchitektur

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

einlesen n > 0? Ausgabe Negative Zahl

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

2. Programmierung in C

Assembler - Einleitung

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 14/15

4.3 Verifikation von Aussagen über Algorithmen

Inhalt. 1. Einführung in die Informatik. 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele.

JAVA als erste Programmiersprache Semesterkurs

Praktische Informatik 1

Einführung in die Programmierung

Computergrundlagen Programmiersprachen, Interpreter, Compiler, Linker

Algorithmik II. SS 2003 Prof. Dr. H. Stoyan Lehrstuhl für Informatik 8 ( Künstliche Intelligenz) stoyan@informatik.uni-erlangen.

WiMa-Praktikum 1. Woche 8

Intensivübung zu Algorithmen und Datenstrukturen

Abschnitt 2: Daten und Algorithmen

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2

Willkommen zur Vorlesung. Algorithmen und Datenstrukturen

1. Formulieren Sie den Algorithmus <Bedienung eines Getränkeautomaten> nach den oben genannten Kriterien.

2. Die Darstellung von Algorithmen

Inhaltsverzeichnis. Kurseinheit 1. Kurseinheit 2

Die Programmiersprache C Eine Einführung

Strukturierte Programmentwicklung

Kapitel 5: Abstrakte Algorithmen und Sprachkonzepte. Elementare Schritte

Anweisungen und Kontrollstrukturen

Struktogramme. Hinweise 1 Stand:

2 Der Schnelleinstieg *

Einführung in die Programmierung 1

Programmiersprachen und Programmierkonzepte

Programmieren lernen mit Groovy Rekursion Rekursion und Iteration

(Aufgaben zu Wertzuweisungen siehe Vorlesungsbeilage S. 49)

16. März 2016 artb5-v1.1

Klausur: Grundlagen der Informatik I, am 05. Februar 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Javakurs für Anfänger

Entwurf von Algorithmen - Kontrollstrukturen

Objektorientierte Modellierung (1)

Tag 3 Repetitorium Informatik (Java)

BKTM - Programmieren leicht gemacht.

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme

Informatik I - Einstiegskurs

Einführung in die Informatik Iterationen

Algorithmen und Datenstrukturen

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

Einführung in die Informatik Algorithms

System.out.println("TEXT");

FD Informatik Mauch SSDL (WHRS) Reutlingen. Algorithmen

1 Aufgaben 1.1 Objektorientiert: ("extended-hamster") Sammel-Hamster

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 15/16

Dank. Theoretische Informatik II. Teil II. Registermaschinen. Vorlesung

Tag 5. Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme)

EINI LogWing/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 17/18

Compilerbau + Virtuelle Maschinen

Transkript:

Termin 2: Grundlagen der Programmierung - lgorithmen Grundlagen der Informatik Wintersemester 2006 Prof. ernhard Jung Übersicht Folien im Web: http://www.informatik.tu-freiberg.de/lehre/pflicht/grundl/index_ws0607.html Einleitung Vom Programm zur Maschine Übersetzer (Compiler), Virtuelle Maschinen Vom Problem zum Programm (... nicht ganz!) Darstellung von lgorithmen mit Programmablaufplänen Darstellung von lgorithmen mit Struktogrammen Hauptlernziel: Darstellungsmittel verstehen, die es ermöglichen, lgorithmen unabhängig von konkreten Programmiersprachen zu formulieren 1

Wiederholung: lgorithmen, Programme, Programmiersprachen lgorithmus Problemlösungsbeschreibung, die festlegt, wie ein Problem gelöst werden soll unabhängig von konkreter Programmiersprache Programm Streng formalisierter, eindeutiger und detaillierter lgorithmus, der maschinell ausgeführt werden kann Programmiersprache Formalisierte Sprache zum Schreiben von lgorithmen, die ausgeführt werden sollen Klassen von Programmiersprachen: Maschinenorientierte Sprachen: Maschinencodes (1GL), ssemblersprachen (2GL) Problemorientierte Sprachen: prozedurale (3GL), bildschirmorientierte (4GL), deklarative (5GL) Sprachen funktionale, objektorientierte Sprachen Kommunikation Mensch-Maschine: vom Problem zum Maschinenprogramm Mensch? Computer Menschl. Tätigkeit Menschl. Tätigkeit ufgabe des Übersetzers (Compiler) Umgangssprache lgorithm. Sprache Programmiersprache Maschinensprache komplex mehrdeutig semiformal noch nicht vollständig detailliert exakter Formalismus meist genormt unabhäbgig von bestimmt. Prozessor primitiv abhängig vom jeweiligen Prozessor Problem lgorithmus Programm Maschinenprogramm 2

Was Computer verstehen: Maschinensprache LOD LOD #10,R0 #10,R0 ;; load loadspecial (register) (register) variable variable R0 R0 with with10 10 LOD LOD #12,R1 #12,R1 ;; load loadspecial (register) (register) variable variable R1 R1 with with12 12 SUM SUM R0, R0, R1 R1 ;; add addspecial specialvariables R0 R0 and and R1 R1 STOR STOR R1,#45 R1,#45 ;; store storethe theresult resultinto intomemory memorylocation #45 #45 ssembler maschinennahe Sprache Lesbarere Form der Maschinensprache (nweisungen entsprechen i.d.r. 1:1 den nweisungen in Maschinensprache) Darstellung von zulässigen itfolgen durch sog. Mnemoniks z.. efehl: Lade Wert in Register, Mnemonik: LOD, Maschinencode: 01 Maschinensprache kann von Prozessor verarbeitet werden für Menschen aber kaum verständlich, nur von Experten bearbeitet Maschinenprogramm = Folge von ytes 01 0100 0010 10 01 01 01 0112 12 02 0200 0001 01 03 0301 0145 45 Übersetzer (Compiler) Übersetzung von Programmen in problemorientierten Programmiersprachen zu Programmen in Maschinensprache Java C++ C# Fortan PC pple Sun Pascal Problem: m n Übersetzer notwendig! 3

Virtuelle Maschinen Ideale Situation "Ideale" Situation: gemeinsame virtuelle Maschine für alle Programmiersprachen und Plattformen nur m + n Übersetzer notwendig Java C++ C# Python PHP Virtuelle Maschine PC pple Sun Virtuelle Maschinen Real Existierende Situation Visual C++ Java Jython Java Virtuelle Maschine PC mit Intel Chip PC mit MD Chip pple Sun C# Visualasic TCL Microsoft.Net Common Language Runtime PC mit Intel Chip PC mit MD Chip 4

lgorithmen Ziel der rbeit mit dem Computer: Lösung von Problemen Problem gegeben: nfangszustand / Eingaben Menge von möglichen Operationen Endzustand / usgaben (zumindest im Prinzip bekannt / verifizierbar) natürlich-sprachl. eschreibung (auch: mehr oder weniger formale Spezifikation) lgorithmus allgemeiner Lösungsplan, der festlegt, wie man durch usführung von ktionen von einem gegebenen nfangszustand zu einem Endzustand gelangt (bzw. für gegebene Eingabe eine usgabe berechnet) lgorithmus soll möglichst für eine Klasse ähnlicher Probleme gültig sein z.. nicht nur ein bestimmtes ild invertieren sondern beliebige ilder invertieren eschreibung z.. durch Programmablaufpläne oder Struktogramme Darstellung von lgorithmen: Einfache nweisungen und Kontrollstrukturen nweisungen / ktionen einfache nweisungen / elementare ktionen Kontrollstrukturen / Steueranweisungen Sequenz / Folge uswahl / lternative / Selektion Wiederholung / Iteration ufruf anderer lgorithmen / lock / Unterprogramm Einfache nweisungen nweisung, evtl. mit Parametern x, y, z: ; (x); (x,y,z) Eingabe von Daten: Eingabe(x); Eingabe(x,y) Zuweisung von Daten: x=2; y=z; y=3+4; y=3+4*(5-6); z=f(x) usgabe von Daten: usgabe(x); usgabe(3); usgabe(x,z,4) 5

Einfache Datenstrukturen und usdrücke Einfache Datenstrukturen (später mehr davon) Ganze Zahlen ("integer"): 1, 2, 5, -100,... Reelle Zahlen ("float"): 0.1, 3.14, 10.0, -33.33,... Zeichenketten ("string"): "TU ergakademie Freiberg",... Listen: [1,2,3], ["eins", "zwei", drei"],... oolean: true, false Objekte (später)... usdrücke z.. zur erechnung von Zahlenwerten 2-4; 1/a; 5*(4-z/(1+y));... (a, y, z sind Variablen) z.. zur erechnung bool'scher Werte (edingungen) Gleichheit von zwei Werten: i == 5 Ungleichheit: x!= 10 größer, größer-oder-gleich, kleiner, kleiner-oder-gleich: a>1, a>=1, a<9, a<=9 Darstellung von lgorithmen: Programmablaufpläne Programmablaufpläne: graph-orientierte Darstellung Struktogramme: block-orientierte Darstellung nweisung (auch "Verarbeitung") usführung der nweisung Folge / Sequenz Erst nweisung 1 dann nweisung 2 1 2 6

Darstellung von lgorithmen: Programmablaufpläne lternative / uswahl ja nein Falls edingung dann nweisung 1 sonst nweisung 2 1 2 Mehrfache lternative: Falls edingung = W1: nweisung 1 W2: nweisung 2 sonst: nweisung 3 W1 W2 sonst 1 2 3 Darstellung von lgorithmen: Programmablaufpläne edingte Wiederholung (abweisend) ja nein Solange edingung wiederhole nweisung edingte Wiederholung (akzeptierend; nicht abweisend) Wiederhole nweisung solange edingung "Schleife" ja nein 7

Darstellung von lgorithmen: Programmablaufpläne lock-definition Definition lock N mit formalen Parametern P, Rumpf und Rückgabewert R N(P) R lock-ufruf: N(P) bzw. X = N ( P ) als nweisung N(P) mit oder ohne Zuweisung Ersetzen der formalen Parameter P durch die aktuellen Parameter barbeiten des Rumpfes (Parameter P können verwendet und verändert werden) Rückgabe des Ergebnisses R Sonstige Konstrukte eginn, Ende von lgorithmen STRT STOP eispiele Programmablaufplan Produktbildung Eine Folge von Zahlen soll eingegeben und miteinander multipliziert werden. Wird eine Null eingeben, wird das Produkt der bisherigen Zahlen ausgegeben. Ist das Produkt größer 1000, erfolgt statt der Multiplikation eine Fehlerausschrift. 8

eispiele Programmablaufplan Fakultätsfunktion Multiplikation aller natürlichen Zahlen von 1 bis n. Realisierung rekursiv als lock falls n == 0: Ergebnis 1 sonst (n>0): n! = n * (n-1)! Hauptprogramm Eingabe einer (natürlichen) Zahl n ufruf der Fakultätsfunktion für n usgabe des Ergebnisses Einschub: Terminierung von lgorithmen oft gefordert: Terminierung von lgorithmen STRT aber: z.t. nicht einfach nachprüfbar, ob lgorithmus terminiert z.. unbekannt, ob "ULM- lgorithmus" (rechts) für beliebige Eingaben terminiert Eingabe(n) n>1 ja n ungerade? ja nein nein STOP n = 3 n + 1 n = n div 2 9

Darstellung von lgorithmen: Struktogramme Programmablaufpläne: graph-orientiert Darstellung Struktogramme: block-orientierte Darstellung (Nassi & Shneidermann, 1973; DIN 66261) nweisung usführung der nweisung Folge / Sequenz Erst nweisung 1 dann nweisung 2 1 2 Darstellung von lgorithmen: Struktogramme lternative / uswahl Falls edingung dann nweisung 1 sonst nweisung 2 ja 1 nein 2 Mehrfache lternative: Falls edingung = W1: nweisung 1 W2: nweisung 2 sonst: nweisung 3 W1 1 W2 2 sonst 3 10

Darstellung von lgorithmen: Struktogramme edingte Wiederholung (abweisend) Solange edingung wiederhole nweisung edingte Wiederholung (akzeptierend; nicht abweisend) Wiederhole nweisung solange edingung Iteration über Sequenzen Für jedes Element x der Liste L wiederhole nweisung (auf das jeweilige x kann in jedem Schleifendurchgang zugegriffen werden) for x in L Darstellung von lgorithmen: Struktogramme lock-definition Definition lock N mit formalen Parametern P, Rumpf und Rückgabewert R N(P) R lock-ufruf: N(P) bzw. X = N ( P ) 11

eispiele Struktogramm Produktbildung Eine Folge von Zahlen soll eingegeben und miteinander multipliziert werden. Wird eine Null eingeben, wird das Produkt der bisherigen Zahlen ausgegeben. Ist das Produkt größer 1000, erfolgt statt der Multiplikation eine Fehlerausschrift. eispiele Struktogramm Fakultätsfunktion Multiplikation aller natürlichen Zahlen von 1 bis n. Realisierung rekursiv als lock falls n == 0: Ergebnis 1 sonst (n>0): n! = n * (n-1)! 12

eispiele Struktogramme Eingabe(filename) Invertierung von ildern Funktion makepicture erzeugt aus einem Dateinamen (String) eine interne Datenstruktur (Matrix von Pixeln) zur Repräsentation eines ildes Funktion getpixels erzeugt für das als Parameter übergebene ild eine Liste mit allen Pixeln des ildes picture = makepicture(filename) for pixel in getpixels(picture) r = getred(pixel) g = getgreen(pixel) b = getlue(pixel) setred(pixel, 255 - r) setgreen(pixel, 255 - g) setlue(pixel, 255 b) show(picture) 13