مثال على الترجمة

 

خوارزمية  Z

{بحث ثنائي في جدول}
ليكن
    ج : جدول ( 10 ) ؛
    ب1 ، ب2 ، ش : صحاح ؛
    موجود : منطيقي ؛
    ك : صحيح ؛
بداية
    ملء_جدول ( ج ، [ 34 ، 56 ، 67 ، 77 ، 88 ، 99 ، 123 ، 222 ، 760 ، 1000 ] ) ؛
    ك := 123 ؛
    ب1 := 1 ؛
    ب2 := 10 ؛
    موجود := خطأ ؛
    مادام ( ب1 <= ب2 ) و لا موجود
        ش := ( ب1 + ب2 ) / 2 ؛
        إذا عنصر ( ج [ ش ] ) = ك
            موجود := صواب
        وإلا
            إذا ك < عنصر ( ج [ ش ] )
                ب2 := ش - 1
            وإلا
                ب1 := ش + 1
            نهاية_إذا
        نهاية_إذا
    نهاية_مادام ؛
    اكتب ( موجود )
نهاية
 

برنامج C مقابل

 

/**---------------------------------------------------------**/
/**           T r a n s l a t i o n Z to C (Standard)     **/
/**                      By Pr. D.E ZEGOUR                  **/
/**                         E S I - Algier                        **/
/**                       Copywrite 2014                      **/
/**---------------------------------------------------------**/

#include <stdio.h>
#include <stdlib.h>

typedef int bool ;

#define True 1
#define False 0

/** -Implementation- **\: ARRAY OF INTEGERS**/

/** Arrays **/

typedef int Typeelem_V10i ;
typedef Typeelem_V10i * Typevect_V10i ;

Typeelem_V10i Element_V10i ( Typevect_V10i V , int I1 )
{
return *(V + (I1-1) ) ;
}

void Ass_element_V10i ( Typevect_V10i V , int I1 , Typeelem_V10i Val )
{
*(V + (I1-1) ) = Val ;
}

/** For temporary variables **/
typedef Typeelem_V10i Typetab_V10i[10];


/** Variables of main program **/
Typevect_V10i E;
int B1;
int B2;
int M;
bool Xzezh;
int V;
Typetab_V10i T_E;

/** High level operations **/


/** Initializing an array **/
void Init_vect_V10i ( Typevect_V10i T , Typetab_V10i Tab , int N)
{
int K=-1;
int I1 ;
for (I1=0; I1< 10; ++I1)
{
K++;
*(T + I1 ) = Tab [K] ;
}
}



int main(int argc, char *argv[])
{
E = malloc(10 * sizeof(int));
T_E [ 0 ] = 34 ;
T_E [ 1 ] = 56 ;
T_E [ 2 ] = 67 ;
T_E [ 3 ] = 77 ;
T_E [ 4 ] = 88 ;
T_E [ 5 ] = 99 ;
T_E [ 6 ] = 123 ;
T_E [ 7 ] = 222 ;
T_E [ 8 ] = 760 ;
T_E [ 9 ] = 1000 ;
Init_vect_V10i ( E , T_E , 10 ) ;
V = 123 ;
B1 = 1 ;
B2 = 10 ;
Xzezh = False ;
while( ( B1 <= B2 ) && ! Xzezh) {
M = ( B1 + B2 ) / 2 ;
if( Element_V10i ( E , M ) == V) {
Xzezh = True; }
else
{
if( V < Element_V10i ( E , M )) {
B2 = M - 1; }
else
{
B1 = M + 1;
}
}
} ;
printf ( " %d", Xzezh );

system("PAUSE");
return 0;
}