ال�شكل ( :)18-2إ�دخال عددين و�إيجاد مجموعهما وطباعة الناتج. و أل َّن على الم�ستخدم إ�دخال قيم للمتغيرات ،ف�إنه قد ين�سى نوع المتغيرات وعددها ،فيقوم الحا�سوب با�ستقبال اي قيمة مدخلة وتحويلها إ�لى النوع المنا�سب ،لذلك يف�ضل �إعلام الم�ستخدم بالبيانات الواجب إ�دخالها عن طريق طباعة ر�سالة للم�ستخدم حتى ُين ِّفذ البرنامج بطريقة �صحيحة. وفي المثال ال�سابق يمكن أ�ن ت�سبق جملة لإادخال جملة الطباعة وتو َّ�ضح لل ُم�ستخ ِدم على النحو ل آاتي: ;cout <<\"Enter two numbers: \" <<endl ; in>>a>>bc فعند تنفيذ البرنامج تظهر كالآتي: �سيتوقف البرنامج منتظرا من الم�ستخدم �إدخال قيمتين عدديتين ،وبهذا يتم �إعلام الم�ستخدم بالبيانات الواجب إ�دخالها. ن�شاط ( :)9-2ح�ساب َم�ساحة م�ستطيل ومحيطه بالتعاون مع أ�فراد مجموعتك اكتب برنامجا بلغة C++لح�ساب م�ساحة م�ستطيل ومحيطه ثم طباعة الناتج ،باتباع الخطوات لاآتية: • اكتب الجملة البرمجية اللازمة إلدخال قيم الطول( )Lوالعر�ض (.)W • اكتب الجمل البرمجية اللازمة لح�ساب م�ساحة الم�ستطيل ( )Aومحيطه ( ،)Rثم طباعة الناتج م�ستخد ًما القواعد لاآتية: .R = 2*(L+W) , A = L * W 99
• قم ببناء البرنامج ون ّفذه ثم �أد ِخل قي ًما للطول والعر�ض ،فماذا تلاحظ؟ • قم ببناء البرنامج ونفذه ثم أ�د ِخل قيمة واحدة فقط ،فماذا تلاحظ؟ • قم ببناء البرنامج ونفذه ثم أ�د ِخل 3قيم ،فماذا تلاحظ؟ �سجل ما تو�صلت إ�ليه في ملف المجموعة. يو�ضح ال�شكل( )19-2برنامجا إلدخال ا�سم الطالب و�أربع علامات مع تو�ضيح طبيعة المدخلات ،ثم يح�س ُب مع ّد َل الطالب ويطب ُع ا�سمه ومعدله. >#include <iostream ; using namespace std )(int main { ; tring student_names ;int m1,m2,m3,m4 ;float average ; out << \"Enter student name: \" <<endlc ;cin >>student_name ; out << \"Enter four marks: \" <<endlc ;cin >>m1>>m2>>m3>>m4 ; verage=(m1+m2+m3+m4)/4a cout << \"student name is: \" <<student_name<<\" \\t\"<<\"average=\" <<average ;<<endl ;eturn 0r } فيكون الناتج كما ي�أتي ال�شكل ( :)19-2برنامج لح�ساب مع ّدل الطالب وطباعته. 100
ن�شاط ( :)10-2إ�يجاد ناتج تنفيذ البرنامج بالتعاون مع أ�فراد مجموعتك اكتب البرنامج الآتي ،ثم قم ببنائه ،ثم ن ّفذه و أ�د ِخل قيمة 4للمتغير xو 8.5للمتغير .y > include <iostream# ;using namespace std )(int main { ;int x ,z ;float y ; in>>x>>yc ; =y+0.5y ;) =x*x/(x-5z ;cout <<\"***\"<<z <<x<<endl ;return 0 } �سجل ما تو�صلت إ�ليه في ملف المجموعة. ن�شاط ( :)11-2ح�ساب م�ساحة مثلث ومحيطه بالتعاون مع �أفراد مجموعتك وبم�ساعدة معلمك ن ّفذ الآتي: • اكتب برنام ًجا بلغة C++إلدخال طول قاعدة مثلث مت�ساوي الأ�ضلاع وارتفاعه ،واح�سب م�ساحته. • قم ببناء البرنامج ونفذه ثم أ�د ِخل القيم ،فماذا تلاحظ؟ • كرر الخطوة ال�سابقة ،و أ�د ِخل قي ًما أ�خرى ،فماذا تلاحظ؟ احفظ البرنامج في ملف المجموعة. 101
البرمجة في حياتنا ) من أ�جل إ�دخال قيم المتغيرات التي طلبهاcin( ا�ستخدم المبرمج ماهر جملة لإادخال ،v1 ) إلدخال قيمة ال�سرعة الابتدائيةcin( وقد ا�ستخدم جملة لإادخال،الباحث �أ�سامة .t با إل�ضافة للزمن،a والت�سارع /* ----------------------------------------- This program: insert values using keyboard by: Maher ----------------------------------------- */ #include <iostream> using namespace std; int main() { float v1 = 0, v2 = 0, a = 0, x = 0, t = 0; // Basic Information cout << \"Water, Energy and Environment Center.\" << endl; cout << \"Section\\t: \\\"Water\\\".\" << endl; cout << \"Date\\t: 2016-10-24.\" << endl; // Insert Values cout << endl; // empty line cout << \"Enter Velocity (1) value: \"; cin >> v1; cout << \"Enter Acceleration value: \"; cin >> a; cout << \"Enter Time value: \"; cin >> t; return 0; } 102
البرمجة في حياتنا ا�ستخدم المبرمج ماهر جملة ا إلخراج ( )coutليو�ضح لم�ستخدم البرنامج القيم التي �سيتم �إدخالها لاآن ،وفي جملة ا إلخراج ُط ِلب من الم�ستخدم إ�دخال قيمة ال�سرعة الابتدائيـــــة ( ،)Velocityثم الت�سارع ( ،)Accelerationثم الزمن ( .)Timeو�شا�شة المخرجات تو ِّ�ضح طريقة التعامل مع البرنامج و�إدخال ال ِقيم. 103
أﺳﺌﻠﺔ اﻟﻔﺼﻞ - 1بين �سبب �لخط أا في كل من جمل �لإادخال �ل آاتية ،ثم أ�عد كتابتها ب�سكل �سحيح: جمل الإدخال �صب Öالخط أا ;cin<<n cin>>n>x ;cint>>a>>b>>c ;cin>a ;cin>>9 ;\"cin>>\"c++ ;CIN>>a � -2كتب برنامج ًا بلغة C++لح�ساب م�ساحة �لد�ئرة ( )areaومحيطها (،)circumference �إذ� علمت أ� ّن ن�سف �لقطر ( )Rو قيمة ،3.14=Лعلما ب أان قانون م�ساحة �لد�ئرة هو Area= Л* R*Rوقانون محيط �لد�ئرة هو .circumference= 2*Л*R � -3كتب برنامج ًا بلغة C++ل إادخال قيمتي ِن للمتغيرين ،x،yثم ب ّدل قيمتيهما ،ثم �طبع �لقيم بعد �لتبديل. � -4كتب برنامج ًا بلغة C++لح�ساب وطباعة �ل�سريبة �ل�سنوية ل�سخ�س يتقا�سى ر�تبا �سهريا، علم ًا باأن ن�سبة �ل�سريبة هي %1.5من �لدخل �ل�سنوي. � -5كتب برنامج ًا بلغة C++ل إايجاد قيمة Aح�سب �لمعادلة �لاآتية ثم �طبعها: A=3*(N –M)+6 � -6كتب برنامج ًا بلغة C++لح�ساب قيمة �لعمولة �لتي يتقا�ساها مندوب �لمبيعات ل�سركة على مجمل مبيعاته ثم �طبعها إ�ذ� علمت �أن :ن�سبة �لعمولة هي ،%25وقيمة �لعمولة=مجمل �لمبيعات*ن�سبة �لعمولة. 104
: ما الناتج النهائي لتنفيذ ك ٍّل من البرامج لاآتية-7 #include <iostream> #include <iostream> using namespace std ; using namespace std ; int main() int main() { } int m; string a=\"language\"; char z; string b; float n; float c; cin >>m>>z>>n; cin >>b>>c; cout<<\"******\"<<endl; cout<<a<<\"\\\"\"<<b<<\"\\\"\"<<\"\\n\"<<c+1<<endl; cout<<m-2<<endl; cout<<c-1 <<endl; cout<<n<<endl; return 0; n=n+5.5; } cout<<z<<endl; cout<<\"******\"<<endl; b \" للمتغيرC++ \" على فر�ض أ�نه تم إ�دخال قيمة return 0; c للمتغير8.2 و } للمتغير6 على فر�ض �أنه تم إ�دخال قيمة . n للمتغير3.5 وz و @ للمتغيرm 105
الف�صل الخام�س التعابير الح�سابية Arithmatic Expressions البرمجة في حياتنا �أبدى الباحث أ��سامة ر�ضا ُه على �أداء المبرمج ماهر حتى ل آان؛ أل ّن البرنامج يقوم بتعريف المتغيرات و�إدخالها من خلال لوحة المفاتيح ،وينتظر الباحث ل آا َن أ� ْن يتم ح�ساب المعادلات التي ُتخرج ناتج ال�سرعة النهائية ،ومقدار ل إازاحة. المعادلة باللغة الانجليزية المعادلة باللغة العربية ع=2ع + 1ت ز v2 = v1 + at �س=ع1ز 0.5 +ت ز2 x = v1t + ½ at2 Which: حيث �إن: v1 = initial velocity. ع =1ال�سرعة الابتدائية. v2 = final velocity. a = acceleration. ع =2ال�سرعة النهائية. x = displacement. ت = الت�سارع. t = time. �س = الم�سافة. ز = الزمن. ما الطريقة التي �َسيح ّول فيها المبرمج ماهر هذه المعادلات من �صيغتها الجبرية إ�لى �صيغة C++؟ أ�و اًل :التعبير الح�سابي ُتع َّرف التعابي ُر الح�سابية ب أ�نها عبارة عن قيم ثابتة �أو متغيرات عددية �أو مزيج من الثوابت والمتغيرات العددية ،يجمع بينها عمليات ح�سابية .وتت�شابة طريقة كتابة التعابير الح�سابية في لغة C++مع طريقة كتابة التعابير الح�سابية الجبرية ،مع اختلاف ب�سيط كما هو مو�ضح في الجدول (.)4 -2 106
الجدول ( :) 4-2العمليات الح�سابية في لغة .C++ ناتج المثال مثال التعبير الح�سابي التعبير الح�سابي المعنى العملية الجبري في لغة C++ 8 + 2 الجمع 6+2 X+Y X+Y - 20 * 2 الطرح 5-3 X-Y X-Y / 2 % ال�ضرب 5*4 X*Y XY 16/8 X/Y X الق�سمة Y 14 % 3 X%Y باقي الق�سمة ثانيًا :تنفيذ العمليات الح�سابية - 1قواعد ا ألولوية لتنفي ِذ العمليات الح�سابية ت�ستخ ِدم لغة C++قواعد لاأولوية في تنفيذ العمليات الح�سابية ،وح�سب الت�سل�سل لاآتي: �أ -في حالة وجود لاأقوا�س ( ) ،يتم تنفيذ العمليات التي بداخلها أ�ول ًا. ب -ال�ضرب * ،والق�سمة ،/وباقي الق�سمة. جـ -الجمع ،+والطرح .- في حالة التكاف ؤ� في ل أاولوية ،يتم التنفيذ من الي�سار إ�لى اليمين .والجدول ( )5-2يبين كيفية كتابة بع�ض التعابير الح�سابية بلغة .C++ الجدول (:) 5-2كتابة التعابير الح�سابية بلغة .C++ التعبير بلغة C++ التعبير الح�سابي x+5*y-x*y x+5y-xy )y*y-(x+3 )y2 - (x+3 )(x-y)/(4*y x-y 4y )x*(-3*y+3 )x(-3y+3 107
ن�شاط ( :)12-2كتابة التعابير الح�سابية بلغة C++ بالتعاون مع أ�فراد مجموعتك اكتب التعابير الح�سابية ل آاتية بلغة C++ التعبير بلغة C++ التعبير الح�سابي 5x+y-6 X+ Y+4 )3(X - Y 5x+y2 -2x+6 )6 * (2 x - 8 Y3 �سجل ما تو�صلت �إليه في ملف المجموعة. � - 2إيجاد ناتج التعبير الح�سابي عند �إيجاد قيمة تعبير ح�سابي في لغة ،C++يجب مراعاة قواعد ل أاولوية وال�شكل ( )20 -2يو�ضح مثال ًا على ت�سل�سل تنفيذ التعبير الح�سابي و إ�يجاد نتيجته. �إذا كانت a=4,b=7,c=3ف�إن ناتج التعبير الح�سابي لاآتي مع بيان ت�سل�سل التنفيذ هو : )a – b % 2 * ( c+ 5 )4–7%2*(3+5 4–7%2*8 4–1*8 4–8 -4 ال�شكل (:) 20-2مثال على ت�سل�سل تنفيذ التعبير الح�سابي و�إيجاد نتيجته. 108
ملحوظة عند تنفيذ عملية باقي الق�سمة يجب لاأخذ بالاعتبارات لاآتية: -1نتيجة باقي الق�سمة ت أ�خذ إ��شارة العدد المق�سوم ،ولا يهتم إل�شارة العدد المق�سوم عليه كما في لاأمثلة ل آاتية: out << 10% 7 <<endl; // 3c out <<-10% 7 <<endl; // -3c out << 10%-7 <<endl; // 3c out <<-10%-7 <<endl; // -3c - 2إ�ذا كان العدد المق�سوم أ�قل من العدد المق�سوم عليه ف�إن نتيجة باقي الق�سمة هي العدد المق�سوم كما في المثال لاآتي: out <<7%10 <<endl; // 7c عدد ع�شريًا ،فيجب تحويله إ�لى أ�حد العددين (المق�سوم أ� ِو المق�سوم عليه) �إذا كان -3 مهما ال�صحيح من العدد الع�شري با�ستخدام الاقتران ، intحيث ُيعطي الجزء �صحيح، كانت قيمته،كما في المثال لاآتي: cout << (int)10.6%3 <<endl; //1أ�و ; out << int(10.6)%3 <<endlc ن�شاط ( :)13-2إ�يجاد قيمة التعابير الح�سابية بالتعاون مع أ�فراد مجموعتك ج ْد قيمة dفي ك ٍّل من التعابير الح�سابية لاآتية� ،إذا كانت: a=9,b=4,c=-3 ) d= a*((c*2+5)%b-5 ) d= (3*a+c)/(b*2%5 ))) d=(7+c*5)/(2*(b-(a%3 )) d=-a*((c*3+b)+(c%2 �سجل ما تو�صلت �إليه في ملف المجموعة. 109
ن�شاط ( :)14-2إ�يجاد قيمة التعابير الح�سابية بالتعاون مع �أفراد مجموعتك نفذ البرنامج لاآتي المكتوب بلغة :C++ >#include <iostream ; sing namespace stdu )(int main { ; int a=9 , c=-2 ; float w=3.2 , z= 6.5 ; cout << \"int/int = \"<<a/c<< endl ; cout << \"float/float = \"<< z/w<< endl ; cout << \"int/float = \"<< a/w<< endl ; cout << \"float/int = \"<<z/c<<endl ; return 0 } �سجل ما تو�صلت �إليه في ملف المجموعة. ثالثًاُ :معا ِملات الزيادة والنق�صان ال َق ْب ِليّة والبَ ْع ِديّة تو ِّفر لغة C++معامل الزيادة �أو ،)++( Increment Operatorالذي يقوم ب إ��ضافة واحد �إلى قيمة المتغير ،ومعامل النق�صان ،)- -( Decrement Operatorالذي يقوم ب إ�نقا�ص واحد من قيمة المتغير. وهناك نوعان من معاملات الزيادة والنق�صان ،هما: - 1معامل زيادة �أو نق�صان قبلي ()++x,--x ونعني بالزيادة أ�و النق�صان القبلي إ�تمام عملية الزيادة بمقدار واحد على قيمة المتغير أ�و النق�صان بمقدار واحد من قيمة المتغير أ�ولا ،ومن َث َّم تنفيذ العملية المطلوبة �سوا ًء كانت طباعة �أو غيرها من العمليات. - 2معامل زيادة �أو نق�صان بعدي ()x++, x-- ونعني بالزيادة �أو النق�صان البعدي إ�تمام العملية المطلوبة �أول ًا ثم �إجراء الزيادة بمقدار واحد على قيمة المتغير أ�و النق�صان بمقدار واحد من قيمة المتغير ،ويو�ضح ال�شكل ()21 -2 مفهوم معامل الزيادة القبلية والبعدية. 110
عند تنفيذ البرنامج لاآتي : >#include <iostream ;using namespace std )(int main { ;int x =6,y=2 ;int z,w z=++x; // x=7 , z=7 w=y++; // w=2 ,y=3 ;cout <<x <<\"\\t\"<<y<<\"\\t\"<<z<<\"\\t\"<<w<<\"\\t\" <<endl ;return 0 } يظهر الناتج: لاحظ عند تنفيذ الجملة ; ، z=++xت ّمت زيادة المتغير xبمقدار واحد ،ف�أ�صبحت قيمته ت�ساوي ,7ثم ت ّم إ��سناد قيمة xللمتغير zف�أ�صبحت قيمة zت�ساوي .7وعند تنفيذ الجملة ; ،w=y++ت ّم أ�ولا �إ�سناد قيمة المتغير yللمتغير wف أ��صبحت قيمة wت�ساوي ، 2ثم ت ّمت زيادة المتغير yبمقدار واحد ف�أ�صبحت قيمة yت�ساوي .3 ال�شكل ( :)21-2معاملات الزيادة القبلية والبعدية. 111
>#include <iostream ن�شاط ( :)15-2إ�يجاد ناتج تنفيذ برنامج بالتعاون مع �أفراد مجموعتك اكتب البرنامج الآتي ونفذه: ;using namespace std �سجل ما تو�صلت �إليه في ملف المجموعة. )(int main { ;int a=4 ;nt b=0i ;nt w,zi ;cout <<--a <<endl ;cout <<a <<endl ;cout <<b-- <<endl ;cout <<b <<endl ; return 0 } قواعد الأولوية عند تنفيذ العمليات الح�سابية: -1في حالة وجود الأقوا�س ( ) ،يتم تنفيذ العمليات التي بداخلها أ�ول ًا. -2معاملات الزيادة والنق�صان القبلية. -3ال�ضرب * ،والق�سمة ،/وباقي الق�سمة. -4الجمع ،+والطرح .- -5معاملات الزيادة والنق�صان البعدية. في حالة التكاف�ؤ في الأولوية ،يتم التنفيذ من الي�سار الى اليمين. ن�شاط (� :)16-2إيجاد قيمة التعابير الح�سابية بالتعاون مع أ�فراد مجموعتك جد قيم dفي ك ٍّل من التعابير الح�سابية الآتية ،إ�ذا كانت d= ++a % b + --c قيم a=12,b=2,c=1 ) d= (6 - a--)/(--b * c �سجل ما تو�صلت �إليه في ملف المجموعة. 112
راب ًعا :معاملات الإ�سناد معاملات لإا�سناد تقوم بعملية ح�سابية مع إ��سناد قيم للمتغير في وقت واحد ،ويبين الجدول( )6-2معاملات لإا�سناد في لغة .C++ الجدول ( :)6-2معاملات لإا�سناد في لغة .C++ الو�صف معامل ا إل�سناد مثال c=c+2 +=2c =+ c=c-5 -=5c =- c=c*8 c*=8 =* =c/5c c/=5 =/ c=c%3 %=3c =% البرمجة في حياتنا ا�ستخدم المبرمج ماهر طرق تحويل المعادلات من �صيغتها الجبرية إ�لى ،C++ثم كتب هذه المعادلات داخل البرنامج ،وت�أ ّكد من أ�نه عند التحويل قد راعى لاأولويات في التنفيذ. */ ----------------------------------------- This program: insert values using keyboard and calculate the equations. by: Maher ----------------------------------------- */ >#include <iostream ;using namespace std )(int main { ;float v1 = 0, v2 = 0, a = 0, x = 0, t = 0 // Basic Information ;cout << \"Water, Energy and Environment Center.\" << endl ;cout << \"Section\\t: \\\"Water\\\".\" << endl ;cout << \"Date\\t: 2016-10-24.\" << endl 113
// Insert Values cout << endl; // empty line cout << \"Enter Velocity (1) value: \"; cin >> v1; cout << \"Enter Acceleration value: \"; cin >> a; cout << \"Enter Time value: \"; cin >> t; // The Equations // Velocity 2 v2 = v1 + a * t; // Displacement x = v1 * t + 0.5 * a * (t * t); // Result cout << endl; cout << \"The Result:\" << endl; cout << \"Velocity (2) = \" << v2 << endl; cout << \"Displacement = \"<< x << endl; return 0; } ثم،C++ ا�ستخدم المبرمج ماهر ك َّل المهارات التي تعلمها لتحويل المعادلات �إلى �شكل . كما هو وا�ضح في �شا�شة المخرجات،)cout( طبع النتائج بجمل ل إاخراج 114
أﺳﺌﻠﺔ اﻟﻔﺼﻞ � -1كتب �لتعابير �لح�سابية �لاآتية بلغة C++ )1 6y +Z-5 x-y+2 )2 )4(x - 5 y x-2 3 ) (x-y2-3y)+6-z )4 ) (7x+3y)(x-100 - 2ب ّين �سبب �لخطاأ في كل من �لتعابير �لح�سابية �لاآتية �لمكتوبة بلغة :C++ التعابير الح�صابية �صب Öالخطاأ )m(3-n/6 )m/(n-n m%(n-5+z int(5.9)%m )m\\(n*5.6 ) 4-( n – 5 ) ( m + n - 3ما قيمة كل من �لتعابير �لح�سابية �ل آاتية �لمكتوبة بلغة ،C++علما ب أان y=3 ٫ x= 5 1) (x*2)%y-3+x*6 2) int(y/2)%x-4*y ))3) Y+((x % 2)%(6-Y 115
الف�صل ال�ساد�س التعابير ال َعلائقية وال َمن ِطقية البرمجة في حياتنا يقوم الباحث �أ�سامة بفح�ص عينات من المياه المعبئة حتى يت أ�كد من أ�نها تطابق الموا�صفات والمقايي�س لاأردنية ،ومن �ضمن هذه الموا�صفات يجب فح�ص الخوا�ص الكيميائية حيث لا تزيد المواد ال ُّ�صلبة الذائبة الكلية ( Total Dissolved Solids (TDSعن 300مغ/لتر .و أ�ن يكون الر ْقم الهيدروجيني ( Power of Hydrogen (pHمن � 6.5إلى 8.5وحدة. َطلب الباحث من المبرمج ماهر �أن يقوم بت�صميم برنامج يقوم باتخاذ قرا ٍر بمطابقة المياه للموا�صفات من عدمه ،ف�أ ُّي الجمل ال َعلائقية وال َمنط ِقية ا�ستخدمها المبرمج في هذا البرنامج؟ أ�و اًل :التعبير العلائقي Relational Expression التعبير العلائقي هو جملة خبرية يكون ناتجها �إما �صوابا ( )Trueو إ�ما خط أ� ( ،)Falseوتكتب هذه التعابير با�ستخدام عمليات المقارنة المذكورة في الجدول ( ،)7-2و ُت�ستخ َدم التعابير العلائقية في جمل اتخاذ القرار (جملة الاختيار ال�شرطية )if -في لغة ،C++والتي �ستتعرف إ�ليها في الف�صل القادم. وتت�شابه طريقة كتابة التعابير العلائقية مع طريقة كتابتها الجبرية ،والجدول ( )7-2يو�ضح ذلك. 116
الجدول ( :)7-2عمليات المقارنة. التعبير بلغة C++ التعبير الجبري لفظ التعبير العلائقي العملية X>Y X>Y X is greater than Y > X<Y X<Y < X>= Y X≥ Y � xأكبر من Y => X <= Y X≤Y =< X== Y X= Y X is less than Y == X != Y X ≠Y =! xأ��صغر من Y X is greater than or equal to Y xأ�كبر من �أو ت�ساوي Y X is less than or equal to Y xأ��صغر من �أو ت�ساوي Y X is equal to Y Xت�ساويY X is not equal to Y Xلا ت�ساوي Y و ُيلا َحظ من الجدول ب�أن عملية المقارنة الجبرية الم�ساواة (=) ُتك َتب على �شكل رم َزي الم�ساواة (= =) وهذا للتفريق بينها وبين عملية لاإ�سناد (=) في التعابير الح�سابية ،حيث �إن (==) ُت�ستخ َدم للمقارنة بين طر َفي العملية ،ويكون ناتجها (�صوا ًبا ،أ�و خط�أ). �أما عملية اللام�ساواة (≠) فتغ ّير �إلى رمز التعجب ورمز الم�ساواة (=!) ،فعلامة التعجب تدل على النفي في لغة C++؛ مما يجعلها تنفي عملية الم�ساواة بين طرفي العملية. والجدول ( )8-2يو�ضح �أمثلة على التعابير العلائقية وناتجها المنطقي (�صواب ،خط أ�). الجدول ( :)8-2بع�ض التعابير العلائقية وناتجها. التعبير العلائقي ناتج التعبير العلائقي 2 + 5 == 8 – 1 True 5*2 != 10 False 7%3>=7 False 40 / 5 < 40 / 4 True 20 – 4 * 5 == 0 True 85<= 3 * 20 + 5 * 5 True 117
يو ّ�ضح ال�شكل ( )22-2ا�ستخدام عمليات المقارنة في برامج ،C++فقد ت ّم ا�ستخدام جملة اتخاذ القرار ( ) ifللتو�ضيح (�سيتم �شرحها بالتف�صيل لاح ًقا) .ويكتب التعبير العلائقي بين قو�سين بعد كلمة ifواذا كان ناتج التعبير المنطقي �صوا ًبا ُتن َّفذ الجملة التي تليها ،واذا كان ناتجها خط أ� �سيتجاهل الجملة التي تليها. >#include <iostream ;using namespace std )(int main { ;int x = 1 ;int y = 5 ;if( x > y ) cout<< x << \" > \" << y << endl ;if( x < y ) cout<< x << \" < \" << y << endl ;if( x >= y ) cout<< x << \" >= \" << y << endl ;if( x <= y ) cout<< x << \" <= \" << y << endl ;if( x == y ) cout<< x << \" == \" << y << endl ;if( x != y ) cout<< x << \" != \" << y << endl ;return 0 } ناتج تنفيذ البرنامج: ال�شكل ( :)22-2ا�ستخدام التعبير العلائقي في لغة .C++ 118
ن�شاط (� :)17-2إيجاد ناتج التعبير العلائقي بالتعاون مع أ�فراد مجموعتك نفذ البرنامج الموجود في ال�شكل (.)22-2 • ع ّدل قيم x, yلت�صبح ،x = 3, y = 9فماذا تلاحظ على ناتج �شا�شة المخرجات؟ • ع ّدل قيم x, yلت�صبح ،x = 5, y = 2فماذا تلاحظ على ناتج �شا�شة المخرجات؟ • ع ّدل قيم x, yلت�صبح ،x = 4, y = 4فماذا تلاحظ على ناتج �شا�شة المخرجات؟ • هل قيم x, yالجديدة �أ ّثرت على ناتج �شا�شة المخرجات؟ �سجل ما تو�صلت إ�ليه في ملف المجموعة. ن�شاط ( :)18-2إ�يجاد ناتج التعبير العلائقي بالتعاون مع أ�فراد مجموعتك نفذ البرنامج الموجود في ال�شكل (.)22-2 • ع ّدل على البرنامج بحيث يت ّم إ�دخال قيم x, yمن لوحة المفاتيح مبا�شرة ،و�أثناء تنفيذ البرنامج. • قم ببناء البرنامج وتنفيذه ،ثم �أد ِخل قيم x, yلتكون .x = 20, y = -20 • قم ببناء البرنامج وتنفيذه ،ثم أ�د ِخل قيم x, yلتكون .x = 1, y = 3 • قم ببناء البرنامج وتنفيذه ،ثم �أد ِخل قيم x, yلتكون .x = 3, y = 3 • فماذا تلاحظ على ناتج �شا�شة المخرجات؟ احفظ البرنامج و�سجل ما تو�صلت إ�ليه في ملف المجموعة. ثانيًا :التعبير المنطقي Logical Expression هو جملة خبرية تتكون من تعبيرين علائقيين �أو أ�كثر مرتبطة با�ستخدام المعاملات المنطقية ( ،)And, Orوتكون قيمتها �إما �صوابا و�إما خط أ� .و ُي�ستخ َدم المعامل المنطقي ( )Notلنفي التعابير العلائقية �أو المنطقية. 119
وفيما يلي تو�ضيح للمعاملات المنطقية: - 1معامل الربط ( )ANDويرمز له (&&) ُي�ستخدم المعامل ANDلربط التعابير العلائقية ،ويكون ناتج التعبير المنطقي �صوابا ()True إ�ذا كان ناتج جميع التعابير العلائقية المرتبطة بها �صوابا ( ،)Trueويكون ناتج التعبير المنطقي خط�أ (� )Falseإذا كان ناتج أ�حد التعابير العلائقية المرتبطة بها خط�أ (.)False والجدول ( )9-2يو�ضح جدول ال�صواب والخط أ� للمعامل :AND الجدول ( :)9-2جدول ال�صواب والخط�أ للمعامل .AND && B B AA FALSE FALSE FALSE FALSE TRUE FALSE TRUE FALSE FALSE TRUE TRUE TRUE ولاأمثلة لاآتية تو�ضح ا�ستخدام المعامل ( )ANDفي التعابير المنطقية. 5 > 3 && 5 < 10 مثال ()1 True && True مثال ()2 True معامل الربط ( )ORويرمز له (||) 7 >= -8 && 2 <= 1 True && False False ُي�ستخ َدم المعامل ( )ORلربط التعابير العلائقية ،ويكون ناتج التعبير المنطقي �صوابا ()True إ�ذا كان ناتج إ�حدى التعابير العلائقية المرتبطة بها �صوابا ( ،)Trueويكون ناتج التعبير المنطقي خط�أ (� )Falseإذا كان ناتج كل التعابير العلائقية المرتبطة بها خط�أ ( .)Falseوالجدول ()10-2 يو�ضح جدول ال�صواب والخط أ� للمعامل :OR 120
الجدول ( :)10-2جدول ال�صواب والخط�أ للمعامل .OR B A || BA FALSE FALSE FALSE FALSE TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE 5 > 3 || 5 < 10 ولاأمثلة لاآتية تو�ضح ا�ستخدام المعامل ORفي التعابير المنطقية. True || True مثال ()1 True مثال ()2 7 >= -8 || 2 <= 1 True || False معامل النفي ( )NOTويرمز له (!) True ي�ستخدم معامل النفي ( )NOTلنفي التعبير العلائقي أ�و المنطقي ،ف�إذا كان ناتج التعبير �صوا ًبا ( ،)Trueف�إنه ينفيه لي�صبح خط�أ ( ،)Falseو إ�ذا كان ناتج التعبير خط�أ ( ،)Falseف إ�نه ينفيه لي�صبح �صوا ًبا (.)Trueوالجدول ( )11-2لاآتي يو�ضح جدول ال�صواب والخط�أ للمعامل :NOT الجدول ( :)11-2جدول ال�صواب والخط أ� للمعامل .NOT A !A FALSE TRUE TRUE FALSE ولاأمثلة لاآتية تو�ضح ا�ستخدام المعامل NOTفي التعابير العلائقية و المنطقية. 121
)! ( 7 > -1 مثال ()1 )! ( True مثال ()2 False مثال ()3 ) ! ( 5 > 3 && 5 < 10 ملحوظة )! (True && True )! (True False ) ! ( 7 >= -8 && 2 <= 1 ) ! ( True && False )! ( False True - 1ت�ستخدم ANDللت�أكد أ�ن ناتج جميع التعابير العلائقية �صوا ًبا (.)True - 2ت�ستخدم ORللت�أكد أ�ن ناتج �أحد التعابير العلائقية �صوا ًبا (.)True ت�ستخدم التعابير المنطقية �أكثر من معامل لربط التعابير العلائقية إ�ذا كانت هذه التعابير العلائقية ثلاثة تعابير �أو أ�كثر ،وفي هذه الحالة يجب تطبيق قواعد ل أاولوية لتنفيذ التعابير المنطقية ،ح�سب الت�سل�سل لاآتي: -1لاأقوا�س - 2العمليات الح�سابية. - 3التعابير العلائقية. - 4المعامل .NOT - 5المعامل .AND - 6المعامل .OR في حالة التكاف ؤ� في لاأولوية ،ف إ� َّنه يت ّم التنفيذ من الي�سار إ�لى اليمين .ول أامثلة لاآتية تو�ضح طريقة حل التعابير المنطقية التي تحتوي على أ�كثر من معامل ،مع تو�ضيح ل أاولوية في حل هذه التعابير. 122
7+1 >= -8 && 2 <= 1 || 5 == 10-5 )1( مثال 8 >= -8 && 2 <= 1 || 5 == 5 True && False || True False || True True )2( مثال 7-3 >= 10 || 2*2 <= 1 && 5 == 5 4 >= 10 || 4 <= 1 && 5 == 5 False || False && True False || False False )3( مثال .))False || True) && False( يو�ضح هذا المثال ناتج العبارة المنطقية (False || True) && False True && False False )4( مثال .))False || True) && !False( يو�ضح هذا المثال ناتج العبارة المنطقية (False || True) && !False True && !False True && True True إ�يجاد ناتج التعبير المنطقي:)19-2( ن�شاط :بالتعاون مع أ�فراد مجموعتك �أكمل الجدول لاآتي التعبير المنطقي ناتج التعبير True && !False 9!=-9 && 2*3<=6 True && !(False || False) 4-3!= 5-3 && !(5>=7+2) || 8-5==-3 False && (True || False) && True False && True || False && True .�سجل ما تو�صلت �إليه في ملف المجموعة 123
ثالثًا :البيانات المنطقية Boolean Datatype تعتبر التعابير العلائقية والتعابير المنطقية جز ًءا أ��سا�س ًّيا في كثير من البرامج ،ويكاد لا يخلوا برنامج من هذه التعابير ،ومن الممكن كتابة هذه التعابير مبا�شرة داخل البرنام ِج �أو ُت�ستخ َدم الكلمة المحجوزة ( )boolللدلالة على نوع البيانات المنطق ّية وقيمتها إ� ّما (� )trueأو (.)false ويو�ضح ال�شكل ( )23-2كيفية تمثيل العبارات المنطقية. >#include <iostream ;using namespace std )(int main { ;bool a = true, b = false, c = true // First: write full Relational Expression ;) if( 2 != 5 || 4 + 1 > 4 * 4 && 5 > 12/3 // Second: write Logic Expression ;)if( true || false && true // Third: use bool variables ;) if( a || b && c ;return 0 } يو ّ�ضح هذا البرنامج طريقة تمثيل العبارات المنطقية: لاأولى :عن طريق كتابة التعابير العلائقية ومعها المعاملات المنطقية. الثانية :كتابة التعابير المنطقية وا�ستخدام عبار َتي ال�صواب ( )trueوالخط أ� (.)false الثالثة :ا�ستخدام المتغيرات المنطقية للتعبير عن عبارتي ال�صواب ( )trueوالخط أ� (.)false و�ستظهر �شا�شة المخرجات فارغة لعدم ا�ستخدام جملة الطباعة ( )coutفي هذا البرنامج، وخ�صو�صا ب�أن البرنامج يقوم بالتحقق من �صحة العبارات المنطقية فقط ،دون أ�ن ي ؤ�دي �أ ّي وظيفة. ال�شكل ( :)23 -2طرق تمثيل العبارات المنطقية. 124
البرمجة في حياتنا ا�ستخدم المبرمج ماهر التعابير العلائقية والمنطقية من �أجل كتابة ال�شروط التي �َسي�ستخدمها وجعل المبرمج التعابير على �شكل ملاحظات حتى.if فيما بعد في جمل الاختيار ال�شرطية : والبرنامج ل آاتي يو�ضح ذلك،يتم ا�ستخدامها فيما بعد /* ----------------------------------------- This program: Water check by: Maher ----------------------------------------- */ #include <iostream> using namespace std; int main() { // Variable int TSD = 0; float pH = 0.0; // Basic Information cout<< \"Water, Energy and Environment Center.\" <<endl; cout<< \"Section\\t: \\\"Water\\\".\" <<endl; cout<< \"Date\\t: 2016-10-24.\" <<endl; // Input data cout<<endl; cout<< \"Enter Total Dissolved Solids (TDS): \"; cin>> TSD; cout<< \"Enter Power of Hydrogen (pH): \"; cin>> pH; // Condition // TSD > 300 // pH > 6.5 && pH < 8.5 return 0; } 125
البرمجة في حياتنا ويقوم هذا البرنامج ب�إدخال قيمة المواد الذائبة ( ،)TDSثم الر ْقم الهيدروجيني ( ،)pHثم يت ّم كتابة التعابير وتو�ضع كملاحظات حتى يتم ا�ستخدامها في الف�صل القادم. 126
أﺳﺌﻠﺔ اﻟﻔﺼﻞ � -1أوجد ناتج �لتعابير �لعلائقية �ل آاتية: التعبير العلائقي الناتج التعبير العلائقي الناتج 5%2 == 1 5<3 5 * 3 % 4 != 0 7 >= 2 10 + 4 <= -4 * 8 8 != 4 50 % 10 == 0 4 == 2 + 2 5 + 9 – 10 <= 4 5 <= 6-1 � -2كتب جدول �ل�سو�ب و�لخطاأ للمعاملات �لمنطقية �ل آاتية: جـAND - بOR - أ� NOT - ُ -3ق ْم ِب َح ِّل �لتعابير �لمنطقية �ل آاتية مع تو�سيح خطو�ت �لحل. التعبير المنطقي الحل 6 + 7 < 2 – 1 && 3 == 4 2 % 3 == 2 || 6 != 6 )45/5 * 2 > 10 && !(5 < 3+2 7 < 10 && 2 > 1 || 4 !=4 )5 < 8 – 3 || ! ( 2 >= 2 && 2 <= -2 -4أ�كمل �لجدول �ل آاتي ،لاإيجاد ناتج �لتعبير �لمنطقي )A && ( B || C A B C ( A && ) B || C True True True False True True True False True False False False True True False False True False False False True 127
الف�صل ال�سابع جملة الاختيار ال�شرطية البرمجة في حياتنا طلب الباحث �أ�سامة من المبرمج ماهر أ�ن ُيظهر البرنامج بجانب فح�ص المواد ال ُّ�صلبة الذائبة ( ،)TDSوالر ْقم الهيدروجيني ( ،)pHبكلمة جيد (� )Goodإذا كان �ضمن الموا�صفات المطلوبة ،وبكلمة ( )Not Goodإ�ذا لم يكن �ضمن الموا�صفات المطلوبة. فما هي ا ألوامر التي �َسي�ستخدمها المبرمج ماهر للت أ� ّكد من �أن المياه �ضمن الموا�صفات أ�م لا؟ ت�ستخدم جملة ( ) if statementلتنفيذ جملة أ�و �أكثر ح�سب �شرط معين ،و ُيطلق عليها ا�سم جملة الاختيار ال�شرطية لاعتمادها على ال�شرط (التعبير العلائقي �أو المنطقي) في تحديد الجملة المختارة .وهناك عدة �صيغ لجملة الاختيار ال�شرطية ُت�ستخ َدم �أثناء كتابة برامج لغة ،C++وفيما يلي تو�ضيح لكل منها: أ�و ًال :جملة الاختيار ال�شرطية if statement ُت�ستخ َدم جملة ( )ifفي حالة وجود جملة أ�و أ�كثر يرغب المبرمج تنفيذها �إذا كانت قيمة التعبير العلائقي �أو المنطقي �صوا ًبا. ال�صيغة العامة لجملة ( :)if )if (condition ;statement حيث �إن: :ifكلمة محجوزة من كلمات لغة C++تعني �إذا. :conditionال�شرط (تعبير علائقي أ�و منطقي) قيمته �صواب أ�و خط�أ .فلابد من و�ضعه بين قو�سين. ; :statementجملة من جمل C++تنفذ �إذا كانت قيمة ال�شرط �صائبة. 128
وعند تنفيذ جملة ifف إانه يتم اإيجاد القيمة المنطقية لل�سرط ( ،)conditionفاإذا كانت قيمته �صائبة ( )Trueف�صيتم تنفيذ جملة ( .)statement1وال�سكل ( )24-2يو�صح مخطط �صير العمليات لجملة الاختيار ال�سرطية .if condition true statement false ال�سكل ( :)24-2مخط§ �سير العمليات لجملة الاختيار ال�سرطية .if statment وال�سكل ( ) 25-2يو�سح عملية إادخال قيمة ،ويحدد إاذا كانت القيمة المدخلة موجبة. يو�سح البرنامج ال آاتي عملية إادخال قيمة للمتغير ، numفاإذا كانت قيمته موجبة يطبع كلمة \" : \"positive >#include <iostream ;using namespace std )(int main { ;int num ;\"cout<<\"enter number : ;cin>>num )if (num>=0 ;cout<<\"positive\"<<endl ;return 0 } 129
ناتج التنفيذ عند �إدخال قيمة موجبة هو: ال�شكل ( :)25-2برنامج إلدخال قيمة وتحديد إ�ذا كانت القيمة المدخلة موجب ًة. ن�شاط ( :)20-2جملة الاختيار ال�شرطية ( )if بالتعاون مع �أفراد مجموعتك نفذ الآتي: • اكتب برنامجا بلغة C++إلدخال علامة طالب وطباعة كلمة \" \"passإ�ذا كانت العلامة �أكبر �أو ت�ساوي .50 • قم ببناء البرنامج ونفذه. • �أدخل قي ًما مختلفة لعلامة الطالب ،فماذا تلاحظ؟ احفظ البرنامج في ملف المجموعة. يو ّ�ضح ال�شكل ( )26 -2برنامج ًا يقوم ب�إدخال عدد ،ويطبعه إ�ذا كانت قيمته أ�كبر من 20 و أ�ق ّل من .100 >#include <iostream ; sing namespace stdu )(int main { ;int num ;cin>>num ;if (num>20 && num<100) cout<<num<<endl ;return 0 } ال�شكل ( :)26 -2طباعة قيمة numإ�ذا كانت �أكبر من 20و أ�ق ّل من .100 130
وفي حالة وجود �أكثر من جملة يرغب المبرمج في تنفيذها في حالة �صواب قيمة ال�شرط تح�صر الجمل بين الرمزين { } كما في المثال الآتي: )if (num>=0 { ;cout<<\"positive\"<<endl ;num=++num } يو�ضح ال�شكل( )27-2برنامج ًا يقوم ب�إدخال عددين ،x,yف إ�ذا كان xأ�كبر من ،yيطبع xثم يطبع عبارة \" ،\" is greater thanثم يطبع ،yو يطرح من قيمة xواحد. >#include <iostream ;using namespace std )(nt maini { ;int x,y ;cin>>x>>y )if (x>y { ;cout<<x<<\" is greater than \"<<y<<endl ;x=--x } ;return 0 } ناتج تنفيذ البرنامج: ال�شكل (� :)27 -2إدخال عددين وتحديد العدد الأكبر. 131
ن�شاط (� :)21-2إيجاد العدد الأكبر بالتعاون مع �أفراد مجموعتك نفذ الآتي: • اكتب برنامجا بلغة C++لإدخال ثلاثة أ�عداد وطباعتها ،و�إيجاد العدد الأكبر منها وطباعته. • قم ببناء البرنامج ونفذه. • أ�دخل قي ًما للأعداد ولاحظ الناتج. • كرر الخطوة ال�سابقة ب إ�دخال قيم ٍ�أخرى مختلفة ،ولاحظ الناتج. احفظ البرنامج في ملف المجموعة. البرمجة في حياتنا ا�ستخدم المبرمج ماهر جملة ال�شرط ifمن أ�جل �أن يت�أكد من الفحو�صات ،والبرنامج الآتي يو�ضح ذلك: */ ----------------------------------------- This program: Water check by: Maher ----------------------------------------- */ >#include <iostream ;using namespace std )(int main { // Variable ;int TSD = 0 ;float pH = 0.0 // Basic Information ;cout<< \"Water, Energy and Environment Center.\" <<endl ;cout<< \"Section\\t: \\\"Water\\\".\" <<endl ;cout<< \"Date\\t: 2016-10-24.\" <<endl // Input data 132
cout<<endl; cout<< \"Enter Total Dissolved Solids (TDS): \"; cin>> TSD; cout<< \"Enter Power of Hydrogen (pH): \"; cin>> pH; // Condition cout<< \"\\nTest Result:\\n\"; // Check TSD if (TSD > 300) cout<< \"TSD: Not Good.\" <<endl; if (TSD <= 300) cout<< \"TSD: Good.\" <<endl; // Check pH if ( pH > 6.5 && pH < 8.5 ) cout<< \"pH: Good.\" <<endl; if ( pH <= 6.5 || pH >= 8.5 ) cout<< \"pH: Not Good.\" <<endl; return 0; } حتى يختبر �إن كانت القيم مطابقة للموا�صفاتif statement قام المبرمج با�ستخدام جملة : وال�شكل الآتي يو�ضح نتائج التطبيق إلحدى الفحو�صات،التي حددها 133
ثانيًا :جملة الاختيار ال�شرطية المركبة if ...else statement البرمجة في حياتنا طلب الباحث �أ�سامة من المبرمج ماهر �أن يقوم بطباعة ناتج اختبار المياه �إن كان مقبولاً أ�م لا ،و أ�ن يطبع في نهاية البرنامج جملة النتائج مقبولة result acceptableإ�ذا لم تخالف الموا�صفات ،وجملة النتائج غير مقبولة result unacceptableفي حال خالفت الموا�صفات. فكيف �َسي�ستخدم المبرمج ماهر الأفكار التي تعلمها �سابقا لتنفيذ هذا الطلب؟ ت�ستخدم جملة if... else statementعندما يكون هناك جم ٌل يجب �أن ُتن َّفذ في حالة �صواب قيمة ال�شرط ،وجم ٌل أ�خرى ُتن َّفذ عندما تكون قيمة ال�شرط خاطئة. ال�صيغة العامة لجملة الاختيار ال�شرطية :if ...else )if (condition ;statement1 else ;statement2 حيث �إن: :ifكلمة محجوزة من كلمات لغة C ++تعني إ�ذا. :conditionال�شرط (تعبير علائقي �أو منطقي) قيمته �صواب �أو خط�أ. ; :statement1جملة من جمل C++تنفذ �إذا كانت قيمة التعبير �صائبة. :elseكلمة محجوزة من كلمات لغة C++تعني �إذا لم يتحقق ال�شرط ال�سابق. ; :statement2جملة من جمل C++تنفذ �إذا كانت قيمة التعبير المنطقي خاطئة. وعند تنفيذ جملة ifف�إنه يتم �إيجاد قيمة ال�شرط ( ،)conditionف�إذا كانت قيمته �صائبة ف�سيتم تنفيذ جملة ،statement1و�أ ّما �إذا كانت قيمته خاطئة ف�سيتم تنفيذ جملة ( ،)statement2أ� ْي �أ ّن الحا�سوب �سين ّفذ �إ ّما (� statement1أو .)statement2وال�شكل ( )28-2يو�ضح مخطط �سير العمليات لجملة الاختيار ال�شرطية if .... else 134
statement2 false condition true statement1 .if ...else مخط§ �سير العمليات لجملة الاختيار ال�سرطية:)28-2( ال�سكل أاكبرx فاإذا كان،x ، y ) برنامج ًا يقوم باإدخال عددين غير مت�ساويين29 -2( يو�سح ال�سكل ث`مy يطبعx أاكبر منy و إاذا كان،y ثم يطبع،\" is greater than \" ثم يطبع عبارةx يطبع،yمن .x ثم يطبع،\" is greater than\" يطب`ع عب``ارة #include <iostream> using namespace std ; int main() { int x,y; cin>>x>>y; if (x>y) cout<<x<<\" is greater than \"<< y<<endl; else cout<<y<<\" is greater than \"<<x <<endl; return 0; } 135
ناتج تنفيذ البرنامج: ال�شكل ( :) 29-2برنامج إلدخال عددين و�إيجاد العدد ا ألكبر. ن�شاط ( :)22-2جملة الاختيار ال�شرطية المركبة بالتعاون مع �أفراد مجموعتك نفذ الآتي: • اكتب برنامجا بلغة C++لإدخال علامة طالب وطباعة كلمة \" \"passإ�ذا كانت العلامة أ�كبر �أو ت�ساوي 50وغير ذلك يطبع كلمة \".\"fail • قم ببناء البرنامج ونفذه. • �أدخل قي ًما مختلفة لعلامة الطالب ،فماذا تلاحظ؟ احفظ البرنامج في ملف المجموعة. ن�شاط ( :)23-2ح�ساب ال�ضريبة ال�سنوية بالتعاون مع �أفراد مجموعتك نفذ الآتي: • اكتب برنامجا بلغة C++لح�ساب ال�ضريبة ال�سنوية وطباعتها لموظف يتقا�ضى رات ًبا �شهري ًا� ،إذا ُع ِل َم أ�ن ال�شخ�ص الذي يح�صل على راتب �سنوي أ�ق ّل من �ستة �آلاف دينار �سنوي ًا يدف ُع �ضريبة بمقدار ،%10بينما يدفع الموظف الذي يح�صل على راتب �سنوي �ستة الأف دينار أ�و أ�كثر �ضريبة بمقدار .%15 136
• قم ببناء البرنامج ونفذه. • �أدخل قيمة الراتب ال�شهري ،فماذا تلاحظ؟ • ك ّرر الخطوة ال�سابقة ،و�س ّجل ملاحظاتك. احفظ البرنامج في ملف المجموعة. البرمجة في حياتنا قام المبرمج ماهر با�ستخدام فكرة الراية Flagفي البرنامج ،حيث إ�ن الراية هي عبارة عن قيمة متغير منطقي قيمتها ا ألولية trueوتبقى هكذا ما لم يتم التغير عليها حتى نهاية البرنامج، ويتم التغير �إذا ت ّم رف�ض إ�حدى الموا�صفات التي تم فح�صها ،وفي نهاية البرنامج يتم فح�ص هذه القيمة بجملة �شرطية ،والبرنامج الآتي يو�ضح التعديلات التي قام بها المبرمج ماهر لأداء هذا البرنامج. */ ----------------------------------------- This program: Water check by: Maher ----------------------------------------- */ >#include <iostream ;using namespace std )(int main { // Variable ;int TSD = 0 ;float pH = 0.0 ;bool flag = true // Basic Information ;cout<< \"Water, Energy and Environment Center.\" <<endl ;cout<< \"Section\\t: \\\"Water\\\".\" <<endl ;cout<< \"Date\\t: 2016-10-24.\" <<endl 137
// Input data cout<<endl; c out<< \"Enter Total Dissolved Solids (TDS): \"; cin>> TSD; cout<< \"Enter Power of Hydrogen (pH): \"; cin>> pH; // Condition cout<< \"\\nTest Result:\\n\"; // Check TSD if (TSD > 300) { cout<< \"TSD: Not Good.\" <<endl; flag = false; } else cout<< \"TSD: Good.\" <<endl; // Check pH if ( pH > 6.5 && pH < 8.5 ) cout<< \"pH: Good.\" <<endl; else { cout<< \"pH: Not Good.\" <<endl; flag = false; } // Check the flag if (flag) cout<< \"Result Acceptable.\" <<endl; else cout<< \"Result Unacceptable.\" <<endl; return 0; } 138
كما هو مو�ضح في البرنامج قام المبرمج ب�إ�ضافة متغير( )flagمن النوع المنطقي ()bool و أ�عطاه قيمة ابتدائية ( ،)trueومن البرنامج ُيلا َحظ �أ ّن قيمة المتغير المنطقي ( )flagلا تتغير �إلا في الجانب من الجملة ال�شرطية التي لا يطابق فيها الاختبار الموا�صفات ،ويتحول من قيمة ( )trueإ�لى قيمة ( ،)falseوفي النهاية يقوم البرنامج باختبار قيمة هذا المتغير المنطقي (،)flag ففي حالة أ�نه لم يتغير عن قيمة ( )trueفهذا يدل على �أنه لم يدخل في �أ ّي تطبيق من جمل رف�ض الفح�ص ،وهنا تكون النتائج مقبولة ،و�إذا كان المتغير قيمته ( )falseفهذا يدل على أ�نه طبق �إحدى جمل ال�شرط التي لا توافق الموا�صفات ،وهنا تكون النتائج غير مقبولة ،و�شا�شات المخرجات الآتية تو�ضح ناتج قيم مقبولة. 139
أﺳﺌﻠﺔ اﻟﻔﺼﻞ - 1بين �سبب الخطاأ في كل من جمل الاختيار ال�سرطية الاآتية ،ثم أَا ِع rد كتابتها ب�سكل �سحيح: جمل ا إلاختيار ال�شرطية �شبب الخطاأ if (a!=0) a=++a ;ELSE a=a++ ;If a>0 cout<<a<<endl ;if (a==4) a=b else b=a if (a>5); a=++a )if (a==4 ;cout<<a++<<endl else if ;cout<<++a<<endl )If (x { x=x*x-3 } -2اكتب برنامج ًا بلغة C++لاإدخال عدد ،وطباعته إاذا كان يقبل الق�سمة على 6أاو يقبل الق�صمة على .9 -3اكتب برنامج ًا بلغة C++ل إادخال ا�سم �سكل هند�سي ف إاذا كان مربع (ُ )Squareتح َ�صب م�ساحته ح�سب المعادلة ( م�ساحة المربع = طول ال�سلع × طول ال�سلع ) و ُتطبع ،و إاذا كان مثلث ( ُ ) Triangleتح َ�سب م�ساحته ح�سب المعادلة (م�ساحة المثلث = ن�سف القاعدة × الرتفاع) و ُتطبع. 140
#include <iostream> : ما الناتج النهائي لتنفيذ ك ٍّل من البرامج الآتية-4 using namespace std ; int main () /* { This program: Print the result int x=5 , w=8 ,s; */ string z=\"even \"; #include <iostream> float y=3.5 ,avg; using namespace std; if (x % int(y)== 0) int main () { { s = x+ y + w; int x=3 , y=7; avg = s / 3; float z=3.5; cout<< \" // if statment AVERAGE=\"<<avg<<endl; if (x%y==3 && z-0.5>x) } c out<< \"x%y==3 && z-0.5<=x\" <<endl; return 0; cout<<x<<z <<endl; } cout<<\"end\" <<endl; return 0; } 141
الف�صل الثامن جملة التَّكرار for statment البرمجة في حياتنا طلب الباحث �أ�سامة من المبرمج ماهر �أن يقوم البرنامج ب أ�داء فح�ص لأكثر من َع ِّينة للمياه �أثناء عمل البرنامج ،و�أن عدد مرات الفح�ص يت ّم تحدي ُدها من ِق َب ِل الباحث قبل البدء بعمليات الفح�ص. فما هي ا ألوامر التي �َسي�ستخدمها المبرمج ماهر لتكرار عملية فح�ص العينات ؟ جملة التكرار for statementهي إ�حدى �أ�شهر جمل التكرار ،و ُت�ستخ َدم لتكرار تنفيذ جمل لغة C++بعدد محد ٍد من المرات. أ�و ًال :ال�صيغة العامة لجملة التّكرار for statement )for (Variable_name= initial_value ; condition; step { ;Statement 1 … ;Statement n } حيث إ�ن: : forكلمة محجوزة من كلمات لغة C++تعلن عن بدء جملة التكرار. :Variable_nameهو ا�سم متغير ،يجب الالتزام ب�شروط اختيار ا�سم المتغير. :initial_valueالقيمة الابتدائية لل َع ّداد ،قد تكون قيمة عددية او متغير عددي �أو تعبير ح�سابي. ويمكن تعريف المتغير في هذه الخطوة مثل.int counter=1 : � :conditionشرط (تعبير علائقي �أو منطقي) الدخول إ�لى جمل التكرار. 142
: stepالزيادة الدورية لقيمة الع ّداد (ا إلجراء الذي يحد çبعد تنفيذ الجمل المراد تكرار تنفيذها) ،وقد تكون موج ِب ًة أاو �سالبة ،عدداً �سحيحا أاو عدداً ع�سري ًا ،تعبيراً ح�سابي ًا أاو متغيراً عددي ًا .وعادة ي�صتخدم معامل الزيادة ( )++اأو معامل النق�صان (.)-- { :رمز بداية جملة التكرار ،وت�ستخدم في حال وجود اأكثر من جملة ُيراد تكرا ُر تنفيذها. :statement 1; … statement nجم ُل C++التي نرغب بتكرار تنفيذها. } :رمز نهاية جملة التكرار. عند تنفيذ جمل`ة التك`رار ( )forياأخ`ذ الع`داد القيم`ة الابتدائية ،ثم يتحق`ق م`ن ال�س`رط ( )conditionفاإذا كانت قيمة ال�سرط �سائبة يتم تنفيذ الجمل المراد تكرار تنفيذها ،ثم تعدل قيمة العداد ح�سب قيمة الزيادة اأو النق�سان المحددة ،ويتحقق من قيمة ال�سرط ()condition فاإذا كانت قيمته �سائبة :ينفذ الجمل المراد تكرار تنفيذها ،ويعدل قيمة العداد بمقدار قيمة الزيادة أاو النق�سان المحددة ثم يتحقق من ال�سرط وهكذا ...إالى أان ت�سبح قيمة ال�سرط خاطئة عندها يخر êمن جملة التكرار وينفذ الجمل التي تليها .وال�سكل ( )30-2يو�صح مخطط �صير العمليات لجملة التكرار (.)for Variable_name= initial_value condition true step false statements ال�سكل ( :)30-2مخطط �صير العمليات لجملة التكرار .for 143
يو�ضح ال�شكل( )31-2برنام ًجا يطبع \" \"Hello worldبا�ستخدام جملة التكرار ()for خم�س مرات. > include <iostream# ;using namespace std )(int main { ;int counter )for (counter =1 ; counter <=5 ; counter ++ ;cout << \"Hello world\"<< endl ;return 0 } ناتج تنفيذ البرنامج: لاحظ �أنه عندما تكون قيمة العداد � counterأق ّل �أو ي�ساوي 5يطبع \"\"Hello world ويتوقف التكرار عندما ت�صبح قيمة العداد � .6إذن قيمة العداد counterعند توقف التكرار هي ( 6وهي �أول قيمة تجعل قيمة ال�شرط خاطئة). ال�شكل ( :)31-2برنامج يطبع \" \"Hello worldبا�ستخدام جملة التكرار ( )forخم�س مرات. 144
يو�ضح ال�شكل( )32-2برنامج َا يطبع الأعداد من 0إ�لى 8با�ستخدام جملة التكرار .for > include <iostream# ;using namespace std )(int main { )for (int i=0 ; i<=8 ; i++ ;cout << i<< endl ;return 0 } ناتج تنفيذ البرنامج: لاحظ عندما تكون قيمة العداد (� )iأقل �أو ي�ساوي ( )8يطبع قيمته ،ويتوقف التكرار عندما ت�صبح قيمة العداد (� .)9إذن قيمة العداد ( )iعند توقف التكرار هي (.)9 ال�شكل ( :)32-2برنامج يطبع ا ألعداد من 0إ�لى ، 8با�ستخدام جملة التكرار. 145
ملحوظة لا فرق في ا�ستخدام معامل الزيادة أ�و النق�صان القبلي( )-- i،++iأ�و البعدي ( )i--، i ++في جملة التكرار ،فكلتاهما ي�ؤديان الوظيفة نف َ�سها. ن�شاط ( :)24-2طباعة الأعداد من � 1إلى 10 بالتعاون مع �أفراد مجموعتك نفذ الآتي: • اكتب برنامج ًا لطباعة ا ألعداد من � 1إلى 10با�ستخدام جملة التكرار .for • قم ببناء البرنامج ونفذه ،فماذا تلاحظ؟ • عدل البرنامج ليطبع الأعداد من ( )-7إ�لى( ،)9ثم قم ببناء البرنامج ونفذه ،فماذا تلاحظ؟ • عدل البرنامج ال�سابق لطباعة الأعداد من (� )15إلى ( ،)1قم ببناء البرنامج ونفذه ،فماذا تلاحظ؟ احفظ البرنامج في ملف المجموعة. يو�ضح ال�شكل ( )33-2برنام ًجا يطبع ا ألعداد الزوجية من 2إ�لى ،16با�ستخدام جملة التكرار .for > include <iostream# ;using namespace std )(int main { ;int j )for( j=2 ; j<=16 ; j+=2 ;cout<<j<<endl ;cout<<endl ;cout<<j ;return 0 } 146
ناتج التنفيذ: لحظ اأنه تم طباعة قيمة العداد النهائية بعد توقف جملة التكرار وهي (.)18 ال�سكل ( :)33-2برنامج يطبع الأعداد الزوجية من ( )2إالى (.)16 ج ّرب بنف�ش∂ بالتعاون مع أافراد مجموعتك تحقق من �سحة جمل التكرار الاآتية: int i = 3 ;float c = 3.5 'char j = 'A )for ( ; i <= 10 ; i++ ); for ( ; c <= 10 ;for(; j<='E';j++)cout<<j } } ;cout<<i<<endl ;cout<<c<<endl { ;c+=0.5 { ناق�ص ما تو�سلت إاليه مع أافراد مجموعتك. 147
ن�شاط ( :)25-2طباعة مت�سل�سلة بالتعاون مع �أفراد مجموعتك ن ّفذ ا آلتي: • اكتب برنامج ًا يقوم بطباعة المتتالية الآتية: 5 ,10 , 15 ,20,… ,100 • قم ببناء البرنامج ونفذه ،فماذا تلاحظ؟ • عدل البرنامج ال�سابق ليقوم بطباعة المتتالية الآتية: 3.25 ,3.50 ,3.75 ,4... ,10 • قم ببناء البرنامج ونفذه ،فماذا تلاحظ؟ احفظ البرنامج في ملف المجموعة. ن�شاط ( :)26-2ناتج تنفيذ بالتعاون مع �أفراد مجموعتك نفذ البرنامج الآتي: >#include <iostream ;using namespace std )(int main { ) for( char m='a'; m<='z' ;m++ ;cout<<m<<endl ;return 0 } • ما ناتج تنفيذ البرنامج ال�سابق؟ • عدل البرنامج ال�سابق بحيث يطبع الأحرف الكبيرة ( )Capital Lettersمن � Aإلى .Z احفظ البرنامج في ملف المجموعة. 148
Search
Read the Text Version
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209
- 210
- 211
- 212
- 213
- 214
- 215
- 216
- 217
- 218
- 219
- 220
- 221
- 222
- 223
- 224
- 225
- 226
- 227
- 228
- 229
- 230
- 231
- 232
- 233
- 234
- 235
- 236
- 237
- 238
- 239
- 240
- 241
- 242
- 243
- 244
- 245
- 246
- 247
- 248
- 249
- 250
- 251
- 252
- 253
- 254
- 255
- 256
- 257
- 258
- 259
- 260
- 261
- 262
- 263
- 264
- 265
- 266
- 267
- 268
- 269
- 270
- 271
- 272
- 273
- 274
- 275
- 276
- 277
- 278
- 279
- 280
- 281
- 282
- 283
- 284
- 285
- 286
- 287
- 288
- 289
- 290