لغة زاي
(القاعدة)
العودة
إلى الملخص
)
> الخوارزمية هي مجموعة من وحدات متوازية ، أولها رئيسي والآخرون إما إجراءات أو دوال من أي نوع.
> لغة زاي تقبل وحدات عودية
> يتم الاتصال بين الوحدات عبر الوسطاء والمتغيرات الشاملة.
> الغة تسمح
- أي نوع من المعلمات : العددية، البنى، القوائم ، الملفات، الجداول، الأكوام،
الصفوف، الأشجار و حتى نوع معقد.
- التخصيص الديناميكي للجداول و البنى
- تخصيص المتغيرات الشاملة من أي نوع
> يسمح بأربعة أنواع بسيطة: صحيح-منطقي-محرف-سلسلة .
> بعض الدوال المعتادة محددة مسبقا: باقي قسمة، أكبر، أصغر،...
> اللغة هي مجموعة الخوارزميات المجردة-مكتوبة على أساس النماذج (الآلات المجردة).
> يتم تعريف آلات مجردة على البنى، الجداول من أي حجم، الأكوام، الصفوف،
أشجار البحث الثنائية، أشجار البحث المتعددة، القوائم أحادية الاتجاه، القوائم
ثنائية الاتجاه.
> يتم تعريف أيضا آلة مجردة على الملفات التي تسمح باستخدامها وبناء كل من هياكل
الملفات البسيطة والهياكل الأكثر تعقيدا.
> اللغة تسمح أنواع مركبة مثل كومة من صفوف من قائمة من ....آخر ذكر هو من النوع
البسيط أو بنية بسيطة
> اللغة مجهزة بعمليات عالية المستوى تسمح ببناء قوائم-أشجار-صفوف-إلخ. من
مجموعة من القيم (التعبيرات) أو البنى.
> اللغة
توفر اثنين من دوال مفيدة جدا السماح لتوليد عشوائيا السلاسل (سلسلة_عشوائية)
والأعداد الصحيحة (عدد_عشوائي).
ليكن
{ كائنات محلية و شاملة }
{ إعلان الوحدات }
بداية
{ تعليمات }
نهاية
وحدة 1
....
وحدة ن
يمكن أن تكون كل وحدة إما إجراء أو دالة.
إذا ع [ : ]
{ تعليمات }
[
وإلا
{ تعليمات } ]
نهاية_إذا
التكرار المشروط
مادام ع [ : ]
{ تعليمات }
نهاية_مادام
لكل V := ع1، ع2 [،ع3]
{ تعليمات }
نهاية_لكل
ع3، إذا كان موجودا، يدل على الخطوة.
م يدل على متغير،
ع يدل على عبارة و معف يدل على إسم وحدة
[] يشير إلى جزء اختياري
{ } مجموعة
التخصيص : م := ع
القراءة : اقرأ(م1، م2،...)
يمكن أن تكون المتغيرات عددية، بنى أو جداول من أي بعد.
يمكن أن تكون التعبيرات عددية، بنى أو جداول من أي بعد
الكتابة : اكتب(ع1،ع2،...)
أربعة أنواع عديدية مسموح بها : صحيح، منطيقي، محرف، سلسلة.
تعريف العدديات :
ليكن ‹ق› : نوع
‹ق› : قائمة المعرفات مفصولة بفواصل.
نوع هو نوع عديدي.
أمثلة :
ليكن
ب : منطيقي
س1، س2 : سلاسل
م : محرف
ص1، ص2، ص3 : صحاح
يتم تعريف متغيرات ذات النوع "المؤشر" لاستخدام التراكيب البيانات.
ليكن ‹ق› : مؤشر نحو نوع-م من نوع-م من ... من ننوع-ب
‹ق› : قائمة المعرفات مفصولة بفواصل.
نوع-م في { جدول، كومة، صف، قائمة، قائمة_مزدوجة، شجرة_بحث_ثنائية، شجرة_بحث_متعددة }
نوع-ب هو عددي أو بنية بسيطة.
ملاحظة:
يمكننا الاستغناء عن هذا النوع . في الواقع ، التصريحات
ليكن ق : قائمة
ليكن ق : مؤشر نحو قائمة
متكافئة
أمثلة :
ليكن
م1: مؤشر نحو قائمة أكوام
ن1، ن2 : مؤشرات نحو أشجار-البحث-الثنائي
كما هو الحال في لغات البرمجة.
أمثلة :
(أ +ب) / ج ، لا موجود، (م # 5) و لا موجود، ز(م) <> 5
تعبيرات حسابية : + , - , / , *
تعبيرات منطقية : و، أو، لا
تعبيرات على سلاسل الحروف : +
تعبيرات علائقية : <, <=, >, >=, =, <> (أو #)
ثوابت منطقية : صواب، خطأ
ثابت مؤشر : عدم
فيكتب التعليق ما بين حاضنتين { و } أو ما بين /* و */
تملأ الآلات المجردة باستخدام التعليمات المتطورة المتوفرة للإنشاء أو للملء.
إنشاء_شجرة_بحث_ثنائية، إنشاء_قائمة، إنشاء_قائمة_مزدوجة، إنشاء_شجرة_بحث_متعددة، إنشاء_كومة، إنشاء_صف، ملء_جدول ، ملء_بنية
بناء الجمل :
إنشاء_قائمة ( ق ،[ع1،ع2،...] )
إنشاء_قائمة_مزدوجة ( قم ،[ع1،ع2،...] )
إنشاء_شجرة_بحث_ثنائية ( شث ،[ع1،ع2،...] )
إنشاء_شجرة_بحث_متعددة ( شم ،[ع1،ع2،...] )
إنشاء_صف ( ص ،[ع1،ع2،...] )
إنشاء_كومة ( ك ،[ع1،ع2،...] )
ملء_بنية (ب ،[ع1،ع2،...])
ملء_جدول ( ج ،[ع1،ع2،...] )
ع1،ع2،... تعبيرات من النوع البسيط أو بنى.
مثال:
إنشاء_قائمة (س، [12، 23، 67، ذ، ذ+ر] )
إنشاء القائمة ق بالقيم الموجودة بين قوسين مربعين بالترتيب المذكور.
إذا كان ق1 و ق2 قائمتين من الأعداد الصحيحة و قق قائمة من الأقوام، فيمكننا الكتبة:
إنشاء_قائمة ( ق1
، [ 2 ، 4 ، 67 ، 778 ] ) ؛
إنشاء_قائمة ( ق2
، [ 12 ، 14 ، 167 ، 1778 ] ) ؛
إنشاء_قائمة ( قق
، [ ق1
، ق2
] ) ؛
باقي_قسمة(أ، ب) : ترجع ما تبقى من قسة أ على ب.
أقصى(أ، ب) : يعطي الحد الأقصى بين أ و ب.
أدنى(أ، ب) : يعطي الحد الأدنى بين أ و ب.
أس (أ، ب) : أ أس ب
سلسلة_عشوائية ( ن ) : ينتج سلسلة متكونة من ن محارف.
عدد_عشوائي ( ن ) : ينتج عددا صحيحا بين 0 و ن.
محرف_سلسلة ( جملة , ر ) :
طول(جملة)
إجراء إسم (و1، و2...)
{ كائنات محلية و شاملة و وسطاء }
بداية
{ تعليمات }
نهاية
يتم استدعاء إجراء من خلال التعليمة أنفذ متبوعة بإسم الإجراء و الوسطاء
الوسطاء غير محمية من الإجراء
يجب الإعلان عن إجراء في الوحدة الرئيسية.
دالة إسم (و1، و2...) : نوع
{ كائنات محلية و شاملة و وسطاء }
بداية
{ تعليمات }
نهاية
النوع يمكن
أن يكون أي.
يتم استخدام دالة مباشرة في تعبير.
الوسطاء غير محمية من الدالة.
يجب الإعلان عن دالة في الوحدة الرئيسية من خلال تحديد نوعها.
يجب أن توجد تخصيص في جسم الدالة من النوع الاسم: = العبارة.
ليكن
س1، س2 : قوائم؛
ع، ف : دالة(منطيقي)؛
بداية
إنشاء_قائمة(س1، [2، 5، 9، 8، 3، 6 ])؛
إنشاء_قائمة(س2، [12، 5، 19، 8، 3، 6، 2،9])؛
اكتب( ف(س1، س2) )
نهاية
دالة ع ( س، ك ) : منطيقي
ليكن
س : قائمة؛ ك : صحيح؛
بداية
إذا س = عدم :
ع := خطأ
وإلا
إذا قيمة_خلية(س) = ك :
ع := صواب
وإلا
ع := ع(تالي(س)، ك )
نهاية_إذا
نهاية_إذا
نهاية
دالة ف ( س1، س2 ) : منطيقي
ليكن
س1، س2 : قوائم؛
بداية
إذا س1 = عدم :
ف := صواب
وإلا
إذا لا ع(س2، قيمة_خلية(س1) )
ف := خطأ
وإلا
ف := ف(تالي(س1)، س2)
نهاية_إذا
نهاية_إذا
نهاية