دروس برمجة للمبتدئين جدا

دروس مبسطة جدا للذين لا يعرفون البرمجة
يمكن الإستفادة منها في تعريف البرمجة لآبائنا عندما يسألونك ما تعمل

الدرس الأول

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

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

الوصفة :

أعصر البرتقال
أعصر الليمون
أكسر بيضة
أضف طحين
أضف سكر
أخلط
أضف طحين
أضف سكر
أخلط
أضف طحين
أضف سكر
أخلط
أخبز 7 دقائق

هذه الوصفة طويلة لذلك أنت كتبتها للخادم ، هذه الوصفة هي الشكل البدائي للبرمجة

ما هي البرمجة ؟؟؟

هي تلك الوصفة ذاتها لكن بمفهومها الآلي ، أي يجب أن تفترض أن الخادم غبي جداً لدرجة عدم التمييز ، أي [آلة] لا يتدخل بذكائه الخاص ليتجاوز أخطائك البديهية .

هل يوجد أخطاء في الوصفة السابقة ؟

نعم ، و لكن لن نشرحها الآن ، طبعا لا نقصد الأخطاء البشرية كالطعم الكريه لهذه الطبخة .

تعريفات

لنراجع الوصفة من نواحي قواعد اللغة النحوية :
في السطر الأول كلمتين أعصر و برتقال البشر و الآلة سوف يميزان بين الأنثيين

أعصر فعل أمر Statement

برتقال مفعول به منصـ…الخ لكن في مفهوم البرمجة نسميه معطى [بارامتر] Parameter

وهذا ينطبق على كامل الوصفة إذ تختلف الأوامر و المعطيات ، لكن لاحظ أن لكل أمر نوع معين من المعطيات مثلا لا يمكن أن أقول

أعصر بيضة

قف ؟؟؟ أنا قلت أن الآلة لا تمييز لها هل أناقض نفسي ؟
لا لكن لكل لغة برمجة لها بعض المميزات ، أي بعضها يميز و الآخر لا ، و كلما أرتقت اللغة ارتقى تمييزها و رفضها لأمور أكثر ، مما يسهل على المبرمج اكتشاف أخطائه .

في السطر الأخير

اخبز سبع دقائق

اخبز هو أمر
سبع معطى

ما هذه الدقائق ؟ هي تمييز منصوب ! أو وحدة المعطى ! أقصد لا يوجد في مفهوم البرمجة هذا النوع من المصطلحات و يكتفي بالأمر و المعطى مثل
أخبز 7
و يجب أن يعرف المبرمج أن وحدة المعطى مسبقا أنها الدقائق لأمر أخبز ، يعني لكل أمر وحدته الخاصة .

إذاً الخلاصة

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

هذه ليست برمجة ؟

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

أعصر البرتقال
أعصر الليمون
أكسر بيضة
أضف طحين
أضف سكر
أخلط
كرر 2 مرا
أخبز 7

لاحظ كلمة كرر ، يوجد لدينا خطأ و مشكلة :
ألم نقل أن نستغني عن الوحدات و كرر 2 مرات يجب أن تكون

كرر 2

الآن ما الذي سيكرره ، هل سيكرر الأمر الذي يليه عملية أخبز 7 مرتين أم الأمر الذي يسبقه أخلط ، لن أجيب على هذا السؤال لأنه فعلا صعب .

لمتابعة موضوع التكرارات يمكنك الانتقال إلى الدرس الرابع :التكرارات
أو يمكنك الانتقال إلى الدرس الثاني : المتحولات

هنا بدأنا نفهم ماذا تعني البرمجة

الدرس الثاني

المتغيرات أو المتحولات

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

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

يقف الخادم أمام الباب يبدأ بالعد :
عند دخول الطالب الأول يكتب الخادم على اللوح رقم 1 ،
عند دخول الطالب الثاني يكتب الخادم على اللوح رقم 2 ؟؟؟؟ من أين له بالرقم 2 ؟ ، الرقم أتى من جمع الرقم السابق على اللوح + الرقم الجديد وهو طالب واحد 1 الناتج 2 .

لنستمر بالوصفة

إذا دخل طالب قم بجمع رقم واحد مع القيمة المسجلة على اللوح ثم سجل القيمة على اللوح .

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

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

إذا دخل طالب قم بجمع رقم واحد مع القيمة المسجلة على اللوح ثم سجل القيمة على اللوح
إذا خرج طالب قم بجمع رقم واحد مع القيمة المسجلة على اللوح ثم سجل القيمة على اللوح

