الانتقال من Z إلى C

 

تعريف                            

تعبيرات

تخصيص                                                       

تكرار المشروط                           

تكرار المعدود                            

الاشتراط                          

قراءة                     

كتابة                                

إجراء                           

دالة                                      

دوال قياسية                  

            خوارزمية

 

 

             تطبيق الآلاة مجردة في سي (C)

 

 

تعريف المتغيرات

 

يتم إعلان المتغيرات في C بواسطة

      Type <Li>;

حيث <Li> يدل على قائمة المعرفات.  

 

     الكائنات بسيطة

   

مكافئات الكائنات Z إلى C:

 

صحيح يترجم إلى INT.

محرف يترجم إلى CHAR.

 

إلى النوع "سلسلة" نربط النوع St الذي تم إنشاؤه والذي نحدده بواسطة
       typedef  char St[256]

 

فيC  النوع المنطقي غير موجود.
لمواصلة العمل دائما مع هذا النوع ، فقط أضف في بداية البرنامج    

       typdef int Booleen

وتعيين القيم صواب و خطأ على النحو التالي :

       #define true 1

       #define false 0

 

بنى

 

لتحديد بنية في C ، يجب عليك اختيار التطبيق.
التطبيق هو اختيار تمثيل الذاكرة (عادة ثابتة أو ديناميكية) وترجمة عمليات آلة مجردة في هذا التمثيل.

يكفي استبدال البنية س بواسطة المؤشر وإضافة على مستوى رأس البرنامج ج التطبيق المطلوب حيث سيتم تحديد نوع المؤشر.

 

التعبيرات

 

 

يتم تضمين قواعد تعبيرات Z في قواعد اللغة C.

 

 

التخصيص

 

نفس بناء الجملة مع ' = 'بدلا من':='. 

 

التكرار المشروط

 

  -----------Z----------       

  مادام  شرط :               

        تعليمات

  نهاية_مادام

 

يترجم إلى 

  -------------C-----------

  WHILE ( Cond )

    {

      Statements

    }

 

التكرار المعدود

 

  --------------Z-----------------

    لكل V := ع1، ع2 [،ع3]
 

       تعليمات

  نهاية_لكل

 

يترجم إلى 

  ---------------C--------------- 

  for (V=Exp1; V<=Exp2; V=V+Exp3)

    {

       Statements

    }

 

الاشتراط

 

   -----------Z------------    

  إذا شرط :                                                  

       تعليمات                                             

  [وإلا                                                     

       تعليمات  ]            

  نهاية_إذا

 

يترجم إلى 

----------------C--------------

IF ( Cond )

 {

   Statements

 }

[ELSE

 { Statements } ]

 

 

القراءة

 

  --------Z--------           

  اقرأ(م1، م2،...)    

 

 

يترجم إلى 

  -----------C---------------

  scanf("...", &V1, &V2, ...)

 

كتابة

 

  --------Z----------         

اكتب(ع1،ع2،...) 

 

يترجم إلى

-------------C-------------

  printf(E1, E2, ...)

 

 

إجراء

 

  ------------Z-------------

 إجراء إسم (و1، و2...)

  ليكن

تعريف  الكائنات المحلية و الوسطاء  

     

  بداية

       تعليمات

  نهاية

 

يترجم إلى

 

  -----------------C---------------- 

  void Name ( typ1 P1 , typ2 P2, ...)

    {

         Definition of local objects

         Statements

    }

 

دالة

 

  ------------------Z------------------

    دالة إسم (و1، و2...) : نوع 

ليكن

        تعريف  الكائنات المحلية و الوسطاء

  بداية

        تعليمات

  نهاية

 

يترجم إلى

 

  ------------------C------------------ 

  type Name ( typ1 P1, typ2 P2, ...)

    {

         Definition of local objects

         Statements

    }

 

 

دوال قياسية

 

باقي_قسمة(أ، ب) 

 

     int Mod( int a, int b)
        { return ( a % b ); }

 

أدنى(أ، ب) 

 

     int Min (int a, int b)
       {
          if (a < b) return(a);
         else return(b);
       }

 

 

أقصى(أ، ب) 

      int Max (int a, int b)
        {
           if (a > b) return(a);
          else return(b);
        } 

 

  EXP ( a, b ) 

 

      int Exp (int a, int b)
        {
           int i; int Ex ;
           Ex = 1;
           for (i= 1; i<=b; i++)
              Ex = Ex * a ;
           return (Ex);
        } 

 

عدد_عشوائي ( ن ) 

 

      int Aleanombre( int N )
        { return ( rand() % N ); }


  سلسلة_عشوائية ( ن ) .

 

       char *Aleachaine ( int N )
         {
           int k;
           char * Chaine = malloc(N);

           char Chr1[26] = "abcdefghijklmnopqrstuvwxyz";
           char Chr2[26] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

           for (k=0;k<N; k++)
              switch ( rand() % 2 ){
                  case 0 : *(Chaine+k) = Chr1[rand() % 26] ; break ;
                  case 1 : *(Chaine+k) = Chr2[rand() % 26] ; break ;
              }
           Chaine[k] = '\0' ;

           return (Chaine);
         }

 

  طول(جملة)

 

     int Longchaine ( string255 Ch )
        {
          return strlen(Ch);
        }

 

محرف_سلسلة ( جملة , ر ) 

 

     char *Caract ( string255 Ch , int I )
       {
         char *s = malloc(2);
         s[0] = Ch[I-1];
         s[1] = '\0';
        return s;
       }

 

خوارزمية

 

  --------------------Z--------------------

  ليكن

 

      تعريف  الكائنات المحلية و الشاملة

      الإعلان عن الوحدات

 

   بداية

 

      تعليمات

 

    نهاية

 

   

وحدة 1
    ....
    وحدة ن

 

يترجم إلى 

   -------------------C---------------------- 

   Local and static objects

 

   Definition of functions

   Function 1

   Function 2

   ...

   Function  n

 

   main()

   {

         Statements

   }