Strukturierte Programmierung IFB 2002 Tobias Selinger.

48
Strukturierte Programmierung Strukturierte Programmierung IFB 2002 Tobias Selinger

Transcript of Strukturierte Programmierung IFB 2002 Tobias Selinger.

Page 1: Strukturierte Programmierung IFB 2002 Tobias Selinger.

Strukturierte ProgrammierungStrukturierte Programmierung

IFB 2002

Tobias Selinger

Page 2: Strukturierte Programmierung IFB 2002 Tobias Selinger.

2

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

gStrategie ?Strategie ?

große Aufgabegroßes

Programm

Welt Computer

? ?

Page 3: Strukturierte Programmierung IFB 2002 Tobias Selinger.

3

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

gStrategie: Teile und herrscheStrategie: Teile und herrsche

große Aufgabegroßes

Programm

Manager

A

Hauptprogramm

Welt Computer

UP

Unterprogramme

A A A UP UP UP

Arbeitskräfte

AAA UPUPUP

Page 4: Strukturierte Programmierung IFB 2002 Tobias Selinger.

4

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

gBeispiel: Geometrie-ProgrammBeispiel: Geometrie-Programm

Geometrie-Programm

zeichnePunkt (x,y)

zeichneStrecke

AB

berechneAbstand

(P,Q)

berechneSchnitt (g,h) ...

Page 5: Strukturierte Programmierung IFB 2002 Tobias Selinger.

5

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

gBeispiel: MedienmanagementsystemBeispiel: Medienmanagementsystem

Medienmanagementsystem

für CDs, MCs, MP3s, ...

zeige Medienliste

füge Datenhinzu

löscheDaten

speichereMedienliste ...

Page 6: Strukturierte Programmierung IFB 2002 Tobias Selinger.

6

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

gVorteile von UnterprogrammenVorteile von Unterprogrammen

Spracherweiterung: Die UPe können aussagekräftig

benannt werden.

Baustein-Prinzip: UPe können aufeinander aufbauen.

Ökonomie: UPe müssen nur einmal programmiert werden und

sind dann beliebig oft benutzbar.

Teamarbeit: UPe können unabhängig voneinander programmiertund getestet werden.

Klarheit: HP ist kurz und verständlich, Details werden ausgeblendet.

Page 7: Strukturierte Programmierung IFB 2002 Tobias Selinger.

7

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

g

Strukturierung

des Ablaufs

Unterprogrammefür Teilaufgaben

der Daten

eigene Datentypenfür spezielle Daten

Page 8: Strukturierte Programmierung IFB 2002 Tobias Selinger.

8

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

gFunktionen und ProzedurenFunktionen und Prozeduren

In Pascal gibt es zwei Arten von Unterprogrammen:

Funktionen: berechnen einen Ergebniswert undliefern diesen Wert zurück (an das HP).

Beispiel: sin(x)

Prozeduren: tun „irgend etwas“.

Beispiel: clrscr

Page 9: Strukturierte Programmierung IFB 2002 Tobias Selinger.

9

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

gVordefinierte FunktionenVordefinierte Funktionen

Einige nützliche Funktionen sind bereits vordefiniert, z.B.

round(x) liefert den gerundeten Wert

sqr(x),sqrt(x) liefern x2 bzw. x

exp(x),ln(x),sin(x),cos(x),arctan(x)

random(x) liefert eine Zufallszahl

odd(x) liefert true , falls x ungerade ist,ansonsten false

length(text) liefert die Länge eines Textes,d.h. die Anzahl seiner Zeichen

readkey wartet auf einen Tastendruck undliefert das entsprechende Zeichen

Page 10: Strukturierte Programmierung IFB 2002 Tobias Selinger.

10

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

gVordefinierte ProzedurenVordefinierte Prozeduren

Ebenso gibt es vordefinierte Prozeduren:

write(text) gibt einen Text aus

readln(x) setzt x auf den eingegebenen Wert

clrscr löscht den Bildschirm

inc(n),dec(n) erhöht bzw. erniedrigt n (um 1)

delay(n) erzeugt eine Pause von n msec

textcolor(farbe) ändert die Textfarbe

str(zahl,text) erzeugt zu einer gegebenen Zahlden entsprechenden Text-String

Page 11: Strukturierte Programmierung IFB 2002 Tobias Selinger.

11

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

