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

هدية خاصة لعيون الفارس خاصة ولباقي رواد المنتدى عامة ادخل ولن تندم!!!

مغلق
بدأه زائر في 23 أبريل 2001 · 3 رد · 4,899 مشاهدة · في قسم المواضيع الهامة في قسم السي /سي++
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

[ملاحظة]بإقتباس من رسالة : smsm

الأخ العزيز / الفارس أشكرك على مساعدتك لي واتمنى لك التوفيق والنجاخ إن شاء الله وأرجو أن تقبل مني هذه الهدية المتواضعة

وهي عبارة عن شرح للغة ++C

الفصل الأول

(الكائنات)

(Structures)

-مقدمة:

توفر لغة C++ لمستخدميها إمكانية تنظيم مجموعات من المتغيرات في صيغ و مجاميع خاصة تحمل أسماء جماعية، ويتم التعامل مع هذه المجاميع بالجملة من خلال اسم المتغير الجماعي الذي يمثلها وتختلف هذه المجاميع عن المصفوفات كون عناصرها من أنواع مختلفة من المعطيات.

وكل عنصر من هذه المجاميع يسمى عضواً "member".

وتستخدم بكثرة في إنشاء ومعالجة السجلات متنوعة المعطيات مثل سجلات الطلبة ودرجاتهم وسجلات العناوين والهواتف والبريد وغيرها…

-تعريف الكائنات ( Structure ):

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

-ملاحظة:تعرف الكيانات أيضاً باسم المنشآت.

-التركيب العام هو:

Struct اسم المتغير الجماعي

{

المتغير 1

المتغير 2

المتغير 3

} Struct1;

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

مثال توضيحي:

في المثال التالي كياناً لعنوان شخص ما كالاسم ، والشارع، وصندوق البريد، والمدينة:

struct address {

char name [20];

char street [30];

int p-o-box;

char city [15];

} information; (address information; (هذه الصيغة مقبولة وكأنها تشبه

يبين الجدول التالي الطول بالبايت المعطى لكل عضو من أعضاء الكيان، حسب ما هو معلن في الكيان نفسه ، علماً بأن المتغير الرمزي يأخذ طولاً مقداره بايت واحد والمتغير الصحيح طوله 2 بايت

المتغير الطول المحجوز من الذاكرة بالبايت

الاسم name 20

الشارع street 30

صندوق البريد P-O-Box 2 (لأنه عدد صحيح)

المدينة city 15

البلد country 15

ملاحظة: يمكننا بالطبع استخدام أكثر من متغير في آخر سطر من الكيان فمثلاً يمكن أن نستعمل السطر:

}struct1,struct2,struct3;

الذي يحتوي على ثلاثة متغيرات بدلاً من السطر التالي:

}struct1;

والذي يحتوي متغير واحد فقط.

ملاحظة: يمكن حذف اسم الكيان من التركيب العام أو حذف كلمة struct الموجودة في آخر سطر في التركيب العام ولكن لا يمكن حذف اسم الكيان و كلمة struct معاً .إي يمكن حذف أحدها وليس كليهما.

مثال: يوضح المثال التالي التركيب العام لكائنات ( Weather):

struct weather{

float temp;

float pressure;

float wind;

};

ملاحظة: ينصح مبرمج لغة C++ بالا يزيد طول كلمات ملفه عن خمسة آلاف بايت. وذلك لتجنب إي مشكلات تتعلق بترجمة البرنامج

*مصفوفة الكيانات ( Structure Arrays ):

تعتبر مصفوفة الكيانات من أهم تطبيقات الكيانات ، إذ يعلن عن الكيان أولاً ، ثم عن متغير المصفوفة

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

struct address information[50];

وفي المثال السابق يقوم باستحداث 50 مجموعة من المتغيرات ، كل منها يمثل كياناً متكاملاً .

*كيانات داخل كيانات أخرى:

