التدوينات، والتحسين التدريجي والمنطق
| English | العربية |
|---|---|
| notation/nəʊˈteɪʃn/ | الترميز |
| structured English/ˈstrʌktʃəd ˈɪŋɡlɪʃ/ | اللغة الإنجليزية المنسقة |
| pseudocode/ˈsuːdəʊkəʊd/ | الكود الوهمي |
| flowchart/ˈfləʊtʃɑːt/ | مخطط انسيابي |
| stepwise refinement/ˈstepwaɪz rɪˈfaɪnmənt/ | التدريج المتدرج |
| logic statement/ˈlɒdʒɪk ˈsteɪtmənt/ | عبارة منطقية |
| Boolean/ˈbuːlɪən/ | Boolean |
| precedence/ˈpresɪdəns/ | أولوية |
| De Morgan's law/də ˈmɔːɡənz lɔː/ | قانون دي مورغان |
كانت الخوارزمية الأولى بلا لغة تُكتب بها
- في عام 1843، نشرت آدا لوفليس الخطوات لحساب أعداد بيرنولي على الآلة التحليلية لبابيج، وهي آلة لم تُبنى قط.
- لم تكن هناك لغة برمجة، فكتبت الخوارزمية كجدول رقمي من العمليات: ترميز خاص بها.
- ما تزال كل خوارزمية تبدأ بهذه الطريقة. تكتبها بترميز ما، وتحقق منها، ثم فقط تحولها إلى كود.
- هذه الدرس عن الترميزات الثلاثة التي يستخدمها الامتحان، وكيفية الانتقال بينها، وكيفية كتابة الشروط بداخلها.
ثلاث ترميزات
- الإنجليزية المنظمة: جمل عادية، مسندة، مع بعض الكلمات الثابتة مثل
IF،FOR EACH،REPEAT. جيدة لمخطط أولي. - الكود الوهمي: ترميز الكلمات المفتاحية (
IF … ENDIF،WHILE … ENDWHILE،FOR … NEXT)، الأقرب للكود الحقيقي ومُقيَّم وفقاً لدليل كامبريدج. - المخطط الانسيابي: رسم بياني لأشكال قياسية. مستطيل دائري الزوايا لـ
START/STOP، متوازي أضلاع للمدخلات والمخرجات، مستطيل للعملية، معين للقرار، أسهم للانسياب.

مخطط انسيابي لحساب متوسط قائمة من الأرقام، مرسوم بالأشكال القياسية
في المخطط الانسيابي، أي شكل يمثل قراراً؟
المعين قرار؛ مستطيل دائري الزوايا = بداية/نهاية، متوازي أضلاع = إدخال/إخراج، مستطيل = عملية.
طابق كل شكل من أشكال المخطط الانسيابي مع معناه.
متوازي أضلاع = I/O، مستطيل = عملية، مستطيل دائري الزوايا = بداية/نهاية، معين = قرار.
طابق كل تدوين مع وصفه.
الثلاثة يصفون نفس الخوارزمية على مسافات مختلفة عن الكود.
مثال محلول: من الإنجليزية المنظمة إلى الكود الوهمي
- الإنجليزية المنظمة: اجعل المجموع يساوي صفراً. لكل عدد من N عدد، أضفه إلى المجموع. اقسم المجموع على N وأخرج النتيجة.
- كل جملة تصبح بناءً واحداً: تعيין، حلقة
FORمع تعيין بداخلها، ثم تعيין وإخراج.
Total <- 0
FOR Index <- 1 TO N
Total <- Total + Number[Index]
NEXT Index
Average <- Total / N
OUTPUT Average
- ترتيب الجمل هو ترتيب الجمل البرمجية. لا يُضاف شيء ولا يُستبعد شيء.
في خوارزمية المتوسط، حلقة FOR التي تجمع كل رقم في المجموع هي مثال على بناء ____.
تكرار كتلة لكل رقم هو تكرار. الإسناد داخلها يخزن المجموع المتراكم.
مثال محلول: من الكود الوهمي إلى المخطط الانسيابي
- خذ نفس الخوارزمية.
STARTيوضع في مستطيل دائري الزوايا، وTotal ← 0وIndex ← 1في مربعات. - حلقة
FORتصبح معيناً يسألIndex <= N?. مخرج نعم يؤدي إلى المستطيلTotal ← Total + Number[Index]، ثمIndex ← Index + 1، وسهم يعود لأعلى إلى المعين. - مخرج لا يستمر نحو
Average ← Total / N، متوازي أضلاع للإخراج، وSTOP. - ضع تسمية على كل مخرجين لكل معيّن. المعيّن الذي يحتوي على مخرج واحد غير مُسمّى ليس قرارًا.
التحسين التدريجي
- التحسين التدريجي يعني كتابة خوارزمية كمخطط قصير، ثم توسيع كل خطوة إلى خطوات فرعية أكثر تفصيلاً، وتكرار ذلك حتى يمكن برمجة كل خطوة مباشرة.
- يحافظ كل مستوى على هيكل المستوى الأعلى ويضيف تفاصيل. لا يتم التخلي عن المخطط: بل يصبح هو هيكل البرنامج.
- يتوقف التصميم عندما تكون الخطوة عبارة عن سطر واحد من الكود الوهمي أو وحدة برمجية لديك بالفعل.

