دليل استخدام كلمات

من كلِمَات

اذهب إلى: تصفح, البحث

محتويات

الثوابت والمتغيرات والعمليات

القيم في كلمات عددية أو نصيًّة أو قيم أعقد (مثل التواريخ والصور وغيرها). التعبيرات هي جزء من البرنامج يمكن حساب قيمة منه. أشهر أنواع التعبيرات ثلاثة: الثوابت والمتغيرات والعمليات.

الثوابت هي تعبيرات تُفهم كما هي مثل الثابت العددي 16 أو الثابت النصيّ "مرحبا بكم". الثوابت النصيّة تكون دائما بين علامتي تنصيص.

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

العمليات هي تعبيرات مكونة من أجزاء أصغر يربط بينها مُعامِل مثل المُعامل + أو ×. أمثلة على العمليات العملية الحسابية 5+6×8 أو العملية المنطقية (أ>5) وأيضا (ب<10). كما ترون يمكن تجميع العمليات بين اقواس لتحديد ترتيب الحسابات.


ملاحظات:

  1. العلامة × هي shift+خ في لوحة المفاتيح العربية
  2. العلامة ÷ هي shift+هـ

أمر الطباعة

يعرض هذا الأمر قيمة أو اكثر على الشاشة. بعد طباعة كل القيم يتم الانتقال إلى السطر التالي. (يمكن إلغاء الانتقال لسطر جديد بوضع ثلاث نقاط في نهاية الأمر). لطباعة سطر خال يمكن استخدام صيغة اطبع ""

أمثلة:

اطبع "مرحبا يا فتى"
اطبع 1+2×3
اطبع "الإجابة هي "، ...
اطبع 5

أمر القراءة

يقرأ قيمة أو أكثر من المستخدم ويضعها في متغيرات. يقبل اختياريا رسالة نصية ليعرضها قبل قراءة القيم. تُقرأ القيم بصورة نصية إلا في حالة وضع علامة# قبل اسم المتغير، ففي هذه الحالة يقرأ قيمة عددية. يمكن المزج بين قراءة قيم عددية ونصية في نفس الأمر. يجب على المستخدم ضغط مفتاح <enter> بعد ادخال كل قيمة حين يُنفّذ هذا الأمر.

امثلة:

اقرأ م، ن
اقرأ "ادخل اسمك:”، م
اقرأ "ادخل رقما:"، #س
اقرأ "ادخل اسمك وسنك وسن ابيك"، م، #ن، #ب

التخصيص

العبارة التخصيصّية تكون في صورة متغير = قيمة. يمكن أيضا تخصيص قيم لعناصر غير المتغيرات مثل عناصر المصفوفات وغيرها (ستناقش لاحقا). امر التخصيص يحسب أولا القيمة على يسار علامة = ثم يضع نتيجة الحساب في المتغير.

امثلة:

س = 4

يضع القيمة 4 في المتغير س

س = ص+6

يحسب قيمة ص+6 ويضع النتيجة في س

س = س + 1

يحسب قيمة س الحالية، يجمع عليها 1، ثم يجعل حاصل الجمع هو قيمة س الجديدة

أمر "إذا"

هذا الأمر مكون من ثلاثة اجزاء: الشرط، ومجموعة أوامر تُنفَّذ في حالة تحقق الشرط، واختياريا مجموعة أوامر اخرى تنفَذ في حالة عدم تحقق الشرط.

أمثلة:

إذا أ>5:
    اطبع "الرقم كبير"
وإلا:
    اطبع "الرقم صغير"
تم
إذا م = ن:
    اطبع "الرقمان متساويان"
    اطبع "اليس كذلك؟"
وإلا:
    اطبع "الرقمان غير متساويان"
    اطبع "هه"
تم

في حالة أن يكون هناك امر واحد فقط في حالتي التحقق وعدم التحقق، يمكن حذف كلمة تم وجعل أمر إذا كله على سطر واحد:

إذا أ=ب: اطبع "القيمتان متساويتان"
إذا أ>ب: اطبع "أ هو الأكبر" وإلا: اطبع "ليس أ الأكبر"

صيغة الشرط

الشرط يكون تعبيرا منطقيا، أي قيمته "صحيح" أو "خطأ".

العمليات المنطقية في كلمات كالآتي:

العملية المعنى
أ = ب القيمتان متساويتان
أ<>ب القيمتان غير متساويتان
أ>ب
أ>=ب
أ<ب
أ<=ب
عمليات المقارنة المعروفة
أ وأيضا ب تعتبر أن أ و ب هما قيم منطقية. تكون النتيجة "صحيح" إذا كانت قيمة كل من أ و ب هي “صحيح"، وإلا تكون النتيجة "خطأ" إذا كان احدهما أو كلاهما "خطأ".
أ أو ب تعتبر أن أ و ب هما قيم منطقية. تكون نتيجة العملية "صحيح" إذا كان أي من أ أو ب صحيحين، وإلا تكون النتيجة "خطأ" إذا كان كلاهما خطأ.
ليس أ تعتبر أن أ قيمة منطقية. تكون نتيجة العملية "صحيح" إذا كان أ خطأ، والعكس بالعكس.
ليس أ ولا ب تعتبر أن أ و ب هما قيم منطقية. تكون نتيجة العملية "صحيح" بشرط أن يكون كل من أ و ب قيمتهما خطأ. يمكن تنفيذ العملية على اكثر من قيمتين مثل "ليس أ ولا ب ولا ج"، وفي هذه الحالة يجب ان تكون قيمة كل المعطيات "خطأ" لتكون نتيجة العملية "صحيح".
الدمج يمكن دمج هذه العمليات بداخل بعضها (مثلما يحدث في العمليات الحسابية). مثلا: ليس أ>5 ولا أ<1
في هذه الحالية تكون الأولوية للعمليات بهذه الصورة: TBD

أمرا "علامة" و"اذهب إلى"

الأمر علامة يضع علامة مسماة في البرنامج يمكن نقل التنفيذ إليها. الأمر اذهب إلى يجعل تنفيذ البرنامج "يقفز" إلى علامة معينة وينفذ الأوامر التي تلي تلك العلامة. مثلا:

علامة أ
اطبع "مرحبا"
اذهب إلى أ

هذا البرنامج يستمر في طباعة كلمة "مرحبا" بلا توقف حتى إغلاق البرنامج.

اطبع "هشام"
اذهب إلى س
اطبع "مدحت"
علامة س
اطبع "رامي"

هذا البرنامج يطبع "هشام" ثم "رامي" متجاوزا طباعة "مدحت".

أمر لكل / تابع

يأخذ امر لكل ثلاثة أشياء:

  1. متغير يقوم بدور العداد
  2. نطاق للعد (من كذا إلى كذا)
  3. مجموعة من الأوامر لتنفيذها

ويمكن شرح طريقة عمل هذا الأمر بمثال:

لكل أ من 3 إلى 10:
    اطبع أ+5
تابع

العداد هنا هو المتغير أ، و ما سيفعله أمر لكل هو انه سينفذ سطر اطبع أ+5 مرة باعتبار ان قيمة أ تساوي 3، ثم مرة أخرى باعتبار ان قيمة أ تساوي 4، ثم باعتبار انها 5...وهكذا إلى ان ينفذه و “أ” تساوي 10، ثم ينتهي تنفيذ صيغة لكل.

أمر طالما / تابع

أمر طالما يقوم بتنفيذ الأوامر طالما تحققت الجملة الشرطية المتبعة.

أ=1
طالما أ<= 12:
    اطبع أ
    أ = أ + 1
تابع

يقوم البرنامج بطباعه الأرقام من 1 إلي 12.

الإجراءات والدوال

يمكن تقسيم البرامج الكبيرة إلى مكونات ليسهل التفكير في البرنامج. من هذه المكونات الإجراءات والدوال. الإجراء برنامج صغير يستدعى ليقوم بمهمة فرعية ثم يعود التنفيذ إلى البرنامج الرئيسي. الدالة مثل الإجراء مع الفرق انها حين انتهاء تنفيذها تعيد قيمة لجزء البرنامج الذي استدعاها، وعلى ذلك تكون الدالة برنامج صغير يحسب قيمة ويعيدها كالدوال الرياضية.

إجراء

صيغة تعريف الإجراء كالآتي:

إجراء <اسم الإجراء> (<العوامل>):
    <اوامر>
نهاية

مثال:

إجراء عرض.المجموع(س,ص):
    اطبع ص+س
نهاية

عرض.المجموع (10، 30)

