الخوارزميات والكود الوهمي
| English | العربية |
|---|---|
| algorithm/ˈælɡərɪθəm/ | خوارزمية |
| sequence/ˈsiːkwəns/ | تسلسل |
| deterministic/dɪˌtɜːmɪˈnɪstɪk/ | حتمي |
| identifier table/aɪˈdentɪfaɪə ˈteɪbl/ | جدول المعرفات |
| variable/ˈveərɪəbl/ | حدث |
| data type/ˈdeɪtə taɪp/ | نوع البيانات |
| pseudocode/ˈsuːdəʊkəʊd/ | الكود الوهمي |
| assignment/əˈsaɪnmənt/ | التعيين (assignment) |
| loop/luːp/ | متغير |
| count-controlled loop/kaʊnt kənˈtrəʊld luːp/ | حلقة محكومة بعدد العدادات |
| pre-condition loop/priː kənˈdɪʃn luːp/ | حلقة الشرط المسبق |
| post-condition loop/pəʊst kənˈdɪʃn luːp/ | حلقة الشرط اللاحق |
| iteration/ˌɪtəˈreɪʃn/ | التكرار |
| selection/sɪˈlekʃn/ | اختيار |
| flowchart/ˈfləʊtʃɑːt/ | مخطط انسيابي |
| stepwise refinement/ˈstepwaɪz rɪˈfaɪnmənt/ | التدريج المتدرج |
أغلى شرطة في التاريخ
- في 22 يوليو 1962، تم تفجير صاروخ مارينر 1 المتجه نحو كوكب الزهرة بعد 293 ثانية من الإطلاق.
- السبب كان شريط مفقود فوق رمز في معادلات التوجيه. اتبع الحاسوب الخطوات المكتوبة حرفيًا، والخطوات المكتوبة كانت خاطئة.
- الحاسوب لا ever يملأ ما كنت تقصده. يجب أن يكون لكل خطوة تعطيها له معنى واحد فقط.
- لهذا السبب هذه الدرس是关于 كتابة خطوات يمكن للآلة اتباعها: الخوارزميات.
ما هي الخوارزمية
- الخوارزمية هي حل لمشكلة مُعبّر عنه كـ تسلسل من الخطوات المحددة.
- كل خطوة غير غامضة (معنى واحد)، حتمية (نفس الإدخال → نفس المخرجات)، منتهية (الخطوات تنتهي) وفعالة (يمكن تنفيذ كل خطوة فعليًا).
- تقول ماذا تفعل، مستقلة عن أي لغة برمجة، وكلها تتبع إدخال → معالجة → مخرجات.

كل خوارزمية لها نفس الشكل: إدخال، معالجة، مخرجات
الخوارزمية "حتمية". هذا يعني:
الحتمية = نفس المدخلات → نفس المخرجات في كل مرة. (المنتهية = الخطوات تنتهي؛ غير الغامضة = معنى واحد لكل خطوة.)
مثال محلول: جدول المعرفات
- قبل كتابة الكود، ادرج كل قطعة بيانات في جدول معرفات: اسمه المتغير، نوع البيانات ووصف.
- برنامج مخزون متجر يخزن
"Fruit"،20/02/2025،12.67وTRUE. يطلب الامتحان اسماً ونوعاً لكل واحد. Category : STRING(فئة من المخزون)،DateSold : DATE(متى تم بيعه)،ItemCost : REAL(التكلفة)،InStock : BOOLEAN(هل هو متوفر في المخزون؟).- علامة واحدة لكل صف للاسم والنوع، لذا اكتب النوع تمامًا كما يفعل دليل الشبه الكود:
INTEGER،REAL،STRING،CHAR،BOOLEAN،DATE.

*يحدد جدول المعرفات أسماء جميع قطع البيانات قبل كتابة الكود
في جدول المعرّفات، نوع البيانات للقيمة 12.67 (تكلفة) هو ____.
الرقم الذي يحتوي على جزء عشري هو حقيقي. INTEGER للأعداد الصحيحة، STRING للنصوص، BOOLEAN لـ TRUE/FALSE وDATE للتاريخ.
البناءات الثلاث
IF … THEN … ELSE … ENDIF
- التعيين يخزن قيمة بسهم،
Total ← Total + Value؛=للمقارنة.DIVهو القسمة الصحيحة وMODالباقي، لذا17 MOD 5 = 2.
INPUT Age # sequence
IF Age >= 18 THEN
# selection
ENDIF
OUTPUT "Adult"
ELSE
OUTPUT "Minor"
ENDIF
FOR Count <- 1 TO 10 # iteration
OUTPUT Count
NEXT Count

