TOPIC C: Boolean, real, conversion

Contents :

BOOLEAN, TRUE, FALSE, REAL, /, SQRT, VAL, RdBool, WrBool, RdReal, WrReal, WrFixReal.

Exercises :


S1: Interpoleren

Start met deze code. Een z-array wordt gedefinieerd en half gevuld. Er wordt 1 kubus getekend.
  1. Maak een x-array die even groot is als z en vul het met de veelvouden van 15 waarbij je 100 optelt.
  2. Bij de array z mankeren de waarden voor de even indexen! Bereken deze door interpolatie: neem het gemiddelde van de 2 aanliggende waarden.
  3. Teken 25 kubussen. Gebruik de elementen van de x-array als x-coordinaat en die van de z-array als z. Gebruik Y0 als y-coordinaat. Neem als grootte 8.
  4. Verbind de opeenvolgende punten met een (dikke) lijn.
  5. Verbind met een (dikke) lijn de opeenvolgende punten met de gegeven kubus die op (X0, Y0, Z0) staat.


T1

 MODULE T1;
<* NOOPTIMIZE + *>
  FROM IO IMPORT WrStr, WrLn, WrInt, WrChar, WrCard, WrReal;

  CONST MAX = 6;
  VAR
    i, j, x: CARDINAL;
BEGIN
  WrLn;

  i := MAX;
  REPEAT

    FOR j := (i * 2) TO 1 BY -2 DO
      x := 1; (*** hoeveel malen wordt dit uitgevoerd?? ***)
    END;

    i := i - 2;
  UNTIL (i = 2);
END T1.



S2: Toren bouwen.

Start met deze begincode en JJ3D (de files van de zip-file moeten in dezelfde map als je code staan). Zie ook de documentatie over JJ3D.

  • We wensen een toren van minimaal 5m te bouwen door het opstapelen van kubussen. Neem 1 meter = 100 pixels. We hebben hiervoor de constante HOOGTE gemaakt.
  • De onderste kubus heeft een ribbe van 2m, de volgende kubussen zijn telkens 2/3 kleiner.
  • opgelet: als je 1m als CARDINAL of INTEGER schrijft, in centimeters bvb, dan geeft  2/3*... of ...*(2/3)  problemen, immers wordt 2/3 = 0.666 afgerond tot 0. Beter doe je daarom ...*2/3. Ambetante Modula Toch..
  • Stapel de kubussen opeen tot je toren net hoger is dan 5m.
  • tip: bereken telkens opnieuw de 'grond' voor de volgende kubus en de nieuwe grootte.
  • Teken de kubussen mbv de Cube procedure.
  • Hoeveel kubussen heb je nodig? Print de waarde.
  • Extra vraag: wat moet je veranderen als de toren net niet hoger mag zijn dag 5 meter.

  •  

    S3: Van cirkel via spiraal tot trap

        In de gegeven code zie je hoe graden in radialen wordt omgezet.

    1. Vul 2 arrays met de punten van een cirkel (x en y-coordinaat respectievelijk). De x-coordinaat is x0 + r * cos(t), de y-coordinaat is y0 + r * sin(t). De hoek tussen 2 punten is een parameter. Teken alle punten met z-coordinaat 0.

    2. Verbind de punten.
    3. Maak een derde array met de z-coordinaten. Vul die met de veelvouden van een bepaalde parameter. Gebruik z dan om de punten in de z-dimensie te tekenen.
    4. Verbind de punten met de centrale as (gedefinieerd door x0, y0).
    5. Maak er een trap van.
    6. Teken de trap trede per trede: voeg een Delay toe na het tekenen van elke trede. Vergeet ook niet DrawAllFigures() op te roepen.


    S4: Verbonden

    Start met deze begincode en JJ3D.
      x[1] := 201;   y[1] := 60;   z[1] := 100;
      x[2] := 401;   y[2] := 60;   z[2] := 100;
      x[3] := 542;   y[3] := 201;  z[3] := 100;
      x[4] := 542;   y[4] := 401;  z[4] := 100;
      x[5] := 401;   y[5] := 542;  z[5] := 100;
      x[6] := 201;   y[6] := 542;  z[6] := 100;
      x[7] := 60;    y[7] := 401;  z[7] := 100;
      x[8] := 60;    y[8] := 201;  z[8] := 100;
     


    S5: Interpoleren II

    De volgende 3 arrays zijn onvolledig. Start met 3D-code (vind je hier bvb: ) en zet de volgende code NA  BEGIN:
    1. De waarden voor de even index's mankeren! Bereken deze door interpolatie: neem het gemiddelde van de 2 aanliggende waarden.
    2. Maak een y-array met de veelvouden van de constante DY die je definieert met waarde 15.
    3. Gebruik de 3 arrays om 3 rijen van kubusjes te tekenen. De 3 arrays geven de z-coordinaat, de y-coordinaat is gegeven door zonet de gedefinieerde array. Definieer 3 constantes X1, X2 en X3 voor de x-coordinaat van de rijen. Geef ze waarden 100, 200, 300.
    4. Verbind (met een rechte) elk punt van rij 1 met 3 punten van rij 2: met de vorige, dezelfde en met het volgende punt. Doe hetzelfde voor rij 3 en rij 1.



    H1: Interest.