Schleifen-beobachtung

Slides:



Advertisements
Ähnliche Präsentationen
Blue J.
Advertisements

Hochschule Fulda – FB ET Sommersemester 2010
Aufgabe: Wie stellt man eine for-Schleife durch eine while-Schleife dar ?
Verschachtelte Schleifen
Zusammenfassung der Vorwoche
Suche in Texten (Stringsuche )
der Universität Oldenburg
Themen: Neue Funktionen Dynamische Bildgalerie Seminar: Macromedia Flash.
C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.
SWITCH - Anweisung.
SWITCH - Anweisung.
Java- Syntax.
ARRAY oder FELD oder VEKTOR
WHILE - Anweisung.
WHILE - Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
Assoziationen (Beziehungen). Zwischen Objekten kann es eine Beziehung geben.
Polymorphie (Vielgestaltigkeit)
Der Präprozessor. Bevor der Compiler das Programm in Maschinencode übersetzt (nur dieser kann von der CPU, dem Herz des Computers, bearbeitet werden)
DO...WHILE Anweisung.
Dynamischer Speicher. In einer Funktion wird z.B. mit der Deklaration int i; Speicher auf dem sogenannten Stack reserviert. Wenn die Funktion verlassen.
DO...WHILE Anweisung.
Java- Syntax.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Boolesche Ausdrücke Ist der Rückgabewert eines Ausdrucks vom Typ boolean, so wird dieser als Boolescher Ausdruck bezeichnet (nach dem Mathematiker George.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Variable Feld Vereinbarung Zuweisung Block while-Schleife Bedingte Anweisung (if) Typ.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Programm besteht aus mehreren Bestandteilen: Schlüsselwörter Sonderzeichen Bezeichner Kommentare Texte.
PKJ 2005/1 Stefan Dissmann Zusammenfassung der Vorwoche Variable stehen für (einen) Wert, der sich im Programmablauf ändern kann. Variablen besitzen einen.
Zusammenfassung Vorwoche
2. Univariate Regressionsanalyse 2.1 Das statische Regressionsmodell
Portierung von Java nach C
Wiederholung mit fester Anzahl (Buch S 115)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Schleifen mit der Turtle
Informatik Grundkurse mit Java
Struktogramme IF-ELSE FOR – Schleife
Java & Greenfoot Grundlagen.
Java programmieren mit JavaKara
§24 Affine Koordinatensysteme
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
Wiederholte Programmausführung
2. Zustandsorientiertes Modellieren 2.1 Einfachauswahl
Wahrscheinlichkeitsrechnung
Datenreihen erzeugen –
C-Einstieg. Agenda 1Vorbereitung 2Aufbau eines Programms 2.1Header 2.2 Methoden 2.3Main 3Datentypen & Variablen 4Operatoren(+, -, *, /) 5Logik 5.1IF 5.2Switch.
Einführung. Steuerelemente Hier erstellt man das Fenster, mit dem der Anwender später arbeiten soll: Werte eingibt Buttons klickt Auswahlen trifft.
Eine Darstellung mit Bits
Algorithmen und Datenstrukturen Übungsmodul 3
Dynamische Webseiten-Generierung
Agenda für heute, 20. April, 2006 Wiederholte ProgrammausführungWiederholte Programmausführung Algorithmische Grundlagen Bedingungen zum Abbruch von Programmschleifen.
Agenda für heute, 14. April, 2005 Wiederholte ProgrammausführungWiederholte Programmausführung Algorithmische Grundlagen Bedingungen zum Abbruch von Programmschleifen.
Vorlesung 3. if else Anweisung if (Ausdruck) Anweisung1 else Anweisung2 Ausdruck hat einen von 0 verschiedenen Wert, so wird Anweisung 1 ausgeführt. Bei.
Variablen. var meineZahl:Number = 7; meineZahl 7 Name TypWert = Zuweisung von Variablen.
Parallelisierung für Multiprozessor-Maschinen
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
programmieren des casio FX-7400GII
A) Erklären Sie den Datentyp char. b) Erklären Sie den Datentyp Struct c) Erklären Sie die Wirkungsweise des Operators & bei Anwendung im Zusammenhang.
Schleifen
© 2004 Pohlig Informatik Kurse © 2004 Pohlig Informatik Kurse Der Tramp tanzt die Rekursion zünderUntersuchen(…) Basisfall Rückmeldung:
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Lernlandkarte OOP (ObjektOrientiertes Programmieren)
Korrektheit von Programmen – Testen
Prüfungsbesprechung Barbara Scheuner Vorlesung: Programmieren und Problemlösen Prof. Hans Hinterberger.
Mechanik I Lösungen.
Schleifen mit der Turtle
Pointer. Grundsätzliches: Im Arbeitsspeicher werden Daten gespeichert. Um auf die Daten eindeutig zugreifen zu können, werden diesen Daten Adressen zugeordnet.
TRUE und FALSE in C Der Wert 0 steht für FALSE Jeder von 0 verschiedene Wert steht für TRUE FALSE wird als 0 dargestellt TRUE wird als 1 dargestellt.
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
Wiederholte Programmausführung
Verschachtelte Schleifen
Adiazenzmatrix des Graphen
 Präsentation transkript:

Schleifen-beobachtung

Aufgabe: Schreiben Sie ein Programm (auf Papier), das die folgende Summe berechnet: 1+2+3+4+...+98+99+100

Programmier-Idee:

+ 4 1 + 2 + 3 + ... sum sum sum sum

umgesetzt in Java ergibt dies:

sum = 1; sum = sum+2; sum = sum+3; sum = sum+4; ... Wert von sum: 1 1 + 2 sum = sum+3; Wert von sum: 1 + 2 + 3 sum = sum+4; Wert von sum: 1 + 2 + 3 + 4 ... Diese sich immer wiederholenden Anweisungen kann man kürzer darstellen durch eine... Schleife !

Bei jedem Schleifendurchgang muß i um 1 erhöht werden ! sum = sum+i;

sum = 0; i = 1; while(i<= ){ 100 sum = sum+i; i = i+1; } Vorschlag für die Anfangswerte. 0; 1; Vorschlag für die Bedingung while(i<= ){ sum = sum+i; i = i+1; } 100 Man muß die Werte von i und sum beobachten ! Woher weiß man, daß diese Werte ein korrektes Programm liefern ??

Beobachtung von Programmen (Debuggen)

Jedesmal, wenn das Programm an die mit dem Pfeil --> bezeichnete Stelle kommt, wird der Prozessor gedanklich angehalten (analog: der Filmprojektor) und die aktuellen Werte der Variablen in die Tabelle eingetragen (analog: Das Bild , das gerade vom Filmprojektor gezeigt wird, also die aktuelle Momentaufnahme). Dann wird der Film wieder bis an die mit dem Pfeil --> bezeichnete Stelle weitergespult und es werden wieder die aktuellen Werte der Variablen in die Tabelle eingetragen.

In der Tabelle wird also die dynamische Entwicklung der Inhalte der Variablen festgehalten.

sum = 0; i = 1; while(i<= ){ 100 sum = sum+i; i = i+1; } sum 1 1+2 Hier wird beobachtet Welchen Wert hat i, wenn das Programm das letzte Mal an diese Stelle kommt ? 0; 1; Welchen Wert hat dann sum? while(i<= ){ sum = sum+i; i = i+1; } 100 Die letzte Zahl in sum ist jeweils um 1 kleiner als der Wert von i ! 1+2+3+...+98+99+100 Welchen Zusammenhang gibt es zwischen i und sum ? sum 1 1+2 1 +2+3 1+2+3+4 ... i 2 3 4 5 ... 101

Alternative Möglichkeit, die Korrektheit eines Programms zu "beweisen":

Man testet die Schleife für wenigere Schleifendurchgänge

sum = 0; i = 1; while(i<=100){ sum = sum+i; i = i+1; } Man wählt also nicht 100, sondern kleinere Werte wie z.B. 3 oder 4.

sum = 0; i = 1; while(i<= ){ sum = sum+i; i = i+1; } Man wählt also nicht 100, sondern kleinere Werte wie z.B. 3 oder 4.

sum = 0; i = 1; while(i<=3 ){ sum = sum+i; i = i+1; } Man wählt also nicht 100, sondern kleinere Werte wie z.B. 3 oder 4. Jetzt betrachtet man für jede Anweisung, wie sich die Variablen verändern. Welche Anweisungen werden jetzt also konkret gemacht und welche Variablen werden auf welche Werte gesetzt? Wir beginnen mit der 1. Anweisung...

sum = 0; i = 1; while(i<=3 ){ sum = sum+i; i = i+1; } sum i

sum = 0; i = 1; while(i<=3 ){ sum = sum+i; i = i+1; } sum i 1 1

sum = 0; i = 1; while(i<=3 ){ sum = sum+i; i = i+1; } wahr sum i 1 i 1 1 1 wahr

sum = 0; i = 1; while(i<=3 ){ sum = sum+i; i = i+1; } sum 1 i 1 1 1 1 i 1 1 1 1 1

sum = 0; i = 1; while(i<=3 ){ sum = sum+i; i = i+1; } sum 1 i 1 2 1 1 i 1 2 1 1 1 1 2 1

sum = 0; i = 1; while(i<=3 ){ sum = sum+i; i = i+1; } wahr sum 1 i 1 i 1 2 2 wahr

sum = 0; i = 1; while(i<=3 ){ sum = sum+i; i = i+1; } sum 1 1+2 i 1 1 1+2 i 1 2 2 1+2 1 2

sum = 0; i = 1; while(i<=3 ){ sum = sum+i; i = i+1; } sum 1 1+2 i 1 1 1+2 i 1 2 3 2 1+2 1 2 3 2

sum = 0; i = 1; while(i<=3 ){ sum = sum+i; i = i+1; } wahr sum 1 1 1+2 i 1 2 3 3 wahr

sum = 0; i = 1; while(i<=3 ){ sum = sum+i; i = i+1; } sum 1 1+2 1 1+2 1+2+3 i 1 2 3 3 1+2+3 1+2 3

sum = 0; i = 1; while(i<=3 ){ sum = sum+i; i = i+1; } sum 1 1+2 1 1+2 1+2+3 i 1 2 3 4 3 1+2+3 1+2 3 4 3

sum = 0; i = 1; while(i<=3 ){ sum = sum+i; i = i+1; } falsch sum 1 1 1+2 1+2+3 i 1 2 3 4 4 falsch

sum = 0; i = 1; while(i<=3 ){ sum = sum+i; i = i+1; } sum 1 1+2 1 1+2 1+2+3 i 1 2 3 4 4

sum = 0; i = 1; while(i<=3 ){ sum = sum+i; i = i+1; } sum 1 1+2 1 1+2 1+2+3 i 1 2 3 4 Damit berechnet das Programm die Summe 1 + 2 + 3 wenn man für die Bedingung i <= 3 schreibt. Damit kann man vermuten, dass dies analog für i <= 100 funktioniert. Um sicher zu gehen, sollte man noch ein paar weitere Tests machen, wie z.B. für i <= 4