AP1 Session #08
AP1 Session #08
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
-1استدعاء الباني بوسيطين من أجل إنشاء الغرض .c1
-2استدعاء الباني بوسيطين من أجل إنشاء الغرض .c2
-3استدعاء الباني بدون وسطاء والذي بدوره يقوم باستدعاء الباني بوسيطين من أجل إنشاء الغرض c3
نتيجة وجوده ضمن الئحة التهيئة الخاصة به ،ولذلك تم تنفيذ تعليمة طباعة المشيد ذو الوسيطين قبل
المشيد بدون وسطاء.
-4تكملة استدعاء الباني بدون وسطاء من أجل .c3
-5إدخال الغرض c3نتيجة استدعاء تابع التحميل الزائد للمعامل >>
-6استدعاء الباني الناسخ لتهيئة c4والذي يقوم بنسخ محتويات c1ويضعها ضمن c4دون أن يقوم
بالتعديل على .c1
-7استدعاء الباني بدون وسطاء والذي بدوره يقوم باستدعاء الباني بوسيطين من أجل إنشاء الغرض c5
نتيجة وجوده ضمن الئحة التهيئة الخاصة به ،ولذلك تم تنفيذ تعليمة طباعة المشيد ذو الوسيطين قبل
المشيد بدون وسطاء.
-8تكملة استدعاء الباني بدون وسطاء من أجل .c5
-9طباعة الغرض c1نتيجة استدعاء تابع التحميل الزائد للمعامل <<
طباعة الغرض c1نتيجة استدعاء تابع التحميل الزائد للمعامل << وذلك بعد عكس إشارات -10
c1عن طريق تطبيق تابع التحميل الزائد للمعامل – في السطر الذي يسبق تعليمة الطباعة.
استدعاء المشيد ذو الوسيطين لتهيئة المتحول المحلي resultالناتج عن استدعاء تابع التحميل -11
الزائد للمعامل +من أجل العملية ) (c1 + c2مع مالحظة أن عملية الجمع ضمن c++تتم من
اليسار إلى اليمين وبالتالًي سيتم جمع c2 + c1ومن ثم إضافة الناتج إلى .c3
استدعاء المشيد ذو الوسيطين لتهيئة المتحول المحلي resultالناتج عن استدعاء تابع التحميل -12
الزائد للمعامل +من أجل العملية Z+c3بفرض كان Zيمثل ناتج العملية .c1+c2
استدعاء الهادم من أجل المتحول المحلي resultالذي تم إنشاؤه في الخطوة .12 -13
استدعاء الهادم من أجل المتحول المحلي resultالذي تم إنشاؤه في الخطوة .11 -14
طباعة الغرض c4نتيجة استدعاء تابع التحميل الزائد للمعامل << -15
استدعاء الهادم من أجل المتحول .c5 -16
استدعاء الهادم من أجل المتحول .c4 -17
استدعاء الهادم من أجل المتحول .c3 -18
استدعاء الهادم من أجل المتحول .c2 -19
استدعاء الهادم من أجل المتحول .c1 -20
مالحظات:
-1يتم هدم المتحوالت المؤقتة المعرفة ضمن التوابع فور االنتهاء من تنفيذ التابع ولذلك تم استدعاء الهادم
في الخطوتين 13و 14قبل تنفيذ تعليمة الطباعة في الخطوة .15
-2يتم هدم المتحوالت المعرفة ضمن البرنامج الرئيسي أو أي تابع آخر بعكس ترتيب إنشائها ،بما أن
استدعاء التوابع ضمن c++يتم عن طريق مكدس استدعاء التوابع والذي يعتمد مبدأ LIFO: Last-
In First-Outلذا يتم هدم المتحول c5قبل c4و c4قبل c3وهكذا...