الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

شابتر 2 (مقدمة الى السى++)

بدأه XMasterrrr في 22 أكتوبر 2010 · 28 رد · 3,371 مشاهدة · في المواضيع والدروس
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم و الصلاة و السلام على خير المرسلين سيدنا محمد صلى الله عليه و سلم.

اجزاء برنامج السى++

الملخص: برامج السى++ فيها اجزاء و جمل لتقوم بعمل شئ محدد.

كل برنامج مصنوع بالسى++ له جمله الخاصة, ليست كل الجمل التى تكتبها فى برنامج يقوم بطباعة نص تكتب فى برنامج اخذ نص من الكيبورد يوجد اختلاف اذا فلا يوجد شئ اسمه استخدام نفس السطر فى نفس المكان فى كل برنامج حسنا كيف نبدء هذا المثال التالى هو برنامجنا الاول :

 //A simple c++ program
#include <iostream>
using namespace std ;

int main()
{
cout << "Programming is  great fun!";
system("pause");
return 0;
}

المخرجات

اقتباس
Programming is great fun!

حسنا فالنشرح كل سطر

//A simple C++ program

ال // تقوم بعمل بداية ملاحظة اذا فأى شئ يكتب بعد ال // لا يأخذه الكومبايلر انه كود لا سيعرف انه ملاحظة و سيتجاهله

ملاحظة : دائما قم بعمل الملاحظات لأنه تفيد بحق و عن تجرب فأذا لم تقم بفتح البرنامج لشهور فلن تفتكر ماهذا الكود ما الذى يدل اليه اذا فأستخدام الملاحظات يجعلك تعلم لماذا هذا الكود.

حسنا ال

#include <iostream>

حسنا السطر الذى يبتدى بال # يدعى المنادى اى يأخذ اى ملفات مطلوبة فى هذا الملف الى السورس كود الخاص بك اذا فأنت الأن تستدعى اى ملف داخل مكتبة ال

iostream

ما هى ال

iostream

هى المكتبة الخاصة بال input/output لكى نستخدم الكائن cout يجب مناداة المكتبة iostream اذا فهذا عملها و لهذا نناديها

يجب وضع اى سطر يحتوى على # فى بداية البرنامج مثل الكود الماضى

حسنا ال

using namespace std;

حسنا ما هى ال namespace هى مناداة شئ محدد من داخل المكتبة المستخدمة

فلنقول انك اتيت بالمكتبة iostream و تريد ان تصنع جملة cout و لا تريد استخدام ال namespace اذا فسوف نستخدم التالى

std::cout << "Programming is great fun!";

هل رئيتم , ليس هذا فقط بل اشياء اخرى سوف نتعرف عليها فى وقت اخر

اذا فاستخدام ال namespace يقوم باستدعاء الملف المحدد الذى نريد استخدامه من المكتبة المستعمل وضحت ؟ :D

حسنا ال

int main()

هذه الجملة تعنى بداية الدوال , ما هو الدوال؟ هو مجموعة من الجمل البرمجية المسميمة بأسم خاص و سوف نتعرف على ذلك فيما بعد

لكن لماذا نستخدم هنا الاسم main ؟ و القوسين المتتالين لها ؟؟؟؟؟ الكلمة int تعنى رقم صحيح (ليس رقم حقيقى اى ليس به اى كسور) اذا فهو يجهز الدوال هذا لأستقبال رقم صحيح اى انه من الممكن ان يستخدم فى اى شئ به ارقام و هذا ما نستخدمه طوال عملنا مع السى++ (قاعدة لا تتغير مع ال main ) من الممكن استخدام انواع اخرى لكن يفض تركه هكذا مهما كان, ال main هى الدوال الرئيسى و هو من يبتدى العمل منه مهما كان مكانه فأذا وضعته فى نهاية البرنامج , نصفه او حتى اخره سوف يبقى دائما بداية البرنامج لا اريدك الخوض فى هذا الامر اكثر من ذلك مع الفصول القادمة سوف تتعرف على اكثر من ذلك بأذن الله.

حسنا ال

{

هذا السطر يعنى بداية الكود اى دوال عندما تكتبه يجب وراءه كتابة ال القوس الايسر مثل البرنامج الذى رئينها , احظر ان لا تغلق القوس فى نهاية البرنامج اى انه يجب عليك كتابة

الملخص: هذان القوسان يعتبرا بداية الدوال و نهايته.

}

عندما تنتهى من الكود المراد كتابته فى الدوال

حسنا بعد ذلك يأتى الكود التالى

cout << "Programming is great fun!";

ببساطة هذا السطر هو المسيطر على اظهار الكلام على الشاشة هنعرف بعدين فى الفصل ده بالتحديد وظايفه لكن للملخص : اى شئ بين " " هيظهر على الشاشة و يسمى ال string literal او string constant

ملاحظة : هذا هو السطر الوحيد الى بيسبب طباعة اى شئ على الشاشة و الاشياء الاخرى مثل #include <iostream> و int main() هى اشياء مهمة لكى يعمل البرنامج لكنهم لا يطبعون اى شئ على الشاشة.

حسنا ال

Semi Colon

ال semicolon هى ; و هى ناهية الجملة فى البرمجة لكن ليس كل الجمل فالملاحظات مثلا لا تحتاج ال semi colon لانهاء الجملة ولا الجمل المبدوئة بال #

ولا الدوال لأنها ليست جمل كاملة هى فقط تدل لشئ واضح ؟؟؟؟ حسنا ادرى انه ليس من الواضح اين تضع ال semi colon و اين لا لكن تجاهل هذا و افعل ما قرئت مع الوقت سوف تعلم اين سوف تضعه

حسنا ال

system("pause");

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

حسنا ال

return 0;

هذا يرسل الرقم 0 لنظام التشغيل ليؤكد انهاء البرنامج بسلام و يتأكد ان البرنامج يعمل بدون اى مشاكل

حسنا ال

}

هذا ينهى الدوال مثل ما قولنا سابقا

الجدول القادم سوف يقدم لكم الرموز الخاصة التى تم استخدامها فى الدرس هذا

اقتباس

الرمز ---------------------------------- الوصف----------------------------------------------------------------------

// يقوم بعمل ملاحظة

# يقوم بطلب ملفات المكتابات لأدراجه فى البرنامج الخاص بك

< > تضعه داخله اسم المكتبة المراده

( ) يُضع فى كتابة اسامى الدوالات

{} يُضع داخله الجمل المراد كتابتها الخاصة بدوال محدد

" " يكتب بداخلها الجمل التى نريدها للطباعة

; لأنهاء الجملة

الى هنا نكون قد انتهينا من درسنا الاول

فى المشاركة القادمة سوف نشرح ال cout بالتفصيل.

تم تعديل هذه المشاركة بواسطة XMasterrrr في 22 أكتوبر 2010 في 14:40

4

.Everyone has a dream

.I never thought that I would be the one I am on now

...No Pain No Gain

مشرف قسم السى/سى++ و الاسيمبلى سنة 2015 بأذن الله ...

تعديل: مشرف قسم السى/سى++ من 2012.

#2

الكائن cout

الملخص : استخدم الكائن cout لطباعة البيانات على الشاشة

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

العنصر cout يعُتبر من العناصر المتدفقة بمعنى يمكت كتابة اكتر من جملة فى اَن واحد

لنرى المثال التالى

cout << "Programming is great fun!";

هل لاحظتم ال << تلك هذا الكائن يقوم بارسال ال string الذى نراه و هو

اقتباس
"Programming is great fun!"

يقوم بأرساله الى العنصر cout

عندما يتم استخدام ال << فأن الذى يأتى بعده يرسل للأظهار من قبل ال cout .

هذا ال << يسمى مرسل العناصر المتدفقة.

حسنا فالنرى المثال التالى

// A simple C++ Program
#include <iostream>
using namespace std;

int main()
{
cout << "Programming is " << "great fun!";
system("pause");
return 0;
}

المخرجات

اقتباس
Programming is great fun!

كما نرى من الممكن ارسال اكتر من << فى نفس الجملة و ارسال اكتر من string

حسنا طريقة اخرى

#include <iostream>
using namespace std;

int main()
{
cout << "Programming is ";
cout << "great fun!";
system("pause");
}

المخرجات

اقتباس
Programming is great fun!

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

حسنا المثال التالى ولكن لاحظوا انه لن يوجد فراغات بين كلا من الكلمات التالية (مثلا)

