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

درس في ال ARRAYS

مغلق
بدأه م. طارق عودة في 1 أغسطس 2007 · 7 رد · 1,094 مشاهدة · في لغة C و ++C
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

اعد بواسطة : طارق عودة

مقدمة :

نذكر أننا عندما تعلمنا انشاء ال variables أو المتغيرات أخذنا بعين الاعتبار انها متغيرات يمكن أن تكون أعداد صحيحة ( Integers ) أو أعداد غير صحيحة كال ( float ) وال ( double ) وكذلك يمكن أن تكون أحرف ( char ) ولكن منها طريقة في الانشاء( declaration ) وأسلوب تحديد قيمها ( initialization ), فكانت كالتالي :

int Number1

أو

double Number1

أو

float Number1

أو حتى

char Number1

--------------------------------------------------------------------

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

في البرمجة ,, مع أنني كنت أحل مسائل في غاية الصعوبة . لكنه قال لي

جملة لن أنساها في حياتي:

اما أن يفهم الانسان برنامجك من غير وجودك . او ان لا تكن مبرمجا

انتبه!

ألا تعتقد انك غفوت عن شيء خطير؟

فعلا, السطر الرابع هو الخطأ , لكن الا تتسأل مالخطأ؟؟

ليس هناك أي أخطاء برمجية أو حتى لفظية ... لكن انه اسلوب برمجي خاطىء فلماذا تعبر عن charecter بـ Number1 ؟؟

--------------------------------------------------------------------

نعود الى درسنا.

ال arrays هي variables ولكنها تستطيع أن تحمل العديد من القيم.

نتساءل, كيف لمتغير واحد أن يحمل 100 أو 10000 متغير؟؟

ببساطة فلنتخيل أن ال array هي خزانة ملابس وبها عدد من الدروج, اذا

الخزانة واحدة لكنها تحمل عددا من الدروج .

فلنأخذ هذه المسألة .

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

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

الحل :

نرقم الدروج على التوالي .

الدرج الاول ثم الدرج الثاني والثالث وهكذا .

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

الى حد ما تعلمنا الان, ببساطة نضع كل قطعة ملابس في متغير ( variable )

ونسميها

clothes1

clothes2

clothes3

وهكذا .

وبالتالي نخزن كل الفطع, ونستطيع أن نخرج أي منها في أي حال أردنا .

فلنجعلها أكثر تعقيدا .

ماذا لو كنا نريد وضع 12321 فطعة, اتعتقد أن clothers1 و clothes2 ستفيدنا

الى حد أن نصل الى clothes12321 . لا لا لا

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

اذا فلنصنع خزنة جديدة ونضع كل شيء بداخلها .

ولكن ماذا نسمي الخزنة . ؟؟ فلنسميها clothesBox, وكم درجا نضع فيها ؟ وماذا نستخدم من مواد لهذه الدروج؟ وماذا ستحمل بداخلها ؟

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

فلنبدأ اذا بالشروط التي تعلمناها في انشاء المتغيرات

مهلا: لم أقل لكم ماذا سنضع في داخل هذه الخزنة, فلنضع integers

تصبح كالتالي

----------------

اذا ها قد علمنا ماسوف نستخدمه لصنع خزنتنا الجديدة

1 - أن تكون من مواد تسمح لها بتحمل ال integers أو الارقام الصحيحة

2 - أن نسميها clothesBox

3 - أن تحمل 12321 درجا

فنستخرج التالي

ألنوعية : int

الاسم : clothesBox

عدد الدروج : 12321

دورنا كمبرمجين أن نحول هذه القيم الى الكمبيوتر .

تصبح اذا

int clothesBox 12321

ولكن مهلا, الكمبيوتر لايفهم مامعنا 12321 , ولكن يفهم أنه لو وضع بين اشارتي

[1231]int clothesBox فهو عدد الدروج

فتصبح اذا

[1231]int clothesBox

ثم ننتقل لوضع الملابس في الدروج

فلنبدأ

أول درج سنضع فيه قطعة ملابس رقمها 110

يتساءل الكمبيوتر؟ أين تريد وضعها

فتقول له في

clothesBox

سيقول لك , وفي أي درج

فتقول له

في الدرج رقم 1 أو 50 أو حسب ماتريد.

[1] او [50]

حسنا وماذا هو رقم هذه القطعة

تقول له رقمها هو 110

نستنتج أن

clothesBox[1]= 110

أو

clothesBox[50] = 110

حسب أختيارنا .

وهكذا الى أن نملآ الخزنة .

