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

خدمات مركز الخوارزمى

خريطة الموقع

معرض الصور

مركز تحميل الصور و الملفات

القرآن الكريـــم

تفسير القرآن الكريــم

المرجع الدينى الشامل

مكتبة البرامج

مكتبة الدروس


« آخـــر الــمــواضــيــع »
         :: اغرب واروع سجادات!! (آخر رد :domokh)       :: هل لديك ماوس "فأرة" عطلانه؟ (آخر رد :حسناء)       :: اغرب اربع شمعات!!!!! (آخر رد :حسناء)       :: احدث تشكيله لغرف السفره (آخر رد :حسناء)       :: كتاب الفصل في الملل والنحل (آخر رد :حسناء)       :: كتاب من أحكام الحيض في الصلاة والصيام (آخر رد :حسناء)       :: كتاب ثلاثون طريقة لخدمة الدين (آخر رد :حسناء)       :: كتاب بداية المجتهد ونهاية المقتصد (آخر رد :حسناء)       :: كتاب حراسة الفضيلة (آخر رد :حسناء)       :: كتاب مشكل إعراب القرآن الكريم (آخر رد :حسناء)       :: كتاب الوصايا العشر للعاملين في حقل الدعوة إلى الله (آخر رد :حسناء)       :: كتاب القواعد الذهبية في أدب الخلاف (آخر رد :حسناء)       :: كتاب رياض الصالحين (آخر رد :حسناء)       :: كتاب الدروس المهمه لعامة الامة (آخر رد :حسناء)       :: طائرة يضربها البرق (آخر رد :حسناء)       :: نظارات كشخه (آخر رد :حسناء)       :: وجبات اطفال المدارس باليابان (آخر رد :تبارك)       :: البرغل (آخر رد :حسناء)       :: فوائد القرفه والعسل (آخر رد :حسناء)       :: ساندوتش التاكو تاكل صوابعك وراه (آخر رد :حسناء)      



العودة   :: مركز الخوارزمى للترجمة وخدمات الإنترنت العودة ركن الكمبيوتر و الإنترنت العودة قسم البرمجة وقواعد البيانات
قسم البرمجة وقواعد البيانات ASP.net SQL, ADO.net, C#, PHP , CGI , MySQL , JavaScript , Html , Delphi , Ajax ...




 
   
أدوات الموضوع انواع عرض الموضوع
قديم 19-02-2006, 01:46 PM رقم المشاركة : 1
معلومات العضو
عضو

الصورة الرمزية mito_alex

Cool المختصر فى لغه البرمجه باستخدام لغه ال(c)الجزء(3)

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

الجلسة الثالثة: وهي عن الـ Array (المصفوفات)

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

ما رأيك قبل ذلك أن نرجع إلى الجلسه الأولى حيث تكلمنا عن الـ Datatype ... وطرحنا بآخر الجلسة ما هو المتغير ... أعتقد أنه آن الآوان لنعرف المتغير ...

قلنا سابقاً أن كل Datatype يخزن في الذاكرة وبحسب حجمة, لنفرض بأن لدي إثنان من الـ Datatype ومن نفس النوع وهو Int.
وهم كالتالي:
الرقم الأول = 3
الرقم الثاني = 5

أتعلم كيف سيكون توضعهم في الذاكرة ... سيكون كالتالي




الأرقام التي بالأسفل تمثل عناوين الذاكرة في الـ RAM والتي تتوضع عليها الأرقام ويكون بنظام الـ Hexadecimal.

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

ولأكن كيف لي أن أعلم العنوان ... من هنا جائت فكرة المتغيرات (Variables), إذن المتغيرات هي أسماء مستعارة نطلقها على عناوين الذاكرة.

لتصبح كالتالي:



نمثل الشكل بالأعلا برمجياً كالتالي:
Int A = 3
Int F = 5

أي أنني إستبدلت أرقام الذاكرة بي الحرفين A و F والذي يقوم بعملية الإستبدال هذا هو المترجم (Compiler)

أرجوا أن تكون فكرة المتغيرات وضحت الآن ..

حسناً .. ألا يراودك الفضول لتسأل ... لماذا قمت بجعل خانتان خاليتان بين الرقمين 3 و 5 .. هل يوجد هدف لذلك أم أنها محق مصادفة ..

في الحقيقة عندما نريد أن نخزن الرقم 5 كما في الشكل بالأعلا يقوم الـ Compiler بعدة خطوات:
أولاً: ما هو الحجم الذي يجب على المترجم أن يحجزة وبالطبع سيعتمد ذلك على الـ Datatype
ثانياً: إيجاد مكان خالي بداخل الـ RAM مساوي لحجم الـ Datatype (كما قلنا في أول جلسه ... مثال البحث عن شقة).
ثالثاً: طريقة البحث تكون بشكل عشوائي لذلك سميت بي RAM أي Random Access Memory.
أي أنه على سبيل المثال سيقوم بالبحث عن المربع الأول في الذاكرة فإذا كان مشغول (يوجد به بيانات) سيذهب إلى التالي .. وهكذا إلى أن يصل إلى مربع خالي ليضع فيع معطياته.
لذلك من الممكن أن نرى بأن الرقم 3 قد توضع في الأول والرقم 5 قد توضع في الآخر
رابعاً: أعطي لعنوان الذاكرة الإسم المستعار وهو F
خامساً: ضع في الـ F القيمة 5

