You are on page 1of 40

‫‪C++‬‬ ‫‪ #‬الدرس ‪ : 1‬لماذا نبدأ بلغة‬

‫ألنها تعطيك مفاهيم البرمجة كلها ‪ ،‬لتستطيع تعلم أي لغة برمجة أخرى في أقل من شهرين‬

‫و ما هي مزاياها‬ ‫‪C++‬‬ ‫‪ #‬ما هي لغة‬


‫لغة متعددة االستخدام تنشئ تطبيقات عالية الجودة يمكن تكييفها مع منصات مختلفة‬ ‫•‬

‫لغة ممتعة وسهلة‬ ‫•‬

‫هي أم اللغات‬ ‫•‬

‫‪OOP‬‬ ‫تدعم البرمجة الهيكلية (‪ & )Procedural‬والبرمجة كائنية التوجيه‬ ‫•‬

‫ستجبرك على تعلم مفاهيم البرمجة األساسية‬ ‫•‬

‫إذا تعلمتها جيدا يمكنك تعلم أي لغة برمجة أخرى في أقل من شهر‬ ‫•‬

‫تعتبر لغة ‪ C++‬متوسطة المستوى ‪ -‬قريبة من الهاردوير وقادرة على برمجة معدات‬ ‫•‬
‫الهاردوير األساسية ومعالجتها‬

‫لها تحكم كامل في موارد أو معدات الكمبيوتر مثل الذاكرة ‪،‬‬ ‫•‬

‫إدارة الذاكرة غير تلقائية‬ ‫•‬

‫الدرس الرابع عشر ( في أساسيات مهمة لكل مبرمج ) ‪ :‬لماذا يجب أن تبدأ بتعلم لغة ‪C++‬‬

‫ألن هذه اللغة تأسسك بشكل قوي وتجبرك بتعلم مفاهيم البرمجة كلها‬

‫إذا تعلمت لغة ‪ C++‬تستطيع تعلم أي لغة برمجة في أقل من شهر‬

‫ما هي لغة ‪ C++‬؟‬

‫هي لغة متعددة المنصات ‪ ،‬يمكن إنشاء تطبيقات عالية األداء على أنظمة مختلفة‬

‫❖ ممتعة وسهلة التعلم‬

‫❖ هي أم اللغات‪ ،‬ألن لغات البرمجة األخرى مبنية بشكل مباشر أو غير مباشر على ‪C++‬‬

‫❖ تدعم البرمجة الهيكلية (‪ & )Procedural‬والبرمجة كائنية التوجيه ‪OOP‬‬

‫❖ ستجبرك على تعلم مفاهيم البرمجة األساسية‬

‫❖ تستطيع تعلم أي لغة برمجة في أقل من شهر‬

‫❖ تتمتع ‪ C , C++‬بالتحكم الكامل في موارد الكمبيوتر (الهارد وير) مثل الذاكرة ‪ ،‬وال‬
‫توجد بها إدارة تلقائية للذاكرة‬

‫‪1‬‬
‫ما الذي تستطيع عمله بلغة ‪C++‬؟‬
‫‪ .3‬لغات برمجة‬ ‫‪ .2‬تطبيقات مثل‬ ‫‪ .1‬أنظمة تشغيل‬
‫الفوتوشوب‬
‫‪ .6‬ألعاب ضخمة‬ ‫‪ .5‬مخططات هندسية‬ ‫‪ .4‬قواعد بيانات‬

‫‪ .9‬األنظمة المضمنة‬ ‫‪ .8‬متصفح انترنت‬ ‫‪ .7‬برامج األجهزة‬


‫مثل تسل‬ ‫الطبية‬
‫‪ IDEs .12‬فيجول استديو‬ ‫‪ .11‬برامج ضخمة‬ ‫‪ .10‬البرامج الحسابية‬

‫المكتبات‬

‫عندما نحتاج الى حسابات رياضية عالية المستوى ‪ ،‬يصبح األداء والسرعة مهمين‬
‫لذا فإن معظم المكتبات تستخدم ‪ C++‬كلغة برمجة أساسية ‪،‬‬

‫تستخدم معظم مكتبات لغات ‪ High-level‬لغة ‪ C++‬كخلفية لها‬

‫تعد لغة ‪ C++‬أسرع من معظم لغات البرمجة األخرى كما أنه يدعم تعدد مؤشرات‬
‫الترابط مع التزامن‬

‫‪2‬‬
‫مميزات ‪C++‬‬
‫• أداء‬
‫• سرعة‬
‫• قابلة للتكيف متعددة المنصات ‪ ،‬يمكن إنشاء تطبيقات عالية األداء على أنظمة مختلفة‬
‫• تعدد العمليات الحسابية (معقدة ‪ ،‬كثيرة)‬
‫• عالية المستوى مع التزامن‬

‫مقارنة بين ‪ C++‬و ‪C‬‬

‫أوجه التشابه‬

‫‪C‬‬ ‫‪C++‬‬
‫نفس ) ‪ ( syntax‬قواعد الكتابة أو بناء الجملة وكتابة الكود‬
‫تستخدم لغة ترجمة ‪Compiler‬‬
‫كلهما لغات متوسطة المستوى ‪ ،‬قريبة من الهارد وير‬
‫التحكم الكامل في موارد (الهارد وير) الكمبيوتر مثل الذاكرة‬

‫أوجه االختلف‬

‫‪C‬‬ ‫‪C++‬‬
‫أنشأت بين ‪ 1969‬الى ‪1973‬‬ ‫أنشأت عام ‪1979‬‬
‫لغة ‪ C‬جزء من ‪C++‬‬ ‫لغة ‪ C++‬أشمل من ‪C‬‬
‫برمجة هيكلية فقط (‪)Procedural‬‬ ‫برجمة هيكلة و ‪OOP‬‬

‫مقارنة بين ‪ C++‬و ‪JAVA‬‬

‫‪Java‬‬ ‫‪C++‬‬
‫برمجة ‪ OOP‬فقط‬ ‫برجمة هيكلة و ‪OOP‬‬

‫‪3‬‬
)LESSON #11 - SYNTAX ( ‫ قواعد كتابة اللغة‬: 11 ‫ الدرس‬#

‫قواعد‬ ) Syntax( ‫الكود‬ ‫شرح الكود‬


#include
‫استدعاء المكتبات مثل‬ <iostream> cout , cin ‫لألوامر الرئيسية مثل‬

int main()} .... {


‫ال بد من توفرها‬ ) ‫تنفيذ الكود ( األوامر‬
;
‫الفاصلة المنقوطة‬ ‫انتهاء سطر الكود ; لينتقل الى السطر الذي بعده‬

)LESSON #12 - OUTPUT (PRINT) ( ‫ كيفية الطباعة‬: 12 ‫ الدرس‬#

) Syntax ( ‫الكود‬ ‫األوامر‬ ‫شرح‬


std::cout << "Saeed" ; cout ‫أمر الطباعة‬
std::cout << "Saeed/n" << std::endl ; endl OR " \n " ‫للنزول الى سطر جديد‬
std::cout << "Saeed" << "Omar" ; " " >> " " ‫لطباعة أكثر من امر بسطر واحد‬

)LESSON #13 OMITTING NAMESPACE ( )STD:: ( ‫ اختصار ل‬: 13 ‫ الدرس‬#

