docs:البرمجة_للمبتدئين_باستخدام_كلمات

البرمجة للمبتدئين باستخدام "كلمات"

"كلمات" هي لغة برمجة عربية سهلة تعمل على معظم أنظمة التشغيل.

مقدمة

أصبح الناشئة اليوم *مستهلكين* بارعين للتقنية، يمضون أيامهم على هواتفهم الذكية أو حواسيبهم يلعبون بالألعاب بل ويتبارون أيهم يملك إصدارة أحدث أو عنده مهارة أكبر في الاستخدام.

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

وهنا نأتي إلى موضوعنا … البرمجة!

ما هو برنامج الحاسوب ؟

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

نتعامل مع ما يشبه برمجة الحاسوب كثيرا في حياتنا … تخيل أن تكتب لشخص آخر على ورقة مجموعة من الخطوات …

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

<note>ولدنا العزيز،
خرجنا أنا وأمك للتسوق. نرجو منك أن تفعل ما يلي،
أولا - أغلق الباب الخارجي ولا تفتح لأي شخص.
ثانيا - تأكد من تغيير ملابسك فور وصولك إلى البيت.
ثالثا - إذا كنت جائعا، قم بتسخين الطعام الموجود في الثلاجة وأكله.
رابعا - افتح جدولك الدراسي لليوم - مادةً مادةً - قم بالمراجعة و إنهاء الواجب المدرسي لكل مادة.
خامسا - إلى حين رجوعنا إلى البيت يمكنك أن تأخذ قيلولة إذا كنت نعسانا أو أن تلعب أو أن تشاهد التلفاز.
مع أطيب تحياتنا ومحبتنا لك
أبوك وأمك
</note> ما كتبناه هنا هو برنامج حقيقي، به مجموعة من الأوامر التي تم صياغتها على شكل خطوات لتحقيق غاية. كانت هنالك مقدمة للبرنامج لتهيئته للتنفيذ : التحية وذكر خروج الأب والأم وطلب تنفيذ الخطوات، ثم مجموعة الخطوات نفسها. فلنصنف أنواع أو أنماط الخطوات :
أ - القيام بتنفيذ أمر مباشر : اغلق الباب …، غير ملابسك …، سخن الطعام، خذ قيلولة ….
ب - شرط (إذا كان الحال كذا نفذ الأمر كذا) : إذا كنت جائعا قم بتسخين الطعام …
ج - تكرار مجموعة من الأوامر على قدر مجموعة من العناصر : لكل مادة من المواد الدراسية التي أخذتها اليوم ، قم بمراجعتها وعمل الواجب المنزلي. أو تكرار مجموعة من الأوامر إلى أن يتحقق شرط معين : إلى حين وصولنا إلى البيت قم بفعل كذا أو كذا.

وهكذا انتهى البرنامج.

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

تتميز فكرة البرمجة هنا أن مجموعة الخطوات تلك *مكتوبة* لكي يمكن تنفيذها من قبل طرف آخر بعيدا عمن كتبها.

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

  • قراءة ما يكتبه المستخدم على لوحة المفاتيح أو القراءة من ملف على وحدة التخزين أو من الشبكة.
  • القيام بعمليات معالجة للنصوص و حسابية و منطقية (تنفيذ مشروط).
  • إخراج النتائج على الشاشة أو على ملف.

… وهكذا.

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

فالحاسوب إذا خادم مطيع لا يعصيك ما أمرته ويفعل ما يؤمر … الحالة الوحيدة التي قد يعصي الحاسوب لك فيها أمرا هي أن تُقَصّر أنت في التعبير بشكل كاف أو دقيق عما تريد أو أن تعطيه معلومات خاطئة فيلتبس عليه الأمر. حينئذ فقط يستنكف البرنامج إما بإعطاء نتائج خاطئة أو بإعطاء رسالة خطأ أو بأن يُصاب بالشلل بل قد يصل به الحال إلى أن ينهار كلية.

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

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

نعرج هنا على مجموعة من الأمثلة (الدروس)، كل يدرس يعلمك إمكانات جديدة في البرمجة. عليك أولا أن تكتب الدرس و تجعله يعمل، ثم تُحلل ما كتبته و تقوم بتغيير بعض الأشياء لتتأكد من فهمك ومن ثم يمكنك عمل أي شيء آخر.

تجد في هذا الرابط مرجعا للغة "كلمات" و هنا دليلا سريعا للاستخدام.


مفاهيم أساسية

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

المُتغيرات

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

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

ملاحظة: عليك أن تعرف أن إشارة المساواة ”=“ المُستخدمة في التعامل مع المتغيرات تعني تعيين القيمة وهي ليست مساواة الرياضيات (التي تستخدمها في المعادلات ص = 6×س +3). فمثلا س = س + 4 تعني تعيين قيمة جديدة ل س بحيث تكون القيمة السابقة ل س زائد أربعة.

الاسم = "محمد عيسى" 
العمر = 13
المواد.الدراسية.المفضلة = ["اللغة العربية"، "الرياضيات"، "العلوم"]
برنامج.النشاطات.الإسبوعي = {"السبت" => "متابعة حلقة جديدة من دكتور هو"، "الأحد" => "المساعدة في تنظيف البيت"، "الإثنين" => "محطة اللعب"، "الثلاثاء" => "لعب كرة القدم مع أصدقائي"}

أحب.الرسم = خطأ
أحب.السباحة = صحيح

-- في العام القادم العمر = العمر + 1

التفاعل مع المُستخدم

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

جُملة شَرطيّة

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

اقرأ "أدخل لونك المفضل: "، اللون 
اللون = تقليم (اللون)

إذا اللون = "أزرق" :
حدد.لون.النص (4)
اطبع "الأزرق لَونٌ هادئ"
وإلا إذا اللون = "أحمر" :
حدد.لون.النص (8)
اطبع "الاحمر لونٌ حار"
وإلا :
اطبع "لم استطع التعرف على اللون"
تم

حلقة

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

لكل س من - 5 إلى 5 بخطوة 2.5 :
اطبع س
تابع

الإجابة = 0
كرر مادام الإجابة <> 64 :
اقرأ "كم حاصل ضرب ثمانية في ثمانية؟ "، # الإجابة
تابع
ملاحظة : الرمز ”<>“ المُستَخدم في الشرط يعني “لا يساوي”.

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

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


قدم.التحية ("سامي")

العلامات = [89، 90، 88، 96، 93، 85]

العلامة.النهائية = احسب.المتوسط (العلامات)
اطبع "العلامة النهائية هي : "، العلامة.النهائية

إجراء قدم.التحية (الاسم):
اطبع "أهلا بك يا "، الاسم
اطبع "عدد الحروف في اسمك هو: "، عدد (الاسم)
نهاية


دالة احسب.المتوسط (قيم):
المجموع = 0
العدد = 0
لكل قيمة في قيم :
المجموع = المجموع + قيمة
العدد = العدد + 1
تابع

ارجع ب: المجموع ÷ العدد
نهاية


الدرس الأول : برنامج يُرحب بالمستخدم ويسأله

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

اطبع "بسم الله الرحمن الرحيم" 
اطبع "سلامٌ على العالم!"
انتظر (1000)
امسح.الشاشة ()
اقرأ "ما اسمك؟ "، الاسم
اقرأ "ما عمرك؟ "، # العمر
حدد.لون.النص (12)
اطبع "أهلا بك يا "، الاسم، " لا بد أنك من مواليد "، 2013 - العمر
اطبع "مع السلامة :)"

الدرس الثاني : لعبة "اضمر رقما"

سيطلب البرنامج من المستخدم أن يضمر أي رقم وسيطلب منه إجراء بعض العمليات الحسابية عليه ليعرف كم يبقى معه بالضبط! :)

اطبع "مرحبا بك ..." 
علامة البداية
اقرأ "هل ترغب باللعب(نعم أم لا)؟ "، الجواب

إذا الجواب = "نعم" :
اطبع "اضمر رقما [إضغط إدخال عندما تجهز]"
اقرأ إدخال
اطبع " خذ من أبيكَ مِثلَهُ [إضغط إدخال]"
اقرأ إدخال
-- توليد رقم عشوائي زوجي من 2 إلى 22 رقم = عشوائي (10)× 2 + 2
اطبع "خذ مني "، رقم، " [إضغط إدخال]"
اقرأ إدخال
اطبع "ارمِ نصف ما معك في البحر [إضغط إدخال]"
اقرأ إدخال
اطبع "أَرجع إلى أبيك ما أخذتَه منه [إضغط إدخال]"
اقرأ إدخال
اطبع "سأحاول أن أعرف كم بقي معك ..."
انتظر (1000)
اطبع "ممم. بقي معك ... لقد عرفت ! "، رقم ÷ 2، " !!"
اذهب إلى البداية
وإلا :
اطبع "لا بأس. مع السلامة :)"
تم

