اللي مو فاهم طبخة Data Structure يُـلقي نظرهـ (ة.ة)
مـــرااااا حـُـب بالكــُــل
بس حبيــت عليكــُـم أطــل..
بالعاده والله ما أحب أتفلسف كثير.. أنمــا آنا مؤمــِـن أنــه دائمــاً لله المثل الأعلــى جـَـلّ وعـلا شأنــه..
فكــم مـِـن أمــورنا الحياتيه والعقائـــِـديه شــَـرحها لنــا المــولى تعالــى بأمثلــة..
قاله الله ســُـبحانــه (( اللهُ نـــُـورُ السمواتِ والأرضِ ، مـَـثلُ نــورهـِ كمشكــاةٍ فيهــا مــِـصباح ، المـِــصباحُ فــي زُجاجــة، الزُجاجـَــةُ كأنهــا كوكـَـبٌ دُرّيّ .. يـَــوُقــَـدُ مــِـن شجــرةٍ مــُباركة...))الآيه
وقال تعالــى (( مـَـثلُ الذيــن حـُـمـّـِـلوا التوراة ثــُـم لــم يحمـِــلوها ، كمـَــثلِ الحـِـمارِ يحمـّـِـلُ أسفارا...)) الآيـــة
ونهــج المــُـصطفى صلواتُ الله عليه ذلك النهــج وهــو الذي ماينطـِــقُ عـن الهــوى ، ومـِـن قولـِــه صلى الله عليه وسلم ‘‘ مـَـثلُ الجليسِ الصالح ، والجليس السؤِ كحـامِــل المسكِ ونافــِـخِ الكيـــر ....‘‘ الحديث
:
:
وما أظــن فيــه أبلغ مـِـن كتاب الله .. ويأتي بعــده حــديث رسوله القائل ‘‘أوتيتُ جوامـِـع الكـَـلِم‘‘
فمنها حبيت أشرح الــ Data Sturcutre بمثـــال.. وأتمنــى إني أكــون على صواب
-0-0-0-0-0-
س/ ابكتـــب لكِ برنامــج يــعرف مـُـتغير جــديــد ، مــن المـُــتجهـات ذات الأبعــاد الثــُــنائيــه..
بالرياضيــات لــو عـندنـا مـُــتجهيــن a , b
(8,3) = a
(2,1) = b
حيكــون حـاصــل جمعــهم c= a+b
كالتالي:
(10,4) = c
هــذا النوع مـن العمليات ، وهـذي المــُـتغيرات مــو مـُــتاحه بالحاســب..!!
كيــف نعرفهــا بلغة الســي +...!!!؟
-0-0-0-0-0-0-0-
ج/ قبــل كــل شــيء.. معـروف شيء بلــُـغة السي + أسمــه Class
وكذلك بالجافا..
كـُــل Class يـُــحدد لــه أســم ، وكـُــل Class يحــتوي بداخــله عـلــى : Data & Function
بإمكانـكم تتخيــلون الـ Class كأنــه (( كـائــِـن )) ، والــ Data اللــي جــواهـ هــي ((صفــات لهذا الكــائــِـن)) ، والــ Function هــي (( العمليــات اللــي يقــوم فيهــا الكــائــِـن ))..
خـُــذوا عـِــندكم مثــلاً لــو فــرضنــا الــ Class هــو ‘‘غــزال‘‘...
والــ Data اللي فيــه هــي : نـوعـه = ‘‘غزال‘‘ .. لــونــه = ‘‘عسلي‘‘
والــ Function هــي : ‘‘المشــيّ‘‘ ... ‘‘النوم‘‘ ... ‘‘الأكــل‘‘ ..
:
بداخــل البرنامــج الرئيســـي main نــعطي هالغــزال ‘‘أســم‘‘.. لأن الغزال = نوع..
فلو عنــدي غــزاليــن .. أفضــل أميزهــم بأسمــاء مـُـعطاه لهــم..
فأقول :
حــالمــه مـن نوع غــزال
وريمـاس مــن نــوع غــزال...
:
بداخـل البرنـامــج الرئيســي.. طرا عـلى بــالي ألعب بالغــزلان شــوي..
حــأقول
حــالمــه . ‘‘مشــي‘‘ >>>>> تذكروا.. المشي هـو Function فوق..
وهــكذا ..
الآن فعليــاً صــار عـِـندي كــائن يتحرك Object
:
:
>>> هــــذي هــــي فكـــرة Data Structure <<<
:
:
ولأجـــل كــِـذا تــُـسمــى لــُـغة الســي بــ : لــُـغة مــُـعتمدة علــى الكينونيــه Object orinted
وكــذلك الجــافــا..
:
:
نــرجــع لمثالنـــا..
الحـــــــل هــــو
-0-0-0-0-0-0-0-0-
#include <iostream.h> // Begin a program #
class CVector { // begin a CLASS
public: // it means u can use next DATA out of class
int x,y; // define 2 variables of INTEGER type
CVector () {}; // The EMPTY CONSTRUCTOR
CVector (int,int); // define Function of CVector type SECOND CONSTRUCTOR
CVector operatoradd (CVector); // Function called operatoradd return
data type of CVector & send also CVector //
End a CLASS// ;{
CVector::CVector (int a, int b) { // Begin to write a body of Second Constructor
x = a; // data x gets value of a
y = b; // data y gets value of b
End Second CONSTRUCTOR//{
CVector CVector :: operatoradd (CVector param) { // Begin body of function Operatoradd
CVector temp; // define a temporary CVector data type to return it later
temp.x = x + param.x; // adding x vectors
temp.y = y + param.y; // adding y vectors
return (temp); // return value of CVector type
}
int main ()
{
CVector a (3,1); // Assign values to first CVector
CVector b (1,2); // Assign Values to second CVector
CVector c; // Define an EMPTY CVectors ..that is the reason for using EMPTY
CONSTRUCTOR //
c = a + b; // Applay an addition operation
cout << c.x << "," << c.y; // Printing The result
return 0; // Return 0 to end main function
}
:
:
اللــي عملنـاه .. إننــا عرفـّـنــّـا Class مــن نــوع CVector بـــدل ‘‘غــزال‘‘...
علمــاً أنــه معنــى Vector هــو مـُــتجه...
ووضعنـا فيــه بيانيــن فقــط : x , y بدل بيــانات الغزال : ‘‘النوع‘‘ ، ‘‘ اللون‘‘
ثــُـم أسندنا لــه 3 Functions اللي هـي : CVector () & CVector(int,int) & Operatoradd بدل
المشي ، والأكل ، والنوم...
بالبرنامج الرئيسي..
سمينــا واحد من المــُـتجهات اللي من نوع CVector بـــ a والثاني b وأسندنا لهم قيــّــمّ..بدل قيم ‘‘حالمه‘‘ و ‘‘ريماس‘‘..
ثــُــم جمعناهــم بدل ما نحرك الغزلان بالمشي...!!
هذي كـُــل السالفة.. وصلى الله وسلم
:
:
س/ بقــت شغلة.. وهــي لــيـــه أستخــدمنــا 2 مــن Functions وبنفــس الأســـم...!!؟
ج / كان أسم الـ Class هــو CVector .. ومعروف أي Class مـُــمكن يحتوي علــى Function لــُـه نفس أسمــه ، ويــُـقال عــن هالــ Function حينـهــا أنــه : Constructor
فــي برنامجنــا أستخدمنــا 2 Constructors ليــه...!!؟
لأني بالبرنامــج الرئيســي عـَـرّفــت مــُـتغيرين a,b وكـان لهن قـَـيــّـمّ ...!!
وحاصل جمعهن وضعتــه بمتغيــر أسمــه c....!!
س/ انزين أول ماعرفنـــا c... شنـــو كــانت القيــّـم المـُــسنده له....!!؟
ج / ولا شيء..
إذن ، البرنامج حيعطينا إشارة خــطأ (( لــــو )) ، وآنا أقول (( لـــو )) قدر الله .. إننــا ماكتبنا
الــ Function الفاضــي اللي أسمــه CVector() {} يعني هــو اللي حـَـل مـُـشكلة الــقيمة c
لأن البرنامج لقــى c من نوع CVector ، فطابقها مــع (CVector(int,int فمــالقاها مـُـتطابقة.. فحــّـوّل عــلى CVector الفاضيــه..
:
:
أتمنــى أني أكون توفقت بالشـرح، وأني أكون قدرت أوصل لكِ الفكرة بشكــل سهــل..
وتحياتي لكم جميعاً مقرونه بأمنياتي الصادقه بالتوفيق للجميع
|