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
  1. 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)
  2. klik op de RUN DEBUGGER   .
  3. zet de cursor op de eerste groene lijn van je code (= na BEGIN)
  4. druk op F4, je programma start en gaat tot aan de cursor
  5. 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!!)
  6. je kan de waarden van de variabelen zien in de 'globals' window


Solution:
3
33
18