Grundlagen der Programmierung - Algorithmen

Werbung
Grundlagen der Informatik
Sommersemester 2006
Prof. Bernhard Jung
Folien im Web: http://www.informatik.tu-freiberg.de/lehre/pflicht/GRUNDL/index_ss06.html
Einleitung
Vom Programm zur Maschine
Übersetzer (Compiler), Virtuelle Maschinen
Vom Problem zum Programm (... nicht ganz!)
Darstellung von Algorithmen mit Programmablaufplänen
Darstellung von Algorithmen mit Struktogrammen
Hauptlernziel: Darstellungsmittel verstehen, die es ermöglichen,
Algorithmen unabhängig von konkreten Programmiersprachen zu formulieren
Prof. B. Jung
Grundlagen der Informatik, SS 2006
1
Algorithmus
Problemlösungsbeschreibung, die festlegt, wie ein Problem gelöst werden soll
unabhängig von konkreter Programmiersprache
Programm
Streng formalisierter, eindeutiger und detaillierter Algorithmus, der maschinell
ausgeführt werden kann
Programmiersprache
Formalisierte Sprache zum Schreiben von Algorithmen, die ausgeführt werden
sollen
Klassen von Programmiersprachen:
Maschinenorientierte Sprachen:
Maschinencodes (1GL), Assemblersprachen (2GL)
Problemorientierte Sprachen:
prozedurale (3GL), bildschirmorientierte (4GL), deklarative (5GL) Sprachen
funktionale, objektorientierte Sprachen
Prof. B. Jung
Grundlagen der Informatik, SS 2006
!
Mensch
Menschl. Tätigkeit
?
Menschl. Tätigkeit
Computer
Aufgabe des
Übersetzers (Compiler)
Umgangssprache
Algorithm. 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
Prof. B. Jung
Algorithmus
Programm
Maschinenprogramm
Grundlagen der Informatik, SS 2006
2
"
Assembler
LOAD#10,R0
#10,R0
LOAD
LOAD#12,R1
#12,R1
LOAD
SUMR0,
R0,R1
R1
SUM
STORR1,#45
R1,#45
STOR
loadspecial
special(register)
(register)variable
variableR0
R0with
with10
10
; ;load
loadspecial
special(register)
(register)variable
variableR1
R1with
with12
12
; ;load
addspecial
specialvariables
variablesR0
R0and
andR1
R1
; ;add
storethe
theresult
resultinto
intomemory
memorylocation
location#45
#45
; ;store
maschinennahe Sprache
Lesbarere Form von Maschinensprache (Anweisungen
entsprechen i.d.R. 1:1 den Anweisungen in Maschinensprache)
Maschinensprache
kann von Prozessor verarbeitet werden
Maschinenprogramm = Folge von Bytes
Prof. B. Jung
0100
0010
10
01
0101
0112
12
01
0200
0001
01
02
03
01
45
03 01 45
Grundlagen der Informatik, SS 2006
! #
"
$
Übersetzung von Programmen in problemorientierten
Programmiersprachen zu Programmen in Maschinensprache
Java
C++
PC
C#
Apple
Fortan
Sun
Pascal
Problem: m × n Übersetzer notwendig!
Prof. B. Jung
Grundlagen der Informatik, SS 2006
3
%
&'
(
"Ideale" Situation: gemeinsame virtuelle Maschine für alle
Programmiersprachen und Plattformen
nur m + n Übersetzer notwendig
Java
C++
PC
C#
Virtuelle
Maschine
Apple
Python
Sun
PHP
Prof. B. Jung
Grundlagen der Informatik, SS 2006
%
(
&)
*+
PC
Java
Java
Virtuelle
Maschine
Jython
Apple
Sun
Visual C++
C#
VisualBasic
TCL
Prof. B. Jung
Microsoft
.Net
Common
Language
Runtime
Windows
Grundlagen der Informatik, SS 2006
4
Ziel der Arbeit mit dem Computer: Lösung von Problemen
Problem
gegeben:
Anfangszustand / Eingaben
Menge von möglichen Operationen
Endzustand / Ausgaben (zumindest im Prinzip bekannt / verifizierbar)
natürlich-sprachl. Beschreibung (auch: mehr oder weniger formale Spezifikation)
Algorithmus
allgemeiner Lösungsplan, der festlegt, wie man durch Ausführung von Aktionen
von einem gegebenen Anfangszustand zu einem Endzustand gelangt (bzw. für
gegebene Eingabe eine Ausgabe berechnet)
Algorithmus soll möglichst für eine Klasse ähnlicher Probleme gültig sein
z.B. nicht nur ein bestimmtes Bild invertieren
sondern beliebige Bilder invertieren
Beschreibung z.B. durch Programmablaufpläne oder Struktogramme
Prof. B. Jung
Grundlagen der Informatik, SS 2006
,
*.
Anweisungen /
Aktionen
einfache Anweisungen /
elementare Aktionen
Sequenz /
Folge
Kontrollstrukturen /
Steueranweisungen
Auswahl /
Alternative / Selektion
Wiederholung /
Iteration
Aufruf anderer
Algorithmen /
Block / Unterprogramm
Einfache Anweisungen
Anweisung A, evtl. mit Parametern x, y, z:
A; A(x); A(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)
Ausgabe von Daten: Ausgabe(x); Ausgabe(3); Ausgabe(x,z,4)
Prof. B. Jung
Grundlagen der Informatik, SS 2006
5
*-
,
/
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 Bergakademie Freiberg", ...
Listen: [1,2,3], ["eins", "zwei", drei"], ...
Boolean: true, false
Objekte (später)
...
Ausdrücke
z.B. zur Berechnung von Zahlenwerten
2-4; 1/a; 5*(4-z/(1+y)); ...
(a, y, z sind Variablen)
z.B. zur Berechnung bool'scher Werte (Bedingungen)
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
Prof. B. Jung
Grundlagen der Informatik, SS 2006
,
-0
Programmablaufpläne: graph-orientierte Darstellung
Struktogramme: block-orientierte Darstellung
Anweisung (auch "Verarbeitung")
A
Ausführung der
Anweisung A
A1
Folge / Sequenz
Erst Anweisung A1
dann Anweisung A2
Prof. B. Jung
A2
Grundlagen der Informatik, SS 2006
6
,
-0
Alternative / Auswahl
B
ja
Falls Bedingung B
dann Anweisung A1
sonst Anweisung A2
nein
A1
A2
Mehrfache Alternative:
B
Falls Bedingung =
W1: Anweisung A1
W2: Anweisung A2
sonst: Anweisung A3
Prof. B. Jung
W1
W2
A1
sonst
A2
A3
Grundlagen der Informatik, SS 2006
,
-0
Bedingte Wiederholung
B
(abweisend)
nein
ja
Solange Bedingung B
wiederhole Anweisung A
A
Bedingte Wiederholung
(akzeptierend; nicht abweisend)
A
Wiederhole Anweisung A
solange Bedingung B
ja
"Schleife"
Prof. B. Jung
B
nein
Grundlagen der Informatik, SS 2006
7
,
-0
Block-Definition
N(P)
Definition Block N mit
formalen Parametern P, Rumpf A
und Rückgabewert R
A
R
Block-Aufruf:
N(P) bzw. X = N ( P )
als Anweisung N(P) mit oder ohne Zuweisung
Ersetzen der formalen Parameter P durch die aktuellen Parameter
Abarbeiten des Rumpfes A (Parameter P können verwendet
und verändert werden)
Rückgabe des Ergebnisses R
Sonstige Konstrukte
Beginn, Ende von Algorithmen
Prof. B. Jung
START
STOP
Grundlagen der Informatik, SS 2006
1
-
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.
Prof. B. Jung
Grundlagen der Informatik, SS 2006
8
1
-
Fakultätsfunktion
Multiplikation aller natürlichen
Zahlen von 1 bis n.
Realisierung rekursiv als Block
falls n == 0: Ergebnis 1
sonst (n>0): n! = n * (n-1)!
Hauptprogramm
Eingabe einer (natürlichen)
Zahl n
Aufruf der Fakultätsfunktion für
n
Ausgabe des Ergebnisses
Prof. B. Jung
Grundlagen der Informatik, SS 2006
*
oft gefordert: Terminierung von
Algorithmen
aber: z.T. nicht einfach
nachprüfbar, ob Algorithmus
terminiert
z.B. unbekannt, ob "ULAMAlgorithmus" (rechts) für
beliebige Eingaben terminiert
START
Eingabe(n)
n>1
nein
ja
n ungerade?
STOP
nein
ja
n=3×n+1
Prof. B. Jung
n = n div 2
Grundlagen der Informatik, SS 2006
9
,
(
Programmablaufpläne: graph-orientiert Darstellung
Struktogramme: block-orientierte Darstellung (Nassi & Shneidermann, 1973; DIN 66261)
Anweisung
A
Ausführung der
Anweisung A
Folge / Sequenz
A1
A2
Erst Anweisung A1
dann Anweisung A2
Prof. B. Jung
Grundlagen der Informatik, SS 2006
,
(
Alternative / Auswahl
B
ja
Falls Bedingung B
dann Anweisung A1
sonst Anweisung A2
A1
nein
A2
Mehrfache Alternative:
Falls Bedingung =
W1: Anweisung A1
W2: Anweisung A2
sonst: Anweisung A3
Prof. B. Jung
B
W1
A1
W2
A2
sonst
A3
Grundlagen der Informatik, SS 2006
10
,
(
Bedingte Wiederholung
B
(abweisend)
Solange Bedingung B
wiederhole Anweisung A
A
Bedingte Wiederholung
(akzeptierend; nicht abweisend)
A
Wiederhole Anweisung A
solange Bedingung B
B
Iteration über Sequenzen
Für jedes Element x der Liste L
wiederhole Anweisung A (auf das
jeweilige x kann in jedem
Schleifendurchgang zugegriffen
werden)
Prof. B. Jung
for x in L
A
Grundlagen der Informatik, SS 2006
,
(
N(P)
Block-Definition
Definition Block N mit
formalen Parametern P, Rumpf A
und Rückgabewert R
Block-Aufruf:
Prof. B. Jung
A
R
N(P) bzw. X = N ( P )
Grundlagen der Informatik, SS 2006
11
1
(
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.
Prof. B. Jung
1
Grundlagen der Informatik, SS 2006
(
Fakultätsfunktion
Multiplikation aller natürlichen
Zahlen von 1 bis n.
Realisierung rekursiv als Block
falls n == 0: Ergebnis 1
sonst (n>0): n! = n * (n-1)!
Prof. B. Jung
Grundlagen der Informatik, SS 2006
12
1
(
Eingabe(filename)
picture = makePicture(filename)
for pixel in getPixels(picture)
r = getRed(pixel)
g = getGreen(pixel)
b = getBlue(pixel)
setRed(pixel, 255 - r)
setGreen(pixel, 255 - g)
setBlue(pixel, 255 – b)
Invertierung von Bildern
Funktion makePicture erzeugt
aus einem Dateinamen (String)
eine interne Datenstruktur (Matrix
von Pixeln) zur Repräsentation
eines Bildes
Funktion getPixels erzeugt für
das als Parameter übergebene Bild
eine Liste mit allen Pixeln des
Bildes
Prof. B. Jung
show(picture)
Grundlagen der Informatik, SS 2006
13
Herunterladen