Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:

Ähnliche Präsentationen


Präsentation zum Thema: "Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:"—  Präsentation transkript:

1 Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:

2 Programmierung 1 - Repetitorium Montag, den Kapitel 1 Grundlagen

3 Programmierung 1 - Repetitorium 1.1 Programme Wert = Objekte, mit denen gerechnet werden kann (Zahlen) Ausdrücke = Beschreibung von Werten (4 7+3) Konstante (4,7,3) Operatoren (,+) Bezeichner = Name für programmiersprachliche Objekte Deklarationen = Bindung von Bezeichner an Objekte (val x = 4 7+3) Schlüsselwort (val) Programm = Folge von Deklarationen Typen von Werten (int) Negative Zahlen (~7) Es folgen einige grundlegende Begriffe zum Verständnis von Programmen :

4 Programmierung 1 - Repetitorium 1.2 Interpreter Ein Interpreter ist ein Software-Werkzeug, mit dem die Programme einer Programmiersprache schrittweise ausgeführt werden können. Als Interpreter für Standard ML wurde in der Vorlesung Programmierung 1 der Moscow ML Interpreter gewählt. Weitere Informationen zu Standard ML :

5 Programmierung 1 - Repetitorium 1.3 Vergleiche und Konditionale Vergleichsoperatoren Ergebnistyp von Vergleichen ist bool. Boolesche Werte sind true und false. Allgemeine Form eines Konditionals (Wenn-dann-sonst-Entscheidung) : if e1 then e2 else e3 e1 Bedingung vom Typ bool e2 Konsequenz e3 Alternative e2 und e3 müssen typgleich sein

6 Programmierung 1 - Repetitorium 1.4 Prozeduren Prozedurdeklaration fun quadrat (x:int) = x x besteht aus Schlüsselwort fun Bezeichner quadrat, an den die Prozedur gebunden wird Argumentmuster (x:int) mit Argumentvariablen und deren Typ Schlüsselwort = Ausdruck x x beschreibt das Ergebnis der Prozedur und wird als Rumpf der Prozedur bezeichnet. Die Prozedur quadrat hat den Typ int -> int. Prozeduranwendung quadrat 4 besteht aus Prozedurbezeichner quadrat Argumentausdruck 4 Eine Klammerung des Argumentausdrucks einer Prozeduranwendung ist nur erforderlich, wenn er aus mehreren Teilausdrücken zusammengesetzt ist. Reihenfolge der Auswertung nach absteigender Priorität : ~, prozeduranwendung, div mod, + -, if then else

7 Programmierung 1 - Repetitorium 1.5 Lokale Deklarationen und Hilfsprozeduren Mit let... in... end können lokale Bezeichner für Hilfswerte sowie Hilfsprozeduren eingeführt werden. fun hoch8 (x:int) = let val a = x*x val b = a*a in b*b end fun hoch8 (x:int) = let fun q (y:int) = y*y in q(q(q(x))) end Die Gültigkeit der lokalen Deklarationen und Hilfsprozeduren endet mit dem Schlüsselwort end.

8 Programmierung 1 - Repetitorium 1.6 Tupel Tupel sind Werte, die mehrere Werte zusammenfassen. n-stelliges Tupel ( v 1,..., v n ) mit der i-ten Komponente v i Paare sind zweistellige Tupel Auf Komponenten eines Tupels kann man mit Hilfe von Projektionen zugreifen. #2 (3,true,7) true leeres Tupel ( ) Typ unit Baumdarstellung des Tupels ( 7, ( 2, true ), ~3 ) ist : ( ) 7( )~3 2true

9 Programmierung 1 - Repetitorium 1.7 Prozeduren und Tupel Tupel können als Argumente und Ergebnisse von Prozeduren verwendet werden. fun swap (x:int, y:bool) = (y,x) val swap : int*bool -> bool*int swap vertauscht die Komponenten eines Paares. swap (4,false) (false,4) : bool*int

10 Programmierung 1 - Repetitorium 1.8 Rekursive Prozeduren Eine Prozedur, die mittels Selbstapplikation definiert ist, bezeichnet man als rekursive Prozedur. fun potenz (x:int, n:int) = if n>0 then x*potenz(x,n-1) else 1 Der Ergebnistyp der rekursiven Prozedur wird unabhängig vom Prozedurrumpf direkt nach dem Argumentmuster deklariert. Auswertungsprotokoll (vereinfachte Fassung) Rekursionsbaum der Prozeduraufrufe potenz(4,2)* 4 potenz(4,1) * 4 (4 potenz(4,0)) * 4 (4 1) * 16 potenz(4,2) potenz(4,1) potenz(4,0)

11 Programmierung 1 - Repetitorium 1.9 Prozeduren und Umgebungen Unter freien Bezeichnern einer Deklaration versteht man diejenigen Bezeichner, die in der Deklaration ein Auftreten haben, welches nicht im Rahmen der Deklaration gebunden ist. fun q (x:int) = 3 + (p x) Eine Umgebung ist eine Sammlung von Bezeichnerbindungen, sodass keinem Bezeichner mehr als ein Wert zugeordnet wird. fun p (x:int) = x fun q (x:int) = 3 + (p x) fun p (x:int) = 2 x val y = q 5 { p (fun p (x:int) = 2 x, { }), q (fun q (x:int) = 3 + (p x), { p (fun p (x:int) = x, { }) }), y 8 } Programm : Auswertungsumgebung :

