👈اولاً : الروابط الرياضيه .
يتم تنفيذ عمليات الضرب والقسمة في التعابير الرياضية قبل عمليات الجمع والطرح . في التعبير التالي مثلاً :
10*10+2*3
يتم ضرب 10*10 ثم يتم ضرب 2*3 وبعدها يتم جمع نتيجتي الضرب مما يؤدى إلى القيمة
100+6=106.
يتم تنفيذ عمليات الضرب قبل الجمع لأن العامل * له أولوية أعلى من أولوية العامل + .
نجد أن أولوية العوامل مهمة في التعابير الرياضية العادية كما أنها مهمة أيضاً عند استعمال عوامل C++ المختلفة .
يتم تنفيذ الضرب والقسمه قبل الجمع والطرح .
🖋 م . أحمد قطران
يتبع .... 👇
يتم تنفيذ عمليات الضرب والقسمة في التعابير الرياضية قبل عمليات الجمع والطرح . في التعبير التالي مثلاً :
10*10+2*3
يتم ضرب 10*10 ثم يتم ضرب 2*3 وبعدها يتم جمع نتيجتي الضرب مما يؤدى إلى القيمة
100+6=106.
يتم تنفيذ عمليات الضرب قبل الجمع لأن العامل * له أولوية أعلى من أولوية العامل + .
نجد أن أولوية العوامل مهمة في التعابير الرياضية العادية كما أنها مهمة أيضاً عند استعمال عوامل C++ المختلفة .
يتم تنفيذ الضرب والقسمه قبل الجمع والطرح .
🖋 م . أحمد قطران
يتبع .... 👇
👈 ثانياً : الروابط المنطقيه
يمكن العمل على القيم صحيح/خطأ بواسطة العوامل المنطقية ، هنالك ثلاثة عوامل منطقية في C++ هي Not,Or,And
يكون التعبير and صحيحاً فقط إذا كان التعبيرين الموجودان على جانبي العامل && صحيحين بينما يؤدى العامل or إلى نتيجة صحيحة إذا كان أحد التعبيرين أو كليهما صحيحاً. العامل not (!) يبطل تأثير المتغير الذي يليه لذا التعبير !x صحيح إذا كان المتغير x خطأ وخطأ إذا كان x صحيحاً.
🖋 م . أحمد قطران
يتبع .... 👇
يمكن العمل على القيم صحيح/خطأ بواسطة العوامل المنطقية ، هنالك ثلاثة عوامل منطقية في C++ هي Not,Or,And
يكون التعبير and صحيحاً فقط إذا كان التعبيرين الموجودان على جانبي العامل && صحيحين بينما يؤدى العامل or إلى نتيجة صحيحة إذا كان أحد التعبيرين أو كليهما صحيحاً. العامل not (!) يبطل تأثير المتغير الذي يليه لذا التعبير !x صحيح إذا كان المتغير x خطأ وخطأ إذا كان x صحيحاً.
🖋 م . أحمد قطران
يتبع .... 👇
👈 رابعاً : روابط الاسناد .
باستعمال عوامل التعين الحسابي يمكن إعادة كتابة تعبير مثل:
x=x+2
على النحو
x+=2
يأخذ عامل التعين الحسابي =+ القيمة الموجودة على يمينه ويضيفها إلى المتغير الموجود على يساره. هنالك تعين حسابي لكل من العوامل الحسابية:-
a+= b a= a+ b
a-= b a= a- b
a*= b a= a* b
a/= b a= a/ b
a%= b a= a% b
مثال:
#include<iostream.h>
main ( )
{
int n=10;
cout<< a+= 2 <<endl;
cout << a-= 2 <<endl;
cout<< a/= 2 <<endl;
cout<< a*= 2 <<endl;
cout<< a %= 2 <<endl;
return 0;
}
الخرج من البرنامج 👇
12
8
5
20
0
🖋 م . أحمد قطران
يتبع .... 👇
باستعمال عوامل التعين الحسابي يمكن إعادة كتابة تعبير مثل:
x=x+2
على النحو
x+=2
يأخذ عامل التعين الحسابي =+ القيمة الموجودة على يمينه ويضيفها إلى المتغير الموجود على يساره. هنالك تعين حسابي لكل من العوامل الحسابية:-
a+= b a= a+ b
a-= b a= a- b
a*= b a= a* b
a/= b a= a/ b
a%= b a= a% b
مثال:
#include<iostream.h>
main ( )
{
int n=10;
cout<< a+= 2 <<endl;
cout << a-= 2 <<endl;
cout<< a/= 2 <<endl;
cout<< a*= 2 <<endl;
cout<< a %= 2 <<endl;
return 0;
}
الخرج من البرنامج 👇
12
8
5
20
0
🖋 م . أحمد قطران
يتبع .... 👇
👈 خامساً : روابط تتعامل مع البت
سنتطرق الى موضوع مهم في البرمجة وهو الضرب المنطقي والجمع المنطقي وكذالك الازاحة
ازاحة لليمين او لليسار
وكيف بيتم كل واحد منما ذكرنا
البعض لا يفرق بين & هذا الرمز وهذا && الرمز وخصوصاً نحن كمبتدئين في البرمجة
الضرب المنطقي هو رمزه & والفارق بينه وبين && فهذ الرمزين تستخدم للمقارنة بين اي شيئ في اي نظام عشري او ثماني او غير ذالك اما الضرب المنطقي فهو يعمل على مقارنة بين البتات اي يقوم بتحويل العدد الى ثنائي ويقوم بالمقارنة ونحصل على ناتج من ذالك
فأذا كان مثلا 7&6
فسيكون الناتج 6 كيف؟
اولا قمنا بتحويل العدد 6الى النظام الثنائي وكذالك العدد 7
ونقابل البت بالبت عندما يكون احد البتات المتقابلة 0 نضع 0 واذا كان جميع البتات 1 نضع1
فالرقم 6 =110 والرقم 7 = 111
فعندما نقابل العددين فالناتج سيكون 110 وهو قيمة الرقم 6 بالنظام العشري
الجمع المنطقي هو يقوم ايضا بالمقارنة بين البتات مثل الضرب المنطقي والازاحة ولاكن يعمل كدالة او ورمزه | والفارق بينه وبين الرمز || فهذا الاخير يقوم بالمقارنة بين اي شيئ في اي نضام ويمثل دالة او Or اما الجمع المنطقي | فيقوم بتحويل العدد من اي نظام الى النظام الثنائي ويقارن بين البتات اذا كان احد البتات 1 فنضع 1 في الناتج واذا كان جميع البتات ٠ نضع ٠
مثلا 7 |6 فالناتج سيكون 7
حولنا 6 الى النظام الثنائي وكذالك العدد 7
وقمنا بالمقارنة وبيصير الناتج 111 وهو يمثل قيمة الرقم 7 بالنظام العشري
عملية and....
6 = 0110
7 = 0111 &
----------------
0110 = 6
عملية or....
6 = 0110
7 = 0111 |
----------------
0111 = 7
عملية النفي
نفي ال 111ْع يكون 0
👈الان نتكلم عن الازاحة الى اليمين والى اليسار
اولا ماهو رمز الازاحة؟
رمز الازاحة هذا الرمز >> وهو الذي نستعمله في دوال الاخراج(الطباعة) والادخال ولاكن نعكس اتجاه الرمز في الادخال
فأي من الرمز ازاحة لليمين واي رمز إزاحة لليسار؟
.....
👈 عامل التزحيف لليسار >> والصيغة القواعدية لها هي
value<<constant integer
عامل التزحيف لليسار هو عامل احادي اي يعمل على قيمة واحد تكون على يسار العامل ويجب ان يكون العدد صحيح ثابت وعندما يقوم المترجم بتنفيذ هذه العملية سيدفع البتات الى اليسار بعدد محدد العدد الذي سيكون يمين العامل
البتات الذي على اليسار سوف تختفي عند تزحيف العدد لليسار
والبتات بتكون بعدد الرقم الذي على يمين العامل
الفراغ الذي سيتولد في اليمين نتيجة تزحيف العدد فأنه سيملأ بأصفار
مثلا
const int n=42;
n<<2
هنا سيكون الناتج
168
اولا حولنا العدد 42 الى النظام الثنائي
00101010
وعند التزحيف بيكون
10101000
وهي قيمة العدد 168 بالنظام الثنائي
👈 تزحيف البتات الى اليمين <<
التزحيف لليمين هو مشابه الى حد كبير التزحيف لليسار
ولاكن التزحيف لليمين ينتج عدد اقل
عندما نقوم بالتزحيف لليمين يختفي البتات من اليمين بمقدار العدد الثابت الصحيح الذي يمين العامل
ويملأ الفراغات الذي في اليسار الناتجة من تزحيف البتات ب اصفار
مثلاً 2<<88
فسينتج 22 كيف؟
اولا قمنا بتحويل العدد 88 الى مايساويه بالنظام الثنائي وثم تزحيف العدد الثنائي بمقدار 2 بت الى اليمين
ثم ملأ الفراغات الناتجة من التزحيف في اليسار بأصفار
واخيرا تحويل الرقم الناتج من النظام الثنائي الى النظام العشري
👈مقارنة البتات بأستخدام العامل xor
عندما يتم المقارنة بين بتات بأستخدام هذا العامل فأن اي بتات مختلفين نضع الناتج 1 واي بتات متساويين نضع الناتج ٠
مثلا 7^5
اولا نحول 7 و5 الى النظام الثنائي ثم نعمل المقارنة بين الرقمين الثنائيين
7= 111
5=101
الناتج بيكون
10 بالنظام الثنائي
وعندما نحوله الى النظام العشري
يساوي 2
🖋 م . أحمد قطران
يتبع ....👇👇
سنتطرق الى موضوع مهم في البرمجة وهو الضرب المنطقي والجمع المنطقي وكذالك الازاحة
ازاحة لليمين او لليسار
وكيف بيتم كل واحد منما ذكرنا
البعض لا يفرق بين & هذا الرمز وهذا && الرمز وخصوصاً نحن كمبتدئين في البرمجة
الضرب المنطقي هو رمزه & والفارق بينه وبين && فهذ الرمزين تستخدم للمقارنة بين اي شيئ في اي نظام عشري او ثماني او غير ذالك اما الضرب المنطقي فهو يعمل على مقارنة بين البتات اي يقوم بتحويل العدد الى ثنائي ويقوم بالمقارنة ونحصل على ناتج من ذالك
فأذا كان مثلا 7&6
فسيكون الناتج 6 كيف؟
اولا قمنا بتحويل العدد 6الى النظام الثنائي وكذالك العدد 7
ونقابل البت بالبت عندما يكون احد البتات المتقابلة 0 نضع 0 واذا كان جميع البتات 1 نضع1
فالرقم 6 =110 والرقم 7 = 111
فعندما نقابل العددين فالناتج سيكون 110 وهو قيمة الرقم 6 بالنظام العشري
الجمع المنطقي هو يقوم ايضا بالمقارنة بين البتات مثل الضرب المنطقي والازاحة ولاكن يعمل كدالة او ورمزه | والفارق بينه وبين الرمز || فهذا الاخير يقوم بالمقارنة بين اي شيئ في اي نضام ويمثل دالة او Or اما الجمع المنطقي | فيقوم بتحويل العدد من اي نظام الى النظام الثنائي ويقارن بين البتات اذا كان احد البتات 1 فنضع 1 في الناتج واذا كان جميع البتات ٠ نضع ٠
مثلا 7 |6 فالناتج سيكون 7
حولنا 6 الى النظام الثنائي وكذالك العدد 7
وقمنا بالمقارنة وبيصير الناتج 111 وهو يمثل قيمة الرقم 7 بالنظام العشري
عملية and....
6 = 0110
7 = 0111 &
----------------
0110 = 6
عملية or....
6 = 0110
7 = 0111 |
----------------
0111 = 7
عملية النفي
نفي ال 111ْع يكون 0
👈الان نتكلم عن الازاحة الى اليمين والى اليسار
اولا ماهو رمز الازاحة؟
رمز الازاحة هذا الرمز >> وهو الذي نستعمله في دوال الاخراج(الطباعة) والادخال ولاكن نعكس اتجاه الرمز في الادخال
فأي من الرمز ازاحة لليمين واي رمز إزاحة لليسار؟
.....
👈 عامل التزحيف لليسار >> والصيغة القواعدية لها هي
value<<constant integer
عامل التزحيف لليسار هو عامل احادي اي يعمل على قيمة واحد تكون على يسار العامل ويجب ان يكون العدد صحيح ثابت وعندما يقوم المترجم بتنفيذ هذه العملية سيدفع البتات الى اليسار بعدد محدد العدد الذي سيكون يمين العامل
البتات الذي على اليسار سوف تختفي عند تزحيف العدد لليسار
والبتات بتكون بعدد الرقم الذي على يمين العامل
الفراغ الذي سيتولد في اليمين نتيجة تزحيف العدد فأنه سيملأ بأصفار
مثلا
const int n=42;
n<<2
هنا سيكون الناتج
168
اولا حولنا العدد 42 الى النظام الثنائي
00101010
وعند التزحيف بيكون
10101000
وهي قيمة العدد 168 بالنظام الثنائي
👈 تزحيف البتات الى اليمين <<
التزحيف لليمين هو مشابه الى حد كبير التزحيف لليسار
ولاكن التزحيف لليمين ينتج عدد اقل
عندما نقوم بالتزحيف لليمين يختفي البتات من اليمين بمقدار العدد الثابت الصحيح الذي يمين العامل
ويملأ الفراغات الذي في اليسار الناتجة من تزحيف البتات ب اصفار
مثلاً 2<<88
فسينتج 22 كيف؟
اولا قمنا بتحويل العدد 88 الى مايساويه بالنظام الثنائي وثم تزحيف العدد الثنائي بمقدار 2 بت الى اليمين
ثم ملأ الفراغات الناتجة من التزحيف في اليسار بأصفار
واخيرا تحويل الرقم الناتج من النظام الثنائي الى النظام العشري
👈مقارنة البتات بأستخدام العامل xor
عندما يتم المقارنة بين بتات بأستخدام هذا العامل فأن اي بتات مختلفين نضع الناتج 1 واي بتات متساويين نضع الناتج ٠
مثلا 7^5
اولا نحول 7 و5 الى النظام الثنائي ثم نعمل المقارنة بين الرقمين الثنائيين
7= 111
5=101
الناتج بيكون
10 بالنظام الثنائي
وعندما نحوله الى النظام العشري
يساوي 2
🖋 م . أحمد قطران
يتبع ....👇👇
⬅ سادساً : معاملات الإزاده والانقاص
👈هناك دائماً حاجة في البرمجة إلى زيادة 1 أو طرح 1 . هذه الحالات شائعة لدرجة أن C++ تتضمن عاملين خاصين ينفذان هذه المهمة، يقوم عامل التناقص (--) بطرح 1 من المتغير ويضيف عامل التزايد (++) 1 إليه ، المثال الآتي يبين طريقة الاستعمال:-
++a
a++
معناه إضافة 1 إلى a، ويمكن كتابته بصورة مكافئة على النحو a=a+1 وبالطريقة نفسها يمكن إنقاص 1 من قيمة a على النحو --a أو a-- وهو يكافئ a=a-1.
ومما يجب التنبيه إليه هنا أن هنالك فرق بين ++ a أو a++ فعلى الرغم من كليهما يجمع 1 إلى a إلا أنه عند استعمال ++a تستخرج قيمة التعبير باستعمال قيمة a الحالية قبل زيادتها وينطبق هذا أيضاً على --a وa-- .
#include<iostream.h>
main ( )
{
int c;
c = 5;
cout << c << endl;
cout << c++ <<endl;
cout << c <<endl;
c=5;
cout << c << endl << endl;
cout << ++c << endl;
cout << c << endl;
return 0;
//Continued
}
الخرج من البرنامج:
5
5
6
5
6
6
🖋 م . أحمد قطران
انتهى ....
👈هناك دائماً حاجة في البرمجة إلى زيادة 1 أو طرح 1 . هذه الحالات شائعة لدرجة أن C++ تتضمن عاملين خاصين ينفذان هذه المهمة، يقوم عامل التناقص (--) بطرح 1 من المتغير ويضيف عامل التزايد (++) 1 إليه ، المثال الآتي يبين طريقة الاستعمال:-
++a
a++
معناه إضافة 1 إلى a، ويمكن كتابته بصورة مكافئة على النحو a=a+1 وبالطريقة نفسها يمكن إنقاص 1 من قيمة a على النحو --a أو a-- وهو يكافئ a=a-1.
ومما يجب التنبيه إليه هنا أن هنالك فرق بين ++ a أو a++ فعلى الرغم من كليهما يجمع 1 إلى a إلا أنه عند استعمال ++a تستخرج قيمة التعبير باستعمال قيمة a الحالية قبل زيادتها وينطبق هذا أيضاً على --a وa-- .
#include<iostream.h>
main ( )
{
int c;
c = 5;
cout << c << endl;
cout << c++ <<endl;
cout << c <<endl;
c=5;
cout << c << endl << endl;
cout << ++c << endl;
cout << c << endl;
return 0;
//Continued
}
الخرج من البرنامج:
5
5
6
5
6
6
🖋 م . أحمد قطران
انتهى ....
✒️ الدرس 5⃣
⬅️ أمر الطباعة >>cout
.................................
》أمر الطباعة cout :
بشكل عام, نستخدم الأمر cout لطباعة أي شيء نريد في الكونسول.
عند إستخدام الأمر cout يجب أن تضع العامل << قبل أي شيء تريد تمريره له حتى يتم طباعته.
مثال
main.cpp :
#include <iostream>
int main()
{
std::cout << "wecome to c++";
return 0;
}
سنحصل على النتيجة التالية عند التشغيل.
wecome to c++
》شرح الكود :
الأمر #include <iostream> الموجود في السطر الأول يحتوي على الأوامر الأساسية التي نحتاجها في التطبيقات التي تعتبر Console Application و التي سنستخدمها في أغلب البرامج مثل أمر الطباعة cout و غيره من الأوامر و الدوال الجاهزة التي ستمر معك لاحقاً في الدورة.
سبب وضع std:: قبل cout هو أن الأمر cout موجود فيه.
الدالة main() التي قمنا بتعريفها ابتداءاً من السطر الثالث يجب أن يكون نوعها int لأنها تمثل نقطة البداية في البرنامج.
وضع return 0; في السطر السادس و كآخر أمر في الدالة main() هو أمر متعارف عليه, و فكرته إرسال الرقم 0 لنظام التشغيل عند انتهاء أو إغلاق البرنامج بشكل طبيعي. هكذا سيتمكن نظام التشغيل من التفريق بين الإنهاء الطبيعي للبرنامج والإنهاء المفاجئ ( Crash ) الذي يحدث نتيجة خطأ ما.
》مبادئ الطباعة الأساسية :
عليك مراعاة المبادئ التالية عند استخدام الأمر cout.
لعرض رقم, ضعه كما هو.
لعرض قيمة متغير, ضعه كما هو.
لعرض حرف يجب وضعه بين ' '.
لعرض كلمة أو نص, يجب وضعه بين " ".
طباعة عدة أشياء دفعة واحدة بواسطة الأمر cout في C++
لدمج عدة أشياء مختلفة و عرضها باستخدام الأمر cout نضع الرمز << بين كل شيئين نريد طباعتهما.
》في المثال التالي, قمنا بإنشاء برنامج يحتوي على متغيرين name و year.
بعدها قمنا بعرضهما كجملة واحدة.
طباعة عدة أشياء دفعة واحدة بواسطة الأمر cout في C++
لدمج عدة أشياء مختلفة و عرضها باستخدام الأمر cout نضع الرمز << بين كل شيئين نريد طباعتهما.
》في المثال التالي, قمنا بإنشاء برنامج يحتوي على متغيرين name و year.
بعدها قمنا بعرضهما كجملة واحدة.
مثال
main.cpp :
#include <iostream>
int main()
{
char name = "Ahmed";
int year = 1990;
std::cout << "Hello my name is " << name << ", I born in " << year;
return 0;
}
سنحصل على النتيجة التالية عند التشغيل.
Hello my name is Ahmed, I born in 1990
》عرض المحتوى على سطر جديد C++
عند عرض المحتوى بواسطة الأمر cout يمكنك تحديد نهاية السطر من خلال وضع العامل endl و عندها سيظهر أي شيء تطبعه بعده على سطر جديد.
معلومة: endl إختصار لجملة End Line.
مثال
main.cpp :
#include <iostream>
int main()
{
std::cout << "welcome to " << std::endl << "C++ ";
return 0;
}
سنحصل على النتيجة التالية عند التشغيل.
welcome to
C++
》سبب وضع std:: قبل العامل endl هو أن العامل endl موجود فيه.
》أهمية الكلمة using في C++
في البداية, سنشرح الكلملة using بتفصيل ممل في درس لاحق نظراً لأهميتها في المشاريع.
الآن, إذا أردت أن تكتب الأمرين cout و endl بشكل مباشر بدون الحاجة لأن تكتب قبلهما std::, قم بتضيمن النطاق std مرة واحدة في الملف و عندها تصبح قادر على استخدام أي شيء موجود فيه بشكل مباشر.
لتضمين النطاق std في الملف main.cpp نكتب using namespace std; فوق الدالة main().
الآن, سنعيد نفس المثال السابق مع تضمين النطاق std بشكل مباشر.
》مثال :
main.cpp :
#include <iostream>
using namespace std; // std هنا قمنا بتضيمن النطاق
int main()
{
cout << "welcome to" << endl << "C++ ";
return 0;
}
سنحصل على النتيجة التالية عند التشغيل.
welcome to
C++
》النزول على سطر جديد بواسطة الرمز \n في C++
إذا أردت النزول على سطر جديد بدون الحاجة لكتابة << endl فيمكنك تمرير \n كنص.
ملاحظة: أغلب المبرمجين يفضلون تمرير \n بدل كتابة << endl لأنها مختصرة أكثر.
معلومة: \n إختصار لجملة New Line.
》في المثال التالي قمنا بتمرير \n كنص للأمر cout من أجل النزول على سطر جديد.
مثال
main.cpp :
#include <iostream>
using namespace std;
int main() {
cout << "welcome to\nC++ ";
return 0;
سنحصل على النتيجة التالية عند التشغيل.
welcome to
C++
⬅️ أمر الادخال <<cin
بالنسبة للإدخال فى لغة C++ فبواسطة الكائن cin , وهذا الكائن يستخدم فقط مع المتغيرات.
وعملية الإدخال هى عكس عملية الإخراج حيث أننا نستخدم معامل الإدخال <<cin
فمثلا لإدخال عدد صحيح من خلال لوحة المفاتيح
Cin>>x;
هنا ينتظر منك البرنامج إدخال قيمة عددية واحدة وحفظها في المتغير x
أما إذا أردنا إدخال أكثر من قيمة فيمكن أن يكون المثال كالتالي
Cin>>x>>y>>z;
وهنا يمكن إدخال ثلاث قيم
✒️ م . أحمد قطران
انتهى ....
⬅️ أمر الطباعة >>cout
.................................
》أمر الطباعة cout :
بشكل عام, نستخدم الأمر cout لطباعة أي شيء نريد في الكونسول.
عند إستخدام الأمر cout يجب أن تضع العامل << قبل أي شيء تريد تمريره له حتى يتم طباعته.
مثال
main.cpp :
#include <iostream>
int main()
{
std::cout << "wecome to c++";
return 0;
}
سنحصل على النتيجة التالية عند التشغيل.
wecome to c++
》شرح الكود :
الأمر #include <iostream> الموجود في السطر الأول يحتوي على الأوامر الأساسية التي نحتاجها في التطبيقات التي تعتبر Console Application و التي سنستخدمها في أغلب البرامج مثل أمر الطباعة cout و غيره من الأوامر و الدوال الجاهزة التي ستمر معك لاحقاً في الدورة.
سبب وضع std:: قبل cout هو أن الأمر cout موجود فيه.
الدالة main() التي قمنا بتعريفها ابتداءاً من السطر الثالث يجب أن يكون نوعها int لأنها تمثل نقطة البداية في البرنامج.
وضع return 0; في السطر السادس و كآخر أمر في الدالة main() هو أمر متعارف عليه, و فكرته إرسال الرقم 0 لنظام التشغيل عند انتهاء أو إغلاق البرنامج بشكل طبيعي. هكذا سيتمكن نظام التشغيل من التفريق بين الإنهاء الطبيعي للبرنامج والإنهاء المفاجئ ( Crash ) الذي يحدث نتيجة خطأ ما.
》مبادئ الطباعة الأساسية :
عليك مراعاة المبادئ التالية عند استخدام الأمر cout.
لعرض رقم, ضعه كما هو.
لعرض قيمة متغير, ضعه كما هو.
لعرض حرف يجب وضعه بين ' '.
لعرض كلمة أو نص, يجب وضعه بين " ".
طباعة عدة أشياء دفعة واحدة بواسطة الأمر cout في C++
لدمج عدة أشياء مختلفة و عرضها باستخدام الأمر cout نضع الرمز << بين كل شيئين نريد طباعتهما.
》في المثال التالي, قمنا بإنشاء برنامج يحتوي على متغيرين name و year.
بعدها قمنا بعرضهما كجملة واحدة.
طباعة عدة أشياء دفعة واحدة بواسطة الأمر cout في C++
لدمج عدة أشياء مختلفة و عرضها باستخدام الأمر cout نضع الرمز << بين كل شيئين نريد طباعتهما.
》في المثال التالي, قمنا بإنشاء برنامج يحتوي على متغيرين name و year.
بعدها قمنا بعرضهما كجملة واحدة.
مثال
main.cpp :
#include <iostream>
int main()
{
char name = "Ahmed";
int year = 1990;
std::cout << "Hello my name is " << name << ", I born in " << year;
return 0;
}
سنحصل على النتيجة التالية عند التشغيل.
Hello my name is Ahmed, I born in 1990
》عرض المحتوى على سطر جديد C++
عند عرض المحتوى بواسطة الأمر cout يمكنك تحديد نهاية السطر من خلال وضع العامل endl و عندها سيظهر أي شيء تطبعه بعده على سطر جديد.
معلومة: endl إختصار لجملة End Line.
مثال
main.cpp :
#include <iostream>
int main()
{
std::cout << "welcome to " << std::endl << "C++ ";
return 0;
}
سنحصل على النتيجة التالية عند التشغيل.
welcome to
C++
》سبب وضع std:: قبل العامل endl هو أن العامل endl موجود فيه.
》أهمية الكلمة using في C++
في البداية, سنشرح الكلملة using بتفصيل ممل في درس لاحق نظراً لأهميتها في المشاريع.
الآن, إذا أردت أن تكتب الأمرين cout و endl بشكل مباشر بدون الحاجة لأن تكتب قبلهما std::, قم بتضيمن النطاق std مرة واحدة في الملف و عندها تصبح قادر على استخدام أي شيء موجود فيه بشكل مباشر.
لتضمين النطاق std في الملف main.cpp نكتب using namespace std; فوق الدالة main().
الآن, سنعيد نفس المثال السابق مع تضمين النطاق std بشكل مباشر.
》مثال :
main.cpp :
#include <iostream>
using namespace std; // std هنا قمنا بتضيمن النطاق
int main()
{
cout << "welcome to" << endl << "C++ ";
return 0;
}
سنحصل على النتيجة التالية عند التشغيل.
welcome to
C++
》النزول على سطر جديد بواسطة الرمز \n في C++
إذا أردت النزول على سطر جديد بدون الحاجة لكتابة << endl فيمكنك تمرير \n كنص.
ملاحظة: أغلب المبرمجين يفضلون تمرير \n بدل كتابة << endl لأنها مختصرة أكثر.
معلومة: \n إختصار لجملة New Line.
》في المثال التالي قمنا بتمرير \n كنص للأمر cout من أجل النزول على سطر جديد.
مثال
main.cpp :
#include <iostream>
using namespace std;
int main() {
cout << "welcome to\nC++ ";
return 0;
سنحصل على النتيجة التالية عند التشغيل.
welcome to
C++
⬅️ أمر الادخال <<cin
بالنسبة للإدخال فى لغة C++ فبواسطة الكائن cin , وهذا الكائن يستخدم فقط مع المتغيرات.
وعملية الإدخال هى عكس عملية الإخراج حيث أننا نستخدم معامل الإدخال <<cin
فمثلا لإدخال عدد صحيح من خلال لوحة المفاتيح
Cin>>x;
هنا ينتظر منك البرنامج إدخال قيمة عددية واحدة وحفظها في المتغير x
أما إذا أردنا إدخال أكثر من قيمة فيمكن أن يكون المثال كالتالي
Cin>>x>>y>>z;
وهنا يمكن إدخال ثلاث قيم
✒️ م . أحمد قطران
انتهى ....
🖋 الدرس 6⃣
👈 ان شاء الله يكون درسا اليوم تطبيق لم تم اخذه واي استفسار يكون عبر المجموعة ...
⬅ تطبيق (1 ):
المطلوب كتابة برنامج يقوم بطباعة قيمه عددية وليكن العدد 2009
1_// البرنامج الاول
2_/* هذا البرنامج يطبع العدد 2009 على الشاشه */
3_#include<iostream.h>
4_main()
5_{
6_cout<<"2009";
7_return 0;
8_}
فعند تنفيذ البرنامج يقوم البرنامج بطباعة العدد 2009
ونلاحظ في هذا المثال أننا قمنا بترقيم الأسطر وذلك لتبسيط شرح أسطر البرنامج ولا يتم الترقيم عند كتابة هذا البرنامج في بيئة Visual C++.
- السطر الأول والثاني أسطر ملاحظات لا يلتفت لها المترجم
- السطر الثالث #include<iostream.h> يتم فيه إخبار المترجم بأننا سوف نستخدم أوامر الإدخال cin او الإخراج cout
- السطر الرابع main() وتسمى الدالة الأساسية وكل برنامج يجب أن يحتوى على هذه الدالة ويمكن أن يتكون البرنامج من عدة دوال كما سندرس لاحقا.
- السطر الخامس { وهو عبارة عن قوس البداية للبرنامج.
- السطر السادس cout<<2009 وهو أمر طباعة العدد 2009
- السطر السابع return 0 وفيها نخبر الكمبيوتر أن الدالة لا ترجع بقيم وسيتم دراسة ذلك لاحقا.
- السطر الثامن } قوس النهاية وبه ينتهى البرنامج.
🖋 م . أحمد قطران
يتبع ....👇
👈 ان شاء الله يكون درسا اليوم تطبيق لم تم اخذه واي استفسار يكون عبر المجموعة ...
⬅ تطبيق (1 ):
المطلوب كتابة برنامج يقوم بطباعة قيمه عددية وليكن العدد 2009
1_// البرنامج الاول
2_/* هذا البرنامج يطبع العدد 2009 على الشاشه */
3_#include<iostream.h>
4_main()
5_{
6_cout<<"2009";
7_return 0;
8_}
فعند تنفيذ البرنامج يقوم البرنامج بطباعة العدد 2009
ونلاحظ في هذا المثال أننا قمنا بترقيم الأسطر وذلك لتبسيط شرح أسطر البرنامج ولا يتم الترقيم عند كتابة هذا البرنامج في بيئة Visual C++.
- السطر الأول والثاني أسطر ملاحظات لا يلتفت لها المترجم
- السطر الثالث #include<iostream.h> يتم فيه إخبار المترجم بأننا سوف نستخدم أوامر الإدخال cin او الإخراج cout
- السطر الرابع main() وتسمى الدالة الأساسية وكل برنامج يجب أن يحتوى على هذه الدالة ويمكن أن يتكون البرنامج من عدة دوال كما سندرس لاحقا.
- السطر الخامس { وهو عبارة عن قوس البداية للبرنامج.
- السطر السادس cout<<2009 وهو أمر طباعة العدد 2009
- السطر السابع return 0 وفيها نخبر الكمبيوتر أن الدالة لا ترجع بقيم وسيتم دراسة ذلك لاحقا.
- السطر الثامن } قوس النهاية وبه ينتهى البرنامج.
🖋 م . أحمد قطران
يتبع ....👇
⬅ تطبيق (2 ):
المطلوب كتابة برنامج لطباعة العبارة الآتية:
"This is my second program"
هذا هو البرنامج الثاني//
#include<iostream.h>
main()
{
cout<<"This is my second program";
return 0;
}
وعند التنفيذ تظهر الرسالة
This is my second program
يتبع .... 👇
المطلوب كتابة برنامج لطباعة العبارة الآتية:
"This is my second program"
هذا هو البرنامج الثاني//
#include<iostream.h>
main()
{
cout<<"This is my second program";
return 0;
}
وعند التنفيذ تظهر الرسالة
This is my second program
يتبع .... 👇
⬅️ تطبيق (3 ):
البرنامج التالي يبين عملية تنسيق الخرج على الشاشة
#include<iostream.h>
main()
{
cout<<"One";
cout<<"Two\n";
cout<<"Three\n\n";
cout<<"Four";
return 0;
}
وعند تنفيذ البرنامج
OneTwo
Three
Four
يتبع .... 👇
البرنامج التالي يبين عملية تنسيق الخرج على الشاشة
#include<iostream.h>
main()
{
cout<<"One";
cout<<"Two\n";
cout<<"Three\n\n";
cout<<"Four";
return 0;
}
وعند تنفيذ البرنامج
OneTwo
Three
Four
يتبع .... 👇
⬅️ تطبيق( 4 ):
طباعة العدد100 والعدد 5.36
#include<iostream.h>
main()
{
int a=100;
float b=5.36;
cout<<a<<b;
return 0;
}
لاحظ الإعلان عن العدد الصحيح int a=100 والعدد الحقيقي float b=5.36
يتبع .... 👇
طباعة العدد100 والعدد 5.36
#include<iostream.h>
main()
{
int a=100;
float b=5.36;
cout<<a<<b;
return 0;
}
لاحظ الإعلان عن العدد الصحيح int a=100 والعدد الحقيقي float b=5.36
يتبع .... 👇
⬅️ تطبيق (5 ):
المطلوب كتابة برنامج لجمع عددين صحيحين
#include<iostream.h>
main()
{
int a,b,c;
cin>>a>>b;
c=a+b;
cout c;
return 0;
}
وعند تنفيذ هذا البرنامج يطلب منك البرنامج إدخال عددين ويضعهما في المخزنين a, b
ثم يقوم بجمع الرقمين ووضعهما في المخزن c
ثم يقوم بطباعة الرقم الموجود في المخزن c
ملاحظات على البرنامج:
يمكن إضافة بعض الرسائل التي تود أن تظهر عند تشغيل البرنامج ولذلك يمكن تطوير
البرنامج السابق كالتالي:
#include<iostream.h>
main()
{
int a,b,c;
cout<<"please enter two number\n";
cin>>a>>b;
c=a+b;
cout<<"the result is "<<c;
return 0;
}
وعند تنفيذ البرنامج تظهر الرسالة الآتية للسؤال عن الرقمين المراد جمعهما فعليك إدخال أى رقمين بجوار رسالة السؤال وليكن العددين 25 , 4 ثم اضغط مفتاح الإدخال enter يظهر سطر النتيجة بجواره نتيجة الجمع وهو العدد 29 هكذا
Please enter two numbers25 4
the result is 29
بعد إدخال العدد الأول أما أن نترك مسافة وندخل العدد الثاني أو نضغط على
مفتاح الإدخال وندخل الرقم الثاني.
يتبع .... 👇
المطلوب كتابة برنامج لجمع عددين صحيحين
#include<iostream.h>
main()
{
int a,b,c;
cin>>a>>b;
c=a+b;
cout c;
return 0;
}
وعند تنفيذ هذا البرنامج يطلب منك البرنامج إدخال عددين ويضعهما في المخزنين a, b
ثم يقوم بجمع الرقمين ووضعهما في المخزن c
ثم يقوم بطباعة الرقم الموجود في المخزن c
ملاحظات على البرنامج:
يمكن إضافة بعض الرسائل التي تود أن تظهر عند تشغيل البرنامج ولذلك يمكن تطوير
البرنامج السابق كالتالي:
#include<iostream.h>
main()
{
int a,b,c;
cout<<"please enter two number\n";
cin>>a>>b;
c=a+b;
cout<<"the result is "<<c;
return 0;
}
وعند تنفيذ البرنامج تظهر الرسالة الآتية للسؤال عن الرقمين المراد جمعهما فعليك إدخال أى رقمين بجوار رسالة السؤال وليكن العددين 25 , 4 ثم اضغط مفتاح الإدخال enter يظهر سطر النتيجة بجواره نتيجة الجمع وهو العدد 29 هكذا
Please enter two numbers25 4
the result is 29
بعد إدخال العدد الأول أما أن نترك مسافة وندخل العدد الثاني أو نضغط على
مفتاح الإدخال وندخل الرقم الثاني.
يتبع .... 👇
⬅ تطبيق (7)
#include<iostream.h>
void main()
{
int x=3,y=2;
float f;
f=(x*x-3*y)/(2*x-y);
cout<<"f="<<f;
}
المخرجات
f=0
لايجاد قيمة f
f=(x*x-3*y)/(2*x-y)
اولا البسط (3*3-3*2) = (9-6)=3
ثانيا المقام
(2*3-2)=(6_2)=4
اذا ناتج قسمة البسط على المقام =0.75 نهمل الجزاء العشري لن البسط من نوع int والمقام int والقاعده تقول int على int يساوي int فيصبح الناتج 0 .
يتبع ....👇
#include<iostream.h>
void main()
{
int x=3,y=2;
float f;
f=(x*x-3*y)/(2*x-y);
cout<<"f="<<f;
}
المخرجات
f=0
لايجاد قيمة f
f=(x*x-3*y)/(2*x-y)
اولا البسط (3*3-3*2) = (9-6)=3
ثانيا المقام
(2*3-2)=(6_2)=4
اذا ناتج قسمة البسط على المقام =0.75 نهمل الجزاء العشري لن البسط من نوع int والمقام int والقاعده تقول int على int يساوي int فيصبح الناتج 0 .
يتبع ....👇
⬅ تطبيق ( 6 ):
المطلوب حساب مساحة دائرة
#include<iostream.h>
main()
{
int r;
float area,pi=3.14;
cout<<"please enter radius\n";
cin>>r;
area=r*r*pi;
cout<<"\t the area is:"<<area;
return 0;
}
يتبع .... 👇
المطلوب حساب مساحة دائرة
#include<iostream.h>
main()
{
int r;
float area,pi=3.14;
cout<<"please enter radius\n";
cin>>r;
area=r*r*pi;
cout<<"\t the area is:"<<area;
return 0;
}
يتبع .... 👇
⬅ تطبيق (8)
#include <iostream.h>
int main()
{
int a=6 , b=7 ;
cout <<(a & b)<<"\n";
cout<<(a | b) <<"\n";
cout<< (!(a | b))<<"\n";
cout << (a<<2)<<"\n";
cout << (b>>1)<<"\n";
}
المخرجات من البرنامج
6
7 0 24 3
⬅المخرج الأول ع يكون 6 لأن ع نحول ال6و7الى النظام الثنائي ونعمل بينهم عملية and....
6 = 0110
7 = 0111 &
----------------
0110 = 6
⬅المخرج الثاني ع يكون 7ونفس التعليل ع نحولهم الى الثنائي ونعمل عملية or....
6 = 0110
7 = 0111 |
----------------
0111 = 7
⬅المخرج الثالث ع يكون 0 أي عملنا عملية النفي لعملية الor .....
نفي ال 111ْع يكون 0
⬅ اما المخرج الرابع والخامس خذها بكل بساطه عند التزحيف الى اليسار بكل تزحيف اضرب في 2 في المثال زحفنا a الذي قيمة 6 بمقدار 2 فنضرب 6*2*2 يكون الناتج 24 .
⬅ وعند التزحيف الى اليمين نقسمه على 2 حسب عدد مرات التزحيف في المثال زحفنا b=7 الى اليمين بمقدار 1 نقسم 7 على 2 ينتج 3 ونهمل الباقي ....
🖋 م . أحمد قطران
انتهى ....
#include <iostream.h>
int main()
{
int a=6 , b=7 ;
cout <<(a & b)<<"\n";
cout<<(a | b) <<"\n";
cout<< (!(a | b))<<"\n";
cout << (a<<2)<<"\n";
cout << (b>>1)<<"\n";
}
المخرجات من البرنامج
6
7 0 24 3
⬅المخرج الأول ع يكون 6 لأن ع نحول ال6و7الى النظام الثنائي ونعمل بينهم عملية and....
6 = 0110
7 = 0111 &
----------------
0110 = 6
⬅المخرج الثاني ع يكون 7ونفس التعليل ع نحولهم الى الثنائي ونعمل عملية or....
6 = 0110
7 = 0111 |
----------------
0111 = 7
⬅المخرج الثالث ع يكون 0 أي عملنا عملية النفي لعملية الor .....
نفي ال 111ْع يكون 0
⬅ اما المخرج الرابع والخامس خذها بكل بساطه عند التزحيف الى اليسار بكل تزحيف اضرب في 2 في المثال زحفنا a الذي قيمة 6 بمقدار 2 فنضرب 6*2*2 يكون الناتج 24 .
⬅ وعند التزحيف الى اليمين نقسمه على 2 حسب عدد مرات التزحيف في المثال زحفنا b=7 الى اليمين بمقدار 1 نقسم 7 على 2 ينتج 3 ونهمل الباقي ....
🖋 م . أحمد قطران
انتهى ....
🖋 الدرس 7⃣
⬅ الجمل الشرطية:
👈 اولاً if
استخدام عبارة التحكم IF:
تقوم عبارة if باختبار شرط معين , إذا تحقق هذا الشرط يتم تنفيذ عملية أو مجموعة عمليات وإلا يتم تجاهل هذه العملية لذا فالصيغة العامة لعبارة if تكون كالآتى:
If (expression) Statement;
أو
If (condition) Statement1;
إذا لم يتحقق الشرط condition ينقل تسلسل تنفيذ البرنامج إلى الجملة statement1
أو تستخدم بشكل أعمق كالتالى:
If (condition) Statement1;
Else Statement2;
فى هذه الحالة ستنفذ الجملة statement1 إن تحقق الشرط وإلا فإن التنفيذ ينتقل إلى السطر التالى وتتحقق الجملة statement2.
حيث يعبر expression أو condition عن التعبير المستخدم (الشرط) ويوضع بين قوسين فإذا كانت قيمته لا تساوى صفر يكون الشرط صحيح ويتم تنفيذ العبارة statement.
للتعرف على طريقة تشغيل العبارة if ندرس المثال التالى:
برنامج بسيط بلغة C++ لإظهار العبارة "x is positive" على الشاشة
# include <iostream.h>
main()
{
int x ;
cout<<”Enter the test number X ”;
cin>> x ;
if (x>0)
cout << “ x is positive”;
return 0;
}
نتيجة البرنامج:
إذا أدخلت قيمة العدد المطلوب اختباره يساوى 7 وضغطت enter يعطى الرسالة
Press any key to continue x is positive
وإذا أدخلت قيمة العدد (-7) يعطى البرنامج رسالة press any key to continue
مثال (1):
يمكن استخدام الصيغة الكاملة if.......else
ليعطى البرنامج رسالة فى كلا الحالتين عند إدخال قيمة x موجبة يعطى رسالة القيمة موجبة وعند إدخال قيمة سالبة يقوم البرنامج بطباعة رسالة أن القيمة المدخلة سالبة كما هو موضح فى البرنامج البسيط التالى:
الحـــل:
# include <iostream.h>
main()
{
int x
cout<<”Enter the test number x ”;
cin>> x ;
if (x>0)
cout << “ x is positive\n”;
else
cout<<"x is negative\n";
return 0;
}
وعند تطبيق البرنامج السابق نجد أن البرنامج يطبع العبارة x is positive)) في حالة القيمة الموجبة ويطبع العبارة (x is negative) في حالة القيمة السالبة ولكن في كل من البرنامجين السابقين هناك خطأ منطقي لا يكتشفه المترجم عند الترجمة وهو ماذا لو تم إدخال قيمة x = 0
في هذه الحالة سيطبع البرنامج العبارة (( x is negative وهذا غير صحيح لأن الصفر لا يكون موجبا أو سالبا وهنا يجب على المبرمج الاهتمام وملاحظة مثل هذه الأخطاء وتجربة البرنامج أكثر من مرة وإعطاؤه عينات كثيرة من الأرقام المختلفة ولحل هذه المشكلة يمكن استخدام هذه الطريقة الموضحة بالبرنامج التالى:
# include <iostream.h>
main()
{
int x
cout<<”Enter The test number X ”;
cin>> x ;
if (x>0)
cout << “ x is positive\n”;
else if (x<0)
cout<<"x is negative\n";
else if(x= =0)
cout<<" x=0\n";
return 0;
}
ونلاحظ هنا أننا وضعنا أكثر من جملة if في هذا البرنامج وبالطبع يمكن كتابة البرنامج السابق بعدة طرق وكلما كانت الطريقة أقصروتقوم بالغرض المطلوب كلما كان هذا أفضل.
كما يجب أن تلاحظ علامة التساوي (= =) في جملة if الأخيرة.
🖋 م . أحمد قطران
انتهى ....
⬅ الجمل الشرطية:
👈 اولاً if
استخدام عبارة التحكم IF:
تقوم عبارة if باختبار شرط معين , إذا تحقق هذا الشرط يتم تنفيذ عملية أو مجموعة عمليات وإلا يتم تجاهل هذه العملية لذا فالصيغة العامة لعبارة if تكون كالآتى:
If (expression) Statement;
أو
If (condition) Statement1;
إذا لم يتحقق الشرط condition ينقل تسلسل تنفيذ البرنامج إلى الجملة statement1
أو تستخدم بشكل أعمق كالتالى:
If (condition) Statement1;
Else Statement2;
فى هذه الحالة ستنفذ الجملة statement1 إن تحقق الشرط وإلا فإن التنفيذ ينتقل إلى السطر التالى وتتحقق الجملة statement2.
حيث يعبر expression أو condition عن التعبير المستخدم (الشرط) ويوضع بين قوسين فإذا كانت قيمته لا تساوى صفر يكون الشرط صحيح ويتم تنفيذ العبارة statement.
للتعرف على طريقة تشغيل العبارة if ندرس المثال التالى:
برنامج بسيط بلغة C++ لإظهار العبارة "x is positive" على الشاشة
# include <iostream.h>
main()
{
int x ;
cout<<”Enter the test number X ”;
cin>> x ;
if (x>0)
cout << “ x is positive”;
return 0;
}
نتيجة البرنامج:
إذا أدخلت قيمة العدد المطلوب اختباره يساوى 7 وضغطت enter يعطى الرسالة
Press any key to continue x is positive
وإذا أدخلت قيمة العدد (-7) يعطى البرنامج رسالة press any key to continue
مثال (1):
يمكن استخدام الصيغة الكاملة if.......else
ليعطى البرنامج رسالة فى كلا الحالتين عند إدخال قيمة x موجبة يعطى رسالة القيمة موجبة وعند إدخال قيمة سالبة يقوم البرنامج بطباعة رسالة أن القيمة المدخلة سالبة كما هو موضح فى البرنامج البسيط التالى:
الحـــل:
# include <iostream.h>
main()
{
int x
cout<<”Enter the test number x ”;
cin>> x ;
if (x>0)
cout << “ x is positive\n”;
else
cout<<"x is negative\n";
return 0;
}
وعند تطبيق البرنامج السابق نجد أن البرنامج يطبع العبارة x is positive)) في حالة القيمة الموجبة ويطبع العبارة (x is negative) في حالة القيمة السالبة ولكن في كل من البرنامجين السابقين هناك خطأ منطقي لا يكتشفه المترجم عند الترجمة وهو ماذا لو تم إدخال قيمة x = 0
في هذه الحالة سيطبع البرنامج العبارة (( x is negative وهذا غير صحيح لأن الصفر لا يكون موجبا أو سالبا وهنا يجب على المبرمج الاهتمام وملاحظة مثل هذه الأخطاء وتجربة البرنامج أكثر من مرة وإعطاؤه عينات كثيرة من الأرقام المختلفة ولحل هذه المشكلة يمكن استخدام هذه الطريقة الموضحة بالبرنامج التالى:
# include <iostream.h>
main()
{
int x
cout<<”Enter The test number X ”;
cin>> x ;
if (x>0)
cout << “ x is positive\n”;
else if (x<0)
cout<<"x is negative\n";
else if(x= =0)
cout<<" x=0\n";
return 0;
}
ونلاحظ هنا أننا وضعنا أكثر من جملة if في هذا البرنامج وبالطبع يمكن كتابة البرنامج السابق بعدة طرق وكلما كانت الطريقة أقصروتقوم بالغرض المطلوب كلما كان هذا أفضل.
كما يجب أن تلاحظ علامة التساوي (= =) في جملة if الأخيرة.
🖋 م . أحمد قطران
انتهى ....
⬅ تمارين 1⃣
👈 بإستخدام if
1) اكتب برنامج لاختبار العدد زوجي ام فردي
2) اكتب برنامج يطبع تقدير الطالب حسب درجته .
3) اعيد تعريف الداله التاليه (قيمة مطلقه)
y=|x-1|
🖋 م . أحمد قطران
👈 بإستخدام if
1) اكتب برنامج لاختبار العدد زوجي ام فردي
2) اكتب برنامج يطبع تقدير الطالب حسب درجته .
3) اعيد تعريف الداله التاليه (قيمة مطلقه)
y=|x-1|
🖋 م . أحمد قطران
🖋 الدرس 8⃣
⬅ جمل الاختيار:
👈 عبارة switch:
تستخدم عبارة if إذا كان جواب الشرط عبارة عن احتمالين أو ثلاثة احتمالات على الأكثر أما إذا زاد عدد الاحتمالات على ذلك فمن الأفضل استخدام عبارة switch وصيغتها كالتالى:
Switch (condition)
{
case value1 ;
statement1;
break;
case value2;
statement2;
break;
case value N;
statementn;
break;
default:
statement def;
break;
}
ويمكن توضيح العبارة switch من الشكل التالي:
switch (expression)
{
case constant1: statement1; break;
case constant2: statement2; break;
...............................................
………………………………………
………………………………………
case constant:statement;break;
default last statements;
}
وكما نرى أن الاختيار المتعدد البدائل يبدأ بكلمة (Switch) يليها متغير الاختيار والذي تحدد قيمته الاختيار الذي سيتم تنفيذه، ويلي ذلك قوس بلوك كبير يحتوي داخله بلوكات صغيرة كل منها يمثل اختيارا من البدائل المطروحة وكل بلوك من بلوكات البدائل يبدأ بكلمة(case) متبوعة بقيمة لمتغير الاختيار والتي تمثل الشرط وبعد ذلك تأتي عبارة النتيجة.
ويختتم بلوك البديل بكلمة (break) والغرض منها هو منع الكمبيوتر من تنفيذ عبارة النتيجة التالية. وهنا يتبادر للذهن سؤال - ألم يتحقق الشرط الأول مثلا فماذا يدفع الكمبيوتر لتنفيذ بقية عبارات النتائج ؟
والإجابة عن هذا السؤال هى أن عبارة الإدخال من متعدد البدائل لا ترسل للكمبيوتر أمرا بالتوقف بعد تحقق أى شرط فيها لذا لزم الاستعانة بكلمة (break ).
وبعد نهاية بلوكات البدائل تأتي كلمة (default) متبوعة بعبارة أو بعبارات ينفذها الكمبيوتر في حالة عدم تحقق أى من الشروط السابقة.
👈 مثال (1):
برنامج لطباعة قيمة عندما يتحقق شرط من شروط متعددة باستخدام دالة case
#include < iostream.h>
void main()
{
int s1;
s1=2;
switch (s1)
{
case 2:cout<<"y";
break;
case 3: cout<<"x";
break;
case 4: cout<<"m";
break;
default: cout<<"w";
}
}
وتكون نتيجة البرنامج طباعة حرف(y) وذلك لتحقق الشرط الأول وهو s1=2
👈 مثال (2)
#include <iostream>
using namespace std ;
void main (){
char a;
cin>>a;
switch (a) {
case 'A': {cout<<"exelant";
cout<<endl;break;}
case 'B':{cout<<"v.good";
cout<<endl;break;}
case 'C':{cout<<"good";
cout<<endl;break;}
default:{cout<<"F";
cout<<endl;break;}
} }
الكود باستخدام جمله if:
#include <iostream>
using namespace std ;
void main (){
char a;
cin>>a;
if (a=='A')
cout<<"exelant";
else if (a=='B')
cout<<"v.good";
else if (a=='C')
cout<<"good";
}
🖋 م . أحمد قطران
انتهى ...
⬅ جمل الاختيار:
👈 عبارة switch:
تستخدم عبارة if إذا كان جواب الشرط عبارة عن احتمالين أو ثلاثة احتمالات على الأكثر أما إذا زاد عدد الاحتمالات على ذلك فمن الأفضل استخدام عبارة switch وصيغتها كالتالى:
Switch (condition)
{
case value1 ;
statement1;
break;
case value2;
statement2;
break;
case value N;
statementn;
break;
default:
statement def;
break;
}
ويمكن توضيح العبارة switch من الشكل التالي:
switch (expression)
{
case constant1: statement1; break;
case constant2: statement2; break;
...............................................
………………………………………
………………………………………
case constant:statement;break;
default last statements;
}
وكما نرى أن الاختيار المتعدد البدائل يبدأ بكلمة (Switch) يليها متغير الاختيار والذي تحدد قيمته الاختيار الذي سيتم تنفيذه، ويلي ذلك قوس بلوك كبير يحتوي داخله بلوكات صغيرة كل منها يمثل اختيارا من البدائل المطروحة وكل بلوك من بلوكات البدائل يبدأ بكلمة(case) متبوعة بقيمة لمتغير الاختيار والتي تمثل الشرط وبعد ذلك تأتي عبارة النتيجة.
ويختتم بلوك البديل بكلمة (break) والغرض منها هو منع الكمبيوتر من تنفيذ عبارة النتيجة التالية. وهنا يتبادر للذهن سؤال - ألم يتحقق الشرط الأول مثلا فماذا يدفع الكمبيوتر لتنفيذ بقية عبارات النتائج ؟
والإجابة عن هذا السؤال هى أن عبارة الإدخال من متعدد البدائل لا ترسل للكمبيوتر أمرا بالتوقف بعد تحقق أى شرط فيها لذا لزم الاستعانة بكلمة (break ).
وبعد نهاية بلوكات البدائل تأتي كلمة (default) متبوعة بعبارة أو بعبارات ينفذها الكمبيوتر في حالة عدم تحقق أى من الشروط السابقة.
👈 مثال (1):
برنامج لطباعة قيمة عندما يتحقق شرط من شروط متعددة باستخدام دالة case
#include < iostream.h>
void main()
{
int s1;
s1=2;
switch (s1)
{
case 2:cout<<"y";
break;
case 3: cout<<"x";
break;
case 4: cout<<"m";
break;
default: cout<<"w";
}
}
وتكون نتيجة البرنامج طباعة حرف(y) وذلك لتحقق الشرط الأول وهو s1=2
👈 مثال (2)
#include <iostream>
using namespace std ;
void main (){
char a;
cin>>a;
switch (a) {
case 'A': {cout<<"exelant";
cout<<endl;break;}
case 'B':{cout<<"v.good";
cout<<endl;break;}
case 'C':{cout<<"good";
cout<<endl;break;}
default:{cout<<"F";
cout<<endl;break;}
} }
الكود باستخدام جمله if:
#include <iostream>
using namespace std ;
void main (){
char a;
cin>>a;
if (a=='A')
cout<<"exelant";
else if (a=='B')
cout<<"v.good";
else if (a=='C')
cout<<"good";
}
🖋 م . أحمد قطران
انتهى ...
⬅ تمارين 2⃣
👈 بإستخدام switch
1) اكتب برنامج لاختبار العدد زوجي ام فردي
2) اكتب برنامج يطبع تقدير الطالب حسب درجته .
3) اعيد تعريف الداله التاليه (قيمة مطلقه)
y=|x-1|
🖋 م . أحمد قطران
👈 بإستخدام switch
1) اكتب برنامج لاختبار العدد زوجي ام فردي
2) اكتب برنامج يطبع تقدير الطالب حسب درجته .
3) اعيد تعريف الداله التاليه (قيمة مطلقه)
y=|x-1|
🖋 م . أحمد قطران