Skip to content

Latest commit

 

History

History
1015 lines (730 loc) · 54.4 KB

خارطة-الطريق.md

File metadata and controls

1015 lines (730 loc) · 54.4 KB

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

لتحقيق هذه المعادلة الصعبة، كان لا بد من دراسة معظم أساليب لغات البرمجة الأخرى عالية المستوى، مثل لغات: السي والباسكال والبيسك، وجعل لغة عمّوريا ( عرب ) متوافقة مع الجميع، بحيث يكون لها أوامر سهلة و مفهومة مثل لغة البيسك لكي يتمكن الأطفال من تعلمها، وأيضاً أوامر مختصرة وسريعة مثل لغات السي و الدلفي (باسكال)، تفيد المبرمجين المتقدمين، و أيضاً جعلها لغة عالية المستوى تتيح البرمجة الموجهة الشيئية (Object Oriented Programming) بما في ذلك الوراثة (Inhiretance)، نرجو من الله أن نوفق في ذلك. والله من وراء القصد.

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

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

تتيح لغة عمّوريا ( عرب ) عدة طرق لتعريف المتغيرات والثوابت، لكي تماشي كل الاحتياجات و تلاءم كافة فئات المبرمجين من مبتدئين إلى محترفين.

تعريف المتغيرات

شكل لغة فيجوال بيسك في التعريف ( واضح وسهل ويلاءم المبتدئين )

عرّف <اسم متغير | أسماء  متغيرات> كمتغير | كمتغيرات <نوع المتغير\المتغيرات>
عرّف س كمتغير  رقمي صحيح
عرّف ع،ق كمتغيرات  رقمية صحيحة

نلاحظ كيف تستخدم الفاصلة العربية "،" للفصل بين أسماء المتغيرات المختلفة إذا أردنا تعريف أكثر من متغير في نفس السطر.

وأيضاً نلاحظ كيف تتوافق لغة عمّوريا (عرب ) مع اللفظ السليم للجملة العربية، حيث يمكن استخدام كلمة " كمتغير" إذا كنا نريد تعريف متغير واحد أو كلمة "كمتغيرات" إذا أردنا تعريف أكثر من متغير، وذلك أسهل للفهم ولقراءة البرنامج.

شكل لغة باسكال أو دلفي ( واضح و مختصر ويناسب المتقدمين في البرمجة )

عرّف
<اسم متغير | أسماء  متغيرات> : <نوع المتغير\المتغيرات>
...
نهاية عرّف

مثال:

عرّف
الزمن : رقمي  صحيح
السرعة،التسارع : رقمي عشري
الحدث : منطقي
نهاية عرّف

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

شكل لغة السي \ السي ++ ( مختصر وسريع يناسب المتقدمين )

<نوع المتغير\المتغيرات>  <اسم متغير | أسماء متغيرات>

أمثلة:

صحيح ع،غ،المسار،الزمن
منطقي الحدث،الإشارة
نصّي الاسم،الكنية

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


قد يسأل سائل لماذا على لغة البرمجة العربية أن تحاكي لغات البرمجة الأخرى ولا يكون لها أسلوبها الخاص؟

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

تعريف الثوابت

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

بنفس الطرق الثلاثة السابقة نستطيع تعريف الثوابت:

الطريقة المشابهة لأسلوب فيجوال بيسك

عرّف <اسم الثابت> كثابت <نوع الثابت> = <قيمة>

أمثلة:

عرّف بي كثابت  رقمي عشري = 3,1415
عرّف الاسم كثابت  نصّي = "محمد"

شكل لغة باسكال

عرّف
<اسم ثابت1> : ثابت <نوع الثابت1> = <قيمة>
<اسم ثابت2> : ثابت <نوع الثابت2> = <قيمة>
...
نهاية عرّف

مثال:

عرّف
س : ثابت  رقمي صحيح = 67
ف : ثابت  رقمي عشري = 3,2
نهاية عرّف

شكل لغة سي

ثابت <نوع الثابت> <اسم  الثابت> = <قيمة>

أمثلة:

ثابت صحيح ع = 24
ثابت نصّي الكنية = "الهاشمي"
ثابت منطقي ناجح = صح

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

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

تتيح لغة عمّوريا (عرب)، كما معظم لغات البرمجة، عدة أنواع من المتغيرات والثوابت، كل نوع يحجز عدد محدد من البايتات داخل الذاكرة موضحة بالجدول التالي:

نوع المتغير أو الثابت حجم الذاكرة الاستخدام
رقمي صحيح \ صحيح 4 بايتات للأرقام الصحيحة سالبة أو موجبة بدون فاصلة عشرية
رقمي عشري \ عشري 4 بايتات للأرقام التي تحتوي على منزلة عشرية سالبة أو موجبة
رقمي كبير \ كبير 8 بايتات للأرقام الضخمة عشرية كانت أم صحيحة موجبة و سالبة
حرفي بايت واحد لتخزين محرف واحد في الذاكرة أي 8 بتات وهو رقم بين الصفر و 255
نصّي حجم النص لتخزين النصوص، وحجم الذاكرة المحجوزة يساوي حجم النص، حيث يمثل كل حرف بايت واحد
منطقي بت واحد يأخذ إما قيمة "صح" = 1 أو "خطأ" = 0

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

الجمل الشرطية

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

تتيح لغة عمّوريا (عرب) كالعديد من لغات البرمجة العالية المستوى، مجموعة واسعة من الجمل الشرطية التي تعطي مرونة كبيرة للبرنامج.

جملة "إذا (لو)" البسيطة

هذه الجملة هي أبسط أشكال الجمل الشرطية، حيث تفحص شرطاً أو مجموعة من الشروط فيما إذا كانت صحيحة أم لا، وبناءً على ذلك تقرر تنفيذ مجموعة من الأوامر أو الجمل، شكل هذه الجملة هو كالتالي:

إذا كان\كانت  ( <شرط> ) نفذ
<مجموعة من الأوامر>
...
نهاية إذا

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

لو كان\كانت ( <شرط> ) نفذ
<مجموعة من الأوامر>
...
نهاية لو

أمثلة:

إذا كان (الهدف > 3) نفذ
   النتيجة = "فوز"
نهاية إذا
لو كانت (السرعة >= 80) نفذ
   مخالفة = صح
   الزمن = المسافة ÷ السرعة
نهاية لو

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

أمثلة:

إذا (الحدث == خطأ)  نفذ
   سير_العمل = "توقف"
نهاية إذا

لو (الرقم > 0) نفذ
   النوع = "موجب"
نهاية لو

جملة "إذا (لو) وغير ذلك (وإلا)"

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

إذا (لو) كان\كانت ( <شرط> ) نفذ
<مجموعة من الأوامر>
...
وغير ذلك (وإلا)  نفذ
<مجموعة أخرى من الأوامر>
...
نهاية إذا (لو)

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

أمثلة:

إذا كان (الرقم >= 0) نفذ
   النتيجة = "موجب"
وغير ذلك نفذ
   النتيجة = "سالب"
نهاية إذا

لو ( العدد % 2 == 0) نفذ
   اطبع("موجب")
وإلا نفذ
   اطبع("سالب")
نهاية لو

جملة "إذا وغير ذلك إذا" المركبة

على غرار الجمل الشرطية السابقة، تقوم هذه الجملة بفحص عدة شروط بشكل تسلسلي حتى يتحقق أحد هذه الشروط، عندها تنفذ الجمل التابعة له.

إذا (لو) كان\كانت ( <شرط1> ) نفذ
<مجموعة1 من الأوامر>
...
وغير ذلك (وإلا)  إذا (لو) كان\كانت ( <شرط2> ) نفذ
<مجموعة2 من الأوامر>
...
وغير ذلك (وإلا)  إذا (لو) كان\كانت ( <شرط3> ) نفذ
<مجموعة3 من الأوامر>
...
...
وغير ذلك (وإلا)  نفذ
<مجموعة أخرى من الأوامر>
...
نهاية إذا (لو)

مثال:

إذا كان (المعدل >= 90) نفذ
    التقدير  = "أ"
وإلا إذا كان (المعدل >= 80) نفذ
    التقدير  = "ب"
وإلا إذا كان (المعدل >= 70) نفذ
    التقدير  = "ج"
وإلا نفذ
    التقدير  = "د"
نهاية إذا

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

جملة إذا المختصرة

تتيح لغة عمّوريا (عرب) شكل لغة السي المختصر من جملة إذا، وهو كالتالي:

<اسم  متغير> = (<شرط>) ؟ <تعليمة في حالة صحة الشرط> : <تعليمة في  حالة الخطأ>

