Jump to content
منتدى البحرين اليوم

لمن يريد تعلم سي ++


Recommended Posts

الاحظ بالجامعة و المنتدى الكثير من الذين يجدون مصاعب بالسي بلس بلس

و انا اجده سهلة و لكن ربما الصعوبة عندهم في عدم الالمام باللغة الانجلينزية و هنا سأضع لمن يريد تعلم ترجمة السي بلس بلس دروس بالعربية..

 

و اي شخص يريد المساعدة فأنا مستعدة للمساعدة و شكرا

 

بالمناسبة هي ليست من تأليفي بل هي من كتاب

 

و هذه الدروس الاولى المبدأية للمبتدأين و شكرا

 

 

 

C++ programming basics

 

اساسيات البرمجة بلغة الC++

 

 

 

في اي لغة برمجة هناك بعض الاساسيات تحتاج ان تعرفها قبل ان تستطيع ان تمهد لكتابة اولي برامجك.

هذا الجزء يقدم مثل هذه الاساسيات ( بناء وتركيب اساسيات البرنامج – المتغيرات – المدخلات والمخرجات (I/O) ) .

 

هذه الاساسيات تدرس ايضا في النمط او الشكل العام لانواع اللغات الاخري

شاملة التعليقات و العوامل الحسابية و عوامل التطور و تحول البيانات والدوال المكتبية.

هذه المواضيع ليست في تصوري صعبة و لكن ربما تجد الاسلوب في لغة ال C++ اقل صعوبة و صرامة مقارنتا بلغات اخري مثل الBasic أو ال Pascal .

قبل ان تتعلم هذه الاساسيات برنامج ال C++ ربما يذكرك بالكثير من العمليات الرياضية اكثر من اي برنامج كمبيوتر اخر . لا تقلق لذلك...

ستجد الامور بعد ذلك كما لو حصلت علي الدوال بال C++ .

انها البدائيات لكي تقوم بالدراسة علي اساس سليم.

 

 

 

هيا بنا نبدأ

 

كما اشرنا يمكنك ان تستخدم احد المعالجين :

Borland C++ او Microsoft visual C++

و المعالجات الاخري تعمل باجادة .

 

ما هو المعالج Compiler ؟

 

المعالج ياخذ شفرات البرنامج (المصدر) ويقوم بتحويلها الي ملفات تنفيذية . وهي الملفات التي تستطيع تشغيلها كما لو صممت ببرنامج اخر.

 

ما هي ملفات المصدر Source file ؟

 

ملفات المصدر هي ملفات مكتوبة باكواد لغة برمجة معينة من لغات البرمجة وفي لغتنا هنا وهي ال C++ .

 

مثلا ملف المصدر Extension.cpp و الملفات التنفيذية لها امتداد ال .EXE وتستطيع ان تنفذ احدهما من غير استخدام المعالج او لو كنت معتاد علي ال MS-Dos سينفذ مباشرة بشاشة ال Dos .

اما بالنسبة لتشغيل البرنامج بدون تحويلة في المعالج Compiler او شاشة الMS- Dos .

لو انت تستخدم معالج ال Borland ستحتاج الي تحويل البرنامج الي ملف تنفيذي قبل تشغيلة بخلاف ذلك المخرجات لن تبقي علي الشاشة مدة كافية لتراها.

 

 

 

 

 

بناء و تركيب اساس البرنامج

 

هيا بنا ننظر علي برنامج C++ بسيط جدا . هذا البرنامج يسمي First لذلك فملف المصدر سيكون First.cpp وهو ببساطة يطبع جملة علي الشاشة و ها هو البرنامج :

 

 

CODE

 

 

#include<iostream.h>

int main()

{

cout<<"\n Every age has alanguage of its won\n\n";

return 0;

}

 

 

 

الدوال

 

الدوال هي احد قوالب اساسيات البناء في الC++ . برنامج First اشتمل كليا علي وجه التقريب علي دالة واحدة تسمي Main() .

اما الاجزاء الوحيدة والتي لا تمثل اي جزء من الدالة في هذا البرنامج و التي تكون موجودة في اول سطرين .

الاول يبدأ باستخدام # include (سنري ماذا يفعل هذا السطر بعد دقائق).

نحن اشرنا الي ان الدالة يمكن ان تكون جزء من الفصيلة و التي عادتا ما تسمي دالة التذكير.

 

