المقدمة

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

الخوارزميات Algorithms

في عالم الكمبيوتر، نطلق على اي مجموعة من الاوامر التي تقوم بحل مشكلة ما بطريقة معينة ب”الخوارزمية” Algorithm وبالتالي يتكون البرنامج من مجموعة من الخوارزميات والاوامر. اصل تسمية الخوارزميات ينسب الى العالم المسلم الخوارمي والمقصود بالخوارزمية هي اي محموعة من العمليات الحسابية والمنطقية التي تهدف لحل مشكلة ما، وتستخدم الخوارزمية ثلاث تراكيب اساسية لحل اي مشكلة :

  • التسلسل: ويعني ان الاوامر يتم تنفيذها بتسلسل، اي تنفيذ الامر الاول ثم الثاني وهكذا مثلا قم بشراء المنتج أ ثم المنتج ب وهكذا
  • الاختيار/القرار/التفرع: وهي العملية التي ينقسم فيها مسار حل المشكلة الى اكثر من فرع بناءا على شرط ما، مثلا “اذا كان المبلغ اكبر من 5 ننفذ امر ما (نشتري منه 2) واذا كان اصغر من او يساوي 5 ننفذ امر اخر(نستري منه 3).
  • التكرار/ الدوران: وهي العملية التي تمكننا من تكرار مجموعة من الاوامر عدد من المرات او بناءا على شرط ما. مثلا اذا حددنا قائمة مشتريات بحيث لا تتعدي تكلفتها 300. سنجد اننا عند اتخاذ قرار الشراء نقوم بمجموعة من الخطوات المتكررة. اختيار سلعة –> اضافة سعرها الى ما تم اختياره مسبقا –> حساب المجموع –> هل المجموع قد تخطى 300؟ نعم: توقف عن الشراء، لا: اذهب الى السلعة الاخرى وكرر عملية الشراء.

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

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

مثال

لنتخيل اننا نكتب برنامج هو سيستم مطعم يبيع البيتزا 🍕🍕 والمطلوب مننا الان الجزء الخاص بتجميع الطلب واستنتاج الحساب الاجمالي:

  1. نأخذ الطلب من العميل(قد يحتوى الطلب على اكثر من بند) .
  2. نختار بند من القائمة.
  3. نتأكد ان نوع البيتزا موجود عندنا.
  4. اذا كان موجودا نضف سعره الى مجموع الحساب ونذهب الى البند التالي.
  5. ان لم يكن موجودا نذهب الى البند التالي.
  6. نكرر العملية لكل البنود في الطلب.
  7. نرجع مجموع الحساب الى العميل لكي يدخل المبلغ المطلوب.

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

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

المفاهيم الاساسية Basic Concepts للغات البرمجة

لغات البرمجة المختلفة هي طريقة نستطيع ان نخبر الكمبيوتر بها كيفية تنفيذ الاوامر المطلوبة (كتابة الخوارزمية). وتتشابه الكثير من لغات البرمجة في قواعد الكتابة syntax لذا من الجمل المشهورة في عالم البرمجة “ان لغات البرمجة المختلفة ما هي الا مجرد نكهات مختلفة”.

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

تقوم لغات البرمجة بتنفيذ الاوامر بشكل متسلسل (sequential) وتتيح لنا 4 انواع من التراكيب /البنيات الاساسية Building Blocks التي بواسطتها نستطيع ان نبني اي برنامج كيفما نريد.

التسلسل Sequence

تقوم لغات البرمجة بتنفيذ الاوامر بشكل تسلسلي Sequential اي انه كما في المثال السابق (مثال البيتزا) سينفذ الكمبيوتر الامر الاول و بعد الانتهاء منه سيقوم بتنفيذ الثاني وهكذا.

البنى الاساسية (Building Blocks)

هناك 4 انواع من الاوامر/البنيات الاساسية التي تتضمنها كل اللغات تقريبا والتي اذا فهمناها وعرفنا كيف نكتبها بلغات البرمجة سنعرف ان نبني اي برنامج نريده وهم كالاتي:

  1. المتغيرات (Variables)
  2. التكرار/الدوران (Iteration/Looping)
  3. التفرع / الشرط (Branching/Conditions)
  4. الدوال/الاجراءات (Functions/Procedures)
التسلسل و التكرار/الدوران و الشرط/التفرع هي تركيبات الخوارزمية.

ما هي المتغيرات Variables؟

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

هل تتذكر الطلب نفسه؟ يحتاج البرنامج متغير اخر لكي يحتفظ بالطلب( مثلا “بيتزا مارجريتا” او “بيتزا سوبر سوبريم”)، لكن هل تلاحظ ان ذلك المتغير ليس رقما كسعر البيتزا و المبلغ الاجمالي؟ اذن انه يحتاج نوع اخر او كما يسمى نوع البيانات Data Type.

ما هو انواع البيانات (Data Types)؟

اغلب اللغات تدعم عدة انواع من البيانات: الارقام (Numbers)،النصوص (String)، التاريخ (Dates) ، وهناك انواع اكثر تعقيدا (Complex Data Types) و تلك التي تتشكل من اكثر من نوع من الانواع السابقة او تتشكل من سلسلة من احد تلك الانواع كالطلبفي مثال البيتزا: [بيتزا مارجريتا، بيتزا سوبر سوبريم،…..].

ما هو التكرار/الدوران (Looping)؟

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

ما هو الشرط/التفرع (Conditions / Branching)؟

دائما ما نحتاج ان نقوم ببعض العمليات المنطقية في كل برنامج وتستطيع ان تحدد ذلك بسهولة، فعندما تقول: لو/اذا (if) …. قم بعمل امر ما وان لم (else) قم بشئ اخر. اعلم انك عند جملة شرط!! مثل سؤالنا في مثال البيتزا اذا كان نوع البيتزا موجود.

ما هي الدوال/الاجراءات (Functions/Procedures)؟

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


guest
0 تعليقات
Inline Feedbacks
اظهر كل التعليقات