بإمكان إي كيان أن يحوي بداخله كيانات أخرى وتعتبر الكيانات الداخلية أعضاء أو عناصر للكيان الخارجي المحتوي للكيانات الداخلية. وقد تسمى هذه الكيانات اسماً آخر وهو الكيانات المتداخلة

Netsted Structure.

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

struct record{

struct address;

char name;

float salary;

}struct record;

*الاستخدام العملي للكيانات:

الكيانات قوية جدا من الناحية البرمجية ومفيدة جدا في برمجه قواعد البيانات

و لعلك حتى الآن لم تفهم ما هي الكيانات وما هي الفائدة من استخدامات الكيانات ولذلك سوف نأخذ مثال عماي متكامل على استخدام الكيانات.

-المثال الأول: هو عبارة عن بطاقات خاصة بزبائن إحدى الشركات ، وكل بطاقة تحتوي على رقم الزبون واسم الزبون ومجال عمل شركته ، ورقم هاتفه ، وعنوانه الكامل.

--خطوات الحل: أولاً: سنبدأ بكتابة الشكل العام للكائنات ثم نقوم بتعريف المتغيرات:

struct card-st{

char Name[30];

char company[30];

char phone[20];

char street [25];

char city[25];

char state[3];

char zip[10];

};

وطبعاً كان بإمكاننا تعريف جميع تلك العناصر بصورة منفردة ، ولكن إذا تخيلنا أن علينا تكرار ذلك العمل من أجل مائة بطاقات مختلفة ، فإننا ندرك فائدة استخدام هذه البنى .

المثال الثاني: عن قاعدة البيانات الافتراضية التالية سوف ندرسها بالطريقة العادية وبطريقة هياكل البيانات لتعرف الفرق وتفهم الموضوع وفي نفس الوقت تدرك ميزات وفوائد هياكل البيانات

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

الصيغة المتغير أو وعاء البيانات

char [30] اسم الموظف افترضنا انه متغير حرفي سعته 30 حرف

int الرقم الوظيفي للموظف وهو عدد صحيح

float الراتب اليومي للموظف وهو عدد عشري لان الراتب من المؤكد انه سيحتوي على كسور

بيانات موظف الفترة الأولى

char [30] Name1;

int Code1;

float Wage1;

بيانات موظف الفترة الثانية

char [30] Name2;

int Code2;

float Wage2;

الصورة السابقة لتمثيل بيانات البرنامج مع اثنين من الموظفين يعملون لفترتين وكلما أدخلت بيانات اسم موظف الفترة الأولى سوف تستخدم المتغير Name1 وللفترة الثانية ستستخدم المتغير Name2 فماذا لو بدلت المتغيرين بالخطأ بالطبع سيحدث خلل كبير بالبرنامج دعنا نمثل ما سبق تماما بالطريقة الجديدة عن طريق استخدام هياكل البيانات

استخدام هياكل البيانات

struct OurDataBase

{

char [30] Name;

int Code;

float Wage;

}L1,L2;

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

الصيغة التفسير

Struct هو الأمر الذي ندرسه الآن ومعناه الإعلان عن هيكل بيانات

OurDataBase اسم الهيكل سميه كما شئت

{ قوس بداية البلوك

ضع ما يحلو لك من أنواع بيانات داخل البلوك

} قوس نهاية البلوك

L1,L2; متغيرات اختياريه ترمز لمن سيشارك في استخدام البيانات المعلنة للهيكل

كما رأيت بالمثال لم نستخدم متغير اسم للموظف الأول وآخر للموظف الثاني بل استخدمنا متغير واحد وسوف يتشارك أي عدد حسب تصميم الهيكل في استخدام بيانات الهيكل ولنوضح ذلك

للتعبير عن اسم الموظف الأول أو موظف الفترة الأولى

L1.Name

للتعبير عن اسم الموظف الثاني أو موظف الفترة الثانية

L2.Name

للتعبير عن رقم الموظف الأول أو موظف الفترة الأولى