اقتباس
"sellers", "during," "June:" , "Computer."

لأن العنصر cout يعرض الجمل مثلما كُتب بالظبط لو لم يكن هناك فراغات فلن يضُع فراغاتت.

//An unruly printing program
#include <iostream>
using namespace std;

int main()
{
cout << "The following items are top sellers";
cout <<"during the month of June:";
cout <<"Computer games";
cout<<"Coffee";
cout <<"Aspirin";
system("pause");
return 0;
}

المخرجات

اقتباس
The following items were top sellersduring the month of June:Computer gamesCofferAspirin

ثانيا

حتى لو الجملة تلك مقسومة لخمس اجزاء فسوف تظهر على سطر واحد طويل و لأن السطر طويل جدا ليظهر على سطر واحد فسوف ينزل الى السطر الثانى , السبب فى ان الجملة ظهر فى سطر واحد ان الكائن cout لم يأخذ الامر ببداية سطر جديد

هناك طريقتان لمثل هذا الاولى فى ارسال كلمة endl و هى اختصار end line اى نهاية السطر بعد ال <<

مثال:

//An unruly printing program
#include <iostream>
using namespace std;

int main()
{
cout << "The following items are top sellers" << endl;
cout <<"during the month of June:" << endl;
cout <<"Computer games" << endl;
cout<<"Coffee" << endl;
cout <<"Aspirin" << endl;
system("pause");
return 0;
}

المخرجات

اقتباس

The following items were top sellers

during the month of June:

Computer games

Coffee

Aspirin

ملاحظة الحرف الاخير من endl ليس رقم 1 بل هو حرف L .

كل مرة يأتى endl يقوم بعمل سطر جديد مهما كان فلننظر للمثال القادم:

cout << "My pets are" << endl << "dog";
cout << endl; << "cat"<< endl; << "bird" << endl;

طريقة اخرى لكى نقوم بعمل سطر جديد و هى رمز \ يأتى بعده حرف معين لعمل سطر جديد

مثال:

#include <iostream>
using namespace std;

int main()
{
cout << "The following items were top sellers\n";
cout <<"during the month of June:\n";
cout <<"Computer games\nCoffee";
cout<<"\nAspirin\n";
system("pause");
return 0;
}

المخرجات

اقتباس

The following items were top sellers

during the month of June:

Computer games

Coffee

Aspirin

هذا الرمز الجديد ( \n) عندما تكت داخل " " فأنها لا تطبعها على الشاشة لكنها تقوم بعمل شئ خاص لكى تقوم بعمل سطر جديد

من المؤكد انك لاحظت ان كتابة \n اسهل بكثير endl لهذا يفضلها الكثيرون.

خطأ شائع بين المبرمججين المبتدئين بالسى++ انهم يستخدمون العلامة الخلفية / بدلا من \ حسنا المثال التالى يوضح ذلك

//Error!
cout << "Four Score/nAnd sever/nYers ago./n";

فى هذا الكود المبرمجين بالخطاء يكتبون /n و بدلا من \n حسنا الكائن cout سوف يظهر فى المخرجات /n و المخرجات ستكون:

اقتباس
Four Score/nAnd seven/nYears ago./n

خطأ اخر شائع و هو عدم وضع ال \n داخل ال " "

مثال:

//Error
cout << "Good" << \n;
cout << "Morning" << \n;

هذا الكود سوف يقوم بأعطاء خطاء لأن ال \n ليست داخل ال " " من الممكن تصحيح ذلك

مثال

//This will work.
cout << "Good\n";
cout << "Morning\n";

يوجد العديد من الرموز مثلا \n لكن لك منهم وظيفتخ هيا لنتعرف على بعضا منهم

اقتباس

الرمز-------------- الاسم------------------------ الوصف-----------------------------------------------------------

\n سطر جديد يقوم بعمل سطر جديد

\t مساحة فارغة يقوم بالحركة 8 مساحات فارغة الى الامام

\a رنين يقوم بعمل صوت رنين

\b ارجاع السطر يقوم بالرجوع حر واحد فقط الى اليسار

\r رجوع يقوم بالرجوع الى اول السطر و ليس سطر جديد

\\ علامة \ يقوم بالسماح لك بكتابة ال\ لتظهر على الشاشة

\' علامة الاقتباس الواحدة يقوم بالسماح لك بكتابة علامة الاقتباس الوحدة لتظهر على الشاشة

\" علامة الاقتباس يقوم بالسماح لكت بكتابة علامة الاقتباس لتظهر على الشاشة

تحذير : عندما تقوم بكتابة رمز معين لا تقوم بعمل فراغات بينهم ابدا

الحمدلله انتهينا من الدرس التانى اقسم بالله تعبت جدا و محتاج دعائكم :)

فى المشاركة القادمة سوف نتكلم عن ال #include

3

.Everyone has a dream

.I never thought that I would be the one I am on now

...No Pain No Gain

مشرف قسم السى/سى++ و الاسيمبلى سنة 2015 بأذن الله ...

تعديل: مشرف قسم السى/سى++ من 2012.

#3

الموجه #include

الملخص : ال #include يسبب اضافة اى ملف تريده الى السورس كود الخاص بك.

الأن لنشرح

المثال التالى

#include <iostream>

للعلم المكتبات تدعى هيدر فايلز head files

المكتبة iostream يجب تن تستدى فى اى برنامج يستخدم الكائن cout لأنه ليس من الاساس الخاص بلغة الى++ و بالتحديد هو جزء من مكتبة input-output stream و اختصاره هو iostream

حسنا ال # ليس جملة سى ++ عادية لكنها اوامر لكى تأتى بأى ملف (مكتبة او سورس كود اخر الخ الخ سوف تتعلم ذلك فى الفواصل القادمة) الى داخل السورس كود الخاص بك

مثال اى برنامج يستخدم ال cout يجب ان يكون هناك مكتبة ال iostream

حسنا من الممكن الاستغناء عن ذلك بعمل copy/past للكود الطوييييييييل جدا داخل مكتبة ال iostream لكن لماذا ذلك اذا كان بامكانك ادراجه فى ملفك بنظام ال #include

تحذير: لا تستخدم ال semicolon (;) فى ناية سطر ال #include لأنه ليس جملة سى++ عادى انما هو امر محدد لا يأخذ ال ;

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

بعد عدة فصول سوف تتعلمون كيف تعملون ال header file الخاص بك و ان تطلبه بال #include و تستخدمه ايضا

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

المتغيرات و المتغيرات الثابتة

حسنا ما هى المتغيرات ؟

المتغيرات هى مساحة فارغة محددة فى الذاكرة الرئيسية تتيح لك تخزين البيانات و العمل عليها من خلال الذاكرة الرئيسة

رئينا تلك الاشياء و تعلمنا عنها فى الفصل الاول.

جزء من عملنا نحن المبرمجون هو معرفة كم عدد المتغيرات المراد استعمالها و ما هى اليبيانات التى سوف تحملها

فى البرنامج (مثال) التالى سوف نستخدم متغير مثل هذا

int number;

ما قمنا به هو عمل متغير جديد بهذا السطر , هى تخبر المتغير بأسمه و نوعه و نوع البيانات التى سوف تَضع عليه حسنا

الاسم فى هذا المتغير هو number و النوع هو int حسنا هنا نخبر الكومبايلر انه سوف يحمل اعداد عادية و ليست حقيقة

لاحقا فى هذا الفصل سوف نتعلم عن كل انواع المتغيرات.

//This program has a variable
#include <iostrteam>
using namespace std;

int main()
{
int number;
number = 5;
cout << "The value in number is " << number << endl;
system("pause");
return 0;
}

المخرجات :

اقتباس

The value in number is 5

ملاحظة: يجب عليك ان تقوم بعمل تعريف لكل متغير جديد لكى تستخدمه فى السى++ تعريف المتغيرات من الممكن ان يُعرف فى اى منطقة لكن قبل ان تقوم بأستخدامه ايا كان

لاحقا فى هذا الفصل سوف تعرف اين افضل مكان.

ملاحظة : تعريف المتغيرات ينتهى ب semicolon ;

حسنا ال:

number = 5;

هذه تُعرف بتثبيت الرقم على المتغير

حسنا علامة ال = هذه تعمل نسخ من الرقم الذى على اليمين (5) الى المتغير الذى على اليسار اسمه (number)

بعد الانتهاء من هذه الرسالة سوف يتم تثبيت رقم 5 على هذا المتغير

