• Keine Ergebnisse gefunden

Vom Algorithmus zum Programm •

N/A
N/A
Protected

Academic year: 2022

Aktie "Vom Algorithmus zum Programm •"

Copied!
142
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Vom Algorithmus zum Programm

• Menschen und Maschinen

• Spezifikation

• Maschinenorientierte Präzisierung

• Präzisierung von Daten- und Anweisungskonstruktoren

• Programm und Programmiersprache

• Syntax und Semantik

(2)

Vom Algorithmus zum Programm

Menschen und Maschinen

Ziel: Einsatz einer Maschine statt eines Menschen für den Verteilungsalgorithmus

Unterschiede Mensch - (ideale) Maschine

sehr schnell und vor allem unermüdlich

absolut zuverlässig. Handlung beim millionsten Male genauso exakt wie beim ersten Male.

unbedingt gehorsam; tun genau das, was man ihnen befiehlt; tun nichts, was man ihnen nicht befiehlt;

führen jede Handlung ohne Verständnis aus

(3)

Vom Algorithmus zum Programm

Menschen und Maschinen

Ziel: Einsatz einer Maschine statt eines Menschen für den Verteilungsalgorithmus

Unterschiede Mensch - (ideale) Maschine

sehr schnell und vor allem unermüdlich

absolut zuverlässig. Handlung beim millionsten Male genauso exakt wie beim ersten Male.

unbedingt gehorsam; tun genau das, was man ihnen befiehlt; tun nichts, was man ihnen nicht befiehlt;

führen jede Handlung ohne Verständnis aus

jedes Detail

vollständig und ganz exakt beschreiben;

jede Situation berücksichtigen

(4)

Vom Algorithmus zum Programm

Defizite des Verteilungsalgorithmus

Exaktheit unseres Verteilungsalgorithmus:

Was ist in Anweisung 1. und 2. eine "gut sichtbare Stelle"?

Was bedeutet Anweisung 3.1 "Leere den Briefkasten", wenn keine Zettel abgegeben wurden, Briefkasten also schon leer ist?

Was bedeutet Anweisung 3.2 "Schreibe auf jeden Zettel eine Zahl ...", wenn der Briefkasten leer war, und daher in 3.2 gar keine Zettel da sind, auf die man etwas schreiben kann?

viele weitere Defizite

(5)

Vom Algorithmus zum Programm

technische Probleme

• Eine Maschine wird nicht ...

• “Briefkasten aufhängen”

• Eintrittskarten verkaufen

(6)

Vom Algorithmus zum Programm

technische Probleme

• Eine Maschine wird nicht ...

• “Briefkasten aufhängen”

• Eintrittskarten verkaufen

• Menschen gelingt es kraft Vernunft, fehlende Information zu ergänzen und problematische Situationen und Anweisungen vernünftig zu bewältigen

• Maschinen derzeit nicht

(7)

Vom Algorithmus zum Programm

Folgerungen

• Maschine wird nicht alle Tätigkeiten beim Verteilungsverfahren übernehmen, die

vorher der Mensch erledigt hat

• Automatisierungsversuch scheitert auf jeden

Fall an der unpräzisen Darstellung unseres

Verteilungsalgorithmus

(8)

Vom Algorithmus zum Programm

Spezifikation des Problems

Spezifikation = exakte Definition, was der Computer leisten soll

• Formalisierung später

• hier nur umgangssprachlich

(9)

Vom Algorithmus zum Programm

Spezifikation des Problems

Kleincomputer C mit Tastatur und Bildschirm

nach jeder Briefkastenleerung drückt M Taste "E" (Eingabe) und tippt die auf den Zetteln eingetragenen/angekreuzten Daten getrennt durch Druck auf Eingabetaste ↵ und Leertaste ein

C codiert Eingaben und bildet Codenummer (Anw. 3.2.1 - 3.2.3)

alle Zettel einer Leerung eingetippt? M drückt Taste "F" (fertig)

C sortiert die Zahlen und mischt sie mit früher eingegebenen Werten zusammen

letzte Leerung und alle Zettel eingetippt? M drückt fortlaufend Taste "A" (Abrufen); C zeigt jedes Mal eine Zahl in der

vorgeschriebenen Reihenfolge auf dem Bildschirm; M ruft die letzten drei Ziffern dieser Zahl, also die Ordnungsnummer, aus.

(10)

Vom Algorithmus zum Programm

Spezifikation des Problems

Kleincomputer C mit Tastatur und Bildschirm

nach jeder Briefkastenleerung drückt M Taste "E" (Eingabe) und tippt die auf den Zetteln eingetragenen/angekreuzten Daten getrennt durch Druck auf Eingabetaste ↵ und Leertaste ein

C codiert Eingaben und bildet Codenummer (Anw. 3.2.1 - 3.2.3)

alle Zettel einer Leerung eingetippt? M drückt Taste "F" (fertig)

C sortiert die Zahlen und mischt sie mit früher eingegebenen Werten zusammen

letzte Leerung und alle Zettel eingetippt? M drückt fortlaufend Taste "A" (Abrufen); C zeigt jedes Mal eine Zahl in der

vorgeschriebenen Reihenfolge auf dem Bildschirm; M ruft die letzten drei Ziffern dieser Zahl, also die Ordnungsnummer, aus.

Aufgabe: Transformiere diese Aufgaben nun in eine

Darstellung, die C auch

versteht

(11)

Vom Algorithmus zum Programm

Präzisierung der Objekte

Zu präzisieren: Zahlen, Zettelstapel, Texte

• Zahlen sind schon präzise

• z.B.: 771036, 971007, 920126

• Zettelstapel als Zahlenfolgen

• z.B.: [771036, 971007, 920126]

(12)

Vom Algorithmus zum Programm

Präzisierung der Objekte

Zu präzisieren: Zahlen, Zettelstapel, Texte

• Zahlen sind schon präzise

• z.B.: 771036, 971007, 920126

• Zettelstapel als Zahlenfolgen

• z.B.: [771036, 971007, 920126]

oberster Zettel

(13)

Vom Algorithmus zum Programm

Präzisierung der Objekte

Zu präzisieren: Zahlen, Zettelstapel, Texte

• Zahlen sind schon präzise

• z.B.: 771036, 971007, 920126

• Zettelstapel als Zahlenfolgen

• z.B.: [771036, 971007, 920126]

unterster Zettel

(14)

Vom Algorithmus zum Programm

Präzisierung der Objekte

Zu präzisieren: Zahlen, Zettelstapel, Texte

• Zahlen sind schon präzise

• z.B.: 771036, 971007, 920126

• Zettelstapel als Zahlenfolgen