L1.Code

للتعبير عن رقم الموظف الثاني أو موظف الفترة الثانية

L2.Code

للتعبير عن الراتب اليومي للموظف الأول أو موظف الفترة الأولى

L1.Wage

للتعبير عن الراتب اليومي للموظف الثاني أو موظف الفترة الثانية

L2.Wage

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

L1.Name = “Mohamad Hasan”;

L1.Code = 120;

L1.Wage = 13.50;

L2.Name = “Ahamd Ali”;

L2.Code = 270;

L2.Wage = 0;

بالطبع هذه فكرة برنامج ويمكن إضافة المزيد من التحسينات من خلال تحليل البيانات فمثلا جمع المتغير L1.Wage لمدة شهر سوف يعطيك راتبه الشهر وجمع القيم التي تساوي صفر للمتغير L1.Wage لمدة شهر سوف يعطيك عدد أيام غيابه خلال الشهر وهذا يبقى دور تحليل البيانات لاستخلاص نتائج ومخرجات – المثال السابق كان لتوضيح الفكرة فقط.

المثال الثالث:

مستخدماً الأمر Struct قم بعمل برنامج بلغة C++ لإدخال البيانات التالية:

رقم الصنف ItNo

اسم الصنف ItName

ثم يقوم بإظهارها بعد ذلك على الشاشة ؟

الحل:

#include

#include

main()

{

clrscr();

struct data

{

int ItNo;

char Name[10];

};

struct data st;

cout<<" Enter the student Number" ;

cin>>st.ItNo;

cout<<" Enter the student Name" ;

cin>>st.ItName;

clrscr();

cout<

}

سؤال: مستخدماً أمر الكيانات قم بعمل برنامج بلغة C++ لإدخال البيانات التالية:

رقم الموظف EmNo

اسم الموظف EmNa

الراتب Sal

ثم يقوم بإظهارها بعد ذلك على الشاشة ؟

-الاتحادات ( Unions ):

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

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

-الشكل العام للاتحادات:

unions name{

تعريف المتغير 1;

تعريف المتغير 2;

………………..

}

مثال توضيحي:

unions record {

char name;

int number;

};

في المثال السابق يحتل العنصر الرمزي name بايتاً واحداً من الذاكرة ، بينما يحتل العنصر الصحيح number بايتين ، أحدهما مشترك نع العنصر name.

أسئلة على الفصل الأول

س1:عرف الكيانات ؟ وما هو التركيب العام للكائنات ؟

س2:عرف كل من المصطلحات التالية:

1-المنشآت

2-Structure

3-التراكيب البنائية

4-مصفوفات الكيانات

س3:أكتب التركيب العام لكائنات العنوان ( Address )؟

س4:أكتب التركيب العام لكائنات العنوان Address والذي يشمل على البيانات التالية:

Name

Number

Street

P-O-Box

City

Country

س5:أكمل الجدول التالي:

اسم المتغير حيز التخزين بالبايت حيز التخزين بالبت

Number 2 …………………..

Name 20 …………………..

City ………………….. 80

س6:علل:ينصح مبرمج لغة C++ بالا يزيد طول كلمات ملفه عن خمسة آلاف بايت؟

س7:هل يمكن أن يحتوي الكيان على مجموعة أخرى من الكيانات بداخله ؟ مدعماً إجابتك بمثال ؟

س8:هل يمكن استعمال المصفوفات داخل الكيانات ؟ مدعماً إجابتك بمثال ؟

المصفوفات

(Arrays)

-مقدمة عن المصفوفات:

