Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Agenda für heute, 21. April, 2005 Interaktion mit Pascal-ProgrammenInteraktion mit Pascal-Programmen Dateneingabe Programmsteuerung Debugging Datentypen:

Ähnliche Präsentationen


Präsentation zum Thema: "Agenda für heute, 21. April, 2005 Interaktion mit Pascal-ProgrammenInteraktion mit Pascal-Programmen Dateneingabe Programmsteuerung Debugging Datentypen:"—  Präsentation transkript:

1 Agenda für heute, 21. April, 2005 Interaktion mit Pascal-ProgrammenInteraktion mit Pascal-Programmen Dateneingabe Programmsteuerung Debugging Datentypen: real

2 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Interaktion mit dem Betriebssystem 2/15 Betriebssystem begin read (x);GetDate() if x >= 0 GetTime() then write (sqrt (2)) else write (x,'?'); end. begin read (x);GetDate() if x >= 0 GetTime() then write (sqrt (2)) else write (x,'?'); end.

3 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich An das Betriebssystem angepasster, standardisierter Code 3/15 begin read (x); if x >= 0 then write (sqrt (2)) else write (x,'?'); end. Programmbibliothek Objektcode für read-Operation Objektcode für write-Operation Objektcode für sqrt-Operation ….. Programmierumgebung Quellcode des Programms Compiler Objektcode des Programms

4 Interaktion mit Pascal-Programmen DateneingabeDateneingabe Programmsteuerung Debugging Datentypen: real

5 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Eingabevalidierung Ziel: Verhindern, dass ungültige Daten verarbeitet werden. 4/15 Mögliche Folgen inkorrekter Eingabedaten: unbeabsichtigtem Programmabbruch ("Absturz") "unendlichen" Schleifen falschem Programmablauf inkorrekten Resultaten

6 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Umwandlung textueller Zahlen in numerische Werte Die Standardprozedur read liest Zahlen als Textzeichen ein und wandelt diese in die interne, binäre Zahlendarstellung des Computers um. Manchmal ist es nicht möglich, read in dieser Form zu verwenden, weil der Eingabetext nicht-numerische Zeichen enthält, z.B.: 'die Werte sind 102 und 633.54'. Das Beispielprogramm Konvert, liest Eingabetext bis es eine Ziffer findet, liest weitere Ziffern, bis es das Ende der Zahl erreicht und konvertiert die Zahl in die binäre Darstellung. 5/15

7 Interaktion mit Pascal-Programmen Dateneingabe ProgrammsteuerungProgrammsteuerung Debugging Datentypen: real

8 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Programmsteuerung Stapelprogramm wird einmal ausgeführt, keine Interaktion möglich Interaktives Programm: Befehlszeilensteuerung Tastatureingabe führt zu bedingter Programmausführung Tastatureingabe führt zu Schleifenabbruch Interaktives Programm: Ereignissteuerung Mausbewegung, Maustaste oder Tastatureingabe in grafischen Elementen führt zu Programmausführung oder Programmabbruch Delphi 6/15