gÜbersicht: UnitsÜbersicht: Units

Diese vordefinierten Prozeduren und Funktionenwerden in Bibliotheken („Units“) zusammengefasst.

Turbo Pascal stellt u.a. die folgenden Units zur Verfügung:

crt

für spezielle Ein-/Ausgaben

readkeydelay

textcolor...

system

für Standard-aufgaben

writesin

random...

graph

für Grafik-aufgaben

putPixellineTocircle...

graph3

für Turtle-grafik

showTurtleturnLeftforwd...

Page 12: Strukturierte Programmierung IFB 2002 Tobias Selinger.

12

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

gDeklarieren von UnitsDeklarieren von Units

Bei der Verwendung einer Unit muss sieim Programmkopf mittels uses deklariert werden.

(Ausnahme: Die Unit system wird automatisch deklariert!)

Beispiel:

program demo;

uses crt, graph3;

var ...

begin

...

Deklaration von crt

und graph3

Page 13: Strukturierte Programmierung IFB 2002 Tobias Selinger.

13

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

gDefinieren eigener FunktionenDefinieren eigener Funktionen

Eine Funktion kann als Black-Box betrachtet werden:

Funktion

Eingabe- daten

Rückgabe- wert

Page 14: Strukturierte Programmierung IFB 2002 Tobias Selinger.

14

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

g

Eingabe- daten

Beispiel: kubik(x)Beispiel: kubik(x)

Eine Funktion kann als Black-Box betrachtet werden:

kubik

Rückgabe- wert

x: real real

Beispiel:

kubik(x)

Page 15: Strukturierte Programmierung IFB 2002 Tobias Selinger.

15

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

gFunktions-KopfFunktions-Kopf

Eine Funktion kann als Black-Box betrachtet werden:

kubik

Eingabe- daten

Rückgabe- wert

x: real real

Beispiel:

kubik(x)

Definition: function kubik (x:real):real;

Funktions-name

Eingabe-variable

und Typ

Rückgabe-typ

Page 16: Strukturierte Programmierung IFB 2002 Tobias Selinger.

16

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

gFunktions-DefinitionFunktions-Definition

Eine Funktion kann als Black-Box betrachtet werden:

kubik

Eingabe- daten

Rückgabe- wert

x: real real

Beispiel:

kubik(x)

Definition: function kubik (x:real):real; begin kubik := x*x*x; end; {kubik}

Berechnung und Zuweisung des Funktionswertes

Page 17: Strukturierte Programmierung IFB 2002 Tobias Selinger.

17

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

g

program KubikDemo;

var Zahl: real;

function kubik (x:real):real;begin kubik := x*x*x;end; {kubik}

begin {HP} writeln(kubik(7)); write('Ihre Zahl: '); readln(Zahl); writeln(' hoch 3 ist ',kubik(Zahl)); readln;end.

Gesamtprogramm KubikDemoGesamtprogramm KubikDemo

Definition der Funktion

kubik(x)

Funktionsaufruf mit Eingabe-

variable Zahl

Funktionsaufruf mit

Eingabewert 7

d.h. innerhalb der Funktion wird für x

der Wert von Zahl eingesetzt

Page 18: Strukturierte Programmierung IFB 2002 Tobias Selinger.

18

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

gBeispiel: Harmonische ReiheBeispiel: Harmonische Reihe

Ein weiteres Beispiel:

Der Wert der harmonischen Reihe

1 + ½ + 1/3 + ¼ + ... + 1/n

soll mit einer Funktion harmReihe berechnet werden!

Black-Box-Modell ?

Page 19: Strukturierte Programmierung IFB 2002 Tobias Selinger.

19

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

gBeispiel: Harmonische ReiheBeispiel: Harmonische Reihe

Ein weiteres Beispiel:

Der Wert der harmonischen Reihe

1 + ½ + 1/3 + ¼ + ... + 1/n

soll mit einer Funktion harmReihe berechnet werden!

Black-Box-Modell:

harmReihe

n:integer real

Page 20: Strukturierte Programmierung IFB 2002 Tobias Selinger.

20

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

gFunktion mit lokalen VariablenFunktion mit lokalen Variablen

Definition:

function harmReihe (n:integer): real;

var i: integer; summe: real;

begin

summe := 0;

for i:=1 to n do

summe := summe + 1/i;

harmReihe := summe;

