Lesson 2
حسناً دعونا نتعمق الآن بعض الشيء .. مع ادرس الثاني :
GO
![]() |
![]() |
| http://www.chess.com/images/myframes/1.gif);" width="100%" align="center">
========= الدرس الثاني =========
|
|
![]() |
![]() |
العمليات الحسابية في لغة السي بلس بلس ..
في لغة السي بلس بلس نستخدم رموز معروفة للعمليات الحسابية مثل الجمع والطرح والضرب ....... إلخ .
![]() |
http://www.chess.com/images/myframes/3_u.gif);" width="100%"> | ![]() |
| http://www.chess.com/images/myframes/3_r.gif);" width="1%"> | http://www.chess.com/images/myframes/3.gif);" width="100%" align="center"> = = علامة المساوة + علامة الجمع . - علامة الطرح . * علامة الضرب . / علامة القسمة . % علامة إيجاد الباقي من القسمة . |
http://www.chess.com/images/myframes/3_l.gif);" width="1%"> |
![]() |
http://www.chess.com/images/myframes/3_d.gif);" width="100%"> | ![]() |
فمثلاً .. لو أردنا كتابة المعادلة التالية بـ لغة البرمجة ..
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 << "
the student Sucsseful" ;
else
cout << "
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 << "
the student Sucsseful" ;
if ( k< 50 )
cout << "
the student Filled " ;
}
وهنا سيقوم البرنامج بقراءة جملة if الأولى فإذا تحقق الشرط ينفذ ما فيها ، وإن لم يتحقق فسينفذ ما بعد جملة if ، وحينها سينتقل لجملة if الثانية .... وهكذا .
2-
من الممكن تنفيذ عدة أوامر في حال تحقق شرط if ولا يشترط أمر واحد .. القاعدة التالية مع شرحها ستوضح الكثير بإذن الله ..
في الأسطر التالية :
If ( K >= 3 )
Cout << "
you typed " ; جملة 1
Cout << " Yassmean " ; جملة 2
لاحظ الآتي :• لو تحقق شرط جملة if سيقوم البرنامج بتنفيذ الجملتين .
• لو لم يتحقق الشرط سيقوم البرنامج بتنفيذ الجملة الثانية وترك الجملة الأولى .
• لجعل البرنامج لا ينفذ الجملتين في حالة عدم تحقق الشرط يتم وضع أقواس على الشكل التالي :
{ cout<<"
……….
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
يعتبر من أسهل الأوامر .. وسنأخذه في آواخر دروس الدورة بإذن المولى عز وجل .
===============
إلى هنا يكون درسنا الثاني قد انتهى .. موعدنا في الدرس القادم مع أوامر التكرار ( LooP ) وهي مهمة جداً ..
صحيح ... عشان منساش برضه .. لازم أديكم واجب .. وواجب صعب كمان ..


هاهاها .. لا مش صعب ولا حاجة .. لكن هيكون محتاج مننا إن إحنا نشغل مخنا شوية

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










lesson 1