ملاحظة : هذا السطر لا يطبع اى شئ على الشاشة لكنها تعمل بخلف الاسوار و تُخزن داخل الذاكرة الرئيسية

حسنا ال

cout << "The value in number is " << number << endl;

ثانى اداة تُبعث الى ال cout هى المتغير number عندما تُرسل المتغيرات الى ال cout تُطبع الرقم/حرف الذى بداخل المتغير.

ملاحظة : لا يوجد " " بين المتغير لاحظوا المثال التالى و سوف تفهمون قصدى

//This program has a variable
#include <iostrteam>
using namespace std;

int main()
{
int number;
number = 5;
cout << "The value in number is " << "number" << endl;
system("pause");
return 0;
}

المخرجات

اقتباس
The value in number is number

عندما تضع ال " " بين المتغير number تحول الى string literal و لن يبقى متغيرو عندما يُرسل string literals

سوف يُطبع على الشاشة بالتحديد مثلما هو, بالتأكيد لاحظتم وجود ال endl و لا يوجد حولها " " لنفس السبب.

بعض الاحيان Number ليس Number

كما شاهدنا فى المثال الماضى عندما وضعنا ال " " حول اسم المتغير تغيرت نتائج البرنامج تمام. لكن بعض الاحيان وضع ال " " حول اشياء اخرى لن تكون string literal دائما ربما تعطى خطاء مثال فى البرنامج الماضى لقد وضعنا فى المتغير number رقم 5, لكنه لن يعمل بالطريقة القادمة سوف يعطى خطاء

number = "5";

فلا هذا السطر 5 لن تكون متغير(رقمى) لكنها ستكون string literals . بسبب الرقم الذى تم تعريفه على المتغير بين " " لكن المتغير الرقم 5 غير ال string literals "5" ليسوا مثل بعض نهائيا .

فى الواقع طريقة تمثيل الارقام فى شكل string اى رسالة نصية و يسبب مشاكل لبعض المبرمجين فى الفهم لكنه بالسهل بأذن الله فقط تذكر ان ال strings مصنوعة للقراءة من قبل البشر فهى تُطبع على شاشات الكمبيوتر و الورق لكن ال Numbers اى الارقام مصنوعة مخصصا للرياضيات لا يمكنك عمل رياضيات بال string . قبل ظهور الارقام على الشاشة يجب ان تحول الى strings و انا لا اتحدث هنا عن انها تتحول كاملة مثلا لا بل ستتحول لذلك الهدف فقط و ستبقى متغير رقمى يمكن حسابته بعكس المتغير الذى يوضع " " فهذا سيكون string للأبد و لا يمكن عمل عمليات حسابية به ( الكائن cout يسطتيع ان يحول الارقام الى string لكى يُطبع على الشاشة)

Literals (المتغيرات الثابتة)

المتغيرات ( variables ) تسمى متغيرات لأنها من الممكن ان يتم تغير الارقام التى بداخلها لك ال Literals لن تتغير و ستبقى ثابتة لعمل عمليات حسبية معينة.

مثال:

#include <iostream>
using namespace std;

int main()
{
int apples

apples = 20;
cout << "Today we sold " << apples << " bushels of apples.\n";
system("pause");
return 0;
}

المخرجات

اقتباس
Today we sold 20 bushels of apples.

بالطبع المتغير هو apple و مهئ على انه integer اى رقم صحيح

الجدول التالى يعرفك على الثوابت التى فى المثال:

اقتباس

المتغيرات الثابتة (literal)-------------------------------------نوع الثوابت----------------------------------------

20 integer literal (رقمى)

"Today we sold " string literal (نصى)