قد تشترك بعض المتغيرات في صفة تجمع ما بين هذه المتغيرات وقد يصبح عدد المتغيرات كبيراً جداً، وبالتالي تصبح طريقة تعريف المتغيرات والتعامل معها بالطرق الاعتيادية غير عملية ، فمثلاً عندما نريد إدخال درجات مائة طالب على سبيل المثال: x1,x2,x3,……..x100 ، فكم سيكون مقدار الحيز المطلوب من البرنامج (أي عدد الخطوات المطلوبة ) لعمليات إدخال وإخراج هذه المتغيرات بالإضافة إلي العمليات الحسابية المراد إجراؤها على هذه المتغيرات. لهذا يتم استخدام متغير واحد لهذه العناصر بحيث يتم التميز بينها عن طريق الرقم الموجود ما بين القوسين [ ] والذي يدل على ترتيبه بالنسبة لبقية عناصر المصفوفة.

ويطلق على المصفوفات اسم المتغير المرقم ويمكن تشبيه المصفوفات بالجيش الذي يعامل كاسم متغير واحد ، ولكنه يضم عدداً كبيراً من العناصر ، فمثلاً العناصر التالية:

a[0] , a[1] , a[2] ,……a[n]

هي تابعة للمتغير الجماعي a[ ] ، وكل عنصر من هذه العناصر له عنوان في الذاكرة ، فالعنوان الأول يكون للعنصر الأول والعنوان الثاني يكون للعنصر الثاني وهكذا.

وتعتبر المصفوفات من الأدوات الهامة في لغات البرمجة لتخزين قيم عددية أو حرفية تحت نفس الاسم بمعنى آخر دعنا نرى المثال التالي لتخزين عدد

Int A;

A=5;

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

int A[50];

أعلن عن مصفوفة أعداد صحيحة تستطيع تخزين خمسون عدد صحيح كما يلي

A[0] = 5;

A[1] = 10;

.

.

.

A [49] = 300;

مع ملاحظة أن التعبير التالي سوف يعتبر خطأ جسيم مع لغة سي++

A[50] = 200;

رغم أن المصفوفة تتسع ل 50 رقم إلا أن المصفوفة تبدأ من العنصر A[0] وتنتهي بالعنصرA[49] وبذلك يكون مجموع العناصر 50 كما طلبت شاملا الرقم صفر وفي لغة سي++ دائما نبدء العد من صفر وليس من 1

-تعريف المصفوفة (Array) :

التعريف الأول: هي عبارة عن حجز مكان للمتغير بالذاكرة.

التعريف الثاني: هي عبارة عن مجموعة أو قائمة من القيم يشار إليها بنفس المتغير.

-أهمية المصفوفات:

تظهر أهمية المصفوفات في البرامج الكبيرة التي تحتاج إلي إدخال عدد كبير جداً من المتغيرات.

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

-ملاحظات هامة على المصفوفات:

1-كل مصفوفة تحجز أماكن متعاقبة في الذاكرة.

2-يميز كل عنصر من عناصر المصفوفة برقم العنصر.

3-رقم أو رمز العنصر يكون قيمة موجبة دائماً أو يساوي الصف ولا يمكن أن يكون قيمة سالبة.

-أنواع المصفوفات:

1-

ويمكن أن تكون المصفوفة ذات اتجاهين مثل

15 65 33 44

1 0 11 22

33 52 11 17

18 25 14 41

لتمثل بلغة سي ++ كما يلي

int A[4][4];

وافضل طريقة لتعبئة وتخصيص قيم لمصفوفة وللتعامل مع المصفوفات بصفة عامة هي عمل looping باستخدام for أو غيرها كما سبق ووضحنا ذلك وكمثال لملئ المصفوفة بالقيمة صفر

#include

#include

main()

{

int A[100];

int I;

for (I = 0 ; I < 100 ; I++)

{

A = 0;

}

}

بالطبع الدوران السابق يغير قيمة العداد من صفر إلى 99 ووضعنا داخل البلوك تخصيص لعناصر المصفوفة وبدلا من وضع قيمة عددية لتشير لعنصر بالمصفوفة وضعنا رمز العداد حيث انه سوف يتغير مع الدوران الذي يحدث وبالتالي تتخصص القيم حسب الترتيب

