C++من البداية إلى البرمجة الكيانية الى من أستمد منها الدعم والتشجيع ...زوجتي الى هبة الله لي ...أبنائي نقاء ...احمد ...زينب ...زيد الى أعز الأبناء ...حفيدتي دانيه ...تقوى 6
د .نضال خضير العبادي /جامعة الكوفة [email protected] . 7
C++من البداية إلى البرمجة الكيانية المحتويات المقدمة ................................................................................... الفصل الأول تمهيد للغة C++ 1.1المقدمة .............................................................................. 1.2بعض الصفات العامة للبرنامج .................................................. 1.3مدخل للبرمجة ..................................................................... 1.4الحاسوب وحل المشاكل .......................................................... 1.5نمذجة كيانات العالم الحقيقي ..................................................... .................................................................................C++ 1.6 1.6.1لماذا لغة ...............................................................C++ 1.7أوامر المعالج الأولي.............................................................. 1.7.1الموجهة...................................................................... 1.8المعرفات ........................................................................... 1.9البيانات.............................................................................. 1.9.1الأعداد الصحيحة........................................................... 1.9.2الأعداد الحقيقية ............................................................. 1.9.3الرموز ....................................................................... 1.9.3.1رموز الدلالة ........................................................... 1.9.4النوع المنطقي............................................................... 1.11التعابير المنطقية ................................................................. 1.11.1العمليات المنطقية.......................................................... 8
د .نضال خضير العبادي /جامعة الكوفة [email protected] . 1.11الأعلان عن المتغيرات ......................................................... 1.12الثوابت ............................................................................ 1.12.1أسباب استخدام الثوابت................................................... 1.13العوامل ........................................................................... 1.13.1المساواة ) = (............................................................. 1.13.2العمليات الرياضية ) ................................... ( =, -, *, /, % 1.13.3المساواة المركبة........................................................... 1.13.4الفاصلة ( ) ,كأداة ........................................................ 1.14التعبير ............................................................................. 1.15توليد الأرقام العشوائي .......................................................... 1.16التعليقات .......................................................................... 1.17عامل الزيادة...................................................................... 1.18بعض المحددات الخاصة ....................................................... 1.18.1المحدد ( متطايرة ) ....................................................... 1.18.2المحدد ( المسجل )........................................................ 1.19الأدوات الدقيقة................................................................... 1.21تحويل نوع البيانات.............................................................. 1.21حجم البيانات ..................................................................... 1.21.1عامل تحويل النوع الخارجي ............................................ 1.22الأخطاء التي ترافق البرامج.................................................... 1.23موجهات التضمين وفضاء الأسماء............................................ 9
C++من البداية إلى البرمجة الكيانية الفصل الثاني أوامر الأدخال والأخراج المقدمة ................................................................................... 2.1هيكليه البرنامج .................................................................... 2.2المخرجات والمدخلات ........................................................... 2.2.1الحالة الأولى................................................................. 2.2.2الحالة الثانية ................................................................. 2.4بعض الصيغ المهمة في عمليات الأدخال والأخراج.......................... 2.5التعامل مع البتات .................................................................. 2.5.1عمليات البتات :العامل ~ .................................................. 2.5.2عامل مقارنة البتات (و).................................................... 2.5.3عامل المقارنة او............................................................ 2.5.4مقارنة البتات باستخدام العامل .................................... XOR 2.5.5عامل تزحيف البتات لليسار << .......................................... 2.5.6عامل تزحيف البتات لليمين >>........................................... 2.6أمثله محلولة........................................................................ الفصل الثالث ايعازات القرار والتكرار 3.1المقدمة .............................................................................. 3.2عبارة أذا ............................................................................ 3.2.1عامل الشرط الثلاثي ).................................................. (?: 3.3أذا المركبة.......................................................................... 11
د .نضال خضير العبادي /جامعة الكوفة [email protected] . 3.4عبارة التكرار ...................................................................... 3.5عبارة التكرار ...................................................................... 3.6أيعاز التكرار ....................................................................... 3.7استخدام ) ( forالمتداخلة......................................................... 3.8عبارة أختيار الحالة ............................................................... 3.9أمثلة محلولة ........................................................................ الفصل الرابع الدوال 4.1المقدمة .............................................................................. 4.2الدوال ............................................................................... 4.2.1فوائد استخدام الدوال .................................................................... 4.2.2تعريف الدالة ............................................................................. 4.3الدالة الرئيسة....................................................................... 4.4أعادة القيم .......................................................................... 4.5اين تكتب الدالة في البرنامج ..................................................... 4.6المتغيرات........................................................................... 4.7استدعاء الدالة ...................................................................... 4.7.1الوسائط والعوامل .......................................................... 4.7.2تمرير الوسائط.............................................................. 4.7.3الاعادة بالمرجعية........................................................... 4.8الدالة ........................................................................inline 4.9الوسائط الافتراضية............................................................... 4.11الوسائط الثابتة.................................................................... 11
C++من البداية إلى البرمجة الكيانية 4.11تطابق الدوال ..................................................................... 1.12الاستدعاء الذاتي ................................................................. 1.13دوال خاصة ...................................................................... 1.14الاعلان عن الدالة ............................................................... 1.15الاجراءات المجردة.............................................................. 1.16مختصرات التصريح............................................................ 1.17الدوال والمتغيرات المستقرة.................................................... الفصل الخامس المصفوفات 5.1المقدمة .............................................................................. 5.2المصفوفات......................................................................... 5.3المصفوفات الاحادية .............................................................. 5.4أنشاء المصفوفة.................................................................... 5.5الوصول الى عناصر المصفوفة ................................................. 5.6المصفوفات المتعددة الابعاد ...................................................... 5.6.1الاعلان عن المصفوفة الثنائية ............................................ 5.6.2الوصول لعناصر المصفوفة الثنائية ...................................... 5.6.3ابتداء المصفوفة الثنائية .................................................... 5.6.4طباعة المصفوفة............................................................ 5.7مصفوفات الأحرف .............................................................. 5.8استخدام المصفوفات كوسائط .................................................... 12
د .نضال خضير العبادي /جامعة الكوفة [email protected] . الفصل السادس المؤشرات 6.1المقدمة .............................................................................. 6.2المؤشرات .......................................................................... 6.3أداة العنونه )*( .................................................................. (&) and 6.4أهمية المؤشرات................................................................... 6.5أبتداء المؤشرات................................................................... 6.6رياضيات المؤشرات ............................................................. 6.7المصفوفات والمؤشرات.......................................................... 6.8مصفوفة المؤشرات ............................................................... 6.9أخطاء بسبب أحتمال استخدام خاطيء للمؤشر................................ 6.11دوال تخصيص الذاكرة الالي .................................................. 6.11العناوين والارقام ................................................................ الفصل السابع متواليات الرموز -السلاسل الرمزية 7.1المقدمة .............................................................................. 7.2ابتداء سلسلة الرموز المنتهية برمز النهاية..................................... 7.3استخدام متواليات الحروف المنتهية برمز النهاية ............................. 7.4قراءة سلسلة حرفية من لوحة المفاتيح .......................................... 7.4.1الدالة )(............................................................................gets 7.4.2الدالة .......................................................................... getline 7.4.3قراءة اسطر متعددة .................................................................. 7.5بعض دوال مكتبة السلاسل الرمزية ............................................ 13
C++من البداية إلى البرمجة الكيانية 7.6مصفوفات السلاسل الرمزية ..................................................... 7.6.1مثال لاستخدام مصفوفة السلاسل الرمزية ................................. s 7.7المؤشرات والسلاسل الرمزية ................................................... 7.8مقدمة الى صنف السلاسل الرمزية ............................................. 7.9استخدام )== (= andمع السلاسل الرمزية في .............................C 7.11تحويل السلاسل الرمزية الى ارقام ............................................ الفصل الثامن التراكيب ،الأتحاد ،وحقول البتات 8.1المقدمة .............................................................................. 8.2التراكيب ............................................................................ 8.3مقارنة بين التركيب والمصفوفة ................................................. 8.4الأعلان عن التركيب ............................................................. 8.5الوصول الى حقول التركيب ..................................................... 8.6التركيب البسيط .................................................................... 8.7تهيئة التركيب ...................................................................... 8.8الدوال والتراكيب .................................................................. 8.9مصفوفة من التراكيب ............................................................ 8.9.1التهيئة لمصفوفة تركيب ................................................... 8.11مصفوفات داخل التركيب....................................................... 8.11التراكيب المتداخلة............................................................... 8.12المؤشرات والتراكيب ........................................................... 8.12.1التعامل مع الاتحاد ................................................................. 14
د .نضال خضير العبادي /جامعة الكوفة [email protected] . 8.12.2تهيأة أو أبتداء الأتحاد .............................................................. 8.13الأتحاد المجهول ................................................................. 8.14حقول البتات ...................................................................... ..........................................................................Typedef 8.15 8.16التراكيب والمصفوفات .......................................................... 8.17الوراثة في التراكيب............................................................. 8.18مصفوفات التراكيب ............................................................. الفصل التاسع الصنوف 9.1المقدمة .............................................................................. 9.2لماذا نخلق انواع جديدة ........................................................... 9.3الصنوف............................................................................ 9.4مفهوم الكيان ....................................................................... 9.5تخصيص الذاكرة للكيانات ....................................................... 9.6الصنوف والكيانات................................................................ 9.7الصنف والاعضاء ................................................................ 9.8الأعلان عن الصنف .............................................................. 9.8.1أتفاقيات التسميه ............................................................. 9.9تعريف الكيان ...................................................................... 9.11الوصول الى اعضاء الصنف .................................................. 9.11الخاص والعام ................................................................... 9.12تعريف دوال الصنف............................................................ 9.13استدعاء دوال العضويه......................................................... 15
C++من البداية إلى البرمجة الكيانية 9.14جعل البيانات الاعضاء خاصة ................................................. 9.15البيانات الأعضاء الساكنة....................................................... 9.16الدوال الأعضاء الساكنة ........................................................ 9.17تداخل الدوال الأعضاء.......................................................... 9.18أعادة الكيانات .................................................................... 9.19دوال البناء والهدم................................................................ 9.19.1دالة البناء والهدم الافتراضية ............................................ 9.19.2دوال البناء المتعددة في الصنف ......................................... 9.19.3استنساخ دالة البناء ........................................................ 9.21الدوال الاعضاء الثابتة .......................................................... 9.21مصفوفة الكيانات ................................................................ 9.22الكيان كوسيط في دالة........................................................... 9.23استخدام المصفوفات مع الصنوف............................................. 9.24الواجهات البينية مقابل التعريف................................................ 9.25تنفيذ الدوال ............................................................... inline 9.26الدوال الصديقة................................................................... 9.27الاصناف الصديقة ............................................................... 9.28المؤشرات ,الدوال والاشكال المتعددة......................................... 9.29عوامل ادارة الذاكرة............................................................. 9.31التأشير الى الاعضاء............................................................ 9.31دالة الاستنساخ ................................................................... 9.32عوامل التطابق ................................................................... 16
د .نضال خضير العبادي /جامعة الكوفة [email protected] . 9.33الكلمة المفتاحية ...........................................................This الفصل العاشر الوراثة 11.1ماهي الوراثة ..................................................................... 11.2الصيغة القواعدية لاشتقاق صنف .............................................. 11.3الوراثة المتعددة .................................................................. 11.4دوال البناء ،الهدم ،والوراثة.................................................... 11.4.1تمرير وسائط لدوال البناء في الصنف الاساس....................... 11.5الدوال التي لاتورث اليا ......................................................... 11.6دوال التجاوز .................................................................... 11.7تعدد الأشكال ..................................................................... 11.7.1المؤشرات الى الصنف الأساس ......................................... 11.8الاعضاء الافتراضية............................................................ 11.9تجريد الاصناف الاساس........................................................ الفصل الحادي عشر القوالب 11.1تعريف القوالب................................................................... 11.2وسائط القالب ..................................................................... 11.2.1الصيغة العامة للاعلان عن قوالب الدالة مع وسائط القالب.......... 11.3قوالب الدوال ..................................................................... 11.4القوالب ............................................................................ 11.5قالب الصنف ..................................................................... 11.6التعامل مع الاستثناءات ......................................................... 17
C++من البداية إلى البرمجة الكيانية 11.7وسيط كتلة ............................................................... catch 11.8الاستثناءات .............................................try – throw – catch 11.9تعريف اصناف استثناء خاصة بك ............................................ 11.11تحديات تنفيذ معالج الاستثناء ................................................. 11.11.1الاستثناءات اثناء بناء وهدم الكيانات.................................. 11.11.2تفعيل استثناءات من دوال الهدم خطر ................................ 11.11التمييز بين اسم النوع والصنف .............................................. 11.12اخطاء وقت الترجمة اثناء وقت الربط ...................................... 11.13أعلان الصداقة في قوالب الصنف ........................................... 11.13.1الصداقات الاعتيادية..................................................... 11.13.2صداقة القوالب العامة ................................................... 11.13.3علاقة صداقة القوالب الخاصة......................................... 11.13.4اعتماديات الاعلان ...................................................... الفصل الثاني عشر عمليات الملف 12.1المقدمة ............................................................................ 12.2الملف.............................................................................. 12.3معالجة الملفات ................................................................... 12.4الاعلان عن الملف ............................................................. 12.4.1الدالة العضو )(......................................................open 12.4.1.1قراءة وكتابة رمز من /او في ملف ............................ 12.4.2الدالة العضو ) (.................................................... close 12.5دوال اعضاء لبعض حالات حزمة البيانات .................................. 18
د .نضال خضير العبادي /جامعة الكوفة [email protected] . 12.5.1الدالة العضو )(........................................................eof ................................................................................. fail ( ) 12.5.2 ...................................................................... bad( ) 12.5.3 ............................................................................... good( ) 12.5.4 12.6امثله محلولة ...................................................................... 12.7عمليات الملف الثنائي ........................................................... 12.8الهياكل وعمليات الملف......................................................... 12.9الصنف وعمليات الملف ........................................................ 12.11مصفوفة من كيانات صنف وعمليات الملف................................ 12.11الاصناف المتداخلة وعمليات الملف......................................... 12.12معالجة ملفات الوصول العشوائي............................................ 12.13الوصول العشوائي ............................................................. 12.14فحص حالات الادخال والاخراج ............................................ 12.15القراءة والكتابة في الملف النصي............................................ 12.16الأدخال والأخراج الثنائي غير المنسق...................................... 12.16.1استخدام )(...............................................get() and put 12.16.2قراءة وكتابة كتل من البيانات .......................................... الملاحق .................................................................................. المصادر ................................................................................. 19
C++من البداية إلى البرمجة الكيانية المقدمة أَ ّماا بَ َدا َد َح َما لد الل له الَا لل َج َدا َ ال َح َما َد مَ َمنَاان للنَ َد َما لئا لهَ َو َمداا ان لما َن بَ ئلا لهَ َو َو لسااي ن ىلااى لجنانلاا لهَ َو َساابَبَان لل لزيااا َد له ى َحاااانل لهَ َوال ََاا له َعَااى َسااو لل له نَ لبااي ال َر َح َما لةَ وىمااللأ الأَ لئ َما لةَ َو لسارا لة الأ َما لةَ الم َنتَ َطا لب لما َن لمينَا لة ال َِا َرللأَ َوسا لَ لة ال َم َج لد الأَ َق َدللأَ َو َم َغ َر لس ال لفطا ل الم َد لر لقَ َوفَ َر لع ال َد لء الم َث لما لر الماو ل لقَ َو َعَاى أَ َها ل بَ َي لتا له َمَاا لبيلُ لّ الََ،ا لمَ َو لع ََا لم الأ َما لمَ َو َمناا ل الادي لن الوا ليا َح لةَ َو َمثا لقيا ل الفَ َضاا ل ال َرا لج َحاا لةَ اللَهااََى الله َعََاا َي له َم أَ َج َم لدااي َنَ اللَهاا هن تَِااوإ ىزا نء للفَ َضاا لَ له َمَ َومِافأهن لل َد َم لَ له َمَ و لكفا نء لل لطي لب فَ َر لع له َم َوأَاللَهَل له َمَ ماا أَناا َ فَ َجا ار ساا لم اعَ َو َ اوى نَ َج ام مالل اع. لغات البرمجة تسمح للمبررمج باسرتخدام اللغرة بشركل مشرابهة لتلرك التري تكتب بشكل طبيعي وهي تستند على توليد ايعازات تعتمد على الحاسوب لتنفيذ البرنرامج .هنرا العديرد مرن لغرات البرمجرة مثرل ،Cobol ،Fortran ،Pascal ،C Basicوغيرهرا الكثيرر وجميرع هرذ اللغرات تهردف الرى انجراز مهمرة خاصرة، تسهيل التعامل مع الحاسوب لحل المشكلات ،وتنفيذ العديد من التطبيقات التري نحتاج اليها بشكل يومي ودوري. لغرة البرمجرة C++هري اضرافة جديردة لقائمرة كبيررة مرن لغرات البرمجرة المتوفرة حاليا .فهي لغة قوية ومرنة لها مالانهاية من التطبيقات. تدعى لغة C++لغة مترجمرة ،حير لريب بمقردور كتابرة برنرامج C++ وتنفيذة على حاسبتك مالم يكن لديك مترجم ،C++هذا المترجم يسرتلم ايعرازات لغة C++الخاصة بك ويحولها الى شكل يمكن لحاسربتك قرائتهرا ،متررجم C++ هو الاداة التي يستخدمها حاسوبك لفهم ايعازات لغة C++في برنامجك. 21
د .نضال خضير العبادي /جامعة الكوفة [email protected] . أمكانيرة تنمريم ومعالجرة البيانرات هرو مفتراا النجراا فري الحيراة الحديثرة. صمم الحاسوب لحمل ومعالجة كميات كبيرة مرن المعلومرات بسررعة وكفراء . بشكل عام فران الحاسروب لايمكنرة عمرل أي شريء مرالم يرتم أخبرارة مايجرب أن يقروم بره .لرذلك وجردت C++ .C++هري لغرة برمجرة عليرا (أي قريبرة مرن لغرة الأنسرران وفهمررة) والترري تسررمح لمهنرردس البرامجيررات بالتواصررل بكفرراءة مررع الحاسروب .وتعرد لغرة C++مرن اللغرات ذات المرونرة العاليرة والقابلرة للتكيرف. ومنررذ أختراعهررا فرري عررام 1981فقررد تررم اسررتخدامها لبرررامج واسررعة ومختلفررة تضررمنت تعليمررات مخزنررة علررى الحاسرروب للمسرريطرات الدقيقررة ( micro ،)controllerأنممة التشرغيل ( ،)operating systemsالتطبيقرات(applications) ، وبرامج الرسروم ( .)graphics programsوأصربحت C++بسررعة لغرة البرمجرة يتم أختيارها. التي ومرن خرلال تدريسري لمرادة البرمجرة والبرمجرة الكيانيرة باسرتخدام لغرة البرمجرة C++شرعرت بوجرود الحاجرة الملحرة لكتراب يبسرط المفراهيم والافكرار التي تساعد الطالب والقاريء على تعلم البرمجرة وتطروير مهاراترة وامكانياترة في مجال البرمجة الكيانية ،ومن الملاحظ افتقار المكتبرة العربيرة الرى مصرادر علميرة متخصصرة مكتوبرة باللغرة العربيرة ممرا يمطرر القراريء الرى الاسرتعانة بالمصادر الاجنبية والتى تفقدة الكثير مرن المهرارات والمعرارف نمررا للرنقص الكبير باللغة الاجنبية التي كتب بها الكتاب. من هذا شرعت بكتابة هرذا الكتراب الرذي يركرز علرى لغرة البرمجرة C++ ومايتعلق بها فضلا عن البرمجة الكيانية ،وحاولت جاهدا ان يكون هذا الكتاب بسيط يسهب بشرا المفاهيم وقواعد اللغة فضلا عن احتوائة الى اكثر من 231 مثرالا محلرولا ،وهرو يفيرد الاشرخاص الرذين لريب لرديهم فكررة عرن البرمجرة او 21
C++من البداية إلى البرمجة الكيانية هرؤلاء الرراغبين بتطروير امكانيراتهم البرمجيرة وحترى المختصرين ومحترفري البرمجة. ولابد من الاشارة هنا الى ان غالبية حلول البرامج التي وضعت في هذا الكتاب لم تراعي ان يكون البرنامج برنامج احتراف ومثالي وذلك لان الهردف من الامثلة المحلولة هو توضيح افكار ومفاهيم معينة لذلك تم التركيز على هذا المبدأ مبتعدين بعض الشريء عرن المثاليرة وعرن اختصرار بعرض الشرفرات فري كتابة البرامج او ان يكون البرنامج ذات وقت اقصر بالتنفيذ. الكتاب نمم وفقا لفصول عددها اثنا عشرة فصلا وكل فصرل ركرز علرى موضوع او مواضيع معينة وكما يأتي: الفَ الاول ركز على اعطاء القاريء فكرة عامة عن البرمجة وبعض المصرطلحات كثيررة الاسرتخدام وهرو يعتبرر مردخلا للبرمجرة ولرذلك فلابرد لمرن يرغب الولوج الى عالم البرمجة ان يفهم ماورد بهذا الفصل قبل ان ينتقرل الرى الفصول الاخرى. الفَا الثااني يبردأ براولى خطروات البرمجرة والتري تعتمرد علرى اوامرر الادخرال والاخرراج ويوضرح هرذا الفصرل كيفيرة التعامرل مرع اوامرر الادخرال والاخراج وتم ايراد عدد من الامثلة التي توضح ذلك. فري الفَا الثالا ترم الانتقرال الرى شررا الايعرازات التري تتعامرل مرع القرارات في البرمجة وهي حجر الزاوية في الكثير من البرامج. اما الاساس الذي تبنرى عليره لغرة البرمجرة C++الا وهري الردوال فقرد ترم تخصيص الفَ الرابع لها ليتم التعامل معها بشكل موسع ،هذا الفصل توسرع بشررا كرل مالره علاقرة بالردوال وكيفيرة اسرتخدامها والضروابط التري تحكمهرا وميزات استخدام الدوال. 22
د .نضال خضير العبادي /جامعة الكوفة [email protected] . المصفوفات خصص لها الفَ الطامس ،والمصفوفات لهرا الكثيرر مرن التطبيقرات وهري تسراعد بشركل او اخرر علرى تسره-يرل حرل المشركلات .وقرد ترم خلال هذا الفصل التعامل مع المصرفوفات الاحاديرة والثنائيرة ويحتروي الفصرل على الكثير من الامثلة المحلولة. بعرد هرذ الفصرول التري تعرد اساسرية للرراغبين بتطروير امكانيراتهم فري البرمجة يتم التقدم باتجاة المؤشررات التري خصرص لهرا الفَا الااادس وترم خلال هذا الفصل التركيز على المؤشرات والمرجعية وينتقل الفصل مرن بيران اهمية المؤشرات ،واستخدام المؤشرات مع المصفوفات الى التخصيص الالري للذاكرة وتوضيح الكثير من خواص المؤشرات باستخدام امثلة مختلفة. ونمرا لاهمية الرموز والتعامل معها فقرد افررز لهرا الفَا الااابع ولرم توضع مع المصفوفات كما هرو معتراد وذلرك لاهميتهرا ،ولرذلك فقرد ترم التركيرز علرى كيفيرة التعامرل مرع الرمروز وتوضريح الردوال التري تتعامرل مرع الرمروز وعلاقرة الرمرروز بالمصررفوفات وماهيرة الاعمررال الترري يمكرن ان تطبررق علررى الرموز بشكل عام. الفَا الثاامن هرو مرحلرة انتقاليرة مرن البرمجرة المهيكلرة الرى البرمجرة الكيانية وقد توسع هذا الفصرل بتوضريح التراكيرب والاتحرادات وكيفيرة التعامرل مع البتات ،وكيفية تعامل التراكيب مع المؤشرات. الفصل الاول في البرمجة الكيانية هو شرا الصنوف والذي كان الفَ التاساع مخصرص لره حير ترم الشررا باسرهاب عرن مفراهيم الصرنوف وماهيرة الكيانات والبرمجة الكيانية ،وفي هذا الفصل ترم شررا الكثيرر مرن الردوال التري لها اهمية في البرمجة الكيانية .لابد ان اشير الى ان هذا الفصرل ترم التوسرع بره بشكل كبير لتوضيح الكثير من مفاهيم البرمجة الكيانية وبما يتناسب مع اهميرة هذا الموضوع. 23
C++من البداية إلى البرمجة الكيانية الفَا الدا ار تطرقنرا بره الرى مفهروم اخرر مهرم مرن مفراهيم البرمجرة الكيانية وهو الوراثة وحاولنا شرحها بشكل مبسرط وكيفيرة الاسرتفادة مرن فكررة الوراثة ،وكيفية تاثيرها على البرمجة الكيانية. ومن صفات البرمجة الكيانيرة موضروع القوالرب والرذي افررد لره الفَا الحااد عشار وترم التطررق للقوالرب بشركل عرام وقوالرب الصرنف وكرذلك ترم التطرق الى الاستثناءات لما لها اهمية كبيرة في البرمجة بشكل عام. اخيرا كان الفَ الثاني عشر الذي ركزنا فيه على التعامل مع الملفات بكرل انواعهرا والتركيرز علرى كيفيرة اسرتخدام العديرد مرن الردوال الخاصرة التري تتعامل مع الملفات. واذا كان لابد من كلمة اخيرة فاني اقول اني برذلت جهردا كبيررا لاخرراج هذا الكتاب بشكل يساعد جميع المهتمين بالبرمجة على الاستفادة منه واذا كران هنا نقص او ملاحمة فانرا علرى اسرتعداد لسرماعها عسرى ان تنفعنرا فري وقرت لاحق لتنقيح الكتاب وسراكون سرعيد بكرل مرايردني مرن ملاحمرات ..فقرد اردت من هذا الكتاب مرضاة الله ،واسال الله عز وجل ان يحسبه في ميزان حسناتي. نضال الدباد النجف الأ رف /الدراق 1122 [email protected] 24
د .نضال خضير العبادي /جامعة الكوفة [email protected] . 25
C++من البداية إلى البرمجة الكيانية الفصل الأول تمهيد للغة C++ 2.2المقدمة البرنامج هو سلسلة متتالية من الايعازات ،يمكننا تشبيهها بوصفة أعداد وجبرة غذائية ،النوتة الموسيقية ،أو نموذج حياكة .وتتميز عنها برامج الحاسوب بشكل عام بأنها أطول أمتدادا وكتابتهرا تسرتدعي دقرة وعنايرة فرائقتين .وقبرل الشرروع والخرو في موضوع البرمجة لابد من تعريف بعض المصطلحات التي تحتاجها لاحقا. 1.2بعض الصفات العامة للبرنامج • يحتاج البرنامج بصورة عامة الى من يكتبة وهوو المبورمج ) ،)Programmerوالوى المعوالج ( )Processorلتفسوير وتنفيو ( )Execution OR Runningالايعوازات أو الأوامور ( ،)Instructions OR Commandsوتسومى عمليوة تنفيو كامول البرنوامج (المعالجة) (.)Process • أن تنفي البرنامج يوت بصوورة متتاليوة (أي أيعواز ( )instructionبعود الأخور حسوب تسلسلها) ،مال يت الأخبار خارجيا عن غير ذلو .هو ا يعنوي أن نبودأ بوأول أيعواز وينف ث الثاني والثالث وهك ا لحوين الوووول الوى الأيعواز الأخيور .هو ا النمووذج ممكن أن يتغير بطريقة محددة مسبقا بشكل جيد من قبول المبورمج ,كموا يمكون أن يوت تكورار جوزء مون البرنوامج وحسوب تحديودات المبورمج (مثول عمليوة تكورار مقطع من نوتة موسيقية). • كل برنامج يجب أن يكون له تأثير ..مثلا فوي القطعوة الموسويقية يكوون هو ا التوأثير عبووارة عوون ووووت ،أمووا فووي بوورامج الحاسوووأ هوو ا التووأثير يكووون علووى شووكل مخرجات ،أما مطبوعة أو معروضة على الشاشة. 26
د .نضال خضير العبادي /جامعة الكوفة [email protected] . • كل برنامج يعمل على أشياء محددة (تدعى كيانات) للووول الى التأثير المطلووأ (مثلا في ووفة أعداد الطعام فان ه ه الاشياء ممكن أن تكون اللحوم ،الخضار، وغيرها) ،أما في البرامج فأن ه ه الاشياء تكون متغيرات. • فوي العديود مون البورامج يجوب أن يوت الأعولان المسوبك عون الكيانوات (المتغيورات) التوي سويت اسوتخدامها ،وماهيوة أنواعهوا (هو ا مشوابهة لعمليوة اعوداد وجبوة عوام حيث يجب أن تحتوي الووفة ابتداءا تحديد المواد التي ستستخدم وكمياتها). • في بعض الايعازات ربما تكون هناك حاجة أن يترك أتخاذ قرار تنفي الأيعاز الى المعالج وفقا لشر أو شرو معينة تحدد مسبقا ..فمثلا (عندالقيام بالحياكة يكتب في الووفة مثلا ما يلي \"عند توفر خيو حياكة بيضاء تستخدم فوي خولاف ذلو استخدم الخيو الصفراء\"). • ربما تكوون هنواك حاجوة لتنفيو أيعواز أو مجموعوة مون الايعوازات لأكثور مون مورة. عليه الما هناك أيعاز يراد تكراره فأن عدد مورات التكورار يجوب ان تحودد .مون ممكن أنجاز ذل أما بتحديد عدد مرات التكرار بشكل دقيك أو تحديد عدد مورات التكرار اعتمادا على شر محدد مسبقا (مثلا في الحياكه نقول نستخدم الخيط ذو اللون الأبيض بقدر ثلاثين نف ة) أو بفحو حالوة تكوون مون ضومن العمليوة (موثلا يستخدم الخيط الأبيض لحين أن تنتهي من رس دائرة أو شكل معين). 2.3مدخل للبرمجة الحاسرروب هررو أداة أو ماكنررة لحررل المشرراكل ،حيرر يسررتلم البيانررات المدخلررة، ويجري عليها عمليات حساب بسرعة كبيرة ليوفر مخرجات كنتائج لعملية الحساب. تررتم السرريطرة علررى عمررل الحاسرروب بواسررطة سلسررلة مررن الايعررازات أو الأوامررر ( )Instructions OR Commandsتسمى بمجموعها برنامج (.)Program يتعامل الناس مع مهام مختلفة لغر أنجازها ،مثل ضبط الوقرت فري السراعة أو تشغيل جهاز التلفزيون وهنا أمور أكثر تعقيدا مثل عمل قالب مرن الكيرك ،ابردال حنفية ماء ،بناء فناء في الدار وهرذ الأمرور الأكثرر تعقيردا تحتراج الرى مهرارات أكثرر 27
C++من البداية إلى البرمجة الكيانية لحل المشاكل .فمثلا أن المشاكل الواجب عليك حلها عند أعداد قالرب مرن الكيرك تبردأ من اعداد الوصفة التي تتضمن ماهية المواد التي تدخل في صرناعتة وكمياتهرا ،نروع القالب الذي يجرب أن يسرتخدم وكرذلك الخطروات الواجرب اتباعهرا لاعرداد هرذا القالرب والتي تتضمن أسبقية المواد التي تضاف وكيفية خلطهرا ودرجرة الحررارة ...الر ،اذاً عليك أن تحلل المشكلة وتجد الحلول .لنبدل المطرب بعمرل أكثرر تعقيردا وهرو معالجرة مشكلة في حنفية ماء مثلا ،هنا لا توجد وصفة تتبع لأنجاز هذا العمل ،حي لا توجد وصفة تتبع لتحديد الأجزاء الواجب ابدالها والأدوات الواجرب اسرتخدامها ،ولا يوجرد دليل عمل يمثل الخطوات الواجب أتباعهرا لانجراز مثرل هكرذا عمرل ،مثرل هرذا العمرل يحتاج من الشخص الذي يقوم بالعمل (السبا ) بربعض التحضريرات المهمرة المسربقة وبعدها يقرر ما هي المرواد المطلوبرة ومرا هرو العمرل المطلروب قبرل الشرروع بالعمرل فمثلا هل المطلوب ربط الماء الحار مع البارد او يكونان منفصرلين وكيفيرة السريطرة على درجة حرارة الماء وكيفية الربط بمصادر الميا وغيرها من التفاصيل الواجرب معرفتها مسبقا وجميع ذلك يعتبر جزء من تحَي المشَِة الابتدائيَ بعدها يجرب أن يقرر ما هي الأدوات الواجب اسرتخدامها مثرل قراطع الأنابيرب ،مفراتيح الرربط والفرتح وهررل تكررون مسررننة أم ملسرراء وهكررذا .أمررا الخطرروات الواجررب أتباعهررا فهرري تمثررل الخطوات اللازمة لفتح الحنفية القديمة وإبدالها بالجديدة. أن المكونات ( )componentsالتي تستخدم في حل المشراكل تسرمى ()objects (أشررياء أو كيانااا ) .وهرري تمثررل كتررل البنرراء والادوات الترري تتفاعررل لانترراج المنررتج النهائي .نحن نرى الأشياء أو الكيانات بدلالة مواصفاتها التري تبرين ماهيتهرا ،وكرذلك الأفعرال التري تصرف مرا يمكرن أن تقروم بره هرذ الكيانرات .فمرثلا لرو عردنا الرى أمثلتنرا السابقة ..أولا أعداد قالب الكيك ..فأن قالب الكيك الذي يسرتخدم للشرواء هرو كيران لره مواصفات مثل الشكل (دائري ،مستطيل...الر ) ،عمرق القالرب (\" ،)6\" ،3\" ,2المرادة المصرنوع منهرا القالرب (المنيروم ،تفلرون ،زجراج) .كرذلك الفررن هرو كيران مرع أفعرال للسريطرة علرى الحررارة ومصردر الحررارة ،هرذا الكيران لره مواصرفات مرثلا الحجرم، مستوى الحرارة ،مصدر الحرارة (الأعلرى للشروي والأسرفل للتسرخين) ،أمرا الأفعرال 28
د .نضال خضير العبادي /جامعة الكوفة [email protected] . فهررري مررررثلا تشررررغيل وأطفرررراء الفرررررن ،أختيررررار مصرررردر الحرررررارة ،ضرررربط درجررررة الحرارة...ال . أمرا المثرال الخراص بمعالجرة مشركلة حنفيرة المراء فهنرا كيانرات مثرل روابرط الأنابيب ،المفك ،الحنفية ...وكل منها له خواص وصفات خاصة وكذلك أفعال فمرثلا المفك له قياس ،مثل طول القبضة ،حجم الفكو وهكذا ،أما أفعالها فأن فتحة فكوكها ممكن أن تنمم لتلائم حجوم مختلف الأنابيب. عندما نحدد الكيانات فأن حل المشكلة يجب أن يعررف الوسريط ( )agentالرذي يرنمم عمليرة التفاعرل برين الكيانرات لأنجراز المهمرة .فمرثلا الطبراخ الرذي يقروم بأعرداد قالب الكيك هو الوسيط فهو يقوم بمزج المرواد ،دهرن القالرب ،تسرخين الفررن ،ويحردد الوقت اللازم لبقاء قالب الكيك في الفرن. كررذلك فررأن السرربا هررو الوسرريط الررذي يزيررل الحنفيررة القديمررة ،يقطررع ويصررل الأنابيب ،ويركب الجزء الجديد مع الواشرات أو اللحيم أو أي وسيلة أخرى. أن تكنولوجيرا الكيانرات تنمرر الرى حرل المشركلة مرن منمرار الكيانرات .التحليرل الأولي يعرف الكيانات كعناصر لعملية حل المشكلة ،أما التحليرل النهرائي فأنره يخلرق خطة رئيسية أو وصفة تسمح للوسيط بترتيب أفعال الكيانات. دعنا ننمر الى حالات حقيقية تتضمن كيانات وحل لمشكلة: • نفرض أن في غرفت في وقوت متوأخر مون الليول وقوررت أن تقورأ كتابوا ،تتطلوب المشكلة مجموعة من الكيانات ..فيجب أن يكون لدي كتاأ ،وسيلة أنارة ،وربما تحتاج الوى أورا وقلو .انوت الوسويط الو ي ينيور ويطفويء الضووء ،يفوت الكتواأ وينظ كتابة الملاحظات. • جهاز التحك عن بعد يحل الكثير من مشاكل مشاهدة برامج التلفزيون .ه ا الجهاز يحتوي على لوحة مفاتي وهو كيان بينما مشاهد التلفزيون هو الوسويط المسوؤول عن تشغيل المنظ ،أختيار القناة ،وينظ الصوت. 29
C++من البداية إلى البرمجة الكيانية 2.4الحاسوأ وحل المشاكل الوسيط في عالم حل المشاكل الحقيقي يتعامل ماديا مع الكيانات .ولكرن عنردما يتدخل الحاسوب فأن العملية تتغيرر لرتلائم طبيعرة الماكنرة .الحاسروب هرو أداة حسراب تعمل مع بيانات الأرقام والأحرف ،فهو يتصف بوجود ذاكرة لخزن البيانرات ونترائج الحسرابات ،لوحرة المفراتيح لأدخرال البيانرات ،أزرار للتعامرل مرع العمليرات ،وشاشرة لعر النتائج .الحاسوب لا يشبة الحاسبة الجيبية البسيطة فهو جهاز من الممكن أن يررنمم باسرررتخدام الايعررازات المصرررممة للتعامررل مرررع حررالات مختلفرررة .أن عمليرررات الحاسروب مصرممة للتعامرل مرع سريل مرن المعلومرات حير أن البيانرات تردخل الرى الذاكرة ،اجراء عمليات الحساب ،تجهيز النتائج كمخرجات. عنردما تسرتخدم الحاسروب لحرل المشركلة فأنرك تحتراج الرى أن تركرز أنتباهرك على الكيانات (وهي بيانات) والتي لها خرواص ولهرا أفعرال تتمثرل بعمليرات الوصرول ومعالجة البيانات. الشفرة الحقيقية لبرنامجك تتكون من جزئين :المتغيرات (الكيانات) وايعرازات التنفيررذ ،المتغيرررات تسررتخدم للتعامررل مررع البيانررات المسررتخدمة بواسررطة برنامجررك. ايعازات التنفيذ تخبر الحاسوب مراذا يعمرل بالبيانرات ..توضرع المتغيررات (الكيانرات) في ذاكرة الحاسوب المخصصة للقيم C++ ،يحدد هذ المواقع من خلال أسم المتغير ويفضل استخدام الاحرف الصغيرة للمتغيرات بينما الأحرف الكبيرة للثوابت. 2.5نم جة كيانات العال الحقيقي كيانات الحاسوب تمثل ملخص لنماذج العالم الحقيقري .فري العرالم الحقيقري فرأن الطالب يعتبر كيان معقد مع خواص ماديرة مختلفرة مثرل (الجرنب ،لرون البشررة ،لرون العرررين ،لرررون الشرررعر..الررر ) ومعلومرررات عرررن السررركن (العنررروان الحرررالي ،مسرررقط الرررأس..الرر ) .وعنرردما يقبررل الطالررب فرري الجامعررة فأنرره يراجررع دائرررة التسررجيل، الحسابات ،القسم المقبول فيه وربما الرابطة الطلابية ،وكل اتصال مع الدوائر أعلا يتضمن التعامل مرع بيانرات مختلفرة ومشراكل مختلفرة للحاسروب .كرل أتصرال يتضرمن 31
د .نضال خضير العبادي /جامعة الكوفة [email protected] . بيانات خاصرة ويحتراج منرا الرى خلرق نمراذج مختلفرة للطالرب داخرل الحاسروب .فمرثلا دائرة الحسابات لا تهتم بعمر الطالب ،عنوان السكن ،الجرنب ..لكرن هرذ المعلومرات مهمررة مررثلا لرردائرة الأقسررام الداخليررة بينمررا دائرررة الحسررابات تهررتم بررالرقم التعريفرري للطالب ،طريقة دفع الأقساط أن كانت هنا أقساط...ال . الكيانات هي قوالب تتضمن الصفات والعمليات المتوفرة لرذلك الكيران .بررامج الحاسوب هي أدوات قويرة لحرل المشركلة .تبردأ بتحليرل المشركلة ،ثرم خلرق سلسرلة مرن الخطرروات الترري تقررود الررى الحررل ،هررذ السلسررلة مررن الخطرروات ترردعى خوارزميررة ( ،)Algorithmوالخوارزميررة هرري سلسررلة مررن الأفعررال والخطرروات تقررود الررى حررل للمشكلة في وقت محدد .حل المشكلة بالحاسوب يتم بواسطة الخوارزميات التي تنفرذ بواسررطة البرررامج ،ولتصررميم برنررامج يجررب أولا أن تعرررف الكيانررات الترري تخررزن وتتعامرل مرع البيانرات ،فعنردما يرتم اختيرار الكيران فأنرك تحتراج الرى تطروير برنرامج رئيب ،لره خوارزميرات تروفر المردخلات الضررورية ،وكرذلك ترترب أو ترنمم عمليرة التفاعرل برين الكيانرات وتكترب المخرجرات علرى الشاشرة .هرذا البرنرامج الررئيب هرو الوسيط لانجاز عمليات الحساب للمهام. C++ 1.6 أمكانيرة تنمريم ومعالجرة البيانرات هرو مفتراا النجراا فري الحيراة الحديثرة .صرمم الحاسوب لحمل ومعالجرة كميرات كبيررة مرن المعلومرات بسررعة وكفراءة .بشركل عرام فران الحاسروب لايمكنرة عمرل أي شريء مرالم يرتم أخبرارة مايجرب أن يقروم بره .لرذلك وجدت C++ .C++هي لغة برمجة عليا (أي قريبرة مرن لغرة الأنسران وفهمرة) والتري تسرمح لمهنردس البرامجيرات بالتواصرل بكفراءة مرع الحاسروب .وتعرد لغرة C++مرن اللغات ذات المرونرة العاليرة والقابلرة للتكيرف .ومنرذ اختراعهرا فري عرام 1981فقرد ترم اسررتخدامها لبرررامج واسررعة ومختلفررة تضرررمنت تعليمررات مخزنررة علررى الحاسررروب للمسريطرات الدقيقرة ( ،)micro controllerأنممرة التشرغيل (،)operating systems التطبيقررات ( ،)applicationsوبرررامج الرسرروم ( .)graphics programsوأصرربحت C++بسرعة لغة البرمجة التي يتم أختيارها. 31
C++من البداية إلى البرمجة الكيانية صممت C++كجسرر برين المبررمج والحاسروب .الفكررة بجعرل المبررمج يرنمم البرنامج بطريقة (هو /هي( يفهمة بسهولة .بعدها يقروم المتررجم (هرو برنرامج واجبره تحويل اللغة العليا الرى اللغرة التري يتعامرل بهرا الحاسروب) بنقرل اللغرة (البرنرامج) الرى صريغة تسرتطيع الماكنرة اسرتخدامها (التعامرل معهرا) .برنرامج الحاسروب يتكرون مرن جزئين :هيكل البيانات والايعازات .يفر الحاسوب او لايفر القليل مرن التنمريم علرى هرذين الجرزئين .بعرد هرذا كلره فران الحواسريب مصرممة لان تكرون عامرة قردر الأمكرران .البيانررات فرري الحاسرروب تخررزن كسلسررلة مررن البايتررات و C++تررنمم هررذ البايترات ببيانرات مفيردة .الأعرلان عرن البيانرات تسرتخدم مرن قبرل المبررمج لوصرف المعلومات التي (هو/هي) يتعامل معها. برامج C++تكتب بلغة عليرا باسرتخدام الأحررف ،الأرقرام ،والرمروز الأخررى التي نجدها على لوحة المفاتيح .واقعا فان الحواسيب تنفذ البرامج المكتوبة بلغرة دنيرا تدعى لغة الماكنرة (( )machine codeوالتري هري سلسرلة مرن الأرقرام ممثلرة بطريقرة الصفر ،واحد) .لذلك ،وقبل ان يتم استخدام البرنامج يجرب أن يكرون هنرا عردد مرن التحويلات .البرامج تبدأ كفكرة فري رأس المبررمج .يقروم المبررمج بكتابرة افكرارة فري ملف ،يردعى ملرف المصردر ( )source file or source codeمسرتخدما محررر اللغرة. هررذا الملررف يحررول بواسررطة المترررجم الررى (الملررف الهرردف) ( .)object fileبعرردها يستدعي البرنامج الررابط ( )linkerحير ياخرذ الملرف الهردف ليربطرة أو يشرركة مرع روتينات معرفة مسبقا مرن المكتبرة القياسرية ( )standard libraryلينرتج برنرامج قابرل للتنفيذ (والذي هو عبارة عن مجموعة من ايعازات لغة الماكنرة) .الشركل ( )1.1يبرين خطوات تحويل البرنامج المكتوب بلغة عليا إلى برنامج قابل للتنفيذ. فري لغرة البرمجرة C++فرأن البرنرامج هرو تجمياع لَادوال .والبررامج البسريطة تحتوي على دالة واحدة فقط هي (( ))mainوعادة فأن التنفيذ يبدأ عنرد ( )mainحير أن جميع البرامج بلغة C++يجب أن تحتوي على الدالة ((.))main 32
[email protected] . جامعة الكوفة/ نضال خضير العبادي.د Program File name Source code Compile Debug Library Compi programs ler Data Errors Object code file Link Linker Errors Executab le code file Run Run time errors Results خطوات تنفيذ البرنامج:) 2.2 ( شكل 33
C++من البداية إلى البرمجة الكيانية ملاحظة//: كل عبارة في لغرة C++يجرب أن تنتهري بفرارزة منقوطرة عردا بعرض الحرالات الأستثنائية التي سيشار اليها في حينها. ملاحظة//: -الايعررازات (الأوامررر أو العبررارات :)statementsتبرردو مختلفررة فرري لغررات البرمجة المختلفة ،ولكن هنا وظائف أو دوال اساسية قليلرة تمهرر فري كرل البررامج تقريبا منها: الأدخرال inputوهري عمليررة الحصرول علررى البيانرات مررن لوحرة المفرراتيح او الملفات او الأجهز الاخرى. الأخررراج outputعررر البيانررات علررى الشاشررة او ارسررالها الررى ملررف او الأجهزة الأخرى. الرياضيات mathأنجاز العمليات الرياضية الاساسية مثل الجمع والضرب. الاختبار testingأختبار بعض الشروط وتنفيذ بعض العبارات وفقا لذلك. التكرررررار repetitionأنجرررراز بعررررض الاعمررررال بشرررركل متكرررررر ،عررررادة مررررع بعض التغيرات. 2.6.2لماذا لغة C++ C++هي اللغة الاكثر استخداما في العرالم .هرذ اللغرة لهرا صرفات وخصرائص تميزها عن لغات البرمجة الاخرى ،واكثر هذ الصفات هي: • البرمجة الكيانية 34
د .نضال خضير العبادي /جامعة الكوفة [email protected] . امكانيرة تنمريم البرنرامج علرى شركل كيانرات تسرمح للمبررمج تصرميم تطبيقاتره، لتكرون اكثرر اتصرال برين الكيانرات بردلا مرن هيكرل الشرفرة المتتاليرة .فضرلا عرن انهرا تسمح بامكانيه كبيرة الى اعادة استخدام الشفرة بطرق اكثر منطقية وانتاجيه. • النقل بامكانرك عمليررا ان تترررجم نفرب شررفرة C++علررى الاغلرب فرري اي نرروع مررن الحواسيب وانممة التشغيل دون اجراء تغييرات صعبة. • الأيجاز الشفرة التي تكتب بلغة C++هي قصريرة جردا بالمقارنرة مرع اللغرات الاخررى، حي يفضل استخدام الرموز الخاصة للكلمات المفتاحية ،وهذ تخترزل بعرض الجهرد المبذول من المبرمج. • برمجة الاجزاء مرن الممكرن ان تكرون تطبيقرات C++مرن عردد مرن الملفرات لشرفرة المصردر والتي تترجم بشكل منفصل ،ثم يتم ربطها مع بعرض ،هرذا يسراعد علرى تقليرل الوقرت وليب من الضروري اعادة ترجمة كامل التطبيق عندما يتم عمرل تغييرر مفررد ولكرن فقط الملف الذي يحتوية .بالاضافة لذلك ،فان هذ الخاصية تسرمح لرربط شرفرة C++ مع الشفرة الناتجة بلغات اخرى مثل المجمع ( )assemblerاو .C • التوافك مع لغة C C++هي البوابة الخلفية للتوافرق مرع لغرة ،Cاي شرفرة تكترب بلغرة Cسريكون من السهولة تضمينها في برنامج C++دون الحاجة لاي تغييرات صعبة. • السرعة الشفرة الناتجة من تجميع C++هي كفوءة جدا ،وذلك بسبب كونها لغة ثنائية، فهي تعد من اللغات ذات المستوى العالي ومن اللغات ذات المستوى الواطيء فضلا عن صغر حجم اللغة نفسها. 35
C++من البداية إلى البرمجة الكيانية 2.7أوامر المعالج الأولي The C++ Preprocessor Commands 2.7.2الموجة #include تعد هرذ التعليمرة الأشرهر والأوسرع أسرتعمالا بعرد التعليمرة ( )#defineفري لغرة ،C++عمل هذا الموجة هو أنره يطلرب مرن المعرالج الاولري ( )preprocessorاضرافة محتويرات الملرف المطلروب مرع هرذ التعليمرة (يرذكر أسرم هرذا الملرف بعرد #include مباشرة ويكون محدد بين العلامتين (> <)) وحشرة في الملف المصدر ،حير يرتم ضرم وأحترواء هرذا الملرف مرع ملرف البرنرامج عنرد التنفيرذ ،هرذا الملرف يردعى ملرف التعليمات ،ويعود السبب في ذلك الى ان بعض الايعازات داخل البرنامج تحتاج الرى تعاريف ودوال يتضمنها هذا الملف. 2.8المعرفات Identifires كل البرامج تحتوي على نوعين من الرموز: الناوع الاول ..وهري الرماوز التاي تداود الاى الَغاة ..تسرتخدم هرذ الرمروز بطريقتين أما أن تكون على شكل رمز واحد أو أثنين مثل ()- َ+ َ() َ; َ: أو علررى شرركل كلمررات تسررمى الكلمررات المحجرروز او الكلمررات المفتاحيررة ( )KeyWordsمثل)inline َdo َwhile َelse َif( : النوع الثاني ..هي المدرفا وهي عبارة عن رموز تستخدم في البرامج فأمرا أن تكرون معرفرات قياسرية مثرل ( ,)char, int, float… etcأو أن تكرون معرفات يتم أختيارها مرن قبرل المبررمج ،وهرذ المعرفرات الأخيررة نسرميها أيضرا المتغيررات ( ،)Variablesوالمتغيار هرو رمرز أو أكثرر يسرتخدم فري البرنامج ليشير الى محتوى موقع في الذاكرة. ملاحظة//: المتغياار ..فرري أغلررب لغررات البرمجررة فررأن المتغيررر هررو مكرران لتخررزين المعلومات ،المتغير هو مكان أو موقع في ذاكرة الجهاز حي يمكن تخرزين قيمرة 36
د .نضال خضير العبادي /جامعة الكوفة [email protected] . بداخلة ثم أمكانية أستعادة هذ القيمة فيما بعد. والمتغيرر هرو أسرم يمثرل بررقم أو سلسرلة حرفيرة ( وممكرن حررف واحرد أو تعبير منطقي). من الممكن تصور ذاكرة الجهاز على أنهرا مجموعرة مرن المواقرع التري تخرزن فيها المعلومات ،هذ المواقرع مرقمرة بشركل متسلسرل تبردأ مرن الصرفر وتنتهري بحجرم الذاكرة ،تدعى هذ الأرقام عناوين الذاكرة ( ،)Addressesيمثل أسم المتغيرر (بطاقرة عنونة) ملصقة على أحرد المواقرع بحير تسرتطيع الوصرول اليره سرريعا دون الحاجرة الرى معرفرة العنراوين الحقيقيرة فري الرذاكرة (لرذا فران المتغيرر سيشرير الرى أحرد هرذ العناوين ،وعند حاجتك وضع قيمة في الموقع الذي يشير له هذا المتغير فان المعالج ( )processorسيذهب الى العنروان الرذي يشرير لره المتغيرر ويضرع فيره القيمرة وكرذلك عندما تريد أن تعرف قيمة المتغيرر فرأن المعرالج يرذهب الرى العنروان الرذي يشرير لره المتغير ويقرأ القيمة التي فيه) .يعرر الشركل الترالي هرذ الفكررة والتري تبرين بعرض المواقع في الذاكرة والتي من الممكن ان يشير اليها المتغير. شكل رقم ( :.(2.2بعض مواقع الذاكرة المنطقية ملاحظة//: لغرة C++تعرد حساسرة لحالرة الأحررف ( أي أنهرا تميرز برين الأحررف الكبيررة والصغيرة) ،لذلك فأن الحرف الصرغير يعرد معرفرا غيرر مسراوي لشركلة الكبيرر ( أي أن ( )aلا يساوي ( .))Aعلما ان بعض لغات البرمجة لاتميز بين حالات الاحرف. 37
C++من البداية إلى البرمجة الكيانية تتكرون أسرماء المتغيررات مرن \" حررف واحرد ،مجموعرة حرروف ،أو حرروف وأرقرام ومررن الممكررن اسررتخدام الشررارحة \" ..علررى أن يكررون دائمررا أول مااز باساام المتغير حرف او ا حة حتما مثل: )(x, ad, _count, endofpoint, end_of_point, Saad6, x345 هذ جميعا متغيرات مقبولة. أما المتغيرات التالية فهي متغيرات غير مقبولة: )(first name, next.word, 15may, Ten% والسبب هو أن المتغير الأول يحتوي علرى فررا ،الثراني يحتروي علرى نقطرة، الثال يبدأ برقم ،أما الأخيرر فيحتروي علرى رمرز لايمكرن اسرتخدامة مرع المتغيررات.. وهرذ جميعهرا غيرر مقبولرة فري البرنرامج .أن أختيرار المتغيرر مرن قبرل المبررمج تعرد مسرألة مهمرة ويفضرل أن يعكرب المتغيرر المعنرى الرذي يسرتخدم لأجلرة المتغيرر فمرثلا يفضل استخدام المتغير ( )sumمع الجمع وأذا ما استخدم متغير أخر فان ذلك سروف لا يررؤدي الررى أي خطررأ ،وكررذلك يفضررل أن لا يكررون المتغيررر طويررل فمررثلا يفضررل استخدام متغير متكون من حرف واحد عندما نستخدمة في برنامج قصير ولا يتكرر كثيرا ،أما استخدام متغير من حرف واحد ويستخدم بشركل متكررر وبرأجزاء متكرررة في برنامج طويل فأنه يعد أختيارا سيئا بالرغم من أنه لا يعيق عمل البرنامج. 2.9البيانات Data كل عنصر من البيانات في البرنامج أما أن تكون قيمتة ثابتة أو متغيرة ( قيمة المتغيررر ربمررا تتغيررر خررلال تنفيررذ البرنررامج) .كررل متغيررر (والررذي هررو بيانررات) فرري البرنامج يجب أن يكون لره نروع وبموجرب هرذا النروع سريتم تحديرد المسراحة الخزنيرة اللازمرة لقيمرة هرذا المتغيرر ،وكرذلك تحردد العمليرات التري ممكرن أجرااهرا علرى هرذا المتغير (تحدد لكل نوع عدد البايتات فري الرذاكرة التري تحجرز لخرزن قريم ذلرك النروع وعنرد الكتابرة فري هرذا الموقرع فران الكتابرة سرتحدد بعردد بايترات هرذا النروع أي لا يرتم تجاوز هذا العدد من البايتات حتى وان كانت القيمة تتجاوز الحدود العليا والدنيا لهذا 38
د .نضال خضير العبادي /جامعة الكوفة [email protected] . النروع ،وعنرد القرراءة فانره سريتم قرراءة القريم الموجرودة فري هرذ البايترات فقرط وبرذلك تتجنرب الخطرأ فري القرراءة والكتابرة) .والأنرواع القياسرية التري تسرتخدم فري لغرة C++ هي: 2.9.2الاعداد الصحيحة Integers الأعرداد الصرحيحة هري كرل الأعرداد الموجبرة والسرالبة التري لا تحتروي علرى كسر .فالصفر عدد صحيح و 123هرو عردد صرحيح و -45أيضرا عردد صرحيح .أمرا ( 123.345و )-1.45فهي ليست أعداد صحيحة. أن أي محاولررة لاسررتخدام قرريم خررارج نطرراق الحرردود العليررا والرردنيا ل عررداد الصحيحة سريؤدي الرى حردوث خطرأ .وبشركل عرام فرأن المتغيررات مرن نروع الأعرداد الصحيحة تستخدم اضافة الى العمليات الرياضية في العدادات والفهارس. العلاقات الرياضية التي تستخدم مع الأعداد الصحيحة هي)( + , - , * , / , % وهي على التوالي (الجمع ،الطرا ،الضرب ،القسمة ،وحساب باقي القسمة). أمثَه//: 21 / 3 = 7 9/2=4 2+3*4 = 14 هنا ينفذ داخل القوس أولا (2+3) * 4 = 20 5%2=1 7%4=3 ويصرا عن الأعداد الصحيحة بلغة C++في أي مكان داخل جسرم البرنرامج بالمعرف ( )intوالتي تعني ( )integerوهي تكتب قبل المتغيرات ،مثال ; int x 39
C++من البداية إلى البرمجة الكيانية ملاحظة//: نتيجة قسمة عدد صحيح على عدد صحيح أخر هو عدد صحيح. أما أذا كان أحد العددين هو حقيقي فأن النتيجة ستكون عددا حقيقيا ،مثال 2.0 / 3 = 0.66666667 50 / 2.0 = 25.0 ملاحظة//: فضرلا عرن الارقرام العشررية ( وهري التري أساسرها عشررة والتري تسرتخدم بالأعمال الأعتيادية ( ،))1 ..9فران C++تسرمح لرك باسرتخدام ثوابرت مرن الأرقرام وفرق النمرام الثمراني ) ( (octal numbersأساسرها )8وكرذلك أرقرام وفرق النمرام السادس عشرر )( (hexadecimalأساسرها .)16ولتنفيرذ ذلرك فراذا أردت تمثيرل رقرم بالنمام الثماني فضع ( ( )1صرفر) أمرام الررقم للدلالرة علرى أنره بالنمرام الثمراني، أما أذا وضعت ( ( ) 0xصفر ثم )xأمام الرقم فذلك يعني أن الرقم ممثل بالنمرام السرادس عشرر .المثرال اللاحرق يمثرل ثوابرت بالانممرة الثلاثرة وكرل منهرا مكرافيء ل خر (جميعا تمثل الرقم 75خمب وسبعون): نظام عشري 75 // نظام ثماني 1113 // نظام سادس عشر 1x4b // جدول ( :)1.2أنواع الأعداد الصحيحة وحجمها بالبتات انواع البيانا المــــــــــــــــدى الحجم بالبتا short -32767...32767 16 41
د .نضال خضير العبادي /جامعة الكوفة [email protected] . int -32767...32767 16 long -2147483647... 2147483647 32 unsigned short 16 unsigned 0...65535 16 unsigned long 0...65535 32 0...4294967295 2.9.1الأعداد الحقيقية Real Numbers وهي الأعداد التي تحتوي على كسور مثل ) .( 0.03 , 12.5 , -356.67890 , 10.0الأعداد الحقيقية ممكن أن تمثل بعدد صحيح وفرارزة (تسرتخدم نقطرة لتفصرل العردد الصرحيح عرن الجرزء الكسرري) ،وممكرن أن تستخدم الرمز ( )eوالذي يمثل الرقم عشرة مرفوعا الى أس معرين (الأس هرو الررقم الذي يلي الحرف (( ))eالرقم الذي يلي الحرف ( )eيجب ان يكرون عرددا صرحيحا)، مثال 3.14159 // = 3 .14159 6.02e23 // = 6.02 x 10^23 1.6e-19 // = 1.6 x 10^ -19 3.0 // = 3.0 المثال أعلا يحتوي على أربعة نماذج من الأرقام الحقيقية المقبولة فري .C++ العدد الاول يمثل (( )PIالنسربه الثابترة) امرا الثراني فهرو يمثرل عردد افوكرادرو ،الثالر يمثل الشرحنة الكهربائيرة ل لكتررون (وهرو عردد صرغير جردا) وكرل هرذ الاعرداد هري تقريبية ،اما العدد الأخير فهو يمثل الرقم ( )3ولكن كعدد حقيقي. أمررا العمليررات الرياضررية الترري ممكررن أجرااهررا علررى الأعررداد الحقيقيررة فهرري ) (+ , - , * , /وهي على التوالي (الجمع ،الطرا ،الضرب ،القسمة) .ويصرا عرن الأعداد الحقيقية في لغة البرمجة C++في أي مكان داخل جسرم البرنرامج برالمعرف ( )floatالتي تسبق المتغيرات ،مثال ;float x 41
C++من البداية إلى البرمجة الكيانية ملاحظة//: تمثل الأرقرام بطرريقتين فأمرا أرقرام صرحيحة بردون كسرر أو أرقرام كسررية. القواعد التالية تطبق عند كتابة أرقام في الحاسوب: .1الفارزة ( ),لا يمكن أن تمهر في أي مكان في الرقم. .2ممكن أن تسبق الأرقام أحد العلامتين ( )+ ، -للدلالة على كون الرقم موجب أو سالب ( يعد الرقم موجبا أذا لم تمهر أي من العلامتين على يسارة). .3يمكرن تمثيرل الأرقررام بطريقرة العلامرة العلميررة (وذلرك بأسرتبدال الرررقم ( )11 برالحرف ( .))eمرثلا الررقم ( ( 2.7 x 10 -6يكترب حسرب العلامرة العلميرة كمرا يلي ) .(2.7 e -6كرذلك فرأن العردد ( (6 x 10 12يمكرن ان يمثرل حسرب العلامرة العلمية كما يلي ) ,(6 e 12وكما وضح اعلا . ملاحظة//: يفضل عند استخدام التعريف ( ) longوضع حرف ( ) Lبعد القيمة فمثلا : ; long SunDistance = 93000000 هنا ستنتج قيمة مقدارها ( ) -12544ويعطي المترجم رسرالة تحرذير ولتجنرب ذلرك تكتب كما يلي : ; long SunDistance = 93000000L ملاحظة//: أدنررا بعررض القواعررد المهمررة الترري يجررب أن تراعررى عنررد كتابررة العلاقررات الرياضية : أن وضرع أشرارة السرالب قبرل المتغيررات هري مكافرأة لضررب المتغيرر بالقيمرة 42
د .نضال خضير العبادي /جامعة الكوفة [email protected] . ( .)-1مثلا المتغيرات ( - ) x+yمن الممكن أن تكتب )) .)-1 * (x+y يجب أن تكترب العلاقرات الرياضرية وفقرا للطريقرة التري تحرددها لغرة البرمجرة C++بحي تذكر كل العلامات الرياضية دون أختصرار .مثرال :العلاقره الرياضرية الأتيرة غيرر مقبولرة () ) 2 ( x1 + 3x2هرذ العلاقره لكري تكرون مقبولرة فري لغرة البرمجرة C++يجرب أن تكترب بالشركل الترالي ) (2 * x1 + 3 * x2) ( :العلاقرة الأولى هي التي تعودنا على استخدامها في الرياضيات. العدد المرفوع الى قيمة معينة سيضرب بنفسة عدد من المرات بقدر الأس اذا كان الاس عددا صحيحا ولا يهم فيما اذا كان الأساس سالبا أو موجبا. لايجروز رفرع القيمرة السرالبة الرى أس كسرري ( وذلرك لأن حسراب نراتج الررقم المرفوع الى أس كسري يتم بحساب اللوغراريثم ل سراس ،ويضررب هرذا اللوغراريثم برالأس ،وعنردها يحسرب معكروس اللوغراريثم ،وأن اللوغراريثم للررقم السرالب غيرر معرف لذا لايمكن أيجاد النتيجة). العمليات الرياضية لايمكن أجرااها على السلاسرل الرمزيرة .مثرال ( ) \"xyz\" + 34هذا غير مقبرول وذلرك لأن ( )xyzهرو سلسرلة حرفيرة ولريب عرددا أو متغيرا رقمي (لاحظ أنه محصور بين علامتري أقتبراس ( ) quotation markللدلالرة على أنه سلسلة حرفية). جدول ( :)2.2أنواع الأعداد الحقيقية وحجومها بالبتات نوع البيانات المـــــــــــــــــــــــدى الحجم بالبتات float 3.4x10-38.. 3.4x10+38 32 double 1.7x10-308.. 1.7x10+308 64 long double 3.4x10-4932.. 1.1x10+4932 80 43
C++من البداية إلى البرمجة الكيانية 2.9.3الرموز Characters وهري كافرة الرمروز التري تسرتخدم فري الحاسروب والتري غالبرا مرا نجردها علرى لوحة المفاتيح والتي تشمل الحروف الأبجدية سرواء كانرت حرروف كبيررة ( )A..Zأو حروفرا صرغيرة ( ،)a..zالأرقرام ( ،)1..9الرمروز الاخررى التري نراهرا علرى لوحرة المفاتيح مثرل ) (. , / , + , ! , % , & , ? … etcوتسرتخدم بشركل مفررد .ويصررا عرن الرموز بلغة البرمجة C++في أي مكان داخل جسم البرنامج برالمعرف ( )charالتري تسبق المتغيرات. أن أكثر مجاميع الحروف استخداما هما أثنان: ASCII ((American Standard Code for Information International EBCDIC )(Extended Binary Coded Decimal Information Code وكل مرنهم لره صرفاتة الخاصرة بره (لمزيرد مرن المعلومرات راجرع الملاحرق فري نهاية الكتاب). ملاحظة//: تكتب الحروف بين علامتي أقتباس مفردة ( ' ' ). عمليات الأحرف الأحرف تمثل داخل الحاسروب بواسرطة أرقرام صرحيحة وفقرا لنمرام ()ASCII تسمى الأعداد الترتيبية ( ،)ordinal numbersلذا فأن المبرمج بأمكانة أن يمرزج برين الرموز والأعداد الصحيحة بتعابير رياضية لتؤدي غاية معينة ،فمثلا 44
د .نضال خضير العبادي /جامعة الكوفة [email protected] . أذا فرضرنا أن المتغيرر الرمرزي ( )chهرو متغيرر مرن نروع حرروف وترم أسرناد قيمة له كما يأتي )'(ch = 'S عليه فأن التعبير التالي ; ch = ch + 1 سريؤدي الرى أن تكرون قيمرة المتغيرر الرمرزي ( )chتسراوي الرمرز (' ،)' T وكذلك فأن التعبير التالي ch = ch – 3 سيؤدي الى أن تكون قيمرة المتغيرر الرمرزي ( )chتسراوي الرمرز (' )' Pوهرذا يعتمد على القيم الرقمية التي تمثل الاحرف بنمام (.)ASCII ملاحظة//: الفررق العرددي برين تمثيرل الأرقرام الكبيررة والأرقرام الصرغيرة هرو (( )32اي ان الحرف الصغير اكبر من الحرف الكبير بالقيمة .)32 فمثلا أن قيمرة الرمرز ( )A = 65حسرب نمرام ( )ASCIIبينمرا قيمرة الرمرز ( )a = 97وفقا لنفب النمام .عليه فأذا كانت ; ' ch = ' E أذن ستؤدي الى أن تكون قيمة المتغير الرمزي ; ch = ch + 32 وكذلك أذا كانت قيمة المتغير الرمزي (' ) ch = ' e فأن ; ' ch = ' d ستؤدي الى أن تكون قيمة المتغير الرمزي ;ch = ch – 32 (' ) ch = ' D العدد الترتيبي للصفر هو ( )48لذا فأن الاعداد ( )1..9تأخرذ الأعرداد الترتيبيرة ) ( 48 – 57 ملاحظة//: 45
C++من البداية إلى البرمجة الكيانية الرموز تحدد بعلامة اقتباس مفرردة مثرل (‘ ) ‘ 5او (‘ } ‘ ) امرا السلاسرل الرمزيرة فهري تحردد بعلامرة اقتبراس مزدوجرة مثرل (“ ) “ 51او (“ ) “ goodبينمرا الارقرام لاتحدد باي علامة مثل ( ) 5او (.) 456 2.9.3.2رموز الدلالة Directing Characters وهري حرروف خاصرة عرادة تسرتخدم مرع الشررطة العكسرية ( )/لاعطراء ترأثير معين يلاحظ ضمن مخرجات البرنامج .الجدول ( )1.3يبرين هرذ الرمروز مرع التراثير الذي تحدثة. وهرررذ تسرررمى ايضرررا سلاسرررل الهرررروب .Escape Sequencesفالشرررارطة المعكوسة (\\) التي تسبق بعض الاحررف تخبرر المتررجم بران هرذا الحررف الرذي يلري الشرارطة المعكوسرة لريب لره نفرب المعنرى كمرا لرو ظهرر الحررف بنفسرة دون هرذ الشارطة المعكوسة (\\) .هذ السلاسل يتم كتابتها كرمرزين دون وجرود فررا بينهمرا. بعض هذ السلاسل معرفة في .C++ اذا وضعت (\\) او (“) في سلسلة حرفية ثابتة ،فانك يجب ان تهرب مرن قردرة (“) علررى انهرراء سلسررلة حرفيررة ثابتررة وذلررك باسررتخدام (”\\) ،او قرردرة (\\) للهرررب باسرتخدام (\\\\) .ان اسرتخدام (\\\\) تخبرر المتررجم بانرك تعنري شرارطة معكوسرة حقيقيرة (\\) ،وليست شارطة معكوسة لسلسلة هروب ،وان (”\\) تعني حاصرة حقيقيرة ولريب نهاية سلسلة ثابتة. لاحظ دائما تستخدم سلاسل الهروب مع حاصرتين مزدوجتين مثل (”.)“\\n جدول ( :)2.3رموز الدلالة في لغة C++ الناتج (التأثير على المخرجات) الرمز ( )Beepصوت أو صفير \\a 46
د .نضال خضير العبادي /جامعة الكوفة [email protected] . ( )Backspaceالترجيع خطوة واحدة للخلف \\b ( )form feedالتغذية \\f ( )new lineسطر جديد \\n ( )carriage returnالاعادة او الرجوع \\r ( )horizontal tabulatorالازاحة الأفقية \\t ( )vertical tabulatorالازاحة العمودية \\v ( )Backslashالشرطة المعكوسة \\\\ ()single quotaحاصرة مفردة '\\ ()double quotaحاصرة مزدوجة \"\\ 2.9.4النوع المنطقي )(Boolean النوع الاخر هرو النروع المنطقري والرذي يرمرز لره ( .)boolهرذا النروع اضريف حديثا الى لغة C++بواسطة هيئة (( )ISO\\ANSIمنممرة المقراييب العالميرة /منممرة المقاييب الامريكية الوطنية). التعابير المنطقية تشير الى واحردة مرن القريم وهري (صرح ،او خطرأ) .التعرابير المنطقية تستخدم في التفرع او حلقات التكرار والتي سندرسها لاحقا. 2.21التعابير المنطقية The Boolean Expressions وهي التعابير التي تمثل نتيجتها بحالة واحدة من أثنترين وهمرا (صرح أو خطرأ) ( َ)true OR falseوهنا ثلاث عوامل منطقية وهي (.)Notَ Orَ And التعبير المنطقي يعيرد القيمرة ( )1عنردما يكرون التعبيرر ( )TRUEوالقيمرة ()1 عندما يكون التعبير ( .)FALSEوهي تسرتخدم لوصرف أي تعبيرر فيمرا أذا كران صرح أو خطرأ .أن أنرواع المتغيررات التري تسرتخدم لهرذا الغرر يصررا عنهرا فري حقرل المتغيررات بالدالرة (( )boolهرذ عرادة لاتجردها فري جميرع نسر C++وانمرا النسر الحديثة فقط). فمثلا عندما نعرف العبارة التالية على أنها من نوع القيم المنطقية كمايأتي 47
C++من البداية إلى البرمجة الكيانية ; )bool c = (a= =b نلاحظ هنا اننا استخدمنا علامة المساواة للدلالة على ان نتيجة الطرف الايمن ستؤول الى المتغير في الطرف الأيسر بينما اسرتخدمنا العلامرة (==) وهري تسرتخدم لعمليات فحص المااواه ,فاذا كان ( )b ، aمتساويان فان ( )cستكون قيمتها تسراوي ( )trueوبخلاف ذلك تكون قيمتها تساوي (.)false 2.22.2العمليات المنطقية Logical Operators هنرا ثلاثرة أنرواع مرن العمليرات المنطقيرة وهري ( )NOT َ OR َ ANDكرل منهرا يتعامرل مرع التعرابير الشررطية (أي التري تحتروي شررط) .كرل واحرد مرن هرذ التعابير له تأثير مختلف على التعابير الشرطية .أدنا أمثلرة تبرين كيفيرة اسرتخدام هرذ التعابير والتي من الممكن أن تستخدم بين تعبيرين أو أكثر من التعابير الشرطية. AND العامل (&&) يستخدم للدلالة على العامل المنطقي ( )andفري لغرة C++وهرو يستخدم لمقارنة تعبيرين لتحصل علرى نتيجرة منطقيرة مفرردة ،والنتيجرة التري تحصرل عليها تحدد بجدول الصدق ( )1.4ادناة جدول ( :)2.4جدول الصدق للعامل (و) (&&( ))And A B A && B 48
د .نضال خضير العبادي /جامعة الكوفة [email protected] . A B A && B true true True true false false false true false false false false OR العامرل ( || ) يسرتخدم للدلالرة علرى العامرل المنطقري ( )orفري لغرة C++وهرو يستخدم لمقارنة تعبيرين لتحصل علرى نتيجرة منطقيرة مفرردة ،والنتيجرة التري تحصرل عليها تحدد بجدول الصدق ( )1.5ادنا : جدول ( :)2.5جدول الصدق للعامل (أو) (||( ))Or A B A || B true true True true false True false true True false false False النتيجة خطأ (صح && خطأ) ( (5 = = 5) && (3 > 6)) // النتيجة صح (صح || خطأ) ( (5 = = 5) || (3 > 6)) // NOT لاحظ في لغة C++فان العامل ( ! ) يمثل العامل (لا) ) (notوهو يأخذ معامل واحد يتواجد في يمينة والعمل الوحيد الذي يقروم بره هرو عكرب قيمترة (قيمرة المعامرل الذي على يمينة) فاذا كانت قيمتة (صح) تصربح خطرأ واذا كانرت خطرأ تصربح صرح. نتيجة استخدام العامل (لا) موضحه بالجدول ()1.6 جدول ( :( 2.6جدول الصدق للعامل (لا) (!( ))Not 49
C++من البداية إلى البرمجة الكيانية A !A مثال//: true False false True النتيجة تصبح خطأ لان التعبير ) (5==5هو صح !(5==5) // النتيجة تصبح صح لان ) (6<=4هي خطأ !(6<=4 ) // النتيجة تصبح خطأ !true // النتيجة تصبح صح !false // ملاحظة//: مرن الممكرن ان تسررتخدم عوامرل العلاقررات المنطقيرة للمقارنرة بررين قيمترين ومررن الممكن ان تكون هذ القيم من أي نوع من أنواع البيانات مثل ( ،)float, int, char…etcاو ممكن أن تكون ( كما سنرى لاحقا) اصرنافا معرفرة من المستخدم. أن نتيجرة المقارنرة أمرا أن تكرون ( صرح او خطرا) ( .)true ،falseفمرثلا العبرارة التالية ; cout << 5 < 23 ستطبع القيمة ( )1لان العبارة صحيحة ..اما العبارة التالية ; cout << 45 > 60 ستطبع القيمة ( )1لان النتيجة خاطئة ملاحظة//: 51
د .نضال خضير العبادي /جامعة الكوفة [email protected] . العامل ( ) NOTيختلف عرن العراملين السرابقين اذ أنره يتقبرل مردخلا واحردا ودائمرا يعكرب حالرة العبرارة التري يردخل عليهرا فرأذا كانرت صرحيحة يجعلهرا خاطئره وأن كانت خاطئة يجعلها صحيحة. ملاحظة//: أن أسناد قيمة لمتغير من نوع معرين خرارج المردى المحردد لره سريؤدي الرى حردوث خطرأ ،هرذا الخطرأ أمرا أن يوقرف التنفيرذ أو يرؤدي الرى ظهرور نترائج غيرر متوقعة. 2.22الأعلان عن المتغيرات Declarations يرتم الاعرلان عرن المتغيرر وذلرك بران يرتم كتابرة النروع أولا ثرم يتبرع ذلرك اسرم المتغير والذي يجب ان يخضع للقواعد المذكور mانفا فمثلا: ;int a ; float mynum وبالأمكان الأعلان عن أكثر مرن متغيرر مرن ذات النروع برنفب الطريقرة أعرلا على أن تفصل فارزة بين أسم متغير وأخر ،مثال: ; int x ،y ،z وهذ تكافيء الأعلان التالي ; int x ; int y ; int z الطريقتان صحيحتان والفرق هو ان الأولى أكثر اختصارا. ملاحظة//: 51
C++من البداية إلى البرمجة الكيانية بالامكران اسرتخدام ( )unsigned ،signedلوحردهم ،وتعنري انهرا مرن نروع الاعرداد الصحيحة مثال ; unsigned nextpage ; unsigned int nextpage العبارتان متكافأتان 2.21الثوابت Constants في بعض البرامج تحتاج الى استخدام قيم ربما تكون معروفة مسبقا قبل تنفيذ البرنامج ولا يمكرن أن تتغيرر داخرل البرنرامج مثرل النسربة الثابترة ( )Лوالتري قيمتهرا ) (3.1415926585هذ القيم الثابتة سواء كانت ذات قيمة معروفة مسبقا أو أي قيمرة ممكرن أن تسرند الرى متغيرر ،جميعهرا ممكرن أن يعلرن عنهرا فري أي مكران مرن جسرم البرنامج وباحدى الطرق التالية ،الأعلان عنها (باستخدام الكلمة المفتاحيرة (،)const اسرتخدام الكلمرة المفتاحيرة ( ،)enumأو باسرتخدام الموجرة ( ))#defineوالتري تسربق أنواع البيانات للمعرف المراد تعريف قيمتة على انها ثابتة. ملاحظة//: المعرفات التي تعرف على أنها ثوابت لا يمكرن ان تتغيرر قيمهرا أثنراء تنفيرذ البرنامج بأي شكل من الأشكال. const وهي تسبق انواع البيانات لتعرف واحد او أكثر من المتغيرات على أنها ثابترة وفقا للصيغة القواعدية التالية: ; const TYPE variable_name = value مثال: ; const float Pi = 3.1413926535 52
د .نضال خضير العبادي /جامعة الكوفة [email protected] . ; ' const string Error = ' Run_Time Error Enum وهري تسرتخدم لتعريرف قائمرة مرن المتغيررات علرى أنهرا ثابترة وفقرا للصريغة القواعدية التالية: ;}enum TYPE {CONSTANT1=value ،CONSTANT2 = value,... وسناتي عليها لاحقا لتوضيح عملها بشكل اكثر تفصيلا الموجة (التدَيمة) #define وهري تقروم بتعريرف رمروز كثوابرت ،وبرالرغم مرن عردم شريوع اسرتخدام هرذا الهيكررل فرري لغررة ) ،(C++ولكررن بالامكرران اسررتخدامة لتعريررف المتغيرررات الحسررابية أو الرمزيرة فري بدايرة البرنرامج وتعرو قيمتهرا الحسرابية أو الرمزيرة فري أي مكران تذكر فيه هذ الأسماء في البرنامج وتستخدم الحروف الأبجدية الكبيرة عادة لتعريف أسماء هذ المتغيرات .مثال: #define TRUE 1 #define PI 3.1415927 #define EOF -1 ملاحظة//: هذا الهيكل شائع في لغة ( ،)Cوان كل ما موجود فري لغرة ( )Cممكرن اسرتخدامة في لغة .. C++العكب ليب صحيح ملاحظة//: من الممكن الأستعاضة عن ) ( #defineبالكلمة المفتاحية ( ( constمثال 53
C++من البداية إلى البرمجة الكيانية const TRUE = 1 const PI = 3.1415927 مع ملاحمة استخدام علامة المساواة 2.21.2أسباأ استخدام الثوابت: • أذا كان هناك عدد يستخدم بشكل متكورر داخول البرنوامج فوأن المبورمج يفضول أن يصفة بأس يشار اليه على أنه يحمل قيمة ثابتة. • من الممكن اسوتخدام الثوابوت لتسومية متغيورات مون نووع السلاسول الرمزيوة والتوي تستخدم بشكل متكورر فوي مخرجوات البرنوامج وهوي فوي جميوع الأحووال تسوتخدم لتسهيل العمل البرمجي. مثال: نفر أننا نحتاج الى طباعرة أسرم جامعرة مرثلا بشركل متكررر فري البرنرامج، ممكن أن نقوم بمايأتي: ; “ const string University = “Al _ Kufa University ; “const string Underline = “--------------------------- الأن من الممكن استخدام الأسماء المعرفة كثوابت في البرنامج وكما يأتي: ; cout << University << endl ; cout << Underline 54
Search
Read the Text Version
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209
- 210
- 211
- 212
- 213
- 214
- 215
- 216
- 217
- 218
- 219
- 220
- 221
- 222
- 223
- 224
- 225
- 226
- 227
- 228
- 229
- 230
- 231
- 232
- 233
- 234
- 235
- 236
- 237
- 238
- 239
- 240
- 241
- 242
- 243
- 244
- 245
- 246
- 247
- 248
- 249
- 250
- 251
- 252
- 253
- 254
- 255
- 256
- 257
- 258
- 259
- 260
- 261
- 262
- 263
- 264
- 265
- 266
- 267
- 268
- 269
- 270
- 271
- 272
- 273
- 274
- 275
- 276
- 277
- 278
- 279
- 280
- 281
- 282
- 283
- 284
- 285
- 286
- 287
- 288
- 289
- 290
- 291
- 292
- 293
- 294
- 295
- 296
- 297
- 298
- 299
- 300
- 301
- 302
- 303
- 304
- 305
- 306
- 307
- 308
- 309
- 310
- 311
- 312
- 313
- 314
- 315
- 316
- 317
- 318
- 319
- 320
- 321
- 322
- 323
- 324
- 325
- 326
- 327
- 328
- 329
- 330
- 331
- 332
- 333
- 334
- 335
- 336
- 337
- 338
- 339
- 340
- 341
- 342
- 343
- 344
- 345
- 346
- 347
- 348
- 349
- 350
- 351
- 352
- 353
- 354
- 355
- 356
- 357
- 358
- 359
- 360
- 361
- 362
- 363
- 364
- 365
- 366
- 367
- 368
- 369
- 370
- 371
- 372
- 373
- 374
- 375
- 376
- 377
- 378
- 379
- 380
- 381
- 382
- 383
- 384
- 385
- 386
- 387
- 388
- 389
- 390
- 391
- 392
- 393
- 394
- 395
- 396
- 397
- 398
- 399
- 400
- 401
- 402
- 403
- 404
- 405
- 406
- 407
- 408
- 409
- 410
- 411
- 412
- 413
- 414
- 415
- 416
- 417
- 418
- 419
- 420
- 421
- 422
- 423
- 424
- 425
- 426
- 427
- 428
- 429
- 430
- 431
- 432
- 433
- 434
- 435
- 436
- 437
- 438
- 439
- 440
- 441
- 442
- 443
- 444
- 445
- 446
- 447
- 448
- 449
- 450
- 451
- 452
- 453
- 454
- 455
- 456
- 457
- 458
- 459
- 460
- 461
- 462
- 463
- 464
- 465
- 466
- 467
- 468
- 469
- 470
- 471
- 472
- 473
- 474
- 475
- 476
- 477
- 478
- 479
- 480
- 481
- 482
- 483
- 484
- 485
- 486
- 487
- 488
- 489
- 490
- 491
- 492
- 493
- 494
- 495
- 496
- 497
- 498
- 499
- 500
- 501
- 502
- 503
- 504
- 505
- 506
- 507
- 508
- 509
- 510
- 511
- 512
- 513
- 514
- 515
- 516
- 517
- 518
- 519
- 520
- 521
- 522
- 523
- 524
- 525
- 526
- 527
- 528
- 529
- 530
- 531
- 532
- 533
- 534
- 535
- 536
- 537
- 538
- 539
- 540
- 541
- 542
- 543
- 544
- 545
- 546
- 547
- 548
- 549
- 550
- 551
- 552
- 553
- 554
- 555
- 556
- 557
- 558
- 559
- 560
- 561
- 562
- 563
- 564
- 565
- 566
- 567
- 568
- 569
- 570
- 571
- 572
- 573
- 574
- 575
- 576
- 577
- 578
- 579
- 580
- 581
- 582
- 583
- 584
- 585
- 586
- 587
- 588
- 589
- 590
- 591
- 592
- 593
- 594
- 595
- 596
- 597
- 598
- 599
- 600
- 601
- 602
- 603
- 604
- 605
- 606
- 607
- 608
- 609
- 610
- 611
- 612
- 613
- 614
- 615
- 616
- 617
- 618
- 619
- 620
- 621
- 622
- 623
- 624
- 625
- 626
- 627
- 628
- 629
- 630
- 631
- 632
- 1 - 50
- 51 - 100
- 101 - 150
- 151 - 200
- 201 - 250
- 251 - 300
- 301 - 350
- 351 - 400
- 401 - 450
- 451 - 500
- 501 - 550
- 551 - 600
- 601 - 632
Pages: