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

Slides:



Advertisements
Ähnliche Präsentationen
Forschungszentrum caesar
Advertisements

Hochschule Fulda – FB ET Sommersemester 2010
Ausdrücke bezeichnen Elemente eines Datentyps induktive Definition:
10. Grundlagen imperativer Programmiersprachen
12. Iteration und Rekursion
Puck eine visuelle Programmiersprache für die Schule
Objektorientierter Entwurf
DINAMISCHE STRUKTUREN FACHBEGRIFFE 1. DER POINTERDER POINTER 2. DER BUFFERDER BUFFER 3. DER KNOTENDER KNOTEN DIE EINFACHVERKETTETE LISTE DEFINITION DEFINITION.
SWITCH - Anweisung.
Statischer Druck (Aufgabe 3) Projektübung Klimamodellierung ( ) – A. Paul.
Das erste Programm (Folie 16)
INHALT INHALT Inhalt Delphi IDE ObjectPascal Hello World! Delphi IDE
Agenda für heute, 8. Juni, 2006 Strukturierte Variablen: RecordsStrukturierte Variablen: Records Kombiniertes Strukturieren Bitmap-Dateien Datentypen:
Debugging in Lua Universität zu Köln Re-usable Content in 3D und Simulationssystemen Prof. Dr. Manfred Thaller Referent: Artur Wilke.
BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03.
Einführung in die Programmierung
Wiederholte Programmausführung
Willkommen... Studentinnen und Studenten der Studiengänge Umweltnaturwissenschaften Erdwissenschaften Agrarwissenschaften zur.
Agenda für heute, 20. Juni, 2010 Strukturieren von Programmen: UnitsStrukturieren von Programmen: Units Datentypen: Unterbereichstypen Übung 7: Bitmap-Dateien.
Konzept einer Programmiersprache!
Programiersprache Mustafa SÖYLEMEZ e
Interpreter & Compiler
Permanente Datenspeicherung
Grundlagen Wissenschaftlichen Arbeitens Hilal Tekoglu
Agenda für heute, 9. Juni, 2005 Direkte FilezugriffeDirekte Filezugriffe Textfiles Bitmap-Dateien Datentypen: Mengen.
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen Übungsmodul 2 Dr. W. Narzt u. Dr. A. Stritzinger.
Algorithmen und Datenstrukturen Übungsmodul 3
Mala Bachmann, Beispiel Velorennen Velorennen mit 5 TeilnehmerInnen Wie kann die durchschnittliche Rennzeit berechnet werden?
Mala Bachmann, Beispiel Velorennen (1) Velorennen mit 5 TeilnehmerInnen Wie kann die durchschnittliche Rennzeit berechnet werden?
MODULA-2.
Objektorientierte Programmierung
Agenda für heute, 22. Juni, 2006 Direkte FilezugriffeDirekte Filezugriffe Datentypen: Mengen Individualisierbare Datentypen.
Willkommen... Studentinnen und Studenten der Studiengänge Umweltnaturwissenschaften Erdwissenschaften Agrarwissenschaften zur.
Agenda für heute, 18. Mai, 2006 Strukturierung von Programmen: ProzedurenStrukturierung von Programmen: Prozeduren Strukturierung von Programmen: Units.
Datentypen: integer, char, string, boolean
Agenda für heute, 20. April, 2006 Wiederholte ProgrammausführungWiederholte Programmausführung Algorithmische Grundlagen Bedingungen zum Abbruch von Programmschleifen.
Willkommen... Studentinnen und Studenten der Studiengänge Umweltnaturwissenschaften Erdwissenschaften Agrarwissenschaften zur.
Agenda für heute, 12. Mai, 2005 ProzedurenProzeduren Funktionsprozeduren Prozedurparameter Lokale und globale Variablen Datentypen: Ordinaltypen.
Programmierparadigmen
Agenda für heute, 28. April, 2005 Strukturierte VariablenStrukturierte Variablen Arrays.
Agenda für heute, 2. Juni, 2005 Permanente DatenspeicherungPermanente Datenspeicherung Lesen und schreiben in Pascal Filetypen: Drei Kategorien Arbeiten.
Agenda für heute, 7. April, 2005 Bedingte ProgrammausführungBedingte Programmausführung Algorithmische Grundlagen Vergleichsoperatoren, Wahrheitswerte.
Agenda für heute, 14. April, 2005 Wiederholte ProgrammausführungWiederholte Programmausführung Algorithmische Grundlagen Bedingungen zum Abbruch von Programmschleifen.
Agenda für heute, 26. Mai, 2005 Strukturierte Variablen: RecordsStrukturierte Variablen: Records Kombiniertes Strukturieren Individualisierbare Datentypen.
Programmieren in C Grundlagen C 2
1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.
Programmierparadigmen
Vorkurs Programmierungstechnik Einführung in Pascal Michael Gellner Lehrstuhl für Softwaretechnik am Institut für praktische Informatik der Universität.
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Delphi Chars und Strings
Extended Pascal ( Erweitreung von Pascal) Name: Mehmet CELIK Matr :
The Programming Language Pascal
Prüfungsbesprechung Barbara Scheuner Vorlesung: Programmieren und Problemlösen Prof. Hans Hinterberger.
Programmiersprache PASCAL
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Programmieren mit Lazarus. Die Programmoberfläche das Hauptfenster der Objektinspektor das Formular der Quelltexteditor Komponenten hier einfügen...
Wiederholte Programmausführung
Programmieren und Problemlösen
Programmierparadigmen
Objektorientierte Programmierung
Strukturierte Variablen: Records
Datentypen: integer, char, string, boolean
Direkte Filezugriffe Agenda für heute, 22. Juni, 2006
Programmieren und Problemlösen
Prüfungsbesprechung Barbara Scheuner
Datentypen: integer, char, string, boolean
GRUNDLAGEN WISSENSCHAFTLICHEN ARBEITENS MODULA-2 SONAY SUBAYAZ
The Programming Language Pascal
 Präsentation transkript:

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

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.

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

Interaktion mit Pascal-Programmen DateneingabeDateneingabe Programmsteuerung Debugging Datentypen: real

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

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 '. 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

Interaktion mit Pascal-Programmen Dateneingabe ProgrammsteuerungProgrammsteuerung Debugging Datentypen: real

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

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

Interaktion mit Pascal-Programmen Dateneingabe Programmsteuerung DebuggingDebugging Datentypen: real

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.

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

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

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

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

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 x (8 Byte, 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

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 x Single1.5 x x Double5.0 x x Extended3.6 x x Comp Currency Der generische Typ Real ist in der aktuellen Implementation mit dem Typ Double identisch. 13/15

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/3-1)-1 = = 0 das bedeutet: 4/3 = /3-1 = deshalb: 3*(4/3-1) = *(4/3-1)-1 = – Also: a = – ≠ 0Lösung: 3 * 4 / 3 – 3 * 1 rechnen 14/15

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.1 (Real) Beispiel:(6 + 4) * ( ) Die Faktoren in Klammern werden zuerst ausgewertet: = 10 (Integer) 15/15