أخبار الموقع

هياكل التحكم في لغة Pascal (If, Case, For, While, Repeat) — الثانية ثانوي (شعبة تقني رياضي) — الإعلام الآلي

📘 بطاقة الدرس

المادة الإعلام الآلي
المستوى الثانية ثانوي (شعبة تقني رياضي)
الوحدة الخوارزميات والبرمجة — هياكل التحكم في Pascal
المدة الزمنية حصتان (ساعتان)

🎯 أهداف التعلم

  • التعرف على مفهوم هياكل التحكم في البرمجة
  • التفريق بين البنية الشرطية والبنية التكرارية
  • استخدام If و Case لاتخاذ القرارات
  • استخدام For و While و Repeat لإنشاء الحلقات التكرارية
  • حل تمارين بكالوريا باستخدام هياكل التحكم

🔍 تمهيد

في الدرس السابق تعلمنا كتابة برامج بسيطة بلغة Pascal. لكن ماذا لو أردنا اتخاذ قرارات بناءً على قيم المدخلات؟ أو تكرار نفس العملية عدة مرات؟ هنا تأتي أهمية هياكل التحكم (Control Structures) التي تسمح للبرنامج باتخاذ مسارات مختلفة حسب الشروط وتكرار تنفيذ الأوامر.

🔀 أولاً: البنية الشرطية (Conditional Structures)

1.1. التعليمات الشرطية البسيطة: If … Then

If (شرط) Then
  أمر;
  
// أو بصيغة الكتلة:
If (شرط) Then
Begin
  أمر1;
  أمر2;
End;

📝 مثال 1: تحديد أكبر عدد

Program MaxTwo;
Var
  a, b: Integer;
Begin
  Write('أدخل العدد الأول: '); ReadLn(a);
  Write('أدخل العدد الثاني: '); ReadLn(b);
  If a > b Then
    WriteLn('العدد الأكبر هو: ', a)
  Else
    WriteLn('العدد الأكبر هو: ', b);
  ReadLn;
End.

1.2. If … Then … Else

If (شرط) Then
  أمر1
Else
  أمر2;

📝 مثال 2: تحديد هل العدد زوجي أم فردي

Program EvenOdd;
Var
  n: Integer;
Begin
  Write('أدخل عدداً صحيحاً: '); ReadLn(n);
  If n Mod 2 = 0 Then
    WriteLn(n, ' عدد زوجي')
  Else
    WriteLn(n, ' عدد فردي');
  ReadLn;
End.

1.3. If المتداخلة (Nested If)

📝 مثال 3: تقدير المعدل

Program Grade;
Var
  moy: Real;
Begin
  Write('أدخل المعدل: '); ReadLn(moy);
  If moy >= 10 Then
    If moy >= 16 Then
      WriteLn('ممتاز')
    Else If moy >= 14 Then
      WriteLn('جيد جداً')
    Else If moy >= 12 Then
      WriteLn('جيد')
    Else
      WriteLn('مقبول')
  Else
    WriteLn('راسب');
  ReadLn;
End.

1.4. البنية الشرطية المتعددة: Case … Of

تستخدم عندما يكون لدينا عدة احتمالات لنفس المتغير:

Case (متغير) Of
  قيمة1: أمر1;
  قيمة2: أمر2;
  قيمة3, قيمة4: أمر3;
  Else أمر;
End;

📝 مثال 4: أيام الأسبوع

Program WeekDay;
Var
  day: Integer;
Begin
  Write('أدخل رقم اليوم (1-7): '); ReadLn(day);
  Case day Of
    1: WriteLn('السبت');
    2: WriteLn('الأحد');
    3: WriteLn('الإثنين');
    4: WriteLn('الثلاثاء');
    5: WriteLn('الأربعاء');
    6: WriteLn('الخميس');
    7: WriteLn('الجمعة');
    Else WriteLn('رقم غير صحيح');
  End;
  ReadLn;
End.

🔄 ثانياً: البنية التكرارية (Loop Structures)

2.1. الحلقة For (عندما نعرف عدد التكرارات)

// تصاعدي:
For i := قيمة_بداية To قيمة_نهاية Do
  أمر;

// تنازلي:
For i := قيمة_بداية DownTo قيمة_نهاية Do
  أمر;

📝 مثال 5: طباعة الأعداد من 1 إلى 10

Program CountUp;
Var
  i: Integer;
Begin
  For i := 1 To 10 Do
    WriteLn(i);
  ReadLn;
End.

📝 مثال 6: حساب مجموع الأعداد من 1 إلى N

Program SumN;
Var
  i, n, sum: Integer;
Begin
  Write('أدخل العدد N: '); ReadLn(n);
  sum := 0;
  For i := 1 To n Do
    sum := sum + i;
  WriteLn('مجموع الأعداد من 1 إلى ', n, ' = ', sum);
  ReadLn;
End.

2.2. الحلقة While (التكرار بشرط مقدم)

تكرّر طالما الشرط محقق. تُستخدم عندما لا نعرف عدد التكرارات مسبقاً.

While (شرط) Do
Begin
  أوامر;
End;

📝 مثال 7: قراءة أعداد حتى إدخال الصفر

Program ReadUntilZero;
Var
  x, sum: Integer;
Begin
  sum := 0;
  Write('أدخل عدداً (0 للخروج): '); ReadLn(x);
  While x <> 0 Do
  Begin
    sum := sum + x;
    Write('أدخل عدداً (0 للخروج): '); ReadLn(x);
  End;
  WriteLn('المجموع = ', sum);
  ReadLn;