مثال:

النتيجة = (الرقم >= 0) ؟ "موجب" :  "سالب"

التعليمة السابقة موافقة لجملة إذا التالية:

إذا كان (الرقم >= 0) نفذ
   النتيجة = "موجب"
وإلا نفذ
   النتيجة = "سالب"
نهاية إذا

جملة ضع للاختيار

هذه الجملة تؤدي نفس عمل جملة "إذا" المركبة، ولكن تعطي صورة أكثر وضوحاً و قابليةً للقراءة.

ضع (<اسم متغير>) للاختيار

    في حالة <قيمة1> نفذ
        <مجموعة1 من الأوامر>
    نهاية الحالة

    في حالة <قيمة2> نفذ
        <مجموعة2 من الأوامر>
    نهاية الحالة

    في حالة <قيمة3> نفذ
        <مجموعة3 من الأوامر>
    نهاية الحالة

   \# ...

    في الحالات الأخرى  نفذ
       <مجموعة أخرى من  الأوامر>
    نهاية الحالات
    
نهاية الاختيار

ويوجد شكل آخر لهذه الجملة، أكثر اختصاراً وملائمةً للمبرمجين المتقدمين.

اختر (<اسم متغير>)

    حالة <قيمة1> :
        <مجموعة1 من الأوامر>
    نهاية

    حالة <قيمة2> :
        <مجموعة2 من الأوامر>
    نهاية

    حالة <قيمة3> :
        <مجموعة3 من الأوامر>
    نهاية

  \# ...

وإلا :
    <مجموعة أخرى من  الأوامر>
نهاية

نهاية الاختيار

مثال:

ضع (التقدير) للاختيار
    في حالة "أ" نفذ
        اطبع("ممتاز")
    نهاية الحالة

    في حالة "ب" نفذ
        اطبع("جيد  جداً")
    نهاية الحالة

    في حالة "ج" نفذ
        اطبع("جيد")
    نهاية الحالة

    في حالة "د" نفذ
        اطبع("مقبول")
    نهاية الحالة

    في حالة "ر" نفذ
        اطبع("راسب")
    نهاية الحالة
    
    في الحالات الأخرى  نفذ
        اطبع("الحرف المدخل غير  صحيح")
    نهاية الحالات

نهاية الاختيار

جمل التكرار

جمل التكرار هي التي تقوم بتكرار جزء معين من البرنامج عدد محدد من المرات، أو إلى تحقق شرط ما أو اختلاله، وتتيح لغة عمّوريا (عرب) كما معظم لغات البرمجة عالية المستوى مجموعة من جمل التكرار تتناسب مع كافة الاحتياجات.

تقوم هذه الجملة بتكرار جزء معين من البرنامج عدد محدد من المرات، وهي مفيدة جداً وبسيطة.

كرر <عدد مرات التكرار> مرة\مرتين\مرات
    <مجموعة من الأوامر>
نهاية كرر

أمثلة:

كرر مرة
    اطبع("*")
نهاية كرر

كرر مرتين
        اطبع("*")
نهاية كرر

كرر 9 مرات
    اطبع("مرحباً")
نهاية كرر

كرر 154 مرة
    ادخل(رقم)
    اطبع(رقم ÷ 10)
نهاية كرر

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

مثال:

كرر 83
    اطبع("*")
نهاية كرر 

جملة من إلى

هذه الجملة هي تقريباً نفس جملة كرر ولكن تتيح لنا تحديد عداد نستطيع من خلاله معرفة القيمة الحالية للتكرار داخل الجزء المراد تكراره، ولهذا أهمية كبيرة في ربط الجزء المراد تكراره بقيمة عملية التكرار.

من <متغير يمثل العداد> = <قيمة  العداد عند البداية> إلى <قيمة العداد  عند النهاية> بمقدار زيادة\نقصان  <قيمة زيادة أو نقصان العداد في كل مرة> نفذ
   <مجموعة من الأوامر>
نهاية من

مثال:

من س = 1 إلى  10 بمقدار زيادة 1 نفذ
    اطبع(س)
نهاية من

سوف يقوم البرنامج السابق بطباعة الأرقام من 1 إلى 10.

يمكن الاستغناء عن كلمة "بمقدار" دون تأثر البرنامج، وأيضاً يمكن الاستغناء عن كلمة "بمقدار زيادة" إذا كانت الزيادة تساوي 1 فقط في كل مرة.