end; {harmReihe}

Deklaration von

lokalen Variablen(nur innerhalb dieser

Funktion gültig)

Hilfsvariable summe erforderlich

(weil die Funktionsvariable

harmReihe nur als

Zuweisungsziel erlaubt ist)

Page 21: Strukturierte Programmierung IFB 2002 Tobias Selinger.

21

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

gGesamtprogrammGesamtprogramm

program HarmonischeReihe;

var nMax: integer;

function harmReihe (n:integer): real;...end; {harmReihe}

begin {HP} writeln(harmReihe(100)); readln(nMax); writeln(harmReihe(nMax)); readln;end.

Deklaration vonglobalen Variablen

Definition der Funktion incl.

lokalen Variablen

Funktionsaufruf mit Eingabewert

100

Funktionsaufruf mit Eingabevariable

nMax

Page 22: Strukturierte Programmierung IFB 2002 Tobias Selinger.

22

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

gFunktionsdefinitionFunktionsdefinition

function <Fktname>(<Eingabedaten>):<Rückgabetyp>;

<Deklaration der lokalen Variablen>

begin

<Anweisungen incl. Zuweisung an den Fktnamen>

end; {<Fktname>}

Allgemeine Funktionsdefinition:

Page 23: Strukturierte Programmierung IFB 2002 Tobias Selinger.

23

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

gÜbungen zu FunktionenÜbungen zu Funktionen

a) hyp(a,b) berechnet die Hypotenusenlänge zu a und b.

b) potenz(x,y) berechnet xy (mittels exp und ln).

c) Vzyl(radius,hoehe) berechnet das Zylindervolumen.

d) max(a,b) berechnet das Maximum von zwei Zahlen.

e) Augenzahl liefert die zufällige Augenzahl eines Würfels.

f) teilbar(zahl,teiler) prüft, ob die Zahl durch den Teiler teilbar ist. (Tipp: Nutze Modulo-Funktion a mod b )

g) Schaltjahr(n) prüft, ob das Jahr n ein Schaltjahr ist.

h) rot(zahl) prüft, ob die Zahl bei Roulette rot ist. (Tipp: ungerade von 1 bis 9, 19 bis 27,

gerade von 12 bis 18, 30 bis 36)

Übungen zu Funktionen (ohne lokale Variable):

Schreiben Sie ein Programm Funk1 mit wenigstens dreien der folgenden Funktionen. Testen Sie Ihren Code!

Page 24: Strukturierte Programmierung IFB 2002 Tobias Selinger.

24

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

gVertiefende ÜbungenVertiefende Übungen

Vertiefende Übungen (z.T. mit lokalen Variablen):

Definieren und testen Sie folgende Funktionen:

a) fak(n) berechnet die Fakultät von n.

b) binko(n,k) berechnet den Binomialkoeffizient „n über k“.(Tipp: Verwenden Sie hierzu die Funktion fak)

c) ggT(a,b) berechnet den größten gemeinsamen Teiler

d) primzahl(n) prüft, ob n eine Primzahl ist.

Informieren Sie Sich über den Datentyp string (siehe folgende Folie), dann programmieren Sie:

d) anzahl_e(text) zählt, wie oft der Buchstabe „e“ im Text auftritt.

e) palindrom(wort) prüft, ob das Wort ein Palindrom ist. (Bsp.: ANNA, RADAR)

Page 25: Strukturierte Programmierung IFB 2002 Tobias Selinger.

25

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

g

Wertebereich: Zeichenketten („Texte“ incl. Ziffern und Sonderzeichen) bis max. 255 Zeichen.

Beispiel: var s: string;

s := 'Hund?';write(s);s[2] := 'a';write(s);write(s[1]);write(length(s));

Exkurs: Der Datentyp Exkurs: Der Datentyp stringstring

Page 26: Strukturierte Programmierung IFB 2002 Tobias Selinger.

26

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

gBeispiel mit ErklärungenBeispiel mit Erklärungen

Wertebereich: Zeichenketten („Texte“ incl. Ziffern und Sonderzeichen) bis max. 255 Zeichen.

Beispiel: var s: string;

s := 'Hund?';write(s);s[2] := 'a';write(s);write(s[1]);write(length(s));

Zugriffe auf das 2. bzw. 1. Zeichen

des Strings s

'H' 'u' 'n' 'd' '?'

