Solutions TOPIC A: Basics
Contents :
Integer, + -
* DIV MOD, IF, FOR, WHILE, RdInt, WrInt.
Exercises :
D
Exercise
MODULE Demo2;
<* NOOPTIMIZE + *> (* voor de Debugger *)
<* WOFF + *> (* geen warnings *)
FROM RealMath IMPORT power,
arctan, pi, cos, sin, sqrt;
FROM JJ3D IMPORT StartMy3DWorld, DrawEverything, ClearScreen,
Delay, WaitUntilQPressed, WrStr, WrCard,
WrInt, WrReal, WrBool, WrLn;
FROM JJ3D IMPORT Plot, Line, ThickLine, PlotText, Triangle,
RectangleXY, RectangleYZ, RectangleXZ, Polygon, Cube, Block, Cilinder,
Arrow3D;
FROM JJ3D IMPORT RgbColor,
Lighter,
Darker, RED,
GREEN, BLUE, CYAN, MAGENTA, GRAY, BROWN;
FROM JJ3D IMPORT BLACK, BRIGHTWHITE, WHITE, LIGHTRED, LIGHTGREEN,
LIGHTBLUE, LIGHTCYAN, LIGHTMAGENTA, LIGHTYELLOW;
VAR
c : CHAR; (* variabele c zal je keuze bevatten *)
colour : INTEGER; (* de kleur is een natuurlijk getal die de 3
kleurcomponenten beschrijft met een waarde tussen 0 en 255 *)
BEGIN
StartMy3DWorld("Mijn 3D-wereld") ;
(* Vraag de gebruiker voor een kleur *)
WrStr("Geef kleur r, g of b (Rood, Groen of Blauw) : ");
c := RdChar();
IF c = 'r' THEN (* we bepalen de kleur *)
colour := RgbColor(255, 0, 0);
ELSIF c = 'g' THEN
colour := RgbColor(0, 255, 0);
ELSIF c = 'b' THEN
colour := RgbColor(0, 0, 255);
ELSE
WrStr("Toets '");WrChar(c);
WrStr("' is een ongeldige keuze (niet r,
g of b)"); WrLn();
WrStr("We tekenen met de kleur wit ");
WrLn();
colour := RgbColor(255, 255, 255);
END; (* IF *)
Arrow3D(0, 0, 0, 200, 0, 200, colour, 10, 30);
WrLn();
WrStr("Druk 'q' om te stoppen.");
DrawEverything();
WaitUntilQPressed();
END Demo2.
D3
Exercise
MODULE Demo3;
<* NOOPTIMIZE + *> (* voor de Debugger *)
<* WOFF + *> (* geen warnings *)
FROM RealMath IMPORT
power,
arctan, pi, cos, sin, sqrt;
FROM JJ3D IMPORT StartMy3DWorld, DrawEverything, ClearScreen,
Delay, WaitUntilQPressed, WrStr, WrCard,
WrInt, WrReal, WrBool, WrLn;
FROM JJ3D IMPORT Plot, Line, ThickLine, PlotText, Triangle,
RectangleXY, RectangleYZ, RectangleXZ, Polygon, Cube, Block, Cilinder,
Arrow3D;
FROM JJ3D IMPORT RgbColor,
Lighter,
Darker, RED,
GREEN, BLUE, CYAN, MAGENTA, GRAY, BROWN;
FROM JJ3D IMPORT BLACK, BRIGHTWHITE, WHITE, LIGHTRED, LIGHTGREEN,
LIGHTBLUE, LIGHTCYAN, LIGHTMAGENTA, LIGHTYELLOW;
VAR
c : CHAR; (* variabele c zal je keuze bevatten *)
colour : INTEGER; (* de kleur is een natuurlijk getal die de 3
kleurcomponenten beschrijft met een waarde tussen 0 en 255 *)
OK: BOOLEAN;
BEGIN
StartMy3DWorld("Mijn 3D-wereld") ;
REPEAT
(* Vraag de gebruiker voor een kleur *)
WrStr("Geef kleur r, g of b (Rood, Groen of Blauw) :
");
c := RdChar();
IF c = 'r' THEN (* we bepalen de kleur *)
colour := RgbColor(255, 0, 0);
OK := TRUE;
ELSIF c = 'g' THEN
colour := RgbColor(0, 255, 0);
OK := TRUE;
ELSIF c = 'b' THEN
colour := RgbColor(0, 0, 255);
OK := TRUE;
ELSE
WrStr("Toets '");WrChar(c);
WrStr("' is een ongeldige keuze (niet r,
g of b). Probeer opnieuw."); WrLn();
OK := FALSE;
END; (* IF *)
UNTIL OK = TRUE;
Arrow3D(0, 0, 0, 200, 0, 200, colour, 10, 30);
WrLn();
WrStr("Druk 'q' om te stoppen.");
DrawEverything();
WaitUntilQPressed();
END Demo3.
S1
Exercise
S2
Exercise
S3
Exercise
S6
Exercise
MODULE S6;
<* NOOPTIMIZE + *> (* voor de Debugger *)
<* WOFF + *> (* geen warnings *)
FROM RealMath IMPORT power, arctan, pi, cos, sin, sqrt;
FROM JJ3D IMPORT StartMy3DWorld, DrawEverything, ClearScreen,
WaitUntilQPressed, Delay, ShowGrid, ShowAxes,
SetGroundColor;
FROM JJ3D IMPORT WrStr, WrCard, WrInt, WrReal, WrBool, WrLn, RdInt,
RdCard;
FROM JJ3D IMPORT Plot, Line, ThickLine, PlotText, Triangle,
RectangleXY, RectangleYZ, RectangleXZ, Polygon, Cube, Block, Cilinder,
Arrow3D;
FROM JJ3D IMPORT RgbColor, Lighter, Darker, RED, GREEN, BLUE, CYAN,
MAGENTA, GRAY, BROWN;
FROM JJ3D IMPORT BLACK, BRIGHTWHITE, WHITE, LIGHTRED, LIGHTGREEN,
LIGHTBLUE, LIGHTCYAN, LIGHTMAGENTA, LIGHTYELLOW;
VAR
BEGIN
StartMy3DWorld("Mijn 3D-wereld") ;
ShowGrid(TRUE);
ShowAxes(TRUE);
SetGroundColor(LIGHTBLUE);
Block(-500, 0, 0, 500, 500, 100, BROWN, TRUE);
Block(500, 0, 0, 500, 500, 100, BROWN,
TRUE);
DrawEverything();
WaitUntilQPressed();
END S6.
H1
Exercise
H2
Exercise
T1
Exercise
Hint: bekijk je programma running stap-voor-stap met de XDS
debugger!!! Meer info over de debugger
- voeg <* NOOPTIMIZE + *> toe aan de 2e
lijn van je code (na MODULE) zodat je code niet
geoptimaliseerd wordt (anders zie je niet elke stap in de debugger)
- klik op de RUN DEBUGGER .
- zet de cursor op de eerste groene lijn van je code (= na BEGIN)
- druk op F4, je programma
start en gaat tot aan de cursor
- druk vanaf dan steeds op ctrl+F7
(control toets ingedrukt houden en dan F7) om 1 lijn uit te voeren (tik
een
nummer in als
gevraagd!!)
- je kan de waarden van de variabelen zien in de 'globals' window
Solution:
3
33
18