تنفيذ العمليات الحسابية
قواعد أولوية تنفيذ العمليات الحسابية:
تستخدم لغة C++ قواعد الأولوية في تنفيذ العمليات الحسابية، وحسب التسلسل الآتي:
أ- في حالة وجود الأقواس ()، يتم تنفيذ العمليات التي بداخلها أولاً.
ب- الضرب *، والقسمة /، وباقي القسمة %.
ج- الجمع +، والطرح -.
في حالة التكافؤ في الأولوية، يتم التنفيذ من اليسار إلى اليمين.
كتابة التعابير الحسابية بلغة ++C:
1- المثال الأول:
في هذا المثال تم وضع إشارة الضرب بين المعامل والمتغير فمثلًا 5y تُكتب y * 5 وكذلك xy تُكتب x*y
2- المثال الثاني:
نلاحظ في هذا المثال وجود أس وهو 2، عند التحويل إلى لغة ++c فإننا نقوم بفك الأس كالآتي y*y عمليتي الجمع والطرح متشابهتان مع التعابير الحسابية الجبرية.
3- المثال الثالث:
هذا المثال يحتوي على كسر عادي فيه بسط ومقام وكما تعلمت في لغة Small Basic فإنه يتوجب كتابة البسط بين أقواس والمقام كذلك بين أقواس وذلك للمحافظة على أولوية العمليات الحسابية ، وتُحوّل إشارة الكسر إلى رمز عملية القسمة. المقام يحتوي على معامل ومتغير لا يوجد بينهما إشارة وهذا يعني أنّ بينهما عملية ضرب ويجب وضع رمز عملية الضرب بينهما.
4- المثال الرابع:
هذا المثال لا يختلف عن الأمثلة السابقة حيث إنه يحتوي على متغير ويأتي مباشرة بعده قوس وهذا يعني أنّ بينهما عملية ضرب. وكذلك 3y-.
نشاط (2-12): كتابة التعابير الحسابية بلغة c++
بالتعاون مع أفراد مجموعتك اكتب التعابير الحسابية الآتية بلغة C++
التعبير الحسابي |
التعبير بلغة C++ |
5 * x + y - 6 | |
---|---|
X + (Y+4)/ (3 * (x-Y)) | |
(5 * x + y * y) / (-2*x + 6) | |
6 * (2 * x - 8) / (y*y*y) |
إيجاد ناتج التعبير الحسابي:
عند إيجاد قيمة تعبير حسابي في لغة C++، يجب مراعاة قواعد الأولوية والشكل الآتي يوضح مثالاً على تسلسل تنفيذ تعبير حسابي وإيجاد نتيجته.
ملحوظة:
عند تنفيذ عملية باقي القسمة يجب الأخذ بالاعتبارات الآتية:
1- إشارة ناتج باقي القسمة نفس إشارة العدد المقسوم ولا يهتم لإشارة العدد المقسوم عليه كما في الأمثلة الآتية:
cout << 10% 7 <<endl; // 3
cout <<-10% 7 <<endl; // -3
cout << 10%-7 <<endl; // 3
cout <<-10%-7 <<endl; // -3
2- إذا كان العدد المقسوم أقل من العدد المقسوم عليه فإن نتيجة باقي القسمة هي العدد المقسوم كما في المثال الآتي:
cout <<7%10 <<endl; // 7
3- إذا كان أحد العددين (المقسوم أو المقسوم عليه) كسري فيجب تحويله إلى عدد صحيح، باستخدام الاقتران int ، حيث يعطي الجزء الصحيح من العدد الكسري مهما كانت قيمته، كما في المثال الآتي:
cout << int(10.6)%3 <<endl; // 1 أوcout << int(10.6)%3 <<endl;
نشاط (2-13): إيجاد قيمة التعابير الحسابية
بالتعاون مع أفراد مجموعتك جد قيمة d في كلاً من التعابير الحسابية الآتية، إذا كانت a=9,b=4, c=-3:
- d= a*((c*2+5)%b-5)
9 * (( -3 * 2 +5 ) % 4 - 5)
9 * ((-6 +5 ) % 4 - 5)
9 * ( -1 % 4 - 5)
9 * ( -1 - 5)
9 * - 6
d = - 54
- d= (3*a+c)/(b*2%5)
d= (3 * 9 + -3 )/( 4 * 2 % 5)
d= ( 27 + -3 )/( 4 * 2 % 5)
d= 24 /( 4 * 2 % 5)
d= 24 /( 8 % 5)
d= 24 /( 3)
d = 8
- d=(7+c*5)/(2*(b-(a%3)))
d=(7 + -3 * 5 ) / ( 2 * ( 4 -( 9 % 3)))
d=(7 + -15 ) / ( 2 * ( 4 -( 9 % 3)))
d=(-8 ) / ( 2 * ( 4 -( 9 % 3)))
d= -8 / ( 2 * ( 4 - 0))
d= -8 / ( 2 * 4 )
d= -8 / ( 8 )
d= -1
- d=-a*((c*3+b)+(c%2))
d= -9 * (( -3 * 3 + 4 ) + ( -3 % 2 ))
= -9 * (( -9 + 4 ) + ( -3 % 2 ))
= -9 * ( -5 + ( -3 % 2 ))
= -9 * ( -5 + -1 )
= -9 * ( -6 )
d = 54
سجل ما توصلت إليه في ملف المجموعة.
نشاط (2-14): إيجاد قيمة التعابير الحسابية
بالتعاون مع أفراد مجموعتك نفذ البرنامج الآتي المكتوب بلغة C++:
ناتج تنفيذ البرنامج:
عند قسمة عدد صحيح على عدد صحيح يكون الناتج عددًا صحيحًا.
وعند قسمة عدد كسري على عدد كسري فإن الناتج عدد كسري.
وعندما يكون أحد أطراف عملية القسمة عدداً كسريًا فإن الناتج دائمًا عدد كرسي.