‫قبل البدء بالدرس الثاني هذا حل الوظيفة التي كانت في ملف‬

‫الدرس الول‬
‫أرجوا أن تكونوا قد حاولتم فيها‬
‫كود‪:‬‬

‫>‪# include <iostream.h‬‬
‫)(‪void main‬‬
‫;‪int x1,x2,x3,x4‬‬
‫;" ‪cout<<" Please Enter 4 numbers‬‬
‫;‪cin>> x1>>x2>>x3>>x4‬‬
‫;‪cout<<" sum = "<<x1+x2+x3+x4<<endl‬‬
‫;‪cout<<" sub= "<< x1-x2-x3-x4<<endl‬‬

‫{‬

‫}‬

‫شرح الحل ‪:‬‬
‫• في البداية فتحنا ملف أو مكتبة ‪ iostream‬حتى نتمكن من إستخدام الـ ‪ cin‬و‬
‫‪. cout‬‬
‫• كتبنا الجملة اللتي نكتبه في كل برنامج‬
‫كود‪:‬‬
‫) ‪void main ( void‬‬

‫فتحنا أقواس البرنامج ‪.‬‬
‫• قمنا بتعريف المتغيرات الربعة وهي عبارة عن الماكن اللتي ستفتح في ذاكرة‬
‫الكمبيوتر حتى يتمكن المستخدم من إدخال الربع أعداد ‪.‬‬
‫• قمنا بطباعة عبارة " ‪ " Pleas enter 4 number‬حتى يفهم المستخدم‬
‫أن المطلوب منه إدخال أربع أرقام ‪.‬‬
‫• استخدمنا ‪ cin‬لكي يبدأ المستخدم بإدخال العداد الربعة ‪.‬‬
‫• بعد ذلك قمنا بطباعة ناتج الجمع ‪ x1+x2+x3+x4‬وأضفنا قبلها عبارة‬
‫‪ =SUM‬حتى يرى المستخدم أن هذه هي نتيجة الجمع ‪.‬‬
‫• استخدمنا المر ‪ endl‬لكي ينزل البرنامج سطر للسفل ‪.‬‬
‫• وأخيرًا قمنا بطباعة ناتج الطرح كما فعلنا مع الجمع ثم أغلقنا قوس البرنامج ‪.‬‬
‫وهذا كل ما في المر !!‬
‫حسنًا دعونا نتعمق الن بعض الشيء ‪ ..‬مع ادرس الثاني ‪:‬‬

‫‪GO‬‬
‫=========الدرس الثاني=========‬
‫العمليات الحسابية في لغة ال ‪:++C‬‬
‫في لغة السي بلس بلس نستخدم رموز معروفة للعمليات الحسابية مثل الجمع‬
‫والطرح والضرب ‪ .......‬إلخ‬
‫= = علمة المساوة‬
‫‪ +‬علمة الجمع ‪.‬‬
‫ علمة الطرح ‪.‬‬‫* علمة الضرب ‪.‬‬
‫‪ /‬علمة القسمة ‪.‬‬
‫‪ %‬علمة إيجاد الباقي من القسمة‬
‫ل ‪ ..‬لو أردنا كتابة المعادلة التالية بـ لغة البرمجة ‪..‬‬
‫فمث ً‬

‫‪R = 5 × 6 + ( y ÷ 4 ) -3‬‬
‫ستكون بالشكل التالي ‪:‬‬
‫‪( R = ( (5 * 6 ) + ( y / 4 ) -3‬‬
‫س ‪ /‬ما الفرق إذا بين علمة المساواة الواحدة ) = ( وعلمة المساواة الثنائية‬
‫) = = ( ؟؟‬
‫إن علمة المساواة الواحد تستخدم لعملية وضع قيمة ‪ ..‬يعني نريد أن نضع قيمة‬
‫‪ x‬في ‪، y‬‬
‫على سبيل المثال ‪،‬‬
‫في البرنامج التالي ‪:‬‬

‫كود‪:‬‬
‫>‪# include <iostream.h‬‬
‫) ‪void main ( void‬‬
‫{‬
‫; ‪int x = 5‬‬
‫; ‪int y = 6‬‬
‫; ‪int z‬‬
‫; ‪z = x + y‬‬
‫; ‪cout << z‬‬
‫}‬

‫سيقوم البرنامج بفتح ‪ 3‬أماكن فارغة في الذاكرة للـ ‪ x‬و ‪ y‬و ‪.. z‬‬
‫ثم سيقوم بوضع القيمة ‪ 5‬في مكان ‪ x‬بالذاكرة ‪..‬‬
‫ويضع القيمة ‪ 6‬في مكان ‪ y‬بالذاكرة ‪..‬‬

‫وأخيرًا يقوم بجمع القيمة الموجودة داخل ‪ x‬مع القيمة الموجودة داخل ‪ y‬ويضع‬
‫الناتج في مكان ‪ z‬بالذاكرة ‪..‬‬
‫ولذلك ‪ ..‬عندما نقوم بطباعة ‪ z‬سيكون الناتج ‪. 11‬‬
‫ل عندما‬
‫أما علمة المساواة الثنائية ‪ ..‬فإن أغلب استخداماتها في المقارنة ‪ ..‬فمث ً‬
‫نقول أن‬
‫كود‪:‬‬
‫; ‪R = = x + y‬‬

‫فهذا يعني أن هناك قيمة في المتغير ‪ R‬وأن قيمة مجموع ‪ x + y‬ستكون مساوية‬
‫للقيمة الموجودة في ‪ R‬أي نفس القيمة في المجموع ‪ ..‬ستكون موجودة في ‪، R‬‬
‫ول تعني أن مكان ‪ R‬فارغ كما كان مكان ‪ z‬في المثال سابق ‪.‬‬

‫دعونا نعود مرًة أخرى للبرنامج السابق ‪:‬‬

‫كود‪:‬‬
‫>‪# include <iostream.h‬‬
‫) ‪void main ( void‬‬
‫{‬
‫; ‪int x = 5‬‬
‫; ‪int y = 6‬‬
‫; ‪int z‬‬
‫; ‪z = x + y‬‬
‫; ‪cout << z‬‬
‫}‬

‫عندما يأتي البرنامج لينفذ السطر التالي ‪:‬‬
‫كود‪:‬‬
‫; ‪Z = x + y‬‬

‫فإنه سيقوم بـ ))) نسخ ((( القيمة الموجودة داخل ‪ x‬ونفس المر مع ‪ y‬ثم‬
‫يجمعهما ويضع الناتج في مكان ‪ z‬بالذاكرة ‪.‬‬
‫إذا يقوم البرنامج بنسخ القيم ‪ ،‬ول ينقل القيم ‪ ،‬لنه لو نقل القيم لصبح بعد تنفيذ‬
‫البرنامج مكان ‪ x‬و ‪ y‬فارغًا ‪ ..‬وبالتالي لو استخدمنا ‪ x‬مرة أخرى في نفس‬
‫البرنامج فإن قيمتها ستكون صفر ‪ ،‬لذلك يقوم البرنامج بنسخ القيم وليس نقلها ‪.‬‬

‫حسنًا ‪ ..‬الن لنتأمل الربع الجمل التالية ‪..‬‬
‫كود‪:‬‬
‫; ‪X = X + 1‬‬
‫; ‪X ++‬‬
‫; ‪++ X‬‬
‫; ‪X+ =1‬‬

‫)‪1‬‬
‫)‪2‬‬
‫)‪3‬‬
‫)‪4‬‬

