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