12 Programmierung 1 - Repetitorium 1.10 Syntax Zeichendarstellung paar(2 x-3) Baumdarstellung zusammengesetzt aus atomaren Ausdrücken und den Formen für Operator und Prozeduranwendungen Wortdarstellung paar ( 2 x – 3 ) paar- 3 2x2x

13 Programmierung 1 - Repetitorium 1.11 Klammern f 2+2+ x3x3 + f2x3f2x3 + 3 f 2x2x f(2 (x+3)) (f 2) (x+3)f(2 x)+3 Die wichtigsten Klammersparregeln : Punkt vor Strich (3 4)+5 Operatoranwendung gruppiert nach links (2+3)+4 Prozeduranwendung vor Operatoranwendung f 3+4 (f 3)+4 Prozeduranwendung gruppiert nach links f g 3 (f g) 3

14 Programmierung 1 - Repetitorium 1.12 Syntaxübersicht Wörter sind Konstanten, Operatoren, Schlüsselwörter, Bezeichner. Phrasen sind Ausdrücke, Deklarationen, Programme, Typen und Argumentmuster. Ausdrücke sind Atomare Ausdrücke (Konstante/Bezeichner), Applikationen (Operatoranwendungen, Projektionen, Prozeduranwendungen), Konditionale (if then else ), Tupel-Ausdrücke, Let-Ausdrücke (let in end). Deklarationen :val = val (,..., ) = fun = fun : Ergebnistyp = Programme :Folge von Deklarationen Argumentmuster :( :,..., : ) Typen :Atomare Typen (int, bool, unit), Prozedurtypen Tupeltypen...

15 Programmierung 1 - Repetitorium 1.13 Semantische Zulässigkeit Bevor ein Interpreter ein Programm ausführt, prüft er zunächst, ob das Programm semantisch zulässig ist. Die damit verbundenen Bedingungen betreffen die Bindung von Bezeichnern und den typgerechten Aufbau von Ausdrücken. Wohlgetypte Phrasen sind typgerecht aufgebaut, d.h. jedes vorkommende Auftreten eines Bezeichners ist durch eine Deklaration gebunden. Die Bedingungen zur Wohlgetyptheit lassen sich mit Hilfe von Typregeln formulieren. Dazu später mehr.

16 Programmierung 1 - Repetitorium 1.14 Verarbeitungsphasen 1.Lexikalische Analyse (eingegebene Zeichenfolge = Folge von Wörtern?) 2.Syntaktische Analyse / Parsing (Ergebnis von 1. = Programm?) 3.Semantische Analyse / Elaboration (Ergebnis von 2. = semantisch zulässig?) 4.Ausführung / Evaluation (Auswertung des Programms) statische Phasen : dynamische Phasen :

17 Programmierung 1 - Repetitorium 1.15 Auswertung Auswertungsprobleme : Auswertung von Ausdrücken (geg. Ausdruck e und Umgebung V, bestimme den Wert, den e für V liefert) Auswertung von Deklarationen (geg. Deklaration d und Umgebung V, bestimme die Umgebung, die d für V liefert) Auswertung von Prozeduraufrufen (geg. Prozedur p und Wert v, der als Argument für p zulässig ist, bestimme den Wert, den p für v liefert)

18 Programmierung 1 - Repetitorium 1.16 Laufzeitfehler und Divergenz Möglichkeiten für den Verlauf der Ausführung eines Programms : - Reguläre Terminierung (Ausführung endet nach endlich vielen Schritten OK) - Abbruch wegen Laufzeitfehlern (Abbruch aufgrund eines Fehlersignals) - Abbruch durch den Benutzer (Ctrl + C) - Abbruch wegen Ressourcenüberschreitung (Speicherplatz erschöpft) - Divergenz (Ausführung endet nicht)

19 Programmierung 1 - Repetitorium 1.17 Festkomma- und Gleitkommazahlen Festkommazahlen = ganze Zahlen (Moscow ML : Typ int [-2 30,..., ]) Bei Überlauf : Laufzeitfehler Overflow Gleitkommazahl x = m 10 n (Moscow ML : Typ real ) Operatoren können überladen sein, was bedeutet, dass sie auf mehr als einen Typ angewendet werden können. Mischungen sind nicht zulässig, da Festkomma- und Gleitkommazahlen zu unterschiedlichen Darstellungssystemen gehören. Bei Überlauf : Rundungsfehler (Akkumulierung möglich)

20 Programmierung 1 - Repetitorium 1.18 Standardstrukturen Für die Erledigung von Standardaufgaben gibt es Standardprozeduren, welche von Standardstrukturen zur Verfügung gestellt werden. Die Objekte einer Standardstruktur werden durch zusammengesetzte Bezeichner identifiziert (z.B. Math.pi), die aus dem Bezeichner der Struktur (z.B. Math) und aus dem lokalen Bezeichner des Objektes (z.B. pi) bestehen.


Herunterladen ppt "Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:"

Ähnliche Präsentationen


Google-Anzeigen