Module: الروتين الفرعي: الإجراءات والوظائف - 1


Problem

12/12

تغيير الحجج

Theory Click to read/hide

المشكلة: اكتب إجراءً يبادل قيم متغيرين.
خصوصيات هذه المهمة هي أننا بحاجة إلى التغييرات التي تم إجراؤها في الإجراء حتى تصبح معروفة للبرنامج المتصل.

دعنا نحاول كتابة الإجراء مثل هذا:

var x ، y: عدد صحيح ؛ <قبل> إجراء مبادلة (أ ، ب: عدد صحيح) ؛ // مع هذا الوصف لمعلمات الإجراء ، فار ج: عدد صحيح ؛ start // سوف تنسخ قيم الوسيطات (x و y) // المتغيرات a و b هي متغيرات مستقلة لا علاقة لها بـ x و y ج: = أ ؛ أ: = ب ؛ ب: = ج ؛ نهاية؛ يبدأ س: = 1 ؛ نبسب ؛ ص: = 2 ؛ المبادلة (س ، ص) ؛ // قيم المتغيرات x و y (الوسائط) يتم نسخها إلى المعلمات a و b writeln (& # 39 ؛ x = & # 39 ؛، x ، & # 39 ؛، y = & # 39 ؛، y) ؛ // س = 1 ، ص = 2 نهاية. إذا قمت بتشغيل هذا البرنامج ، يمكنك أن ترى أن قيم المتغيرين x و y لم تتغير. لكي تغير المعلمات قيم الوسيطات ، يجب عليك استخدام تمرير البيانات حسب المرجع. & nbsp؛ للقيام بذلك ، بعد اسم نوع البيانات في رأس الروتين الفرعي ، يجب عليك وضع الكلمة & nbsp؛ var & nbsp؛ <قبل> إجراء مبادلة ( var a، b: عدد صحيح) ؛ نبسب ؛ // الآن يحصل المتغيران a و b على عناوين المتغيرين x و y في الذاكرة فار ج: عدد صحيح ؛ نبسب ؛ يبدأ ج: = أ ؛ أ: = ب ؛ ب: = ج ؛ نهاية؛ الاستخدام: إذا قمت بتمرير وسيطة من خلال المرجع ، فيمكن أن يكون اسم المتغير فقط ( ليس رقمًا وليس تعبيرًا حسابيًا ) في هذا المكان عند استدعاء الإجراء! < ر />
لا تطلب إجراءً مثل هذا: <قبل> المبادلة (x، 4 ) ؛ Swap ( 5 + x ، y) ؛

Problem

اكتب إجراء يتبادل قيم متغيرين.

البحث عن الأخطاء وتصحيحها في هذا الإجراء