This is one version of http://www.gtoal.com/languages/algol60/TESTS/jensen3.a60.html from your personal cache.
The page may have changed since that time. Click here for the current page.
Since this page is stored on your computer, publicly linking to this page will not work.

Google may not be affiliated with the authors of this page nor responsible for its content. This page may be protected by copyright.

begin;
    comment  THIS IS A SIMPLE EXAMPLE OF JENSEN'S DEVICE
    ;
    comment  THIS TAKES THE SUM OF EXPR FROM LO TO HI, INCLUSIVE.
            THE VARIABLE INDEX IS INCREMENTED THROUGH THE RANGE.
    ;
    real procedure SUM(LO, HI, INDEX, EXPR); 
      value LO, HI;
      integer LO, HI, INDEX;
      real EXPR;
    begin;
        real ACCUM;
        comment  INITIALIZE ACCUM TO ZERO AND ADD THE TERMS.
        ;
        ACCUM := 0.0;
        for INDEX := LO step 1 until HI do
          begin;
            ACCUM := ACCUM + EXPR;
        end ;
        SUM := ACCUM;
    end ;
    begin;
        comment  SUM OF INTEGERS, 1 TO 20.
        ;
        integer I;
        OUTREAL(1, SUM(1, 20, I, I));
        OUTSTRING(1, "\N");
    end ;
    begin;
        comment  SUM OF 10 DIE ROLLS
        ;
        integer I;
        OUTREAL(1, SUM(1, 10, I, RAND mod 6));
        OUTSTRING(1, "\N");
    end ;
    begin;
        comment  MEAN AND VARIANCE
        ;
        real array DATA[1 : 10];
        integer I;
        real MEAN, SUMD, SUMSQ;
        for I := 1 step 1 until 10 do
          READREAL(2, DATA[I]);
        SUMD := SUM(1, 10, I, DATA[I]);
        SUMSQ := SUM(1, 10, I, DATA[I] TIMES DATA[I]);
        OUTSTRING(1, "MEAN IS: ");
        MEAN := SUMD ÷ 10.0;
        OUTREAL(1, MEAN);
        OUTSTRING(1, "VARIANCE IS :");
        OUTREAL(1, SUMSQ ÷ 10.0 - MEAN TIMES MEAN);
    end ;
end ;