#include <iostream>
using namespace std;
int main()
{
(std::cout << ("Saeed";) == (cout << "Saeed";)
std::cout << ("Saeed" << std::endl;) (cout << "Saeed" << endl;)
return 0; }

4
‫)‬ ‫( ‪LESSON #14 \N OR ENDL‬‬ ‫؟‬ ‫‪ENDL‬‬ ‫&‬ ‫‪\N‬‬ ‫‪ #‬الدرس ‪ : 14‬الفرق بين‬

‫للنزول الى سطر جديد‬


‫‪endl‬‬ ‫" ‪" \n‬‬
‫; ‪std::cout << "Saeed" << std::endl‬‬ ‫"‪std::cout << "Saeed\n‬‬

‫النزول إلى سطر جديد مع تفريغ للتخزين‬ ‫النزول الى سطر جديد من غير تفريغ‬
‫المؤقت (‪)Buffer‬‬ ‫للتخزين المؤقت (‪)Buffer‬‬

‫إذا استخدمتها مع كل أمر نزول إلى سطر جديد‬ ‫إذا استخدمتها مع كل أمر نزول إلى سطر‬
‫يصبح البرنامج أبطئ ألنه يفرغ التخزين‬ ‫جديد يصبح البرنامج أبطئ ألنه ال يفرغ‬
‫المؤقت مع كل أمر‬ ‫التخزين المؤقت‬

‫‪endl‬‬ ‫لتسريع البرنامج استخدم ‪ ( \n‬مثال لكل ‪ 50‬أمر ) ثم استخدم واحد‬

‫‪ endl‬ليست دائما أسرع ‪ ،‬ألن تفريغ ‪ Buffer‬يأخذ وقت مع كل تفريغ ‪ ،‬لذلك ال نستطيع أن‬
‫نقول أن أحدهما أسرع من االخر ‪ ،‬ولذلك تجب الموازنة بينهم‬

‫‪ #‬الدرس ‪ : 15‬الملحظات ( ‪)LESSON #15 - COMMENTS‬‬


‫يمكن استخدام الملحظات لشرح الكود ولجعله أكثر قابلية للقراءة‬ ‫❖‬

‫كلما قلت الملحظات كلما كان البرنامج أسرع (اكتب الملحظات المهمة)‬ ‫❖‬

‫يمكن أن تكون التعليقات مفردة السطر أو متعددة األسطر‬

‫‪ .1‬مفردة السطر (‪ )Single line Comments‬استخدم ‪ //‬لسطر واحد‬

‫‪ .2‬متعددة األسطر (‪ )Multi line Comments‬تبدأ ب ‪ */‬وتنتهي ب *‪/‬‬

‫‪5‬‬
‫‪ #‬الدرس ‪ : 16‬األحرف ( ‪)LESSON #16 - LITERALS AND ESCAPE SEQUENCES‬‬
‫البيانات الحرفية هي البيانات المستخدمة لتمثيل القيم الثابتة ‪ ،‬يمكن استخدامها مباشرة في الكود‬

‫أنواع الحروف‬

‫‪ .1‬عدد صحيح حرفي‬

‫النظام العشري ‪)base 10(decimal‬‬ ‫•‬

‫‪0 )base 8( octal‬‬ ‫النظام الثماني‬ ‫•‬

‫عشر‪0x )base 16( hexadecimal‬‬ ‫النظام السادس‬ ‫•‬

‫‪ .2‬األعداد العشرية ‪ 12.5‬أو ‪-33.8‬‬

‫‪ABC , #$%‬‬ ‫‪ .3‬األحرف والرموز‬

‫‪ .4‬االختصارات \ (‪ )Escape Sequences‬مثل‬

‫\\ طباعة "\"‬ ‫•‬

‫‪ \t‬مسافة أربع فراغات‬ ‫•‬

‫‪ \n‬للنزول لسطر جديد‬ ‫•‬

‫'\ ‪ \" ,‬طباعة علمة تنصيص مفردة‬ ‫•‬

‫‪ \a‬صوت جرس‬ ‫•‬

‫‪6‬‬
)LESSON #17 - VARIABLES ( ‫ المتغيرات‬: 17 ‫ الدرس‬#
‫ مكان لتخزين بيانات في الذاكرة‬:‫المتغيرات هي‬