• z.B.: [771036, 971007, 920126]

kein Zettelstapel

=leere Zahlenfolge

[ ]

(15)

Vom Algorithmus zum Programm

Präzisierung der Objekte

Zu präzisieren: Zahlen, Zettelstapel, Texte

• Zahlen sind schon präzise

• z.B.: 771036, 971007, 920126

• Zettelstapel als Zahlenfolgen

• z.B.: [771036, 971007, 920126]

• Texte in “...”:

• z.B.: "Kommen Sie von auswärts?"

(16)

Vom Algorithmus zum Programm

Präzisierung der Elementaranweisungen

Zu präzisieren: Daten merken, identifizieren, nachschauen

identifizieren

eindeutige Namen (Bezeichner) vergeben

merken

Zuweisung: z.B.:

fertig [771036, 971007, 920126]

frage ← "Kommen Sie von auswärts?".

z ← 1

leerung [ ]

(17)

Vom Algorithmus zum Programm

Präzisierung der Elementaranweisungen

Zu präzisieren: Daten einlesen von Tastatur, anzeigen auf Bildschirm

einlesen (Eingabe)

lies(...)

z.B.: lies(leerung)

anzeigen (Ausgabe)

zeige(...)

z.B.: zeige(fertig)

(18)

Vom Algorithmus zum Programm

Präzisierung der Elementaranweisungen

Zu präzisieren: Daten einlesen von Tastatur, anzeigen auf Bildschirm

einlesen (Eingabe)

lies(...)

z.B.: lies(leerung)

anzeigen (Ausgabe)

zeige(...)

z.B.: zeige(fertig)

bei Zahlen und Texten schließt

↵ die Eingabe ab

(19)

Vom Algorithmus zum Programm

Präzisierung der Elementaranweisungen

Zu präzisieren: Daten einlesen von Tastatur, anzeigen auf Bildschirm

einlesen (Eingabe)

lies(...)

z.B.: lies(leerung)

anzeigen (Ausgabe)

zeige(...)

z.B.: zeige(fertig)

Bei Eingabe einer

Zahlenfolge ein weiteres Mal am Schluß der Eingabe ↵

(20)

Vom Algorithmus zum Programm

Präzisierung der Elementaranweisungen

Zu präzisieren: Daten einlesen von Tastatur, anzeigen auf Bildschirm

einlesen (Eingabe)

lies(...)

z.B.: lies(leerung)

anzeigen (Ausgabe)

zeige(...)

z.B.: zeige(fertig)

2 7 ↵ 3 ↵ 4 6 1 ↵ ↵

[27,3,461]

(21)

Vom Algorithmus zum Programm

Präzisierung der Objektbeschreibung

Motivation

• Identifizierung von Namen

• Bezeichnet leerung eine Zahlenfolge, eine einzelne Zahl oder einen Text?

• Davon hängt Ausführung der Anweisung lies(...) ab

• => Drücken der ↵-Taste beendet

Eingabe insgesamt oder nur die Eingabe

einer Zahl einer Zahlenfolge

(22)

Vom Algorithmus zum Programm

Typen und Deklarationen 1

Lösung: Ergänze Typen

"Zahl"

"Zahlenfolge"

"Text"

Ergänze Vereinbarungen/Deklarationen:

def fertig, leerung: Zahlenfolge

def z: Zahl

def frage: Text

(23)

Vom Algorithmus zum Programm

Typen und Deklarationen 1

Lösung: Ergänze Typen

"Zahl"

"Zahlenfolge"

"Text"

Ergänze Vereinbarungen/Deklarationen:

def fertig, leerung: Zahlenfolge

def z: Zahl

def frage: Text

fertig und leerung in Zukunft nur Zahlenfolgen;

z nur eine Zahl;

frage nur ein Text

(24)

Vom Algorithmus zum Programm

Typen und Deklarationen - Definitionen

Definition

Ein Bezeichner ist eine Zeichenfolge, die zur eindeutigen Identifizierung eines Objekts dient.

Definition

Die Zuweisung ist eine Anweisung, durch die ein Bezeichner einen (neuen) Wert erhält.

Definition

Eine Deklaration/Vereinbarung ist die Festlegung, welche Bedeutung ein Bezeichner im Algorithmus besitzen soll, d.h., welche Typen von Objekten mit dem Bezeichner benannt werden dürfen.

(25)

Vom Algorithmus zum Programm

Präzisierung von Operationen auf Objekten

• wir können noch nicht auf Objekten operieren

daher:

• bei Zahlen: +, -, *, /

• bei Zahlenfolgen: sort(f), misch(f,g)

(26)

Vom Algorithmus zum Programm

Operationen - Beispiele

Addition zweier Zahlen a und b:

def a,b,c: Zahl;

a ← 3;

b ← 6;

c ← a + b;

zeige(c) .

3.3 Sortiere die Zettel aufsteigend nach diesen Zahlen zu einem Stapel, die kleinste Zahl nach oben:

leerung ← sort(leerung)

3.4 Mische diesen Stapel und den Stapel, der aus den

Zetteln besteht, die du bei früheren Briefkastenleerungen geholt hast, zusammen:

fertig ← misch(fertig,leerung)

(27)

Vom Algorithmus zum Programm

weitere Operationen auf Folgen

• erstes(f): erste Zahl der Folge f

Beispiel: erstes([771036, 971007, 920126]) liefert 771036.

• rest(f): Folge f ohne das erste Folgenelement

Beispiel: rest([771036, 971007, 920126]) ist [971007, 920126].

Speziell: rest([771036]) ist die leere Folge [ ].

5.1

Anwendung:

Rufe die Ordnungsnummer des obersten Zettels aus;

5.2 Lege den Zettel beiseite

wird zu

zeige(erstes(fertig));

fertig ← rest(fertig)

(28)

Vom Algorithmus zum Programm

Konkatenation von Folgen

Konkatenation von Folgen = Verbinden zweier Zettelstapel: •

Beispiele:

• [3, 27, 5] • [8, 1] = [3, 27, 5, 8, 1].

• f • [ ] = [ ] • f = f

(29)

Vom Algorithmus zum Programm

Bedingungen

Bedingungsoperatoren: =, ≠ (bei allen Typen), <, >,

≤, ≥ (bei Zahlen)

z.B.: a=1, 3=4, [1,2]≠[2,3], f=[ ], "ja"≠antwort, erstes(f)≤3

Verknüpfung von Bedingungen B und B':

und: B und B' dann und nur dann wahr, wenn sowohl B als auch B' wahr ist

oder: B oder B' dann und nur dann wahr, wenn entweder B oder B' oder beide wahr sind