ولتخصيص القيم صفر مثلا لمصفوفة ذات اتجاهين

#include

#include

main()

{

int A[10][10] , I , J;

for (I = 0 ; I < 10 ; I++)

{

for (J = 0 ; J < 10 ; J++)

{

A[J] = 0;

}

}

}

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

ولنا في المصفوفات مآرب أخرى ، ولا تحتوي لغة سي ++ على تعريف ثابت وداخلي للمتغيرات الحرفية ولذلك يتم تلافي ذلك باستخدام المصفوفات ربما يعترض واحد من المتابعين لهذه الدروس بأن الأمر char يقوم بذلك نعم هو كذلك ولكنه يعرف المتغير على انه حرف واحد فقط ونحن سنتحايل عليه بالمصفوفات كما يلي

char Q;

Q = ‘A’;

عرفنا المتغير Q على انه حرف وبالتالي لا نستطيع تخزين فيه سوى القيمة A فإذا طلبت طباعة قيمة المتغير Q سيقوم البرنامج بطبع الحرف A فماذا لو أننا نريد تخزين عدة حروف تمثل اسم شخص إذا علينا بمصفوفة حروف كما يلي

char Q[40];

Q = “Mohamad Hasan”;

مثال: أكتب برنامج يقوم بإدخال خمسة أسماء في مصفوفة ثم يظهرهم على الشاشة ؟

#include

#include

#include

main()

{

clrscr();

char nam[5][10];

int y;

for(y=0;y<5;y++)

cin>>nam[y];

clrscr();

for(y=0;y<5;y++)

cout<<"n"<

}

سؤال: أكتب برنامج يقوم بإدخال عشرة أسماء في مصفوفة ثم يظهرهم على الشاشة ؟

مثال2:أكتب برنامج يقوم بإدخال درجات عشر طلاب في مصفوفة ثم قم بإيجاد أكبر و أصغر درجة والفرق بينهما ؟

#include

#include

#include

#include

main()