*الكتل البنائية الثلاثة لأي خوارزمية
الاختيار: اتبع فروع IF / ELSE
اسحب الدرجة ولاحظ أي فرع يتم تنفيذه. يختبر الاختيار كل شرط على حدة ويأخذ الأول الذي يكون صحيحاً — هكذا تعمل بنية IF … ELSE IF … ELSE.
طابق كل بناء من البناءات البرمجية الثلاثة بما يقوم به.
كل خوارزمية تُبنى من ثلاثة بناءات فقط — التسلسل، والاختيار، والتكرار.
في هذا الكود الوهمي، أي رمز يعني الإسناد (تخزين قيمة)؟
الإسناد يستخدم ← (مثلاً x ← 5)؛ = مخصص للمقارنة.
ما هي قيمة 17 MOD 5؟
MOD يعطي الباقي: $17 = 3 \times 5 + 2$، لذا 17 MOD 5 = 2. (17 DIV 5 = 3.)
أي حلقة تكرار؟
FOR … NEXTعندما تعرف عدد المرات: حلقة تحكم بعدد العدادات.WHILE … ENDWHILEيختشر الشرط قبل كل مرور، لذا قد يعمل الجسم صفراً من المرات: حلقة شرط مسبق.REPEAT … UNTILيختشر بعد كل مرور، لذا يعمل الجسم دائماً مرة واحدة على الأقل: حلقة شرط لاحق. التحقق من صحة الإدخال هو الحالة الكلاسيكية.- إجابة "صف بناء التكرار" تسمى الحلقة، تقول أين يتم اختبار الشرط، وتعطي النتيجة.

*حلقة WHILE تختشر قبل تشغيل الجسم؛ حلقة REPEAT … UNTIL تختبر بعده
كيف تختلف حلقة WHILE عن حلقة REPEAT...UNTIL؟
WHILE تفحص أولاً (قد تعمل 0 مرات)؛ REPEAT...UNTIL تفحص بعد، لذا تعمل دائماً مرة واحدة على الأقل.
حلقة FOR محكومة بعدد العداد (تكرر عدداً ثابتاً من المرات)، بينما حلقة WHILE محكومة بشرط (تكرر حتى يتغير شرط).
استخدم FOR عندما تعرف عدد الدورات؛ استخدم WHILE/REPEAT عندما تتكرر حتى يصبح شيء ما صحيحاً.
مثال محلول: من الكلمات إلى الرمز الوهمي
- المهمة: إدخال 100 قيمة صحيحة، جمع الموجبة فقط، وإخراج المجموع الكلي.
- خطط للبيانات أولاً:
Count،TotalوNextNumber، جميعهاINTEGER. ثم البناءات الثلاث تقوم بالباقي.
DECLARE Count, Total, NextNumber : INTEGER
Total <- 0
FOR Count <- 1 TO 100
INPUT NextNumber
IF NextNumber > 0 THEN
Total <- Total + NextNumber
ENDIF
NEXT Count
OUTPUT Total
- السؤال اللاحق يطلب منك تحديد البناءات: التكرار (حلقة
FORتكرر الإدخال 100 مرة)، الاختيار (IFيقرر ما إذا كانت القيمة ستُضاف) والتسلسل (الجمل تعمل بالتتابع).
اكتشاف البناءات في استخلاص
- سؤال مفضل يعرض خمسة استخلاصات من الرمز الوهمي ويطلب منك وضع علامة على أي منها يستخدم التعيين، الاختيار، التكرار.
Result ← CalculateTotal()هو تعيين.WHILE IsClosedهو تكرار.REPEAT … INPUT Value … UNTIL Sales[4] > Valueهو تكرار و تعيين (INPUTيخزن قيمة). IF Sales[Current] <= 150 THEN Discount ← TRUE ENDIF- انظر إلى كل سطر من الاستخلاص، ليس فقط الأول. قد يحتاج الصف إلى علامتين.
أي بناءات يستخرجها هذا الجزء؟ REPEAT … INPUT Value … UNTIL Total > 100. حدد جميع الخيارات المطبقة.
REPEAT … UNTIL هو التكرار، وINPUT Value يخزن قيمة، وهو ما يُحسب كتعيين. لا يوجد IF أو CASE، لذا لا يوجد اختيار — شرط UNTIL يتحكم في الحلقة ولا يختار بين الفروع.
المخططات التدفق
- المخطط الانسيابي يُوثّق نفس الخوارزمية كصورة. الأشكال البيضاوية هي
STARTوEND، المستطيلات هي العمليات، المعينات هيINPUT/OUTPUT، والمعين هو القرار. - المعين هو مكان يحدث فيه الاختيار، والخط الانسيابي الذي يعود لأعلى في المخطط يُعدّ حلقة تكرار.
- يسأل الامتحان بالطريقتين: الكود الوهمي من مخطط انسيابي، ومخطط انسيابي من كود وهمي أو إنجليزية منظمة. يجب أن يرتبط كل رمز ترسمه بسطر واحد من الكود الوهمي.