C++ ‫أنواع البيانات في‬

)Fundamentals( ‫ المتغيرات األساسية‬.1

)integral Type( ‫األرقام‬ •

712 = )int( ‫رقم صحيح‬ ▪

'A' = )char( ‫حرف واحد‬ ▪

)Floating Type( ‫االرقام الكسرية‬ •

14.5 = )float( ‫رقم كسري‬ ▪

)double( ‫رقم كسري حجم أكبر‬ ▪

True ( 1 ) OR False ( 0 ) = )bool( )Boolean Type( ‫القيم المنطقية‬ •

"Saeed" = )string( )String Type( ‫النصوص‬ •

Empty ‫) = فارغة‬void( )Void Type( ‫فارغ‬ •

‫) = مثل األحرف العربية‬wchar_t( )Wide Charater( ‫جميع لغات العالم‬ •

)Derived( ‫ مشتق‬.2
Function •

Array •

Pointer •

Reference •

)User-Defined( ‫ مستخدم محدد‬.3


Class •

Structure •

Union •

Enum •

Type Def •

7
)SYNTAX ( ‫كتابة المتغيرات‬

Syntax

‫النوع‬ ‫= اسم المتغير‬ ‫القيمة‬


Type Variable Name = Value ;
int MyAge = 45;
cout << "My Age is : " << MyAge << endl ;

int myage = 22;


float MyFloatNumber = 32.54;
double MyDoubleNumber = 7.987657;
char MyLetter = 'S';
string MyText = "Seed";
bool MyBoolean = true;

cout << "My Age is:" << myage << endl;


cout << myage << endl;
cout << MyFloatNumber << endl;
cout << MyDoubleNumber << endl;
cout << MyLetter << endl;
cout << MyText << endl;
cout << MyBoolean << endl;

8
‫تسمية المتغيرات‬

‫‪ .1‬يجب أن تكون جميع المتغيرات أسماء فريدة‬

‫‪ .2‬المعرف هو اسم المتغير‬

‫‪ .3‬تسمى هذه األسماء الفريدة بالمعرفات‬

‫‪Age ,name‬‬ ‫‪ .4‬يمكن أن تكون ألسماء قصيرة مثل حرف ‪ x ,y‬أو أسماء وصفية مثل‬

‫‪ .5‬يوصى باستخدام األسماء الوصفية إلنشاء كود مفهوم ويمكن صيانته‬

‫‪9‬‬
‫القوا عد العامة لتسمية المتغيرات ( ‪ )VARIABLES‬و الثوابت ( ‪ )CONSTANTS‬هي‬
‫‪ .1‬يمكن أن تحتوي األسماء على أحرف وأرقام و شرطات سفلية‬

‫‪ .2‬يجب أت تبدأ األسماء بحرف أو شرطة سفلية‬

‫‪ .3‬األسماء حساسة لحالة الحرف ( ‪ myage‬و ‪ myAge‬متغيرين مختلفين)‬

‫‪ .4‬ال يمكن أن تحتوي األسماء على مسافات أو رموز خاصة مثل *&^‪$#%‬‬

‫‪int , cout , string‬‬ ‫‪ .5‬ال يمكن استخدام الكلمات المحجوزة للغة مثل‬

‫الثوابت ( ‪ )CONSTANTS‬هي قيم ة غير قاب لة للتغيير‪ ،‬هي للقراءة فقط‬

‫‪Syntax‬‬

‫تثبيت‬ ‫اسم الثابت‬ ‫القيمة‬


‫‪const‬‬ ‫‪float‬‬ ‫= ‪PI‬‬ ‫‪3.14‬‬
‫‪const‬‬ ‫‪int‬‬ ‫= ‪minutesPerHour‬‬ ‫‪60‬‬

‫‪10‬‬
‫هل أسماء المتغيرات التالية صالحة ولماذا ؟‬

‫نعم‬ ‫‪Age‬‬

‫ال ‪ ،‬ألن الكمبيوتر يفهمها معادلة‬ ‫‪My-Age‬‬

‫نعم‬ ‫‪My_Age‬‬

‫نعم‬ ‫‪_Age‬‬

‫ال ألن البداية رقم‬ ‫‪2x‬‬

‫نعم‬ ‫‪X2‬‬

‫ال لوجود المسافة‬ ‫‪My Name‬‬

‫نعم‬ ‫‪Myname‬‬

‫ال لوجود الرمز‬ ‫‪#Name‬‬

‫ال لوجود الرمز‬ ‫‪&Name‬‬

‫ال لوجود الرمز‬ ‫‪N@me‬‬

‫‪C++‬‬ ‫ال لوجود اسم خاص ب‬ ‫‪Int‬‬

‫‪C++‬‬ ‫ال لوجود اسم خاص ب‬ ‫‪float‬‬

‫‪ #‬الدرس ‪ :18‬اإلدخال ( ‪)LESSON #18 - USER INPUTS‬‬


‫‪ Input Syntax‬قواعد كتابة اإلدخال‬

‫يتم استخدام ‪ cin‬مع عامل التشغيل << أكبر من إلدخال القيم الى المتغيرات‬

‫‪Syntax‬‬
‫‪Std::cin‬‬ ‫<<‬ ‫;‪Variable‬‬

‫‪cin‬‬ ‫<<‬ ‫;‪Variable‬‬

‫‪11‬‬
‫( ‪ )LESSON #19 - DATATYPES SIZES & RANGES‬لكل نوع له حجم مناسب‬ ‫‪ #‬الدرس ‪ :19‬أحجام أنواع البيانات‬

‫معدل النوع ( ‪)TYPE MODIFIERS‬‬


‫يمكننا تقليص أحجام بعض أنواع البيانات األساسية باستخدام معدالت النوع ‪ ،‬توجد أربع ‪4‬‬
‫معدالت من النوع في ‪ C++‬وهي ‪:‬‬

‫وهذه المعدالت األربع ‪ 4‬تستخدم مع ثلثة أنواع فقط من أنواع البيانات وهي‬

‫أنواع البيانات‬ ‫معدالت النوع‬


‫‪int‬‬ ‫‪( short‬صغير)‬
‫‪double‬‬ ‫‪( long‬كبير)‬
‫‪char‬‬ ‫‪ +( signed‬و ‪)-‬‬
‫‪)+( unsigned‬‬
‫كل أنواع البيانات إذا لم تعرف نوعها من معدالت النوع فهي تكون تلقائيًا ‪ +( signed‬و ‪)-‬‬
‫يعني وجودها وعدمها واحد‬

‫‪ int‬تستخدم جميع معدالت النوع األربعة (‪)short – long – signed - unsigned‬‬

‫‪12‬‬
‫) تستخدم نوعين من معدالت النوع (‪)long - signed‬‬ ‫(‪double‬‬

‫‪ char‬يستخدم نوعين من معدالت األنواع ( ‪)signed – unsigned‬‬

‫‪10 * 10 ^ 308‬‬ ‫‪= 10e+308‬‬

‫‪56 * 10 ^ 12 = x‬‬ ‫\\‬ ‫‪double x = 56E12‬‬

‫; ‪ \\ short d = 3434233‬خطأ ألن أكبر حجم ‪ short‬هو = ‪ +32767‬و ‪-32768‬‬


‫وإذا كان ‪( 65536 = unsigned short‬تكون األرقام موجبة فقط ‪ ،‬وإذا كانت سالبة تكون النتيجة خطأ )‬

‫‪13‬‬
) ‫لمعرفة نطاق القيم التي يمكن تخزينها ( من أصغر قيمة إلى أكبر قيمة‬

cout << "char Range : (" << CHAR_MIN <<", " << CHAR_MAX << ")\n";
cout << "unsigned char Range: (" << 0 << " , " << UCHAR_MAX <<
")\n\n";

cout << "short int Range: (" << SHRT_MIN << ", " << SHRT_MAX << ")\n";
cout << "unsigned short int Range: (" << 0 << ", " << USHRT_MAX <<
")\n\n";

cout << "int Range: (" << INT_MIN << " , " << INT_MAX << ")\n";
cout << "unsigned int Range: (" << 0 << " , " << UINT_MAX << ")\n\n";

cout << "long int Range: (" << LONG_MIN << ", " << LONG_MAX << ")\n";
cout << "unsigned long int Range: (" << 0 << ", " << ULONG_MAX <<
")\n\n";

cout << "long long int Range: (" << LLONG_MIN << " , " << LLONG_MAX <<
")\n";
cout << "unsigned long long int Range: (" << 0 << " , "<< ULLONG_MAX
<< ")\n\n";

cout << "float Range: (" << FLT_MIN << " " << FLT_MAX << ")\n";
cout << "float(negative) Range: (" << -FLT_MIN << " , "<< -FLT_MAX <<
")\n\n";

cout << "double Range: (" << DBL_MIN << " , " << DBL_MAX << ")\n";
cout << "double(negative) Range: (" << -DBL_MIN << -DBL_MAX << ")\n";
cout << "long double Range: (" << LDBL_MIN_10_EXP << " , " <<
LDBL_MAX_10_EXP << ")\n";

‫لمعرفة أحجام أنواع البيانات‬

cout << "The size of bool data type is " << sizeof(bool) << "\n";
cout << "The size of char data type is s " << sizeof(char) << "\n";
cout << "The size of short data type is " << sizeof(short int) <<
"\n";
cout << "The size of int data type is " << sizeof(int) << "\n";
cout << "The size of int long data type is " << sizeof(long) <<
"\n";
cout << "The size of int long long data type is " << sizeof(long
long) << "\n";
cout << "The size of float data type is " << sizeof(float) << "\n";
cout << "The size of double data type is " << sizeof (double) <<
"\n";

14
‫‪ #‬الدرس ‪ : 20‬العوامل الحسابية ( ‪)LESSON #20 - ARITHMETIC OPERATORS‬‬
‫اسم العملية الحسابية العملية الحسابية‬ ‫‪A = 10 , B = 20‬‬ ‫مثال‪:‬‬
‫‪+‬‬ ‫جمع‬ ‫‪A + B = 30‬‬

‫‪-‬‬ ‫ناقص‬ ‫‪A – B = - 10‬‬

‫*‬ ‫ضرب‬ ‫‪A * B = 200‬‬

‫‪/‬‬ ‫قسمة‬ ‫‪B/A=2‬‬

‫‪%‬‬ ‫الباقي بعد القسمة‬ ‫‪B%A=0‬‬

‫‪ #‬الدرس ‪ :21‬عوام ل التشغيل الزيادة ( ‪ ، ++ )INCREMENT‬والنقصان ( ‪)DECREMENT‬‬


‫– ‪-- ,++ : LESSON #21 - INCREMENT DECREMENT OPERATORS‬‬

‫‪Operator‬‬ ‫‪A =10 , B = 20‬‬ ‫طريقة الكتابة الناتج‬


‫‪++‬‬ ‫)‪A++ (A=A+1‬‬ ‫إذا كانت في‬ ‫‪11‬‬ ‫;‪A++‬‬
‫;‪++A‬‬
‫)‪++A (A=A+1‬‬ ‫سطر بمفردها‬
‫‪--‬‬ ‫)‪B-- (B=B-1‬‬ ‫ال يوجد‬ ‫‪19‬‬ ‫;‪B++‬‬
‫;‪++B‬‬
‫)‪--B (B=B-1‬‬ ‫فرق بينهما‬

‫‪ #‬الدرس ‪ :22‬الفرق بين ( ‪ ، ++ )INCREMENT‬والنقصان ( ‪– )DECREMENT‬‬


‫( ‪)-- LESSON #22 - POSTFIX VS PREFIX : ++A VS A++ , --A VS A‬‬
‫يكون الفرق إذا لم تكن بمفردها مثل ‪C = A++, and C = ++A‬‬

‫‪Operator‬‬ ‫‪A =10‬‬ ‫مثال‬ ‫الناتج‬ ‫طريقة الكتابة‬


‫‪A++‬‬ ‫‪C = A++‬‬ ‫‪ C‬سيأخذ قيمة ‪10 = A‬‬ ‫;‪int A = 10‬‬
‫;‪int C = A++‬‬
‫ثم تزيد ‪11 = A +1‬‬
‫‪++A‬‬ ‫‪C = ++A‬‬ ‫‪ A‬ستزيد ‪11 = 1‬‬ ‫;‪int A = 10‬‬
‫‪int C = ++A‬‬
‫ثم ‪ C‬ستأخذ قيمة ‪11= A‬‬
‫‪A--‬‬ ‫‪C = A--‬‬ ‫‪ C‬سيأخذ ‪10 = A‬‬ ‫;‪int A = 10‬‬
‫;‪int C = A--‬‬
‫ثم تنقص ‪9 =A -1‬‬
‫‪--A‬‬ ‫‪C = --A‬‬ ‫‪ A‬تنقص ‪9 = 1‬‬ ‫;‪int A = 10‬‬
‫‪int C = --A‬‬
‫ثم ‪ C‬ستأخذ قيمة ‪9 = A‬‬

‫‪15‬‬
‫( ‪)LESSON #23 - ASSIGNMENT OPERATORS‬‬ ‫‪ #‬الدرس ‪ : 23‬اختصارات مهمة في ال عمليات الحسابية‬

‫;‪int A = 10 , B =20‬‬

‫العملية الحسابية‬ ‫مثال‬ ‫النتيجة شرح االختصار‬


‫=‪+‬‬ ‫‪A += B‬‬ ‫‪A=A+B‬‬ ‫‪A = 30‬‬

‫=‪-‬‬ ‫‪A -= B‬‬ ‫‪A=A-B‬‬ ‫‪A = 10‬‬

‫=*‬ ‫‪A *= B‬‬ ‫‪A=A* B‬‬ ‫‪A = 200‬‬

‫=‪/‬‬ ‫‪A /= B‬‬ ‫‪A=A/B‬‬ ‫‪A = 10‬‬

‫=‪%‬‬ ‫‪A %= B‬‬ ‫‪A=A%B‬‬ ‫‪A = 10‬‬

‫‪ #‬الدرس ‪ : 24‬عمليات المقارنة ( ‪)LESSON #24 - RELATIONAL OPERATORS‬‬


‫;‪int A = 10 , B =20‬‬

‫‪Operator‬‬ ‫معنى العامل‬ ‫مثال‬ ‫الجواب‬


‫==‬ ‫هل قيم العاملين متساويتين أم ال ؟‬ ‫<< ) ‪cout << (A == B‬‬ ‫‪0‬‬
‫;‪endl‬‬

‫=!‬ ‫هل قيم العاملين غير متساوية أم ال ؟‬ ‫<< ) ‪cout << (A != B‬‬ ‫‪1‬‬
‫;‪endl‬‬

‫>‬ ‫هل العامل األيمن أكبر من العامل األيسر ؟‬ ‫<< ) ‪cout << (A < B‬‬ ‫‪1‬‬
‫;‪endl‬‬

‫<‬ ‫هل العامل األيمن أصغر من العامل األيسر ؟‬ ‫<< ) ‪cout << ( A > B‬‬ ‫‪0‬‬
‫;‪endl‬‬

‫=>‬ ‫هل العامل األيمن أكبر من العامل األيسر أم هما‬ ‫<< ) ‪cout << ( A <= B‬‬ ‫‪1‬‬
‫;‪endl‬‬
‫متساويان ؟‬
‫=<‬ ‫هل العامل األيمن أصغر من العامل األيسر أم هما‬ ‫<< ) ‪cout << ( A >= B‬‬ ‫‪0‬‬
‫;‪endl‬‬
‫متساويان ؟‬

‫‪16‬‬
‫‪ #‬الدرس ‪ : 25‬العوامل المنطقية ( ‪)LESSON #25 - LOGICAL OPERATORS‬‬
‫;)‪bool A = 1 (true) , B = 0 (false‬‬

‫العامل‬ ‫المعنى‬ ‫مثال‬ ‫الجواب‬


‫&&‬ ‫إذا تحقق الشرطان صحيحة ‪AND‬‬ ‫; ) ‪cout << (A && B‬‬ ‫‪0‬‬

‫||‬ ‫إذا تحقق أحد الشرطين صحيح ‪OR‬‬ ‫; ) ‪cout << (A || B‬‬ ‫‪1‬‬

‫!‬ ‫لعكس نتيجة الشرط ‪NOT‬‬ ‫; ) ‪cout << !( A && (||) B‬‬ ‫)‪1 (0‬‬
‫;‪cout << !A‬‬ ‫‪0‬‬

‫‪ #‬الدرس ‪ :26‬مكتبة الرياضيات ( ‪)LESSON #26 - MATH FUNCTIONS IN C++‬‬


‫‪ Functions‬هو اختصار للكود (بدل كتابة عدة أسطر استخدم كود جاهز في أقل من سطر)‬
‫>‪#include <iostream‬‬
‫>‪#include <cmath‬‬
‫;‪using namespace std‬‬
‫)(‪int main‬‬
‫{‬
‫‪….‬‬
‫}‬

‫طريقة الكتابة‬ ‫اختصار‬ ‫‪Name‬‬ ‫االسم‬


‫;)‪cout << sqrt(9‬‬ ‫‪sqrt‬‬ ‫‪Squair Root‬‬ ‫الجذر‬
‫‪cout << round(3.7);= 4‬‬ ‫‪round‬‬ ‫‪Rounding‬‬ ‫التقريب‬
‫‪cout << pow(2,3); = 8‬‬ ‫‪pow‬‬ ‫‪Power‬‬ ‫األس‬
‫‪cout << ceil(2,1); = 3‬‬ ‫‪ceil‬‬ ‫‪ceil‬‬ ‫األعلى (السقف)‬
‫‪cout << floor(2,9); = 2‬‬ ‫‪floor‬‬ ‫‪floor‬‬ ‫األدنى (األرض)‬
‫‪cout << abs(-10); = 10‬‬ ‫‪abs‬‬ ‫‪Absolute‬‬ ‫القيمة المطلقة‬

‫التقريب من ‪ 5‬وأعلى يعطي رقم أكبر‪ ،‬ومن ‪ 4‬وأسفل يعطي نفس الرقم صحيح‬
‫مثال ‪3 = 3.4 | 4 = 3.5 :‬‬
‫األعلى ‪ ceil‬يقرب دائما الى الرقم األعلى مثال ‪-5 = -6.4 | 3 = 2.1 :‬‬
‫األدنى ‪ floor‬يقرب دائما الى أسفل مثال‪-6 = -6,8 | 2 = 2.9 :‬‬

‫‪17‬‬
)LESSON #27 - STRUCTURES ( ‫ ال هي ا كل‬: 27 ‫ الدرس‬#

