مدخل 1
سلسلة من المؤشرات.
مثال 1
عيوب هذه القائمة
قولب الكائنات .
استخدام القوالب مع القائمة المرتبطة.
استخدام القوالب مع قائمة أكثر تعقيداً.
-١١ التعامل مع الاستثناءات.
بداية
التعامل مع الاستثناءات.
مثال عملي
كتل 00100 متعددة
مثال عملي
2- التعامل مع الملفات
بداية
الملف © /1 1516 101081160
بارامترات الدالة علا
التعامل مع الأصناف والكائنات
التعامل مع الملفات والكائنات بطريقة أكثر تقد
الدالة ( )0080.
التنقل داخل الملفات
كيف تجعل الكاثنات أكثر تماسكاً.
تضمين أوامر التعامل مع الملفات داخل الأصناف .
الأخطاء عند استعمال الملفات...
3- مكتبة القوالب القياسية
مقدمة إلى الحاويات
كائنات التكرار
القوائم
الحاوية مبوع
بعض لتوابع الأعضاء الآخرين
الحاويات الترابطية
الخريطة 0ف10
خوارزمية البحث .0 .
خوارزمية الترتيب أو الفرز..
بسم الله الرحمن الرحيم
الحمد الله رب العالمين والصلاة والسلام علي المبعوث الأمين رحمةٌ للعال
اللغة أوسع من أن يضمها ولو مجلد كبير ؛ فهي واسعة لدرجة لا يكاد بتصورها عقل
٠» وتتدخل بكافة المجالات في علوم الحاسب وإن شابتها ضعف المقروئية وقلة
الإنتاجية ؛ وقد حددت لنفسي شهران ونصف الشهر حتى أنهي ما أعتزمت فعله إلا
أذي لم أتصور أن يكون تأليف كتاب يتحدث عن أساسيات أي علم سيكون بهذه
الصعوبة وبهذا الجهد , لذلك قلصت فهرس الكتاب ونظمت ما كان في الأمس مسودة
نفسي والشيطات وإن لم يكن فهذا بفضل ربي عز وجل .
تزيد صفحات هذا الكتاب عن 270 صفحة ؛ ولا يتناول هذا الكتاب إلا مبادئ اللفة
وأساسياتها وليس مواضيعها المتقدمة أو بالأحرى تخصصاتها البرمجية كبرمجة
الشبكات والنظم وغيرها ؛ وبطيب لي أن أصحبك في نظرة عامة لهذا الكتاب
وقد عزمت فيها ألا تكون نظرية لدرجة مملة ؛ كما هو حاد أغلب الكتب ؛ وهذة
الوحدة تبداً فوراً بكود بسيط للغاية ثم يتم شرحه فيما بعد ؛ وعلى الأقل فهذهة
طريقة أبجد هوز لتعلم اللغة العربية والتي استخدمها العرب القدامى ؛ لم أركز في
هذه الوحدة على معلومات نظرية تفصيلية مملة بل ركزت على الجانب الكودي
وتطبيق الجانب النظري ؛ فلم أرد الوقوع في عيب الفصل بين النظرية والتطبيق كما
هو حال الكنيرين ؛ وبالرغم من حرصي على ما قلت ؛ فتعتبر هذه الوحدة أصعب وحدة
قمت بتأليفها في الكتاب ؛ أقصد من ناحية التليف.
في الوحدة الثانية "بدي التحكم” تعرضت لمواضيع أكثر تقدماً نسبياً بالنسبة للوحدة
الأولى وي بنى التحكم التي تمكنك من كتابة الخوارزميات ؛ وقد أطلت في كتابة
الوحدة الأولى ؛ تتناول هذه الوحدة الحلقات التكرارية 108 و 118 » .. وغيرها بالإضافة
إلى تناولها للمكتبة نف .
في الوحدة الثالنة "المصفوقات والسلاسل" تناولت موضوع المصفوفات وبعض تقنياتها ؛
بإمكانك إنشاء ما هو أفضل منها ؛ وتناولت في نهاية هذه الوحدة موضوع السلاسا
في لغة السي القديمة ؛ نظراً لأن بعض المشاكل لا يتم حلها إلا بها وأيضاً بعض توابع
في الوحدة الرابعة "المؤشرات 20101825 حاولت قدر جهدي ألا تكون هذه الوحدة
غامضة كغموض موضوعها ؛ تعتبر المؤشرات تقنية فعالة للغاية وبداية لك للتفكير
الوحدات الأربع السابقة تعتبر صغيرة نسبياً ولليس كمثل الوحدات القادمة ؛ قد
يشاطرني البعض في تقسيم الكتاب بهذه الطريقة وقد لا يشاطرني الآخرون ؛ عموماً
هذا رأِي وأتمنى أن يكون صحيحاً.
تعرض الوحدة الخامسة موضوع "التوابع 101001100" حينما تعمل على برنامج كبير
تصميم البرنامج فكل تاب سيقوم بمهمة بسيطة مما يمكنك من تطوير البرنامج على
مراحل وليس على مرحلة واحدة كما هو الحال في الوحدات السابقة ؛ تتعرض هذه
العلاقات بين الكائنات والتصميم الموجه ولغة النمذجة الموحدة 11300 ؛ إلا أن رأبي
أيضاً هناك بعض الملاحق في الكتاب ومنها الملحق "ج” والذي يعرض لك موضوع
المعالج التمهيدي والذي أردته أن يكون وحدة كاملة إلا أن الوقت لم يسعفني سوىف
هذا الكتاب يركز على البساطة والسهولة وقد حاولت تجنب الشرجح الممل الذي لا
طائل منه وركزت أكثر على أن تكون المعلومة أكثر تشويقاً دون أن تكون على حساب
الناحية العلمية.
ققدم
وهذه النافذة تستتمر لأغراض كتابة الكود.
أرجو من قراء هذا الكتاب إبداء آرائهم أو على الأقل تنبيهي إلى الأخطاء التي ارتكبتها
ما أتخيط فيه من المصطلحات هو مصطلح ال 10001100 حيث تارةٌ أرمز له بالتابع وتارة
أخرى أرمز له بالدالة.
++© ؛ فكل ما عليك هو الذهاب النقر على ملف أو 1516 بعد تشغيل البرنامج ثم
إلى جديد أو 186 ثم عبر علامة التبويب 10185 اختر 1516 800708 ++ ثم
أكتب الكود الذي تود كتابته وبعد انتهاءك أنقر على الخبار 130110 ومنه إلى المترجم
يتم تشغيل برنامجك.
سلطان محمد خميس الثبيتي
طالب في جامعة الطائف
الخطوة الأولى
ولتعلم أن أفضل طريقة لتعلم أي لغة برمجية هي البداً قوراً بكتابة
(صتفه .2
الكود أعلاةه يطبع لك الجملة +0 نيز . دعنا نقوم الآن بشرخ الكود
السابق
هذا السطر . هذا السطر يخبر المترحم بأن يقوم بتضمين المكتبة 10508001
في البرنامج . والمكتبة 1051:0000 هي التي تقوم بعمليات الإدخادل
والإخراج في برامج السي بلس بلس؛ حتى تفهم كيف ننطق مثل هذا
السطر فإن # تنطق باوند أو هاش وهي تعني موحه ثم كلمة 10201006
والتي تعني تضمين ثم نلفظ المكتية 10510000 وهي في الأساس اختصار
للجملة 6280:: اماه ١م10 أي أن السطر الأول يقوم بتوحيه المترحم
ليفوم بتضمين المكتبة :105138000 في البرنامج
تستطيع أنت أن تقوم بكتابة دوال أخرى غير ال ( )0010 لكن البرنامج لن
يعمل إلا بوحود هذه الدالة فهي اللب الأساسي لأي برنامج وكما تلاحظ
في السطر السادس : بينما جميع العبارات والجمل والأوامر التي ببن قوس
الإعلاق والفتج هي جسم الذالة (١ )0810 وبالطبع فلن يمكنك أن تقوم
بكتابة أوامر خارج ما يحتويه هذين القوسين.
في السطر الأول قمنا بالطلب من المترحم أن يقوم بتضمين المكتبة
الكائن 0001 يختص بالمخرحات . أي إذا أردت إخراج أي كتابات على
معامل . مثله مثل عملية الجمع أو الطرج ويسمى معامل الإخراج حيث
يقوم بعمليات الإخراج أي أن جميع ما ستكتبه لاحقا سيقوم الكائن تناه
بإخراجه. بعد ذلك كتبنا الجملة المراد إخراحها ألا وهي +63 1151 ويجب
عليك أن تنتبه إلى أن الجملة المطبوعة على الشاشة بين علامتي تنصيص
هكذا ( ++ :110 ) بعد ذلك وضعنا العلامة الفاصلة المنقوطة : لنخبر
المترحم أن الأمر انتهى وعلبه أن بذهب إلى الأمر التالي.
حيث تكتب الكلمة 0 201020 , لن نناقش حاليآ ماذا يعني هذا الأمر ولكن
احرص على كتابته في أي كود تكتبه , ولاحظ مرة أخرى أن في نهاية
الأمر ينتهي بالعلامة :
من أحد الأخطاء الشائعة أن تقوم بتعديل السطر الثالث وجعل القوس
من أحد الأخطاء الشائعة موحودة في السطر الخامس حيث يقوم المبتدئين
في البرمجة بتبديل الرقم 0 بالحرف 0 . هذا خطاً وتذكر أنه خطاً شنيع
تقوم بكتابة أوامرك بأحرف كبيرة هذا خطاً . فالأمر هنا لبس مثل لغة
إلا أن الأمر هنا مختلف فلغة السي بلس بلس حساسة لحالة المحارف
فالكلمة التي تحتوي على أحرف كبيرة مختلفة عن الكلمة التي نحتوي
على أحرف صغيرة وأغلب برامج السي بلس بلس تحتوي على أحرف
صغيرة وليس أحرف كبيرة , لذلك تذكر هذا الخطاً فجميع مبتدثي البرمجة
قد يصبح الأمر وسواسيا للغاية حينما تقوم بكتابة الكود السابق فسوف
غم "جيم 1ف" يه توه
م سام ص
والكودين صحيحان إلا أن الكود السابق أفضل للفهم وأوضج وليس مثل
الكود أعلاه , لذلك احرص على جعل أكوادك منظمة وليست طلاسم
سحرية ولا توسوس في أمر المساقات البيضاء والعلامات وفيرها.
دخلت في مواضيع متقدمة وقمت بكتابة برامج أكثر تطوداً.
الخطوة الثانية
بالنسبة للخطوة الثانية فهذه المرة سنقوم بكتابة كود بسيط ولكنه متقدم
بالنسيبة لأي مبتدئٌ برمجة ألا وهو عبارة عن كود بيقوم بجمع عددين تقوم
"ها تععطسيه اوعاء قط" >> عاتم 5
رفسم << مته 8.00
لا مشكلة لديك بالنسبة للأسطر ١ و 2 و9 3و 10 و11 ؛ إذا لم تفهمها فارجع
إلى فقرة الخطوة الأولى.
كما قلنا فالمطلوب أن يقوم مستخدم البرنامج بإدخال عددين اثنين ؛ آلا
تلاحظ معي أن هذات العددان في لغة الرياضيات هما متغيرات اثنين +
الامر نفسه بالنسبة للبرمجة فعلينا أولاً اعتبار هذان العددات متغيرانت
وبالتالي نطلب من البرنامج أن يقوم بحجز ذاكرة لعددين اثنين ثم إذا قام
مستخدم البرنامج بإدخاد عددين قإن البرنامج يفوم بأخذ العددين
وتخزينهما في موقع الذاكرة الذي طلبنا من البرنامج حجزهما في البداية .
١ه والثاني هو 001002 . الآن كيف يعلم البرنامج أن 011ن0ه و 010002 هما
عددات بإمكانه فعل ذلك عن طريق أول كلمة في السطر الرابع آلا وي
1 وهي إختصار للكلمة :101286 أي الأعداد الصحيحة والاختصار 101 هو
عبارة عن نمط بيأنات بإمكانك عن طريق تغيير الكلمة :10 إلى 00073 اعتبار
المتغيران 1 00:00 و 010002 عبارة عن حرقين اثنين وليس عددين. لاحظ أيضاً
أن هناك فاصلة غير منفوطة ( . ) بين اسمي المتغيران وهذه ضرورية
فكيف بعرف البرنامج أنك انتهيت من كتابة اسم المتغير الأول , ولاحظ معي
الآن هناك ملاحظة حديرة بالاقتمام وقي أنه بإمكانك تعديل السطر
رسيم غصة .2
والطريقتين صحيحتان إلا أن الطريقة الأولى أفضل بسبب أنها مختصرة.
تفهمهما فارجع إلى فقرة الخطوة الأولى ؛ إلا أن هناك أمراً بالغ الأهمية؛
لاحظ معي الجملة التي طلبنا من البرنامج طباعتها:
حتى نوضخ لمستخدم البرنامج أن عليه إدخال العدد الأول أو العدد الثاني
حسب السطر السابع ؛ ولكن هل ترى آخر الجملة السابقة أقصد هذه
العلامة في الحقيقة إختصار , فهذه العلامة ١١ تطلب من مؤشر الكتابة أن
يذهب إلى سطر حديد وبالتالي فحينما يقوم مستخدم البرنامج بإدخادل
العدد الاول فلن قوم بإدخاله بجانب الجملة الشابقة بل في السطر التالي
من الجملة السابقة. :
العلامة ٠١ هي تقنية فعالة لتمثيل المحارف غير المرتية أو تلك التي
تصعب طباعتها فالفعل الذي تقوم به أشبه ما يكون بالضغط على الزر
711 على لوحة المفاتيج وأنت في محرر 17051 أي أن مؤشر الكتابة
بعكس السطران الخامس والسابع فإن هذان السطران يطلبان منك إدخادل
عددين اثنين . حيث يقوم المترحم بأخذ العدد الذي تقوم بإدخاله في
السطر السادس ويضعه في المتغير ١ 00:10 ويأخذ العدد الذي تقوم بإدخاله
في السطر النامن ويضعه في المتغير 001002 ؛ هذه هي الفكرة ؛ أما حود
الكيفية فهل تتذكر المكتبه «:1051:20 والكائن 000:1 وما يقومان به ؛ قالأمر
هو هنا نفسه . فهناك كائن حديد يختص بالإدخال هو «0 وينطق هكذاً
(سي إن ) بعد ذلك نستخدم معامل الإدراج وهو هكذا < < ولبس معامل
الإخراج الخاص بالكائن :01 . ثم نكتب اسم المتغير الذي نريد من
المستخدم أن بقوم بإدخال قيمة هذا المتغير.
الوحدة للقوالب التحميل الزائد والتي هي أحد التغنيات الجديدة في لغة السي بلس
تعرض الوحدة السادسة موضوع " الكائنات 001801 ” وهي في الحقيقة تحاودل
إفهام القارئ ميداً تجريد المعطيات وفائدته على مستوى البرمجة ؛ في هذه الوحدة
تبداً بالسيطرة أكثر فأكثر على اللغة من خلال مبادئ البرمجة الشيقية أو الكاثنية .
ولم أركز في هذه الوحدة إلا على كيفية تصميم الكائن والأساليب الأمنة ولو لمحت
تعرض الوحدة السابعة موضوع "التحميل الزائد للمعاملات غ010 0760100 :008:10
تليمك كيفية إنشاء أنواع جديدة من البيانات بواسطة التحميل الزائد
للمعاملات فبإمكانك صناعة أنواع خاصة بك , وفي نهاية الوحدة تعرضنا (أقصد هنا
المؤلف الذي هو أنا والقارئ الذي هو أنت) لمثال بسيط للغاية وهو عبارة عن نوع
جديد من الأنماط وهو نمط الاعداد الكسرية 11801600 وبالرغم من بدائية الصف إلا أنه
يعتبر فرصة مناسبة لك للتعرف أكثر على البرمجة الكائنية وإستقلالية الصنف عما
تعرض الوحدة النامنة موضوع "الصنف 813108 ” حيث تجد الفرق الكبير بين السلاسل
في لغة السي ومعالجتها التي تعرضنا لها في الوحدة الثالئة ومعالجة السلاسل في
لغة السي بلس بلس ؛ حيث تناولت الوحدة أغلب مميزات الصنف 818108 ؛ وأتمنى
نك في هذه الوحدة أن تتطلع أكثر وأكثر على إمكانات البرمجة الكائنية وفائدتها
والحلول التي تقدمها والتي تعجز لغات البرمجة الهيكلية أو تدقع ثمناً غالياً للقيام
بنفس العمليات. :
تعرض الوحدة التاسعة موضوع "الوراثة 1011811108008 " وهو المبداً الثاني من مبادئٌ
البرمجة الكائنية ؛ لم أتعرض في هذه الوحدة أو في هذا الكتاب لموضوع الورانة
الخاصة ولا سبب لذلك إلا قصر الوقت في تأليف الكتاب ولم أتعرض بشكل أكثر عمقاً
لمبداً تعدد الأوجه فلم أتناول منه إلا الأساسيات وأيضاً لم أتناول تابع النسخة
الظاهري وطريقته ؛ وبالرغم من هذا القصور إلا أن هذه الوحدة تعتبر بداية جيدة لك
تعرض الوحدة العاشرة "مقدمة في القوائم المترابطة :115 101680 " وهو أحد
الخدمات التي تقدمها لغات البرمجة الكاثنية بشكل جيدٍ ؛ وهذه الوحدة لا تدور إلا في
مثاد واحد يتم شرحه وتطويره على ثلاث مراحل , لم أتعرض في هذه الوحدة إلى
بذى معطيات أكثر تقدماً كالأش جار و: د الوحدة بداية جيدة لك للتعامل مع بنى
تعرض الوحدة الحادية عشر موضوع "التعامل مع الاستتناءات 11005مم566 ع هت ف ص11
” وتتناول هذه الوحدة الموضوع من ناحية قيكلية ثم تتطور حتى ترى كيفية
استخدامه من ناحية كاثنية أو على مستوى الكائنات وبالرغم من ذلك فلا تزال هذه
الوحدة تقدم لك القليل إذا ما أردت التطور أكثر وأكثر.
تعرض الوحدة الثانية عشر موضوع "التعامل مع الملفات 1165 طتتلا ع متا ة فيز "
وتتناول هذه الوحدة الموضوع من بدايته حيث تبداً من تطبيقه على مستوى التوابع ثم
كائنياً بحتاً فقد تحتاج لتخزين متغيرات في ملفاتك وليس كاثنات ؛ وبالرغم من تطور
هذه الوحدة إلا أنها لمم تتناول كيفية تخزين الكائنات لمتوارثنة.
تعرض الوحدة الثالتة عشر موضوع ” مكتبة القوالب القياسية 1816م 160 5180020
11078 ” وبالرغم من كبر حجم الموضوع وكبر حجم هذه المكتبات إلا أن هذه الوحدة
تحاول أن تبين لك أوجه الشبه بين هذه المكتبات وكيفية أن تستفيد منها دون أن
يكون هناك أمثلة حقيقية في هذه الوحدة.
تعرض الوحدة الرابيعة عشر موضوع "مثال عملي" حرصت في هذه الوحدة أن يكون
المثال الذ
ي سأتناوله شاملاً لموضوع البرمجة الكاثنية وقد تعرضت مرة أخرى
لمشكلة قصر الوقت وقد أردته أن يكون مثال آلة حاسبة كاملة ؛ حتى يفهم القارئ