nicht: nicht B dann und nur dann wahr, wenn B nicht wahr sind

(30)

Vom Algorithmus zum Programm

Bedingungen - Beispiele

• a=1 und erstes(f)≤3.

wahr, wenn sowohl Bezeichner a für Zahl 1 als auch erstes Folgenelement von f kleiner oder gleich 3

• [1,2]≠f oder "ja"≠antwort.

erfüllt, wenn entweder die Folge f verschieden von Folge [1,2] oder antwort nicht für den

Text "ja" steht oder beides

(31)

Vom Algorithmus zum Programm

Bedingungen - Beispiele

• (a=2 und b=3) oder f=[1,2].

erfüllt, wenn sowohl a für 1 als auch b für 3 steht, oder wenn f gleich [1,2], falls eine der ersten beiden Bedingungen nicht zutrifft

• aus einfachen Bedingungen mittels und und oder und Klammerbildung beliebig

komplizierte Bedingungen formulieren.

• Prioritätenregelung: Klammern vor nicht vor

und vor oder

(32)

Vom Algorithmus zum Programm

Konstruktoren

Konkatenation: wie bisher “;”

Alternative "Wenn ... dann ... sonst ...":

wenn Bedingung dann ...

sonst ...

ende.

Iteration: “Solange ... tue folgendes ...":

solange Bedingung tue ...

ende

Schlüsselwörter wenn, tue, ende, ... unterstreichen

(33)

Vom Algorithmus zum Programm

Konstruktoren - Beispiele

• Summe 1+2+3+...+10:

def i,s: Zahl;

i ← 1;

s ← 0;

solange i ≤ 10 tue s ← s + i;

i ← i + 1 ende;

zeige(s).

(34)

Vom Algorithmus zum Programm

Konstruktoren - Beispiele

• Im Verteilungsalgorithmus:

5. Solange noch Eintrittskarten vorhanden sind, tue folgendes:

5.1 Rufe die Ordnungsnummer des obersten Zettels aus;

5.2 Lege den Zettel beiseite;

5.3 Verkaufe an die Gruppe mit dieser Ordnungsnummer die gewünschte Zahl an Eintrittskarten

• wird jetzt:

solange taste = "A" und fertig ≠ [ ] tue zeige(erstes(fertig));

fertig ← rest(fertig);

lies(taste) ende .

• Hierbei: def taste: Text.

(35)

Vom Algorithmus zum Programm

Konstruktoren - Beispiele

• Im Verteilungsalgorithmus:

3.2.2 Wenn auf die Frage "Kommen Sie von auswärts?" "ja"

angekreuzt ist, dann ist die nächste Ziffer eine Null, sonst ist die nächste Ziffer eine Eins

• wird jetzt:

wenn antwort = "ja" dann ziffer ← 0

sonst

ziffer ← 1 ende

(36)

Vom Algorithmus zum Programm

Vollständiger Verteilungsalgorithmus

def ziffer, z, kinderzahl, ordnungsnr: Zahl;

def fertig, leerung: Zahlenfolge;

def antwort, taste: Text;

fertig ← [ ];

lies(taste);

solange taste = "E" tue leerung ← [ ];

solange taste ≠ "F" tue lies(kinderzahl);

lies(antwort);

wenn antwort = "ja" dann ziffer ← 0

sonst

ziffer ← 1 ende;

lies(ordnungsnr);

z ← (100 - kinderzahl) * 10000 + ziffer * 1000 + ordnungsnr;

leerung ← leerung • [ z ];

lies(taste) ende;

leerung ← sort(leerung);

fertig ← misch(fertig,leerung);

lies(taste) ende;

solange taste ="A" und fertig ≠ [ ] tue zeige(erstes(fertig));

fertig ← rest(fertig);

lies(taste) ende.

(37)

solange taste = "E" tue leerung ← [ ];

solange taste ≠ "F" tue lies(kinderzahl);

lies(antwort);

wenn antwort = "ja" dann ziffer ← 0

sonst

ziffer ← 1 ende;

lies(ordnungsnr);

z ← (100 - kinderzahl) * 10000 + ziffer * 1000 + ordnungsnr;

leerung ← leerung • [ z ];

lies(taste) ende;

leerung ← sort(leerung);

fertig ← misch(fertig,leerung);

lies(taste) ende;

Vom Algorithmus zum Programm

Schachtelung von Schleifen

innere Schleife

äußere Schleife

(38)

Vom Algorithmus zum Programm

Schachtelungsdiagramm (mengenorientiert)

(39)

Vom Algorithmus zum Programm

Schachtelungsdiagramm (mengenorientiert)

(40)

Vom Algorithmus zum Programm

Präzisierung der Abstraktion

Definition

Die Zusammenfassung von Deklarationen und Anweisungen zu einer Einheit bezeichnet man als

Prozedur. Liefert eine Prozedur einen Wert, so nennt man sie Funktion oder Funktionsprozedur. Jede beliebige Prozedur oder Funktion kann als elementare Anweisung oder elementarer Ausdruck (durch Aufruf) in jedem anderen Algorithmus verwendet werden.

(41)

Vom Algorithmus zum Programm

Umsetzung beim Verteilungsalgorithmus

Zwei Zettelstapel S1 und S2 mischst du ... zu S3 ...:

def s1,s2,s3: Zahlenfolge

M1. Solange auf beiden Stapeln S1 und S2 noch Zettel liegen, tue folgendes: ... :

solange s1 ≠ [ ] und s2 ≠ [ ] tue ...

ende .

M1.1 Nimm von den beiden obersten Zetteln von S1 und S2 den mit der kleineren Codenummer weg:

wenn erstes(s1) < erstes(s2) dann s3 ← s3 • [ erstes(s1) ];

s1 ← rest(s1) sonst

s3 ← s3 • [ erstes(s2) ];

s2 ← rest(s2) ende

(42)

Vom Algorithmus zum Programm

Umsetzung beim Verteilungsalgorithmus

M2. Wenn einer der Stapel S1 oder S2 leer ist, dann hänge den anderen komplett hinten an den Stapel S3 an:

s3 ← s3 • s1 • s2

(43)

Vom Algorithmus zum Programm

Umsetzung beim Verteilungsalgorithmus

M2. Wenn einer der Stapel S1 oder S2 leer ist, dann hänge den anderen komplett hinten an den Stapel S3 an:

s3 ← s3 • s1 • s2

Prüfen Sie zur Übung nach, daß diese Zuweisung M2

korrekt beschreibt

(44)

Vom Algorithmus zum Programm

Umsetzung beim Verteilungsalgorithmus