Syntax
main ‫االستدعاء في ال‬
type stName } ‫;{ تخزين أنواع البيانات‬ stName Name
struct stCar { string Model; }; stCar Car

)User-Defined( ‫مستخدم محدد‬


Class •

Structure •

Union •

Enum •

Type Def •

)Structures( ‫ما هو الهيكل‬

‫ يعرف كل متغير في الهيكل‬، ‫طريقة لتجميع العديد من المتغيرات ذات الصلة في مكان واحد‬
) ‫ ( يمكن بناء هيكل داخل هيكل‬، ‫بأنه عضو في بنية الهيكل‬
# include <iostream>
using namespace std;
struct stcar
{
string Brand;
string Model;
int Years;
};
int main()
{
stcar Mycar1, Mycar2;
Mycar1.Brand = "BMW";
Mycar1.Model = "X5";
Mycar1.Years = 2000;
Mycar2.Brand = "Ford";
cout << Mycar1.Brand << " " << Mycar1.Model << " " << Mycar1.Years
<< "\n";
}

18
)LESSON #28 - ENUMS ( ‫ التعداد‬: 28 ‫ الدرس‬#

Syntax
main ‫االستدعاء في ال‬
type enName } ‫;{ تخزين قيم‬ enName Name
enum enWeek { Sun , Mon }; enWeek Today
، ‫ مفيد في الجمل الشرطية‬enum
‫ غير مفيد‬Today = 0 : ‫تستطيع استدعائها بمكان أول قيمة لها‬ Today = Week::Sun;

)User-Defined( ‫مستخدم محدد‬


Class •

Structure •

Union •

Enum •

Type Def •

‫ نوع مميز تقتصر قيمته على نطاق من القيم‬: ‫التعداد هو‬

)‫ أو تضع قيمة لها‬، ‫(تبدأ أول قيمة من الصفر تلقائيا‬


# include <iostream>
using namespace std;
enum enWeek{ Sat , Sun , Mon , Tue , Wed , Thu , Fri };
int main()
{
enWeek Today;
Today = enWeek::Sat;
cout << Today;
}

19
‫ الهياكل والتعدادات المتداخلة‬:29 ‫ الدرس‬#
)LESSON #29 - NESTED STRUCTURES AND ENUMS - FULL PRACTICAL EXAMPLE (
Structure & Enum ‫استخدام الهياكل والتعداد‬
‫ ألنها تنظم عملية التعامل مع البيانات داخل البرنامج‬، ‫❖ تسهل وتسرع البرمجة‬

‫❖ كلما كان البرنامج مرتب كلما كنت أسرع‬

) ‫❖ تساعدك على تذكر المتغيرات (اسم المتغيرات تكون معبرة عن عملها‬


#include <iostream>
using namespace std;
enum enColor { Red, Green, Yellow, Blue };
enum enGendor { Male, Female };
enum enMaritalStatus { Single, Married };

struct stAddress
{
string StreetName;
string BuildingNo;
string POBox;
string ZipCode;
};
struct stContactInfo
{
string Phone;
string Email;

stAddress Address; // ‫استدعاء‬


};

struct stPerson // ‫الرئيسي فيه كل المعلومات‬


{
string FirstName;
string LastName;

stContactInfo ContactInfo;

enMaritalStatus MaritalStatues;
enGendor Gendor;
enColor FavourateColor;
};
int main()
{
stPerson Person1;

Person1.FirstName = "Mohammed";
Person1.LastName = "Abu-Hadhoud";
Person1.ContactInfo.Email = "xyz@xyz.com";
Person1.ContactInfo.Phone = "+961000000999";
Person1.ContactInfo.Address.POBox = "7777";
Person1.ContactInfo.Address.ZipCode = "11194";
Person1.ContactInfo.Address.StreetName = "Queenl Street";
Person1.ContactInfo.Address.BuildingNo = "313";
Person1.Gendor = enGendor::Male;
Person1.MaritalStatues = enMaritalStatus:: Married;
Person1.FavourateColor = enColor::Green;

cout << Person1.FirstName << endl;


}

20
)LESSON #30 - DATA TYPE CONVERSION ( ‫ تحويل نوع البيانات‬: 30 ‫ الدرس‬#