ومع ذلك الدوال يمكن ان تظل مستقلة عن الفصيلة .

لسنا مستعدين حتي الان ان نتكلم عن الفصائل لهذا سنشاهد الدوال التي تكون في حالة كيان منفرد او منفصل مثل Main() هنا.

 

 

اسم الدالة

 

القوسين الذين يتبعون الدالة او الكلمة Main يميزون شكل الدالة.

من غير هذين القوسين سيعتقد المعالج ان Main تشير الي متغير او اي عنصر اخر في البرنامج.

وعندما نتكلم عن الدوال في اكواد البرنامج نحن سوف نتبع نفس المصطلح و الذي يستخدمه الC++ : سنضع قوسين " () " وراء اسم الدالة . وبعد ذلك سنري ان القوسين عادتا لا يكونوا فارغين .

انهم استخدموا لكي تتمسك الدالة بالاهداف:

القيم تمرر من نداء البرنامج الي الدالة .

كلمة INT قبل اسم الدالة تبين ان هذه الدالة خاصة بارجاع القيم من النوع INTEGER أي عدد صحيح .

 

جسم او محتوي الدالة

 

جسم الدالة محاط بقوسين مجعدين " }جسم الدالة{ " هذين القوسين يلعبون نفس الدور مثل بداية ونهاية الاكواد في اللغات الاخري. انها محددة بقالب بيانات البرنامج .

كل دالة يجب ان تستخدم هذين الزوجين من الاقواس حول جسم الدالة . في هذا المثال يحتوي علي سطرين اثنين فقط في جسم الدالة.

سطر يبدأ بـ cout والاخر يبدا بـ return ومع ذلك جسم الدالة يمكن ان يحتوي علي العديد من السطور .

 

 

 

 

عادتا نبدأ بـ Main()

 

عندما نقوم بتشغيل برنامج ال C++ فان اول سطر سينفذ سيكون الذي يبدا بالدالة التي تسمي Main() .

البرنامج ربما يشمل علي العديد من الدوال و الفصائل و عناصر برامج اخري . لكن عند التشغيل التحكم عادتا يذهب الي Main() .

 

لو لم تكن الدالة اسمها Main() في برنامجك . فعند التشغيل سيحدث خطأ Error هذا الخطأ سيكون موضح في تقرير في معظم برامج ال C++ كما سنري بعد ذلك .

الدالة Main() تسمي دالة التذكير في الاهداف المتنوعة لينفذ العمل الحقيقي للبرنامج .

الدالة Main() ربما تشمل ايضا نداءات علي دوال اخري وحيدة .

 

 

 

شفرات البرنامج (المحتوي)

 

شفرات (اكواد) البرنامج هي الوحدة الاساسية في برنامج ال C++ . وها هي شفرتين في برنامج First .

 

السطر Cout<<"Every age has a language of its own \n";

 

و شفرة الارجاع Return 0;

 

الشفرة الاولي تخبر الكمبيوتر لعرض العبارة المكتوبة . معظم الشفرات تخبر الكمبيوتر لفعل شئ ما. من هذه الناحية فان الشفرات في ال C++ شبيهة بالشفرات في اللغات الاخري .

في الحقيقة كما اشرنا . اغلبية الشفرات في ال C++ مماثلة و مطابقة للشفرات في ال C .

الفاصلة المنقوطة " ; " الوحيدة في نهاية الشفرة .

هذا الجزء شرط قاطع لتركيبة الجملة مع ان سهل نسيانة.

في بعض اللغات مثل ال Basic نهاية الشفرة هو فقط نهاية السطر لكن ذلك غير صحيح في ال C++ .

لو لم تضع الفاصلة المنقوطة المعالج كثيرا ما ( وان كان ليس عادتا ) يعطي اشارة خطأ .

الشفرة الاخيرة في جسم الدالة هي Return 0; هنا يخبر الدالة Main() لارجاع القيمة صفر الي كل من المنادي هذا في هذه الحالة هو نظام التشغيل او المعالج .

في الاصدارات القديمة من ال C++ كنت تستطيع اعطاء الدالة Main() النوع المسترجع للتوزيع الفراغي عن طريق شفرة الاسترجاع لكن هذا لا يعتبر صحيحا في ال Standard C++ .

 

 

 

 

المساحة البيضاء

 

نحن ذكرنا ان نهاية السطر غير مهمة بالنسبة لمعالج ال C++ .