9 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Programmsteuerung mit Menüs ch:= ' '; while ch <> 'q' do begin writeln(Eingabe: 1 für die Tageszeit'); writeln(' 2 für das Datum'); writeln(' q um zu beenden'); readln('ch'); case ch of '1': { hole Systemzeit und gebe sie aus } '2': (* hole Systemdatum und gebe es aus *) end Siehe ausgegebenes Beispielprogramm 7/15 Klammern zur Begrenzung von Kommentaren

10 Interaktion mit Pascal-Programmen Dateneingabe Programmsteuerung DebuggingDebugging Datentypen: real

11 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Debugging Prävention Strukturiertes Programmieren Top-down Entwurf Lesbare Programme (gutes Layout, sinnvolle Bezeichner) 8/15 Es gibt keine allgemeine Regeln um Fehler in einem Programm zu finden. Jeder Bug ist einmalig Debugging verlangt Intuition, Eingebung, Erfahrung.

12 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Debugging: ein paar Hinweise Untersuche alle Anzeichen: Programmtext, Eingabedaten, Ausgabedaten, diagnostische Information des Run-time Systems. Rufe Programm mit anderen Eingabedaten auf. Füge zusätzliche write-Anweisungen ein um Zwischenresultate zu überprüfen. Prüfe Programmteile vor dem verdächtigen Programmabschnitt. Zeige Dein Programm Kolleginnen und Kollegen (ohne zu sagen, was Du vom Programm erwartest. Wenn Du den Fehler gefunden hast, stelle sicher, dass er für alle unerwarteten Verhaltensweisen des Programms verantwortlich ist. 9/15

13 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Debugging: ein Beispiel (Quelle: Tim Grams, Denkfallen und Programmierfehler) Gesucht ist die grösste Zweierpotenz, die nicht grösser als die vorgegebene Zahl z ist. program zweihoch; var z, p: integer; begin write('? z = '); readln(z); p:= 1; repeat p:= p*2 until p*2 >= z; writeln('! p = ',p) end. Was stimmt mit diesem Programm nicht? 10/15

14 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Debugging: ein Beispiel Stimmt es jetzt? program zweihoch; var z, p: integer; begin write('? z = '); readln(z); if z < 1 then p:= 0 else begin p:= 1; while p <= z do p:= p*2; p:= p div 2 end; if p = 0 then writeln('keine Lösung') else writeln('! p = ',p) end. 11/15

15 Interaktion mit Pascal-Programmen Dateneingabe Programmsteuerung Debugging Datentypen: realDatentypen: real

16 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Der Datentyp real Teilbereich der reellen Zahlen. Der Wertebereich ist vom Prozessor abhängig. Beispiel: 5.0 x 10 -324.. 1.7 x 10 308 (8 Byte, 15-16 signifikante Stellen) Operationen: +, –, *, /, ROUND, TRUNC Das Resultat eines Ausdrucks mit Integer-Werten kann sowohl an eine Integer-Variable als auch an eine Real-Variable zugewiesen werden. 12/15

17 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Reelle Typen in Delphi 6 Typ Bereich Signifikante Stellen Grösse in Byte Real482.9 x 10 -39.. 1.7 x 10 38 11-126 Single1.5 x 10 -45.. 3.4 x 10 38 7-84 Double5.0 x 10 -324.. 1.7 x 10 308 15-168 Extended3.6 x 10 -4951.. 1.1 x 10 4932 19-2010 Comp2 -63 +1.. 2 63 -119-208 Currency922337203685477.5808.. 922337203685477.580719-208 Der generische Typ Real ist in der aktuellen Implementation mit dem Typ Double identisch. 13/15

18 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Konsequenzen der endlichen Darstellung für real Gegeben sind folgende Anweisungen: a:= 4 / 3 – 1; a:= 3 * a – 1; Welchen Wert erhält a? Angenommen, wir haben 4 Ziffern um eine relle Zahl darzustellen: 4 = 4. 0 0 0 3 = 3. 0 0 0 1 = 1. 0 0 0 3(4/3-1)-1 = 4-3-1 = 0 das bedeutet: 4/3 = 1. 3 3 3 4/3-1 = 0. 3 3 3 deshalb: 3*(4/3-1) = 0. 9 9 9 3*(4/3-1)-1 = –0. 0 0 1 Also: a = –0. 0 0 1 ≠ 0Lösung: 3 * 4 / 3 – 3 * 1 rechnen 14/15

19 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Automatische Typenkonversion In Ausdrücken können Integer- und Real-Werte gemeinsam vorkommen. Wenn für eine der Operationen +, – oder * ein Operand vom Typ Real ist, dann wird der andere Operand automatisch zu Real konvertiert bevor der Operator angewandt wird. Beachte: Das Resultat ist vom Typ "Real" obwohl es ein ganzzahliger Wert ist! Der Multiplikationsoperator * hat einen Integer-Operanden (10) und einen Real-Operanden (1.1). Der Integer-Operand wird zu Real konvertiert: 10.0 * 1.1 = 11.0 (Real) Im zweiten Faktor ist 0.1 vom Typ Real, deshalb wird 1 zu Real konvertiert: 1 + 0.1 = 1.1 (Real) Beispiel:(6 + 4) * (1 + 0.1) Die Faktoren in Klammern werden zuerst ausgewertet: 6 + 4 = 10 (Integer) 15/15


Herunterladen ppt "Agenda für heute, 21. April, 2005 Interaktion mit Pascal-ProgrammenInteraktion mit Pascal-Programmen Dateneingabe Programmsteuerung Debugging Datentypen:"

Ähnliche Präsentationen


Google-Anzeigen