‫مثال‬ ‫طريقة التحويل‬ ‫تحويل الى‬ ‫تحويل من‬


int Num1; Num1 = Num2;
double Num2 = 18.99; Num1 = (int) Num2 int double
Num1 = int(Num2)

#include <string> int Num_int = stoi1(str); int

float Num_float = stof(str); float String


string str = "123.456"; double Num_double = stod(str); double
#include <string> st1 = to_string(Num1);
int num1 = 123 string Number
double num2 = 11.65; st2 = to_string(Num2);

string st1, st2;

‫تحويل البيانات من الكبير الى الصغير تخسر بيانات‬

‫تحويل البيانات من الصغير الى الكبير ال تخسر بيانات‬

string to (int, double, float ) ‫ اختصار ل‬1

21
)LESSON #31 - STRINGS ( ‫ السلسل‬:31 ‫ الدرس‬#
‫ مجموعة من األحرف محاطة بعلمات اقتباس مزدوجة‬:‫السلسل هي‬

Syntax
mystring.length() length() ‫طباعة عدد األحرف‬
Mystring[2] ]‫[موقع الحرف‬ ‫طباعة حرف من السلسلة‬

#include <iostream>
#include <string>
using namespace std;
int main()
{
string mystring = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
//‫طباعة عدد األحرف‬
cout << mystring.length() << "\n"; // print 26

//)0 ‫طباعة حرف من األحرف(يبدأ أول حرف من رقم‬


cout << mystring[2] << "\n"; // print "C"

//‫األرقام في هي نص وليست رقم‬string


string S1 = "10", S2 = "20";
string S3 = S1 + S2;
cout << S3 << "\n"; // print "1020"

//‫ لجمع األرقام في‬string ‫ البد من تحويل‬string ‫ الى‬int


//‫لجمع األرقام في النصوص البد من تحويل النصوص الى رقم‬
int sum = stoi(S1) + stoi(S2);
cout << sum << "\n"; // print 30

// ‫ مشكلة عدم طباعة النص‬cin ‫ االسم كامل(بعد الفراغ‬saeed omar)


string FullName;
cin >> FullName; // (saeed omar maroon)
cout << FullName << "\n"; // print saeed …………..
//‫ حل مشكلة عدم طباعة النص‬cin ‫ االسم كامل(بعد الفراغ‬saeed omar)
//‫ حل مشكلة تجاوز إدخال‬Getline(cin, …) ‫ عند الضغط على‬enter(‫استخدم أمر قبل‬
Cin.ignore(1, "\n");
string FullName;
cin.ignore(1, '\n');
getline(cin, FullName); // (saeed omar amroon)}
}

‫ لطباعة الكلمة بعد الفراغ‬Strings ‫ مع‬getline(cin, FullName) ‫استخدم دائما‬

22
‫‪ #‬الدرس ‪ :32‬الوظائف أو الدوال ( ‪PROCEDURE )LESSON #32 - FUNCTIONS PART 1‬‬

‫الوظاائف ‪ Functions‬هي ‪ :‬عبارة عنن كتلنة منن التعليمنات البرمجينة ينتم تشنغيلها فقنط عنند‬
‫استدعائها (اسمها في )(‪)int main‬‬
‫ووظيفته فصل جزء من الكود إلعادة استخدامه أكثر من مرة‬
‫يمكنك تمرير البيانات المعروفة باسم المعلمات الى دالة‬
‫تستخدم الدوال ألداء إجراءات معينة وهي مهمة إلعادة استخدام الكود ‪ ،‬حدد الرمز منرة واحندة‬
‫واستخدمه عدة مرات‬
‫الفرق بين ‪ Functions‬و ‪procedure‬‬
‫‪ Functions‬يرجع قيمة ( مثل المعادالت )‬
‫‪ procedure‬هو ‪ Functions‬لكن ال يرجع قيمة وهو (‪ )Void‬أي فارغ ( مثل أوامر الطباعة )‬

‫مميزات ‪Functions‬‬
‫سهولة كتابة الكود‬ ‫•‬

‫تجزئة كتابة الكود‬ ‫•‬

‫سهولة فحص الكود‬ ‫•‬

‫‪ Functions‬دوال غير محدودة‬ ‫•‬

‫األفضل في ‪ Functions‬الدالة أن تعمل شيء واحد فقط ( اسمه يعبر عن عمله )‬ ‫•‬

‫اختصار‬ ‫‪Name‬‬ ‫االسم‬ ‫أمثلة على ‪ Functions‬الجاهزة‬


‫‪sqrt‬‬ ‫‪Squair Root‬‬ ‫الجذر‬
‫‪ #‬مكتبة الرياضيات ( ‪math‬‬
‫‪round‬‬ ‫‪Rounding‬‬ ‫التقريب‬
‫‪)Functions‬‬
‫‪pow‬‬ ‫‪Power‬‬ ‫األس‬
‫‪ceil‬‬ ‫‪ceil‬‬ ‫األعلى (السقف)‬
‫‪floor‬‬ ‫‪floor‬‬ ‫األدنى (األرض)‬
‫‪abs‬‬ ‫‪Absolute‬‬ ‫القيمة المطلقة‬

‫األعلى ‪ ceil‬يقرب دائما الى الرقم األعلى مثال ‪-5 = -6.4 / 3 = 2.1 :‬‬
‫األدنى ‪ floor‬يقرب دائما الى أسفل مثال ‪-6 = -6,8 / 2 = 2.9 :‬‬

‫‪23‬‬
)LESSON _33 - SOLVING THE GETLINE() PROBLEM ( : 33 ‫ الدرس‬#

Syntax
cin.ignore(1, '\n'); cin.ignore(1,
'\n'); ‫حل مشكلة تجاوز إدخال البيانات‬
getline(cin, FullName) getline(cin, Variable ‫طباعة االسم كامل مع الفراغات‬
name)

// ‫ مشكلة عدم طباعة النص‬cin ‫ االسم كامل(بعد الفراغ‬saeed omar)


string FullName;
cin >> FullName; // (saeed omar maroon)
cout << FullName << "\n"; // print saeed …………..

//‫ حل مشكلة عدم طباعة النص‬cin ‫ االسم كامل(بعد الفراغ‬saeed omar)


//‫ حل مشكلة تجاوز إدخال‬Getline(cin, …) ‫عند الضغط على‬
enter(‫ استخدم أمر قبل‬Cin.ignore(1, "\n");
string FullName;
cin.ignore(1, '\n');
getline(cin, FullName); // (saeed omar amroon)}

‫ لطباعة الكلمة بعد الفراغ‬Strings ‫ مع‬getline(cin, FullName) ‫استخدم دائما‬


‫ لحل مشكلة تجاوز عدم إدخال‬cin.ignore(1, "\n"); ‫واستخدم قبلها‬

24
)FUNCTIONS PART II - FUNCTIONS VS PROCEDURES (2 ‫ الوظائف الدوال‬:34 ‫ الدرس‬#
Functions
‫) قيمة واحدة فقط‬return( ‫• يرجع‬
) ‫ ( مثل المعادالت‬Functions ‫• تحفظ القيمة في اسم‬

Functions ‫ الذي يرجع قيمة فتخرج من‬return ‫ البد له من‬Functions

cout ‫ استخدم أمر الطباعة‬main ‫ في‬Functions ‫عند استدعاء‬


#include <iostream>
using namespace std;

void MyProcedure ()
//procedure ‫ هو‬Functions ‫ مثل أوامر الطباعة – فارغ(لكن ال يرجع قيمة‬Void)
{
cout << "This is my function , it got executed " << endl;
}
//Functions ‫ يرجع قيمة(مثل المعادالت) البد من استخدام‬Return ‫التي ترجع قيمة واحدة فقط يستدعى مع‬
cout <<
string MyFunction1()
{
return "This is my first returning value function , this is value ";
}
float myFunction2()
{
float x = 10.8;
float y = 20.4;
return x* y;
}
int main()
{
MyProcedure();
cout << MyFunction1();
float Result;
Result = round(myFunction2());
cout << Result;
}

25
)LESSON _35 - FUNCTION PART 3 - PARAMETERS (3 ‫ الوظائف الدوال‬:35 ‫ الدرس‬#

#include <iostream>
using namespace std;

//Functions ‫ يرجع قيمة(مثل المعادالت) ال يقرأ‬cin ‫ وال يطبع‬cout


int myFunction3(int Num1, int Num2)
//‫ هذه تسمى‬Parameters
{
return Num1 + Num2;
}
int main()
{
cout << myFunction3(10, 20) << endl;
// function ‫ وليس في‬int main ‫ تنفذ هذا في‬، ‫إذا تريد أن يدخل المستخدم بيانات‬
int Num1, Num2;
cin >> Num1;
cin >> Num2;
cout << myFunction3(Num1, Num2) << endl;
}

{ ‫ دورة حياة المت غير } مكان نطاق المتغير‬: 36 ‫ الدرس‬#


)LESSON #36 - VARIABLE SCOPE/ LOCAL VS GLOBAL VARIABLES (
)‫ اسم وقيمة وعنوان (موقعه في الذاكرة‬:‫لكل متغير‬

#include <iostream>

using namespace std;


// ‫ نطاق عالمي‬: ‫(النطاق يسمى‬Global) ‫ أي تستطيع استخدامه داخل أي دالة‬Function
int x = 300;

// ‫ نطاق محلي‬: ‫(هذا النطاق يسمى‬Local) ‫}{ يكون داخل أقواس‬


void myProcedure()
{
int x = 500;
cout << "The value of x inside function is : " << x << endl;
}

//‫ نطاق محلي‬: ‫(هذا النطاق يسمى‬Local)


int main()
{
int x = 10;
cout << "The local value of x inside main is : " << x << endl;
myProcedure();

//‫ طريقة استدعاء النطاق العالمي‬Global ‫ثم اسم المتغير‬::‫ يكون بنقطتين رأسيتين‬variable
cout << "The Global value of x is : " << ::x << endl;

// ‫طريقة زيادة رقم واحد على المتغير تكون ب‬++


::x++; //print 301

//‫طريقة تغيير أي متغير تكون باستدعائه ثم = ووضع القيمة الجديدة‬


::x = 7000;
}

26
)LESSON #37 - FUNCTION PARAMETERS - BY-VAL VS BY-REF (‫ تبديل القيم‬:37 ‫ الدرس‬#

