جيلر بازممتاز
عدد المساهمات : 18 تاريخ التسجيل : 26/10/2009
| موضوع: رد: سلسلة تعليم Vb شرح شامل عن المصفوفات الأربعاء فبراير 17, 2010 3:46 am | |
| برافوا زعيم مرسى اوى والله على الابداع المستمر فى قسم البرامج ممتاز 100% | |
|
الزعيم عبدالرحمن خليفة@ مدير المنتدى
عدد المساهمات : 1012 تاريخ التسجيل : 21/08/2009 العمر : 27 الموقع : albkh.hooxs.com
| موضوع: سلسلة تعليم Vb شرح شامل عن المصفوفات الثلاثاء فبراير 09, 2010 1:46 pm | |
| المصفوفات :- عبارة عن مجموعة من المتغيرات لها نفس الاسم وكل هذه المتغيرات لها نفس النوع ويمكنك التمييز بين مجموعة المتغيرات التى تحتويها المصفوفة باستخدام رقم المتغير بداخلها وتلاحظ أن أول عنصر فى المصفوفة يبدأ بالعنصر صفر والثانى بواحد ...وهكذا ولكن إذا أردت أن يكون ترتيب العناصر داخل المصفوفة ترتيبا طبيعيا بمعنى أن العنصر الأول يأخذ الرقم 1 والثانى 2 .....وهكذا يمكنك استخدام الأمرOption Base فى قسم الإعلان العام General Declaration لوحدة برمجية Module مثل Option Base 1المصفوفـة ذات البعـد الواحـد وتتكون المصفوفة ذات البعد الواحد من صف واحد لمجموعة من المتغيرات الإعلان عن ٌٌالمصفوفات· المصفوفات ثابتة الحجم ( Fixed Size Array )فى المصفوفات ثابتة الحجم يتم تحديد عدد العناصر التى ستتعامل معها المصفوفة وبذلك يتم حجز مكان فى الذاكرة بعدد العناصر الذى تم الإعلان عنهم من خلال الإعلان عن المصفوفة .يمكنك الإعلان عن المصفوفات الثابتة الحجم بطريقتين مختلفتين الطريقة الأولى :- باستخدام متغير واحدDim | Public | Private ArrayName(Subscript) As DataType· Dim , Public , and Private تستخدم هذه الكلمات داخل الـVB للإعلان عن المصفوفات ومدى استخدامها داخل البرنامج فعند استخدام Dim فتعبر المصفوفة متاحة بداخل الإجراء فقط الذى تم الإعلان عن المصفوفة بداخله ، أما استخدام Public فى الإعلان عن المصفوفة يجعل هذه المصفوفة متاحة لأى مكان فى البرنامج أن يتعامل مع هذه المصفوفة ، أم استخدام كلمة Private تشبه استخدام كلمة Dimفى تعريف المصفوفة فهى لا ترى إلا فى الجزء الذى تم الإعلان عنه للمصفوفة حتى وإن تم الإعلان عنها فى قسم الإعلان العام General Declaration .· ArrayName عبارة عن اسم المصفوفة .· Subscript عبارة عن أقصى قيمة لعدد العناصر التى ستتعامل معها هذه المصفوفة وغالبا ما تبدأ المصفوفة بالعنصر 0 فمثلا إذا كانت المصفوفة تحتوى على 5 عناصر يتم وضع Subscript = 4 .· As من ضمن الكلمات المستخدمة فى الـ VB فى أثناء الإعلان عن المتغير .· DataType وتستخدم لتحديد نوع المتغير الذى سيتم التعامل معه مثل ( Integer ,Double ,String,……etc ) مثال :- للإعلان عن مصفوفة تتكون من خمس عناصر وهذه العناصر من النوع العددى فتكتب بالصيغة التالية :- Dim MyArray(4) As Integerولإدخال العناصر التى تحتويها هذه المصفوفة يتم إدخالها كما بالشكل MyArray(0) = 9MyArray(1) = 342MyArray(2) = 2746MyArray(3) = 0MyArray(4) = 8901 وإذا أردت تغيير قيمة معينة لعنصر ما يمكنك عمل ذلك بتحديد رقم العنصر كما يلى MyArray(3) = 15الطريقة الثانية :- باستخدام كلمة To Dim MyArray(1 To 5) as Integer ومن خلال هذه الطريقة يجعلك تبدأ المصفوفة بأى عنصر آخر غير العنصر صفر ففى هذا المثال تبدأ المصفوفة بالعنصر 1 .· المصفوفات متغيرة الحجم ( Dynamic Array ) فى هذا النوع من المصفوفات لم يتم تحديد عدد العناصر التى تحتويها المصفوفة عند الإعلان عنها ويتم استخدام هذا النوع من المصفوفات فى حالة عدم معرفة عدد العناصر التى ستحتاجها .ويمكنك الإعلان عن المصفوفات المتغيرة الحجم كما يلى :-Dim | Public | Private ArrayName( ) As DataType· :Dim , Public , and Private تستخدم هذه الكلمات داخل الـVB للإعلان عن المصفوفات ومدى استخدامها داخل البرنامج فعند استخدام Dim فتعبر المصفوفة متاحة بداخل الإجراء فقط الذى تم الإعلان عن المصفوفة بداخله ، أما استخدام Public فى الإعلان عن المصفوفة يجعل هذه المصفوفة متاحة لأى مكان فى البرنامج أن يتعامل مع هذه المصفوفة ، أم استخدام كلمة Private تشبه استخدام كلمة Dim فى تعريف المصفوفة فهى لا ترى إلا فى الجزء الذى تم الإعلان عنه للمصفوفة حتى وإن تم الإعلان عنها فى قسم الإعلان العام General Declaration .· :ArrayName عبارة عن اسم المصفوفة .· :As من ضمن الكلمات المستخدمة فى الـ VB فى أثناء الإعلان عن المتغير .· :DataType وتستخدم لتحديد نوع المتغير الذى سيتم التعامل معه مثل ( Integer ,Double ,String,……etc ) تغيير عدد العناصر فى المصفوفة يمكنك تغيير عدد العناصر الموجودة بالمصفوفة باستخدام كلمة ReDim وتأخذ الصيغة التالية :-ReDim [Preserve] Array Name (Subscript) As DataType· ReDim تستخدم هذه الكلمة داخل الـVB للإعلان عن المصفوفات التى تريد تغيير العناصر بها· Preserve وهذه الكلمة اختيارية وتستخدم لحفظ المكان بالعناصر التى تم إدخالها بالمصفوفة من قبل وفى حالة عدم كتابة هذه الكلمة يجعل جميع عناصر المصفوفة تأخذ القيمة صفر فى حالة إذا كانت المصفوفة من النوع العددىInteger أو خالية " " إذا كانت من النوع الحرفى String ....وهكذا· ArrayName عبارة عن اسم المصفوفة .· Subscript عبارة عن عدد العناصر التى ستتعامل معها هذه المصفوفة فمثلا إذا كانت المصفوفة تحتوى على 5 عناصر يتم وضع رقم 4 بداخل هذا الجزء لأن أول عنصر فى المصفوفة يبدأ بصفر .· As من ضمن الكلمات المستخدمة فى الـ VB فى أثناء الإعلان عن المتغير .· DataType وتستخدم لتحديد نوع المتغير الذى سيتم التعامل معه مثل ( Integer ,Double ,String,……etc ) مثال:- لتغيير عدد العناصر التى تحتويها المصفوفة السابقة لجعلها تحتوى على 6 عناصر يمكنك استخدام الأمر ReDim كما يلى :-Dim MyArray(4) As IntegerMyArray(0) = 9MyArray(1) = 342MyArray(2) = 2746MyArray(3) = 0MyArray(4) = 8901ReDim Preserve MyArray (5) As integerMyArray(5) = 5وتلاحظ فى هذا المثال عند إعادة تغير عدد العناصر التى تحتويها المصفوفة باستخدام الأمر ReDim يجب استخدام كلمة Preserve للاحتفاظ بالقيم السابقة التى تحتويها المصفوفة أما عدم كتابة هذه الكلمة يتم تجاهل كل السابق ووضع القيم التى تحتويها المصفوفة بصفر كما يلى :- MyArray(0) = 0MyArray(1) = 0MyArray(2) = 0MyArray(3) = 0MyArray(4) = 0MyArray(5) = 5مثال آخر :- فى هذا المثال يتم استخدام المصفوفة المتغيرة الحجم وتتعامل هذه المصفوفة مع عناصر من النوع String ثم استخدام الأمر ReDim لإعادة تغيير حجم المصفوفة .Dim strMyArray() as StringReDim strMyArray(strMyArray(0) = "I am a pitcher."strMyArray(1) = "I am a catcher."strMyArray(2) = "I play first base."strMyArray(3) = "I play second base."strMyArray(4) = "I play third base."strMyArray(5) = "I play shortstop."strMyArray(6) = "I play left field."strMyArray(7) = "I play center field."strMyArray( = "I play right field."ReDim Preserve strMyArray(9)strMyArray(9) = "I am the designated hitter." المصفوفـة متعددة الأبعـاد عبارة عن مصفوفة تحتوى على عدد معين من الأبعاد ، وتلاحظ أنه فى الـ VB يمكنك عمل مصفوفة تصل إلى أكثر من 60 بعد ولكن المصفوفة ذات البعدين هى الأكثر استخداما فى برمجة المشاريع ولا تحتاج لعمل مصفوفة أكثر من ثلاث أبعاد . والمصفوفة ذات البعدين تتكون من عدد معين من الصفوف والأعمدة وكل صف وعمود يحتوى على مجموعة من المتغيرات ويتم تحديد مكان كل عنصر داخل المصفوفة عن طريق تحديد رقم الصف والعمود معا .الإعلان عن المصفوفة ذات البعدين للإعلان عن المصفوفة ذات البعدين يمكنك استخدام الصيغة التالية:- Dim|Public |Private ArrayName (SubscriptOfCols,SubscriptOfRows) As DataType · Dim , Public , and Private تستخدم هذه الكلمات داخل الـVB للإعلان عن المصفوفات ومدى استخدامها داخل البرنامج فعند استخدام Dim فتعبر المصفوفة متاحة بداخل الإجراء فقط الذى تم الإعلان عن المصفوفة بداخله ، أما استخدام Public فى الإعلان عن المصفوفة يجعل هذه المصفوفة متاحة لأى مكان فى البرنامج أن يتعامل مع هذه المصفوفة ، أم استخدام كلمة Private تشبه استخدام كلمة Dimفى تعريف المصفوفة فهى لا ترى إلا فى الجزء الذى تم الإعلان عنه للمصفوفة حتى وإن تم الإعلان عنها فى قسم الإعلان العام General Declaration .· ArrayName عبارة عن اسم المصفوفة .· SubsciptOfCols وهى عبارة عن أقصى قيمة لعدد الأعمدة التى تحتويها المصفوفة .· SubscriptOfRowsوهى عبارة عن أقصى قيمة لعدد الصفوف التى تحتويها المصفوفة .· As من ضمن الكلمات المستخدمة فى الـ VB فى أثناء الإعلان عن المتغير .· DataType وتستخدم لتحديد نوع المتغير الذى سيتم التعامل معه مثل ( Integer ,Double ,String,……etc )ملاحظة للإعلان عن المصفوفة ذات بعدين يتم أولا تحديد عدد الصفوف وعدد الأعمدة، ولاحظ أن عناصر المصفوفة تبدأ من العنصر صفر سواء فى تحديد رقم الصف والعمود .مثال :- للإعلان عن مصفوفة تتكون من صفين وثلاث أعمدة يتم كتابتها كالتالى Dim MyArray(2,3) As Integerوعند الإشارة إلى عنصر ما داخل المصفوفة يتم تحديد الصف أولا ثم العمود فمثلا عندما نشير إلى العنصر رقم 10 الذى يقع فى الصف الثانى والعمود الثالث فتكتب كما يلى :- MyArray(1,2)=10مثال آخر :- إذا أردت إدخال درجات مجموعة من الطلبة وليكن لستة طلاب فى 5 مواد يتم أولا الإعلان عن المصفوفة كما يلى Dim GradeStudent (5,4) As Integerلإدخال درجات الطالب الأول GradeStudent (0,0) = 30GradeStudent (0,1) = 36GradeStudent (0,2) = 40GradeStudent (0,3) = 34GradeStudent (0,4) = 38لإدخال درجات الطالب الثانى GradeStudent (1,0) = 20GradeStudent (1,1) = 25GradeStudent (1,2) = 36GradeStudent (1,3) = 38GradeStudent (1,4) = 30وهكذا عندما ترغب فى إدخال باقى درجات باقى الطلاب .للإعلان عن مصفوفة ثلاثية الأبعاد Dim 3d(1,2,1) As Integerويتم تحديد العناصر التى تحتويها هذه المصفوفة كما يلى :-3d(0,0,0)=53d(0,0,1)=1873d(0,1,0)=163d(0,1,1)=123d(0,2,0)=553d(0,2,1)=73d(1,0,0)=343d(1,0,1)=133d(1,1,0)=45003d(1,1,1)=6123d(1,2,0)=93d(1,2,1)=784 كما يمكنك استخدام كلمة ReDim لإعادة تغيير عدد العناصر التى تحتويها المصفوفة كما سبق شرحها فى المصفوفة ذات البعد الواحد .كما يمكنك استخدام الأمر Option Baseكما سبق شرحها لجعل ترتيب العناصر داخل المصفوفة يتم ترتيبها ترتيبا طبيعيا يبدأ بالعنصر واحد .استخدام الدوارة للتعامل مع المصفوفاتفى الـ VB يتم استخدام الدوارة For...Next للتعامل مع المصفوفات حيث يمكنك من خلال هذه الدوارة التحرك خلال عناصر المصفوفة وتغيير وإدخال عناصرها بسهولة بدلا من التعامل مع كل عنصر على حده مثال :- لاستخدام الدوارة للتعامل مع المصفوفات بإدخال العناصر التى تحتويها المصفوفة من خلال النقر على زر أمر قم بإتباع الخطوات التالية :-· قم بإنشاء مشروع جديد باسم Array · قم بوضع زر أمر CommandButton على الـ Form · قم بالنقر المزدوج على زر الأمر ثم قم بكتابة الكود التالى :-Private Sub Command1_Click()Dim i As IntegerDim MyArray(19) As IntegerDim Msg$For i = 0 To 19MyArray(i) = i * 2Msg$ = "The element is:" & CStr(i) & ",The value is:" & MyArray(i)Print Msg$Next iEnd Subمصفوفة الأدوات هى مجموعة من الأدوات لها نفس الاسم ، فمثلا لو لديك 4 مربعات نص تريد تنفيذ مها معينة عليها فبدلا من إنشاء زر أمر لكل مربع عل حدة يمكنك إنشاء زر أمر واحد فقط للتعامل معها جميعا . ويكون لكل أداة فى هذه المصفوفة رقم subscript فريد يميزها عن باقى عناصر المصفوفة . ومن المزايا الأخرى لمصفوفة الأدوات أنه عند إنشاؤك أداة وتحديد خصائصها ثم قمت بإنشاء مصفوفة من هذه الأداة فإن العناصر الجديدة تكون لها نفس الخصائص وذلك دون الحاجة إلى إعادة ضبط خصائص كل عنصر على حدة . بالطبع مصفوفة الأدوات تحتوى على مجموعة من الأدوات من نفس النوع وليست من أنواع مختلفة ، ويمكن استخدام الخاصية Index لتحديد العنصر الذى سيتم التعامل معه فى المصفوفة . ولكل عنصر رقم مميز ويبدأ الترقيم من (0) للعنصر الأول ، (1) للعنصر الثانى وهكذا . لكى تقوم بإنشاء مصفوفة أدوات ، قم بوضع الأداة التى تريدها فى النموذج ، وقم بضبط خصائصها ، ثم حدد هذه الأداة واختر الأمر ( نسخ Copy ) ، ثم اختر الأمر (لصق Paste ) ، فتظهر رسالة تؤكد على إنشاء مصفوفة أدوت ، فقم بنقر زر ( نعم Yes ) ، إذا قمت بنقر زر ( لا No ) سيتم إنشاء الأداة وستأخذ اسم منفصل ولن تكون عنصر فى المصفوفة . العناصر التى تكون فى مصفوفة واحدة يكون لها حدث واحد فقط ، وليس لكل أداة حدث مستقل ، ويكون للحدث الخاص بالمصفوفة معامل اسمه Index ، يوجد به رقم العنصر الذى تم التعامل معه . الكود التالى يوضح شكل الإجراء الخاص بالأداة بشكل منفصل دون أن تكون عنصر فى مصفوفة .Private Sub cmdTotal_click ()End Sub الكود التالى يوضح شكل الإجراء الخاص بالأدوات التى تشكل معا مصفوفة .Private Sub cmdTotal_click (Index As Integer)End Sub أمـثـلـة : ترغب فى وضع 4 أزرار أمر فى النموذج ، وكلما قمت بنقر زر ظهر عليه ( You Click Me ) . بدلا من إنشاء 4 أزرار منفصلة وكتابة الكود لكل حدث فى كل زر ، يمكنك إنشاء مصفوفة مكونة من 4 أزرار ، وكتابة الكود التالى فى الحدث الخاص بالمصفوفة :Private Sub Command1_Click(Index As Integer)Command1(Index).Caption = "you click me"End Subعداد الوقت ليس كأى أداة حيث أنه لايظهر على النموذج عند تشغيل البرنامج ولكنه يظهر فقط أثناء التصميم حيتى يمكنك تغيير خصائصه إثناء مرحلة التصميم أو أثناء تشغيل البرنامج ، وأى أوامر تكتبها فى الحدث الخاص بهذه الأداة يتم تنفيذه بعد انقضاء الوقت المحدد من قبل المستخدم قاطعا أى حدث آخر .الأحداث Eventsوتحتوى هذه الأداة على حدث واحد فقط يسمى Timer ويحتوى هذا الحدث على TimerName_Timer() ويظهر الحدث فى حالة النقر المزدوج على أداة الوقت كما يلى Private Sub Timer1_Timer()End Subأهم الخصائص وتحتوى أداة الوقت Timer على مجموعة من الخصائص الخاصة بها وهى 7 خصائص هما :-Nameومن خلالها يتم تحديد اسم لأداة الوقت والذى يتم استخدامه فى كتابة الكود الخاص بهذه الأداة Enabledتستخدم هذه الخاصية لتحديد هل هذه الأداة متاحة للتعامل معها من قبل المستخدم أم لا ولها قيمتين True or FalseIndexمن خلال هذه الخاصية يتم وضع رقم لهذه الأداة فى حالة استخدامها فى مصفوفة الأدوات Intervalوتعتبر هذه الخاصية من أهم خصائص هذه الأداة والتى من خلاله يتم تحديد الفترة التى بعدها يتم تنفيذ الحدث الخاص بهذه الأداة . وتقاس قيمة هذه الخاصية بالمللى سكند Leftتحدد الطرف الأيسر لهذه الأداةTopتحدد الطرف العلوى لهذه الأداة ويعتبر الخاصية Interval من أهم الخصائص الخاصة بهذه الأداة حيث من خلالها يتم تحديد الوقت الخاص بتنفيذ حدث معين وتقاس قيمة هذه الخاصية ( بالمللى سكند ) وأقصى قيمة لهذه الخاصية 65.535 فمثلا عند تنفيذ حدث معين بعد ثانية يتم تغيير الخاصية Interval إلى 1000 وتعنى تنفيذ حدث معين بعد ثانية واحدة كما يمكنك تغيير هذه الخاصية أثناء تشغيل البرنامج من خلال كتابة الكود التالى فى الحدث الخاص بهذه الأداة كما يلى :-Timer1.Interval = 1000استخدام دالة الـ Date , Time , Nowفي الـ VB يمكنك استخدام دالة الـ Time للحصول على الوقت الحالي للجهاز كما يمكنك استخدام دالة الـ Date للحصول على التاريخ الحالي لجهاز الكمبيوتر كما يمكنك استخدام دالة الـ Now للحصول على الوقت والتاريخ معا .مثال :- · قم بوضع ثلاث أزرار أوامر CommandButton على الـ Form · قم بتغيير الـ Name الخاص بزر الأمر الأول إلى cmdTime والثاني إلى cmdDate والثالث cmdNow قم بكتابة الحدث الخاص بكل أداة كما يلي Private Sub cmdTime_Click()cmdTime.Caption = CStr(Time)End SubPrivate Sub cmdDate_Click()cmdDate.Caption = CStr(Date)End SubPrivate Sub cmdNow_Click()cmdNow.Caption = CStr(Now)End Sub· قم بتشغيل البرنامج ولا حظ ما يحدث وتلاحظ أن في هذا البرنامج أن دالة الـ Time , Date , Now تعود بمتغير من النوع Date ذلك لابد من استخدام دالة CStr و التي تقوم بتحويله إلى متغير حرفي .استخدام دالة الـ Formatتعتبر دالة الـ Format من أهم دوال الـ Vb للتحكم فى كيفية عرض الحروف والأرقام وتستخدم هذه الدالة للتحكم فى عرض الوقت والتاريخ والأعداد وعرض المتغير الحرفى بشكل ملائم .وتأخذ هذه الدالة الشكل التالى :-MyString$=Format(Expression[,Format_String[,FirstDayofWeek[,FirstWeekOfYear]]]) · MyString$ : هى القيمة العائدة من الدالة · Expression : التعبير الذى تريد تحديد الشكل الخاص به سواء كان String , Date, or Numeric · Format_String : تخبر الدالة بالوضع أو الشكل التى تريد أن يظهر بها الشكل ويجب وضع الشكل بين علامتى تنصيص " ".· FirstDayofWeek : عبارة عن قيمة اختيارية والتى تحدد من خلالها أول يوم فى الأسبوع , يقوم بوضع قيمة افتراضية هى Sunday ولكن إذا أردت وضع أى يوم آخر يبدأ به الأسبوع يمكنك تحديد ذلك من خلالها .· FirstWeekOfYear :عبارة عن قيمة اختيارية والتى تحدد من خلالها أول أسبوع فى السنة .ويوضح الجدول التالى شكل دالة الـ Format لكل من الوقت Time و التاريخ Date شكل الدالة مثــــــال النتيجة "Long Date"Format(36000, "Long Date")Friday,July24, 1998"Medium Date"Format(36000, "Medium Date")24-Jul-98"Short Date"Format(36000, "Short Date")7/24/98"Long Time"Format(0.874, "Long Time")8:58:34 p.m."Medium Time"Format(0.874, "Medium Time")08:58 p.m."Short Time"Format(0.874, "Short Time")20:58ويوضح الجدول التالى شكل دالة الـ Format للأعداد Numbers Format Stringمثــــــالالنتيجة"General Number"Format(36000, "General Number")36000"Currency"Format(36000, "Currency")$36,000.00"Fixed"Format(36000, "Fixed")36000.00"Standard"Format(36000, "Standard")36,000.00"Percent"Format(36000, "Percent")3600000.00%"Scientific"Format(36000, "Scientific")3.60E+04"Yes/No"Format(36000, "Yes/No")Yes"True/False"Format(36000, "True/False")True"On/Off"Format(36000, "On/Off")Onلعمل برنامج لإظهار الساعة باستخدام الـ Timer قم بإتباع الخطوات التالية :- · قم بوضع أداة الـوقت Timer ومربع عنوان Label على الـ Form· قم بتغيير خاصية الـ Interval إلى 500 الخاصة بأداة الـ Timer· قم بالنقر المزدوج على أداة الـ Timer لإظهار شاشة التعليمات الخاصة بهذه الأداة ثم قم بكتابة الكود التالي Private Sub Timer1_Timer()If Form1.WindowState = vbNormal Then Label1.Caption = CStr(Time)Form1.Caption = Format(Date, "Long Date")ElseForm1.Caption = CStr(Time)End IfEnd Sub· قم بتنفيذ البرنامج ولا حظ ما يحدث .ولعمل برنامج باستخدام الـ Timer لإظهار مجموعة من الأعداد المتتالية بحيث يظهر العدد الأول وبعد فترة معينة يقوم بإظهار الرقم الذى يليه وهكذا إلى أن تنتهى مجموعة الأعداد . قم بإتباع الخطوات التالية :-- قم بوضع أداة الـ Timer على الـ Form- قم بالنقر المزدوج على هذه الأداة للدخول إلى شاشة التعليمات الخاصة بها ثم قم بكتابة الكود التالى تحت الحدث Timer() :Private Sub Timer1_Timer()If i <= 10 Then Print ii = i + 1End Subأولا قم بتعريف المتغير فى الجزء الخاص بـ Option Explicit كما يلى Option ExplicitDim i As Integer- قم بتنفيذ البرنامج ولاحظ ما يحدث . | |
|