الطباعة الأنيقة
الاقتراح الأخير فيما يخصّ استخدام الفراغات البيضاء له علاقة بالعرف
المتبع لنسق تشكيل لغة باسكال، و الذي يعرف بالطباعة الأنيقة
pretty-printing. القاعدة بسيطة: كل مرة تحتاج فيها لكتابة تعليمة مركّبة،
قم بوضعها بعد هامش فراغين الى اليمين من باقي التعليمة الحالية. التعليمة
المركبة داخل تعليمة أخرى مركبة يتم تهميشها بأربع مسافات، وهكذا:

if ... then
statement;

if ... then
begin
statement1;
statement2;
end;

if ... then
begin
if ... then
statement1;
statement2;
end;

الصياغة السابقة تعتمد نسق الطباعة الأنيقة، لكن المبرمجين لديهم تفسيرات
مختلفة لهذه القاعدة العامة. بعض المبرمجين مثلا يقومون بتهميش تعليمات
begin و end للمستوى التالي مع نفس التعليمات الداخلية، بعضهم يهمش begin و
end ثم يقومون بتهميش التعليمات الداخلية لمستوى اضافي، مبرمجون آخرون
يضعون begin في نفس سطر شرط if . هذا في معظمه أمر له علاقة بالذوق الشخصي.


نفس نمط التهميش يتّّبع عادة عند سرد المتغيرات أو أنواع الببيانات، و لمواصلة تعليمة من سطر سابق:

type
Letters = set of Char;
var
Name: string;
begin
{ long comment and long statement, going on in the
following line and indented two spaces }
MessageDlg ('This is a message',
mtInformation, [mbOk], 0);

بالطّبع، أي من هذه القواعد هي مجرّد إقتراح لجعل البرنامج مقروءا بشكل
أفضل من قبل المبرمجين الآخرين، و هي تهمل بالكامل من جانب المجمّع. لقد
حاولت استخدام هذه القاعدة بصورة متّسقة في كل اجزاء الأمثلة والبرامج في
هذا الكتاب. كما يلاحظ أن البرامج، الأدلة، و أمثلة المساعدة التي تأتي مع
دلفي كلها تتّبع نفس النسق في الصياغة.

تعليم الألفاظ
لتسهيل قراءة و كتابة توليف code باسكال، يملك محرر دلفي خاصية تسمّى تعليم
الألفاظ syntax highlighting . فالكلمات التي تقوم بطباعتها في المحرر،
يتم اظهارها باستخدام ألوان مختلفة بحسب معناها في باسكال. عرضا، الكلمات
المفتاحية keywords تكون داكنة، النصوص و التعليقات تظهر ملونة (و غالبا
مائلة)، وهكذا.

الكلمات المحجوزة، و التعليقات، و النصوص تقريبا هي العناصر الثلاثة الأكثر
استفادة من هذه الخاصية. فمن أول نظرة يمكنك ملاحظة كلمة مفتاحية غير
صحيحة، أو نصّ غير مقفل بصورة سليمة، أو طول الملاحظة المتعددة الأسطر.

بإمكانك بسهولة تعديل مواصفات تعليم الألفاظ باستخدام صفحة ألوان المحرر
Editor page في لوحة خيارات البيئة Environment Options (انظر الشكل 2.1).
إذا كنت تعمل بمفردك، يمكنك اختيار الألوان التي تفضل. أما إذا كنت تعمل
بالتعاون مع مبرمجين آخرين، فالأفضل أن توافقوا جميعا على نسق ألوان نمطي.
لقد وجدت ان العمل على حاسوب به تلوين الفاظ مختلف عمّا تعوّدت عليه أمر
صعب بالفعل.

الشكل 2.1: لوحة الحوار المستخدمة لتحديد لون تعليم الألفاظ.



استخدام قوالب اللغة
قدّمت دلفي 3 خاصيّة جديدة ذات علاقة بكتابة شفرة البرامج. عند كتابة
تعليمات لغة باسكال تجد نفسك عادة ما تعيد كتابة نفس التتابع من الكلمات
الرئيسية، لذلك قدمت بورلاند خاصية جديدة تسمّى قوالب اللغة Code Templates
. قوالب اللغة هي ببساطة قطعة من توليف مرتبطة بمفاتيح مختصرة. حيث تقوم
بكتابة النص المختصر ثم تتبعها بالضغط على Ctrl+j، فيظهر التوليف ذو
العلاقة مكتوبا بالكامل. مثلا، اذا قمت بكتابة arrayd ، ثم ضغطت على Ctrl+j
، فان محرر دلفي سوف يوسع من النص المختصر الى التالي:

array [0..] of ;

و حيث ان قوالب التوليف المحددة سلفا عادة ما تأتي بنسخ مختلفة لنفس
الاختصار، فان النص المختصر ينتهي عموما بحرف يشير الى النسخة التي قد
تهمك. عموما يمكنك كتابة فقط جزء من النص المختصر. مثال ذلك، اذا كتبت ar
ثم ضغطت على Ctrl+j ، يظهر المحرر قائمة تظهر الخيارت المتوفرة مع وصف موجز
لكل اختصار، مثلما هو واضح في الشكل 2.2 .

الشكل 2.2 اختيار قالب التوليف