1. 2. 3. 4. 5.

liefert die Länge von s

Page 27: Strukturierte Programmierung IFB 2002 Tobias Selinger.

27

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

gProzeduren im Black-Box-ModellProzeduren im Black-Box-Modell

Auch Prozeduren können als Black-Box dargestellt werden, z.B.:

gotoXY(x,y)

readln(a)

inc(n)

gotoXY

x,y

readln

a

inc

n

Page 28: Strukturierte Programmierung IFB 2002 Tobias Selinger.

28

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

gArten der Parameter-ÜbergabeArten der Parameter-Übergabe

Auch Prozeduren können als Black-Box dargestellt werden, z.B.:

gotoXY(x,y)

readln(a)

inc(n)

gotoXY

x,y

readln

a

inc

n

Eingabeparameterdie Werte gehen nur in

die Prozedur hinein

callby

value

Page 29: Strukturierte Programmierung IFB 2002 Tobias Selinger.

29

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

gArten der Parameter-Übergabe (ff.)Arten der Parameter-Übergabe (ff.)

Auch Prozeduren können als Black-Box dargestellt werden, z.B.:

gotoXY(x,y)

readln(a)

inc(n)

gotoXY

x,y

readln

a

inc

n

Eingabeparameterdie Werte gehen nur in

die Prozedur hinein

Ausgabeparameter die Variable a wird mit

einem Wert „gefüllt“

Übergabeparameterdie Variable n wird

übergeben und verändert

callby

value

callby

refe-rence

Page 30: Strukturierte Programmierung IFB 2002 Tobias Selinger.

30

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

gProzedur-KöpfeProzedur-Köpfe

gotoXY

x,y

readln

a

inc

n

Übersetzung in entsprechende Prozedurköpfe:

procedure gotoXY (x,y: integer);

procedure readln (var a: real);

procedure inc (var n: integer);

Referenz- bzw. „Variablen“-Parameter

Page 31: Strukturierte Programmierung IFB 2002 Tobias Selinger.

31

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

g Beachte: Im Gegensatz zu einer Funktion liefert eine Prozedur keinen „Rückgabewert“

zurück,aber sie kann beliebig viele Variablen verändern!

Beispiel 1: Die Prozedur tausche(a,b) sollden Wert zweier Variablen vertauschen!

Black-Box-Modell ?

Prozedurkopf ?

Prozedur tausche (a,b) ...Prozedur tausche (a,b) ...

Page 32: Strukturierte Programmierung IFB 2002 Tobias Selinger.

32

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

g... mit Prozedurkopf ...... mit Prozedurkopf ...

Beachte: Im Gegensatz zu einer Funktion liefert eine Prozedur keinen „Rückgabewert“

zurück,aber sie kann beliebig viele Variablen verändern!

Beispiel 1: Die Prozedur tausche(a,b) sollden Wert zweier Variablen vertauschen!

Black-Box-Modell:

Prozedurkopf:

tausche

a,b

procedure tausche (var a,b: real);

Ein vergessenes var ist ein sehr „beliebter“ (und fast unsichtbarer) Fehler!

Page 33: Strukturierte Programmierung IFB 2002 Tobias Selinger.

33

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

g... und komplett !... und komplett !

Beachte: Im Gegensatz zu einer Funktion liefert eine Prozedur keinen „Rückgabewert“

zurück,aber sie kann beliebig viele Variablen verändern!

Beispiel 1: Die Prozedur tausche(a,b) sollden Wert zweier Variablen vertauschen!

Black-Box-Modell:

Prozedur:

tausche

a,b

procedure tausche (var a,b: real);var x: real;begin x := a; a := b; b := x;end; {tausche}

Page 34: Strukturierte Programmierung IFB 2002 Tobias Selinger.

34

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

gProzedurkopf kartNachPolarProzedurkopf kartNachPolar

Beispiel 2: Die Prozedur kartNachPolar (x,y,r,phi) soll anhand der kartesischen Koordinaten (x, y) die entsprechenden Polarkoordinaten (r, phi) berechnen!

Black-Box-Modell ?

Prozedurkopf ?

kartNachPolar

procedure kartNachPolar

Page 35: Strukturierte Programmierung IFB 2002 Tobias Selinger.

35

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

gProzedurkopf kartNachPolarProzedurkopf kartNachPolar

Beispiel 2: Die Prozedur kartNachPolar (x,y,r,phi) soll anhand der kartesischen Koordinaten (x, y) die entsprechenden Polarkoordinaten (r, phi) berechnen!

Black-Box-Modell:

Prozedurkopf:

Tipp zur Programmierung: Nutzen Sie die Pascal-Funktion arctan(x) !

kartNachPolar

x,y r,phi

procedure kartNachPolar (x,y:real; var r,phi:real);

Page 36: Strukturierte Programmierung IFB 2002 Tobias Selinger.

36

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

gAufruf und Parameter-Übergabe:Aufruf und Parameter-Übergabe:

program procdemo;

var x,y: real;

procedure tausche (var a,b: real);var x: real;begin x := a; a := b; b := x;end; {tausche}

begin {HP} readln(x,y); tausche(x,y); writeln(x,y);end.

Page 37: Strukturierte Programmierung IFB 2002 Tobias Selinger.

37

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

gAktuelle und formale VariablenAktuelle und formale Variablen

program procdemo;

var x,y: real;

procedure tausche (var a,b: real);var x: real;begin x := a; a := b; b := x;end; {tausche}

begin {HP} readln(x,y); tausche(x,y); writeln(x,y);end.

globale Variable

Definition der Prozedur

tausche(a,b)

incl. lokale Variable x

Aufruf von tausche(x,y) , d.h.

Übergabe der aktuellen Variablen(x,y)

an die formalen Variablen(a,b)

dieses x ist nur innerhalb von

tausche gültig, d.h. völlig unabhängig vom (gleichnamigen)

globalen x !

Page 38: Strukturierte Programmierung IFB 2002 Tobias Selinger.

38

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

gNoch ein Aufruf-Beispiel und „Gegen-Beispiel“Noch ein Aufruf-Beispiel und „Gegen-Beispiel“

program procdemo;

var a,b: real;

procedure tausche (var a,b: real);... (wie gehabt)end; {tausche}

begin {HP} a := 1; b := 8; tausche(a,b); writeln(a,b); tausche(2,7); writeln(a,b);end.

Aufruf von tausche(a,b) , d.h.

Übergabe der aktuellen Variablen(a,b)

an die formalen Variablen(a,b)

sinnloser Aufruf, da die

Prozedur tausche hier Variablen verlangt!

Also: gleiche Variablennamen

sind möglich, aber ziemlich irritierend !

Page 39: Strukturierte Programmierung IFB 2002 Tobias Selinger.

39

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

gExkurs: Der Datentyp Exkurs: Der Datentyp record record (Strukturierung der Daten)(Strukturierung der Daten)

In der realen Welt gibt es oft Datenobjekte, dieaus mehreren Einzeldaten zusammengesetzt sind.

Beispiel:

Schüler 1

Name: Fred Meier

Klasse: 8c

Alter: 14

Modellierung in Pascal ?

Page 40: Strukturierte Programmierung IFB 2002 Tobias Selinger.

40

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

g In der realen Welt gibt es oft Datenobjekte, dieaus mehreren Einzeldaten zusammengesetzt sind.

Beispiel:

Schüler 1

Name: Fred Meier

Klasse: 8c

Alter: 14

type TSchueler = record

Name: string;

Klasse: string;

Alter: integer;

end;

Definition eines eigenen

Datentyps ...

... als Sammlung (Verbund) von

Einzeldaten

Page 41: Strukturierte Programmierung IFB 2002 Tobias Selinger.

41

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

g In der realen Welt gibt es oft Datenobjekte, dieaus mehreren Einzeldaten zusammengesetzt sind.

Beispiel:

Schüler 1

Name: Fred Meier

Klasse: 8c

Alter: 14

type TSchueler = record

Name: string;

Klasse: string;

Alter: integer;

end;

Definition eines eigenen

Datentyps ...

... als Sammlung (Verbund) von

Einzeldaten

var Schueler1: TSchueler;Deklaration einer entsprechenden

Variable

Page 42: Strukturierte Programmierung IFB 2002 Tobias Selinger.

42

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

gZugriff auf RecordsZugriff auf Records

Zugriff auf die Einzeldaten (Komponenten) eines Records:

Schueler1.Name := 'Fred Meier';

Schueler1.Alter := 14;

inc(Schueler1.Alter);

write(Schueler1.Alter);