M2. Wenn einer der Stapel S1 oder S2 leer ist, dann hänge den anderen komplett hinten an den Stapel S3 an:

s3 ← s3 • s1 • s2

Mischen insgesamt:

def s1, s2 s3: Zahlenfolge;

solange s1 ≠ [ ] und s2 ≠ [ ] tue

wenn erstes(s1) < erstes(s2) dann s3 ← s3 • [ erstes(s1) ];

s1 ← rest(s1) sonst

s3 ← s3 • [ erstes(s2) ];

s2 ← rest(s2) ende

ende;

s3 ← s3 • s1 • s2

(45)

Vom Algorithmus zum Programm

Umsetzung beim Verteilungsalgorithmus

def s1, s2 s3: Zahlenfolge;

solange s1 ≠ [ ] und s2 ≠ [ ] tue

wenn erstes(s1) < erstes(s2) dann s3 ← s3 • [ erstes(s1) ];

s1 ← rest(s1) sonst

s3 ← s3 • [ erstes(s2) ];

s2 ← rest(s2) ende

ende;

s3 ← s3 • s1 • s2

Mangel 1 Bezug zwischen

Aufruf von Mischen und dieser Beschreibung

(46)

Vom Algorithmus zum Programm

Umsetzung beim Verteilungsalgorithmus

funktion misch;

def s1, s2 s3: Zahlenfolge;

solange s1 ≠ [ ] und s2 ≠ [ ] tue

wenn erstes(s1) < erstes(s2) dann s3 ← s3 • [ erstes(s1) ];

s1 ← rest(s1) sonst

s3 ← s3 • [ erstes(s2) ];

s2 ← rest(s2) ende

ende;

s3 ← s3 • s1 • s2 funkende

(47)

Vom Algorithmus zum Programm

Umsetzung beim Verteilungsalgorithmus

funktion misch;

def s1, s2 s3: Zahlenfolge;

solange s1 ≠ [ ] und s2 ≠ [ ] tue

wenn erstes(s1) < erstes(s2) dann s3 ← s3 • [ erstes(s1) ];

s1 ← rest(s1) sonst

s3 ← s3 • [ erstes(s2) ];

s2 ← rest(s2) ende

ende;

s3 ← s3 • s1 • s2 funkende

Mangel 2

Bezug der Zahlenfolgen fertig und leerung zu

s1 und s2

(48)

Vom Algorithmus zum Programm

Umsetzung beim Verteilungsalgorithmus

funktion misch (s1,s2: Zahlenfolge);

def s3: Zahlenfolge;

solange s1 ≠ [ ] und s2 ≠ [ ] tue

wenn erstes(s1) < erstes(s2) dann s3 ← s3 • [ erstes(s1) ];

s1 ← rest(s1) sonst

s3 ← s3 • [ erstes(s2) ];

s2 ← rest(s2) ende

ende;

s3 ← s3 • s1 • s2 funkende

(49)

Vom Algorithmus zum Programm

Umsetzung beim Verteilungsalgorithmus

funktion misch (s1,s2: Zahlenfolge);

def s3: Zahlenfolge;

solange s1 ≠ [ ] und s2 ≠ [ ] tue

wenn erstes(s1) < erstes(s2) dann s3 ← s3 • [ erstes(s1) ];

s1 ← rest(s1) sonst

s3 ← s3 • [ erstes(s2) ];

s2 ← rest(s2) ende

ende;

s3 ← s3 • s1 • s2 funkende

s1, s2 sind

formale Parameter

(50)

Vom Algorithmus zum Programm

Umsetzung beim Verteilungsalgorithmus

funktion misch (s1,s2: Zahlenfolge);

def s3: Zahlenfolge;

solange s1 ≠ [ ] und s2 ≠ [ ] tue

wenn erstes(s1) < erstes(s2) dann s3 ← s3 • [ erstes(s1) ];

s1 ← rest(s1) sonst

s3 ← s3 • [ erstes(s2) ];

s2 ← rest(s2) ende

ende;

s3 ← s3 • s1 • s2 funkende

s1, s2 sind

formale Parameter

fertig und leerung im Aufruf misch(fertig,leerung)

sind aktuelle Parameter

(51)

Vom Algorithmus zum Programm

formale und aktuelle Parameter

Definition:

Als Parameter bezeichnet man variable oder austauschbare Objekte in einer Prozedur oder Funktion. Die in einer Prozedur oder Funktion

benutzten und im Kopf der Prozedur anzugebenden Parameter heißen formale Parameter; sie sind Platzhalter für später einzusetzende Objekte. Die im Aufruf einer Prozedur oder Funktion stehenden

Argumente nennt man aktuelle Parameter.

(52)

Vom Algorithmus zum Programm

Umsetzung beim Verteilungsalgorithmus

funktion misch (s1,s2: Zahlenfolge);

def s3: Zahlenfolge;

solange s1 ≠ [ ] und s2 ≠ [ ] tue

wenn erstes(s1) < erstes(s2) dann s3 ← s3 • [ erstes(s1) ];

s1 ← rest(s1) sonst

s3 ← s3 • [ erstes(s2) ];

s2 ← rest(s2) ende

ende;

s3 ← s3 • s1 • s2 funkende

Mangel 3

Bezug zwischen Ergebnis des Mischens s3

und Aufruf

(53)

Vom Algorithmus zum Programm

Umsetzung beim Verteilungsalgorithmus

funktion misch (s1,s2: Zahlenfolge);

def s3: Zahlenfolge;

solange s1 ≠ [ ] und s2 ≠ [ ] tue

wenn erstes(s1) < erstes(s2) dann s3 ← s3 • [ erstes(s1) ];

s1 ← rest(s1) sonst

s3 ← s3 • [ erstes(s2) ];

s2 ← rest(s2) ende

ende;

s3 ← s3 • s1 • s2;

ergebnis s3 funkende

s3 ist das Ergebnis und tritt an die Stelle des Aufrufs

misch(fertig,leerung)

(54)

Vom Algorithmus zum Programm

Umsetzung beim Verteilungsalgorithmus

funktion misch (s1,s2: Zahlenfolge) Zahlenfolge;

def s3: Zahlenfolge;

solange s1 ≠ [ ] und s2 ≠ [ ] tue

wenn erstes(s1) < erstes(s2) dann s3 ← s3 • [ erstes(s1) ];

s1 ← rest(s1) sonst

s3 ← s3 • [ erstes(s2) ];

s2 ← rest(s2) ende

ende;

s3 ← s3 • s1 • s2;

ergebnis s3 funkende

s3 ist das Ergebnis und tritt an die Stelle des Aufrufs

misch(fertig,leerung)