يتوسع التحسين التدريجي في كل خطوة حتى يمكن برمجتها
التنقيح التدريجي هو تقنية:
تقوم بتنقيح المخطط العام مستوى تلو الآخر، بإضافة التفاصيل مع الحفاظ على البنية.
مثال محلول: ثلاث مستويات
- المستوى 1: معالجة نتائج الامتحان.
- المستوى 2: إدخال كل درجة. حساب المتوسط. عدّ عدد الطلاب الذين اجتازوا. إخراج التقرير.
- المستوى 3، بتفصيل "عدّ عدد الطلاب الذين اجتازوا":
Passes ← 0، ثمFORلكل درجة،IF Mark >= 40 THEN Passes ← Passes + 1. - عند طلب "وصف التحسين التدريجي"، قدم الأفكار الثلاث: ابدأ بمخطط، وسّع كل خطوة إلى خطوات أصغر، وتوقف عندما يمكن برمجة كل خطوة.
التحسين التدريجي: من المخطط إلى الكود
انزل عبر المستويات. تبدأ بالمهمة الكاملة في سطر واحد وتستمر في توسيع كل خطوة إلى أجزاء أصغر — حتى تصبح كل خطوة بسيطة بما يكفي للكتابة البرمجية مباشرة.
في التنقيح التدريجي، يحل كل مستوى جديد محل المستوى الذي فوقه، لذا يتم التخلي عن المخطط الأصلي.
يحافظ كل مستوى على بنية المستوى الذي فوقه ويضيف تفاصيل. يصبح المخطط هو الشكل النهائي للبرنامج.
العبارات المنطقية
- عبارة منطقية هي شرط بولياني: إما
TRUEأوFALSE، وهي تتحكم فيIF، أوWHILE، أوUNTIL. - تُبنى من مقارنات (
=،<>،<،>،<=،>=) تربطهاAND، وOR، وNOT. Mark >= 0 AND Mark <= 100صحيحة فقط للدرجات في النطاق.Age < 12 OR Age >= 65صحيحة للأطفال والمتقاعدين.

