Prüfungsbesprechung Barbara Scheuner Vorlesung: Programmieren und Problemlösen Prof. Hans Hinterberger
Departement Informatik Prüfungseinsicht Karl Presser (karl.presser@inf.ethz.ch) CAB E 15.2 Universitätstrasse 6 8092 Zürich Sonntag, 10. Juni 2018 Departement Informatik
Departement Informatik Einzelne Fehler Texteditor Wann braucht es ein BEGIN… END? Wenn es mehr als eine Anweisung hat Als einzelne Anweisung gelten: Zuweisung Methodenaufruf Schleifenblock IF.. THEN.. ELSE- Block Sonntag, 10. Juni 2018 Departement Informatik
Departement Informatik Die meisten Fehler Bedingungen if-then-else In Schleifen Schleifen Laufvariablen Verschiedene Schleifentypen Äquivalenzen Matrizen / Arrays Sonntag, 10. Juni 2018 Departement Informatik
Departement Informatik Bedingungen Äquivalente Bedingungen: (i < 9) -> (i <= 8) (i > 5) -> (i >= 4) Bedingungen mit Variablen in schleifen Wird die Schleife überhaupt betreten? Werden die Variablen in der Schleife verändert? Wenn ja, wie ändert sich der Wert? Sonntag, 10. Juni 2018 Departement Informatik
Departement Informatik Schleifen-Beispiel Füllen Sie die Tabelle kurz aus Sonntag, 10. Juni 2018 Departement Informatik
Departement Informatik Schleifen-Typen FOR anfangswert TO endwert DO anweisungsfolge FOR anfangswert DOWNTO endwert DO anweisungsfolge WHILE bedingung DO anweisungsfolge REPEAT anweisungsfolge UNTIL bedingung Sonntag, 10. Juni 2018 Departement Informatik
Umwandlung von FOR-Schleifen FOR i:= 0 TO 20 DO … FOR i:= 20 DOWNTO 0 DO … FOR i:= 4 TO 24 DO … ACHTUNG: wird i innerhalb der Schleife verändert, kann das zu mehr oder weniger Iterationen führen. FOR i:= 0 TO 20 DO BEGIN writeln(i); i:=i+2; END; Achtung: Bezüge zu i müssen überprüft werden! Sonntag, 10. Juni 2018 Departement Informatik
Departement Informatik For -> While FOR i:= 3 TO 7 DO BEGIN FOR j:= 7 DOWNTO 0 DO writeln(i+j); END; i:= 3; WHILE (i<8) DO BEGIN j:= 7; WHILE (j>=0) DO writeln(i+j); j:= j-1; END; i:= i+1; Sonntag, 10. Juni 2018 Departement Informatik
Departement Informatik While -> Repeat (1) i:= 3; WHILE (i<8) DO BEGIN j:= 7; WHILE (j>=0) DO writeln(i+j); j:= j-1; END; i:= i+1; i:= 3; REPEAT j:= 7; writeln(i+j); j:= j-1; UNTIL (j<0); i:= i+1; UNTIL (i>7); (i=7); Sonntag, 10. Juni 2018 Departement Informatik
Departement Informatik While -> Repeat (2) i:= 3; WHILE (i<a) DO BEGIN i:= i+1; END; i:= 3; REPEAT i:= i+1; UNTIL (i>a); i:= 3; IF (i<a) THEN REPEAT i:= i+1; UNTIL (i>a); Problem: diese Bedingung könnte nie erfüllt sein. Sonntag, 10. Juni 2018 Departement Informatik
Departement Informatik Arrays (1) a: Array[2..10] of Integer; FOR i:= 1 to 9 DO A[i+1]:= (i+1) DIV 2; 1 1 2 2 3 3 4 4 5 2 3 4 5 6 7 8 9 10 b: Array[0..8] of Integer; FOR i:= 1 to 9 DO B[i-1]:= A[i+1]+(i+1); 3 1 2 3 4 5 6 7 8 4 6 7 9 10 12 13 15 Sonntag, 10. Juni 2018 Departement Informatik
Departement Informatik Arrays (2) Das Array text sein mit dem folgenden Inhalt versehen: Abc: Array[`a`..`z`] of Integer; ... For i:= 0 to 8 do abc[text[i]]:= abc[text[i]] +1; 1 2 3 4 5 6 7 8 d a s i t r o 1 a b c d i o r s t z 1 1 1 1 2 1 2 1 Sonntag, 10. Juni 2018 Departement Informatik
Departement Informatik Matrizen PROGRAM Buchstaben; VAR i,j:Integer; alpha: Array [1..3,0..3] of Char; BEGIN for j:= 0 to 3 DO BEGIN for i:= 1 to 3 DO BEGIN alpha[i,j]:= chr(96+i+(3*j)); END; for j:= 0 to 3 DO for i:= 1 to 3 DO writeln(alpha[i,j]); readln; END. i 1 1 2 2 3 3 j a b c 1 1 d e f 2 g h i 3 j k l Sonntag, 10. Juni 2018 Departement Informatik
Fehler beim Programmieren Fehlersuche: Semantik -> der Programmierer/ die Programmiererin Doppelte Verwendung von Variablennamen Syntaxfehler -> Compiler (http://www.delphibasics.co.uk/index.html) Typenkompatibilität Sonntag, 10. Juni 2018 Departement Informatik
Departement Informatik Beispiel Sonntag, 10. Juni 2018 Departement Informatik
Departement Informatik DEBUGGER http://www.pup.ethz.ch/docs/Debugger.pdf Sonntag, 10. Juni 2018 Departement Informatik