Topic B: S4

Aushim
Master in de forumwetenschappen
Master in de forumwetenschappen
Berichten: 2628
Lid geworden op: 23 nov 2007, 23:02
Locatie: Haren
Contacteer:

Topic B: S4

Berichtdoor Aushim » 11 dec 2007, 21:28

Hieronder vinden jullie een van de oplossingen van S4: Plot Functie (met uitleg tussen haakjes).

Code: Selecteer alles

MODULE S4;
<* NOOPTIMIZE + *>  (* For the Debugger *)
  FROM IO IMPORT WrStr, WrLn, RdKey, WrCard, RdLn, KeyPressed;
  FROM Lib IMPORT Delay; (* Delay: let the program wait a little time *)
   (* de graphics library vind je onder C:/Bin/Xds/Def/Ts/Graph.def *)
  FROM Graph IMPORT Init, Rectangle, Circle, Disc, Plot, Line;
  FROM Graph IMPORT _clrBLACK, _clrBLUE, _clrGREEN, _clrCYAN, _clrRED, _clrMAGENTA;
  FROM Graph IMPORT _clrBROWN, _clrWHITE, _clrGRAY, _clrLIGHTBLUE, _clrLIGHTGREEN;
  FROM Graph IMPORT _clrLIGHTCYAN, _clrLIGHTRED, _clrLIGHTMAGENTA, _clrLIGHTYELLOW, _clrBRIGHTWHITE;
                 (* deze 16 kleuren zijn constantes gaande van 0 tot 15 *)
  CONST ARRAY_SIZE = 20;
        SIZE = 7;
        DELAY_TIME = 500;
  VAR
    i: CARDINAL;
    f, x, y: INTEGER;
    y_values: ARRAY[1..ARRAY_SIZE] OF INTEGER; (* definition of the array *)
    c:CHAR;
BEGIN

  (* Initialise graphics *)
  IF NOT Init(1, 1 , 500, 500) THEN  (* creates a drawing window of 500 by 500 *)
    WrStr("Sorry, graphics doesn't work");WrLn;
    RETURN;
  END;

  f := 1;
  (* Fill Array *)
  FOR i:= 1 TO ARRAY_SIZE DO
    f :=  (f + (f)*4/15 + 1) MOD 40;
(*    f := f + (20-f) * ABS(f) / 7;*)  (* another function *)
    y_values[i] := f;
  END;

  (* Het tekenen van cirkels die de vorm van de curve volgen, tot dat je op een toets drukt *)

  i:=1;
  REPEAT
  Line(10,450,480,450,_clrGRAY);  (*x-as*)
  Line(20,460,20,10,_clrGRAY);    (*y-as*)
  Disc(20*i+20, 450-10*y_values[i], 10, _clrMAGENTA);  (*cirkel teken*)
  Delay(DELAY_TIME);
  Disc(20*i+20, 450-10*y_values[i], 10, _clrBLACK);    (*verdwijning van de cirkel*)
  Circle(20*i+20, 450-10*y_values[i], 10, _clrGREEN);  (*lege cirkel in de plaats*)
  IF i<ARRAY_SIZE THEN i:=i+1;
    ELSE i:=1;
         Delay(2*DELAY_TIME);                           (*extra lang wachten*)
    END;
  UNTIL KeyPressed();

  (* Show graphics until user presses a key *)
  WrStr("Press any key to finish the program");
  c := RdKey();  WrLn;  WrLn;

END S4.

Terug naar “Oefeningen gemaakt in de klas”

Wie is er online

Gebruikers op dit forum: Geen geregistreerde gebruikers en 1 gast

cron