المقارنات المرتبطة بـ AND وOR وNOT تشكل شرطاً واحداً
الأولوية والأقواس
- تُطبق العمليات按照 ترتيب ثابت من الأولوية:
NOTأولاً، ثمAND، ثمOR. - لذا
A OR B AND CتعنيA OR (B AND C)، وليس(A OR B) AND C. معA = TRUE،B = FALSE،C = FALSEالأول هوTRUEوالثاني هوFALSE. - استخدم الأقواس.annotations يخلط الشرط بين
ANDوOR. لا تكلف شيئاً وتزيل الغموض.
رتب مشغلات المنطق حسب الأولوية، من الأعلى (يتم تقييمه أولاً) إلى الأدنى.
NOT يرتبط بأقوى، ثم AND، ثم OR — استخدم الأقواس عند الشك.
بدون أقواس، ماذا يعني A OR B AND C؟
AND له أولوية أعلى من OR، لذا يتم تقييمه أولاً. ضع الشرط بين أقواس anyway، حتى لا يضطر أحد للذاكرة.
قوانين دي مورغان
- قانون دي مورغان:
NOT (A AND B)هو نفسه(NOT A) OR (NOT B)، وNOT (A OR B)هو نفسه(NOT A) AND (NOT B). - بالكلمات: "not (registered and paid)" تعني "not registered, or not paid".
- استخدمه لتبسيط شرط، أو للتحقق منه: اختر قيمًا لـ
AوB، احسب كلا الطرفين، ويجب أن يتفقان في كل حالة.
بحسب قانون دي مورغان، NOT (A AND B) هي نفسها (NOT A) OR (NOT B).
NOT تتوزع على القوس وتقلب AND↔OR؛ وبالمثل NOT (A OR B) = (NOT A) AND (NOT B).
مثال محلول: شرط من الكلمات
- القاعدة: يجوز للطالب حضور الامتحان إذا كان مسجلاً و قد دفع either fee or holds a bursary، ولكن لا إذا تم إيقافه.
- سمِّ المتغيرات البوليانية:
Registered،Paid،Bursary،Suspended. - العبارة:
Registered AND (Paid OR Bursary) AND NOT Suspended. - الأقواس حول
Paid OR Bursaryضرورية. بدونها، ترتبطANDأولاً وسيحصل طالب يحمل منح الدراسية لكن غير مسجل على الدخول.
أي الشروط تعادل NOT (Registered AND Paid)؟ حدد كل ما ينطبق.
يحول دي مورغان NOT الخاص بـ AND إلى OR الخاص بالـ NOTs. نسخة AND صارمة جداً: طالب مسجل لكنه لم يدفع يجب أن يجعل الشرط الأصلي TRUE، وتجعل نسخة AND FALSE.
علامات ضائعة
a = 1 OR 2ليس شرطاً. اكتبa = 1 OR a = 2: يجب أن يكون كل طرف منORمقارنة كاملة.NOTتنطبق فقط على ما يليها.NOT A AND Bتعني(NOT A) AND B.- يحتاج المعيّن إلى مخرجين مُسمَّيين، والحلقة تحتاج سهماً يعود للأعلى. المخطط الانسيابي بدون سهم عائد ليس حلقة.
- الإنجليزية المهيكلة لا تزال دقيقة. "تعامل مع الدرجات" ليست خطوة؛ "أضف الدرجة إلى المجموع" هي.
لفحص ما إذا كان a يساوي 1 أو 2، الشرط الصحيح هو:
يجب أن يكون كل طرف من طرفي OR مقارنة كاملة: a = 1 OR a = 2. كتابة a = 1 OR 2 خطأ شائع.
لقد فهمت الأمر
- ثلاث رموز لخوارزمية واحدة: الإنجليزية المهيكلة، الكود الوهمي، المخطط الانسيابي (معيّن = قرار، سهم عائد = حلقة)
- التحسين التدريجي: مخطط ← وسّع كل خطوة ← توقف عندما يمكن برمجة الخطوة
- العبارة المنطقية هي شرط بولياني؛ الأولوية NOT → AND → OR، لذا ضع أقواساً لأي شيء يخلط بينها
- دي مورغان:
NOT (A AND B)=NOT A OR NOT B؛NOT (A OR B)=NOT A AND NOT B