لم نفرق بين اللوحين ، سوف نصحح .

إذا دخل طالب قم بجمع رقم واحد مع القيمة المسجلة على اللوح1 ثم سجل القيمة على اللوح1
إذا خرج طالب قم بجمع رقم واحد مع القيمة المسجلة على اللوح2 ثم سجل القيمة على اللوح2 .

نستطيع أن نعطي أسماء لا أرقام للوحين ، مثل : لوح_الدخول و لوح_الخروج

لاحظ أن اسم اللوح يجب أن يكون كلمة واحدة لذلك لصقنا الكلمتين معا بواسطة الشحطة لوح الدخول

الخلاصة

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

لمتابعة موضوع التكرارات يمكنك الانتقال إلى الدرس الرابع :التكرارت
أو يمكنك الإنتقال إلى الدرس الثالث : الشروط

الدرس الثالث

الشروط و التحكم

بدون الشرط لا يمكن البرمجة، فكل شيء يعتمد على الشرط، فما هو الشرط؟

إذا قلت لخادمك :

– اذهب إلى السوق إذا وجدت بطاطا فاشتري كيلو منها.

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

هناك بعض الشروط لا يمكن الاستعاضة عنها، مثلا:

– اذهب إلى السوق، إذا وجدت عمر فاشتري بطاطا.

لماذا؟؟ لأنني أعرف أن عمر سيأتي إلي وهو يحب البطاطا
لاحظ هنا لا يمكن أن أعتمد على البديهة و أستغني عن الشرط.

لنعقد الأمور أكثر

– اذهب إلى السوق، إذا وجدت عمر فاشتري بطاطا و خبزا و عد للبيت.

لنفرض أن عمر كان موجود: سيشتري بطاطا و خبز و يعود للبيت.

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

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

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

الصيغة : أمر الشرط  جواب الشرط

أمر الشرط  : إذا وجدت عمر

جواب الشرط : اشتري بطاطا

و نعيد الشرح السابق على أساس هذه الصيغة

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

توضيح أكثر:  إما نحن نقصد

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

– اذهب إلى السوق، إذا وجدت عمر فاشتري بطاطا و خبزا و عد للبيت.

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

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

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

– اذهب إلى السوق، إذا وجدت عمر فـ { اشتري بطاطا و خبزا } و عد للبيت.
أو
– اذهب إلى السوق، إذا وجدت عمر فـ { اشتري بطاطا } و خبزا و عد للبيت.

صيغة أخرى

– اذهب إلى السوق، إذا وجدت عمر فـ  البداية اشتري بطاطا و خبزا النهاية و عد للبيت.
أو
– اذهب إلى السوق، إذا وجدت عمر فـ البداية اشتري بطاطا النهاية و خبزا و عد للبيت.

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

الدرس الرابع

التكرارات

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

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

طبعا لنفرض أن التلميذ هو الخادم الغبي الذي ذكرناه سابقا سوف تكون الأوامر على الشكل التالي:

– كرر ما يلي مائة مرة أكتب أنا آسف

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

لو أن الأمر كان

– كرر ما يلي كتابة مئة مرة أنا آسف فلن يفهم هذا الخادم، فالكتابة معطياتها أنا آسف و كرر معطياتها مئة مرة، أي دخل الأمر كتابة بين أمر التكرار و معطياته.

ملخص : أمر التكرار    معطيات التكرار   كتلة التكرار

أمر التكرار : كرر مايلي

معطيات التكرار : مائة مرة

كتلة التكرار : أكتب أنا آسف

مثال آخر لنفهم التعامل مع الخادم الغبي، إن كان الأمر

– كرر ما يلي مائة مرة أكتب أنا آسف و اذهب إلى البيت

من المؤكد أن الخادم الغبي سوف يكتب أنا آسف و يذهب إلى البيت ثم يكتب أنا آسف و يذهب إلى البيت و هذا، أي أنه اعتبر الذهاب للبيت ضمن كتلة التكرار، لذل لزم علينا أن نبين له أكثر بأن نضع ما سيكَرر (كتلة التكرار) بين قوسين أو عبارات تشير إلى بداية كتلة التكرار و نهايتها
الصيغة : كرر ما يلي مائة مرة البداية أكتب أنا آسف النهاية اذهب إلى البيت.
أو بطريقة أخرى : كرر ما يلي { أكتب أنا آسف } اذهب إلى البيت

يعتبر مابين قوسين عبارة عن كتلة أوامر راجع الدرس الثالث عن الكتل

أضف تعليق