أول جزء من البرنامج هو تعريف إجراء اسمه عرض.المجموع يأخذ متغيرين س،ص هما عوامله. الجزء الثاني هو استدعاء الإجراء وتقديم قيم للعوامل المطلوبة (قدمت القيمة 10 لـ س و 30 لـ ص). حينها يبدأ تنفيذ الأوامر داخل الإجراء بطباعة مجموع س وص. عند انتهاء جميع الأوامر يعود الإجراء إلى موقع استدعاءه ويتابَع تنفيذ اي أوامر متبقية.

ملاحظات:

  • المتغيرات داخل كل إجراء محلية؛ بمعنى انها لا علاقة لها بأي متغيرات أخرى بنفس الإسم خارج الإجراء. لو كان البرنامج به متغير س وهناك اجراء به متغير بنفس الاسم فإن تخصيص قيمة لأحدهما لا يؤثر في قيمة الآخر. هذه القاعدة تنطبق أيضا على المتغيرات التي تقوم بدور عوامل الإجراء.
  • عند الاحتياج لعمل متغير غير محلي (أي يتعامل معه الإجراءات والبرنامج الرئيسي على أنه نفس المتغير) لابد من الإعلان أن هذا المتغير مشترك بين جميع مكونات البرنامج. هذا الإعلان هو أمر بصيغة اسم متغير يليه كلمة “مشترك”، ويكون هذا الإعلان على سطر خاص به. مثلا:
س مشترك
  • لابد من تعريف قائمة عوامل لكل إجراء. لو لم يحتج الإجراء إلى عوامل فتقدم له قائمة عوامل فارغة في صورة قوسين. عند استدعاء الإجراء لابد من تقديم قائمة بقيم العوامل، أيضا ولو كانت فارغة.
  • هناك مشكلة فنية في محرر كلمات تؤدي إلى تبديل الأرقام حين تفصل بينها علامة الفاصلة بدون مسافات. بمعنى انه لو كتبت الرقم 10 ثم فاصلة ثم 30 فستجد المكتوب هكذا: 10،30. إلى أن تُحلّ هذه المشكلة ننصح بوضع مسافة بعد كل فاصلة عند سرد مجموعة من الأرقام. لتسهيل الأمر فإن محرر كلمات يقوم حاليا بإضافة هذه المسافة آليا.

دالة

يتميز أمر دالة عن أمر إجراء بأنه يجب إعادة قيمة من الدالة للجزء الذي استدعاها. الإعادة تكون باستخدام الأمر ارجع ب: <قيمة>

دالة مجموع(س,ص):
    ارجع ب: س+ص
نهاية

اطبع مجموع(10,5)

يقوم البرنامج بتعريف الدالة مجموع المسئولة عن إرجاع مجموع المتغيرين في الدالة ثم يقوم بطباعتها.

أوامر الرسوم

أمر ارسم.خط

يأخذ أمر ارسم.خط نقطه البداية و النهاية ولون الخط

س1 = 10
ص1 = 50
س2 = 60
ص2 = 100
اللون = 5

ارسم.خط (س1,ص1) - (س2,ص2), اللون

يقوم البرنامج بتحديد قيمه نقطه البداية في المتغير س1، ص1 ونقطه النهاية للخط في المتغير س2، ص2 وتحديد لون الخط برقم من صفر إلي 15.

يمكن حذف اللون في الأمر ووقتها سيُرسم الخط باللون الأسود.

أمر ارسم.مستطيل

يقوم برسم مستطيل عن طريق تحديد أعلي نقطه في المستطيل بأقصى اليمين و النقطة السفلى بأقصى اليسار وتحديد اللون وحالة الحشو (أي القيمة المنطقية خطأ لعدم الحشو أو صحيح لحشو المستطيل).

س1 = 10
ص1 = 100
س2 = 100
ص2 = 10
اللون = 5

ارسم.مستطيل (س1,ص1) - (س2,ص2), اللون,1

يقوم البرنامج برسم مستطيل باللون الأزرق محشو.

أمر ارسم.دائرة

يقوم برسم دائرة عن طريق تحديد نقطه مركزها و نصف القطر ثم تحديد قيمه للون و الحشو.

ارسم.دائرة(10، 10)، 100, 5، 1

يقوم البرنامج برسم دائره باللون الأزرق محشوة.

أمر ارسم.نقطة

يقوم برسم نقطه و تحديد لون لها عند الإحداثيات المحددة.

ارسم.نقطة (10، 10)، 5

يقوم البرنامج برسم نقطه عند الإحداثيات 10،10 باللون الازرق.

الأطياف

الأطياف هي صور تتحرك على الشاشة تستخدم عادة في الألعاب وما شابه (تعريب لمصطلح sprite). تتميز الأطياف بثلاث خصائص:

  1. عند رسم طيف في مكان ثم رسمه في مكان آخر فإنه يختفي تلقائيا من المكان الأول، وهذا يسهّل تحريك الأشكال على الشاشة.
  2. الطيف لا يمسح المرسوم وراءه، بل يخفيه مؤقتا ويعود الرسم الأصلي للظهور بعد تحريك الطيف لمكان آخر.
  3. خلفية الطيف تكون شفافة.

توجد في كلمات أربع عناصر تتعامل مع الأطياف:

  1. دالة حمل.طيف
  2. الأمر ارسم.طيف / في
  3. إجراء اخف.طيف
  4. إجراء اظهر.طيف

حمل.طيف

تأخذ هذه الدالة اسم ملف رسمي (مثل .bmp أو .png) وتعود بقيمة تعبّر عن طيف يمثل الرسمة المعطاة.

ط = حمل.طيف(“قطة.png”)

ارسم.طيف / في

يرسم هذا الأمر طيفاً (الذي عادةً ما يكون نتيجة دالة حمل.طيف) على الشاشة في مكان محدد:

ط = حمل.طيف(“قطة.png”)
ارسم.طيف ط في (20، 38)

اخف.طيف

يأخذ هذا الإجراء طيفا ويخفيه من على الشاشة لكن لا يلغيه من الذاكرة. ( طالما أن هذا إجراء وليس امراً فلابد أن يكون الطيف مقدم له بين قوسين).

اظهر.طيف

يأخذ هذا الإجراء طيفا يفترض أنه قد أخفي من قبل ويظهره من جديد.

الحوادث

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

عند حادثة <اسم الحادثة> نفذ <اسم إجراء>

بعد تنفيذ هذا الأمر في أية جزء من البرنامج يتم ربط اسم الإجراء بالحادثة؛ وإذا حصلت الحادثة بالفعل (مثلاً ضغط المستخدم زر الماوس) يتوقف تنفيذ الجزء الحالي من البرنامج ويستدعى الإجراء المرتبط بالحادثة ثم يعود التنفيذ الطبيعي للبرنامج.

الإجراءات المرتبطة بالحوادث عادة ما يكون لها معطيات. مثلاً لو سجلت إجراءً معينا للتعامل مع ضغط زر الماوس يجب أن يكون هذا الإجراء جاهزا لتلقى معطيين هما قيم (س، ص) التي تحدد مكان الماوس عند حصول الحادثة.

يُلاحظ أن كاتب البرنامج ليس عليه استدعاء ذلك الإجراء بنفسه بل سيستدعيه نظام كلمات ويقدم له المعطيات تلقائيا عند حصول الحادثة.

هذه اسماء الحوادث المتعامل معها حالياً:

  • حوادث الماوس:
    • ضغط.زر.ماوس
    • رفع.زر.ماوس
    • تحريك.ماوس
  • حوادث لوحة المفاتيح:
    • ضغط.مفتاح
    • رفع.مفتاح
    • ادخال.حرف
  • حوادث الأطياف:
    • تصادم

حوادث الماوس

الإجراء الذي يرتبط بتلك الحوادث يأخذ دائما قيمتي (س، ص)

عند حادثة ضغط.زر.ماوس نفذ ج1

إجراء ج1(س، ص):
    ارسم.نقطة (س، ص)، عشوائي(16)
نهاية

حوادث لوحة المفاتيح

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

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

  1. حادثة ضغط.مفتاح
  2. حادثة ادخال.حرف
  3. المزيد من حوادث ادخال.حرف لو استمر المستخدم في الضغط
  4. حادثة رفع.مفتاح

حوادث الأطياف

للأطياف حاليا حادثة واحدة هي تصادم، وتحصل لو تلامس طيفين على الشاشة (يكفي للتلامس حاليا أن يتداخل المستطيلات المحيطان بكل طيف، لكننا ننوي تطوير الإمكانية للتعامل مع شروط أدق للتلامس).

يأخذ الإجراء معطيين يعبران عن الطيفين الذين تلامسا، بدون ترتيب معين.

الوحدات

الأشياء