End.

2.3. الحلقة Repeat … Until (التكرار بشرط مؤخر)

تنفّذ الأوامر مرة واحدة على الأقل ثم تكرّر حتى يتحقق الشرط.

Repeat
  أوامر;
Until (شرط);

📝 مثال 8: التحقق من إدخال صحيح (بين 0 و 20)

Program ValidInput;
Var
  n: Integer;
Begin
  Repeat
    Write('أدخل عدداً بين 0 و 20: '); ReadLn(n);
    If (n < 0) Or (n > 20) Then
      WriteLn('خطأ! حاول مرة أخرى.');
  Until (n >= 0) And (n <= 20);
  WriteLn('تم الإدخال الصحيح: ', n);
  ReadLn;
End.

📊 جدول مقارنة الحلقات التكرارية

البنية متى نستخدمها عدد التكرارات معروف مسبقاً؟ تتكرر 0 مرات على الأقل؟
For عند معرفة عدد التكرارات نعم لا
While عند عدم معرفة عدد التكرارات لا نعم (قد لا تنفذ أبداً)
Repeat عند عدم معرفة عدد التكرارات مع ضمان تنفيذ واحد على الأقل لا لا (تنفذ مرة واحدة على الأقل)

✏️ تمرين بكالوريا

(بكالوريا 2019 – تقني رياضي) اكتب برنامجاً بلغة Pascal يقرأ عدداً صحيحاً موجباً N ثم يقوم بحساب وعرض:

  1. مجموع الأعداد الزوجية من 1 إلى N
  2. عدد الأعداد الفردية من 1 إلى N
🟢 انقر هنا لرؤية الحل
Program Bac2019;
Var
  i, n, sumEven, countOdd: Integer;
Begin
  Repeat
    Write('أدخل عدداً موجباً: '); ReadLn(n);
    If n <= 0 Then WriteLn('خطأ! العدد يجب أن يكون موجباً.');
  Until n > 0;
  
  sumEven := 0;
  countOdd := 0;
  
  For i := 1 To n Do
  Begin
    If i Mod 2 = 0 Then
      sumEven := sumEven + i   // عدد زوجي → نجمعه
    Else
      countOdd := countOdd + 1; // عدد فردي → نعدّه
  End;
  
  WriteLn('مجموع الأعداد الزوجية من 1 إلى ', n, ' = ', sumEven);
  WriteLn('عدد الأعداد الفردية من 1 إلى ', n, ' = ', countOdd);
  ReadLn;
End.

✏️ تمرين إضافي

اكتب برنامجاً يقرأ 10 أعداد صحيحة ويحسب أكبر عدد وأصغر عدد والمعدل.

🟢 انقر هنا لرؤية الحل
Program MinMaxAvg;
Var
  i, x, min, max: Integer;
  sum: LongInt;
  avg: Real;
Begin
  sum := 0;
  Write('أدخل العدد 1: '); ReadLn(x);
  min := x; max := x; sum := x;
  
  For i := 2 To 10 Do
  Begin
    Write('أدخل العدد ', i, ': '); ReadLn(x);
    sum := sum + x;
    If x < min Then min := x;
    If x > max Then max := x;
  End;
  
  avg := sum / 10;
  WriteLn('أكبر عدد: ', max);
  WriteLn('أصغر عدد: ', min);
  WriteLn('المعدل: ', avg:0:2);
  ReadLn;
End.

📌 ملخص الدرس

  • هياكل التحكم تقسم إلى: شرطية (If, Case) وتكرارية (For, While, Repeat).
  • If ... Then ... Else لاتخاذ قرار بناءً على شرط.
  • Case ... Of للاختيار من بين عدة قيم محددة.
  • For للتكرار بعدد مرات معروف مسبقاً.
  • While للتكرار بشرط يُفحص قبل التنفيذ (قد لا يتكرر أبداً).
  • Repeat ... Until للتكرار بشرط يُفحص بعد التنفيذ (يتكرر مرة على الأقل).

📍 دروس مشابهة:

شاهد أيضا

النظافة والبيئة في الحي — التربية المدنية — السنة الثالثة ابتدائي — المنهاج الجزائري

[K] النظافة والبيئة في الحي المنهاج: الجزائري | المرحلة: ابتدائي [H] أهداف التعلم أن يدرك …

المستقيمات المتوازية والمستقيمات المتعامدة — الرياضيات — السنة الثالثة ابتدائي — المنهاج الجزائري

[K] المستقيمات المتوازية والمستقيمات المتعامدة المنهاج: الجزائري | المرحلة: ابتدائي [H] أهداف التعلم أن يتعرف …

آداب الطعام والشراب في الإسلام (للأطفال) — التربية الإسلامية — السنة الثانية ابتدائي — المنهاج الجزائري

[K] آداب الطعام والشراب في الإسلام (للأطفال) المنهاج: الجزائري | المرحلة: ابتدائي [H] أهداف التعلم …

المسكن (أنواع المساكن وأجزاء المنزل) — التربية المدنية — السنة الثانية ابتدائي — المنهاج الجزائري

[K] المسكن (أنواع المساكن وأجزاء المنزل) المنهاج: الجزائري | المرحلة: ابتدائي [H] أهداف التعلم أن …

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *