Important Announcement
PubHTML5 Scheduled Server Maintenance on (GMT) Sunday, June 26th, 2:00 am - 8:00 am.
PubHTML5 site will be inoperative during the times indicated!

Home Explore مشاركة الحاسوب الاول الثانوي

مشاركة الحاسوب الاول الثانوي

Published by Deema.alhalabi81, 2021-08-28 08:44:47

Description: مشاركة الحاسوب الاول الثانوي

Keywords: حاسو,ب

Search

Read the Text Version

‫ال�شكل (‪ :)18-2‬إ�دخال عددين و�إيجاد مجموعهما وطباعة الناتج‪.‬‬ ‫و أل َّن على الم�ستخدم إ�دخال قيم للمتغيرات‪ ،‬ف�إنه قد ين�سى نوع المتغيرات وعددها‪ ،‬فيقوم‬ ‫الحا�سوب با�ستقبال اي قيمة مدخلة وتحويلها إ�لى النوع المنا�سب‪ ،‬لذلك يف�ضل �إعلام الم�ستخدم‬ ‫بالبيانات الواجب إ�دخالها عن طريق طباعة ر�سالة للم�ستخدم حتى ُين ِّفذ البرنامج بطريقة �صحيحة‪.‬‬ ‫وفي المثال ال�سابق يمكن أ�ن ت�سبق جملة لإادخال جملة الطباعة وتو َّ�ضح لل ُم�ستخ ِدم على النحو‬ ‫ل آاتي‪:‬‬ ‫;‪cout <<\"Enter two numbers: \" <<endl‬‏‬ ‫;‪ in>>a>>b‬‏‪c‬‬ ‫فعند تنفيذ البرنامج تظهر كالآتي‪:‬‬ ‫�سيتوقف البرنامج منتظرا من الم�ستخدم �إدخال قيمتين عدديتين‪ ،‬وبهذا يتم �إعلام الم�ستخدم‬ ‫بالبيانات الواجب إ�دخالها‪.‬‬ ‫ن�شاط (‪ :)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_name‬‏‪s‬‬ ‫;‪int m1,m2,m3,m4‬‏‬ ‫;‪float average‬‏‬ ‫;‪ out << \"Enter student name: \" <<endl‬‏‪c‬‬ ‫;‪cin >>student_name‬‏‬ ‫;‪ out << \"Enter four marks: \" <<endl‬‏‪c‬‬ ‫;‪cin >>m1>>m2>>m3>>m4‬‏‬ ‫;‪ verage=(m1+m2+m3+m4)/4‬‏‪a‬‬ ‫‪cout << \"student name is: \" <<student_name<<\" \\t\"<<\"average=\" <<average‬‬ ‫;‪<<endl‬‬ ‫;‪eturn 0‬‏‪r‬‬ ‫}‬ ‫فيكون الناتج كما ي�أتي‬ ‫ال�شكل (‪ :)19-2‬برنامج لح�ساب مع ّدل الطالب وطباعته‪.‬‬ ‫‪100‬‬

‫ن�شاط (‪ :)10-2‬إ�يجاد ناتج تنفيذ البرنامج‬ ‫بالتعاون مع أ�فراد مجموعتك اكتب البرنامج الآتي‪ ،‬ثم قم ببنائه‪ ،‬ثم ن ّفذه و أ�د ِخل قيمة‬ ‫‪ 4‬للمتغير ‪ x‬و ‪ 8.5‬للمتغير ‪.y‬‬ ‫>‪ include <iostream‬‏‪#‬‬ ‫;‪using namespace std‬‏‬ ‫)(‪int main‬‏‬ ‫{‬ ‫;‪int x ,z‬‬ ‫;‪float y‬‬ ‫;‪ in>>x>>y‬‏‪c‬‬ ‫;‪ =y+0.5‬‏‪y‬‬ ‫;)‪ =x*x/(x-5‬‏‪z‬‬ ‫;‪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 ‫;‏‬ i‫‏‬nt main() i‫‏‬nt 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; // 3‬‏‪c‬‬ ‫‪ out <<-10% 7 <<endl; // -3‬‏‪c‬‬ ‫‪ out << 10%-7 <<endl; // 3‬‏‪c‬‬ ‫‪ out <<-10%-7 <<endl; // -3‬‏‪c‬‬ ‫‪ - 2‬إ�ذا كان العدد المق�سوم أ�قل من العدد المق�سوم عليه ف�إن نتيجة باقي الق�سمة هي العدد‬ ‫المق�سوم كما في المثال لاآتي‪:‬‬ ‫‪ out <<7%10 <<endl; // 7‬‏‪c‬‬ ‫عدد‬ ‫ع�شريًا‪ ،‬فيجب تحويله إ�لى‬ ‫أ�حد العددين (المق�سوم أ� ِو المق�سوم عليه)‬ ‫�إذا كان‬ ‫‪-3‬‬ ‫مهما‬ ‫ال�صحيح من العدد الع�شري‬ ‫با�ستخدام الاقتران ‪ ، int‬حيث ُيعطي الجزء‬ ‫�صحيح‪،‬‬ ‫كانت قيمته‪،‬كما في المثال لاآتي‪:‬‬ ‫‪ cout << (int)10.6%3 <<endl; //1‬أ�و ;‪ out << int(10.6)%3 <<endl‬‏‪c‬‬ ‫ن�شاط (‪ :)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 std‬‏‪u‬‬ ‫)(‪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=0‬‏‪i‬‬ ‫;‪nt w,z‬‏‪i‬‬ ‫;‪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‬‬ ‫‪ +=2‬‏‪c‬‬ ‫=‪+‬‬ ‫‪c=c-5‬‏‬ ‫‪ -=5‬‏‪c‬‬ ‫=‪-‬‬ ‫‪c=c*8‬‏‬ ‫‪c*=8‬‬ ‫=*‬ ‫‪ =c/5‬‏‪c‬‬ ‫‪c/=5‬‏‬ ‫=‪/‬‬ ‫‪c=c%3‬‏‬ ‫‪ %=3‬‏‪c‬‬ ‫=‪%‬‬ ‫البرمجة في حياتنا‬ ‫ا�ستخدم المبرمج ماهر طرق تحويل المعادلات من �صيغتها الجبرية إ�لى ‪ ،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 A‬‏‪A‬‬ ‫‪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 || B‬‏‪A‬‬ ‫‪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 std‬‏‪u‬‬ ‫)(‪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 main‬‏‪i‬‬ ‫{‏‬ ‫;‪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 ;‫‏‬ i‫‏‬nt 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; i‫‏‬f (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‬‬


Like this book? You can publish your book online for free in a few minutes!
Create your own flipbook