حقيقتا . المعالج يتجاهل المساحة البيضاء عند التكملة غالبا . المساحة البيضاء محددة مثل المسافات و تصرف الرجوع و خط التغزية و المساحات الخالية و المسافات الافقية و نمازج التغزية.

هذه الاجزاء غير متاحة للمعالج . و تستطيع ان تضع عدة بيانات في خط واحد . منفصلة باي عدد من المساحات او المسافات . او انك تستطيع ان تشغل الشفرات في اكثر من سطرين او اكثر من السطور.

انها كلها تمثل شئ واحد بالنسبة للمعالج .

وعلي هذا النمط فان برنامج First يمكن ان يكتب هكذا :

 

 

CODE

 

 

#include<iostream.h>

int main() { cout

<<

"Every age hase a language of its own\n"

; return

0;}

 

 

 

 

عملية الاخراج باستخدام Cout

 

كما رايت الشفرة

Cout<<"Every age has a language of its own\n"; فان سبب وضع الجملة بين علامتين تنصيص وذلك لعرضها علي الشاشة .كيف يحدث ذلك؟

 

الوصف الكامل لهذه الشفرة يستلزم فهم الهدف و عامل التشحين و النقاط الاخري التي لن نناقشها حتي ياتي وقتها لكن هذا مختصر تمهيدي.

تعريف ال Cout ( تنطق " C out " ) هي في الحقيقة كائن . انها قبل التعريف في ال C++ لكي تناسب اصل مجري المخرجات .

 

المجري هو الخلاصة التي تشير الي اتباع البيانات . اصل مجري المخرجات القياسي طبيعيا يتبع مجري معين حتي الي العرض علي الشاشة. وان كان تستطيع ان تكون موجهة ايضا لاداة اخراج اخري.

العامل << يسمي ادخال او ضع في العامل . انها تقوم بتخزين مباشر لحجم او محتويات المتغير اللي علي اليمين لي الكائن اللي علي شمالها .

في برنامج first تقوم بتخزين مباشر لحجم او محتويات الجملة الثابتة

"Every age has a language of its own\n"الي Cout . و التي ترسلها للعرض علي الشاشة .