der Typ des Ergebnisses von misch, also Zahlenfolge, wird

hier festgehalten

(55)

Vom Algorithmus zum Programm

Umsetzung beim Verteilungsalgorithmus

funktion misch (s1,s2: Zahlenfolge) Zahlenfolge;

def s3: Zahlenfolge;

solange s1 ≠ [ ] und s2 ≠ [ ] tue

wenn erstes(s1) < erstes(s2) dann s3 ← s3 • [ erstes(s1) ];

s1 ← rest(s1) sonst

s3 ← s3 • [ erstes(s2) ];

s2 ← rest(s2) ende

ende;

s3 ← s3 • s1 • s2;

ergebnis s3 funkende

(56)

Vom Algorithmus zum Programm

Prozesse beim Aufruf

(57)

Vom Algorithmus zum Programm

Prozesse beim Aufruf

fertig ← misch(fertig,leerung)

(58)

Vom Algorithmus zum Programm

Prozesse beim Aufruf

fertig ← misch(fertig,leerung)

1. unterbreche Ausführung des Programms.

(59)

Vom Algorithmus zum Programm

Prozesse beim Aufruf

fertig ← misch(fertig,leerung)

1. unterbreche Ausführung des Programms.

2. wo ist misch? Suche Beschreibung.

(60)

Vom Algorithmus zum Programm

Prozesse beim Aufruf

fertig ← misch(fertig,leerung)

1. unterbreche Ausführung des Programms.

2. wo ist misch? Suche Beschreibung.

3. Parameter passend (Typ, Anzahl)?

(61)

Vom Algorithmus zum Programm

Prozesse beim Aufruf

fertig ← misch(fertig,leerung)

1. unterbreche Ausführung des Programms.

2. wo ist misch? Suche Beschreibung.

3. Parameter passend (Typ, Anzahl)?

4. identifiziere aktuelle und formale Parameter

(62)

Vom Algorithmus zum Programm

Prozesse beim Aufruf

fertig ← misch(fertig,leerung)

1. unterbreche Ausführung des Programms.

2. wo ist misch? Suche Beschreibung.

3. Parameter passend (Typ, Anzahl)?

4. identifiziere aktuelle und formale Parameter 5. führe Anweisungen der Funktion aus

(63)

Vom Algorithmus zum Programm

Prozesse beim Aufruf

fertig ← misch(fertig,leerung)

1. unterbreche Ausführung des Programms.

2. wo ist misch? Suche Beschreibung.

3. Parameter passend (Typ, Anzahl)?

4. identifiziere aktuelle und formale Parameter 5. führe Anweisungen der Funktion aus

6. zum Schluß ersetze Aufruf durch den Wert hinter ergebnis

(64)

Vom Algorithmus zum Programm

Prozesse beim Aufruf

fertig ← misch(fertig,leerung)

1. unterbreche Ausführung des Programms.

2. wo ist misch? Suche Beschreibung.

3. Parameter passend (Typ, Anzahl)?

4. identifiziere aktuelle und formale Parameter 5. führe Anweisungen der Funktion aus

6. zum Schluß ersetze Aufruf durch den Wert hinter ergebnis

7. setze Programm an der unterbrochenen Stelle fort

(65)

Vom Algorithmus zum Programm

Prozesse beim Aufruf

1. unterbreche Ausführung des Programms.

2. wo ist misch?

3. Parameter passend (Typ, Anzahl)?

4. identifiziere aktuelle und formale Parameter 5. führe Anweisungen der Funktion aus

6. zum Schluß ersetze Aufruf durch den Wert hinter ergebnis

7. setze Programm an der unterbrochenen Stelle fort

(66)

Vom Algorithmus zum Programm

Prozesse beim Aufruf

1. unterbreche Ausführung des Programms.

2. wo ist misch?

3. Parameter passend (Typ, Anzahl)?

4. identifiziere aktuelle und formale Parameter 5. führe Anweisungen der Funktion aus

6. zum Schluß ersetze Aufruf durch den Wert hinter ergebnis

7. setze Programm an der unterbrochenen Stelle fort fertig ← misch(fertig,leerung)

(67)

Vom Algorithmus zum Programm

Prozesse beim Aufruf

1. unterbreche Ausführung des Programms.

2. wo ist misch?

3. Parameter passend (Typ, Anzahl)?

4. identifiziere aktuelle und formale Parameter 5. führe Anweisungen der Funktion aus

6. zum Schluß ersetze Aufruf durch den Wert hinter ergebnis

7. setze Programm an der unterbrochenen Stelle fort

(68)

Vom Algorithmus zum Programm

Prozesse beim Aufruf

1. unterbreche Ausführung des Programms.

2. wo ist misch?

3. Parameter passend (Typ, Anzahl)?

4. identifiziere aktuelle und formale Parameter 5. führe Anweisungen der Funktion aus

6. zum Schluß ersetze Aufruf durch den Wert hinter ergebnis

7. setze Programm an der unterbrochenen Stelle fort Suche Beschreibung

besser: aufsuchen

(69)

Vom Algorithmus zum Programm

Prozesse beim Aufruf

1. unterbreche Ausführung des Programms.

2. wo ist misch?

3. Parameter passend (Typ, Anzahl)?

4. identifiziere aktuelle und formale Parameter 5. führe Anweisungen der Funktion aus

6. zum Schluß ersetze Aufruf durch den Wert hinter ergebnis

7. setze Programm an der unterbrochenen Stelle fort

(70)

Vom Algorithmus zum Programm

Prozesse beim Aufruf

1. unterbreche Ausführung des Programms.

2. wo ist misch?

3. Parameter passend (Typ, Anzahl)?

4. identifiziere aktuelle und formale Parameter 5. führe Anweisungen der Funktion aus

6. zum Schluß ersetze Aufruf durch den Wert hinter ergebnis

7. setze Programm an der unterbrochenen Stelle fort (fertig,leerung)

zahlenfolge zahlenfolge

(s1,s2)

(71)

Vom Algorithmus zum Programm

Prozesse beim Aufruf

1. unterbreche Ausführung des Programms.

2. wo ist misch?

3. Parameter passend (Typ, Anzahl)?

4. identifiziere aktuelle und formale Parameter 5. führe Anweisungen der Funktion aus

6. zum Schluß ersetze Aufruf durch den Wert hinter ergebnis

7. setze Programm an der unterbrochenen Stelle fort

(72)

Vom Algorithmus zum Programm

Prozesse beim Aufruf

1. unterbreche Ausführung des Programms.

2. wo ist misch?

3. Parameter passend (Typ, Anzahl)?