حسنا ولكن أليست العملية أطول من عملية المتغيرات ؟ نعم الى هذا الحد ولكن بسطر واحد يمكن أن نملآ جميع هذه الدروج وبالتالي نكون قد اختصرنا 12321 سطر .

فالنرى . نستخدم ال for loop,أو الى while loop وهي عملية اعادة الشيء أكثر من مرة

نستخدم كلمة for في السي++ لبدء هذه العملية

ونستخدم متغير بداخلها, ليمثل رقم الدرج الحالي .

ونستخدم أيضا عدد الدروج ا لتي نحتاج الى ملئها , ليس بالضرورة جميعها

اذا نحتاج الى for لتقوم لنا بالمهمة 12321 مرة .

و نحتاج أن نخبر هذه العاملة باسم خزنتنا وبعدد الدروج التي نريد ملئها .

ونعطيها التالي :

اسم خزنتنا : clothesBox

عدد الدروج الازم ملئها : 12321

ورقم الدرج الحالي , ستتصرف هي بخبرتها. ( الى هذا الحد على الاقل )

فتصبح

(++for(int i=0; i < 12321; i

مهلآ : ماهي i وماهي 12321 وماهي i++

i هو اسم الدرج

12321 هو عدد الدروج التي نريد نحن ملئها ,, وكما قلنا, فانت قد تريد ملىء 5 فقط أو 100 ولكن انتبه فانت لاتستطيع ان تملئها اكثر من قدرتها! .

وi++ أي انه عندما تنتهي أول عملية انتقل الى الدرج الذي يليه

فنستخرج أن

الدرج = الدرج + 1

لينتقل الى الدرج الثاني

وهكذا .

نكمل اذا

(++for(int i=0; i < 12321; i

}

cout << "please put the first peace of clothes" << endl

;[cin >> clothesBox[i

{

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

النهاية .

Its an amazing thing that every days news,, are just exactly

as the size of the NEWSPAPER ....

م.طارق عودة

fr.o :)

-------------------------------------------------------------------------------

#2

ما هذا المستوى الذي وصلت اليه هذا المنتديات الجميلة ؟؟؟

لا تواصل ولا مشاركة ولا أي شيئ ؟ ...... أهنالك نقص في كفاءة المواضيع أم نقص في الناس التي تقدر هذه المواضيع .

تحياتي .

Its an amazing thing that every days news,, are just exactly

as the size of the NEWSPAPER ....

م.طارق عودة

fr.o :)

-------------------------------------------------------------------------------

#3

مشكور يا عزيزي بصراحة موضوع جيد جدا وشرح رائع ...

ولكن المشكلة هي ان الكثير يقرأ ويستفيد ويترك الرد على تعب الشخص ...

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

هذا هو حال اغلب المنتديات في هذه الايام ...

تحياتي واتمنى ان تقدم لنا دروسا اخرى ...

يَارَبُ إِن ضَاقَت قُلُوُب الْنَّاسٍ عَنْ مّافِي .. مِنْ خَيْرٍٍ فَعَفْوكَ لَا يَضِيْقْ ..

#4

Thanks alot >>>>

شكرا جزيلا الدرس واضح و مفيد .... وأتمنى المزيد...

Thank You.... -waf

#5

شكرا لكم أساتذتي الكرام ...

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

بس الظاهر لا صوت لمن تنادي ...

تحياتي لكم جميعا .

ولو في أي تعليق يا ريت تتفضلوا علي أو حتى أي انتقاض ,,, ولو حابين أكمل سلسلة ال ARRAYS على عيني وراسي .

Its an amazing thing that every days news,, are just exactly

as the size of the NEWSPAPER ....

م.طارق عودة

fr.o :)

-------------------------------------------------------------------------------

#6

السلام عليكم و رحمة الله

شكرا لك أخي على الدرس

أريد سؤالك كيف يمكننا عمل مصفوفة ديناميكية بعددين :

char *eoname = new char[np][14];

حيث np متغير

#7

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

و لك فائق الشكر و التقدير...

#8

أخي العزيز superboy

اعذرني على عدم اجابتي لك اجابة كاملة ,,, لكن أفضل لك أن تبحث بنفسك وان لم تفهم استفسر ..... ابحث عن مايطلق ب Vector containers

وشكرا ...

إن شاء الله,,, ساكتب الدرس القادم وهو تكملة لهذا الدرس البسيط.

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

تحياتي

طارق عودة

Its an amazing thing that every days news,, are just exactly

as the size of the NEWSPAPER ....

م.طارق عودة

fr.o :)

-------------------------------------------------------------------------------

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

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