تجاوز إلى المحتوى الرئيسي
تطبيق TawjihiAIادرس وتدرّب من هاتفكحمّل التطبيق

مقدمة في لغات البرمجة

الخوارزميات والبرمجة · المهارات الرقمية

آخر تحديث:

محتويات الدرس (١٢)

شرح الدرس

تُعرّف لغات البرمجة، وبيان تصنيفاتها (لغات البرمجة عالية المستوى، لغات البرمجة مُنخفضة المستوى، لغات البرمجة الكتلية، لغات البرمجة النصية)، والمقارنة بينها، فضلاً عن تعرّف العلاقة بين الخوارزميات والبرمجة، وتمثيل البرامج بالخوارزميات ومُخطّطات سير العمليات.

مُنتجات التعلّم

إعداد عرض تقديمي باستخدام google slides يتضمن شرحاً للمشكلة وأسباب اختيارها والحل المقترح/ اللعبة والهدف منها، ووصف لسيناريو اللعبة وقواعد اللعبة منذ بدايتها حتى انتهائها، واعداد الخوارزمية ومخطط سير العمل (flowcharts) لتصميم لعبة التخمين باستخدام احدى الأدوات الرقمية مثل draw.io، ضمن سياق تصميم لعبة تخمين الأرقام باستخدام برمجية بايثون.

الخوارزميات (Algorithms)، الخوارزمية شبه الرمزية (Pseudocode)، مُخطّطات سير العمل (Flowcharts)، لغة الآلة (Machine Language)، لغة التجميع (Assembly Language)، الكتل الرسومية (Graphical Blocks)، المُترجم (Compiler)، المُفسّر (Interpreter).

نتاجات التعلّم

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

    تعَلّمتُ في صفوف سابقة كيف أُطوّر برامج باستخدام برمجية سكراتش (Scratch) كما تعلمت تطوير مواقع الويب باستخدام لغة توصيف النص (HTML). - بالتعاون مع أفراد مجموعتي - أراجع ما تعلّمتهُ عن هاتين البرمجيتين، ثمّ أُقارن بينهما من حيث الهدف، والاستخدام، والواجهة، وبيئة التطوير، وسهولة التعلّم، ثمّ أُدوّن ما أتوصل إليه في ملف مُعالج النصوص (Word).

لغة البرمجة

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

الشكل (1-1): تصنيف لغات البرمجة تبعًا لقربها من لغات الإنسان.
الشكل (1-1): تصنيف لغات البرمجة تبعًا لقربها من لغات الإنسان.

إضاءة

برنامج الحاسوب هو مجموعة من الأوامر التي تُكتب بإحدى لغات البرمجة؛ بهدف حَلّ مشكلة ما، أو أداء مهمة مُحدّدة باستخدام جهاز الحاسوب.

أولاً: لغات البرمجة مُنخفضة المستوى :

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

  1. لغة الآلة (Machine Language): لغة برمجة تحتوي على أوامر وتعليمات يُمكن لجهاز الحاسوب فهمها مباشرة ومعالجتها، خلافاً للإنسان الذي يصعب عليه فهمها. تمتاز هذه اللغة بأنّها سريعة مقارنةً بلغات البرمجة عالية المستوى.
  2. لغة التجميع (Assembly Language): لغة تقوم على استخدام برنامج خاص يُسمّى المجمع (Assembler)، ويعمل على تحويل الأوامر المكتوبة إلى لغة الآلة التي يفهمها جهاز الحاسوب. تمتاز هذه اللغة بأنّها أسهل من لغة الآلة؛ نظراً إلى احتوائها على بعض مفردات اللغة الإنجليزية؛ ما يُسهّل قراءة برامجها وفهمها. غير أنّ تنفيذ البرامج المكتوبة بلغة التجميع يكون أبطأ مقارنةً بلغة الآلة.

ثانياً: لغات البرمجة عالية المستوى :