أيضاً يوجد شكل مختصر أكثر من جملة "من إلى" يناسب المبرمجين المتقدمين:

من <متغير يمثل العداد> = <قيمة  العداد عند البداية> : <قيمة العداد عند النهاية> : +\- <قيمة زيادة أو نقصان العداد في كل مرة>
    <مجموعة من الأوامر>
نهاية من

مثال:

من س = 0 : 100 : +2
   اطبع(س)
نهاية من

سوف يقوم البرنامج السابق بطباعة الأعداد الزوجية من صفر إلى مئة.

مثال:

من العداد = 53 : 1 : -3
    اطبع(العداد)
نهاية من

سوف يقوم البرنامج السابق بطباعة الأرقام من 53 بشكل تنازلي كل مرة ناقص ثلاثة إلى أن يصل للواحد.

جملة بينما

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

بينما تكون\يكون  (<شرط>) نفذ
    <مجموعة من الأوامر>
نهاية بينما

مثال:

بينما ( السرعة > السرعة_المحددة ) نفذ
    السرعة = السرعة – 0,01
نهاية بينما

ويمكن الاستغناء عن كلمة "نفذ" للمزيد من الاختصار، وأيضاً كلمة "تكون\يكون".

جملة افعل طالما

هذه الجملة نفس جملة "بينما" تماماً، إلا أنها تقوم بالتنفيذ ثم تتحقق من الشرط، على عكس جملة "بينما" التي تتحقق من الشرط ثم تنفذ، لذلك تكون جملة "افعل طالما" مثالية إذا أردنا أن ننفذ الأوامر على الأقل مرة واحدة إذا كان الشرط مختلاً من البداية.

افعل التالي
    <مجموعة من الأوامر>
طالما ( <شرط> )

مثال:

افعل التالي
    اطبع (الساعة)
طالما ( الساعة < 7 )

ويمكن الاستغناء عن كلمة "التالي" أيضاً زيادةً في الاختصار.

تعليمتي "توقف" و "استمر"

تستخدم هاتان التعليمتان للتحكم في جمل التكرار من الداخل، حيث تقوم تعليمة "توقف" بإيقاف جملة التكرار والخروج منها، بينما تقوم تعليمة "استمر" بتجاهل باقي أوامر المجموعة المكررة والبدء من بداية أوامر التكرار مع الحفاظ على العد.

أمثلة:

من الرقم = 1 : 8 : +1
    لوكان (الرقم == 5)
        توقف
    نهاية لو  
    اطبع(الرقم)
نهاية من

سوف يقوم البرنامج السابق بطباعة الأرقام :1 ، 2 ، 3 ، 4 ، حيث سوف يتوقف عند الوصول للرقم الخامس وقبل أن تتم طباعته ويخرج خارج جملة "من"

من الرقم = 1 : 8 : +1
    لو كان  (الرقم == 5)
        استمر
    نهاية لو
    اطبع(الرقم)
نهاية من

أما هذا البرنامج سوف يطبع : 1 ، 2 ، 3 ، 4 ، 6 ، 7 ، 8 ، حيث سوف يتخطى باقي الأوامر ويبدأ من البداية مع استمرار العد على حاله.

جملة لكل قيمة من

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

لكل قيمة من <متغير يمثل العداد> =  (قيمة1،قيمة2،...،قيمة ن)\<مصفوفة> نفذ
    <مجموعة من الأوامر>
نهاية من

جملة اذهب إلى

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

<عنوان> :
\# ...

اذهب إلى  <عنوان>

مثال:

البداية :
\# ...
إذا كان  (الزمن < 10) نفذ
   اذهب إلى البداية
نهاية إذا

كما نلاحظ أننا يمكننا تنفيذ نفس البرنامج السابق تماماً باستخدام جملة "افعل طالما" وبذلك يمكننا الاستغناء عن جملة "اذهب إلى" كالتالي:

افعل التالي
\# ...
طالما (  الزمن < 10 )

العمليات الحسابية والمنطقية

تتيح لغة عمّوريا (عرب) مجموعة واسعة جداً من العمليات الحسابية والمنطقية التي يمكن تنفيذها داخل البرامج.

العمليات الحسابية

الجدول التالي يوضح العمليات الحسابية الممكنة