"bushels of apples.\n" string literal (نصى(

0 integer literal (رقمى)

ما هى مهام الثوابت ؟؟؟ كما شاهدنا فى هذا البرنامج تم تخزين المتغير apples فهذا كان ثوابت لأنه ثابت و يُعرض كما هو

ملاخظة ال ( literals ) تدعى ايضا ( constatn )

حسنا فى المشاركة القادمة سوف نتحدث عن طريقة طريقة اختيار اسم المتغير.

Identifiers (اختيار اسم المتغير)

الملخص : اعطاء الاسم للمتغيرات يدل على ما يفعله هذا المتغير.

ال Identifier هو اختيار اسم يجل على شئ ما .

اسامى المتغيرات(variables) مثال على ال identifiers يجب عليك اختيار اسامى المتغيرات فى السى++ و يجب عليك عدم استخدام اى كلمات من كلمات لغة السى++

الجدول التالى يوضح ذلك

اقتباس

The C++ Key Words:

asm------------------------ auto------------------------ break------------------------ bool------------------------ case

catch-------------------- char-------------------- class-------------------- const-------------------- const_cast

continue-------------------- default-------------------- delete-------------------- do-------------------- double

dynamic_cast-------------------- else-------------------- enum-------------------- explicit------------------- extern

false-------------------- float-------------------- for-------------------- friend-------------------- goto

if-------------------- inline-------------------- int-------------------- long-------------------- mutable

namespace-------------------- new-------------------- operator-------------------- private-------------- protected

public-------------------- register-------------------- reinterpret_cast-------------------- return--------------- short

signed-------------------- sizeof-------------------- static static_cast-------------------- struct

switch-------------------- template-------------------- this-------------------- throw-------------------- true

try-------------------- typedef-------------------- typeid-------------------- typename-------------------- union

unsigned-------------------- using-------------------- virtual-------------------- void-------------------- volatile

wchar_t-------------------- while

يجب عليك دائما اختيار الاسامى للمتغير الخاص بك لكى يعطى شرح بسيط على ما فى المتغير مثال:

اريد ان اقوم بعمل متغير يقول لى عدد التفاحات فى المخزن لدى

يمكن استخدام هذا

int x = 1513;

او من الممكن استخدام

int applesAvailable = 1513;

الاسم applesAvailabe يعطى اى شخص يقراءه فكرة عن ما بداخله.

هذه هى الطريقة للبرمجة التى تساعد على قرائة السورس كود بسهولة, مما يعنى انك سوف تفههم ما الذى يقوم بعمله البرنامج بمرجد بدء قرائة الكود . لأن برامج العالم الحقيقة يوجد بها الاف السطور من الاكواد من المهم استخدام ال

self documenting ( قدرة على قرائة الكود) على قدر المستطاع.

من المؤكد انك لاحظت الخلط بين الحروف الكبيرة و الصغير فى المتغير applesAvailabe . للمعرفة كل كلمات السى++ يجب بدئها بالحروف الصغيرة لكن المتغيرات من الممكن بدئها بحروف كبيرة.

السبب فى استخدام الحرف A فى applesAvailable هو توضيع الكلمات الجديدة لكى يكون من السهل قرائته بسهولة

apples available هى كلمات و ببساطة اخرى لا يمكن وضع مساحات فارغة بين اسم المتغيران و عندما تريد عمل اسم المتغير apples + available سوف يكون applesavailabe لكن لسهولة القرائة قمنا بعمل ال

int applesAvailabe;

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

من الممكن استخدام ال _ مثال

int apples_available;

حسنا ال

(الاسامى المسوح بها)

Legal Identifiers

مع احترامى الكامل للستايل الذى اخترته, تأكد من عمل المتغيرات الخاصة بقى سلسة بمعنى من الممكن قرائتها

هنا بعض القواعد التى نحب ان ننوه عنها:

1- اول حرف فى الكلمة يجب ان يكون حرف من الحرف ما بين حرف a,z او A,Z او _ (underscore)

2- بعض الحرف الاول من الممكن استخدام الحروف بين a,z او A,Z او الارقام من 0,9 او ال _

3- يجب ان تحذر فكلمة ApplesAvaialbe ليست applesAvailable .

الجدول التالى يخبركم اسامى المتغيرات المسموح بها و الغير مسموح بها

اقتباس

Variable name ---------------------------------------- مسموح ام غير مسموح ----------------------------

dayOfWeek مسموح

3dGraph غير مسموح. لا يمكن البدء بارقام

_employee_num مسموح

June1997 مسموح

Mixture#3 غير مسموح . فقط الارقام و الحروف و ال_ .

فى المشاركة القادمة سوف اتحدث عن انواع المتغيرات

3

.Everyone has a dream

.I never thought that I would be the one I am on now

...No Pain No Gain

مشرف قسم السى/سى++ و الاسيمبلى سنة 2015 بأذن الله ...

تعديل: مشرف قسم السى/سى++ من 2012.

#4

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

الملخص : هناك العديد و العديد من انواع المتغيرات و كل منهم مخصص لشئ محدد. المتغيرات مقسمة على حسب انواع البيانات التى تخزن .المتغيرات الرقمية int يمكنها فقط احتواء ارقام منغير كسور فقط.

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

عندما تقوم بكتابة برنامج يجب عليك معرفة ما نوع البيانات التى سوف تٌقدم.

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

فى السى++ يوجد العديد من انواع المتغيرات , يوجد نوعين للأرقام و نوعين للحروف و النصوص. الارقام تقسم الى قسمين الارقام من دون الكسور و الارقام ذات الكسور الارقام من دون الكسور هى 12,15,175,-34 و هكذا الارقم ذات الكسور هى 23.7,189.0231,0.986 و هكذا بالاضافة الى ان هذا ليس التقسيم الوحد فلكل نوع من تلك يوجد انواع بداخلهم لمساحات محددة.

هيا لنرى كيف نختار النوع الذى نحتاجه:

1- الارقام الكبيرة ام الصغيرة التى يتم تخزينها.

2- كم من المساحة الرئيسية سوف يتم استخدامه.

3- هل سوف تكون signed اى يوجد بها ارقام سلبية ام unsigned اى لا يوجد بها ارقام سلبية.

4- ما الرقم الذى سوف يكون بعد الكسر.

مساحة المتغيرات هى حجمها فى الذاكرة الرئيسية (RAM) المتغيرات ذات المساحات الاكبر هى ذات الارقام الاكبر.

الجدول التالى يوضح لنا المساحة و المدى الرقمى :

اقتباس

نوع البيانات ------------------- المساحة ---------- المدى الرقمى الذى يقبله ---------------

short 2 bytes -32,768 to +32,767

unsigned short 2 bytes 0 to +65,535

int 4 bytes –2,147,483,648 to +2,147,483,647

unsigned int 4 bytes 0 to 4,294,967,295

long 4 bytes –2,147,483,648 to +2,147,483,647

unsigned long 4 bytes 0 to 4,294,967,295

هنا بعض الامثلة على عمل متغيرات من هذه الانواع

int days;
unsigned speed;
short month;
unsigned short month;
long deficit;
unsigned long insects;

المتغيرات ال unsigned لا يسمح لها بالارقام السلبية اذا فسوف تكون دائما positive مثال المتغيرات التى تحمل الاعمار او الاوزان لن تحمل اقل من الرقم 0 ابدا اذا فال unsigned ينفعنا هنا.

ملاحظة : المتغير unsigned int من الممكن كتابته unsigned فقط مثال

unsigned int days;
unsigned days;

فى الجدول الماضى لاحظنا ان ال Int و ال long نفس المساحة و نفس المدى و ال Unsigned int و Unsigned long نفس المساحة و المدى ايضا هذا ليس دائما نفس الشئ على كل الاجهزة.لاحقا ستعرف المساحة الخاصة بجهازك.

هذا الجدول يوضح الفرق:

1- int على الاقل فى مثل حجم short (فى الواقع هى اكبر بسبب الاجهزة الحديثة)

2- long فى نفس مساحة ال Int

3- unsigned short فى نفس مساحة ال short

4- unsigned int فى نفس مساحة ال int

5- unsigned long فى نفس مساحة ال long

لاحقا فى هذا الفصل سوف تتعلمون ال sizeof و سوف تعلمون مساحة المتغيرات فى جهازك.

كما قولنا من قبل المتغيرات تبدء بنوع المتغير ثم اسم المتغير

المثال تالى يوضع كيفية استخدام اكتر من نوع متغير:

#include <iostream>
using namespace std;

int main() 
{
int checking;
unsigned int miles;
long days;

checking = -20;
miles = 4276;
days = 187610;
cout << "We have made a long journey of " << miles;
cout << " miles.\n";
cout << "Our checking account balance is " << checking;
cout << "\nAbout " << days << " days ago Columbus ";
cout << "stood on this spot.\n";
system("pause");
return 0;
}

المخرجات:

اقتباس

We have made a long journey of 4276 miles.

Our checking account balance is -20

About 187610 days ago Columbus stood on this spot.

فى اغلب البرامج سوف تحتاج اكثر من متغير.

مثال لو البرنامج يستخدم 2 متغير lenght, width من الممكن تعريفها كالتالى :

int lenght;
int width;

من الاسهل عمل التالى

int length, width;

من الممكن تعريف اكثر من متغير على نفس السطر و يوجد بينهم فواصل مثل ما حدث.

المثال التالى يوضح ذلك:

#include <iostream>
using namespace std;

int main()
{
int floors, rooms, suites;

floors = 15;
rooms = 300;
suites = 30;
cout << "The Grande Hotel has " << floors << " floors\n";
cout << "with " << rooms << " rooms and " << suites;
cout << " suites.\n";
system("pause");
return 0;
}

المخرجات:

اقتباس
The Grande Hotel has 15 floors

with 300 rooms and 30 suites.

ثوابت ال int و ال long

للنظر الى التالى

floors = 15;
rooms = 300;
suites = 30;

كلُ من هذه الاسطر يحتوى على integer literal . فى السى++ , ثوابت المتغيرات تخزن فى الذاكرة على شكل int . يوجد بعض الانظمة التى تقوم بعمل ال Int 2 بات اذا فرقم 50000 الف مثلاا كبير جدا على Int اذا فسوف يخزن على شكل long .

شيئا من الاشياء الجميلة فى السى++ انها تعطيك التحكم الكامل فى كل شئ فى برنامجك اذا اردت ان تغير شيئا مخزن فى الذاكرة فهناك ادوات لفعل ذلك مثال :

لو انتا فى حالة و يوجد لديك Integer literal لكن انتا تحتاج ان تخزنها على شكل long (مع العلم ان ذلك لن يحدث فى الوقت الحالى لا داعى لل long لأن ال int موجودة و بنفس المساحة ). السى++ يسمح لك بفعل ذلك عن طريق شئ بسيط اضافة حرف L فى نهاية الرقم مثال :

int Z;
Z = 5L;

هكذا تحولت الى long

ملحوظة : يمكنك استخدام حرف ال L الصغير هكذا l لكنه يبدوا فى الكثير من الاحيان انه رقم 1 فيصعب معرفته.

الهيكسا ديسيمل و الاوكتال

المبرمجين غالبا يستخدمون انواع اخرى من الارقام فليس فقط الرقم الطبيعى بليستخدمون الهيكسا ديسمل و الاوكتال

(الرقم الطبيعى سوف نناديه بأسمه فى الانجليزية : ديسيمال)

فلنشر الاخلاف

الديسيمال الطبيعى يتم العد الى (10) من ثم نزيد عليها انما الهيكسا ديسمل يتم العد الى (16) اما الاوكتال (8)

هذه الاعداد يتم استخدامها من الكثير من المبرمجين لأنها مفيدة

بالاساس (by default) السى++ يضع كل المتغيرات الرقمية المثبتة بشكل الديسيمال لكن من الممكن استخدام الهيكسا ديسيمل

مثال:

الهيكسا ديسمال دائما بدايتها تكون 0x من ثم الرقم هذا ليس حرف o انما هو الرقم صفر حسنا الرقم التالى بالهكسا ديسيمل سيكون :

0xF4

يساوى فى الديسمال

244

الاوكتال : دائما تُبدء بصفر 0

مثال : الرقم التالى فى الاوكتال

031

يساوى فى الديسمال :

25

ملاحظة : انت لن تكتب فى الوقت الحالى برامج بهذه الطريق و لكن من المهم فهم هذه الاموار لكى تقوى مهاراتك البرمجية لقراءة السورس كود الخاص بالاخرين.

فى المشاركة القادمة سوف نتحدث عن Char Data type اى نوع البيانات الخاصة بال Char

3

.Everyone has a dream

.I never thought that I would be the one I am on now

...No Pain No Gain

مشرف قسم السى/سى++ و الاسيمبلى سنة 2015 بأذن الله ...

تعديل: مشرف قسم السى/سى++ من 2012.

#5

Char Data Type

(نوع البيانات Char)

من الممكن ان تكون متعجب اين هى المتغيرات ذات ال 1 byte ها هى .

السبب فى السماح لنوع integer لوضع بداخله الحروف هو ان اى حرف مكون من ارقام مثال حرف A هو رقك 65 و سوف ترون ذلك فى الامثلة.

عندما يتم تخزين حرف فى الذاكرة فهو لا يخزن على هيئة حرف بل على هيئة رقم و عندما يتم طباعة النصوص فهو يشاهد الحرف رقم كذة مثال حرف A رقم 65 اذا فهو يرى رقم 65 فيحوله الى A و يطبعه

المثال التالى يوضح انك عندما تعمل مع الحروف فهى فى الاساس ارقام.

#include <iostream>
using namespace std;

int main()
{
char letter ;

letter = 65;
cout << letter << endl; 
letter = 66;
cout  << letter << endl;
system("pause");
return 0;
}

المخرجات :

اقتباس

A

B

ارئيتم ؟؟؟؟ ال A هو 65 ال B هو 66 ال C هى 67 الخ الخ و هم يخزنون فى الذاكرة على هيئة ارقام ثم يتم تحويلها الى الحرف الخاص بها

ثوابت ال char

Char literals

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

كما عرفنا فأن حرف A يمثل رقم 65 و هكذا فى اى وقت البرنامج يعمل مع الحروف فهو يعمل مع كود يظهر فى الاخير حروف لكن فى الذاكرة فهو يخزن رقم حتى لو فى الكود هو مكتوب حرف كما سنرى فى المثال القادم :

#include <iostream>
using namespace std;

int main()
{
char letter ;

letter = 'A';
cout << letter << endl; 
letter = 'B';
cout  << letter << endl;
system("pause");
return 0;
}

المخرجات :

اقتباس

A

B

لاحظوا ان هنا نحن نعمل مع ' و ليس مع " فللحرف الواحد نستخدم '

من المهم الا تتعثر و تخطء فى الفهم لأن هذا Character literal و الثانية String literals .

ال strings هى سلسلة من الحروف مجمعة مع بعضها البعض و تأخذ مكان واحد من الذاكرة, لكن مشكلة ال string انها من الممكن تكون اى مساحة و هذا يعنى انها من الممكن ان تكون ابدية و تأكل كل الذاكرة لكن هنا يوجد شئ مخفى لا نراه .

فى السى++ دائما مع ال string يقوم بعمل بايت اضافى لشئ يدعى ال null terminator و هذه تعنى نهاية الجملة النصية

رمزها هو \0 و هو رقم 0 .

المثال التالى يوضح:

اقتباس
S e b a s t i a n \0

فى البداية لاحظ انه لا يوجد " " مخزنة مع ال string ال " " هى تدل على بداية و نهاية الجملة فقط

ثانيا لاحظ اخير حرف فى السطر و هو \0 هذا هو البايت الاضافى فلنرى

كل حرف بواحد بايت اذا فسوف تكون

اقتباس
Sebastian

اذا فهم 9 بايتات ثم نضيف ال \0 لأنهاء الجملة سوف يبقوا 10 بايت اذا مع ملاحظة انها لا تُطبع على الشاشة هى شئ خفى فقط لأنهاء الجملة النصية و معرفة مساحة الجملة النصية.

ملاحظة : السى++ اوتوماتيك يُضيف ال \0 فى نهاية اى نص .

الان لنرى الفرق بين تخزين ال string وال char

مثال

اقتباس
'A'

هكذا مخزنة فى ال char و هى A فقط و مساحتها 1 بايت

اقتباس
"A"

هكذا مخزنى ك string و هى A \0 و مساحتها 2 بايت

ارئيتم الفرق ؟؟؟؟

لأن المتغير char مساحته محددة لبايت واحدة فلا يمكن استخدام

اقتباس
"A"

لأنها مكون من 2 بايت .

اظن انك مستغرب اى متغير يحمل string فى السى++ انتا سوف تعرف فى الفصل القادم.

شئ واحد فقط : انتا تعلمت ان بعض ال strings تبدو مثل جرف واحد فقط و لكن هذا ليس صحيحا من الممكن ان يكون هناك character شكلها فقط يدل على انها string انما هى char مثل \n فهى حرف واحد فقط على بعضه البعض

كل ال \ ثم حرف تعتبر بايت واحد فقط اذا فهو char فقط

المثال التالى يوضح ذلك :

#include <iostream>
using namespace std;

int main()
{
char letter ;

letter = 'A';
cout << letter << '\n'; 
letter = 'B';
cout  << letter << '\n';
system("pause");
return 0;
}

المخرجات :

اقتباس

A

B

الى هنا نكون قد انتهينا من ال char

فى المشاركة القادمة سوف نتحدث عن ال floating point numbers

.Everyone has a dream

.I never thought that I would be the one I am on now

...No Pain No Gain

مشرف قسم السى/سى++ و الاسيمبلى سنة 2015 بأذن الله ...

تعديل: مشرف قسم السى/سى++ من 2012.

#6

Floating point daya types

الارقام ذات الكسور

الملخص : ال floating point هى نوع من الداتا التى من الممكن الوضع بداخلها ارقام حقيقية (بها كسور)

الارقام العادية(دون كسور) لا تنفع فى الكثير من الاعمال لو انتا تقوم بعمل برنامج يحسب المال و المكسب و الخسارة يجب استخدام ال floating point data types لاحتوائها على كسور .

فى الواقع ارقام ال floating point تأتى بالمادة العلمية الخاصة بالرياضيات فمثلا الرقم

اقتباس
47281.97

سوف يساوى

اقتباس
4.7828197*10.4

حسنا ال

اقتباس
10^4

يساوى 10000 و ال

اقتباس
4.728197 * 10000

يساوى

اقتباس
47281.97

الكمبيوتر يستخدم الرمز E مثال

رقم

اقتباس
47281.97

سوف يكون

اقتباس
4.728197E4

يتم اخذ الرقم الذى بعد ال E و تشوف اين هى ال point و تمرر 4 ارقام للأمام سوف يطلع لك الناتج الصحيح

الجدول التالى يوضح ذلك

اقتباس

Decimal Notation --------------------------- Scientific Notation---------------E Notation

247.91 2.4781*10^2 2.4791E2

0.00072 7.2*10^-4 7.2E-4

29000000 2.9*10^6 2.9E6

فى السى++ يوجد 3 انواع من انواع البيانات الخاصة بال floating point

اقتباس

float

double

long double

ال float هى 4 بايت و double 8 بايت و ال Long double بالظبط زى double

الجدول القادم يوضح المدى و المساحات

اقتباس

Data type ----------------------- key word ------------- المدى و المساحة

Single precision float 4 bytes Numbers between ±3.4E-38 and ±3.4E38

Double precision double 8 bytes Numbers between ±1.7E-308 and ±1.7E308

Long double precision long double 8 bytes Numbers between ±1.7E-308 and ±1.7E308

بعض الكومبايلر تستخدم 10 بايت لل long double

هنعرف ده لاحقا

سوف تلاحظ انه لا يوجد unsigned float point لأنه دائما يخُزن سالب و ايجابى.

Floating Point Literals

ال floating point من الممكن التعرف عليها فى اكثر من شكل مثال شكل ال E Notation دليل على ال floating point

عندما تكتُب رقم كبير جدا او رقم صغير جدا فأن اسهل طريقة للتعرف عليه هو E Notation مثل ما رئينا من قبل

من الممكن ان تكون E او e لاحظوا ان فى البرنامج التالى كتبنا

اقتباس
1.495979E11

لكنها طهرت هكذا

اقتباس
1.49598e+011

و ايضا

اقتباس
1.989E30

لكنها ظهرت هكذا

اقتباس
1.989e+30

علامة ال + ليس بشكل دائم تظهر فالكومبايلر يختلف

المثال تالى يوضح كل شئ

#include <iostream>
using namespace std;

int main()
{
float distance;
double mass;

distance = 1.495979E11;
mass = 1.989E30;
cout << "The sun is " << distance << " meters away.\n";
cout << "The sun\'s mass is " << mass << " kilograms.\n";
system("pause");
return 0;
}

المخرجات

اقتباس

The Sun is 1.496e+008 kilometers away.

The Sun's mass is 1.989e+030 kilograms.

من الممكن كتابة ال floating point فى الشكل التالى

الرقم :

اقتباس
1.495979E11

سيكون

اقتباس
149597900000 . 00

بالطبع الخاصية E اسهل بكثير لكن للأرقام الصغيرة مثال :

اقتباس
47.39

سيكون

اقتباس
4,739E1

بالطبع الرقم الطبيعى افضل

كل الارقام التالية متساوية :

اقتباس

1.496E8

1.496e8

1.496E+8

1.496e+8

149600000.0

كل ال floating point يخزن فى الذاكرة على شكل ال double ب 8 بايت لكن لكى تجعله float ب 4 بايت يجب عمل الأتى

وضع حرف F فى اخير الرقم مثال:

1.2F
45 . 907f

ملاحظة : لأن ال floating point بطبيعتها تخزن فى الذاكرة على اساسا double فيوجد الكثير من التحذيرات من جهة الكومبايلر ,عندما تضع floating point literal الى float مثال :

قمنا بعمل متغير float كالتالى :

num = 14.725;

سوف يُرسل لك رسالة خطاء لنك لم تضع ال f هكذا:

num = 14.725;

اذا كنت تريد ان تقوم بعمل long double قم بوضع حرف L فى نهاية المتغير فقط

مثال :

1034.56L
89.2l

التحويل من floating point الى integer

عندما نقوم بعمل floating point دائمايوجد بها كسر للنظر الى المثال التالى:

int number;
number = 7.5;

لكن هنا لن يَضع الكسر فسوف يتم حذفه اوتوماتيكيا

هذا الكود حاول ان يضع فى ال Integer رقم floating point لكنه سيفشل.

حسنا لنرى التحويل من float الى Int فى المثال التالى :

int i;
float f;
f = 7.5;
i =f;

عندما تم تعيين ال floating point و اسم المتغير كان f الى integer فسوف يزال الكسر اذا فسوف يكون فى ال i 7 فقط.

ملاحظة : متغيرا ال floating point تتحمل اكثر من متغيرات ال integers , مثال عندما تضع رقم كبير جدا فى float فيعمل و لكنه اكبر بكثير من ال int فسنجد الجزء ما قبل الكسر سيتغير لأنه اكبر بكثير من ال Int فسوف يتغير و لن يعطيك ناتج صحيح.

ملاحظة :عندما يكون ال floating point مثال :

f = 7.9;
و نأتى ب Integer 
i = f;

فستجد انه سوف يتحول الى 7 فقط.

فى المشاركة القادمة سوف نتحدث عن the bool data type

The bool Data Type

الملخص :كلمة bool هى اختصار لكلمة boolean و هذا الاسم هو اسم من اخترع هذه الفكرة و هى تسمى ب true or fales اى صحيح او خطاء فقط و سوف نتعلم ذلك لاحقا.

التعبيرات التى يوجد بها true او false تدعى تعبيرات boolean و سُميت على اسم العالم الرياضى George Boole

ال bool data type تسمح لك بعمل متغير صغير قادرة فقط على حمل true او false و سنرى ذلك فى المثال:

#include <iostream>
using namespace std;

int main()
{
bool boolValue;
boolValue = true;
cout << boolValue << endl;
boolValue = false;
cout << boolValue << endl;
system("pause");
return 0;
}

المخرجات:

اقتباس
1

0

كما شاهدت فى المثال ال true تُمثل الرقم 1 و ال false ثُمثل الرقم 0 انت لن تستخدم النوع bool حتى الفصل الرابع

فقط تذكر انمها من الادوات المفيدة حتى ذلك الحين

فى المشاركة التالية سوف ندرس كيفية معرفة حجم المتغيرات.

معرفة حجم المتغيرات (sizeof)

الملخص :الاداة sizeof تُستخدم لمعرفة حجم المتغيرات فى انظمة التشغيل المختلفة.

حسنا اداة خاصة تُدعى sizeof تطبع لنا حجم البايتات المستخدمة من قبل كل نوع.

مثال:

cout << "The size of an integer is " << sizeof(int);

الاسم الخاص بنوع البيانات يُكتب داخل القوسين

المثال التالى يوضح لنا كيفية عمل برنامج كامل

#include <iostream>
using namespace std;

int main()
{
long double apple;

cout << "The size of an integer is " << sizeof(int);
cout << " bytes.\n";
cout << "The size of a long integer is " << sizeof(long);
cout << " bytes.\n";
cout << "An apple can be eaten in  " << sizeof(apple);
cout << " bytes!\n";
system("pause");
return 0;
}

المخرجات

اقتباس

The size of an integer is 4 bytes.

The size of a long integer is 4 byers.

An aple can be eaten in 8 bytes!

فى المشاركة القادمة سوف نتحدث عن Variable Assignments and Initialization اى كيفية عمل و تركيب المتغيرات

تهيئة و تعريف المتغيرات

Variable Assignment and Initialization

الملخص: علامة تهيئة المتغير(=) تضع الناتج الذى على اليمين الى المتغير الذى على الشمال, و الناتج الذى يضح هو عملية تعريف للمتغير.

كما رئينا فى العديد من الامثلة الماضية الناتج لأى متغيريهيئ عن طريقة علامة ال = و من الشمال لليمين

فى المثال القادم سوف يتم نسخ رقم 12 الى المتغير unitsSold

unitsSold = 12;

ال (=) تلك تدُعى علامة التهيئة. هذه العلامة تقوم بعمل نسخ من اليمين الى اليسار بمعنى اننى اضع المتغير على اليسار ثم الرقم الذى اضعه اليه على اليمين.

مثال:

12 = unitsSold;

هذا لن يعمل و سوف يعطى خطاء كما قولت من قبل.

فى السى++ ال = يأتى على اليمين بعد المتغير و يأتى بعده الرقم الذى نضعه للمتغير. اليس كذلك ؟ لماذا ؟؟؟؟

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

من الممكن ايضا عمل التهيئة و التعريف على نفس السطر

مثال:

#include <iostream>
using namespcae std;

int main()
{
int month = 2, days = 28;

cout << "Month " << month << " has " << days << " days.\n";
system("pause");
return 0;
}

المخرجات

اقتباس
Month 2 has 28 days.

كما رئينا لقد قمنا بعمل 2 متغير فى نفس السطر و ايضا تم تهيئتهم بالاعداد فى نفس السطر

مثال اخر:

int flightNum = 89, travelTime, departure = 10, distance;

تم عمل 4 متغيرات فى سطر واحد فقط و لكن تم تهيئة و تعريف اثنين و تم تهيئة اثنين اخرين من دون تعريف

ما هم

flightNum

تم تهيئته و تعريفه

travelTime

تم تعريفه فقط للأستعمال فى وقت اخر

departure

تم تهيئته و تعريفه

distance

تم تعريفه فقط للأستعمال فى وقت اخر

فى الدرس القادم سوف نتحدث عن ال Variable Scope

Scope

مدى المتغيرات

الملخص: مدى المتغيرات هو جزء من البرنامج يمكننا من خلاله استخدام البرنامج به.

كل متغير له مدى, مدى المتغيرات هو اين يمكنا استخدام هذا المتغير و اين لا. القواعد الخاصة بمدى المتغيرات صعبة جدا و سوف تتعرف على اساسيتها هنا و فى الفصول الاخرى سوف تتقنها بأذن الله .

اول قاعدة خاصة بالمدى فى البرنامج التالى :

#include <iostream>
using namespace std;

int main()
{
cout << value;  //ERROR! value not defined yet!

int value = 100;
system("pause");
return 0;
}

البرنامج لن يعمل لأنك قمت عطاء الامر له بطباعة المتغير من قبل ان تقوم بعمله اذا فلن يطبع شئ و سوف يعطيك خطاء.

لكى تصحح ذلك يجب عمل المتغيرات قبل الطباعة النصية.

فى المشاركة التالية سوف نتكلم عن العلامات الرياضية Arithmetic Operators

.Everyone has a dream

.I never thought that I would be the one I am on now

...No Pain No Gain

مشرف قسم السى/سى++ و الاسيمبلى سنة 2015 بأذن الله ...

تعديل: مشرف قسم السى/سى++ من 2012.

#7

Arithmetic Operators

العلامات الحسابية

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

السى++ يعطينا الكثبر من العلامات الرياضية لكى نقوم بعمل ما نريد بها . عامتا يوجد 3 انواع من العلامات الحسابية

اقتباس
Unrary, binary, ternary

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

اولا ال

اقتباس
unrary

ال unrary operators تتطلب فقط علامة واحدة مثال:

-5

بالطبع نحن نعرف ان هذا هو سالب 5 , و الرقم الذى يوجد هو 5 و يأتى قبله علامة - بمعنى انه سالب .

علامة السابل عندما تأتى بهذا الشكل تُدعى علامة النفى, بما انها تطلب علامة واحد فقط للنفى فهى unrary

ملاحظة: هنا نحن لا نعمل Minus لشئ لكننا قمنا بعمل متغير و عرفناه انه سالب ليس الا.

ثانيا ال

اقتباس
binray

علامات ال binray تعمل مع نوعان. علامات التهيئة . و علامات ال Ternary و سنتعرف على Ternary فى الفصل الرابع . الان سوف نتحدث عن علامات التهيئة و استخدام العمليات الحسابية بها.

الجدول التالى يُرينا العلامات و نوعها و طريقة استخدامه

اقتباس

العلامة ---------المعنى------------ النوع------------ مثال-----------------------------------------------------

+ جمع binary total = cost + tax;

- نفى binary cost = total - tax;

* الضرب binary tax = cost * rate;

/ القسمة binary salePrice = original / 2;

% متبقى القسمة binary remainder = value % 3;

كلا من تلك العلامات يعملون كما تتوقعون فعلامة الجمع تقوم بعمل الجمع تمام مثلا ما نعرف

مثال/

amount = 4+8;

الناتج سيكون 12.

علامة النفى تقوم بالنفى من اليسار لليمين مثل الواقع .

مثال

temerature = 112 -14;

الناتج 98 .

الخ الخ .

تحذير: عندما تقوم بعملية القسمة على متغير من نوع integer فسوف يقوم بعمل قسم يوجد بها متبقى مثال:

int parts = 17/3;

الناتج 5

و يتم استخدام علامة المتبقى لكى تعرف كم متبقى . لكن اذا اردت ان تقوم بعمل القسمة الكاملة فسوف تستعمل floating point

مثال:

float parts = 17.0/3;

بما ان الرقم تم وضع له .0 فأنه تحول الى floating point و القسمة ستكون صحيح فالناتج هو :

اقتباس
5.666667

ارئيتم الفرق .

علامة المتبقى

علامة المتبقى تعمل فقط مع ال int لأنها سترجع باقى القسم مثل المثال السابق الذى رئينها عندما قمنا بعمله int كان الناتج 5

و لكى نعرف باقى القسمة نستخدم التالى

int leftOver = 17 % 3;

و الناتج سيكون

اقتباس
2

.

فى الفصل القادم سوف تتعلمون كيفية استخدام ادوات الحسابية الصعبة. فقط الأن تعلم الاساسيات معى.

فى المشاركة القادمة سوف نتحدث عن ال Comments اى الملاحظات

الملاحظات

Comments

الملخص : الملاحظات من اهم الاشياء لكى يجعل لك البرنامج الخاص بك سهل القراءة.

حسنا سيفاجئك ان من اهم الاشياء فى البرمجة هى الملاحظات , الكومبايلر يتفادهم بمحرد ان يرى الرمز الخاص بهم.

كمبتدء جديد فى البرمجة انت لا تدرى ما هى اهمية كتابة ملاحظات على برنامج مكون من 30 سطر مثلا, لكن عندما تذهب الى الواقع سوف ترى انك تكتب الافا الاكواد و البرنامج مكون من 8000 الى 10000 سطر مثلا فبلطبع الملاحظات مهمة جدا

يوجد نوعين من الملاحظات

ملاحظات السطر الواحد : انتا رئيتها من قبل هى التى تبدء بال \\ الكومبايلر يتفادى اى شئ بعدها حتى نهاية السطر

مثال:

// PROGRAM: PAYROLL.CPP
// This program calculates company payroll.
// The payroll should be done every Friday no later than noon.
#include <iostream>
using namespace std;

int main() 
{ 
double payRate;     // holds the hourly pay rate
double hours;         //  holds the hours worked
int employNumber; //holds the employee number

هذا مثال بسيط و ليس كامل.

النوع الثانى : ذو الاسطر المتعددة :

هذا هو النوع القديم الذى

يبدء ب /* و ينتهى ب */

هذا النوع كام مصنوع مخصصا للسى كل شئ بين تلك العلامات الكومبايلر يقوم بتفاديه

مثال:

/* PROGRAM: PAYROLL.CPP
 This program calculates company payroll.
 The payroll should be done every Friday no later than noon.*/
#include <iostream>
using namespace std;

int main() 
{ 
double payRate;     // holds the hourly pay rate
double hours;         //  holds the hours worked
int employNumber; //holds the employee number

اى شئ بين تلك العلامتين هى ملاحظة من الممكن ان تقوم بعمل ملاحظات بألاف السطور طالما مازلت تقوم بالعمل بين تلك العلاميتن

ملاحظتان يجب اتخاذ عين الاعتبار بهما:

دائما لاحظ اختلاف علامة البدء و علامة النهاية.

لا تسنى ان تضع علامة النهاية لأنك اذا لم تفعل فأن كل شئ بعد نهاية الملاحظة و عدم قفل الملاحظة سيكون ملاحظة :D

فى المشاركة القادمة سوف نتحدث عن ال programming style

Programming Style

الملخص : للشكل الجمالى و للقرائة السريعة يجب عليك استخدام المسافات و ال tab و الاسطر الفارغة لكى يكون سهل القرائة

فقط سوف اعطى مثالا لنفس البرنامج لكن بشكلين مختلفين و انتا من يحدد

#include <iostream>
using namespace std; int main() { double shares=220.0;
double avgPrice=14.67;cout<<"There were "<<shares
<<" shares sold at $"<<avgPrice<<" per share.\n";
system("pause"); return 0;}

المخرجات

اقتباس
There were 220 shares sold at $ 14.67 per share.

الستايل الطبيعى :

#include <iostream>
using namespace std;

 int main()
 {
 double shares = 220.0;
double avgPrice = 14.67;

cout << "There were " << shares
<< " shares sold at $" << avgPrice << " per share.\n";
system("pause");
 return 0;
}

المخرجات

اقتباس
There were 220 shares sold at $ 14.67 per share.

كما لاحظتم فيوجد فرق واضح جدا فى قرائة الكود لكن نفس المخرجات.

ملاحظة : من الممكن ان تقوم بعمل الستايل الخاص بك .

شئ اخر رئينها و هو تقسيم الجملة الواحدة لأكثر من سطر لأن السى++ لغة تسمح بأكثر من سطر لنفس الجملة

مثال: جملة cout

cout << "The fahrenheit temperature is "
<< fahrenheit
<< " and the centigrade temperature is "
<< centigrade 
<< endl;

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

المتغيرات لكى يعمل هذا الكود هى

int fahrenheit,
celsius,
kelvin;

يوجد طرق كثيرة لكتابة الجملة على اكثر من سطر و سوف نرى ذلك من خلال فصولنا التالية

المشاركة القادمة سوف نتحدث عن الستايل القديم فى برمجة السى++ :

1

.Everyone has a dream

.I never thought that I would be the one I am on now

...No Pain No Gain

مشرف قسم السى/سى++ و الاسيمبلى سنة 2015 بأذن الله ...

تعديل: مشرف قسم السى/سى++ من 2012.

#8

احسنت ...

ماشاء الله

#9

ممتاز :)

لكن بعض الكومبايلرز لا تحتاج أمر الايقاف system("pause");

انا استعمل gcc :D

#10
amdman كتب:

ممتاز :)

لكن بعض الكومبايلرز لا تحتاج أمر الايقاف system("pause");

انا استعمل gcc :D

:D لينوكس (سوف اذهب اليه قريبا) لقد اعطيت ذلك الامر لأن الكومبايلر الذى نستخدمه (راجع شابتر 1 ) يتطلب هذا الامر :(

تابع الدورة ستستفيد بأذن الله

.Everyone has a dream

.I never thought that I would be the one I am on now

...No Pain No Gain

مشرف قسم السى/سى++ و الاسيمبلى سنة 2015 بأذن الله ...

تعديل: مشرف قسم السى/سى++ من 2012.

#11

بارك الله فيك

أحسنت أخي الكريم

بالتوفيق

====

صورة
صورة

حسابي في الفيس بوك
http://goo.gl/XIzwL

حسابي في تويتر
http://goo.gl/6p4e3

 

 
 
#12

من باب الإفادة فقط, أحببت أن أصحح هذه الفقرة (أظن أن أخي الفاضل X خانته العبارة فقط :blush: ) :

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

هذا الكلام ينطبق على float بعكس int لأن البعض يظن أن النوع int ينتج عنه الأنواع short,long,long long و هذا غير صحيح :) لأنه يوجد نوع بيانات رقمى واحد فى اللغه و هو int و له عدة modifier يطلق عليها length modifier و هي:

[signed] short, unsigned short, [signed] long, unsigned long, [signed] long long, unsigned long long

تستخدم الـ length modifier فى تحديد مدى الأرقام الذى سيتم إستخدامه للنوع int، بالنسبه للكمله signed فهى الإفتراضيه (و لهذا تم وضعها بين brackets للدلاله انها اختياريه) و تحدد أن النوع int يمكنه ترميز الأرقام الموجبه و السالبة.

============

بصراحة, أعجبتني دورتك جدا :wub:, لم أكن أظن أنها ستكون بهذه الدرجة :wink:

ننتظر جديدك + نحن بالمتابعة :)

تم تعديل هذه المشاركة بواسطة khaled_prg في 23 أكتوبر 2010 في 17:01

#13
khaled_prg كتب:

من باب الإفادة فقط, أحببت أن أصحح هذه الفقرة (أظن أن أخي الفاضل X خانته العبارة فقط :blush: ) :

هذا الكلام ينطبق على float بعكس int لأن البعض يظن أن النوع int ينتج عنه الأنواع short,long,long long و هذا غير صحيح :) لأنه يوجد نوع بيانات رقمى واحد فى اللغه و هو int و له عدة modifier يطلق عليها length modifier و هي:

[signed] short, unsigned short, [signed] long, unsigned long, [signed] long long, unsigned long long

تستخدم الـ length modifier فى تحديد مدى الأرقام الذى سيتم إستخدامه للنوع int، بالنسبه للكمله signed فهى الإفتراضيه (و لهذا تم وضعها بين brackets للدلاله انها اختياريه) و تحدد أن النوع int يمكنه ترميز الأرقام الموجبه و السالبة.

============

بصراحة, أعجبتني دورتك جدا :wub:, لم أكن أظن أنها ستكون بهذه الدرجة :wink:

ننتظر جديدك + نحن بالمتابعة :)

+1 لكن هذا ما قولته

انا اقصد ان هناك نوعان integer من غير كسور و ال float point ذات الكسور داخلهم تفتح لك ابواب بأنواع اخرى اليس هذا صحيحا ؟؟؟؟

.Everyone has a dream

.I never thought that I would be the one I am on now

...No Pain No Gain

مشرف قسم السى/سى++ و الاسيمبلى سنة 2015 بأذن الله ...

تعديل: مشرف قسم السى/سى++ من 2012.

#14
اقتباس
انا اقصد ان هناك نوعان integer من غير كسور و ال float point ذات الكسور داخلهم تفتح لك ابواب بأنواع اخرى اليس هذا صحيحا ؟؟؟؟

