الفصل الأول
ميزات لغة #
بعض الميزات فى 2.0 6# و 1.0 68.
المعرفة الكاملة بالتحسينات التى ادخلت على لغة . 6# فى الإصدار الثالث لها ليست ضرورية لإستخدام
يمكنك ان تعود مرة أخرى فى أى وقت عندما تحتاج الى فهم ما الذى يحدث بالضبط بداخل جُمل 1100
فى هذا القسم, سوف نقوم بتوضيح بعض ميزات #ح المهمة بالنسبة ل 0ل110: ,8606:65
1016166 عاط8/ع 160000 رااعثلا ,01610005 15ا2000700. لابد من أن تفهم هذه المفاهيم كى
تستطيع فهم 11010
إذ اردنا عمل دالة تقوم بطباعة عناصر /338 من النوع 101, فهذا أمر بسيط. انظر الكود التالى:
وفى نفس البرنامج إذا اردنا دالة أخرى تقوم بطباعة 8ج من النوع 016 00ل, فهذا امر أبسط. نكتب
نفس الدالة السابقة بنفس الأسم مع تغير نوع البيانات فى عناصر الدالة. كالتالى:
١ اه عمعدرعد عد عمعمعاء ملطدمة ) الطعمععوع
ا(" " + لمععاع) مدعلا علمفهم
كما" ) عصديك دعلا ع دعوم
مصعدوة وملكي
+( 6 ,5 ,4 ,1,2,3 ) 2 لإمععقعهد [اعصد
٠ " امستفعهمم و عمععد دعجم" ) عمد كدعا علامعوفي
"ل مستفعهمة وه جم لطيمة وعم" ) عصذ هدعلا . عل معدم
مد«عمعلطمة الإمععمطموء2
٠ "لمستوعدم ووعقعمط وعم" ) ععد دعل علمقوم
" + عمعسعاء) ععدعلط. علمعدم
فى البرنامج السابق قمنا بعمل ثلاثة دوال تقوم بنفس العمل مع تغير نوع العناصر التى تأخذها الدالة. ما
دالة مع اعطائها النوع المناسب لها. كل هذا طبيعى و معتاد.
لكن الجديد فى 2.0 6# هو اننا نستطيع عمل نفس البرنامج السابق وذلك بدالة واحدة فقط , دون الحاجة
الى عمل العديد من الدوال.
لو قمنا بتغير اسم الأنواع كلها الى حرف ال ( 1) و اعدنا كتابة الدالة
تأخذ النوع 7 فيصبح الكود
ركه" ) عصديك دعلا ع لمعوم
الكود السابق ليس صحيحاً من الناحية اللغوية ( الخاصة بلغة البرمجة), لكئه يشرح المعنى ليس أكثر.
لاحظ إضافة <7> بعد أسم الدالة مباشرة, ثم استخدام حرف (() للتعبير عن النوع بداخل الدالة. طبعاً يمكننا
كتابة أى رمز أخرى غير ال 1, لكنك سوف تعتاد على رؤية هذا الحرف كثيراً فى العديد من الكتب التقنية,
ووسائل المساعدة المختلفة. لذلك ينصح باستخدام هذا الحرف.
ثم بعد ذلك يمكنك استدعاء تلك الدالة بعدة انواع من العناصر:
ليد ععمعمد المع
١ معط الإو ععمامنعم
فى هذه الحالة يقوم المترجم (1182م60010) باء
تتناسب مع النوع المُدخل اليها.
هذا هو المقصود ب ©680801. إنشاء كائن للإستخدامات العامة.
تستدعى بأن يكتب اسمها فى المكان الذى نريده. ثم بعد ذلك نقوم بتشغيل الكود أو ترجمته من قبل المترجم,
وكل مرة يتم تشغيل فيها الكود يتم استدعاء الدالة عند نفس النقطة أو المكان الذى اسمها فيه. لكن ماذا
الطرق, فمن الممكن ان نستخدم جملة . ع, أو جملة (111ن5. لكن هناك حل أفضل و هو استخدام
يعتبر ال 0616316 هو الطريق الذى تعمل به الأحداث. ال 0616818 يعتبر مؤشر للدوال (:001016).
فهو يقوم بتمرير المرجع الخاص بالدول ( مكان الدالة فى الذاكرة) و تشغيل تلك الدوال بدون استدعاءها
النحو الخاص بالتصريح عن ال 08188816 هو:
+©266655-00010:_معرف الدخول الى الكائن ( لمزيد من المعلومات ارجع الى اساسيات لغة 6#)
0168916 : كلمة مفتاحية ثابتة
المثال التالى تصريح عن 061688185
فى المثال السابق, قمنا بالتصريح عن 06165316 اسمه ع007/06166821 و الذى يمكن أن نستخدمه لتشغيل
اى دالة تعود بقيمة من النوع 04( و تأخذ عنصر واحد من النوع عانا/00. ولإستخدام هذا ال م21ع0616,
١ل علطامة ا عمتمجنقع ععد منلطار
جسم الدالة /7/
فى بداية الكود قمنا بإنشاء دالة اسمها 86080104 ونوعها 108 وتأخذ العناصر 0 و هو من النوع 00016
206168316 الدالة 860070101 كى يقوم بتشغيلها.
بعد كل هذا, باقى لنا فقط ان نقوم بتمرير قيمة لل061680:8 كى يقوم بتشغيل الدالة بها:
الدوال المجهولة (05 1/1620 5ن 200017/010)
تأمل الكود التالي:
7 10 8 627282 5 42 32 32 12 ) 2 فععطسم [اعمد معمسدعم
فى الكود السابق قمنا بتعريف 2327 اسمها 0010710635 و مكونة من عشرة عناصر من النوع101. و ايضاً
قمنا بإنشاء دالة من النوع 0001 ( تعطى 65168 أو 0006) اسمها 1687/80 وتأخذ عنصر واحد من النوع
+ ثم تقوم باختبار هذا العنصر إذا كان زوجى ام فردى, إذا كان زوجى تقوم الدالة بارجاع القيمة
وإذا كان فردى تعود بالقيمة 63158. ثم جاء هذا السطر :
عنصا
فى هذا السطر قمنا باستدعاء دالة اسمها . 1000/8[1] و هى موجودة فى الفئة . («جمم, تلك الدالة تأخذ
معروف فى لغات البرمجة يتم التحقق منه وإذا تحقق الشرط فى تلك الحالة يكون 7006 و إذا لم
يكون 2156ع. لذلك قمنا بإنشاء الدالة . 760ع5| كى تتحقق من الشرط إذا كان . 9156 أم 1006. وقمنا
بإستدعائها كعنصر من عناصر الدالة القاء 60 .
سوف تقوم الدالة ال8/ل10ع بقرائة المصفوفة التى اعطيت لها, و عند كل عنصر سوف تقوم بتطبيق الدالة
لا يهمنا فى كل الكلام السابق سوى الطريقة التى كتبنا بها الكود. فقد قمنا بعمل دالة ثم استدعيناها فى مكان
رز 2 2 3 «موععصة) متسامع
كعنصر من عناصر الدالة ال/100], مع تغير بسيط فى طريقة الكتابة. فلننظر اليه عن قرب
لقد قمنا بكتابة كلمة 06168318 ثم كتبنا الدالة مباشرةً كأنها عنصر بداخل توقيع ال 06168316
الأمرغير مفهوم للبعض. لكن لو تعاملت من قبل مع ال 061688185 فسون يكون الأمر فى غاية السهولة
ليس لها اسم أو توقيع.
جملة م161 تأخذ شكلين, إما ©/60/655/0ر6 2600070 ماعألا أو 536216 ماعأل. لشرح هاذين
الشكلين يجب أن نأخذ بعض الأمثلة.
العديد من الطرق التى تؤدى الى ذلك. لكن أبسط طريقة هى عمل | 1240 (ال 1162102 كائن يقوم
بالدخول الى اى مجموعة من العناصر ).
انظر المثال التالى :
١ لمعف مسمقاعة عمعمسمة منلطر
7 دم معنا قعص
العتقلا فض منعوع5
" +يقة) ععدعل. ع لمفهم
ل 9 " + ممعي . عم عوج عستمكارره) ع دعلا ع 1م فهم
فى هذا الكود قمنا بإنشاء فئة تسمى . 6اع02/5018/0/8 والتى تقوم بتطبيق ال 10183668 التى تدعى
©12000781+851. ( يرجى العودة الى أى مرجع لفهم ال 101865665 ). بتطبيق تلك ال 10183668 على
المترجم يحدد تلك الدالة على إنها 1083103 ويقوم بتوليد فئة جديدة تقوم بتطبيق ال 101606328 التى تدعى
©016005. ثم بعد ذلك قمنا بعل م60] باستخدام ال +810م116. فى كل مرة يتم فيها تنفيذ دالة
*«©1/00/©1 الموجودة بداخل ال 1224083 يتم تنفيذ جملة 1610 واحدة ثم يتوقف. ثم فى الدورة الثائية يتم
دعنا نشرح الكود شرحا أكثر تفصيلاً:
هنا قمنا باشتقاق الكائن 007/20007838106 من الفئة التى يقوم المترجم بتوليدها.
6610 1101/61 تمثعاء صمنامقلاط
هنا يتم ايجاد أول جملة م!ع1ي. إذا وجد المترجم جملة 08681 |16 أو انتهى المجال الذى يدور فيه
فسوف تعود دالة 1«عل1 1/1078 بالقيمة م15 ج] وتنتهى جملة ع ازدا/لا.
المعين .ماع ا صمقلا
تلك الجملة تحتفظ بالقيمة التى تعود بها جملة لماعلا
الإصدار 3.0 6# حرك لغة. 6# فى إتجاه اللغة الوظيفية. وذلك بتقديم أسلوب أكثر تصريحاً. و تستخدم
بساطة ووضوح.
استنتاج النوع (111626066 7706 ا1068)
إستنتاج النوع يعتبر ميزة رائعة فى أى لغة. فهو يجعلك تكتب الكود بمنتهى الراحة و دون تحديد نوع
المتغير او الكائن الذى تتعامل مع. فالمترجم الخاص باللغة يقوم باستنتاج نوع المتغير أو الكاثن, وذلك
بتحليل القيمة الموجودة فى المتغير أو الكائن و تحديد نوعها.
تقدم 3.0 #© ميزة إستنتاج النوع عن طريق كتابة كلمةم» بدلا من كتابة نوع البيان. انظر المثال التالى:
غعصد
قمنا بتعريف متغير من النوع 108 و اعطيناه القيمة 5, ثم عرفنا متغير مجهول النوع و اعطيئاه قيمة المتغير
3. تلقائيا يقوم المترجم بتحليل البيانات الموجودة فى المتغير ع ثم ظبط نوع المتغير 8 كى يتوافق معها,
وبالتالى بعد تلك العملية يتحول المتغير 8 الى النوع 104. وذلك عن طريق الإستنتاج. انظر الكود التلى:
المترجم شيئاً فالنوع محدد امامه.
الطريقة الوحيدة التى يمكنك بها تعريف متغيرات مجهولة النوع , كما سوف نرى لاحقا.
كلمة 8ج يمكن أن تستخدم بداخل المجال (0م560) الحالى فقط. لتوضيح ذلك انظر الكود التالى:
)له اللمستمعم | ءدلافنلولا لقص معتل ام
اج الكود يعتبر
مداه // "علرمة5"
المسمعة // :8