أعتقد بأن الأمور إلى الآن واضحة ....


جميل .. الآن إذا طلبت منك جمع الرقمين 5 و 3 ... كيف سيتعامل الـ Compiler مع هذا الأمر ...

سيقوم بالبحث عن الإسم المستعار للـ A والتي تمثل عنوان للرقم 3
ومن ثم سيقوم بالبحث عن الإسم المستعار للـ F والتي تمثل عنوان للرقم 5
ومن ثم يقوم بجمعهما...

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

ومن هنا طرح السؤال التالي: ألا توجد طريقة لجعل جميع البيانات المراد تخزينها في الـ RAM تأخذ عنوان واحد وتكون بجانب بعضها البعض.. جاء الجواب على يد الـ Array


لنبدأ على بركة الله...

إذن مما سبق نقول بأن الـ Array هي مجموعة من العناصر تترتب بجانب بعضها البعض في الذاكرة.

ما رأيك بأن نلقي نظرة على تمثيل الـ Array في الذاكرة قبل الخوض في تفاصيله:





لنحلل الشكل بالأعلا:

إسم الـ Array وهو RAAD والذي بدورة يمثل الإسم المستعار لثلاثة عناوين في الذاكرة, أي وكأني دمجت الثلاثة عناوين بالأسم المستعار RAAD
وأسفل منه وهي الأرقام المخزنه في الذاكرة وهم 3,5,9
وأسفل منه عناوين هذه الأرقام في الذاكرة.
وآخر صف يمثل الـ Index لكل متغير أو قل الإزاحة.


ما رأيك الآن أن نمثل الشكل الذي بالأعلا برمجياً:

Int RAAD[2]= {3,5,9}

لنحلل الكود ...

Int هي الـ datatype
RAAD إسم الـ Array
[2] يمثل حجم المنطقة المراد حجزها, وهذا يعني بأنها تتسع لثلاثة أرقام من نوع Int حيث ان العد يبدأ من صفر.
{3,5,9} يمثل القيم المراد طباعتها


حسناً الآن لو أردت طباعة الأرقام بداخل هذه الـ Array فكل ما علي فعله هو تحديد الـ Index للقيمة التي أريد طباعتها ... أي كالتالي

إطبع RAAD[0]
إطبع RAAD[1]
إطبع RAAD[2]


لتظهر النتيجة
3
5
9

هذه هي الـ Array بكل بساطة ... طبعاً هناك أمور أخري فرعية لم نذكرها مثل
Multidimensional Arrays أو Array with Pointer







التوقيع

إسم الشركة : شبكــــــة المهندس العربى
صاحب الشركة : م/أحمد السيد
خدمات الشركة : | تصميم | حماية | تطوير | إستضافة | حجز نطاقات | دعم فنى | سد ثغرات | دروس و دورات | برامج|منتديات هندسية| كتب | هاكات | اسكريبتات | شروحات برامج |استايلات و قوالب للمواقع |مجلات المواقع|
مقر الشركة : |جمهورية مصر العربية|الاسكندريـــــة|
هاتف الشركة : 0020129851556
بريد الشركة : admin@3rab-eng.com
رابط الشركة :www.3rab-eng.com

رد مع اقتباس
 


مواقع النشر

الذين يشاهدون محتوى الموضوع الآن : 1 ( الأعضاء 0 والزوار 1)
 
المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
المختصر فى لغه البرمجه باستخدام لغه ال(c)الجزء(1) mito_alex قسم البرمجة وقواعد البيانات 2 19-07-2006 02:05 PM
المختصر فى لغه البرمجه باستخدام لغه ال(c)الجزء(2) mito_alex قسم البرمجة وقواعد البيانات 2 19-07-2006 02:04 PM
المختصر فى لغه البرمجه باستخدام لغه ال(c)الجزء(4) mito_alex قسم البرمجة وقواعد البيانات 2 19-07-2006 02:02 PM
المختصر فى لغه البرمجه باستخدام لغه ال(c)الجزء(5) mito_alex قسم البرمجة وقواعد البيانات 3 19-07-2006 02:02 PM
فهرس دروس المختصر فى لغه البرمجه باستخدام ال (c) mito_alex قسم البرمجة وقواعد البيانات 2 19-07-2006 01:59 PM

أدوات الموضوع
انواع عرض الموضوع

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع