C M M
C M M
كل هذا حدمجهم وانزللكم شرح مبسط سهل للفهم و يوصل للمتلقي بكل سهولة و بساطة💯..
موفقييييييييين️♥
لغة C++هي لغة برمجة شائعة وكثيرة اإلستخدام ،وتستخدم بشكل أوسع في المجال العلمي مثل الجامعات ،المعاهد
وغيرها وذلك لسهولة تعلم البرمجة من خاللها.
:💻programming languages
() : mainاسم الدالة ،والقوسين الفارغين يعني أن الدالة ال تقوم بإدخال متغيرات parameters
-4رموز خاصة
بعدين اشرحها الكم بالتفصيل وكل رمز شنو يعني
:💻programming languages
-١أسماء تعريفية ()Identifiersوهي األسماء التي نسميها نحن " المبرمجون" تعرف الحاسوب بما تريد.
-Bاالختزانات (الدوال).
-Cالمؤشرات.
-1أن يكون االسم مكتوبا من سلسلة متصلة من الحروف أو األرقام بشرط أن
يبدا بحرف أو بخط تحتي "_"
-2أن ال يحتوى االسم على رموز خاصة عدا الخط التحتي "_"
📍ومن الجدير بالذكر ،أن لغة C++تفرق بين الحروف األبجدية الصغيرة والكبيرة ،
فمثال األسماء SYSTEM , system, System :تعامل كأسماء مختلفة ع ن بعضها البعض بسبب اختالف معاملة
المترجم للحروف الصغيرة والكبيرة.
بالنسبة للي حاب يطبق ويانا عملي
https://youtu.be/5SjVWO4BI4Y
:💻programming languages
نكمل شرررح
اخذنة بصوره عامه شرح اساسيات ضروريه
ال C++الزم تتوفر عدنا مكاتب حتى من نكتب دوال و كود البرنامج حيفهما
-1المكتبه
>include <iostrean.h#
>include <conio.h#
{
getch
او
;return 0
}
(تستخدم دواال االدخال الدخال معلومات من قبل المستخدم من شاشة التنفيذ او اسناد قيم الى المتغيرات المعرفة داخل
البرنامج من هالل ادخال المستخدم لقيمها لغرض معالجتها للقيام بالعمليات المطلوبه )
*يعني دوال االدخال نستخدمها الدخال القيم
<<cout-2االخراج
(تستخدم دوال االخراج لعرض نواتج العمليات التي نريدها امام المتسخدم في شاشة التنفيذ)
*كلش بسيطة دالة االخرج
يعني اذا عندي اي شي اريد البرنامج يعرضة اخلي بداله االخراج cout
📍 ضروري تركزولي ع شغله صغيروووونه وهي االقواس الي بصف كل داله النو اذا عكستوا االقواس راح يصير خطأ
بالكود
>>cin
>include <iostream.h#
>include <conio.h#
{ ;int i
;cin >> i
;)( getch
<<cout
>include <iostream.h#
>include <conio.h#
{
}
;)( getch
Hello
-1اذا ردنا نطبع او نخرج كلمة او جملة الزم نضعها بين دبل كوتيشن
"الجملة"
مثال-:
;”cout <<“x
;cout <<“x”<<endl
يعني دااكول للبرنامج كمل تنفيذ او طباعة هذه الجملة وانزلي سطر
️♀🏻🧚
int-1
يتم استخدام هذا النوع في تعريف متغير من نوع رقمي مثل 7
float-2
يتم استخدام هذا النوع في تعريف متغير من نوع عشري مثل 4,12
char-3
📍 اختصار
int-1لالرقام
float-2لالرقام العشريه
char -3للحرف
string-4للنص
المتغيرات
هي أسماء (عناوين) لمواقع في ذاكرة الحاسوب ،يخزن بها رموز أو أعداد
وبما أن أنواع المعلومات المراد تخزينها تكون عادة مختلفة مثل القيم الصحيحة أو الحقيقية
أو الرمزية ...الــخ ف انك تحتاج أن تعلم المترجم في بداية البرنامج عن أنواع المتغيرات التي تريد استعمالها في
البرنامج ،فمثال في السطور التالية تبين أن المتغيرين xو yحقيقيان ،والمتغير kصحيح ،والمتغير c,b,aرمزية
الحظ السطرين األول ،والثالث يحتويان على اكثر من متغير حيث يفصل بين كل متغيرين ،
فاصلة وكذلك يمكن تحديد أنواع المتغيرات ،بذكر التفصيل الدقيق للنوع ،من حيث طول السعة التخزينية ،أي هل هو
صحيح قصير أم طويل حقيقي قصير أو مضاعف ..الخ....
-1متغيرات عددية
وهي مواقع في الذاكرة تخزن بها االعداد.
-2متغيرات رمزية
وهي مواقع في الذاكرة تخزن بها رموز.
-3متغيرات منطقية
االدوات الحسابية
كاللغات األخرى ،إال أن عملية الرفع إلى أس ،ليس لها أدوات مباشرة مثل األداة hفي Basicواألداة ** في فورت ران
،وانما تتم علمية ال رفع إلى أس في لغة C++
كما تختلف القسمة في لغة C++عنها في Basicإذا أن أي جزء كسري ينتج عن القسمة يهمل مهمها كان كبيرا ،
كما في لغتي باسكال وكوبول فمثال ناتج القسمة 8/3هو 2ال الكسر 0.666يهمل ،ويكون ناتج القسمة باستعمال
األداة /صحيح العدد .ويمكننا اآلن أن نلخص األدوات الحسابية المستعملة في لغة C++فيما يأتي-:
هاي جدولين مبسطات ركزوا عليهن 🏻☝
https://play.google.com/store/apps/details?id=com.kvassyu.coding.cpp
(تستخدم دواال االدخال الدخال معلومات من قبل المستخدم من شاشة التنفيذ او اسناد قيم الى المتغيرات المعرفة داخل
البرنامج من هالل ادخال المستخدم لقيمها لغرض معالجتها للقيام بالعمليات المطلوبه )
*يعني دوال االدخال نستخدمها الدخال القيم
<<cout-2االخراج
(تستخدم دوال االخراج لعرض نواتج العمليات التي نريدها امام المتسخدم في شاشة التنفيذ)
*كلش بسيطة دالة االخرج
يعني اذا عندي اي شي اريد البرنامج يعرضة اخلي بداله االخراج cout
📍 ضروري تركزولي ع شغله صغيروووونه وهي االقواس الي بصف كل داله النو اذا عكستوا االقواس راح يصير خطأ
بالكود
:💻programming languages
من منا لم يفكر يوًم ا بينما يعمل على أحد التطبيقات أو يستخدم أحد مواقع اإلنترنت عن مقدار العمل الذي استغرق إلنجاز
هذا التطبيق🤔 ؟! من منا يشغل تفكيره ولو للحظة أن يغامر بدخول هذا العالم الواسع؟! 📕أكثرنا أمضى وقًت ا طوياًل محتاًر ا
بين اللغات المتعددة ،هل يستحسن أن أتعلم الجافا Javaأم سي بلس بلس ++C؟ ربما تكون #cأكثر متعًة ! ما ميزات كل
لغٍة؟! هكذا حتى أصابنا اإلرهاق وأصبح دخول هذا العالم مرعًبا لمعظمنا👍🏻.
يعود تاريخ هذه اللغة إلى عام ،1979إذ قام بإنشائها برايان ستروستروب أثناء عمله في مختبرات بيل .في الواقع عمل
عليها كنسخٍة مطورٍة من لغة سي cوسميت بدايًة (سي مع الصفوف ،)C with classesوكانت % 99من برامج سي
تعمل عليها دون تغيير في الشيفرة المصدرية.
تم تغيير اسم اللغة عام 1983إلى االسم المعروف حالًيا وهو سي بلس بلس ( ++Cداللة على معامل الزيادة في اللغة
وهو .)++ومع الوقت تم إضافة العديد من الميزات حتى تطورت ووصلت إلى شهرتها الحالية.
نتيجة االهتمام الذي حظيت به اللغة منذ نشأتها فقد تميزت عن سابقتها بالعديد من المزايا التي جعلت منها لغًة مرموقًة بين
أشباهها .وسنذكر بعض مزاياها تلك:
• لغة كائنية التوجه.
• محمولة.
• متعددة المهام.
• شاملة.
• قوية ،إذ تستعمل في العديد من أنظمة التشغيل.
• تعتبر من اللغات الرائدة في تطوير المشاريع الكبيرة والمعقدة.
• ورثت مزايا لغة سي إال أنها أضافت العديد من األنماط البرمجية الهامة ،كالتغليف ،Encapsulationالوراثة
،Inheritanceتعددية األشكال ،Polymorphismالتجريد abstractionوالصفوف .classes
استخدمت هذه اللغة في العديد من البرامج والتطبيقات التي نستخدمها بشكٍل يومٍّي اآلن ،فمنها ما اعتمد على اللغة بشكٍل
كبيٍر ،ومنها ما دخلت عدة لغاٍت مجتمعٍة في تطويره .لكن القوة التي تتمتع بها هذه اللغة جعلتها تحتل مكاًن ا في برمجة
معظم البرامج الناجحة والقوية منها:
• تطبيقات غوغل :Google Applicationsتمت كتابة بعض تطبيقات غوغل بواسطة ++Cمثل نظام الملفات وغوغل
كروم .Google Chrome
• أمازون .Amazon
• البريد اإللكتروني.
برأيي هذا اهم سؤال الزم يعرفه المبرمج حتى يشتق طريقه...
نتيجة انتشارها الكبير والتطويرات التي قام بها العديد من المبرمجين فقد توافرت منها العديد من البرمجيات المفتوحة
المصدر ،ويمكن ألٍّي كان االطالع على الشيفرة المصدرية للعديد من التطبيقات بسهولٍة.
1مفتوحة المصدر
2خفيفة
تستطيع البرمجة بها حتى و لو كان حاسوبك ضعيفًا أو قديمًا.
3البساطة
تعلمها سهل جدًا بعد أن تفهم برمجة الكائنات.
4سرعة الترجمة
تتم ترجمة لغة ++Cإلى أوامر يفهمها الجهاز بشكل سريع جدًا.
مع أن لغة ++Cصممت لتكون قريبة من عتاد الجهاز و قريبة للغات منخفضة المستوى إال أنها تتيح لمستخدمها بناء
الكالسات و التعامل معها بطرق منهجيات البرمجة الكائنية ( ) OOPمثل الوراثة و تعدد األشكال و غيرها من المبادئ
التي ستتعلمها الحقًا في الدورة.
6متعددة النماذج
تسمح لغة ++ Cلمستخدمها باختيار الطريقة المناسبة له لكتابة الكود البرمجي من بين عدة نماذج مختلفة مثل النموذج
الهيكلي ( ) Structuralالشبيهة بلغة Cو النموذج الكائني ( ) Object Orientedالشبيه بلغة .++C
7الدعم الكبير
لغة ++ Cمن اللغات القديمة نسبيا و المنتشرة بشكل كبير مما جعل منها لغة ذات شعبية كبيرة و مصادر تعلم مختلفة و
متعددة و دعم كبير من قبل مجتمع المطورين.
الدالة () mainهي نقطة البداية عند تشغيل برنامج C++وهذه الدالة قد تأخذ معامالت ولكن نالحظ أن القوسين فارغين
أي أنها ال تأخذ أي معامل في هذه الحالة ،وتعيد الدالة قيمة نوعها intوهو عدد صحيح والمالحظ أنها ترجع القيمة 0
قبل نهاية الدالة ;. return 0
:💜💻programming languages
() : mainاسم الدالة ،والقوسين الفارغين يعني أن الدالة ال تقوم بإدخال متغيرات parameters
نجي على اهم امر (دالة) وهو ابسط امر تقريبًا امر الطباعة
<<cout
عند إستخدام األمر coutيجب أن تضع العامل >> قبل أي شيء تريد تمريره له حتى يتم طباعته.
شرح الكود
• األمر >include <iostream#الموجود في السطر األول يقوم بتضمين الحزمة iostreamالتي تحتوي على
األوامر األساسية التي نحتاجها في التطبيقات التي تعتبر Console Applicationو التي سنستخدمها في أغلب البرامج
مثل أمر الطباعة coutو غيره من األوامر و الدوال الجاهزة التي ستمر معك الحقًا في الدورة.
• الدالة )(mainالتي قمنا بتعريفها ابتداءًا من السطر الثالث يجب أن يكون نوعها intألنها تمثل نقطة البداية في
البرنامج.
• وضع ;return 0في السطر السادس و كآخر أمر في الدالة )(mainهو أمر متعارف عليه ,و فكرته إرسال الرقم 0
لنظام التشغيل عند انتهاء أو إغالق البرنامج بشكل طبيعي .هكذا سيتمكن نظام التشغيل من التفريق بين اإلنهاء الطبيعي
للبرنامج واإلنهاء المفاجئ ( ) Crashالذي يحدث نتيجة خطأ ما.
لدمج عدة أشياء مختلفة و عرضها باستخدام األمر coutنضع الرمز >> بين كل شيئين نريد طباعتهما.
في المثال التالي ,قمنا بإنشاء برنامج يحتوي على متغيرين nameو .year
عند عرض المحتوى بواسطة األمر coutيمكنك تحديد نهاية السطر من خالل وضع العامل endlو عندها سيظهر أي
شيء تطبعه بعده على سطر جديد.
:💜💻programming languages
لجعل المستخدم قادر على إدخال بيانات في البرنامج أثناء اشتغاله نستخدم أمر اإلدخال .>> cin
األمر cinموجود في الحزمة stdو لهذا يجب ان تكتب std::cinإن لم تكن تريد تضمين الحزمة stdفي برنامجك.
في كل مرة تقوم فيها باستدعاء هذا األمر يقوم المترجم بانتظارك إلدخال عدد أو كلمة واحدة من لوحة المفاتيح (
.) Keyboard
بعد اإلنتهاء من اإلدخال و النقر على الزر Enterسيتم إرجاع الشيء الذي قمت بإدخاله في المكان الذي تم منه إستدعاء
األمر .>> cin
>include <iostream#
)(int main
{
//لتخزين المعلومات التي سيدخلها المستخدم الحقًا ageو nameقمنا بتجهيز المتغيرين
;string name
;int age
name //هنا سيطلب من المستخدم إدخال إسمه و من ثم سيتم تخزين اإلسم الذي يدخله في المتغير
//في األخير قمنا بعرض المعلومات التي يدخلها المستخدم بشكل مرتب
;".cout << "Your name is " << name << ", and your age is " << age << " years
;return 0
}
سنحصل على النتيجة التالية عند التشغيل مع اإلشارة إلى أننا قمنا بتعليم البيانات التي إنتظرنا البرنامج إلدخالها من لوحة
المفاتيح باللون األصفر.
في البداية معرفة سبب تسمية األوامر بهذه الكلمات سيسهل عليك تذكر الفرق بينهما ,لذا تذكر دائمًا أصلهما:
• cinيقصد بها كلمة See Inو التي بدورها تستخدم إلدخال قيمة في المتغير.
األمر cinنضع بعده إسم المتغير الذي سنخزن القيمة التي يدخلها المستخدم فيها و تكون األسهم باتجاه اليمين كالتالي.
األمر coutنضع بعده أي شيء نريد عرضه أو أي متغير نريد عرض قيمته و تكون األسهم باتجاه اليسار كالتالي.
x //قم بعرض القيمة المدخلة في المتغير
تذكر دائمًا أن األمر >> cinيستخدم إلدخال رقم أو كلمة واحدة فقط بمعنى أنه ال يجب أن يحتوي ما تدخله على مسافات
فارغة.
في حال كان ما أدخلته يحتوي على مسافات فارغة ,سيسبب ذلك مشاكل في الكود ألن المترجم سيعتبر أنك تحاول إدخال
مجموعة قيم و ليس قيمة واحدة.
عندما يجدك المترجم قمت بإدخال مجموعة قيم في ذات الوقت الذي تحاول فيه أن تخزن قيمة واحدة فقط في متغير,
سيعتبر أنك تريد إدخال القيم األخرى في المرات القادمة التي تطلب فيها من المستخدم أن يدخل قيم.
في المثال التالي ,قمنا بإنشاء برنامج يطلب من المستخدم إدخال إسمه و بريده اإللكتروني ,بعدها يعرض له ما قام
بإدخاله.
عند تشغيل البرنامج سنتعمد إدخال إسم المستخدم الكامل (إسمه و إسم عائلته) مع وضع مسافة فارغة بينهما حتى ترى
الخطأ الذي سيحدث.
>include <iostream#
)(int main
{
//لتخزين المعلومات التي سيدخلها المستخدم الحقًا emailو nameقمنا بتجهيز المتغيرين
;string name
;string email
name //هنا سيطلب من المستخدم إدخال إسمه و من ثم سيتم تخزين اإلسم الذي يدخله في المتغير
email //هنا سيطلب من المستخدم إدخال بريده اإللكتروني و من ثم سيتم تخزين البريد الذي يدخله في المتغير
//في األخير قمنا بعرض المعلومات التي يدخلها المستخدم بشكل مرتب
;return 0
}
سنحصل على النتيجة التالية عند التشغيل مع اإلشارة إلى أننا قمنا بتعليم البيانات التي إنتظرنا البرنامج إلدخالها من لوحة
المفاتيح باللون األصفر.
< -الحظ أنه لم ينتظرنا لندخل البريد اإللكتروني بل إعتبر أنه تم إدخاله :Enter your email
---------------------
< -بشكل تلقائي emailفي المتغير Harmushالحظ أنه قام بوضع Email = Harmush
وطريقتها أن يتحقق البرنامج من تحقق الشرط ،كأنك تقول للبرنامج إذا تحقق الشرط إفعل كذا .فإذا تحقق الشرط أّي
كانت نتيجة المقارنة هي ( )Trueينفذ الخطوات الموجودة بين قوسي العبارة الشرطية ( ،) ifوفي حال لم يتحقق الشرط (
)conditionأّي أن نتيجة المقارنة كانت ( )Falseسوف يعبر جميع الخطوات الموجودة بين قوسي العبارة الشرطية (
) ifوال ينفذها ،أّي أنه يجب أن تكون نتيجة مقارنة شروط هي ( )Trueحتى ينفذ ما بين قوسي العبارة الشرطية ،ويكتب
الكود بهذه الطريقة:
;(if(condition
}
;statement
{
يتألف التعبير ifمن الكلمة األساسية ،ifيليها جسم القرار ويتكّو ن إّما من عبارة واحدة أو عدة عبارات تحيطها األقواس
{} ،ويتم تحقيق ما بين األقواس في حال تحقق الشرط أما في حال عدم تحقق الشرط فال يتم تنفيذ شيء.
مالحظة :إذا أردنا طباعة أكثر من عبارة داخل جملة ifيجب إضافة {} ،وال يشترط كتابتها إذا كانت جملة واحدة.
1عالمة األكبر ويرمز لها > ،طريقة تمثيله في ifالشرطية )x>y) if :مقارنة بين المتغيرين ( )x,yينفذ الجملة التابعة
لعبارة ifإذا كان xاكبر من .y
-2عالمة األصغر ويرمز لها < ،طريقة تمثيله في ifالشرطية )x<y) if :مقارنة بين المتغيرين ( )x,yينفذ الجملة
التابعة لعبارة ifإذا كان xأقل من .y
-3عالمة أكبر أو يساوي ويرمز لها =< ،طريقة تمثيله في ifالشرطية )x>=y) if :مقارنة بين المتغيرين ( )x,yينفذ
الجملة التابعة لعبارة ifإذا كان xأكبرأو يساوي .y
-4عالمة أكبر أو يساوي ويرمز لها => ،طريقة تمثيله في ifالشرطية )x<=y)if :مقارنة بين المتغيرين ( )x,yينفذ
الجملة التابعة لعبارة ifإذا كان xأقل أو يساوي .y
-5عالمة التساوي ويرمز لها == ،طريقة تمثيله في ifالشرطية )x==y) if :مقارنة بين المتغيرين ( )x,yينفذ الجملة
التابعة لعبارة ifإذا كان xيساوي .y
-6عالمة ال يساوي ويرمز لها =! ،طريقة تمثيله في ifالشرطية )x!=y) if :مقارنة بين المتغيرين ( )x,yينفذ الجملة
التابعة لعبارة ifإذا كان xال يساوي .y
-7جمع شرطين بـ andويرمز لها بـ && ،طريقة تمثيلها في ifالشرطية ،if ((x>y)&&(x>z(( :ينفذ الجملة التابعة
لعبارة ifإذا كان xأكبر من yوأيًض ا أكبر من zأّي أنه يجب أن يتحقق الشرطان حتى يتم تنفيذ الجمل.
-8جمع شرطين بـ orويرمز لها بالرمز || ،وطريقة تمثيلها في ifالشرطية هي:
،if ((x>y)||(x>z(( 16ويعني تنفيذ الجملة التابعة لعبارة ifإذا كان xأكبر من yوأيًض ا أكبر من zبمعنى أنه يجب
أن يتحقق الشرطان حتى يتم تنفيذ الجمل.
حيث أن (=! )<,>,<=,>=,==,تستخدم كعالقة بين متغيرين أو قيمتين أو متغير وتعبير رياضي.
:💜💻programming languages
مرحبًا
لغة سي بلس بلس ( )C++توفر عدًد ا من أساليب التكرار (الحلقات) التي تستخدم لتكرار أجزاء من البرنامج أكثر من مرة
طالما أن تعبير االختبار صحيح وإاّل تتوقف عن التكرار ،وهناك ثالثة أنواع من حلقات التكرار في لغة سي بلس بلس
وهي for، whileو do whileوسنتحدث في هذا المنشور عن عبارة التكرار .for
عبارة التكرار forتعتبر أحد جمل التكرار المتوفرة في لغة c++وأكثرها استخداَم ا لبساطتها وسهولتها ،حيث يفضل
الكثير من المبرمجين استخدامها في أغلب األحيان ألنه ببساطة يتم تعريف المتغير المستخدم فى الحلقة وتحديد الشرط
والعّد اد فى سطر واحد فقط وهو ما يسهل كثيًر ا على المبرمج .حلقة forلها وظائف عديدة من هذه الوظائف إدخال القيم
والبحث عنها وغيرها ،وتستخدم كثيًر ا في المصفوفات.
-1الوسيط األول :وهو عبارة عن متغّير نضع به القيمة التي سيبدأ بها العّداد ،مثال لتكرار أمر ما 10مرات يكون
العّداد على سببيل المثال يبدأ بـ 0وينتهي بـ .10
-2الوسيط الثاني شرط االستمرار( :)conditionإذا كان الشرط خاطئ فسيتم الخروج من الحلقة ،وإذا كان صحيح
فسيتم إعادة تنفبذ األوامر ،مثال إذا كان العّداد أقل من أو يساوي 10استمر ،ويبقى التكرار قائًما حتى ينتفي الشرط
ويصبح أكبر من .10
-3الوسيط الثالث :وهو المؤثر (غالًبا ما يكون مقدار الزيادة أو النقصان في العّداد).
:💜💻programming languages
مثال على هذا الكالم لو أردنا تكرار أمر معين ثالث مرات:
}
;statement 1
;statement 2
}
تمِّث ل الـ iهنا عّداد من نوع intقيمته االبتدائّية = 1ثّم شرط االستمرار وهو أن iأقل من أو تساوي الرقم 3وبعدها
الزيادة على العّداد بمقدار .1والجمل ما بين القوسين هي العمليات التي نريد تكرارها.
عادة ال تعرف الحلقة whileوالحلقة do whileعدد مرات تكرار الحلقة لكن في الحلقة التكرارية forيكون عدد مرات
تنفيذ الحلقة مذكوًر ا عادة في بدايتها.
الكالس عبارة عن نوع جديد يتم تعريفه بواسطة الكلمة classو هذا النوع يمكنه أن يحتوي على دوال ,متغيرات,
مصفوفات إلخ..
النوع الذي تقوم بتعريفه بوسطة الكلمة classيشبه بشكل كبير النوع الذي تقوم بتعريفه بواسطة الكلمة structالتي
تعرفنا عليها في الدرس السابق.
لهذا السبب سنبدأ بذكر الفرق بينهما حتى ال ترتبك من شدة التشابه الذي ستالحظه بينهما.
الفرق األساسي بين النوع الذي يتم تعريفه بواسطة الكلمة classو النوع الذي يتم تعريفه بواسطة الكلمة structهو أن
هذا األخير يمكن الوصول ألي شيء موجود فيه بشكل مباشر ,بينما في النوع classأنت تحدد ما إن كان يمكن الوصول
لألشياء التي تضعها فيه بشكل مباشر أم ال.
إمكانية تحديد الطريقة التي يمكن فيها الوصول لألشياء الموجودة في الكالس تمكننا من تطبيق كل مبادئ البرمجة الكائنية
( ) OOPالمتعارف عليها.
مجموعة شروحات للغة ال++c
بصورة سهله