Example 1 ( level 2 )

{Binary search in an ordered table}

LET
    Arr : ARRAY ( 10 ) ;
    Bi , Bs , M : INTEGERS ;
    Found : BOOLEAN ;
    V : INTEGER ;
BEGIN
    INIT_VECT ( Arr , [ 34 , 56 , 87 , 123 , 134 , 187 , 230 , 422 , 760 , 1034 ] ) ;
    V := 123 ;
    Bi := 1 ;
    Bs := 10 ;
    Found := FALSE ;
    WHILE ( Bi <= Bs ) AND NOT Found
        M := ( Bi + Bs ) / 2 ;
        IF ELEMENT ( Arr [ M ] ) = V
            Found := TRUE
        ELSE
            IF V < ELEMENT ( Arr [ M ] )
                Bs := M - 1
            ELSE
                Bi := M + 1
            ENDIF
        ENDIF
    ENDWHILE ;
    WRITE ( Found )
END