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.
© Copyright 2024 ExpyDoc