4. identifiziere aktuelle und formale Parameter 5. führe Anweisungen der Funktion aus

6. zum Schluß ersetze Aufruf durch den Wert hinter ergebnis

7. setze Programm an der unterbrochenen Stelle fort s1 fertig s2 leerung

(73)

Vom Algorithmus zum Programm

Prozesse beim Aufruf

1. unterbreche Ausführung des Programms.

2. wo ist misch?

3. Parameter passend (Typ, Anzahl)?

4. identifiziere aktuelle und formale Parameter 5. führe Anweisungen der Funktion aus

6. zum Schluß ersetze Aufruf durch den Wert hinter ergebnis

7. setze Programm an der unterbrochenen Stelle fort

(74)

Vom Algorithmus zum Programm

Prozesse beim Aufruf

1. unterbreche Ausführung des Programms.

2. wo ist misch?

3. Parameter passend (Typ, Anzahl)?

4. identifiziere aktuelle und formale Parameter 5. führe Anweisungen der Funktion aus

6. zum Schluß ersetze Aufruf durch den Wert hinter ergebnis

7. setze Programm an der unterbrochenen Stelle fort fertig ← s3

(75)

Vom Algorithmus zum Programm

Prozesse beim Aufruf

1. unterbreche Ausführung des Programms.

2. wo ist misch?

3. Parameter passend (Typ, Anzahl)?

4. identifiziere aktuelle und formale Parameter 5. führe Anweisungen der Funktion aus

6. zum Schluß ersetze Aufruf durch den Wert hinter ergebnis

7. setze Programm an der unterbrochenen Stelle fort

(76)

Vom Algorithmus zum Programm

Prozedurkonzept

jede als Algorithmus formulierte Vorschrift kann zu Elementaranweisung in anderem Algorithmus

werden

Zerlegung und Strukturierung umfangreicher Algorithmen:

Zerlegung des Problems in bis zu 10 Teilschritte

je Teilschritt eine Prozedur/Funktion

ggf. weitere Zerlegung

schrittweise Verfeinerung bis kleine überschaubare Einheiten vorliegen

(77)

Vom Algorithmus zum Programm

Prozedurschachtelung

Definition:

Eine Prozedur ist in einer anderen

geschachtelt, wenn sie in ihr deklariert oder

aufgerufen wird. Im ersten Fall spricht man von

statischer, im zweiten Fall von dynamischer

Schachtelung bzw. Abstützen einer Prozedur

auf eine andere.

(78)

prozedur p1(...) ...

funktion p11(...) ...

prozedur p111(...) ...

...prozende;

funktion p112(...) ...

funkende;...

funkende;...

prozedur p12(...) ...

funktion p121(...) ...

funkende;...

prozedur p122(...) ...

prozende;...

prozende...

prozende;

prozedur p2(...) ...

prozedur p21(...) ...

prozedur p211(...) ...

prozende;...

prozedur p212(...) ...

prozende;...

prozende...

prozedur p22(...) ...

funktion p221(...) ...

funkende;...

funktion p222(...) ...

funkende;...

prozende...

prozende ...

(79)

prozedur p1(...) ...

funktion p11(...) ...

prozedur p111(...) ...

...prozende;

funktion p112(...) ...

funkende;...

funkende;...

prozedur p12(...) ...

funktion p121(...) ...

funkende;...

prozedur p122(...) ...

prozende;...

prozende...

prozende;

prozedur p2(...) ...

prozedur p21(...) ...

prozedur p211(...) ...

prozende;...

prozedur p212(...) ...

prozende;...

prozende...

prozedur p22(...) ...

funktion p221(...) ...

funkende;...

funktion p222(...) ...

funkende;...

prozende...

prozende ...

Schachtelungsbaum

(80)

prozedur p1(...) ...

funktion p11(...) ...

prozedur p111(...) ...

...prozende;

funktion p112(...) ...

funkende;...

funkende;...

prozedur p12(...) ...

funktion p121(...) ...

funkende;...

prozedur p122(...) ...

prozende;...

prozende...

prozende;

prozedur p2(...) ...

prozedur p21(...) ...

prozedur p211(...) ...

prozende;...

prozedur p212(...) ...

prozende;...

prozende...

prozedur p22(...) ...

funktion p221(...) ...

funkende;...

funktion p222(...) ...

funkende;...

prozende...

prozende ...

Schachtelungsbaum

hierarchische Modularisierung

(81)

Vom Algorithmus zum Programm

Programm und Programmiersprache

• Verteilungsproblem nun vollständig gelöst

• automatisierbare Elemente bestimmt

• dargestellt in einer Form, daß C sie ausführen kann

• solche Darstellungen heißen “Programm”

• Sprachen mit geeigneten

Darstellungselementen und erforderlicher Präzision: Programmiersprachen

• die hier erfundene Sprache heißt PRO

(82)

Vom Algorithmus zum Programm

Programm und Programmiersprache

Definition:

Eine Sprache zur Formulierung von Algorithmen, die von einem Computer ausgeführt werden

können, bezeichnet man als Programmiersprache.

Die Formulierung eines Algorithmus in einer

Programmiersprache nennt man Programm.

(83)

Vom Algorithmus zum Programm

Algorithmus und Programm

Algorithmus

relativ allgemein beschrieben

an keine besonderen formellen Vorschriften gebunden

Programm

im exakt definierten Formalismus einer Programmiersprache verfaßt

ein Algorithmus ist eine Abstraktion aller Programme, die ihn formal beschreiben

(84)

Vom Algorithmus zum Programm

Welt der Programmiersprachen

(85)

Vom Algorithmus zum Programm

Welt der Programmiersprachen

(86)

Vom Algorithmus zum Programm

Welt der Programmiersprachen

deklarativ: Problem beschreiben

prozedural: Lösungsweg zum Problem

beschreiben

(87)

Vom Algorithmus zum Programm

Welt der Programmiersprachen

• deklarativ: Problem beschreiben

funktional: Problem durch funktionale Zusammenhänge beschreiben

prädikativ: Problem durch Fakten und logische Beziehungen beschreiben

• prozedural: Lösungsweg zum Problem

beschreiben

(88)

Vom Algorithmus zum Programm

Welt der Programmiersprachen

• deklarativ: Problem beschreiben

• funktional: Problem durch funktionale Zusammenhänge beschreiben

• prädikativ: Problem durch Fakten und logische Beziehungen beschreiben

• prozedural: Lösungsweg zum Problem beschreiben

imperativ: Lösungsweg durch

Anweisungen beschreiben

(89)

Vom Algorithmus zum Programm

Welt der Programmiersprachen

• deklarativ: Problem beschreiben