للأسف, كلامك غير صحيح و بالتحديد في الجزء الأحمر اللون :), أنا قلت أنو توجد "عدة modifier" للنوع int و ليس "عدة أنواع" :)

انظر جيدا إلى الكلام :

اقتباس
يوجد نوع بيانات رقمى واحد فى اللغه و هو int و له عدة modifier يطلق عليها length modifier

بانتظار بقية الدورة :happy:

احترامي لك :)

#15
khaled_prg كتب:

للأسف, كلامك غير صحيح و بالتحديد في الجزء الأحمر اللون :), أنا قلت أنو توجد "عدة modifier" للنوع int و ليس "عدة أنواع" :)

انظر جيدا إلى الكلام :

بانتظار بقية الدورة :happy:

احترامي لك :)

هذا ما اقصده لكننى كشارح للمبتدئين اشرحه بأسلوب بسيط الكلام ليس به اختلاف فأنا اقول لك انه يوجد نوعان floating point , integer يندرج منهم انواع للارقام الاقل حجما

.Everyone has a dream

.I never thought that I would be the one I am on now

...No Pain No Gain

مشرف قسم السى/سى++ و الاسيمبلى سنة 2015 بأذن الله ...

تعديل: مشرف قسم السى/سى++ من 2012.

#16
فيصل الحربي كتب:

بارك الله فيك

أحسنت أخي الكريم

بالتوفيق

====

شكرا لك اخى الكريم :)

.Everyone has a dream

.I never thought that I would be the one I am on now

...No Pain No Gain

مشرف قسم السى/سى++ و الاسيمبلى سنة 2015 بأذن الله ...

تعديل: مشرف قسم السى/سى++ من 2012.

#17
اقتباس
هذا ما اقصده لكننى كشارح للمبتدئين اشرحه بأسلوب بسيط الكلام ليس به اختلاف فأنا اقول لك انه يوجد نوعان floating point , integer يندرج منهم انواع للارقام الاقل حجما

الشرح للمبتدئين (أمثالي) لا يعني بأي حال من الأحوال أن تخالف قواعد اللغة أو تقول كلاما يخالف القواعد :sleep:

لا أريد أن أحول الموضوع إلى ساحة للنقاش حول هذه المسألة فأنا من متابعي الدورة و من تلامذتك أيضا :happy:

احترامي لك :)

#18
khaled_prg كتب:

الشرح للمبتدئين (أمثالي) لا يعني بأي حال من الأحوال أن تخالف قواعد اللغة أو تقول كلاما يخالف القواعد :sleep:

لا أريد أن أحول الموضوع إلى ساحة للنقاش حول هذه المسألة فأنا من متابعي الدورة و من تلامذتك أيضا :happy:

احترامي لك :)

خالد كلام كلانا صحيح

انتا الاقرب للقواعد , انا الاقرب للمبتدئين لأن مش كل مبتدئ هيفهم الى انتا بتقوله اذا فيجب تبسيط الامور جدا ثم عندما يصل للأحتراف من اللممكن ان نُدرس له القواعد ده لو هو هيدرس منا احنا ساعتها انتا فهمت قصدى

تمت انتهى.

تم تعديل هذه المشاركة بواسطة XMasterrrr في 23 أكتوبر 2010 في 23:31

.Everyone has a dream

.I never thought that I would be the one I am on now

...No Pain No Gain

مشرف قسم السى/سى++ و الاسيمبلى سنة 2015 بأذن الله ...

تعديل: مشرف قسم السى/سى++ من 2012.

#19

انتظروا غدا الاسئلة

.Everyone has a dream

.I never thought that I would be the one I am on now

...No Pain No Gain

مشرف قسم السى/سى++ و الاسيمبلى سنة 2015 بأذن الله ...

تعديل: مشرف قسم السى/سى++ من 2012.

#20

متابع للدوره .. ^_^

ويعطيك الف عافيــه .. اخي بانتظار المزيد .. ^

#21

تم اضافة اسئلة شابتر 2 الرابط الخاص بي

.Everyone has a dream

.I never thought that I would be the one I am on now

...No Pain No Gain

مشرف قسم السى/سى++ و الاسيمبلى سنة 2015 بأذن الله ...

تعديل: مشرف قسم السى/سى++ من 2012.

#22

تم اضافة شابتر 3 التفاعلات

.Everyone has a dream

.I never thought that I would be the one I am on now

...No Pain No Gain

مشرف قسم السى/سى++ و الاسيمبلى سنة 2015 بأذن الله ...

تعديل: مشرف قسم السى/سى++ من 2012.

#23

تم التعديل على موضوع الفهرس و اضافة القوانين و كمية الشباتر و اشياء اخرى....................... (فهرس) دورة السى++ من الصفر الى الاحتراف

.Everyone has a dream

.I never thought that I would be the one I am on now

...No Pain No Gain

مشرف قسم السى/سى++ و الاسيمبلى سنة 2015 بأذن الله ...

تعديل: مشرف قسم السى/سى++ من 2012.

#24

بارك الله فيك و كثر الله من امثالك

ملاحظة :

اقتباس
الشباتر

الشباتر = الفصول

يجب إستخدام اللغة العربية في جميع المشاركات

===

صورة
صورة

حسابي في الفيس بوك
http://goo.gl/XIzwL

حسابي في تويتر
http://goo.gl/6p4e3

 

 
 
#25

تمت اضافة الجزء الثانى و الاخير من الشابتر 3شابتر 3 (ألجزء الثانى)

.Everyone has a dream

.I never thought that I would be the one I am on now

...No Pain No Gain

مشرف قسم السى/سى++ و الاسيمبلى سنة 2015 بأذن الله ...

تعديل: مشرف قسم السى/سى++ من 2012.

مواضيع مشابهة