You are on page 1of 12

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

‫الدرس الول‬
‫أرجوا أن تكونوا قد حاولتم فيها‬
‫كود‪:‬‬
‫>‪# 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‬مرة أخرى في نفس‬
‫البرنامج فإن قيمتها ستكون صفر ‪ ،‬لذلك يقوم البرنامج بنسخ القيم وليس نقلها ‪.‬‬

‫حسنًا ‪ ..‬الن لنتأمل الربع الجمل التالية ‪..‬‬


‫كود‪:‬‬
‫)‪1‬‬ ‫; ‪X = X + 1‬‬
‫)‪2‬‬ ‫; ‪X ++‬‬
‫)‪3‬‬ ‫; ‪++ X‬‬
‫)‪4‬‬ ‫; ‪X+ =1‬‬
‫انتهينا ‪ ..‬حسنًا ‪ ..‬لنتأملهم مرة أخرى !!‪..‬‬
‫كود‪:‬‬
‫)‪5‬‬ ‫; ‪X = X + 1‬‬
‫)‪6‬‬ ‫; ‪X ++‬‬
‫)‪7‬‬ ‫; ‪++ X‬‬
‫)‪8‬‬ ‫; ‪X+ =1‬‬
‫إن تلك الجمل الربعة معناها واحد في لغة سي بلس بلس ‪..‬‬
‫ومعناها ‪ ..‬أن نقوم بزيادة قيمة ‪ 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‬‬

‫( ‪if‬‬ ‫) ‪k >= 50‬‬


‫‪cout‬‬ ‫; "‪<< "\n the student Sucsseful‬‬
‫( ‪if‬‬ ‫) ‪k< 50‬‬
‫‪cout‬‬ ‫; " ‪<< " \n the student Filled‬‬
‫وهنا سيقوم البرنامج بقراءة جملة ‪ if‬الولى فإذا تحقق الشرط ينفذ ما فيها ‪ ،‬وإن‬
‫لم يتحقق فسينفذ ما بعد جملة ‪ ، if‬وحينها سينتقل لجملة ‪ if‬الثانية ‪ ....‬وهكذا ‪.‬‬

‫‪-2‬‬
‫من الممكن تنفيذ عدة أوامر في حال تحقق شرط ‪ if‬ول يشترط أمر واحد ‪..‬‬
‫القاعدة التالية مع شرحها ستوضح الكثير بإذن ال ‪..‬‬
‫في السطر التالية ‪:‬‬
‫كود‪:‬‬
‫) ‪If ( K >= 3‬‬
‫; " ‪Cout << "\n you typed‬‬ ‫جلة ‪1‬‬
‫; " ‪Cout << " Yassmean‬‬ ‫جلة ‪2‬‬

‫لحظ التي ‪ •:‬لو تحقق شرط جملة ‪ 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‬سم ‪.‬‬

‫السؤال الثاني فيه فكرة بسيطة ‪ ،‬بس اللى يفكر يجيبها‬


‫بسهولة إن شاء ال ‪..‬‬

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

You might also like