0% found this document useful (0 votes)
63 views13 pages

Compilation

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
63 views13 pages

Compilation

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 13

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

1‬‬
‫تكتب سي بالس بالس باللغة العربية و هي لغة برمجة تجميعية ( ‪ ) Compiled‬و كائنية ( ‪ ) Object Oriented‬تضم‬
‫العديد من مميزات لغات البرمجة عالية المستوى ( ‪ ) High Level‬و منخفضة المستوى ( ‪ ) Low Level‬و هذا يعني أنك‬
‫بها‪.‬‬ ‫تشاء‬ ‫ما‬ ‫فعل‬ ‫على‬ ‫قادر‬
‫هذه اللغة الرائعة مصممة لتعمل على جميع أنظمة التشغيل المعروفة مثل ويندوز‪ ,‬ماك‪ ,‬لينكس‪ ,‬إندرويد إلخ‪ ..‬و هي‬
‫تعتبر من أقوى و أشهر لغات البرمجة على اإلطالق و يطلق عليها "أم اللغات" نظرًا ألنها لغة قوية و موجودة منذ زمن‬
‫طويل‪.‬‬
‫تم بناء هذه اللغة باألساس كتطوير للغة ‪ C‬من قبل ‪ Bjarne Stroustrup‬أثناء عمله في مختبرات ‪ Bell‬لتكون أطروحته‬
‫عام ‪.1979‬‬ ‫الدكتورا‬ ‫رسالة‬ ‫في‬
‫من ذلك الحين وحتى وقتنا الحالي تم تطوير هذه اللغة بشكل مستمر و اخر إصدار رسمي لها هو ‪.C++ 17‬‬
‫ماذا يمكنني ان اطور بلغة ‪++c‬‬ ‫‪.2‬‬
‫برنامج‪.‬‬ ‫أي‬ ‫بناء‬ ‫على‬ ‫قادرة‬ ‫انها‬ ‫يعني‬
‫لغة ‪ ++C‬تعتبر لغة عامة الهدف ( ‪ ) General Purpose‬مما‬
‫القوة الحقيقة لها تتجلى في المشاريع و البرامج الكبيرة مثل‪:‬‬
‫بناء و تطوير انظمة التشغيل ومن اشهر انظمة التشغيل المبنية بهذه اللغة ‪Windows, Linux, MacOS, Andro‬‬ ‫‪‬‬
‫‪.id‬‬
‫بناء و تطوير البرامج الكبيرة مثل برامج أدوبي ( مثل ‪ Photoshop‬و ‪ ) Premier‬و المتصفح ‪.Firefox‬‬ ‫‪‬‬
‫بناء و تطوير االلعاب و من أشهر األلعاب التي طورت بهذه اللغة ‪.Counter Strike, MacOSDoom, Warcraft‬‬ ‫‪‬‬
‫بالنسبة للمطورين ‪ C++‬مميزات لغة‬
‫لها شعبية هائلة و هناك الكثير من المراجع لمن يريد تعلمها‪.‬‬ ‫‪‬‬
‫القدرة على التحكم باستخدام الذاكرة بشكل كبير‪.‬‬ ‫‪‬‬
‫خفيفة و سريعة وتستهلك موارد نظام أقل مقارنة بلغات أخرى مثل جافا و بايثون‪.‬‬ ‫‪‬‬
‫باالمكان تحويل كود مكتوب بلغة ‪ C‬لكود بلغة ‪ ++C‬بسهولة‪.‬‬ ‫‪‬‬
‫مميزات لغة ‪ ++c‬عن باقي اللغات‬ ‫‪.3‬‬
‫مفتوحة المصدر لن تدفع أي مبلغ لتعمل على لغة ‪ ,++C‬فهي مصدر مفتوح و مجانية و ستبقى مجانية مدى‬ ‫‪.1‬‬
‫الحياة‪.‬‬
‫ًا‬ ‫ًا‬
‫خفيفة تستطيع البرمجة بها حتى و لو كان حاسوبك ضعيف أو قديم ‪.‬‬ ‫‪.2‬‬
‫البساطة تعلمها سهل جدًا بعد أن تفهم برمجة الكائنات‪.‬‬ ‫‪.3‬‬
‫سرعة الترجمة (‪)compilation‬تتم ترجمة لغة ‪ ++C‬إلى أوامر يفهمها الجهاز بشكل سريع جدًا‪.‬‬ ‫‪.4‬‬
‫لغة كائنية ( ‪ ) Object Oriented‬مع أن لغة ‪ ++C‬صممت لتكون قريبة من عتاد الجهاز و قريبة للغات منخفضة‬ ‫‪.5‬‬
‫المستوى إال أنها تتيح لمستخدمها بناء الكالسات و التعامل معها بطرق منهجيات البرمجة الكائنية ( ‪ ) OOP‬مثل‬
‫الوراثة و تعدد األشكال و غيرها من المبادئ التي ستتعلمها الحقًا في الدورة‪.‬‬
‫متعددة النماذج تسمح لغة ‪ ++C‬لمستخدمها باختيار الطريقة المناسبة له لكتابة الكود البرمجي من بين عدة‬ ‫‪.6‬‬
‫نماذج مختلفة مثل النموذج الهيكلي ( ‪ ) Structural‬الشبيهة بلغة ‪ C‬و النموذج الكائني ( ‪Object‬‬
‫‪ ) Oriented‬الشبيه بلغة جافا‪.‬‬
‫الدعم الكبير لغة ‪ ++C‬من اللغات القديمة نسبيا و المنتشرة بشكل كبير مما جعل منها لغة ذات شعبية كبيرة‬ ‫‪.7‬‬
‫و مصادر تعلم مختلفة و متعددة و دعم كبير من قبل مجتمع المطورين‪.‬‬
‫طريقة عمل برنامج مكتوب بلغة ‪++C‬‬ ‫‪.4‬‬
‫الكود الذي تكتبه على الكمبيوتر ال يعمل بشكل مباشر بل يمر بعدة مراحل تباعًا حتى يعمل تمامًا كما في الصورة‬
‫التالية‪.‬‬

‫‪1‬‬
‫اذًا يمر الكود المكتوب بلغة ‪ ++C‬بثالث مراحل حتى يصبح في النهاية برنامج يمكن تشغيله على الحاسوب‪.‬‬
‫في البداية يقوم الـ ‪ preprocessor‬بتشذيب وتجهيز الملفات النصية لتدخل بعدها في عملية‬
‫التجميع ( ‪ ) Compiling‬حيث يتم تحويل الملفات النصية الى ملفات ( نوعها ‪ ) Binary‬يفهمها الحاسوب مع المحافظة‬
‫على بعض صفات الكود مثل أسماء المتغيرات والدوال ومن ثم يقوم الموصل ( ‪ ) Linker‬بوصل كل أجزاء البرنامج‬
‫المختلفة ودمجها مع بعضها لتصبح ملف تنفيذي واحد ( نوعه ‪ ) EXE‬يمكن تشغيله في أي وقت مثل أي تطبيق عادي‪.‬‬
‫معلومة تقنية‬ ‫‪.5‬‬
‫الـ ‪ ,precompilation‬الـ ‪ compilation‬والـ ‪ édition des lien‬هي مجرد عمليات تقوم بها برامج صغيرة تعمل مع بعضها‬
‫بشكل متناسق حتى تحول كل الكود الذي قمنا بكتابته في المشروع لبرنامج عادي يمكن تشغيله بنقرة واحدة‪.‬‬

‫الشكل العام الي برنامج مكتوب بلغةِ ‪++C‬‬ ‫‪.6‬‬


‫الملف األساسي في المشروع يجب أن يكون شكله كالتالي‪.‬‬

‫الكود الذي يتنفذ مباشرًة عند تشغيل البرنامج هو الكود الذي نكتبه بداخل حدود الدالة ‪ )( main‬و قبل األمر ‪. return 0‬‬

‫شرح الكود‬ ‫‪.7‬‬


‫األمر ‪ > include <iostream #‬الموجود في السطر األول يقوم بتضمين الحزم الموجودة في الملف ‪ iostream‬وهو‬
‫اختصار لكلمة (‪ )input output stream‬وهي مجموعة من الميزات التي تم ترميزها مسبقا بالفعل وتضمينها مع كل‬
‫مترجم )‪C ++ ( compilateur‬والتي نحتاجها في التطبيقات التي تعتبر ‪ Console Application‬والتي سنستخدمها في‬
‫أغلب البرامج مثل أمر الطباعة ‪ cout‬و غيره من األوامر و الدوال الجاهزة التي ستمر معك الحقًا في الدورة‪.‬‬
‫الستخدام الميزات التي يوفرها هذا الملف‪ ،‬بما في ذلك كتابة نص‪ ،‬نحتاج إلى استيرادها إلى برنامجنا‪ .‬يقال أنه تم‬
‫تضمينه (‪ ،)inclure‬وبالتالي ‪ include‬باللغة اإلنجليزية‬

‫‪2‬‬
‫أخيرا‪ ،‬هل الحظت أن السطر يبدأ بالرمز ‪#‬؟ وهذا ما يسمى توجيه المعالج المسبق ‪.directive de preprocesseur‬‬
‫المعالج المسبق هو برنامج يبدأ تلقائيا في بداية التجميع ‪ ،compilation‬وال سيما الستيراد الملفات المطلوبة منه‪ .‬ضع‬
‫في اعتبارك أن ‪ include‬يسمح لنا باستيراد الملفات التي كتبها المبرمجون الخبراء قبلنا بالفعل‪.‬‬

‫الدالة ‪ )( main‬التي قمنا بتعريفها ابتداءًا من السطر الثالث يجب أن يكون نوعها ‪ int‬ألنها تمثل نقطة البداية في‬
‫البرنامج‪.‬‬
‫وضع ‪ ; return 0‬في السطر السادس و كآخر أمر في الدالة ‪ )( main‬هو أمر متعارف عليه‪ ,‬و فكرته إرسال‬
‫الرقم ‪ 0‬لنظام التشغيل عند انتهاء أو إغالق البرنامج بشكل طبيعي‪ .‬هكذا سيتمكن نظام التشغيل من التفريق بين‬
‫اإلنهاء الطبيعي للبرنامج واإلنهاء المفاجئ ( ‪ ) Crash‬الذي يحدث نتيجة خطأ ما‪.‬‬
‫لماذا أجد األمر ‪ ;using namespace std‬موضوع ضمن كود المشروع إذا لم يكن‬ ‫‪.8‬‬
‫وجوده إجباريًا؟‬
‫في البداية هذا السطر معناه أنك تريد تضمين األشياء الموجودة بداخل المكتبة ‪ std‬بشكل مباشر في المشروع‪.‬‬
‫في حال أردت إزالة هذا السطر ستكون مجبر على تحديد إسم المكتبة التي تستخدم منها األمر ‪ cout‬و ‪ cin‬و غيرها من‬
‫األوامر التي سنتعلمها في دروس الحقة‪.‬‬
‫اآلن سيكون شكل الكود كالتالي في حال أردت إزالة األمر ‪ ;using namespace std‬منه‪.‬‬

‫ثم نالحظ وجود عالمة أصغر < مما يسمح بحقن المحتوى وإرساله إلى الخارج ‪ /‬الشاشة‪ .‬في كود المقدمة الخاص بنا‪،‬‬
‫نقوم بحقن شيئين‪.‬‬
‫‪ -‬أوال ‪ ، "!Hello World" ،‬وهي الرسالة التي نراها على الشاشة‪.‬‬
‫‪ -‬ثانيا ‪ ، std :: endl‬والذي يسمح لك باالنتقال إلى السطر ‪ ،‬كما يوحي اسمه ("‪.)"end line‬‬
‫التعليقات ‪les commentaires‬‬ ‫‪.9‬‬
‫التعليق عبارة عن مالحظات يتم كتابتها من طرف المبرمج لشرح مقاطع صعبة من الكود المكتوب او وصف المقاطع‬
‫التي من الصعب فهمها او ببساطة لتقديم بعض المعلومات اإلضافية‪ .‬يتم تجاهل التعليقات تماما من قبل المترجم‬
‫‪ ، compilateur‬ويتم استخدامها فقط من قبل المبرمج‪.‬‬
‫يمكن كتابة التعليقات بأي لغة‪ .‬يمكن كتابة التعليقات بطريقتين‪ .‬أول واحد هو مع الشرطتين المائلتين ‪ .//‬يتوقف‬
‫التعليق الذي تم إنشاؤه بهذه الطريقة في نهاية السطر حيث تم إنشاؤه‪ .‬يقال إنه تعليق من سطر واحد‪.‬‬

‫الطريقة الثانية تسمح بكتابة مجموعة تعليقات محددة جيدا بين الرموز ‪ */‬و *‪ ./‬يمكن كتابة التعليقات على عدة أسطر‪،‬‬
‫أو حتى بين عدة تعليمات‬

‫‪3‬‬
‫المتغيرات ‪les variables‬‬ ‫‪.10‬‬
‫المتغيرات (‪ ) variables‬عبارة عن أماكن يتم حجزها في الذاكرة بحيث يكون لها اسم بهدف تخزين بيانات فيها أثناء‬
‫حاويات‪.‬‬ ‫أدراج‪،‬‬ ‫مغلفات‪،‬‬ ‫اعتبارها‬ ‫يمكن‬ ‫البرنامج‪..‬‬ ‫تشغيل‬
‫النوع الذي نعطيه للمتغير يجعل نظام التشغيل يحدد نوع البيانات الذي يمكن تخزينه في المساحة المحجوزة لهذا‬
‫المتغير في الذاكرة‪.‬‬
‫على سبيل المثال‪ ،‬إذا أردت تخزين رقم في متغير‪ ،‬يجب أن يكون نوع المتغير في األساس مخصص لتخزين األرقام‬
‫بذلك‪.‬‬ ‫لك‬ ‫يسمح‬ ‫حتى‬
‫وإذا أردت تخزين نص في المتغير يجب أن يكون نوع المتغير في األساس مخصص لتخزين النصوص وهكذا‪.‬‬
‫لإلعالن عن متغير ‪ declaration‬في لغة ‪ ++c‬نحتاج الى تطبيق ثالث اساسيات‪:‬‬
‫‪ -1‬النوع ‪ ،le type‬يشير إلى ما سيخزنه المتغير (عدد صحيح‪ ،‬عدد طبيعي‪ ،‬إلخ)‪.‬‬
‫‪ - 2‬المعرف‪ ،‬أي االسم المرتبط بالمتغير‪.‬‬
‫‪ -3‬يجب أن نعطي قيمة لتخزينها لمتغيرنا‪ .‬يتم ذلك عن طريق تضمين هذه القيمة بين قوسين متعرجين {} او قوسين ()‬
‫او بعملية =‬

‫‪4‬‬
‫خصائص أنواع البيانات ‪type‬‬ ‫‪.11‬‬
‫الجدول التالي يوضح المساحة التي يحتاجها كل نوع في الذاكرة و القيم التي يمكن تخزينها فيه سواء تم استخدام‬
‫النوع لوحده أو تم تحديد خصائصه‪.‬‬
‫‪ Int‬يستخدم هذا النوع لتخزين عدد صحيح‪ ,‬أي عدد ال يحتوي على فاصلة عشرية‪.‬‬
‫‪ : Float‬ستخدم هذا النوع لتخزين عدد يمكن أن يحتوي على فاصلة عشرية‪ .‬يمكن لهذا العدد أن يحتوي على ‪ 7‬أرقام‬
‫بعد الفاصلة‪.‬‬
‫‪ : Double‬يستخدم هذا النوع لتخزين عدد يمكن أن يحتوي على فاصلة عشرية‪ .‬يمكن لهذا العدد أن يحتوي على ‪ 15‬رقم‬
‫بعد الفاصلة لهذا يعتبر أكثر دقة من النوع ‪ float‬في العمليات الحسابية الدقيقة‪.‬‬

‫‪ : Bool‬يستخدم هذا النوع لتخزين إما القيمة ‪ true‬و إما القيمة ‪. false‬‬

‫‪ : Char‬يستخدم هذا النوع لتخزين حرف أجنبي أو لتخزين عدد صحيح قيمته تمثل حرف نسبًة لرقم اآلسكي‬
‫كود ( ‪ ) ASCII Code‬الخاص به‪.‬‬
‫ًا‬
‫فمثًال ‪ ; char x = 65‬نفسها تمام إن كتبت ‪ . ;' char x = 'A‬سبب تحول الرقم ‪ 65‬إلى الحرف ' ‪ ' A‬في الذاكرة هو أنه‬
‫في نظام ‪ ASCII‬الرقم ‪ 65‬يمثل الحرف ' ‪. ' A‬‬

‫‪5‬‬
‫قبل إعطاء اسم او معرف للمتغير يجب أن يتوافق مع قواعد محددة للغاية‪.‬‬
‫‪"-1‬يجب أن يبدأ بحرف "ال يمكنه البدء برقم ‪ ،‬إنه ممنوع‪ .‬كما يجب أال تبدأ ب ‪ :_ underscore‬استخدامها يتبع قواعد‬
‫دقيقة‪ ،‬لذلك من األسهل عدم استخدامها كحرف أول‪.‬‬
‫‪ - 2‬المسافات وعالمات الترقيم ممنوعة ('‪ ,?,‬وما إلى ذلك)‪.‬‬
‫‪— 3‬ال يمكنك استخدام كلمة أساسية للغة ‪ les mot clefs‬كمعرف‪ .‬على سبيل المثال‪ ،‬يحظر استعمال الكلمات مثل ‪int‬‬
‫‪ ، ..… – return‬على سبيل المثال‬

‫لقد تكلمنا سابقا انه يجب ان نعطي قيمة في األقواس المتعرجة لتهيئة المتغير‪ .‬ولكن ماذا لو كتبت فقط األقواس المج‬
‫دعونا نتناول نقطة أخيرة‪ .‬أخبرتك أننا نعطي قيمة في األقواس المتعرجة لتهيئة المتغير‪ .‬ولكن ماذا لو كتبت فقط‬
‫األقواس المجعدة‪ ،‬بدون قيمة فيها؟ هل سيتم تجميع الكود دائما؟‬
‫اإلجابة نعم يقوم بتجميع الكود ويعطي قيمة صفر للمتغيرات‬

‫‪6‬‬
‫الثوابت‬ ‫‪.12‬‬
‫الثوابت ‪ .const‬يمنع أي تعديل للقيمة المعطاة له‪ .‬نقول إننا نخلق ثابتا‪ .‬وإذا حاولت تعديل ثابت‪ ،‬فإن المترجم يرفض‬
‫بصوت عال وواضح‪.‬‬

‫معالجة المتغيرات ‪manipulation des variables‬‬ ‫‪.13‬‬


‫ال يتعين علينا مطلقا عرض متغيراتنا فقط‪ .‬على العكس من ذلك ‪ ،‬يمكننا القيام بالكثير من العمليات عليها ‪ ،‬بما في‬
‫ذلك الجمع بين المتغيرات مع بعضها البعض وتغيير قيمتها‬

‫‪7‬‬
8
‫المبرمجون كسالى بطبيعتهم ‪ ،‬لذلك ال يحبون التكرار‪ .‬لذلك أنشأوا اختصارات للذهاب بشكل أسرع‪ .‬لذا ‪ ،‬بدال من‬
‫كتابة ‪ ، a = a + b‬يمكننا كتابة ‪ a + = b‬مباشرة‪ .‬ينطبق بناء الجملة الجديد هذا على عوامل الجمع ‪ +‬والطرح والضرب *‬
‫والقسمة ‪ /‬والنسبة ‪% modulo‬‬

‫‪ ++a‬أو ‪ a++‬لزيادة قيمة المتغير بمقدار ‪incremetation 1‬‬


‫‪—a‬او – ‪ a‬لنقصان قيمة المتغير بمقدار ‪decremetataion 1‬‬

‫المخرجات ‪les sorties‬‬ ‫‪.14‬‬


‫‪-1‬الرسائل النصية‬
‫و نجدها بين عالمتي اقتباس مزدوجة ‪" " guillemets‬‬

‫‪ -2‬الحروف ‪les caracteres‬‬


‫الكلمات في اللغة عبارة عن مجموعات من الحروف‪ ،‬فإن الجمل ‪ chaine de caractere‬هي سلسلة من األحرف‬
‫البسيطة‪ .‬في ‪ ، ++C‬يتم تضمين الحرف بعالمات اقتباس مفردة’ ‪.‬‬

‫‪9‬‬
‫‪-3‬الرموز الخاصة ‪les caracteres speciaux‬‬
‫لنقم بكتابة هذا الكود‬

‫نالحظ ان الرمز ‪ /‬ال يظهر ‪ .‬يوجد في لغة ‪ ++c‬رموز خاصة ال تظهر اال اذا قمنا بتسبيقها بالرمز ‪/‬‬

‫‪ ' /-‬الذي يسمح لك بعرض عالمة اقتباس واحدة‪.‬‬


‫—‪ "/‬الذي يسمح لك بعرض عالمة اقتباس مزدوجة"‪.‬‬
‫—‪n/b‬الذي يسمح لك باالنتقال إلى الخط ‪ ،‬مثل ‪.std :: endl‬‬
‫‪—t/‬الذي يسمح لك بعمل عالمة تبويب أفقية‪.‬‬
‫‪10‬‬
‫—‪ //‬الذي يعرض شرطة مائلة عكسية‬

‫‪ -4‬األرقام‬

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

‫‪11‬‬
les entrees ‫المدخالت‬

Fiche TP n1

Exercice 1:
Dans une élection, I est le nombre d’inscrits, V le nombre de votants, P = 100V/I le pourcentage de votants, M =
V/2 le nombre de voix pour obtenir la majorité. Ecrire un programme qui demande à l’utilisateur de saisir I et V,
puis calcule et affiche P et M.

Exercice 2:
Saisir 3 réels, calculer et afficher leur moyenne.

12
Exercice 3
A, B et C sont des entiers. Quelles sont les valeurs finales de A, B et C?
A=2; A=A+2; B=A*2+A; C=4; C=B-C; C=C+A-B; A=B-C*A; A=(B-A) * C; B=(A+C)*B

Exercice 4
Comment inverser le contenu de deux variables a et b?
Comment faire sans utiliser une variable supplémentaire ?

Exercice 5
Soient A, B deux variables de types entiers, C, D deux variables de type réel, E, F deux variables de type booléen.
Quel est le type des variables suivants : A1, B1, C1, A2, B2, C2, D2, A3, B3, C3, D3
A1 =A+B ; B1 =A*B; C1= A/B; A2= C+D; B2 =C*D; C2 =C/D; D2 =A*C; A3 =E ou F; B3 =E et F; C3 =(A>B) ;
D3 =Faux ;

13

You might also like