‫انتهينا ‪ ..‬حسنًا ‪ ..‬لنتأملهم مرة أخرى !!‪..‬‬
‫كود‪:‬‬
‫; ‪X = X + 1‬‬
‫; ‪X ++‬‬
‫; ‪++ X‬‬
‫; ‪X+ =1‬‬

‫)‪5‬‬
‫)‪6‬‬
‫)‪7‬‬
‫)‪8‬‬

‫إن تلك الجمل الربعة معناها واحد في لغة سي بلس بلس ‪..‬‬
‫ومعناها ‪ ..‬أن نقوم بزيادة قيمة ‪ x‬بمقدار واحد ‪. 1‬‬
‫ي من الجمل الربعة السابقة ‪..‬‬
‫يعني لو كانت ‪ x‬تساوي خمسة ‪ ..‬بعد تنفيذ أ ٍ‬
‫ستكون قيمة ‪ x‬تساوي ستة ‪.‬‬
‫لكن ‪ ..‬هناك اختلف بسيط بين الجملتين الثانية والثالثة ‪ ..‬قد يؤدي هذا الختلف‬
‫إلى قلب المعنى تمامًا ‪ ..‬ولكني لن أتطرق إلى شرح ذلك الختلف ‪ ..‬لن شرحه‬
‫صعب وفهمه أصعب بكثير جدًا ‪ ..‬وما زلنا في البداية ‪ ,,‬لذلك سنعبر تلك النقطة‬
‫إلى ما بعدها ‪..‬‬

‫أولويات العمليات الحسابية ‪..‬‬
‫وهذا يعني ‪ :‬أنه إذا تعرضنا لعملية حسابية معينة تحتوي على ضرب وقسمة‬
‫وجمع و‪ .....‬إلخ ‪ ،‬فإننا سنقوم بتنفيذ العمليات بالترتيب‬
‫ملحظة ‪ :‬إذا تعارضت عمليتان حسابيتان لهما نفس الولوية فإننا نقوم بتنفيذ‬
‫العملية القرب لليسار ‪..‬‬
‫ل ‪ ..‬لو جاءت عملية تحتوي على ضرب وقسمة ‪ ..‬فسنقوم بتنفيذ العملية‬
‫فمث ً‬
‫القرب لليسار لن الضرب والقسمة لهما نفس الولوية ‪.‬‬

‫عمليات المقارنة ‪..‬‬
‫تعتبر من أهم العمليات ‪ ..‬وتحتوي على رموز سهلة وبسيطة ‪:‬‬
‫كود‪:‬‬
‫من أكب‬
‫أصغر من‬
‫أكب من أو يساوي‬
‫أصغر من أو يساوي‬
‫يساوي‬
‫ل يساوي‬

‫ونستخدم عمليات المقارنة كثيرًا في أدوات الشرط ‪..‬‬

‫>‬
‫<‬
‫=<‬
‫=>‬
‫= =‬
‫=!‬

‫الجمل الشرطية ‪..‬‬
‫الجمل والوامر الشرطية ‪ ..‬تعني أننا نعطي للبرنامج شرط ‪ ،‬وإذا تحقق هذا‬
‫الشرط ينفذ البرنامج شيء معين ‪ ،‬أما إذا لم يتحقق ينفذ شيء آخر ‪..‬‬
‫ومن أشهر الجمل الشرطية اللتي سنستخدمها بإذن ال ‪..‬‬
‫جملة ‪... if ... else‬‬
‫وجملة ‪SWITCH‬‬