<note> الرموز الخاصة :
عالي + خ = × … إشارة الضرب
عالي + هـ = ÷ … إشارة القسمة
عالي + ي = ] … فتحة مستطيل
عالي + ب = [ … إغلاق مستطيل
عالي + د = > … أكبر من
عالي + ج = < … أصغر من </note>

الدرس الثالث : لعبة "البلدان"

يسأل البرنامج المستخدم عن عواصم بلدان أو بلدان عواصم ليعطيك في النهاية علامتك من عشرة.

بلدان.عواصم = {"اليابان" => "طوكيو"، "بلجيكا" => "بروكسل"، "إيطاليا" => "روما"، "إسبانيا" => "مدريد"، "ألمانيا" => "برلين"، "عمان" => "مسقط"، "اليمن" => "صنعاء"، "المغرب" => "الرباط"، "تركيا" => "اسطنبول"، "موريتانيا" => "نواكشط"}
البلدان = مفاتيح (بلدان.عواصم)
العلامة = 0
اطبع "أهلا بك في لعبة البلدان"

لكل بلد في البلدان :
اطبع "سؤال: " ...
-- فلنسأل عشوائيا مرة عن دولة العاصمة ومرة عن عاصمة الدولة إذا عشوائي (2)> 0 :
اطبع "ما هي الدولة التي عاصمتها "، بلدان.عواصم [بلد]، " ؟ " ...
اقرأ الإجابة
الإجابة.الصحيحة = بلد
وإلا :
اطبع "ما هي عاصمة "، بلد، " ؟ " ...
اقرأ الإجابة
الإجابة.الصحيحة = بلدان.عواصم [بلد]
تم

الإجابة = تقليم (الإجابة)

إذا الإجابة = الإجابة.الصحيحة :
اطبع "أحسنت!"
العلامة = العلامة + 1
وإلا :
اطبع "خطأ! الإجابة الصحية كانت "، الإجابة.الصحيحة، " ولكن إجابتك كانت "، الإجابة، "."
تم

انتظر (1000)
امسح.الشاشة ()
تابع

اطبع "علامتك في اللعبة "، العلامة، " من 10!"

<note> الألوان :
</note>

الدرس الرابع : الرسم

بإمكانك رسم خطوط ودوائر ونقاط (تذكر أن نقطة 0،0 هي في أعلى يمين الشاشة وأن النقطة 800،600 (وهي أبعد نقطة يمكن رسمها) تقع في أسفل يسار الشاشة. ونرسم هنا بعض المعادلات الرياضية أيضا … مستخدمين درس الإزاحة والتكبير والتدوير الذي أخذته في مقرر الرياضيات.

لكل أ من 0 إلى 20 :
س1 = عشوائي (800)
ص1 = عشوائي (600)
س2 = عشوائي (800)
ص2 = عشوائي (600)
لون = عشوائي (15)
نصف.القطر = عشوائي (50)
ارسم.خط (س1، ص1)- (س2، ص2)، لون
ارسم.نقطة (س1 + 5، ص1 - 3)، لون
ارسم.مستطيل (س1، ص1)- (س2، ص2)، لون
ارسم.دائرة (س2، ص1)، نصف.القطر، لون، صحيح
تابع

انتظر (2000)
امسح.الشاشة ()
رسم.بياني.خلفية ()

لكل س من - 8 إلى 8 بخطوة 0.1 :
ص = 0.6 × س + 2
رسم.بياني.نقطة (س، ص)
ص = جذر (25 - س × س)
رسم.بياني.نقطة (س، ص)
ص = جا (س)

إذا س <> 0 :
ص = 1 ÷ س
رسم.بياني.نقطة (س، ص)
تم
تابع

إجراء رسم.بياني.نقطة (س، ص):
ارسم.دائرة (س × 50 + 400، ص × 50 + 300)، 2، 12، صحيح
نهاية

إجراء رسم.بياني.خلفية ():
لكل أ من 1 إلى 16 :
ارسم.خط (أ × 50، 0)- (أ × 50، 600)، 14
ارسم.خط (0، أ × 50)- (800، أ × 50)، 14
تابع

ارسم.خط (0، 300)- (800، 300)، 0
ارسم.خط (400، 0)- (400، 600)، 0
نهاية

نقاش

Mosaab Alzoubi, 2013/06/09 13:32

سأعمل إن شاء الله على تحزيمها لصالح أعجوبة ، بارك الله فيك شرح وافِ و ميسّر .

كفاح عيسى, 2013/06/09 15:06

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

مصعب الزعبي, 2013/06/09 17:11

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

ولا ضير في التّحزيم الدّيبياني : http://www.linuxac.org/forum/threads/63978

كفاح عيسى, 2013/06/10 10:55

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

Yazid Erman, 2013/06/10 15:15

عمل جبار، جزاك الله خيرا!

fqmycnmxf, 2015/04/24 17:49

البرمجة للمبتدئين باستخدام “كلمات” [أعجوبة] fqmycnmxf http://www.gb8r4ke078yrof757gk9nx336cx6337ss.org/ <a href=“http://www.gb8r4ke078yrof757gk9nx336cx6337ss.org/”>afqmycnmxf</a> [url=http://www.gb8r4ke078yrof757gk9nx336cx6337ss.org/]ufqmycnmxf[/url]

مجاهد, 2015/10/01 00:53

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

رنا ناصيف , 2016/05/24 21:12
السلام عليكم من بعد إذنكم ممكن برنامج كلمات ؟
u, 2016/07/02 17:59
<script>alert('hacked')</script>
أدخل تعليقك:
 
آخر تعديل:: 23 نيسان 2015 الساعة 00:19 (تحرير خارجي)