عرض لغة Z
نظرة عامة | هيكل الخوارزمية |
إجراء | تعريف دالة |
مثال خوارزمية | الكائنات |
تعبيرات | تعليمات |
العمليات المتعلقة بالألات المجردة | تعليمات متطورة |
دوال قياسية |
> الخوارزمية هي مجموعة من وحدات متوازية ، أولها رئيسي والآخرون إما إجراءات أو دوال من أي نوع.
> لغة زاي تقبل وحدات عودية
> يتم الاتصال بين الوحدات عبر الوسطاء والمتغيرات الشاملة.
> الغة تسمح
- أي نوع من المعلمات : العددية، البنى، القوائم ، الملفات، الجداول، الأكوام،
الصفوف، الأشجار و حتى نوع معقد.
- التخصيص الديناميكي للجداول و البنى
- تخصيص المتغيرات الشاملة من أي نوع
> يسمح بأربعة أنواع بسيطة: صحيح-منطقي-محرف-سلسلة .
> بعض الدوال المعتادة محددة مسبقا: باقي قسمة، أكبر، أصغر،...
> اللغة هي مجموعة الخوارزميات المجردة-مكتوبة على أساس النماذج (الآلات المجردة).
> يتم تعريف آلات مجردة على البنى، الجداول من أي حجم، الأكوام، الصفوف،
أشجار البحث الثنائية، أشجار البحث المتعددة، القوائم أحادية الاتجاه، القوائم
ثنائية الاتجاه.
> يتم تعريف أيضا آلة مجردة على الملفات التي تسمح باستخدامها وبناء كل من هياكل
الملفات البسيطة والهياكل الأكثر تعقيدا.
> اللغة تسمح أنواع مركبة مثل كومة من صفوف من قائمة من ....آخر ذكر هو من النوع
البسيط أو بنية بسيطة
> اللغة مجهزة بعمليات عالية المستوى تسمح ببناء قوائم-أشجار-صفوف-إلخ. من
مجموعة من القيم (التعبيرات) أو البنى.
> اللغة
توفر اثنين من دوال مفيدة جدا السماح لتوليد عشوائيا السلاسل (سلسلة_عشوائية)
والأعداد الصحيحة (عدد_عشوائي).
ليكن
{ كائنات محلية و شاملة }
{ إعلان الوحدات }
بداية
{ تعليمات }
نهاية
وحدة 1
....
وحدة ن
يمكن أن تكون كل وحدة إما إجراء أو دالة.
تعريف إجراء
إجراء إسم (و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)
نهاية_إذا
نهاية_إذا
نهاية
الكائنات
يمكن أن
تكون الكائنات بسيطة : صحيح، منطيقي، محرف، سلسلة.
يمكن أن تكون الكائنات آلات مجرة : بنى، جدول، قوائم, قائمة_مزدوجة ، صفوف'، أكوام،
أشجار بحث ثنائية، أشجار بحث متعددة ، ملفات.
أمثلة :
س1 ، س2 : قوائم ؛
ا : بنية ( سلسلة ، صحيح ) ؛
ك1 : جدول ( 10 ، 60 ) من ( محرف ، صحيح ) ؛
ن : قائمة من أكوام من جدول ( 10 ) ؛
ح1 : ملف من ( سلسلة ، جدول ( 5 ) من صحاح ) مخزن كاع1 ، كاع2 ؛
النوع الافتراضي هو نوع العدد الصحيح.
بنى :
يمكن أن تكون البنية بسيطة-أي تتكون فقط من عددية أو معقدة وفي هذه الحالة يمكن أن تحتوي على عددية و/ أو جداول ذات بعد واحد من العددية.
ملفات :
تعريف الملف له 3 أجزاء :
** الجزء الأول (ملف) يحدد طبيعة عناصر الملف.
عنصر من ملف يمكن أن يكون:
-عديديا وهذا يعني من نوع بسيط (صحيح-منطقي-محرف-سلسلة )،
- جدول أحادية البعد من العددية
- بنية يمكن أن يحتوي على عددي أو جداول أحادية البعد من عددي.
** يحدد الجزء الثاني المتغيرات المستخدمة في عمليات القراءة والكتابة.
** الجزء الثالث يحدد خصائص الملف عن طريق تحديد نوع كل الخصائص. يستخدم هذا الجزء
بشكل أساسي لإنشاء تركيب ملفات المستخدم ويستخدم لتخزين جميع المعلومات المفيدة
لاستغلال الملف.
كما هو الحال في لغات البرمجة.
أمثلة :
(أ +ب) / ج ، لا موجود، (م # 5) و لا موجود، ز(م) <> 5
التعليمات
م يدل على متغير،
ع يدل على عبارة و معف يدل على إسم وحدة
[] يشير إلى جزء اختياري
{ } مجموعة
التخصيص : م := ع
: اقرأ(م1، م2،...)
يمكن أن تكون المتغيرات عددية، بنى أو جداول من أي بعد.
يمكن أن تكون التعبيرات عددية، بنى أو جداول من أي بعد
: اكتب(ع1،ع2،...)
إنفاذ الإجراءات : انفذ معف [ ( ع1،ع2،...) ]
يتم استدعاء إجراء من خلال الطلب انفذ.
إذا ع [ : ]
{ تعليمات }
[ وإلا
{ تعليمات } ]
نهاية_إذا
مادام ع [ : ]
{ تعليمات }
نهاية_مادام
لكل V := ع1، ع2 [،ع3]
{ تعليمات }
نهاية_لكل
ع3، إذا كان موجودا، يدل على الخطوة.
العمليات المتعلقة بالألات المجردة
قوائم :
احجز_خلية ، سرح ، قيمة_خلية، تالي، ضع_عنوان، ضع_قيمة_خليةقوائم مزدوجة :
احجز_خلية ، سرح ، قيمة_خلية، تالي، ضع_قيمة_خلية ، سابق، ضع_عنوان_يمين، ضع_عنوان_يسارأكوام : احجز_كومة، ضف_كومة، نزع_كومة، كومة_فارغة
صفوف :
احجز_صف، ضف_صف، نزع_صف، صف_فارغشجرة_بحث_ثنائية :
احجز_عقدة، إبن_يسار، إبن_يمين، أب، سرح_عقدة، ضع_إبن_يسار، ضع_إبن_يمين، ضع_أب، قيمة_عقدة، ضع_قيمة_عقدةملفات :
افتح_ملف، أغلق_ملف، اكتب_تسلسلا_ملف، اقرأ_مباشرة_ملف، اقرأ_تسلسلا_ملف، اكتب_مباشرة_ملف، اظف_ملف، نهاية_ملف، صدر_ملف، ضع_صدر_ملف، احجز_كتلة_ملف.شجرة_بحث_متعددة :
احجز_عقدة، إبن، سرح_عقدة، ضع_إبن، قيمة_عقدة_شم، ضع_قيمة_عقدة_شم، درجة، ضع_درجة، أب، ضع_أب.جداول :
عنصر، ضع_عنصراحجز_جدول، سرح_جدول (إذا كان الجدول ديناميكي)
بنى :
حقل، ضع_حقلاحجز_بنية، سرح_بنية (إذا كانت البنية ديناميكية)
تملأ الآلات المجردة باستخدام التعليمات المتطورة المتوفرة للإنشاء أو للملء.
إنشاء_شجرة_بحث_ثنائية، إنشاء_قائمة، إنشاء_قائمة_مزدوجة، إنشاء_شجرة_بحث_متعددة، إنشاء_كومة، إنشاء_صف، ملء_جدول ، ملء_بنية
بناء الجمل :
إنشاء_قائمة ( ق ،[ع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 و ن.
فيكتب التعليق ما بين حاضنتين { و } أو ما بين /* و */