• funktional: Problem durch funktionale Zusammenhänge beschreiben

• prädikativ: Problem durch Fakten und logische Beziehungen beschreiben

• prozedural: Lösungsweg zum Problem beschreiben

imperativ: Lösungsweg durch Anweisungen beschreiben

ML, MIRANDA, Gofer, Haskell

(90)

Vom Algorithmus zum Programm

Welt der Programmiersprachen

• deklarativ: Problem beschreiben

• funktional: Problem durch funktionale Zusammenhänge beschreiben

• prädikativ: Problem durch Fakten und logische Beziehungen beschreiben

• prozedural: Lösungsweg zum Problem beschreiben

imperativ: Lösungsweg durch Anweisungen beschreiben

ML, MIRANDA, Gofer, Haskell

Prolog, Gödel, CLP

(91)

Vom Algorithmus zum Programm

Welt der Programmiersprachen

• deklarativ: Problem beschreiben

• funktional: Problem durch funktionale Zusammenhänge beschreiben

• prädikativ: Problem durch Fakten und logische Beziehungen beschreiben

• prozedural: Lösungsweg zum Problem beschreiben

imperativ: Lösungsweg durch Anweisungen beschreiben

ML, MIRANDA, Gofer, Haskell

Prolog, Gödel, CLP

PRO, ADA, ALGOL, BASIC, C, EIFFEL, FORTRAN, MODULA, OBERON,

PASCAL

(92)

Vom Algorithmus zum Programm

Syntax und Semantik

(93)

Vom Algorithmus zum Programm

Syntax und Semantik

• Programmiersprachen immer präzise und

eindeutige Syntax und Semantik

(94)

Vom Algorithmus zum Programm

Syntax und Semantik

• Programmiersprachen immer präzise und eindeutige Syntax und Semantik

Syntax: sprachliche Notierung von

Programmen

(95)

Vom Algorithmus zum Programm

Syntax und Semantik

• Programmiersprachen immer präzise und eindeutige Syntax und Semantik

Syntax: sprachliche Notierung von Programmen

Semantik: Bedeutung syntaktisch

korrekter Programme

(96)

Vom Algorithmus zum Programm

Syntax und Semantik

• Programmiersprachen immer präzise und eindeutige Syntax und Semantik

Syntax: sprachliche Notierung von Programmen

Semantik: Bedeutung syntaktisch korrekter Programme

welche Zeichenreihen sind syntaktisch korrekte

Programme?

(97)

Vom Algorithmus zum Programm

Syntax und Semantik

• Programmiersprachen immer präzise und eindeutige Syntax und Semantik

Syntax: sprachliche Notierung von Programmen

Semantik: Bedeutung syntaktisch korrekter Programme

welche Zeichenreihen sind syntaktisch korrekte

Programme?

welche Wirkung hat ein syntaktisch korrektes Programm

auf dem Rechner?

(98)

Vom Algorithmus zum Programm

Semantikansätze

Semantik

operationale Semantik: Art und Weise, wie ein Rechner es ausführt

axiomatische Semantik: Eigenschaften, die die (Ein-/Ausgabe-)Variablen vorher und nachher erfüllen

denotationale Semantik: Funktion, die

das Programm berechnet

(99)

Vom Algorithmus zum Programm

Syntax und Semantik – Beispiel 1

(100)

Vom Algorithmus zum Programm

Syntax und Semantik – Beispiel 1

Programm P

def s: Zahl;

lies(s);

s ← 0;

zeige(s) .

(101)

Vom Algorithmus zum Programm

Syntax und Semantik – Beispiel 1

Programm P

def s: Zahl;

lies(s);

s ← 0;

zeige(s) .

• syntaktisch korrekt

(102)

Vom Algorithmus zum Programm

Syntax und Semantik – Beispiel 1

Programm P

def s: Zahl;

lies(s);

s ← 0;

zeige(s) .

• syntaktisch korrekt

• Semantik (ugs.): : "Lies eine beliebige Zahl ein

und gib die Zahl 0 aus".

(103)

Vom Algorithmus zum Programm

Syntax und Semantik – Beispiel 1

Programm P

def s: Zahl;

lies(s);

s ← 0;

zeige(s) .

• syntaktisch korrekt

• Semantik (ugs.): : "Lies eine beliebige Zahl ein und gib die Zahl 0 aus".

• Semantik denotational: f

P

: Z → Z mit f

P

(s)=0 für

alle s Z.

(104)

Vom Algorithmus zum Programm

Syntax und Semantik – Beispiel 1

Programm P

def s: Zahl;

lies(s);

s ← 0;

zeige(s) .

• syntaktisch korrekt

• Semantik (ugs.): : "Lies eine beliebige Zahl ein und gib die Zahl 0 aus".

• Semantik denotational: f

P

: Z → Z mit f

P

(s)=0 für alle s Z.

• Programm mit gleicher Semantik: zeige(0)

(105)

Vom Algorithmus zum Programm

Syntax und Semantik – Beispiel 1

Programm P

def s: Zahl;

lies(s);

s ← 0;

zeige(s) .

• syntaktisch korrekt

• Semantik (ugs.): : "Lies eine beliebige Zahl ein und gib die Zahl 0 aus".

• Semantik denotational: f

P

: Z → Z mit f

P

(s)=0 für alle s Z.

• Programm mit gleicher Semantik: zeige(0)

• Programme können semantisch

äquivalent sein.

(106)

Vom Algorithmus zum Programm

Syntax und Semantik – Beispiel 2

(107)

Vom Algorithmus zum Programm

Syntax und Semantik – Beispiel 2

Programm P' def i,s: Zahl;

lies(n);

i ← 1;

s ← 0;

solange i ≤ n tue s ← s + i;

i ← i + 1

zeige(s)

(108)

Vom Algorithmus zum Programm

Syntax und Semantik – Beispiel 2

Programm P' def i,s: Zahl;

lies(n);

i ← 1;

s ← 0;

solange i ≤ n tue s ← s + i;

i ← i + 1 zeige(s)

n nicht

deklariert

(109)

Vom Algorithmus zum Programm

Syntax und Semantik – Beispiel 2

Programm P' def i,s: Zahl;

lies(n);

i ← 1;

s ← 0;

solange i ≤ n tue s ← s + i;

i ← i + 1 zeige(s)

n nicht deklariert

ende fehlt

(110)

Vom Algorithmus zum Programm

Syntax und Semantik – Beispiel 2

Programm P' def i,s: Zahl;

lies(n);

i ← 1;

s ← 0;

solange i ≤ n tue s ← s + i;

i ← i + 1 zeige(s)

n nicht deklariert

ende fehlt