يرتبط كل رمز في المخطط الانسيابي بنوع واحد من جمل الكود الوهمي
في المخطط الانسيابي، ماذا يمثل المعين؟
المعينات هي حيث يحدث الاختيار، والمعين الذي يعود خط انسيابه لأعلى في المخطط هو اختبار حلقة تكرار. المستطيلات عمليات، متوازي الأضلاع إدخال/إخراج، بيض START و END.
مثال محلول: لعبة التخمين
- يختار البرنامج عدداً صحيحاً عشوائياً من 1 إلى 100، ثم يطلب التخمينات حتى يفوز المستخدم. يجب على المستخدم التخمين مرة واحدة على الأقل، لذا فإن الحلقة هي
REPEAT … UNTIL.
DECLARE Target, Guess : INTEGER
Target <- INT(RAND(100)) + 1
REPEAT
INPUT Guess
IF Guess < Target THEN
OUTPUT "Too low"
ELSE
IF Guess > Target THEN
OUTPUT "Too high"
ENDIF
ENDIF
UNTIL Guess = Target
OUTPUT "Correct"
- اتبع المخطط الانسيابي: معين واحد لاختبار الحلقة، اثنان للتلميحات، وكل خط انسيابي ينتهي بـ
INPUT GuessأوEND.

لعبة التخمين كمخطط انسيابي: تعود الحلقة إلى الإدخال حتى يتطابق التخمين
لماذا REPEAT … UNTIL هو الحلقة الصحيحة للعبة التخمين؟
حلقة بعد الشرط تعمل جسمها مرة واحدة قبل الاختبار، وهو ما يناسب لعبة تحتاج تخميناً واحداً على الأقل. حلقة WHILE ستحتاج تخميناً قبل الحلقة فقط لتكون هناك شيء لاختباره.
التحسين التدريجي
- التحسين التدريجي يعني البدء بمخطط أولي وتوسيع كل خطوة إلى خطوات أكثر تفصيلاً، مراراً وتكراراً، حتى يمكن كتابة كل خطوة مباشرة في شكل كود وهمي.
- "معالجة طلب" → "استلام العناصر"، "حساب الإجمالي"، "استلام الدفع" → "حساب الإجمالي" تصبح "لكل عنصر، أضف السعر × الكمية؛ طبق أي خصم".
- كل مستوى هو تحسين للمستوى الذي فوقه، والمستويات النهائية مجتمعة تُشكل التصميم. "وصف التحسين التدريجي" يتطلب المخطط الأولي، والتوسيع، وقاعدة التوقف.

حسّن كل خطوة حتى تتمكن من برمجتها مباشرة
رتب مراحل التحسين التدريجي.
ابدأ بالمخطط ثم طوّر مستوى تلو الآخر؛ توقف عندما تكون الخطوة سطراً واحداً من الكود الوهمي.
العبارات المنطقية
- أجزاء الحل مُعرَّفة بواسطة عبارات منطقية: شروط مبنية من مقارنات (
=،<>،<،>،<=،>=) موصولة بـAND،ORوNOT. - علامة صالحة:
Mark >= 0 AND Mark <= 100. يُطبق الخصم إذا كان الزبون عضواً أو أنفق أكثر من 50:IsMember OR Total > 50. NOT (Mark < 40)تعني نفس شيءMark >= 40. اكتب العبارة، ثم اختبرها بقيمة على كل جانب من الحدود.

المقارنات الموصولة بـ AND و OR و NOT تبني الشروط التي تحتاجها الخوارزمية
NOT (Mark < 40) صحيحة تماماً لنفس قيم Mark كما Mark >= 40.
نفي "أقل من 40" يعطي "40 أو أكثر". اختبر الحد: Mark = 40 تجعل Mark < 40 خاطئة، لذا نفيها صحيح، و40 >= 40 أيضاً صحيح.
علامات ضائعة
←يعيّن و=يقارن.IF Total = 0اختبار؛Total = 0على سطر مستقل لا يحصل على أي درجة.- كل بناء له قافله:
ENDIF،ENDWHILE،UNTIL،NEXT،ENDCASE. القافلة الناقصة تكسر علامة البنية. - أعلِن قبل الاستخدام، وابدأ المجموع المتراكم بـ
0. WHILEقد لا يعمل أبداً، وREPEATيعمل دائماً مرة واحدة. اختر الحلقة التي تتوافق مع المهمة، واذكر السبب إذا طُلب ذلك.
لقد فهمت الأمر
- خطوات الخوارزمية غير غامضة، حتمية، محدودة، فعالة؛ خطّط البيانات في جدول المعرِّفات
- ثلاثة بناءات: التتابع، الاختيار (
IF/CASE)، التكرار (FOR/WHILE/REPEAT)؛WHILEيختبر قبل، وREPEATبعد - المخطط الانسيابي والكود الوهمي يصفان نفس الخوارزمية؛ التحسين التدريجي يوسع مخططاً أولياً حتى يمكن برمجته
- الشروط هي عبارات منطقية: مقارنات موصولة بـ
AND،OR،NOT