SchüLerscript Imperative Programmierung Mit Der Delphi Konsole
1. Informatik gk 11
Grundlagen der imperativen Programmierung mit Pascal und Delphi
1. Grundlagen
1.1 erstes Programm
Aufgabe 1
Begin
Zahl a einlesen
Zahl b einlesen
c = a + b
Ausgabe Zahl c
End.
a) Beschreibe die Struktur des Programms.
b) Setze das Struktogramm in ein Delphi-Programm um.
Aufgabe 2
a) Welche Bedeutung hat das Semikolon in Pascal?
b) Unterscheidet Pascal (Delphi) Groß- und Kleinschreibung?
1.2 Einfache Datentypen
(1) numerische Datentypen
Integer: ganzzahliger Wert, (Bsp. 21, -2334) Wertebereich: -32 768 ... 32 767
Byte: ganzzahliger Wert, Wertebereich: 0..255
Real: reellwertige Zahl, zum Beispiel Zahlen mit Nachkommastellen, (Bsp: -34.987)
Wertebereich: -1038
.. 1038
(2) Zeichen und Zeichenketten
Char: Zeichen Beispiele: A, M, 1, ?, %, },
String: Zeichenkette Beispiele: Computer, 15.11.2002
(Hinweis: 15.11.2002 ist nicht numerisch, da die Angabe mehr als einen Punkt enthält.)
(3) Wahrheitswert
Boolean: logische Variable, die entweder den Wahrheitswert wahr (true) oder falsch
(false) aufnehmen kann
1.3 Write-Anweisung
1.4 Variablenkonzept
vgl. Unterricht
1
Var a: Real;
…
Writeln (‘Der Flächeninhalt beträgt’ , a:8:2 , ’Zentimeter’);
Textkonstante Zugriff auf eine
Variable
Textkonstante
2. Informatik gk 11
Grundlagen der imperativen Programmierung mit Pascal und Delphi
Aufgabe 1
Aus einem gegebenen Radius r eines Kreises sollen die Kreisfläche und der Kreisumfang
berechnet werden. Die Zahl Pi kann mit 3,14 angegeben werden.
a) Erstelle das Struktogramm,
b) setze das Struktogramm in ein Delphi-Programm um.
Aufgabe 2
Das folgende Programmfragment ist syntaktisch korrekt.
Var Preis: Real;
Preiserhoehung: Real;
...
Preis := 75;
Preiserhoehung := 5;
* Preis := Preis + Preiserhöhung;
** Preiserhöhung := Preiserhöhung *2;
Beschreibe mit Worten, was bei den Zuweisungen in Zeile * und ** passiert!
Benutze dazu das Modell der "Schubladenbox" aus dem Unterricht.
Aufgabe 3
Erkläre das Variablenkonzept in Pascal (Delphi).
Aufgabe 4
Warum müssen Variablen, mit denen im Anweisungsteil gearbeitet werden soll, vorher im
Vereinbarungsteil mit Angabe des Datentyps vereinbart werden?
1.5 Fehlerarten
(1) Syntaxfehler
Fehler, die der Compiler zum Zeitpunkt des Compilierens erkennt. Der Compiliervorgang
wird abgebrochen.
Bsp: Einer Variablen vom Typ Integer wird im Programm der Wert einer Variablen vom Typ
Real zugewiesen
(2) Laufzeitfehler
Fehler, die erst zum Zeitpunkt der Programmaufführung auftreten. Die Programmausführung
wird abgebrochen.
Bsp: Wertzuweisung eines Wertes außerhalb des Wertebereichs einer Variablen durch den
Benutzer während der Programmausführung.
Aufgabe 1
Gegeben ist folgender Pascal-Quelltext:
Program Beispiel 1;
(* Dieses Programm berechnet den
Flächeninhalt
eines Dreiecks *)
Var grundseite: Real;
hoehe : Real;
flaeche: Integer;
2
3. Informatik gk 11
Grundlagen der imperativen Programmierung mit Pascal und Delphi
Begin;
Write ('Eingabe Grundseite in cm: ')
Readln (grundseite);
Write ('Eingabe Hoehe in cm: ');
Readln (hoehe);
flaeche = grundseite * hoehe / 2;
Writeln;
Writeln;
* Write ('Die Dreicksfläche beträgt:’ * ,flaeche,' qcm');
Readln;
End.
a) Welche syntaktischen Fehler enthält der Programmcode?
b) Stelle den Programmablauf in einem Struktogramm dar!
c) Welche Ausgaben erfolgen beim Aufruf des write-Befehls in den Zeilen *?
Aufgabe 2
Welche syntaktischen Fehler weist folgendes Programm auf?
Program Zinsen;
(* Aus der Eingabe des Betrags und dem Zinssatz
werden die jährlichen Zinsen errechnet*)
Var Zinsen, Betrag: Real
Endkapital: Integer;
Begin
Write ('Eingabe Betrag:');
Readln (Betrag);
Write ('Eingabe', Zinssatz);
Zinsen := Betrag * 0.01 * Zinssatz / 360;
Endkapital := Betrag + Zinsen;
Writeln ('Die Zinsen betragen: ' , Zinsen:8:2,' Euro');
Writeln ('Der Endbetrag ist: ' ,Endkapital:8:2 ,' Euro');
End.
Aufgabe 3
Beim Fehlen der Kommata in der Write-Anweisung wird die Fehlermeldung
ERROR: ’)’ expected
ausgegeben. Warum lautet die Meldung nicht : ’,’ expected ?
1.6 Divisionsarten
(1) Ganzzahlige Division (2) Divisionsrest
Wert := 108 div 5; Wert := 108 mod 5;
Variableninhalt: Wert = 21 Variableninhalt: Wert = 3
(3) Divisionsoperator
Wert := 108 / 5;
Variableninhalt: Wert = 21.6
Aufgabe 1
Berechne die Werte der folgenden Ausdrücke:
a) 12 MOD 7
b) 12 DIV 7
c) 45 MOD 6 + 3
3
4. Informatik gk 11
Grundlagen der imperativen Programmierung mit Pascal und Delphi
d) 45 DIV (6 + 3)
e) (23 DIV 5) / 2
f) (23 MOD 5) / 2
Aufgabe 2
a) Werte den Ausdruck schrittweise aus:
a := 20 MOD 7 /15 DIV 4 +3-18 DIV 5*2
b) Welchen Datentyp hat das Ergebnis?
c) Programmiere die Zeile aus (a). Wo liegt der Fehler?
Aufgabe 3
Es gilt folgende Variablendeklaration:
Var a, b : Real;
c, e : Integer;
d: Boolean;
Welche Pascal-Anweisung wird durch den Compiler nicht beanstandet?
a) a := c / d;
b) c := a * b;
c) d := 'False';
d) b := c DIV e
1.7 Weiterführende Aufgaben
Aufgabe 1
Mithilfe der Steigungsformel
21
21
xx
yy
m
−
−
= kann man die Steigung einer Geraden durch die
Punkte P(x1/y1) und Q(x2/y2) berechnen.
a) Erstelle ein Struktogramm,
b) erstelle das entsprechende Delphi-Programm.
Aufgabe 2
Mit der Eingabe von p und q kann ein Programm mithilfe der p/q-Formel die Nullstellen des
Polynoms: f(x) = x² + px + q berechnen.
Hinweis:
• Wurzel sqr(…), Quadrat sqrt(…)
• Unit ergänzen.
a) Schreibe die Formel für die beiden Nullstellen x1 und x2 als Delphi-Term auf,
b) erstelle das Struktogramm,
c) programmiere!
4
5. Informatik gk 11
Grundlagen der imperativen Programmierung mit Pascal und Delphi
2 Verzweigungen
2.1 Einseitige Auswahl (IF - THEN)
Aufgabe 1
a) Beschreibe, was im Flussdiagramm dargestellt wird und wie der Programmfluss verläuft,
b) Schreibe das Flussdiagramm in ein Struktogramm um.
Aufgabe 2
Gegeben ist das folgende Programmfragment:
Program Wurzelberechnung;
(* Das Programm berechnet die Wurzel einer Zahl mit der Standartfunktion
sqrt(x) *)
Var zahl, wurzel : Real;
Write ('Eingabe einer Zahl:');
Readln (zahl);
if __________ ______ (***)
Wurzel := sqrt (zahl);
writeln (wurzel:8:2);
Ergänze die Bedingung der if-Anweisung an der Stelle (***), so dass eine sinnvolle Abfrage
entsteht.
Setze alle Begin – End Anweisungen an die richtige Stelle.
Anweisung 2
erfüllt
Anweisung 1.1
Anweisung 1
Bedingung
Syntax
If Bedingung (oder Wahrheitswert) then
Anweisung ;
Bsp: If (a < b) then
Write (' a ist kleiner als b');
5
6. Informatik gk 11
Grundlagen der imperativen Programmierung mit Pascal und Delphi
2.2 Zweiseitige Auswahl (IF - THEN - ELSE)
Aufgabe 1
a) Beschreibe, was im Flussdiagramm dargestellt wird und wie der Programmfluss verläuft,
b) Schreibe das Flussdiagramm in ein Struktogramm um.
Aufgabe 2
Ein Parkhaus hat folgenden Tarif:
Parkdauer Parkgebühr
bis 2 Stunden
jede weitere
angefangene Stunde
Höchstgebühr
überhaupt
kostenlos
2 €
30 €
Die Parkzeit wird in einer Variablen in Minuten eingegeben.
a) Entwirf ein Struktogramm zur Berechnung der Parkgebühr,
b) schreibe das entsprechende Pascal-Programm.
Syntax
if Bedingung (oder Wahrheitswert) then
Anweisung A
else
Anweisung B;
Bsp: if (a < b) then
Write ('a ist kleiner als b')
else
Write (' a ist größer oder
gleich b');
Anweisung 2
erfüllt
Anweisung A
Anweisung 1
nicht erfüllt
Anweisung B
Bedingung
6
7. Informatik gk 11
Grundlagen der imperativen Programmierung mit Pascal und Delphi
Aufgabe 3
Gegeben ist folgendes Programm:
Program Abfrage;
Var a, b, c, d, e, : Real;
Begin
Write ('Eingabe von a ');
Readln (a);
Write ('Eingabe von b ');
Readln(b);
Write ('Eingabe von c ');
Readln (c);
d := 0;
e := 0;
IF (a < b) THEN
d := a+b;
IF (a > c) THEN
IF (b > c) THEN
d := a*b (*)
ELSE
d := a*c (***)
ELSE
e := a+b+c;
Writeln (' d ', d:5:2);
Writeln (' e ', e:5:2);
END.
a) Zeichne zur besseren Übersicht ein Struktogramm des Pascal-Programms!
b) Was würde der Compiler bei einem Semikolon bei (*) interpretieren und somit eine
Fehlermeldung ausgeben?
c) Warum darf bei (***) kein Semikolon stehen, auch wenn die If-Then-Else Anweisung
normalerweise mit einem Semikolon beendet wird.
d) Welche Werte bilden sich in den Variablen d und e?
Werte der Variablen Ergebnisse
a b c d e
7 3 4
-3 11 46
9 -5 5
12 4 2
Aufgabe 4
In einem Unternehmen gilt folgende Rabattregel:
Kundennummer gewährter
Rabattsatz
kleiner als 3000
3000 bis 5000
größer als 5000
12 %
0%
10 %
7
8. Informatik gk 11
Grundlagen der imperativen Programmierung mit Pascal und Delphi
Mithilfe des folgenden Programms soll nach der Eingabe der Kundennummer der
entsprechende Rabattsatz berechnet werden.
Program Kundenrabatt;
Var Kdnr, Rabattsatz: Integer;
Begin
Write ('Eingabe Kundennummer:');
Readln (Kdnr);
Rabattsatz := 0;
IF (Kdnr <= 5000) THEN
IF (Kdnr < 3000) THEN
Rabattsatz := 12
ELSE
Rabattsatz := 10;
Write ('Der Rabatt beträgt: ');
Writeln (Rabattsatz);
End.
Beim Testen liefert das Programm fehlerhafte Ergebnisse.
a) Zeichne ein Struktogramm der Auswahlbedingungen und
b) ermittle die Fehlerstelle.
Aufgabe 8
Warum gibt folgendes Programm beim Compilieren eine Fehlermeldung?
Program Fehler;
Var a : Integer;
Begin
IF (4 < 2)
THEN IF (2 < 3)
THEN a := 3
ELSE a := 4;
ELSE a:= 5;
Write(' a = ', a);
End.
Aufgabe 9
Ein Parkhaus hat folgenden Tarif:
Parkdauer Parkgebühr
bis zu 1 ½ Stunden 3 €
jede weitere
angefangene Stunde
1,5 €
Höchstgebühr pro Tag 10 €
Höchstgebühr überhaupt 200 €
Die Parkdauer soll dabei in Minuten eingelesen werden.
8
9. Informatik gk 11
Grundlagen der imperativen Programmierung mit Pascal und Delphi
a) Entwirf ein Struktogramm zur Darstellung des Lösungsalgorithmus' und
b) schreibe ein Pascalprogramm, das die Aufgabe löst.
2.3 Arbeitsweise der Bedingungsanweisung /
Vergleichsoperatoren
Aufgabe 1
Warum wird im Struktogramm der zweiseitigen Auswahl nach ja / nein (wahr / falsch) und nicht nach
then / else unterschieden?
Aufgabe 2
Die Anweisung
IF (a < b) THEN
kann auch wie folgt umgeschrieben werden:
Var wert : Boolean;
Begin
wert := (a < b);
...
IF wert THEN
...
End;
Welchen programmtechnischen Vorteil könnte diese Form der Auswertung haben?
Aufgabe 3
Was wird bei der Programmausführung an der Stelle der Punkte der Bedingung
IF ... THEN
geprüft, bzw. erwartet?
(1) Vergleichsoperatoren der Bedingungsanweisung
>
<
=
größer
kleiner
gleich
>=
<=
<>
größer gleich
kleiner gleich
ungleich
(2) Boolesche Variablen (Wahrheitswerte)
Variablen vom Typ boolean können nur die Werte true oder false
(ausgeschrieben) annehmen.
Daher können diese Variablen auch an die Stelle eines Vergleichsoperators
treten
Bedingungsanweisung liefert einen
Wahrheitswert
Auswertung eines Ausdrucks, nicht die
Beantwortung einer Frage mit ja / nein
a < b
true / false
9
10. Informatik gk 11
Grundlagen der imperativen Programmierung mit Pascal und Delphi
2.4 Logische Operatoren
Die logischen Opoeratoren kombinieren zwei boolesche Ausdrücke, um ebenfalls einen
booleschen Wert zu liefern.
and und
Bei and und or wird zuerst
die linke Seite der
Operation ausgewertet.
Nur, wenn das Ergebnis
noch wahr werden kann,
wird auch die rechte Seite
betrachtet
true and true = true ;
true and false = false ;
false and true = false;
false and false = false;
or oder true or true = true ;
true or false = true ;
false or true = true;
false or false = false;
xor entweder – oder
(exclusive – or)
true xor true = false
true xor false = true
false xor true = true
false xor false = false
not nicht not (true && true) = false ;
Aufgabe 1
Welche Ausgabe liefert folgendes Programm?
Program Logische_Operationen;
Var a, b, c : Integer;
Begin
a := 5;
b := 3;
c := 99;
IF (a = 5) or (b > 2) THEN
Write (' Ich');
IF (a < 5) and (b > 2) THEN
Write (' Du ');
IF (a = 5) and (b = 2) THEN
Write (' hatten');
IF (c <> 6) and (b > 10) THEN
Write (' hast ')
ELSE
Write (' habe ');
IF (b = 3) and (c = 99) THEN
Write (' keinen ');
IF (a = 1) or (b = 2) THEN
Write (' viel ');
IF not ((a < 5) and (b > 2))
THEN Write (' Spaß! ');
End.
2.5 weiterführende Aufgabe
Nach Eingaben der Parameter a, b und c werden vorhandene Lösungen der allgemeinen
quadratischen Gleichung der Form ax² + bx + c = 0 berechnet.
a) Erstelle ein Struktogramm eines möglichen Lösungsalgorithmus mittels der p/q-Formel.
Beachte auch die Fälle: Diskriminante < 0 und Diskriminante = 0.
b) Schreibe das entsprechende Delphi-Programm.
10
11. Informatik gk 11
Grundlagen der imperativen Programmierung mit Pascal und Delphi
3 Schleifen
3.1 Zählergesteuerte Wiederholung (FOR - TO - DO)
Syntax
(1)
for Laufvariable := Anfangswert to Endwert
do
Anweisung;
(2)
for Laufvariable := Anfangswert to Endwert
do
Begin
Anweisung1;
Anweisung 2:
. . .
Anweisung n;
End;
Rückwärtszählschleife
Die Zählschleife kann durch die Anweisung downto statt to auch rückwärts zählen. Die
Schleifenbedingungen bleiben dieselben.
Anweisung zur
Wiederholung von
Anweisung 1;
Anweisung 2;
Anweisung 1;
Anweisung 2;
Anweisung 1;
Anweisung 2;
Anweisung 1;
Anweisung 2;
Anweisung 1;
Anweisung 2;
Anweisung 1;
Anweisung 2;
...
Anweisung 1;
Anweisung 2;
Schleifen-
steuerung
Schleifen-
körper
Endwert
erreicht
Zähler
Anweisungsblock
11
12. Informatik gk 11
Grundlagen der imperativen Programmierung mit Pascal und Delphi
Aufgabe 1
Die Summe der Zahlen 1 bis 100 soll berechnet werden.
a) Erstelle ein Struktogramm,
b) schreibe das zugehörige Programm.
Aufgabe 2
Verallgemeinere das Programm aus Aufgabe 1 so, dass ein Anfangswert a und ein Endwert
b eingelesen werden, zwischen denen alle ganzen Zahlen summiert werden.
Als mathematische Formel sieht das für a < b so aus:
Aufgabe 3
a) Ein 6-seitiger Würfel hat als Würfelergebnis die Zahlen 1-6. Schreibe eine Folge von 20
Zufallszahlen auf die entstanden sein kann, wenn ein Würfel 20 mal geworfen wurde.
b) Folgendes Programm erzeugt 20 Zufallszahlen im Zahlbereich 1-6
program Zufallszahlen;
{$APPTYPE CONSOLE}
uses
SysUtils;
var i, zahl : integer;
begin
randomize;
for i := 1 to 20 do
begin
zahl := random (6) +1;
writeln(i , '. ' , zahl);
end;
readln;
{ TODO -oUser -cConsole Main : Hier Code einfügen }
end.
Erzeuge 20 Zufallszahlen und vergleiche mit deinen aufgeschriebenen Zahlen.
c) Ändere das Programm so, dass bei der Programmausführung ein Zählwert eingelesen
wird, der bestimmt, wie oft die Schleife durchlaufen wird (wie viele Zufallszahlen ausgegeben
werden).
baaai
b
ai
++++++=∑=
...)2()1(
∑=
=+++++
100
1
100...4321 i
i
12
13. Informatik gk 11
Grundlagen der imperativen Programmierung mit Pascal und Delphi
Aufgabe 4
Bei einem Würfelspiel werden drei Würfel hintereinander geworfen. Ein Spieler tippt auf eine
Zahl und gewinnt in Abhängigkeit davon, wie oft seine Zahl geworfen wurde.
a) Schreibe ein Programm, das einen Tipp einholt, in einer Schleife dreimal würfelt, die
Anzahl der Treffer zählt und dann ausgibt.
b) Das Programm soll erweitert werden, dass ein Gewinn ausgeschüttet (ausgegeben) wird.
0 Treffer --> - 1 €
1 Treffer --> 1 €
2 Treffer --> 2 €
3 Treffer --> 5 €
c) Wird der Spieler auf lange Sicht gewinnen oder verlieren? Wie könnte das in einem
Programm überprüft werden?
3. 2 Fußgesteuerte Wiederholung (REPEAT - UNTIL)
Syntax
repeat
Anweisung 1;
Anweisung 2;
. . .
Anweisung n;
until Bedingung
repeat
Anweisungsblock
until
nicht erfüllt
Schleifen-
bedingung
erfüllt
13
14. Informatik gk 11
Grundlagen der imperativen Programmierung mit Pascal und Delphi
Aufgabe 1
Ergänze die Schleifenaustrittsbedingung, so dass der folgende Schleifenrumpf die Summe
der Zahlen 1 bis 100 berechnet:
Summe := 0;
Zahl := 1;
Repeat
Summe := Summe + Zahl;
Zahl := Zahl + 1;
until ____________
Aufgabe 2
Entwickle ein Programm, das aus einer Reihe von positiven Zahlen das arithmetische Mittel
(Durchschnitt)
n
aaaa
a n++++
=
...321
bildet.
Die Anzahl der Zahlen n ist beim Programmstart noch nicht bekannt, die Eingabe soll
beendet sein, wenn die Zahl -1 eingegeben wird.
3. 3 Kopfgesteuerte Wiederholung (WHILE - DO)
Syntax
While Bedingung Do
Begin
Anweisung 1;
Anweisung 2;
. . .
Anweisung n;
End;
nicht
erfüllt
Anweisungsblock
erfüllt
Schleifen-
bedingung
100...321
100
1
++++=∑=i
i
14
15. Informatik gk 11
Grundlagen der imperativen Programmierung mit Pascal und Delphi
Aufgabe 1
Gib dem folgenden Programmfragment eine geeignete Schleifeneintrittsbedingung und
beschreibe, welche Funktion das Programmstück mit dieser Bedingung erfüllt:
Summe := 0;
Zahl := 1;
WHILE ________________ DO
Begin
Summe := Summe + Zahl;
Zahl := Zahl + 1;
End;
Aufgabe 2
Ist der Schleifentyp richtig gewählt? Begründe!
a := 4;
while (a > 0) do
Begin
Writeln (a, sqrt(a));
a := a - 0.5;
End;
Aufgabe 3
Ersetze die Schleife:
FOR i := 2 TO 30 DO
Writeln (i);
a) durch eine repeat,
b) durch eine while- Schleife.
Aufgabe 4
a) Zeichne ein Struktorgramm zu folgendem Algorithmus
Program Berechnung;
Var Zahl, Wert, Zaehler : Integer;
Begin
Writeln ('Eingabe einer Zahl: ');
Readln (Zahl);
Wert := 1;
While Zahl > 0 do
Begin
Wert := Wert * Zahl;
Zahl := Zahl -1;
End;
Wert := Wert DIV 2;
Writeln ('Ergebnis = ', Wert);
End.
b) Welchen Wert gibt das Programm aus, wenn als Zahl 4 eingegeben wird?
15
16. Informatik gk 11
Grundlagen der imperativen Programmierung mit Pascal und Delphi
3.4 Weiterführende Aufgaben
Aufgabe 1
Mithilfe von Schleifen kann man die Multiplikation zweier Zahlen durch eine Folge von
Additionen ersetzen:
a) Entwirf ein Struktogramm mit geeigneter Schleife zur Beschreibung des Algorithmus und
b) schreibe das entsprechende Pascal-Programm.
Aufgabe 2
Vergleiche die drei Schleifentypen, indem du folgende Tabelle vervollständigst:
Schleifentyp
Schleife mit
konstanter
Anzahl von
Durchläufen
Abbrechende Schleifen
Wiederholung mit
Ausgangsbedingun
g
Schlüsselwörter FOR - TO - DO
FOR - DOWNTO -
DO
REPEAT - UNTIL WHILE - DO
Schleifenüberwachung Zähler
Anzahl der
Schleifendurchläufe
- mindestens/höchstens
- festgelegt / nicht festgelegt
Besonderheiten
- wann wird dieser Typ
benutzt?
Aufgabe 3
Auf dem MvLG Schulfest führt die Theater AG „Romeo und Julia“ um 18.00 auf der
Probebühne auf. Der Eintritt ist frei. Der Theatersaal fasst 45 Plätze. Den Kartenverkauf soll
ein Programm der Informatik AG regeln. Bei dem Programm gibt der Kunde (Eltern, Lehrer,
Schüler) die Anzahl der gewünschten Karten ein (z.B. 3), der Rechner gibt die Sitznummern
(1-45) auf dem Bildschirm aus, wünscht einen schönen Tag und ist für die nächste Eingabe
bereit.
Ist der Saal voll erscheint ein entsprechender Hinweis und das Programm beendet sich auf
Tastendruck.
a) Fertige ein Struktogramm an und
b) Entwickle das Programm!
Aufgabe 4
Wegen der großen Nachfrage soll es nun drei Vorstellungen geben: 11.00, 14.30 und 18.00.
Das Programm fragt nun nach der Uhrzeit der gewünschten Vorstellung und verfährt wie
oben.
Entwickle das Programm.
a · b = a + a + a + ... + a
b mal
16
17. Informatik gk 11
Grundlagen der imperativen Programmierung mit Pascal und Delphi
Aufgabe 5
Vom Schaum in einem Bierglas zerfällt pro Minute 15%.
a) Entwickle ein Programm, das die Zeit berechnet, nach der sich der Schaum auf 1 % der
Ausgangsmenge reduziert hat.
b) Erweitere das Programm um die Eingabe der Variablen n, so dass die Zeit gemessen
wird, bis sich der Schaum auf n% der Ausgangsmenge reduziert hat.
Aufgabe 6
Entwickle ein Programm, das eine in Dezimalschreibweise gegebene natürliche Zahl in
römischer Schreibweise ausgibt.
1 ~ I; 5 ~ V; 10 ~ X; 50 ~ L; 100 ~ C; D ~ 500; M ~ 1000
Aufgabe 7
Überall muß man sich in Schlangen einreihen: an der Tür zum Klassensaal, an der
Straßenbahnhaltestelle, bei der Passkontrolle, beim Arzt oder auf der Post. Für denjenigen,
der gerade in der Schlange steht, ist es wichtig zu wissen, wie lange er noch etwa warten
muß. Noch wichtiger ist herauszufinden, wie lange die Schlange überhaupt werden kann.
Die Einmündung einer Nebenstraße in eine Hauptstraße ist durch eine Ampelanlage
gesichert, die im Verlauf einer Minute 15 Sekunden lang 'Grün' zeigt. Während dieser
Grünphase können höchstens fünf Fahrzeuge die Ampel passieren. Die Erfahrung zeigt,
dass in jeder Minute etwa drei Fahrzeuge an die Ampel heranfahren.
Wie groß wird die durchschnittliche Länge der Schlange?
Hinweise
Der Vorgang soll mit dem Computer simuliert werden. Dazu wählt man als Zeiteinheit eine
Sekunde. Da im Mittel drei Autos in der Minute an der Ampel ankommen, ist die
Wahrscheinlichkeit, dass während einer Sekunde ein Auto ankommt, 1/20 .Wir veranlassen
daher den Computer, für jede Sekunde eine Zufallszahl zwischen 0 und 19 zu ermitteln. Ist
die Zufallszahl 0, so nähert sich ein Fahrzeug der Ampel, und die Schlange wächst um 1
Fahrzeug. Falls noch Fahrzeuge an der Ampel warten, kann alle 3 Sekunden ein Auto die
Ampel passieren. Es muss also die Warteschlage um 1 vermindert werden, falls der Wert der
Variablen 'Sekunde' kleiner 16 und durch 3 teilbar ist.
Aufgabe 8
Der Rechner „denkt“ sich ein Zahl zwischen 1 und 100.
Der Spieler tippt so lange Zahlen, bis gedachte und getippte Zahl übereinstimmen. Als
Hinweis gibt der Rechner bei jeder getippten Zahl aus, ob seine gedachte Zahl größer oder
kleiner als die getippte Zahl ist.
a) Schreibe ein entsprechendes Programm.
b) Wie viele Tipps benötigt ein Spieler höchstens, um die gedachte Zahl zu „raten“.
c) Wie viele Versuche würde ein Spieler höchstens benötigen bei einer Feldgröße von
1. 1000 Zahlen,
2. 5000 Zahlen,
3. 9000 Zahlen
4. 100000 Zahlen?
17