Übung 3 - ETH Zürich

ETH Zürich, D-INFK/D-BAUG
Herbstsemester 2015
Dr. Martin Hirt
Daniel Jost
Informatik I
Übung 3
Abgabe: 06.10., 10:00 Uhr.
Die Abgabe ist ab dieser Woche ausschliesslich per E-Mail möglich. Auf der Vorlesungswebseite
kann wiederum eine Textvorlage, lsg03.txt, für die Lösung heruntergeladen werden.
3.1
Programmverhalten
Ergänze die rechte Seite so, dass die beiden Programme Prog1 und Prog2 das gleiche Verhalten
haben.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
3.2
PROGRAM Prog1 ;
1 PROGRAM Prog2 ;
2
3 VAR
4
a , b : INTEGER;
5
6 BEGIN
7
Readln ( a ) ;
VAR
a , b : INTEGER;
BEGIN
Readln ( a ) ;
b := 0 ;
IF a = 1 THEN
IF a = 2 THEN
IF a = 3 THEN
IF a = 4 THEN
IF a = 5 THEN
IF a = 6 THEN
Writeln (b) ;
END.
b
b
b
b
b
b
:=
:=
:=
:=
:=
:=
1;
2;
1;
3;
2;
3;
8
IF
9
ELSE IF
THEN b := 2
10
ELSE IF
THEN b := 3
11
ELSE
12
Writeln (b) ;
13 END.
Schleifen und Formatierung
Betrachte folgenden Pascal-Programme:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
PROGRAM Prog3 ;
VAR
n,
g,
i : INTEGER;
BEGIN
Readln ( n ) ;
g := 0 ;
i := 1 ;
WHILE i <= n
DO
BEGIN
IF i mod 2 = 0
THEN
g := g + i ;
Inc ( i ) ;
END;
Writeln ( g ) ;
END.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
PROGRAM Prog4 ;
VAR
n,
p,
i : INTEGER;
BEGIN
Readln ( n ) ;
p := 1 ;
i := 0 ;
IF p < n
THEN
REPEAT
Inc ( i ) ;
p := p ∗ i
UNTIL p >= n ;
Writeln ( i ) ;
END.
THEN b := 1
;
a) Formatiere die Programme sinnvoll (analog der Programme auf den Folien).
b) Beschreibe in Worten, was die Programme berechnen.
c) Beide Programme lassen sich vereinfachen, wenn man einen anderen Schleifentyp wählt. Begründe, wieso die aktuelle Wahl der Schleife nicht optimal ist und verbessere die Programme.
Speichere die neuen Programme als prog3c.pas und prog4c.pas.
3.3
Kalter Kaffee
Lässt man eine Tasse heissen Kaffe stehen, so kühlt er sich mit der Zeit ab. Aus der Physik
wissen wir, dass sich die Temperaturdifferenz zwischen Kaffee und Umgebung in jeder Minute
um einen fixen Bruchteil reduziert. Dieser Bruchteil heisst Abkühlfaktor und hängt von den
physikalischen Eigenschaften der Tasse ab. So nähert sich die Temperatur des Kaffees also mit
der Zeit immer näher der Umgebungstemperatur an.
Zur Formalisierung führen wir nun folgende Variablen ein: die Umgebungstemperatur tU (welche
wir als konstant annehmen), die aktuelle Temperatur des Kaffes tK und der Abkühlfaktor k
(0 < k < 1). Wir erhalten dann folgende Formel1 , welche die Temperatur t0K nach einer weiteren
Minute berechnet:
t0K := tK − k · (tK − tU ).
(1)
a) Wir schreiben nun ein Programm, welches berechnet wie warm der Kaffe nach einer bestimmten Anzahl Minuten noch ist. Lade dazu das Programmgerüst kaffee.pas von der
Vorlesungswebseite herunter und vervollständige es.
Tipp: Überlege dir zuerst, welche Art von Schleife (FOR oder WHILE) am besten zum Problem passt. Beachte zudem, dass in Pascal der Wert einer Variablen sich ändern kann. Wir
benötigen also nur eine Variable für die Temperatur des Kaffees.
b) Starte das Programm mit einer Anfangstemperatur von 75◦ C, einer Umgebungstemperatur
von 19◦ C und dem Abkühlungsfaktor k = 0.1. Berechne die Endtemperatur des Kaffees,
wenn er 30 Minuten lang stehen gelassen wird.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
PROGRAM K a f f e e ;
VAR
tK , tU , k : REAL;
m: INTEGER;
// w e i t e r e V a r i a b l e n
...
// Temperaturen und A b k u e h l u n g s f a k t o r
// Anz . Minuten s t e h e n g e l a s s e n
BEGIN
// L i e s Anfangswerte e i n . . .
Write ( ’ Umgebungstemperatur : ’ ) ;
Readln ( tU ) ;
Write ( ’ Anfangstemperatur d e s K a f f e e s : ’ ) ;
Readln ( tK ) ;
Write ( ’ A b k u e h l u n g s f a k t o r ( zw 0 und 1 ) : ’ ) ;
Readln ( k ) ;
Write ( ’ Anzahl Minuten s t e h e n g e l a s s e n : ’ ) ;
Readln (m) ;
// Berechne d i e Temperatur tK nach ’m’ v i e l e n Minuten
...
// Ausgabe d e r Endtemperatur
...
END.
Listing 1: Programmgerüst kaffee.pas
1
Für alle Analysis-Interessierten: Die Formel stammt vom Abkühlungsgesetz von Newton. In dieser Form ist
sie bloss eine Näherung. In der Analysis wäre es die Ableitung der Temperaturfunktion.