#include <iostream>
using namespace std;
// By value ‫ هي نسخة من‬Num1 ‫ الموجودة في‬int main( ‫تستطيع إعطاء نسخة من األصلية والتعديل عليها‬
‫ داخل‬function ‫)فقط‬
void MyProcedure1(int Num1)
{
Num1 = 7000;
cout << "Number inside function became = " << Num1 << endl;
}
// By Reference ‫ أي مرجع هي العنوان للمتغير األصلي في‬int main ‫أي يعطي القيمة ( &باستخدام عالمة‬
‫ الموجودة في‬MyProcedure2 ‫ للمتغير في‬int main) ‫ عنوانه هو‬hexadecimal
void MyProcedure2(int& Num2)
{
Num2 = 9000;
cout << "Number inside function became = " << Num1 << endl;
}
int main()
{
int Num1;
Num1 = 1000;
MyProcedure1(Num1);
cout << "Number after calling the function became = " << Num1 <<
endl;
// print 1. MyProcedure1 = 7000 , 2. Num1 = 1000

int Num2;
Num2 = 3000;
MyProcedure2(Num2);
cout << "Number after calling the function became = " << Num1 <<
endl;
// print 1. MyProcedure2 = 9000 , 2. Num2 = 3000
// ‫ لطباعة عنوان المتغير‬Hexadecimal
cout << &Num2;
}

27
‫ استخدام الهياكل مع الدوال‬: 38 ‫ الدرس‬#
) .LESSON #38 - STRUCTURES AND FUNCTIONS - RE-USABILITY (
‫كلما قل الكود كلما كانت األخطاء أقل وكلما كانت البرمجة أمتع‬
#include <iostream>
#include <string>

using namespace std;


struct strInfo
{
string FullName;
short Age;
string Phone;
};
void ReadInfo(strInfo& Info)
{
cout << "Pleas enter Full Name : ";
getline(cin, Info.FullName);
cout << "Pleas enter Age : ";
cin >> Info.Age;
cout << "Pleas enter Phone : ";
cin >> Info.Phone;
}
void PrintInfo(strInfo Info)
{
cout << "****************\n";
cout << "Full Name : " << Info.FullName << endl;
cout << "Age : " << Info.Age << endl;
cout << "Phone : " << Info.Phone << endl;
cout << "****************\n";
}
int main()
{
strInfo Person1Info;
ReadInfo(Person1Info);
PrintInfo(Person1Info);
}

28
‫‪ #‬الدرس ‪ :39‬المصفوفة ( ‪)LESSON #39 - ARRAYS‬‬
‫المصفوفة (‪ )Arrays‬هي ‪ :‬متغير تستطيع تخزين أكثر من قيمة بشرط أن يكون من نفس نوع‬
‫البيانات (‪ )int , string , float ….‬يبدأ أول عنصر من الفهرس ‪ index‬من ‪0‬‬

‫‪Syntax‬‬

‫مثال‬ ‫‪Type‬‬ ‫اسم المتغير‬ ‫عدد المتغيرات‬ ‫تخزين البيانات‬


‫}‪int x [8] = {22, ..‬‬ ‫‪int‬‬ ‫‪x‬‬ ‫[‪]8‬‬ ‫{}‬

‫>‪#include <iostream‬‬
‫;‪using namespace std‬‬

‫)(‪int main‬‬
‫{‬
‫يعني أن المصفوفة خزنت خمسة (عناصر ) قيم من نوع واحد يبدأ من رقم واحد ]‪// x[5‬‬
‫;} ‪int x[8] = { 22, 33, 6, 5 , 7‬‬

‫تبدأ عناصر المصفوفة أي أول قيمة من ]‪ index[0‬دائما فهرس = العنصر ناقص ‪// 1‬‬
‫كل عنصر هو قيمة لكن تحت اسم متغير واحد تستطيع جمعها أو قسمتها كأي قيمة في متغير آخر ‪//‬‬
‫;‪x[5] = 11‬‬
‫;‪x[6] = 44‬‬
‫;‪x[7] = 4‬‬

‫‪cout‬‬ ‫<<‬ ‫]‪x[0‬‬ ‫<<‬ ‫;‪endl‬‬


‫‪cout‬‬ ‫<<‬ ‫]‪x[1‬‬ ‫<<‬ ‫;‪endl‬‬
‫‪cout‬‬ ‫<<‬ ‫]‪x[2‬‬ ‫<<‬ ‫;‪endl‬‬
‫‪cout‬‬ ‫<<‬ ‫]‪x[3‬‬ ‫<<‬ ‫;‪endl‬‬
‫‪cout‬‬ ‫<<‬ ‫]‪x[4‬‬ ‫<<‬ ‫;‪endl‬‬
‫‪cout‬‬ ‫<<‬ ‫]‪x[5‬‬ ‫<<‬ ‫;‪endl‬‬
‫‪cout‬‬ ‫<<‬ ‫]‪x[6‬‬ ‫<<‬ ‫;‪endl‬‬
‫‪cout‬‬ ‫<<‬ ‫]‪x[7‬‬ ‫<<‬ ‫;‪endl‬‬
‫}‬

‫‪29‬‬
)LESSON #40 - ARRAYS WITH FUNCTIONS ( ‫ المصفوفات مع الدوال‬:40 ‫ الدرس‬#
‫ متغير تستطيع تخزين أكثر من قيمة بشرط أن يكون من نفس نوع‬: ‫) هي‬Arrays( ‫المصفوفة‬
0 ‫ من‬index ‫) يبدأ أول عنصر من الفهرس‬int , string , float ….( ‫البيانات‬

#include <iostream>
using namespace std;
//‫ مهم هذا‬Parameters ‫ في‬Array ‫ ال يحتاج الى‬By - Ref &‫ ألن‬Array ‫معرفة مسبقا ب‬ ّ ‫& فقط‬
void ReadArrayNumber(int Num[3])
{
cout << "pleas enter Number1 ";
cin >> Num[0]
}
void PrintArrayNumber(int Num[3])
{
cout << Num[0];
}
int main()
{
// ‫ خمس أماكن من الذاكرة من النوع‬5 ‫ تحجز‬:‫ أي‬int(‫ متغيرات] من‬5[‫ كأنك عرفت‬int)
int x[5] = { 43 ,55, 2, 67,90 };
// ‫قيمة من المتغير‬/‫ لطباعة‬x ‫ اسم المتغير‬، x[‫ الفهرس‬index]

cout << x[0] << endl; // print 43

//‫تستطيع طلب إدخال البيانات من المستخدم‬


int y[5];
cin >> y[0]; // [1] , [2] , [3] , [4]
x[4] = 676;
int Num[3];
// ‫ بدون األقواس يكون‬، ‫][باسم المتغير فقط‬

ReadArrayNumber(Num);
PrintArrayNumber(Num);
}

)LESSON #41 - ARRAYS OF STRUCTURE ( ‫ الهياكل مع الدوال‬:41 ‫ الدرس‬#