يمكن في كلمات تعريف فصائل، ثم من هذه الفصائل يمكن إنشاء أشياء تأخذ خصائصها وسلوكها من الفصيلة التي قد عُرّفَت منها. الفصائل والأشياء تفيد في تنظيم البرامج الكبيرة وفي صنع نموذج برمجي للأشياء الحقيقية التي يتعامل معها البرنامج (مثلاُ عملاء، معدات hardware، رسائل بريد الكتروني...)

كل فصيلة تصف للأشياء المنبثقة منها الخصائص والسلوك. الخصائص هي بيانات مخزنة في الشيء والسلوك عبارة عن مجموعة من الرسائل يمكن إرسالها للشيء، ويستجيب هو لتلك الرسائل بتنفيذ إجراء أو دالة.

الخصائص

ننظر أولاً للخصائص:

فصيلة شخص:
    له اسم، سن
نهاية

ن = شخص جديد
اسم ن = “سمير"
سن ن = 13

اطبع اسم $ ن
اطبع سن $ ن
  • الجزء الأول يعرّف فصيلة اسمها شخص، صيغة له كذا، كذا تعرف اسماء الخصائص المتوفرة للأشياء المنبثقة من تلك الفصيلة.
  • العبارة ن = شخص جديد تنشيء شيئا منبثقا من الفصيلة شخص. بشكل عام الصيغة <اسم فصيلة> جديد هي تعبير قيمته شيء منبثق من الفصيلة المسماة.
  • العبارة اسم ن = "سمير" تؤدي لكتابة القيمة "سمير" في الخاصية اسم الخاصة بالكائن الذي يشير إليه المتغير ن. بشكل عام صيغة <اسم خاصية> <كائن> معناها الوصول للخاصية المذكور اسمها الخاصة بذلك الكائن.
  • التعبير اسم $ ن له نفس نتيجة التعبير اسم ن .يمكن اختياريا الفصل بين اسم الخاصية والكائن بعلامة $، لكن يفضّل استخدام الصيغة السابقة لقربها من اللغة العربية الطبيعية. صيغة <خاصية> $ <شيء> موجودة لحالات خاصة لا يمكن فيها استخدام الطريقة الأولى.

الرسائل

يمكن في البرنامج ارسال رسائل معينة للشيء مثل أن نأمره أن يطبع نفسه على الشاشة أو أن يحسب قيمة معينة ويعطيها لنا.

حين يتعامل الشيء مع الرسالة باستدعاء إجراء تكون هذه استجابة للرسالة. بينما حين يتعامل مع الرسالة باستدعاء دالة ترجع قيمة للمرسل الرسالة يكون هذا رد على الرسالة.

ارسال الرسائل

تخيل أن لدينا متغيرا يدل بالفعل على شيء قد جهزناه، كيف نرسل له رسالة؟ نفعل ذلك بالصيغة التالية:

<الشيء> : <اسم الرسالة> (<المعطيات>)

هنا الشيء الذي نرسل له يسمى متلقي الرسالة.

مثلاً لو كانت الرسالة ذات استجابة:

-- نعتبر أن هذه السطر القادم سيأتي لنا بكائن من فصيلة 'شكل'
ش = اصنع.شكلاً()
الشكل : ارسم.في(12، 14)

ولو كانت الرسالة ذات رد:

ش = اصنع.دائرة.بقطر(100)
اطبع ش : مساحته()

تعريف الاستجابات والردود

لكي تعرف استجابة أو رد لابد من خطوتين:

  • الإعلان عن الاستجابة أو الرد في الفصيلة الخاصة بالشيء
  • تعريف وسيلة الاستجابة أو الرد.

وفيما يلي مثال لتعريف استجابة لرسالة:

فصيلة طالب:
    له اسم، سنة
    يستجيب ل: اطبع.بياناتك()
نهاية

استجابة طالب ط ل: اطبع.بياناتك():
    اطبع "الاسم="، اسم ط
    اطبع "السنة الدراسية="، سنة ط
نهاية

نلاحظ هنا أننا في تعريف الاستجابة استخدمنا اسما مصطنعا ط يدل على المتلقي وله صفتان:

  • يمكن أن يأخذ أي اسم ولا يشترط تسميته ط مثلاً.
  • عند ارسال الرسالة سيحمل ذلك المتغير قيمة تشير إلى الشيء الذي أرسلنا له الرسالة.
معاينة
أدوات شخصية