تمتاز لغات البرمجة عالية المستوى بمواءمتها للغة التي يفهمها الإنسان؛ إذ تُستخدم في كتابة البرامج رموز ومفردات قريبة من تلك المُتداولة في اللغة الإنجليزية. وقد سُمّيت هذه اللغات بهذا الاسم لقربها من لغة الإنسان وبعدها عن اللغة التي يفهمها جهاز الحاسوب؛ أي لغة الآلة. ومن ثمّ، فهي لا تعتمد على أنواع أجهزة الحاسوب في أداء وظائفها، وإنّما صُمّمت على نحو يجعلها موائمة لجميع أجهزة الحاسوب، بغضّ النظر عن نوع هذه الأجهزة وأنظمة تشغيلها. من الأمثلة على لغات البرمجة عالية المستوى: لغة بايثون (Python)، ولغة جافا (Java)، ولغة سي ++ (++C)، ولغة سي شارب (#C). كما يُمكن تصنيف لغات البرمجة وفقاً لطريقة البرمجة إلى نوعين آخرين، هما:

  1. لغات البرمجة الكتلية (Block-Based Programming Languages): لغات تُستخدم فيها الكتل الرسومية (Graphical Blocks) لتمثيل أجزاء البرامج بدلاً من النصوص، مثل لغة البرمجة سكراتش (Scratch).
  2. لغات البرمجة النصية (Text-Based Programming Languages): لغات تُستخدم فيها النصوص لتمثيل أجزاء البرامج بدلاً من الكتل الرسومية، مثل لغة جافا سكريب (Java Script).

المُترجم والمُفسّر

المُترجم والمُفسّر هما برنامجان يعملان على تحويل البرنامج المكتوب بلغة برمجة عالية المستوى إلى أوامر يفهمها جهاز الحاسوب، ويُسارع إلى تنفيذها.

  • المُترجم (Compiler): تتمثّل وظيفة المُترجم في الفحص الكامل لأي برنامج كُتب بلغة البرمجة عالية المستوى (البرنامج المصدري)، ثمّ ترجمته إلى لغة الآلة (البرنامج الهدف)؛ لكي تتمكّن وحدة معالجة البيانات من تنفيذه. ويُمكن للمُترجم اكتشاف بعض أنواع الأخطاء في البرنامج أثناء مرحلة الترجمة، وقبل البدء بتنفيذه، أنظر الشكل (1-2).
الشكل (1-2): مبدأ عمل المُترجِم.
الشكل (1-2): مبدأ عمل المُترجِم.

(البرنامج المصدري) (High-Level Language Source Code) -> (المُترجم Compiler) -> (البرنامج الهدف) (Low-Level Target Code) (أخطاء الترجمة Compilation Errors) الشكل (1-2): مبدأ عمل المُترجم.

  • المُفسّر (Interpreter): يعمل المُفسّر على تحويل كل جزء من أجزاء البرنامج المكتوب بلغة البرمجة عالية المستوى إلى لغة الآلة، ثمّ تنفيذ هذه الأجزاء أمراً بأمر؛ فعند وجود أمر خطأ تتوقف عملية تحويل الأجزاء المُتبقّية. غير أنّ المُفسّر لا يعمل أحياناً على تحويل البرنامج إلى لغة الآلة بصورة مباشرة، وإنّما يقوم بتحويل البرنامج إلى لغة وسيطة أولاً، ثمّ يُحوّل كل جزء من أجزاء البرنامج الناتج إلى لغة الآلة، أنظر الشكل (1-3).
الشكل (1-3): مبدأ عمل المُفسِّر.
الشكل (1-3): مبدأ عمل المُفسِّر.

(البرنامج المصدري) -> (المُفسّر) -> (البرنامج الهدف)

(جلب التعليمة التالية)

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

المواطنة الرقمية

  • أحرص دائماً على استخدام البرمجيات المُرخّصة قانونياً، واحترام حقوق المُلّكية الفكرية للمُطوّرين والشركات.
  • أتجنّب استخدام البرمجيات المُقرصنة أو البرمجيات غير المُرخّصة؛ لأنّها قد تكون غير آمنة، وتُعرّض جهازي ومعلوماتي الشخصية للخطر.

مشروع (1): تصميم برنامج وإعداده لإنشاء لعبة تخمين الأرقام باستخدام لغة بايثون (Python) / المهمة

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

  • التعريف للمشكلة/ فكرة اللعبة التي تم اختيارها وتوضيح الهدف منها، وتحديد الجمهور المستهدف.

تقديم فكرة المشروع: برمجة لعبة التخمين "نجوم وأقمار". سنعمل على إعداد عرض تقديمي باستخدام google slides يتضمن شرحاً للمشكلة وأسباب اختيارها والحل المقترح/ اللعبة والهدف منها، ووصف لسيناريو اللعبة وقواعد اللعبة منذ بدايتها حتى انتهائها، وإعداد الخوارزمية ومخطط سير العمليات (flowcharts) لتصميم لعبة التخمين باستخدام إحدى الأدوات الرقمية مثل draw.io. كما تعلمنا في السنوات السابقة. بعد الانتهاء من هذه الوحدة ستكون قد أنهيت برمجة لعبة بسيطة اسمها "نجوم وأقمار"، وهي من ألعاب التخمين. فكرة اللعبة قائمة على إضمار عدد مكون من 4 أرقام مختلفة يتم اختيار عدد مكون من عدة منازل (عادةً 4 منازل) بشكل عشوائي. ومحاولة اللاعب تخمين العدد المضمر بشكل صحيح فيقوم بإدخال عدد مكون من نفس عدد المنازل الموجود في العدد المضمر، يتم تحقيق هذا الهدف من خلال تقديم مجموعة من التخمينات والحصول على تلميحات من عدد النجوم والأقمار بناءً على مدى صحة التخمين. ويشارك باللعبة لاعبين، يظهر لهم في البداية قائمة تتضمن تعليمات اللعبة وقواعدها، وبدء اللعبة والخروج، تبدأ اللعبة باختيار اللاعب خيار ابدأ اللعبة، حيث يتم الترحيب باللاعبين والطلب منهم التعريف بأنفسهم عبر إدخال أسمائهم، يتم ضمر عدد عشوائي من أربع منازل من قبل البرمجية ومن ثم يقوم اللاعب الأول بتوقع رقم ثم تلميح ثم توقع رقم آخر بناءً على التلميح وهكذا حتى يستطيع معرفة الرقم أو ينتهي العدد الأقصى من المحاولات المسموحة.

وفي ما يأتي توضيح لطريقة الحصول على النجوم والأقمار:

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

أُقيّم تعلّمي

المعرفة: أُوظّف في هذا الدرس ما تعلّمتهُ من معارف في الإجابة عن السؤالين الآتيين: السؤال الأوّل: أُوضّح المقصود بكلّ ممّا يأتي:

  1. لغة البرمجة.
  2. لغة الآلة.
  3. البرنامج.

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

المهارات: أُوظّف مهارات التفكير الناقد والتواصل الرقمي والبحث الرقمي في الإجابة عن الأسئلة الآتية: السؤال الأوّل: أُميّز بين لغات البرمجة الكتلية ولغات البرمجة النصية من حيث آليّة تمثيل الأوامر، ثمّ أذكر مثالاً على كلّ منهما.

السؤال الثاني: لماذا يُعدّ المُترجم أسرع تنفيذاً من المُفسّر؟ السؤال الثالث: ما التحدّيات التي قد يواجهها المُبرمج عند استخدام لغات البرمجة النصية بدلاً من لغات البرمجة الكتلية؟

السؤال الرابع: بناءً على دراستي موضوع (المُفسّر والمُترجم)، أيّهما أفضل لتطوير برامج كبيرة ومُعقدة؟ أُبرّر إجابتي.

القِيَم والاتجاهات:

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

تعريفات أساسية

لغة البرمجة (Programming Language)

مجموعة من الأوامر والتعليمات التي تُستخدم في كتابة البرامج والتطبيقات وفق قواعد مُحدّدة

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

مجموعة من الأوامر التي تُكتب بإحدى لغات البرمجة؛ بهدف حَلّ مشكلة ما، أو أداء مهمة مُحدّدة باستخدام جهاز الحاسوب

لغات البرمجة منخفضة المستوى (Low-Level Languages)

تمتاز لغات البرمجة مُنخفضة المستوى بقربها من لغة الآلة، وبعدها عن لغة الإنسان ولذلك سميت بلغات البرمجة مُنخفضة المستوى

لغة الآلة (Machine Language)

لغة برمجة تحتوي على أوامر وتعليمات يُمكن لجهاز الحاسوب فهمها مباشرة ومعالجتها، خلافاً للإنسان الذي يصعب عليه فهمها

لغة التجميع (Assembly Language)

لغة تقوم على استخدام برنامج خاص يُسمّى المجمع (Assembler)، ويعمل على تحويل الأوامر المكتوبة إلى لغة الآلة التي يفهمها جهاز الحاسوب

لغات البرمجة عالية المستوى (High-Level Languages)

تمتاز لغات البرمجة عالية المستوى بمواءمتها للغة التي يفهمها الإنسان؛ إذ تُستخدم في كتابة البرامج رموز ومفردات قريبة من تلك المُتداولة في اللغة الإنجليزية

لغات البرمجة الكتلية (Block-Based Programming Languages)

لغات تُستخدم فيها الكتل الرسومية (Graphical Blocks) لتمثيل أجزاء البرامج بدلاً من النصوص

لغات البرمجة النصية (Text-Based Programming Languages)

لغات تُستخدم فيها النصوص لتمثيل أجزاء البرامج بدلاً من الكتل الرسومية

المترجم (Compiler)

تتمثّل وظيفة المُترجم في الفحص الكامل لأي برنامج كُتب بلغة البرمجة عالية المستوى (البرنامج المصدري)، ثمّ ترجمته إلى لغة الآلة (البرنامج الهدف)؛ لكي تتمكّن وحدة معالجة البيانات من تنفيذه

المفسر (Interpreter)

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

معاينة موضوع «مقدمة في لغات البرمجة» من وحدة «الخوارزميات والبرمجة» في مادة المهارات الرقمية. أقسام الشرح: ١٢، التعريفات: ١٠.

المصدر: المركز الوطني لتطوير المناهج، مقدمة في لغات البرمجة (ص ١٠–١٧)

موضوعات أخرى في الوحدة

تابع الدراسة