‫المر ‪:.… If …. Else‬‬
‫هذا المر بمعنى ‪ :‬لو حدث كذا ) ونعطيه الشرط المطلوب ( افعل كذا ) ونعطيه ما‬
‫ينبغي فعله في حالة حدوث الشرط ( وإل كذا ) فإن لم يتحقق الشرط يفعل شيء‬
‫آخر(‬
‫ولفهم هذا المر جيدا ‪ ..‬سنقوم بتطبيقه على مثال عملي ثم نشرحه ‪..‬‬
‫مثال ‪ :‬اكتب برنامج اختبار لدرجة الطلب ‪ ..‬بحث يدخل المستخدم الدرجة ‪ ،‬ولو‬
‫كات هذه الدرجة أكبر من أو تساوي الخمسين فإن البرنامج يخبرنا بأن الطالب‬
‫ناجح ‪ ،‬وإذا كانت أقل من ‪ 50‬يخبرنا البرنامج بأن الطالب راسب ‪.‬‬
‫كود‪:‬‬
‫>‪# include <iostream.h‬‬
‫)( ‪void main‬‬
‫{‬
‫; ‪float k‬‬
‫; " ? ‪cout << " Pleas Enter the mark‬‬
‫; ‪cin >> k‬‬
‫) ‪if ( k >= 50‬‬
‫; "‪cout << "\n the student Successful‬‬
‫‪else‬‬
‫; " ‪cout << " \n the student Filled‬‬
‫}‬

‫شرح المثال ‪:‬‬
‫• في البداية قمنا بتعريف المتغير اللذي سيفتح مكان في الذاكرة ليمكننا من إدخال‬
‫الدرجة ‪.‬‬
‫• بعد ذلك سنطبع على شاشة عبارة يفهم منها المستخدم أن المطلوب منه إدخال‬
‫الدرجة ‪.‬‬
‫• استخدمنا ‪ cin‬لبدأ إدخال الدرجة ووضعها في الذاكرة في مكان المتغير ‪. k‬‬
‫• الن لحظ التالي ‪:‬‬
‫استخدمنا ‪ if‬لكي نقارن الدرجة المدخلة هل هي أكبر من أو تساوي الخمسين أم‬
‫أصغر ؟ ‪...‬‬
‫وضغنا الدرجة ‪ k‬ثم علمة المقارنة أكبر من أو يساوي ثم رقم ‪ 50‬وهو الرقم‬
‫الفاصل اللذي سيحدد لنا ‪.‬‬
‫لحظ ‪ ..‬أننا لم نضع فاصلة منقوطة بعد عبارة ‪ if‬لنها من الستثنائيات اللتي‬
‫تحدثنا عنها في الدرس الول ‪.‬‬
‫• نعود لبرنامجنا ‪ ..‬إذا تحقق الشرط ‪ ..‬أي كانت الدرجة أكبر من أو تساوي‬
‫الخمسين سنقوم بطباعة المر ما بعد ‪ if‬وإن لم يتحقق سنقوم بفعل ما بعد‬
‫‪. else‬‬
‫• وهكذا انتهى البرنامج بإغلق القوس ‪.‬‬
‫ملحظات عامة ‪:‬‬
‫‪-1‬‬
‫ل يمكن كتابته على الشكل‬
‫ل يشترط كتابة ‪ else‬في جملة ‪ if‬فالبرنامج السابق مث ً‬
‫التالي ‪:‬‬
‫كود‪:‬‬

‫>‪# include <iostream.h‬‬

‫)( ‪void main‬‬

‫{‬

‫; ‪float k‬‬
‫; " ? ‪cout << " Pleas Enter the mark‬‬
‫; ‪cin >> k‬‬
‫) ‪k >= 50‬‬
‫; "‪<< "\n the student Sucsseful‬‬
‫) ‪k< 50‬‬
‫; " ‪<< " \n the student Filled‬‬