( لو كنت تعرف C ستميز العامل << مثل نمط او شكل العامل

left-shift bit-wise و ستتعجب كيف يمكن ان تستخدم للاخراج المباشر .

في ال C++ العوامل يمكن ان تشحن . كذلك . يمكن ان تنجز انشطة مختلفة و الاعتماد علي المغزي او سياق الكلام .

مع ان التصورات وراء استخدام Cout و << ربما تكون غامضة في هذه النقطة . باستخدام ذلك سيكون سهلا . سيظهر ذلك في الغالب العديد من الامثلة و البرامج .

شكل ( 2 ) التالي يظهر نتيجة استخدام cout وعامل الادخال << .

 

 

 

 

 

الجمل الثابتة

 

العبارة التي بين علامتين تنصيص

"Every age has a language of its won\n"هي مثال للجمل الثابتة .

وكما تعلم ان الثوابت ليست كالمتغيرات حيث انها لا يمكن ان تحضر قيم جديدة عند تشغيل البرنامج كل مرة .

قيمتها بتوضع عند تصميم و كتابة البرنامج . و يتم ضبط هذه القيمة في اثناء بقاء تشغيل البرنامج .

و كما سنري بعد ذلك . اعتبار الموقف جمل يكون نوعا مشوشا في ال C++ . هناك طريقتين لاستخدام الجمل كثيرا ما تستخدم الجملة لكي يمكن

ان تنوب عنها بمصفوفة حروف او لكي يمكن ان تنوب عنها كأي كائن للفصيلة .

الحرف " \n " في نهاية الجملة الثابتة مثال للهروب المتتابع .

انها تؤدي الي ظهور مخرجات نصية تالية في سطر جديد .

سنستخدمها هنا لذلك فان الجملة "Press any key to continue " المدرجة عن طريق بعض المعالجات لكي تظهر عند انتهاء البرنامج ستظهر في سطر جديد .

 

 

التوجيه

 

السطرين الذين بدأ بهم برنامج First موجهين .

الاول يكون قبل عملية التوجية . و الثاني يستخدم للتوجية .

هو يستغل جزء من المساحة الرمادية : انة ليس جزء من اساسيات لغة ال C++ لكنة ضروري في كل الاحوال .

عملية ما قبل التوجيه

 

السطر الاول في برنامج First

#include<iostream.h>

يمكن ان نعتبرة مثل شفرات البرنامج . لكنه ليس كذلك .

انها ليست جزء من جسم الدالة . ولا تنتهي بفصلة منقوطة " ; " كما يجب تنتهي شفرات البرنامج . بالاضافة الي ذلك فانها تبدأ بعلامة الترقيم ( # ) . انها تسمي عملية ما قبل التوجيه . تذكران ان شفرات البرنامج عبارة عن اوامر الي الكمبيوتر لفعل بعض الاشياء . كذلك مثل اضافة رقمين أو طباعة جملة .

عملية ما قبل التوجيه السابقة الذكر هي أوامر الي المعالج .

جزء من المعالج يسمي عملية ما قبل التقسيمات بهذه التوجيهات قبل ان تبدأ عملية المعالجة الحقيقية .

عملية ما قبل التوجيه #include تخبر المعالج الي ان يضع ملف اخر في ملف المصدر الذي لديك .

في الواقع . الموجه #include يستبدل بمحتويات الملف المشار الية .

استخدام الموجه #include لوضع ملف اخر في ملف المصدر شبيه بلصق كتلة من الحروف في مستند عن طريق عملية الكتابة .

#include فقط هي احد عمليات ما قبل التوجيه . كل هذه العمليات يمكن ان تكون معرفة بالحرف الاول من العلامة # .

استخدام عملية ما قبل التوجيه ليست متشابهة في لغة ال C++ مثل لغة الC . لكن سننظر الي بعض الامثلة الاضافية بعد ذلك . نوعية الملفات التي تحتوي عادتا علي #include تسمي الملف الرئيسي .

 

 

الملف الرئيسي

 

في المثال First عملية ما قبل التوجيه #include تخبر المعالج لاضافة ملف المصدر iostream الي ملف المصدر first.cpp قبل المعالجة . لماذا يحدث ذلك ؟

Iostream هو مثال لملف رئيسي (بعض الوقت يسمي ملف احتواء) انه يتعلق باساسيات عمليات الادخال والاخراج ويحتوي علي تصريحات انة يحتاج الي قيم بواسطة الحروف الاولي من Cout و المعامل << .

بدون هذه التصريحات المعالج لن يتعرف علي Cout و سيعتقد ان << ربما تكون استخدمت بصورة غير صحيحة .

هذه كذلك مجموعة من ملفات الاحتواء . وحدة رؤوس الملفات الجديدة في الC++ لا تحتوي علي امتداد للملفات . لكن بعض رؤوس الملفات القديمة منذ ايام لغة الC لديها امتداد " .h " .

لو كنت تريد ان تري ماذا بداخل ال iostream يمكنك ان تجد دليل include لمعالجك وعرضها كملف مصدر في نافذة تحرير .

او يمكنك مشاهدة ذلك في ملف Wordpad او Notpad مستعمل المحتويات و المضمون لن تعطيك احساس كافي بهذه النقطة .

لكنك علي الاقل ستثبت او تبرهن لنفسك ان iostream هو ملف مصدر كتب بحروف جدول ASCII القياسية .

التعليقات

 

التعليقات من الاجزاء المهمة في البرنامج . فهي تساعد المبرمجين الكاتبين للبرامج واي شخص اخر يقرا هذه البرامج ( ملف المصدر ) فهم ماذا يحدث .

المعالج يتجاهل التعليقات لذلك فهي لا تضاف الي مساحة الملف او وقت التنفيذ للبرامج التنفيذية .

تركيبة جمل التعليقات

 

هي بنا نعيد كتابة برنامجنا First مدمجا بالتعليقات في ملفنا المصدر سنسميه برنامج new comments :

 

 

CODE

 

 

//comments.cpp

//demonstrates comments

#include<iostream.h> //preprocessor directive

int main() //function name "main"

{ //start function body

cout<<"\n Every age has alanguage of its won\n\n"; //statement

return 0; //statement

} //end function body

 

التعليقات تبدأ بعلامتي ال double slash ( // ) وتنتهي بنهاية السطر .

( هذه احدي الاستثناءات للطريقة التي فيها المعالج يتجاهل المساحة البيضاء ) التعليقات يمكن ان تبدأ في بداية السطر او في نفس السطر متبعة شفرات البرنامج . كل منهما مسموح به يمكن مشاهدته في المثال السابق .

 

 

 

متي نستخدم التعليقات ؟

 

التعليقات غالبا ما تكون شئ جيد . معظم المبرمجين لا يستخدمون الكثير منها . لو كنت جربت ان تستغني عن التعليقات . تذكر ان ليست كل الناس تفكر بنفس تفكيرك .

انهم ربما يحتاجون الي الكثير من التوضيح لكي تتحدث عن ماذا يفعل برنامجك .

ايضا انت ربما لن تكون علي نفس القدر من الفهم بعد فترة ما ولذلك ستنسي افكارك التي وضعتها في برنامجك وذلك بعد فترة .

استخدم التعليقات لكي توضح للشخص الذي يراجع البرنامج ما الذي تحاول ان تفعلة .

التفاصيل ستكون في نفس شفرات البرنامج . لذي التعليقات يجب ان تركز علي الصورة العامة وتوضح سبب استخدامك بعض الشفرات او مجموعة من الشفرات .

 

 

اختيار تركيبة التعليقات

 

هذا هو الشكل الثاني للتعليقات المسموحة في لغة ال C++ :

 

/* This is old style comment */

 

هذا النوع من التعليق ( التعليق الوحيد في الاصل المسموح في لغة الC ) يبدا بحرفين ال /* وينتهي ب */ ( وليس بنهاية السطر ) هذه الرموز من اصعب الانواع ( لان / في حالة منخفضة بينما * في حالة مرتفعة ) وستستغرق الكثير من المسافات في السطر لذي فهذا الشكل لا يستخدم بصورة رئيسية في لغة ال C++ ومع ذلك فانها تعد ميزة في المواقف الخاصة .

فانت تستطيع ان تكتب سطور عديدة من التعليقات برمزي تعليق فقط .

هذا تقريبا اسلوب جيد لعمل تعليق بعيدا عن العبارات الطويلة جدا لانها تحفظ داخل رمز ال " // " في سطور عديدة .

يمكن ايضا ان تدرج رمزي التعليق /* */ في اي مكان ضمن سطور كتابة البرنامج :

 

 

الصور المرفقة

 

 

المتغيرات الصحيحة من النوع Integer

 

المتغيرات تعتبر جزء اساسي في اي لغة . المتغيرات هي اسماء رمزية يمكن ان تحضر قيم متغيرة . المتغيرات تستقر في اماكن خاصة في ذاكرة الحاسب .

عندما المتغير يحضر قيمة هذه القيمة حقيقتا تحجز مساحة من مساحة الذاكرة وتكون مخصصة للمتغير .

معظم اللغات المعروفة تستخدم نفس الانواع الرئيسية من المتغيرات مثلا كالمتغيرات من النوع Integer و flooting-points number والCharacters . ربما انت من قبل معتاد علي هذه الافكار .

المتغيرات من النوع Integer تعطي ارقام صحيحة مثل 130000 و-27

كذلك الارقام تستخدم لحساب الارقام المميزة للاشياء مثل ( 11 قلم و 99 زجاجة ) بخلاف ال Flooting – point numbers

و ال Integer فهو لا يحتوي علي كسور .

يمكن ان تعلن او تصرح عن العدد 4 باستخدام ال Integer لكن لا يمكنك ان تصرح عن ال 4.5 .

 

تعريف المتغيرات من النوع Integer

 

المتغيرات من النوع Integer توجد في مساحات متعددة او منفصلة . لكن في الغالب تستخدم النوع Int .

مقدار الذاكرة مشغول بالنوع Integer اللي النظام تابع لها .

في نظام ال 32-Bit كذلك مثل النوافز ( Windows ) النوع Int يشغل 4 Bytes والتي تكون ( 32 Bits ) من الذاكرة .

هنا يسمح للنوع Int ان يحتوي علي ارقام في الحدود

من -2147483648 الي 2147483648 .

و الشكل ( 3 ) يعرض المتغير Integer في الذاكرة .

 

 

عندما النوع Int يشغل 4Bytes بنافذة الحاسب النشطة او الحالية . انها فقط تشغل 2Bytes في ال Ms-Dos وقبل ان تحول الي نافذة . السعة التخزينية تشغل بواسطة انواع متعددة ادرجت في ملف رئيسي محدد يمكنك ان تبحث عنه باستخدام نظام مساعد المعالج .

ها هو برنامج يعرّف ويستخدم متغيرات متعددة من النوع Int واسم ملف البرنامج Intvars.cpp :

 

 

CODE

 

#include<iostream.h>

int main()

{

int var1;

int var2;

 

var1=20;

var2=var1+20;

cout<<"var1+20 is ";

cout<<var2<<endl;

return 0;

}

 

الاعلانات و التعريفات

 

هيا بنا ننحرف للحظات لندون الفرق البسيط ين شطري التعريفات والاعلانات طبقا للمتغيرات .

الاعلان – يقوم بتقديم اسماء المتغيرات ( مثل Var1 ) في البرنامج و تخصص نوعيته ( كذلك مثل Int ) .

ومع ذلك لو ايضا الاعلان وضع جانب الذاكرة للمتغير انة ايضا يسمي تعريف .

الشفرات :

 

Int Var1;

Int Var2;

 

في برنامج Intvars هي تعريفات وكذلك مثل الاعلان . لانها تضع جانب الذاكرة لل Var1 و Var2 .

سنهتم غالبا بالاعلانات التي تكون ايضا تعريفات .

لكن بعد ذلك سنري نفس النوع من الاعلانات لايكون تعريفات .

 

 

اسماء المتغيرات

 

برنامج Intvars يستخدم متغيرات تسمي Var1 و Var2 الاسماء تعطي للمتغيرات و( برامج مستقبلية اخري ) و تدعي تسمية المتغيرات .

ما هي طرق كتابة التسمية للمتغيرات؟

تستطيع ان تستخدم Underscore ( _ ) وتستطيع ايضا استخدام الحروف الكبيرة و الارقام الاحاديه من 1 : 9 .

اول الاسم يجب ان يكون حرف او Underscore . التسمية يمكن ان تكون طويلة كما تحب .

لكن معظم المعالجات ستعترف فقط باول 100 حرف .

المعالج سيميز بين الحروف الكبيرة والصغيرة لذي فان var ليست مثل Var وليست مثل VAR .

لا تستطيع ان تستخدم الكلمات المحجوزة كاسماء متغيرات .

الكلمات المحجوزة هي كلمات معرفة من قبل ولها معني و استخدام خاص .

و الكلمات المحجوزة مثل Int و Class و If و While .

العديد من برامج ال C++ اتبعت اتفاقية استخدام كل الحروف الصغيرة في اسماء المتغيرات .

البرامج الاخري استخدمت مزيجا من الحروف الكبيرة والصغيرة مثلما في IntVar و DataCount . ومع ذلك اخرين استقلوا باستخدام Underscore .

اي كان الاقرب للاستخدام . انها جيدة لكي تكون مطابقة اثناء او في كل مكان في البرنامج .

الاسماء في كل الحروف الكبيرة في بعض الوقت تحجز للثوابت نفس المعاهدة هذه استخدمت لتسمية عناصر البرامج الاخري كذلك مثل Classes و Functions .

اسم المتغير يجب ان يوضح لاي احد يقرأ مقصد المتغير وكيف استخدم .

علي هذا النمط Boilertemperature افضل من بعض الرموز الصغيرة مثل BT او T .

 

 

العبارات المخصصه

 

الشفرات ( العبارات )

Var1=20;

Var2=Var1+20;

خصصت قيم الي متغيرين . علامة التساوي ( = ) مثلما تخمن تجعل القيم التي في اليمين تكون مخصصة للمتغيرات التي في اليسار .

ال = في ال C++ تعتبر مثل ال ( := ) في ال Pascal او ال = في ال Basic .

في السطر الاول نشاهد ذلك . Var1 التي من قبل لم يكن لها قيمة احضرت القيمة 20 .

 

الثوابت من النوع Integer

 

الرقم 20 هو ثابت من النوع Integer .

الثوابت لا تتغير اثناء مسلك او تشغيل البرنامج .

الثوابت من النوع Integer تشتمل علي التسعة اعداد الاولية العدديه .

انها يجب ان لا تكون كسور عشرية او لا تحتوي علي نقطة عشرية في الثوابت من النوع Integer .

و يجب ان تكون اكذوبه ضمن صفوف ال Integer في الصف الثاني من البرنامج نشاهد ذلك .

علامة الجمع ( + ) تضيف قيمة ال Var1 و 20 في حين ان 20 تمثل ثابت اخر . الناتج من عملية الاضافة هذه يخصص كقيمة لل Var2

 

اختلاف المخرجات

 

الشفرة

Cout<<"Var1 + 20 is ";

 

تعرض عبارة ثابتة كما راينا سابقا .

الشفرة التالية

Cout<<Var2<<endl;

تعرض قيمة المتغير Var2 . كما تستطيع ان تري في نافذة المخرجات .

مخرجات البرنامج هي

Var1 + 20 is 40

لاحظ ان Cout و العامل << يعرفون كيف يعالجون الاختلاف بين ال Integer و ال String .

لو ارسلناهم حروف سوف يطبعوا كعبارة او جملة .

لو ارسلناهم كأعداد صحيحة ( Integer ) سيطبعوا كارقام انها ربما تبدوا واضحة و صريحة .

لكن يبدوا انة مثال اخر لعامل التشحين و الكلمات المحجوزة المستقبلية لل C++ . ( مبرمجي ال C سيتذكرون ان ذلك مثل الدالة Printf( ) تحتاج لتخبر ليس فقط لعرض المتغير لكن نوع المتغير يكون جيد الذي يصنع تركيبه اقل بعدا عن المنطق ) .

وكما تري المخرجات للعبارة الثانية ل Cout تظهر في نفس السطر في المخرجات علي الشاشة .

لايوجد منشئ سطور ادرج بصورة تلقائية . لو اردت ان تبدأ في سطر جديد . يجب عليك ان تدرج منشئ سطور بنفسك . سنري كيف نفعل ذلك باستخدام الهروب المتتابع ' \n ' .

الان سنري طريقة اخري باستخدام بعض الاشياء و التي تسمي المعالجات او المشغلات .

 

 

 

المشغل EndL

 

اخر عبارة Cout في برنامج IntVars تنتهي بكلمة غير متداولة : Endl .

انها تؤدي الي الانتقال الي سطر جديد لكي يدرج في مجري البرنامج لذلك الحروف المتتالية ستعرض في سطر جديد .

انه نفس التاثير كما لو ارسلنا او كتبنا الحروف " \n " لكن بنوع ما اوضح . انه مثال علي المشغلات .المشغلات هي اوامرالي مجري المخرجات حيث تعدل و تغير المخرجات لتسير في طرق متعددة .

نحن سنري الكثير منها بعد ذلك . واذا تحدثنا بدقة Endl ( ليست مثل '\n' ) ايضا تؤدي الي ان المخرجات تتوازن لكي تكون كاسحة . لكن ذلك يحدث بطريقة غير منظورة لذي من اجل معظم هذه الاغراض السطر الثاني سيكون مماثل له .

 

الانواع الاخري من المتغير Integer

 

هذه عدة انواع عديدة من الارقام Integer بجانب النوع Int اكثر النوعين الشائعيين هما Long و Short .

( علي سبيل الحصر سنتكلم جيدا عن النوع Char كما تكلمنا عن النوع Int . لكن سنقوم بتغطيتهم كل بمفرده ) .

نحن سنلاحظ ان مساحة النوع Int تابعة للنظام . علي العكس تماما ان النوعين Long و Short يملكون مساحه ثابتة لا يهمه اي النظام استخدم .

النوع Long عادتا ياخذ اربعة Bytes التي هي نفس المساحة التي ياخذها النوع Int في نظام النوافذ 32-Bit .

كذلك تاخذ نفس الحدود من -2147483648 الي 2147483647 .

انها تستطيع ايضا ان تكتب مثل Int Long; هذا معناه انه نفس النوع Long .

انها نقاط قليلة لاستخدام النوع Long في النظام 32Bit لانها نفس النوع Int . ومع ذلك لو برنامجك احتاج ان يشتغل في نظام 16Bit كذلك مثل ال Ms-Dos . او في اصدار قديم من النوافذ . مخصصين النوع Long سيضمن اربعة Bit من النوع Integer .

في نظام ال 16Bit النوع Int يملك نفس الحدود للنوع Short .

في كل انظمة النوع Short تأخذ اثتين Bytes وتعطي له حدود

من -32768 الي 32767 .

من المحتمل انها ليست النقاط المستخدمة للنوع Short في انظمة النوافذ الحديثة الا اذا كانت مهمة لحفظ الذاكرة .

النوع Int وان كان اكبر مرتين دخل اسرع من النوع Short .

لو احتجت ان تنشئ ثابت من النوع Long استخدم الحرف L بعد قيمة الرقم كما في

 

Longvar=7678L; // Assigns long constant 7678 to longvar

 

العديد من المعالجات تعرض النوع Integer التي خصصت بصراحة ارقام ال Bits المستخدمة ( تذكر ان 8Bits تساوي Bytes ) هذه اسماء الانواع و التي اسبقت ب Two underscore هذه الاسماء هي

_Int8 , _Int16 , _Int32 , _Int64 النوع _Int8 مطابق ل Char . وعلي الاقل في نظام ال 32Bits النوع _Int16 مطابق ل Short . و ال _Int32 مطابق لكلا من Int و Long . النوع _Int64 تمسك بنوع Integer كبير بارتفاع الي 19 رقم عشري احادي .

مستخدمين اسماء هذه الانواع و التي لها ميزة ان الارقام Bytes استخدمت للمتغير الذي لم يعد للاستخدام .

و مع ذلك هذا لا يكون عادتا منفذ او نتيجه وهذه الانواع نادرا ما تستخدم .

 

 

 

المتغير من النوع Character

 

النوع Char يخزن Integers التي تتراوح قيمتها بين -128 الي 127 .

المتغيرات من هذا النوع تشغل فقط 1Bytes ( 8Bits ) من الذاكره .

المتغيرات من النوع Character في بعض الوقت تستخدم لتخذين الارقام التي تحدد نفسها في هذا المجال المحدود .

لكن غالبا ما تستخدم كثيرا لتخزين حروف ال ASCII .

و كما تعلم الحروف ASCII تضع اسلوب الحروف التي تنوب عنها ارقام كذلك مثل ' a ' و ' b ' و ' $ ' و ' 3 ' و هكذا مثل الارقام . هذه الارقام تكون في محيط من 0 الي 127 . مع انظمة النوافذ يزيد هذا المحيط الي 255 . لكي يمد بالعديد من اللغات الاجنبية الاخري و حروف النقش والرسم .

التعقيدات نتجت عندما استخدمنا الحروف الاجنبية وايضا عندما البرنامج تحول بين انظمة تشغيل الحاسب في نفس اللغة .

هذا لان الحروف في محيط 128 الي 255 .

لا تعتبر قاعدة او مقياس و لان الواحد Byte مساحة النوع Char صغير جدا ليمد ارقام الحروف في اللغات العديدة . كذلك مثل اللغة اليابانية .

Standard C++ امد بنوع من الحروف الكثيرة و التي تسمي Wchar_t . لاستعمال الحروف الاجنبية . هذا مهم لو كنت تكتب برنامج للتقسيم العالمي و مع ذلك في هذا الكتاب سنتجاهل النوع Wchar_t و نفترض ان نحن سنتعامل مع حروف ASCII .

والتي وجدت موضوعة في الاصدار المتداول من النوافذ .

 

 

 

ثوابت الحروف

 

ثوابت الحروف تستخدم علامة تنصيص واحدة حول الحرف مثل 'a' و 'b'

( لاحظ ان هذا مختلف عن الجمل الثابتة و التي تستخدم علامتين تنصيص " " ) .

عندما معالج ال C++ يقابل مثل ثوابت الحروف فانها تترجم بشفرة ASCII المناظرة لها .

الثابت 'a' تظهر في البرنامج كمثال ستترجم في ال 97 كما هو مبين في الشكل رقم ( 4)

المتغيرات من النوع Character يمكن ان تحتوي علي ثوابت حروف كقيمة .

 

 

البرنامج التالي يظهر بعض الامثلة علي ثوابت الحروف و المتغيرات و اسم البرنامج CharVAr.Cpp

 

البرنامج :

 

CODE

 

 

#include<iostream.h>

int main()

{

char charvar1='a';

char charvar2='\t';

 

cout<<charvar1;

cout<<charvar2;

 

charvar1='b';

 

cout<<charvar1;

cout<<'\n';

return 0;

}

Link to comment
Share on other sites

  • Replies 21
  • Created
  • Last Reply

Top Posters In This Topic

مشــكــورة اخـــتي ويعطييج ربي الف عافيـــه

 

والصـــراحــه هالمــاده وايــد اللي يعــانون منــها لصـعـوبتها الصـراحه

 

ويعطييج ربي الف عافيـــه على الشــرح الحلو والتسهيل للمـاده

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
الرد على هذا الموضوع...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...