
نظرية فيثاغورس (برمجة)

قم بالترقية للحصول على المزيد من المحتوى
ما هو السودوكود؟
هل تعرف نظرية فيثاغورس؟ إذا فإنك تعرف كيفية حساب أطوال أضلاع المثلث قائم الزاوية. لكن هذا يتطلب الكثير من الحساب... وربما تحتاج لتكرار تلك الخطوات مرارا وتكرارا. تخيل برنامجا يمَكِّنك من إدخال الضلعين القصيرين - الساقين - والحصول مباشرة على الضلع الطويل - الوتر! سنقوم الآن بكتابة هذا البرنامج تحديدا. عندما نقوم بالبرمجة، فأول ما نقوم به هو تقسيم المشكلة إلى خطوات صغيرة. يجب أن تكون كل خطوة واضحة، بحيث يمكنك إصدارها كأمر لرجل آلي لا يعرف أي شيء عن أي شيء، بحيث يمكنه اتباعها بشكل صحيح. إذا، كيف يمكننا أن نشرح لرجل آلي كيفية حساب طول الوتر باستخدام طولَي الساقين؟ يحتاج الرجل الآلي لبعض البيانات قبل أن يبدأ بالحساب. لذا نكتب: "Note leg1 Note leg2" حصل الرجل الآلي الآن على المعلومات التي يريدها. ما الذي عليه فعله الآن إذا؟ حاول كتابة المزيد من التعليمات بنفسك! ربما تكون كتبت شيئا كهذا؟ حسنا ، يبدو جيدا، لكن يمكن أن يحتاج الرجل الآلي إلى تعليمات أكثر وضوحا لهذه الحسابات؟ لنقوم بتوضيح الأمر قليلا. تخيل أنك تطلب من الرجل الآلي استخدام آلة حاسبة لك. كيف يمكن صياغة التعليمات لذلك؟ ها هي. لا يمكن حدوث خطأ في فهم التعليمات الآن، صحيح؟ ما كتبناه هنا هي بالكاد شفرة، لكنها ليست شفرة برمجة مضبوطة. نسميها بالـ "سودوكود" الخاص بالبرنامج. سودوكود - هل هي مثل الخوارزمية التي تستخدم لحل نظرية فيثاغورس؟ حسنا ، لا في الواقع. إنه جزء الشفرة الذي يقوم بحل المهمة بنفسه. هذه هي الخوارزمية. ربما تكون معتادا على رؤيتها هكذا؟ ما هي مهمة بقية الشفرة؟ إنها أيضا نوع من الخوارزمية، لكن ليس لها علاقة بعملية الحساب نفسها. ما تفعله هو أخذ قيم طولَي ساقي المثلث، وإخراج النتيجة. هذه الصفوف في المنتصف تقوم بحل المهمة بنفسها. يمكننا استخدام هذه الصفوف في الكثير من الحالات لحساب الوتر لأي مثلث قائم الزاوية. لديك الآن كل المتطلبات. حان وقت إخراج أداة البرمجة، وكتابة هذا البرنامج، ومعرفة ما إن كان يعمل! هل يبدو الأمر صعبا جدا؟ يمكننا توضيحه أكثر من خلال رسم مخطط. نرسم صندوقا لكل خطوة. نُكَون متغيرا. نسميه a، ونعطيه قيمة الساق الأولى. ثم نكرر ذلك للساق الأخرى، ونعطى هذا المتغير اسم 'b'. قم بحساب مربع a، ثم قم بإعطاء تلك القيمة لمتغير جديد يسمى a2. ثم افعل نفس الشيء لـ b، ثم قم بإعطاء تلك القيمة لمتغير جديد يسمى b2. ثم كَوِّن المتغير c2، وأعطه قيمة a2 زائد b2. وأخيرا كَوِّن المتغير c وأعطه قيمة: الجذر التربيعي لـ c2! أظهر النتيجة. الناتج الذي يُخرجه البرنامج هو قيمة المتغير c، وهي ما يساوي طول الوتر! حان وقت البدء في البرمجة!