‫( ‪if‬‬
‫‪cout‬‬
‫( ‪if‬‬
‫‪cout‬‬

‫وهنا سيقوم البرنامج بقراءة جملة ‪ if‬الولى فإذا تحقق الشرط ينفذ ما فيها ‪ ،‬وإن‬
‫لم يتحقق فسينفذ ما بعد جملة ‪ ، if‬وحينها سينتقل لجملة ‪ if‬الثانية ‪ ....‬وهكذا ‪.‬‬
‫‪-2‬‬
‫من الممكن تنفيذ عدة أوامر في حال تحقق شرط ‪ if‬ول يشترط أمر واحد ‪..‬‬
‫القاعدة التالية مع شرحها ستوضح الكثير بإذن ال ‪..‬‬
‫في السطر التالية ‪:‬‬
‫كود‪:‬‬
‫جلة ‪1‬‬
‫جلة ‪2‬‬

‫) ‪If ( K >= 3‬‬
‫; " ‪Cout << "\n you typed‬‬
‫; " ‪Cout << " Yassmean‬‬

‫لحظ التي ‪ •:‬لو تحقق شرط جملة ‪ if‬سيقوم البرنامج بتنفيذ الجملتين ‪.‬‬
‫• لو لم يتحقق الشرط سيقوم البرنامج بتنفيذ الجملة الثانية وترك الجملة الولى ‪.‬‬
‫• لجعل البرنامج ل ينفذ الجملتين في حالة عدم تحقق الشرط يتم وضع أقواس‬
‫على الشكل التالي ‪:‬‬
‫كود‪:‬‬
‫‪{ cout<<"\n……….‬‬
‫} ;"‪cout ……....."Yassmean‬‬

‫أتمنى أن يكون كل شيء قد اتضح الن ‪.‬‬

‫قاعدة ) و – أو(‪:‬‬
‫ماذا لو أردنا وضع أكثر من شرط في جملة ‪ if‬حينها يجب أن نستخدم أحد الداتين‬
‫‪ and‬أو الداة ‪... or‬‬
‫الفرق بين الداتين ‪:‬‬
‫‪ : And‬ورمزها && و تشترط أن يتحقق كل الشروط الموجودة في جملة ‪. if‬‬
‫‪ : Or‬ورمزها || و تشترط تحقق واحد على القل من الشروط الموجودة داخل‬
‫جملة ‪. if‬‬

‫مثال ‪ :‬لو أردنا كتابة برنامج يقوم بحساب تقدير طالب جامعي بحيث يطبع لنا‬
‫تقدير ‪ A‬المحصور بين الدرجات من ‪ 95‬وحتى ‪100‬‬
‫كود‪:‬‬
‫>‪# include <iostream.h‬‬
‫) ‪void main ( void‬‬
‫{‬
‫; ‪float x‬‬
‫; ‪cin >> x‬‬
‫)) ‪if ( ( x >= 95 ) && ( x < 100‬‬
‫} ; " ‪{ cout<< " A‬‬
‫}‬

‫لحظ ‪ :‬استخدمنا هنا الداة ‪ and‬لنه يجب أن يتحقق الشرطان حتى نتمكن من‬
‫طباعة التقدير ‪. A‬‬
‫==========‬

‫المر ‪switch:‬‬
‫(‬

‫متحول ‪) Switch‬‬
‫}‬
‫‪Case‬‬
‫‪;Break‬‬
‫عبارات‪" :‬قيمة ‪Case "2‬‬
‫‪;Break‬‬
‫{‬

‫أفضل مثال لهذا المر هو مثال البرنامج الشبيه باللة الحاسبة‬

include<iostream#
} ()void main
;double x,y
;char op
;" :cout<<"Enter The First Number
;cin>>x
cout<<"Enter The Operator:((/,*,-,+";
;cin>>op
;":cout<<"Enter The Second Number
;cin>>y
(switch(op
}
; case '+': :cout<<x+y<<endl
;break
;case'-':cout<<x-y<<endl
;break
;case'*':cout<<x*y<<endl
;break
(case '/' : if(y!=0
;cout<<x/y<<endl
else
;cout<<"div/0"<<endl
;break
;Default

‫‪;cout<<"Error In Operator"<<endl‬‬
‫{ {‬

‫إلى هنا يكون درسنا الثاني قد انتهى ‪ ..‬موعدنا في الدرس القادم مع أوامر التكرار‬
‫) ‪ ( LooP‬وهي مهمة جدًا ‪..‬‬
‫بس لزم تحّلو هالوظيفة بعد ما تفهموا الدرس الوظيفة مكونة من سؤالين‪:‬‬

‫السؤال الول ‪:‬‬
‫اكتب برنامج بلغة ‪ ++C‬يقوم بحساب مربع العدد ‪N‬‬
‫بحيث يخرج ناتج البرنامج على الشكل التالي ‪:‬‬
‫مربعه ‪ ...............‬العدد‬
‫السؤال الثاني ‪:‬‬
‫اكتب برنامج يقوم بالتحويل من النش إلى السنتيمتر‬
‫والعكس حسب ما يطلب المستخدم ‪ ،‬مع العلم أن كل‬
‫إنش واحد يحتوي على ‪ 2.54‬سم ‪.‬‬
‫السؤال الثاني فيه فكرة بسيطة ‪ ،‬بس اللى يفكر يجيبها‬
‫بسهولة إن شاء ال ‪..‬‬

‫=========نهاية الدرس الثاني =========‬

Sign up to vote on this title
UsefulNot useful