#include <iostream>
using namespace std;

struct strInfo
{
string Name;
short Age;
string Phone;
};
int main()
{
strInfo Person[6];
Person[0].Name = "Saeed";
Person[2].Age = 22;
Person[5].Phone = "0987765";
}

30
)LESSON #42 - CONDITI ONAL STATEMENTS: IF, IF ... ELSE S TATEMENT ( ‫ الجم ل الشرطية‬:42 ‫الدرس‬ #
LESSON #43 - CONDITIONAL ELSE IF STATEMENT ‫الجمل الشرطية‬ :43 ‫ الدرس‬#

Syntax

‫مثال‬ ‫الشرط‬ ‫إذا تحقق الشرط‬


if (x > 5 && x < 20)
{ cout << "Good if ) ‫( إضافة شرط‬ } ‫{ تنفيذ الشرط‬
Morning."; }
else if (Time < 20) else if
‫ إذا لم‬، ‫( إضافة شرط جديد‬ } ‫{ تنفيذ الشرط‬
{ cout << "Good day ) ‫يتحقق الشرط الذي قبله‬
"; }
else } ‫{ تنفيذ الشرط‬
{ cout << "Good
evening "; }
else ‫إذا لم يتحقق أي شرط‬

#include <iostream>

using namespace std;


int main()
{
int Time = 10;
int x;
cin >> x;

if (x > 5 && x < 20)


{

if (Time < 10)


{
// ‫ = صحيح(اذا تحقق الشرط‬True) ‫}{ ينفذ بين القوسين‬
cout << "Good Morning.";
}

}
// ‫ إذا كان يوجد أكثر من شرط نستخدم‬else if ‫يمكن استخدامه بعدد ال نهائي‬
else if (Time < 20)
{
// ‫ = صحيح(اذا تحقق الشرط‬True) ‫}{ ينفذ بين القوسين‬
cout << "Good day ";
}

else
{
// ‫ = خطأ(إذا لم يتحقق الشرط أو الشروط‬false) ‫}{ نفذ بين القوسين‬
cout << "Good evening ";
}
}

31
)LESSON #44 - ENUMS WITH IF STATEMENTS (‫ العداد مع الجمل الشرطية‬:44 ‫ ا لدرس‬#
#include <iostream>
using namespace std;

enum enCountryChoice { Jordan = 1, Tunisa = 2, Algeria = 3, Oman = 4,


Egypt = 5, Iraq = 6, Other = 7 };

int main()
{
cout << "****************************\n";
cout << "Please Enter the number of your country?\n";
cout << "(1) Jordan\n";
cout << "(2) Tunisa\n";
cout << "(3) Algeria\n";
cout << "(4) Oman\n";
cout << "(5) Egypt\n";
cout << "(6) Iraq\n";
cout << "(7) Other\n";
cout << "****************************\n\n";
cout << "Your Choice? ";

// int ‫ مثل التحويل الى‬enum ‫ ال بد من إضافة متغير وتحويل المتغير الى‬cin ‫ عن طريق‬enum
‫طريقة قراءة‬
int c;
enCountryChoice Coutnry;

cin >> c;
Coutnry = (enCountryChoice)c;

if (Coutnry == enCountryChoice::Jordan)
{
cout << "Your country is Jordan\n";

}
else if (Coutnry == enCountryChoice::Tunisa)
{
cout << "Your country is Tunisa\n";
}
else if (Coutnry == enCountryChoice::Algeria)
{
cout << "Your country is Algeria\n";
}
else if (Coutnry == enCountryChoice::Oman)
{
cout << "Your country is Oman\n";
}
else if (Coutnry == enCountryChoice::Egypt)
{
cout << "Your country is Egypt\n";
}
else if (Coutnry == enCountryChoice::Iraq)
{
cout << "Your country is Iraq\n";
}
else
{

cout << "Your country is Other\n";


};

return 0;
}

32
)LESSON #45 - SWITCH .. CASE STATEMENT ( ‫ الجمل الشرطية مقارنات‬:45 ‫ الدرس‬#

int day;
cin >> day;
switch (day)
{
// Case 1: ‫ يعني هل‬day == 1 / break ‫ يعني إذا كان صحيح توقف واخرج من‬Switch
case 1:
cout << "Sunday";
break;
case 2:
cout << "Monday";
// default ‫ أي إذا كانت‬case )‫كلها فشلت نفذ هذا األمر(تستطيع االستغناء عنه‬
default:
cout << "Not a weekday ";
}

33
)LESSON #46 - NESTED FUNCTIONS WITH ENUMS ( ‫ الدوال مع التعداد‬:46 ‫ الدرس‬#
#include <iostream>
using namespace std;

enum enWeekDay { Sun = 1, Mon = 2, Tue = 3, Wed = 4, Thu = 5, Fri = 6, Sat = 7


};
void ShowWeekDayMenue()
{
cout << "************************" << endl;
cout << " Weekdays " << endl;
cout << "************************" << endl;
cout << "1: Sunday" << endl;
cout << "2: Monday" << endl;
cout << "3: Tuesday" << endl;
cout << "4: Wednesday" << endl;
cout << "5: Thursday" << endl;
cout << "6: Friday" << endl;
cout << "7: Saturday" << endl;
cout << "************************" << endl;
cout << "Please enter the number of days?" << endl;
}
//enum ‫ الى‬int‫ وتحويل‬enum ‫للقراءة من‬
enWeekDay ReadWeekDay()
{
int wd;
cin >> wd;
return (enWeekDay)wd;
}
string GetWeekDayName(enWeekDay WeekDay)
{
switch (WeekDay) {

case enWeekDay::Sun:
return "Sunday";
break;
case enWeekDay::Mon:
return "Monday";
break;
case enWeekDay::Tue:
return "Tuesday";
break;
case enWeekDay::Wed:
return "Wednesday";
break;
case enWeekDay::Thu:
return "Thursday";
break;
case enWeekDay::Fri:
return "Friday";
break;
case enWeekDay::Sat:
return "Saturday";
break;
default:
return "Not a weekday!\n";
}

}
int main()
{
ShowWeekDayMenue();
cout << "today is " << GetWeekDayName(ReadWeekDay()) << endl;
}

34
‫‪)LESSON #47 -‬‬ ‫( ‪FOR LOOPS‬‬ ‫‪ #‬الدرس ‪ :47‬حلقات التكرار‬
‫تساعدك على تكرار كود معين عدد من المرات ‪ ،‬دون تكرار الكود‬

‫طريقة عمل حلقات التكرار‪ :‬إذا كان الشرط صحيح تعمل حلقات التكرار حتى يصبح الشرط‬
‫خطأ يخرج من حلقات التكرار‬

‫‪Syntax‬‬

‫القيمة‬ ‫تحديث‬ ‫إذا تحقق الشرط =‬


‫مثال‬ ‫أمر التكرار‬ ‫الشرط‬
‫المبدئية‬ ‫الشرط‬ ‫‪true‬‬
‫;‪for (int i = 1‬‬
‫{‬
‫)‪i <= 5; i++‬‬
‫‪cout << i‬‬
‫{‬ ‫‪( int i‬‬ ‫=< ‪i‬‬
‫‪for‬‬ ‫)‪i++‬‬ ‫<< ‪<<endl‬‬
‫‪cout << i <<endl‬‬ ‫;‪= 1‬‬ ‫;‪5‬‬ ‫;" ‪"Saeed \n‬‬
‫;" ‪<< "Saeed \n‬‬
‫}‬
‫}‬

‫>‪#include <iostream‬‬
‫;‪using namespace std‬‬