syntaktisch nicht

korrekt

(111)

Vom Algorithmus zum Programm

Syntax und Semantik – Beispiel 2

Programm P”

def i,n,s: Zahl;

lies(n);

i ← 1;

s ← 0;

solange i ≤ n tue s ← s + i;

i ← i + 1 ende;

zeige(s)

(112)

Vom Algorithmus zum Programm

Syntax und Semantik – Beispiel 2

Programm P”

def i,n,s: Zahl;

lies(n);

i ← 1;

s ← 0;

solange i ≤ n tue s ← s + i;

i ← i + 1 ende;

zeige(s)

Semantik ugs: "Falls der eingegebene Wert n kleiner oder gleich 0 ist, so gib die Zahl 0 aus. Falls n größer als 0 ist, so gib die Summe der ersten n

Zahlen 1+2+3+...+n aus".

(113)

Vom Algorithmus zum Programm

Syntax und Semantik – Beispiel 2

Programm P”

def i,n,s: Zahl;

lies(n);

i ← 1;

s ← 0;

solange i ≤ n tue s ← s + i;

i ← i + 1 ende;

zeige(s)

Semantik ugs: "Falls der eingegebene Wert n kleiner oder gleich 0 ist, so gib die Zahl 0 aus. Falls n größer als 0 ist, so gib die Summe der ersten n

Zahlen 1+2+3+...+n aus".

Semantik denotational:

fP": Z→Z mit

n

Σ i, falls n≥1,

fP"(n)= i=1

{

0, sonst.

(114)

Vom Algorithmus zum Programm

Korrektheit und Komplexität

Korrektheit: exakt beweisen, daß das

Programm die Spezifikation erfüllt, also stets und in jeder Hinsicht das Gewünschte leistet, ...

Komplexität: ... und die Zeitvorgaben einhält

in der Regel:

sehr hoher Aufwand bei Korrektheit (→ nicht berechenbar)

mittelgroßer Aufwand bei Komplexität

Beispiel: Mischen

(115)

Vom Algorithmus zum Programm

Mischen - Spezifikation

Spezifikation: präzise Beschreibung der Anforderung an das Programm

(funktionale) Spezifikation Mischen (halbformal):

Eingabe: s1,s2 IN0*

Ausgabe: s3 IN0*

Funktionaler Zusammenhang:

Für s1=[x1,...,xn] mit x1≤x2≤...≤xn und s2=

[y1,...,ym] mit y1≤y2≤...≤ym ist s3=[z1,...,zn+m] mit z1≤z2≤...≤zn+m und s3 ist eine Permutation von s1•s2.

(116)

Vom Algorithmus zum Programm

Mischen - Spezifikation

Spezifikation: präzise Beschreibung der Anforderung an das Programm

(funktionale) Spezifikation Mischen (halbformal):

Eingabe: s1,s2 IN0*

Ausgabe: s3 IN0*

Funktionaler Zusammenhang:

Für s1=[x1,...,xn] mit x1≤x2≤...≤xn und s2=

[y1,...,ym] mit y1≤y2≤...≤ym ist s3=[z1,...,zn+m] mit z1≤z2≤...≤zn+m und s3 ist eine Permutation von s1•s2.

n Werte

(117)

Vom Algorithmus zum Programm

Mischen - Spezifikation

Spezifikation: präzise Beschreibung der Anforderung an das Programm

(funktionale) Spezifikation Mischen (halbformal):

Eingabe: s1,s2 IN0*

Ausgabe: s3 IN0*

Funktionaler Zusammenhang:

Für s1=[x1,...,xn] mit x1≤x2≤...≤xn und s2=

[y1,...,ym] mit y1≤y2≤...≤ym ist s3=[z1,...,zn+m] mit z1≤z2≤...≤zn+m und s3 ist eine Permutation von s1•s2.

(118)

Vom Algorithmus zum Programm

Mischen - Spezifikation

Spezifikation: präzise Beschreibung der Anforderung an das Programm

(funktionale) Spezifikation Mischen (halbformal):

Eingabe: s1,s2 IN0*

Ausgabe: s3 IN0*

Funktionaler Zusammenhang:

Für s1=[x1,...,xn] mit x1≤x2≤...≤xn und s2=

[y1,...,ym] mit y1≤y2≤...≤ym ist s3=[z1,...,zn+m] mit z1≤z2≤...≤zn+m und s3 ist eine Permutation von s1•s2.

aufsteigend sortiert

(119)

Vom Algorithmus zum Programm

Mischen - Spezifikation

Spezifikation: präzise Beschreibung der Anforderung an das Programm

(funktionale) Spezifikation Mischen (halbformal):

Eingabe: s1,s2 IN0*

Ausgabe: s3 IN0*

Funktionaler Zusammenhang:

Für s1=[x1,...,xn] mit x1≤x2≤...≤xn und s2=

[y1,...,ym] mit y1≤y2≤...≤ym ist s3=[z1,...,zn+m] mit z1≤z2≤...≤zn+m und s3 ist eine Permutation von s1•s2.

Referenzen

ÄHNLICHE DOKUMENTE

Ministerium für Wissenschaft, Forschung und Kultur des Landes Brandenburg. Digitalisierung in Kooperation mit der

Im zweiten Teil der Veranstaltung werden ausgewählte Ausbildungskonzepte und -inhalte von deutschsprachigen Hochschulen mit Konservierungs- und/oder Restaurierungs- ausbildung

Holz (Ho) in Hörsaal HG108 (Hauptgebäude) Metall (Me), Stein (St) und Wandmalerei (Wa) in Hörsaal D011 (Haus D gegenüber dem Hauptgebäude).. Hörsaal HG 108

Practische Bearbeitung kaufmännischer Geschäftsvorfälle nach einfacher Form, desgleichen nach Aufnahme eines Gesellschafters, unter besonderer Berücksichtigung der

statt des genannten Gesuches einen Beweis über ihre Unabhängigkeit in Begleitung der Documente 1—4 beizubringen. Der Meldungstermin dauert vom 21. Ausserdem findet eine

Combinatorik, binomischer Lehrsatz. Gleichungen zweiten Grades mit einer und mehreren unbekannten Grössen.. Wöchentlich 4 Stunden in der Handels-Vorbereitungsciasse. —

ten ohne Weiteres in die technische Vorbereitungsciasse ein. Unter derselben Bedingung werden Secundaner des Rigaschen Realgymnasiums ohne Prüfung in die H

Maschinenkunde II 4 St. Vorstand: Professor Lovis. Diese Abtheilung bezweckt die Ausbildung von Ingenieuren, sowohl speciell für den Maschinenbau, als auch für die