{

clrscr();

int max,min,range,i;

int q[9]={1,14,88,3,9,2,37,55,9};

for (i=0;i<9;i++)

cout<<"nt"<

max=min=q[0];

for (i=0;i<9;i++)

{

if (q>max)

max=q;

if(q

min=q;

}

cout<<"nmax="<

cout<<"nmin="<

range=max-min;

cout<<"nrange="<

getch();

}

سؤال :أكتب برنامج يقوم بإدخال درجات خمس طلاب في مصفوفة ثم قم بإيجاد أكبر و أصغر درجة والفرق بينهما ؟

مثال:أكتب برنامج يقوم بإدخال درجات عشر طلاب في مصفوفة ثم يقوم البرنامج بترتيب هذه الأرقام ترتيباً تصاعدياً ؟

#include

#include

#include

#include

main()

{

clrscr();

سؤال 1: أكتب برنامج يقوم بإدخال درجات خمس طلاب في مصفوفة ثم يقوم البرنامج بترتيب هذه الأرقام ترتيباً تصاعدياً ؟

سؤال 2: أكتب برنامج يقوم بإدخال درجات عشر طلاب في مصفوفة ثم يقوم البرنامج بترتيب هذه الأرقام ترتيباً تنازلياً ؟

أسئلة على الفصل الثاني

س1:عرف المصفوفات ؟ وما هي أهمية المصفوفات ؟

س2:ما هي أنواع المصفوفات ؟ وما هو التركيب العام لكل نوع منها ؟ "مدعماً إجابتك بالأمثلة"

س3:أمامك مجموعة من المصفوفات بلغة البيسك قم بتحويلهما إلي مصفوفات بلغة C++:

1- 10 DIM A(20)

2- 10 DIM B$(15)

3- 10 DIM A(2,5)

4- 10 DIM A$(3,5,1)

س4:أكتب برنامج يقوم بإدخال عشر أرقام في مصفوفة ثم يقوم بعرضهم على الشاشة ؟

س5:أكتب برنامج يقوم بإدخال عشرة أسماء في مصفوفة ثم يقوم بعرضهم على الشاشة ؟

س6: أكتب برنامج يقوم بإدخال درجات عشر طلاب في مصفوفة ثم قم بإيجاد أكبر و أصغر درجة والفرق بينهما ؟

س7: : أكتب برنامج يقوم بإدخال درجات عشرطلاب في مصفوفة ثم يقوم البرنامج بترتيب هذه الأرقام ترتيباً تصاعدياً ؟

الدوال ( Functions )

تعريف الدالة:

هي جملة أو مجموعة جمل أو تعليمات ، ذات كيان خاص ، تقوم بعملية أو مجموعة عمليات ، سواء إدخال أو إخراج ، أو عمليات حسابية أو منطقية ، وتحتل الدالة موقعاً من البرنامج، إي أنها جزء منه، أو يمكن القول أن برنامج لغة السي يتكون من مجموعة من الدوال.

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

1-تقسيم البرنامج إلى أجزاء صغيرة تستدعى وقت اللزوم وذلك لتسهيل التعامل مع البرامج.

2-توفير المجهود والوقت والتفكير بعمل مكتبة خاصة بك تعيد استخدام الدوال التي استخدمتها في برنامج وذلك في برنامج آخر عند اللزوم

3-تقسيم العمل بين المبرمجين عند العمل في مشروع جماعي لإنتاج برنامج كبير

4-تساعد الدوال على تلافي عمليات التكرار في البرامج.

-مثال على الدوال:

#include

main()

{

int x , y , z;

for(x=1;x<13;x++)

{

for(y=1;y<13;y++)

{

z = x * y;

cout<

}

}

}

* أهم الدوال :

1-الدالة strlen:

-وظيفتها: إيجاد عدد الحروف داخل سلسلة نصية.

-المثال:

#include

#include

#include

main()

{

clrscr();

char *a="welcome to city";

cout<<"n"<

}

2-الدالة strcat:

-وظيفتها: دمج سلسلتين حرفيتين.

-المثال:

#include

#include

#include

main()

{

clrscr();

char *a="Computern" ;

char *b="Center";

strcat(a,B);

cout<

}

3-الدالة strrev:

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

-المثال:

#include

#include

#include

main()

{

clrscr();

char *a="welcome";

cout<<"n Before strrev:"<

#2

شكرا على ها المعلومات

ولكن لي سوال مش من الافضل لو استعملنا class بدلا من struct طالما ان الدرس حول ال c++ وإلا ايش رايك؟

مع تحياتي

لا يتعلم العلم كل مستحي او مستكبر

#3

اذا سمحتوا لي أن أشارك في الرأي....

فإن استعمال class أفضل من استعمال struct ولكن البعض يسهل عليه استخدام struct وخصوصا اذا كان متعوداً عليها

وهذا رأيي....

[عدلت بواسطة الفارس ت:23-04-2001 س: 02:43 AM]

#4

كما قال اخي الفارس فان استخدام الكلمة المحجوزة class افضل من struct ..

ولكن من الضروري معرفة انك في حالة استخدام الـ struct فان بعض المسائل الافتراضية default situations تختلف. فمثلا، عند تعريفك لاعضاء members في تركيب من نوع struct فان مجالها ألافتراضي default scope سيكون خاص عام Public اذا لم تقم بتصريح المجال. اما في حالة استخدام الـ class فان المجال الافتراضي لاعضاءها هو private.. راقب هذا المثال:

struct MyStruct {
	// عضو عام الوصول
	// Public
	int X;
}

class MyStruct {
	// عضو خاص الوصول
	// Private
	int X;
}

وهنالك مسائل مختلفة اخرى خاصة في مبادئ تعدد الواجهات Polymorphism والوراثة Inheritence لكن لا اذكرها حاليا..

هذا الموضوع مغلق.

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…