‫)( ‪int main‬‬


‫{‬
‫)‪for (int i = 1; i <= 5; i++‬‬
‫هذا تحديث للشرط ‪ \ i++‬هذا الشرط ;‪ \; i <= 5‬هذه بداية ;‪//(int i = 1‬‬
‫{‬
‫;" ‪cout << i << endl << "Saeed \n‬‬
‫}‬
‫}‬

‫‪35‬‬
)LESSON #48 - FOR LOOP & ARRAYS ( ‫ حلقات التكرار مع الصفائف‬:48 ‫ الدرس‬#
#include <iostream>
#include <string>
using namespace std;

struct strInfo
{
string Name;
int Age;
string Phone;
};

void ReadInfo(strInfo &Info)


{
cout << "Pleas enter Name :\n";
cin.ignore(1, '\n');
getline(cin, Info.Name);

cout << "Pleas enter Age : \n";


cin >> Info.Age;

cout << "Pleas enter Phone : \n";


cin >> Info.Phone;

}
void PrintInfo(strInfo Info)
{
//cout << "****************************\n";

cout << "Name : " << Info.Name << endl;


cout << "Age : " << Info.Age << endl;
cout << "Phone : " << Info.Phone << endl;

cout << "****************************\n\n";


}

void ReadPersonInfo(strInfo Persons[100] , int& NumberofPersons)


{
cout << "How Many Persons ? 1 to 100 ? \n";
cin >> NumberofPersons;

for (int i = 0; i <= NumberofPersons - 1; i++)


{
cout << "Pleas Enter Person's [" << i + 1 << "] Info: \n";
ReadInfo(Persons[i]);
cout << "\n************************\n";
}

}
void PrintPersonInfo(strInfo Persons[100], int NumberofPersons)
{
for (int i = 0; i <= NumberofPersons - 1; i++)
{
cout << "Person's [" << i + 1 << "] Info: \n";
PrintInfo(Persons[i]);
}
}
int main()
{
strInfo Persons[100];
int Length = 1;

ReadPersonInfo(Persons, Length);
PrintPersonInfo(Persons, Length);
}

36
) .LESSON #49 - NESTED FOR LOOPS ( ‫ حلقات التكرار داخل بعض‬:49 ‫ الدرس‬#
for (int x = 1; x <= 10; x++)
{
for (int y = x; y <= 10; y++)
{
cout << y << " ";
}
cout << "\n";
}

)LESSON #50 - WHILE LOOP ( ‫ حلقات التكرار غير المحدودة‬:50 ‫ الدرس‬#


‫ تستخدم إذا كنت ال تعرف كم تريد تكرارها‬While Loop

‫ إذا كان الشرط صحيح تعمل حلقات التكرار وإذا كان خطأ يخرج‬:‫طريقة عمل حلقات التكرار‬
‫من حلقات التكرار‬

Syntax

‫مثال‬ ‫أمر التكرار‬ ‫الشرط‬ true = ‫إذا تحقق الشرط‬


int i = 1;
while (i < 5) {
{ cout << i << endl;
cout << i << endl; while i <= 5; i++; // ‫تحديث الشرط‬
i++; }
}

#include <iostream>
using namespace std;

int ReadIntNumberInRange(int Form, int To)


{
int Number;
cout << "Pleas enter a number between " << Form << " and " << To <<
endl;
cin >> Number;

// 15 ‫ أكبر من < الرقم ) \\ الرقم‬45 || ‫ أصغر من > الرقم أو‬18 ‫هل‬


// ) ‫( يعني أدخل في حلقة التكرار‬18> ‫ أصغر من‬15 ‫الجواب نعم‬

while (Number < Form || Number > To)


{
cout << "Wrong Number,";
cout << "Pleas enter a number between " << Form << " and " << To
<< endl;
cin >> Number;
}
return Number;
}

int main()
{
cout << "\n The Number is : " << ReadIntNumberInRange(18, 45) << endl;
}

37
)LESSON #51 - DO . . . WHILE LOOP ( ‫ حلقات التكرار غير المحدودة‬:51 ‫ الدرس‬#
‫ هي نفذ ثم اعترض (ادفع ثم اعترض ) هي اختصار للكود في حال التكرار‬Do while loops
) ‫ أي اعترض ثم نفذ (اعترض ثم ادفع‬Do while loops ‫ هي عكس‬while loops

Syntax

‫أمر‬ ‫نفذ مرة واحدة‬ true = ‫إذا تحقق الشرط‬


‫مثال‬ ‫قبل أمر الشرط‬ ‫الشرط‬
‫التكرار‬ do ‫ارجع الى البداية‬
int i = 6;
do
do
{ {
{
cout << cout <<
cout << "Saeed Omar" <<
"Saeed Omar" "Saeed Omar" while (i
do endl; // ‫يطبع الأمر ثم‬
<< endl; << endl; < 5); ‫ينظر في الشرط‬
i++; i++;
i++; // ‫تحديث الشرط‬
} while (i < }
}
5);

#include <iostream>
using namespace std;

int ReadIntNumberInRange(int Form, int To)


{
int Number;

// ) ‫ بدل قراءة تكرار الكود أصبحت قراءة واحدة كود واحد‬، ‫)اختصر قراءة الرقم‬

do
{
cout << "Pleas enter a number between " << Form << " and " << To
<< endl;
cin >> Number;

} while (Number < Form || Number > To);

return Number;
}

int main()
{
cout << "\n The Number is : " << ReadIntNumberInRange(18, 45) << endl;

38
‫‪ #‬الدرس ‪ :52‬توقف ( ‪)LESSON #52 - BREAK STATEMENT‬‬
‫تستخدم للخروج من حلقات التكرار سواء (‪)For Loops Or While Loops‬‬

‫الكود بعد ‪ Break‬ال ينفذ‬

‫‪Syntax‬‬
‫مثال‬ ‫يستخدم‬ ‫أمر‬
‫مع‬ ‫التوقف‬
‫)‪while ( x <= 10‬‬
‫{‬
‫)‪if (x == 5‬‬
‫{‬
‫;‪break‬‬ ‫‪for‬‬
‫}‬ ‫‪while‬‬ ‫;‪break‬‬
‫إذا كان الشرط صحيح اخرج‬
‫‪cout << x << endl;//‬‬ ‫خارج حلقة التكرار‬
‫‪Print 1,2,3,4,‬‬
‫;‪x++‬‬
‫}‬

‫)‪for (int x = 1; x <= 10; x++‬‬


‫{‬
‫)‪if (x == 5‬‬
‫إذا كان الشرط صحيح اخرج خارج حلقة التكرار‪//‬‬
‫;‪break‬‬

‫‪cout << x << endl;// Print 1,2,3,4,‬‬


‫}‬

‫;‪int x = 1‬‬
‫)‪while ( x <= 10‬‬
‫{‬
‫)‪if (x == 5‬‬
‫إذا كان الشرط صحيح اخرج خارج حلقة التكرار‪//‬‬
‫;‪break‬‬

‫‪cout << x << endl;// Print 1,2,3,4,‬‬


‫;‪x++‬‬
‫}‬

‫‪39‬‬
‫‪ #‬الدرس ‪ :53‬أكمل ( ‪)LESSON #53 - CONTINUE STATEMENT‬‬
‫تستخدم للرجوع الى بداية حلقة التكرار سواء (‪ )For Loops Or While Loops‬لتنفيذ الشرط‬

‫الكود بعد ‪ continue‬ال ينفذ‬

‫‪Syntax‬‬
‫مثال‬ ‫يستخدم‬ ‫أمر‬
‫مع‬ ‫الرجوع‬
‫; ‪for (int x = 1 ; x <= 5‬‬
‫)‪x++‬‬
‫{‬
‫)‪if (x == 3‬‬ ‫إذا تحقق الشرط ارجع الى بداية حلقة‬
‫{‬ ‫‪for‬‬ ‫التكرار‬
‫;‪continue‬‬ ‫‪while‬‬ ‫;‪continue‬‬ ‫وإهمال أي كود يأتي بعد‬
‫}‬ ‫‪continue‬‬
‫;‪cout << x << endl‬‬
‫‪// Print 1 , 2 , 4 , 5‬‬
‫}‬

‫)‪for (int x = 1 ; x <= 5 ; x++‬‬


‫{‬
‫)‪if (x == 3‬‬
‫{‬
‫إذا تحقق الشرط (ارجع ) الى بداية حلقة التكرار ‪//‬‬
‫;‪continue‬‬
‫ال تستمر الى نهاية حلقة التكرار ‪//‬‬
‫}‬
‫‪cout << x << endl; // Print 1 , 2 , 4 , 5‬‬
‫}‬

‫‪40‬‬

You might also like