العملية الإشارة المستخدمة
الجمع +
الطرح -
الضرب إما إشارة الضرب الانجليزية ( * ) أو إشارة الضرب العربية ( × ) للتوافق مع الأنماط المختلفة للوحات المفاتيح
القسمة إما إشارة القسمة الانجليزية ( / ) أو إشارة القسمة العربية ( ÷ ) للتوافق مع الأنماط المختلفة للوحات المفاتيح
الأس ^
باقي القسمة إما إشارة (%) أو كلمة (باقي) للمزيد من الإيضاح
الزيادة بمقدار واحد ++
النقصان بمقدار واحد --
إزاحة البتات إلى اليمين <<
إزاحة البتات إلى اليسار >>
العملية المنطقية "و" على البتات &
العملية المنطقية "أو" على البتات |
العملية المنطقية "نفي" على البتات قلب
العملية المنطقية "أو الجامعة" على البتات أو ما يسمى بالانجليزية XOR أوا

العمليات المنطقية

الجدول التالي يوضح العمليات المنطقية الممكنة

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

جمل الإسناد

في لغة عمّوريا (عرب) تكتب المعادلات بالطريقة العربية من اليمين إلى اليسار، لذلك يكون الإسناد دائماً من جهة اليسار إلى جهة اليمين، حيث يسند اليسار إلى اليمين، كالتالي:

س = 10 + 5

وتتيح لغة عمّوريا العديد من علامات الإسناد، زيادة في المرونة، موضحة بالجدول التالي:

العملية الإشارة المستخدمة
إسناد =
أضف اليسار إلى محتويات اليمين وضع الناتج في اليمين +=
اطرح اليسار من محتويات اليمين وضع الناتج في اليمين -=
اضرب اليسار باليمين وضع الناتج في اليمين *= أو ×=
اقسم اليمين على اليسار وضع الناتج في اليمين /= أو ÷=
اقسم اليمين على اليسار وضع باقي القسمة في اليمين باقي= أو %=
ارفع اليمين للأس يسار وضع الناتج في اليمين ^=
أزح بتات اليمين بمقدار قيمة اليسار إلى اليمين وضع الناتج في اليمين <<=
أزح بتات اليمين بمقدار قيمة اليسار إلى اليسار وضع الناتج في اليمين >>=
أجرِ العملية المنطقية "و" بين بتات اليمين واليسار وضع الناتج في اليمين &=
أجرِ العملية المنطقية "أو" بين بتات اليمين واليسار وضع الناتج في اليمين |=
اقلب بتات اليسار وضع الناتج في اليمين قلب=
أجرِ العملية المنطقية "أو الجامعة (XOR)" بين بتات اليمين واليسار وضع الناتج في اليمين أوا=

التعامل مع شاشة الأوامر

يتم التعامل مع لوحة الأوامر (Console) في لغة عمّوريا (عرب) من خلال تعليميتين:

تعليمة اطبع

تقوم هذه التعليمة بالطباعة على الشاشة ولها الشكل التالي:

اطبع(معامل1،معامل2،...،معامل ن)

مثال:

اطبع("10 + 2 = "،10 + 2،سطر جديد)

سوف تطبع التعليمة السابقة : 10 + 2 = 12

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

تعليمة ادخل

تقوم هذه التعليمة بإدخال مدخل معين من لوحة المفاتيح إلى متغير محدد، ولها الشكل التالي:

ادخل(متغير1،متغير2،...،متغير ن)

مثال:

عرّف س،ص،ع كمتغيرات  صحيحة
ادخل(س،ص،ع)
اطبع("المجموع = "،س + ص + ع)

سوف تنتظر تعليمة "ادخل" المستخدم إلى أن يقوم بإدخال ثلاثة أرقام صحيحة عندها تقوم تعليمة اطبع بطباعتهم.

تعريف المصفوفات

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

طريقة تعريف المصفوفة هي نفسها طريقة تعريف المتغيرات العادية التي شرحناها سابقاً، ولكن نزيد عليها عدد عناصر المصفوفة كالتالي:

عرّف  س(6) كمتغيرات رقمية صحيحة

\# أو

عرّف
    س(6): صحيح
نهاية عرّف

\# أو

صحيح  س(6)

طبعاً أي واحدة من الطرق الثلاثة السابقة تعطي نفس النتيجة، ويكون لدينا ستة متغيرات بالضبط، هي : س(1)، س(2)، س(3)، ...، س(6).