لغة باسكال  708c98ea9d

تستطيع صياغة قوالب التوليف إما بتعديل الموجود منها، أو ببناء قوالب جديدة
خاصة بك. واذا قمت بهذا، تذّكر ان نص قالب التوليف عادة ما يحوي حرف '|'
ليشير الى الموقع الذي سيقفز له المؤشر بعد انتهاء العملية، حيث تتابع
الكتابة لإكمال نص القالب.

تعليمات اللغة
حالما تقوم بتحديد بعض المعرفات، يمكنك استخدامها في تعليمات او في معادلات
هي جزء من بعض التعليمات, تقدم باسكال مجموعة من التعليمات والتعبيرات.
دعنا أولا نلقي نظرة على الكلمات المفتاحية، و التعبيرات ، و العاملات.

الكلمات المفتاحية
الكلمات المفتاحية هي كل المعرّفات المحجوزة من قبل اوبجكت باسكال، و التي
لها دور في اللغة. دليل دلفي (Help) يميّز بين الكلمات المحجوزة والتوجيهات
كالتالي: الكلمات المحجوزة لا يمكن استخدامها كمعرّفات، بينما التوجيهات
لا يجب استخدامها لنفس الغرض، حتى لو قبلها المجمّع. عند الممارسة، عليك
تجنّب استخدام أية كلمة محجوزة كمعرّف.

التعبيرات والعامِلات
لا توجد قاعدة عامة لبناء التعبيرات expressions ، حيث تعتمد اساسا على
العامِلات التي تستخدم، و التي لباسكال العديد منها. هناك المنطقي logical
والحسابي arithmetic والبولي Boolean والعلائقي relational ، و عاملات
الفئة set، بالاضافة الى عدد آخر. يمكن استعمال التعبيرات لتحديد القيمة
التي ستخصص للمتغير، او لحساب المحدد parameter التابع لوظيفة او اجراء، او
لاختبار شرط. و قد تتضمن التعبيرات استدعاء وظائف ايضا. في كل مرة تقوم
فيها باجراء عملية على قيمة في معرّف، و ليس استعمال المعرف في حد ذاته،
فان هذا يعدّ تعبيرا.

تعد التعبيرات امرا شائعا في لغات البرمجة. التعبير هو أي توليفة من
الثوابت constants ، المتغيرات، القيم الحرفية literal ، عاملات، و نتائج
الوظائف. التعبيرات يمكن ايضا تمريرها الى المحددات القيمية value
parameters في الاجراءات و الوظائف، و لكن ليس دائما الى المحددات المرجعية
reference parameters (التي تحتاج الى قيمة يمكن تخصيصها).

العامِلات و أسبقيتها
اذا سبق لك و أن كتبت برنامجا في حياتك، فانك تعلم بالفعل ماذا تعني كلمة
تعبير expression. هنا سوف ألقي الضوء على عناصر محددة في عاملات باسكال.
يمكنك رؤية قائمة بعاملات اللغة، مجمعة حسب الأسبقية، في الجدول 2.1.

على العكس من معظم اللغات الأخرى، فإن عاملات and و or لهما الأسبقية على
العاملات العلائقية. لذاك اذا كتبت a < b and c < d، فان المجمّع
سيحاول تنفيذ عملية and أولا، منتجا بذلك خطأ تجميع. لهذا السبب عليك وضع
كل من تعبير < بين قوسين: (a < b) and (c < d).

بعض العاملات الشائعة لديها معان مختلفة مع انواع بيانات مختلفة. مثال ذلك،
العامل + يمكن استخدامه لجمع رقمين، لوصل جملتين، صنع اتحاد بين فئتين، او
حتى جمع رصيف offset مع مؤشر Pchar . الا انك لاتستطيع جمع حرفين، كما هو
ممكن في لغة c.

عامل آخر غريب وهو div . ففي باسكال، يمكنك تقسيم أي رقمين (حقيقي أو صحيح)
بواسطة العامل / ، وسوف تحصل بصورة ثابتة على رقم حقيقي كناتج. اما اذا
احتجت الى تقسيم رقمين صحيحين للحصول على ناتج صحيح، استخدم العامل div
كبديل.
عامِلات الفئة
عاملات الفئة تتضمن اتحاد union (+)، طرح difference (-)، تقاطع
intersection (*)، اختبار عضوية membership (in)، بالإضافة الى مجموعة من
العاملات العلائقية. لاضافة عنصر لمجموعة، يمكنك جعل اتحاد فئةة مع آخرى
تملك فقط العنصر الذي تحتاجه. فيما يلي مثال بدلفي له علاقة بنمط الخطّ
font styles:

Style := Style + [fsBold];
Style := Style + [fsBold, fsItalic] - [fsUnderline];

كبديل يمكنك استخدام الاجرائين الاعتيادين Include و Exclude، وهما أكثر
فاعلية (لكنهما لايمكن استعمالهما مع سمات مكوّن التي تكون من نوع set،
لأنها تحتاج الى محدد لقيمة l-):

Include (Style, fsBold);

وهذا
كتاب كااامل لدورة تعليم لغة باسكال(Turbo Pascal) بالعربية


[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]


ودمتم سالمين

لغة باسكال  833321