Variablen-name Punkt

Komponenten-name

Beachte: Ein Records kann immer nur komponentenweise bearbeitet werden.So ist z.B. write(Schueler1) nicht möglich!

Page 43: Strukturierte Programmierung IFB 2002 Tobias Selinger.

43

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

gAufgabe: TBruch mit ProzedurenAufgabe: TBruch mit Prozeduren

Aufgaben: Definieren Sie ...

a) einen Datentyp TBruch zur Modellierung von Bruchzahlen(d.h. Angabe von Zähler und Nenner)!

b) eine Prozedur setze(bruch,z,n),die einen Bruch auf die angegebenen Werte setzt!

c) eine Prozedur schreibe(bruch),die einen Bruch mit Bruchstrich ausgibt!

d) eine Prozedur multipliziere(b1,b2,erg),die in der Variable erg das Produkt von b1 und b2 berechnet!

e) Schreiben Sie ein Programm BruchDemo mit zwei Bruch-Variablen Bruch1 und Bruch2 zum Testen Ihrer Prozeduren!

f) Öffnen Sie das Programm Bruchtrainer und ergänzen Sie die fehlenden Prozeduren!

Page 44: Strukturierte Programmierung IFB 2002 Tobias Selinger.

44

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

g

Auftrag: Frau Karajan möchte eine Liste ihrer CDs per EDV verwalten. Beispiel:

Aufgabe: MusikManagerAufgabe: MusikManager

1 Vivaldi: Vier Jahreszeiten

2 J.S.Bach: Goldberg-Variationen

3 Grieg: Peer Gynt Suite

4 Mozart: Eine kleine Nachtmusik

Page 45: Strukturierte Programmierung IFB 2002 Tobias Selinger.

45

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

gAufgabe: MusikManagerAufgabe: MusikManager

Auftrag: Frau Karajan möchte eine Liste ihrer CDs per EDV verwalten. Beispiel:

Die CD-Liste kann durch folgenden Datentyp modelliert werden:

1 Vivaldi: Vier Jahreszeiten

2 J.S.Bach: Goldberg-Variationen

3 Grieg: Peer Gynt Suite

4 Mozart: Eine kleine Nachtmusik

type TListe = recordElement: array[1..10] of string;Anzahl: integer;

end;

var CDs: TListe;

Page 46: Strukturierte Programmierung IFB 2002 Tobias Selinger.

46

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

gAufgabe: MusikManagerAufgabe: MusikManager

Auftrag: Frau Karajan möchte eine Liste ihrer CDs per EDV verwalten. Beispiel:

Die CD-Liste kann durch folgenden Datentyp modelliert werden:

1 Vivaldi: Vier Jahreszeiten

2 J.S.Bach: Goldberg-Variationen

3 Grieg: Peer Gynt Suite

4 Mozart: Eine kleine Nachtmusik

type TListe = recordElement: array[1..10] of string;Anzahl: integer;

end;

var CDs: TListe;

CDs.Element[3]letzte Nummer:CDs.Anzahl

Datenfeld für 10 CD-NamenZähler für die

aktuelle Anzahl

Page 47: Strukturierte Programmierung IFB 2002 Tobias Selinger.

47

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

g

Aufgabe: Schreiben Sie für das Pascal-Programm MusiManfolgende Prozeduren:

a) zeige(Liste) zeigt die gesamte Liste

b) fuegeHinzu(Liste,Element) fügt ein Element hinzu

c) loesche(Liste) löscht die ganze Liste

d) loescheNr(Liste,Nummer) löscht das Elementan der angegebenen

Position

Page 48: Strukturierte Programmierung IFB 2002 Tobias Selinger.

48

TS

Str

ukt

uri

ert

e P

rog

ram

mie

run

g

Aufgabe: Schreiben Sie für das Pascal-Programm MusiManfolgende Prozeduren:

a) zeige(Liste) zeigt die gesamte Liste

b) fuegeHinzu(Liste,Element) fügt ein Element hinzu

c) loesche(Liste) löscht die ganze Liste

d) loescheNr(Liste,Nummer) löscht das Elementan der angegebenen

Position

Zur Anregung:procedure fuegeHinzu (var liste: TListe; eintrag: string);

begin

if liste.Anzahl < 10 then begin

inc(liste.Anzahl);

liste.Element[liste.Anzahl] := eintrag;

end;