نستطيع استخدام هذه المتغيرات إما بشكل مستقل كل واحد على حدا، أو بشكل جماعي كما يحلو لنا.

أيضاً نستطيع إعطاء قيم أولية للمصفوفات بطريقة سلسة جداً كالتالي:

عرّف  الأعداد(4)،الأرقام(60) كمتغيرات رقمية صحيحة
الأعداد(4)  = {-9 ،7 ،0 ،3}
الأرقام(60)  = 0 : +2 : 120

تعريف المؤشرات والمرجعيات (العناوين)

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

نُعرِّف المؤشرات بنفس طرق تعريف المتغيرات العادية، ولكن نضع قبل اسم المؤشر كلمة "مؤشر" أو إشارة "*" في حال أردنا الاختصار، للدلالة على أنه مؤشر، وطبعاً يجب أن يكون نوع المؤشر مطابق لنوع المكان في الذاكرة الذي نريد أن نؤشر عليه.

عرّف  *<اسم المؤشر> كمتغير رقمي صحيح

\# أو

عرّف  مؤشر <اسم المؤشر> كمتغير رقمي صحيح

مثال:

صحيح  س ، ص ، *س ، مؤشر ص
س  = 3
ص  = 7
مؤشر  ص = عنوان ص
*س  = عنوان س

حيث تستخدم كلمة "عنوان" من قبل لغة عمّوريا (عرب) للدلالة على عنوان موقع الذاكرة التي خُزِنَ داخلها المتغير، ويمكن استبدال كلمة "عنوان" بالرمز "!" زيادةً في الاختصار و مواءمة للمتقدمين في البرمجة.

*ص  = !ص

تعريف الماكرو ( البرامج الفرعية )

البرنامج الفرعي أو كما يسمى في الانجليزية (ماكرو)، يستخدم إذا كان هناك مجموعة من الأوامر تتكرر أكثر من مرة داخل برنامجنا، عندها نستطيع كتابة هذه الأوامر داخل برنامج فرعي ونقوم فقط باستدعاء اسم هذا البرنامج كلما لزم الأمر، طريقة تعريف البرنامج الفرعي كالتالي:

برنامج فرعي  <اسم البرنامج الفرعي> (مدخل1،مدخل2،...،مدخل ن)
    <مجموعة من الأوامر>
نهاية  <اسم البرنامج الفرعي>

ويمكن حذف كلمة "برنامج" زيادةً في الاختصار، و أيضاً حذف المدخلات إذا لم نكن نريد إعطاء مدخلات لبرنامجنا الفرعي.

أمثلة:

برنامج فرعي نجوم
    اطبع("*********************")
نهاية نجوم

فرعي الأصغر(س،ص)
    إذا كانت (س < ص) نفذ
        الأصغر  = س
    وغير ذلك نفذ
​       الأصغر  = ص
    نهاية إذا
نهاية الأصغر

تعريف التوابع ( الوظائف )

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

يمكن تخيل التابع بأنه مصنع ما، حيث يوجد للمصنع مدخلات ومخرجات، فمثلاً مصنع البسكويت يدخل له: الطحين ، الماء ، الحليب ، السكر، ... إلى آخره. ويقوم بإخراج البسكويت المغلف بأشكال وأصناف متعددة.

تتيح لغة عمّوريا (عرب)، توابع متعددة المدخلات ومتعددة المخرجات، وبذلك تتفوق على الكثير من لغات البرمجة مثل السي والباسكال والبيسك التي لا تسمح إلا بمخرج واحد للتابع. يمكن تعريف التابع في لغة عمّوريا (عرب) كالتالي:

تابع  <اسم التابع>
    المدخلات  (نوع1 مدخل1،نوع2 مدخل2، ... ،نوع ن مدخل ن)
    المخرجات  (نوع1 مخرج1،نوع2 مخرج2، ... ،نوع ن مخرج ن)
    <مجموعة  من الأوامر>
    مخرج1 = <قيمة الإخراج النهائية1>
    مخرج2 = <قيمة الإخراج النهائية2>
\# ...
مخرج ن = <قيمة الإخراج النهائية ن>
نهاية  <اسم التابع>

مثال:

تابع  إيجاد_الأكبر
    المدخلات  (صحيح س، صحيح  ص، صحيح ع)
    المخرجات  (صحيح الأكبر)

    إذا كان( س > ص و  س > ع) نفذ
        الأكبر  = س
    وغير ذلك إذا كان( ص > ع) نفذ
        الأكبر  = ص
    وغير ذلك نفذ
        الأكبر  = ع
    نهاية إذا

نهاية  إيجاد_الأكبر

التعليقات

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

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

تتيح لغة عمّوريا (عرب) طريقتين لكتابة التعليقات: التعليقات التي تكون على سطر واحد، والتعليقات التي تحتاج أكثر من سطر.

للتعليقات التي تكون على سطر واحد نبدأ السطر بإشارة "#"، وللتعليقات التي تحتاج أكثر من سطر، نبدأ التعليق بالرمزين"#(" وننهي التعليق بالرمزين ")#".

\# هذا تعليق
\#( هذا التعليق مستمر
  على أكثر من سطر
)#

تعريف البُنَى

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

يمكن أن نعرف البنية في لغة عمّوريا (عرب) كالتالي:

بنية  <اسم البنية>
   <متغيرات  أبسط داخل البنية>
   \# ...
نهاية  <اسم البنية>

مثال:

بنية  موظف
   نصّي الاسم
   نصّي اسم_العائلة
   صحيح العمر
   عشري الراتب
   حرفي الدرجة
نهاية  موظف

الآن أصبحت كلمة موظف نوع جديد من أنواع المتغيرات، نستطيع تعريف متغيرات جديدة من نوع موظف بطرق تعريف المتغيرات العادية.

عرّف  سمير كمتغير موظف
عرّف
    موسى: موظف
نهاية  عرّف

موظف  محمد

ونستطيع إسناد قيم للبنى بإسناد قيم لمتغيراتها البسيطة كالتالي:

سمير.العمر  = 27
سمير.الاسم  = "سمير"
سمير.اسم_العائلة  = "الناجح"
سمير.الراتب  = 604,34
سمير.الدرجة  = "ج"

جملة مع

عند استخدام البنية في المثال السابق لاحظنا أنه كان علينا كتابة اسم البنية "سمير" في كل مرة أردنا فيها إسناد قيمة لأحد المتغيرات البسيطة داخل البنية، جملة مع تغنينا عن ذلك كالتالي:

مع  سمير نفذ
    .العمر = 27
    .الاسم = "سمير"
    .اسم_العائلة = "الناجح"
    .الراتب = "604,34"
    .الدرجة = "ج"
نهاية مع

تعريف التعدادات

التعداد هو تقريباً تعريف لثوابت، حيث نعرّف عدة أسماء، يقوم التعداد بإعطائها أرقاماً متسلسلة، تبدأ من الصفر ما لم يحدد المبرمج بدايةً أخرى، يفيد ذلك بأن يمكـِّننا من الاستعاضة عن بعض الأرقام بأسماء مباشرة، تصبح معها البرمجة أسهل و أبسط و أقرب للفهم. يمكن تعريف التعداد كالتالي:

تعداد  <اسم التعداد>
<اسم1> = <قيمة1>
<اسم2> = <قيمة2>
...
<اسم ن> = <قيمة ن>
نهاية  <اسم التعداد>

مثال:

تعداد  أولويات
    الزوجة   \# سوف تأخذ الزوجة بشكل افتراضي الرقم صفر
    الأم      \# الأم = 1
    الوطن   \# الوطن = 2
    الدين    \# الدين = 3
نهاية  أولويات

ويمكن تغيير تسلسل العد في المنتصف كما نشاء

تعداد  حيوانات
    دجاجة        \# دجاجة = 0
    زرافة        \# زرافة = 1
    غزال = -6    \# غزال = -6 
    أسد          \# أسد = -5
نهاية  حيوانات

تعريف الأصناف

الوراثة

إعادة تعيين التوابع

المكتبات

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

بعض المكتبات الموجودة في لغة عمّوريا (عرب): الرياضيات، النوافذ، الادخال_و_الاخراج، والعديد أيضاً.

يمكن تضمين المكتبة داخل البرنامج كما يلي:

استخدم مكتبة  <اسم المكتبة>

ويمكن الاستغناء عن كلمة مكتبة زيادة في الاختصار.

مثال:

استخدم مكتبة  الرياضيات
استخدم مكتبة  الوقت
استخدم  النوافذ