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


Problem

11/11

تغيير الحجج

Theory Click to read/hide

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

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

دعنا نحاول كتابة الإجراء مثل هذا: تبديل الفراغ الثابت (int a، int b) // مع هذا الوصف لمعلمات الإجراء ، {// سينسخ قيم الوسيطات (س وص) كثافة العمليات ج ؛ // المتغيرات a و b هي متغيرات مستقلة لا علاقة لها بـ x و y ج = أ ؛ أ = ب ؛ ب = ج ؛ } فراغ ثابت رئيسي () { int س = 1 ، ص = 2 ؛ المبادلة (س ، ص) ؛ // قيم المتغيرات x و y (الوسائط) يتم نسخها إلى المعلمات a و b ، x = 1 ، y = 2 } إذا قمت بتشغيل هذا البرنامج ، يمكنك أن ترى أن قيم متغيري x و y لم تتغير. لكي تغير المعلمات قيم الوسيطات ، يجب عليك استخدام البيانات المارة حسب المرجع. & nbsp ؛ للقيام بذلك ، قبل اسم نوع البيانات في رأس الروتين الفرعي ، يجب عليك كتابة المرجع . مبادلة باطلة (المرجع int a ، المرجع int b) // الآن المتغيرات a و b تحصل على عناوين المتغيرات x و y في الذاكرة { كثافة العمليات ج ؛ ج = أ ؛ أ = ب ؛ ب = ج ؛ } فراغ ثابت رئيسي () { نبسب ؛ int س = 1 ، ص = 2 ؛ نبسب ؛ المبادلة (المرجع x ، المرجع y) ؛ التطبيق: إذا قمت بتمرير وسيطة من خلال المرجع ، فعندئذٍ فقط اسم المتغير (ليس رقمًا وليس تعبيرًا حسابيًا) يمكن أن يقف في هذا المكان عند استدعاء الإجراء.

لا يمكنك استدعاء إجراء مثل هذا: <قبل> المبادلة (× ، 4) ؛ المبادلة (5 + س ، ص) ؛

Problem

اكتب إجراء يبدل قيم متغيرين. & nbsp؛ ابحث عن الأخطاء وصححها في هذا الإجراء.
نبسب ؛
مثال <الجسم>
# إدخال الإخراج
1 1
2
2
1