الدرس الرابع : أنواع البيانات .
يمكنك استعمال أنواع البيانات لحفظ البيانات والمعلومات سواء المدخلة من المستخدم أو قيم افتراضية أو القيم الداخلة في المعالجة والحسابات , كما أنه لا تقتصر أنواع البيانات على الأرقام والحروف , وإنما تشمل أيضا الكائنات وغيرها الكثير.
عندما تقوم بتعريف نوع بيانات جديد , فإن البرنامج يحجز مساحة معينة (تختلف باختلاف نوع البيانات) من ذاكرة الجهاز , وهذه المساحة لها عنوان في الذاكرة , لكن انت يمكنك الوصول الى المساحة من خلال كتابة الاسم الذي عينته لنوع البيانات .
هذا الدرس طويل قليلاً , لكنه مهم جدا , وقد حاولت جمع أكبر قدر ممكن من المعلومات المتعلقة بأنواع البيانات فيه .
الثوابت : قيم ثابتة تعطي قيمة معينة , بحيث لا يمكنك تغييرها وقت تنفيذ البرنامج , ولكن يمكنك استدعاؤها في أي مكان من البرنامج , والشكل الثابت لتعريف ثابت ! هو :
كود Const X = Val
حيث :
Const : كلمة محجوزة توضح اننا نعرف ثابتاً
X : اسم الثابت , ويراعى انه لا يكون به رموز غير الشرطة السفلية (_) ويكون من مكون من احرف وارقام انجليزية , ولا يحتوي على مسافات ولا يكون كلمة محجوزة , مثل اني اعرف ثابت اسمه IF ! أو For , Const , Do , IS ... إلخ
وحتى تعرف هل الكلمة محجوزة أم لا , ستتحول معك إلى اللون الأزرق .
Val : قيمة الثابت
فمثلاً لتعريف ثابت نصي فيه جملة ما , نكتب :
كود Const S = "hi , my name is alaa adel , and I am a member in arab team 2000 forum . and here are some VB lessons"
نفرض اني أريد عمل بعض العمليات على الجملة السابقة في عدة مواضع من البرنامج , فبدلاً من كتابة الجملة أكثر من مرة في البرنامج , يكفي ان نكتب S .
ملحوظة أخيرة : كلمة Private تستخدم لتعريف ثابت خاص , أي انه لا يمكنك الوصول إليه من خارج الإجراء أو من خارج النافذة التي عرف فيها
القسم General : هو قسم من الكود , ليس إجراء ولا طبقة ولا دالة , وإنما تعرف فيه المتغيرات والدوال والثوابت التي تكون خاصة للوصول إليها على مستوى البرنامج ككل , أو تكون Private للوصول إليها من خلال النافذة الحالية فقط .
للوصول إلى هذا القسم , كل ما عليك هو اختيار كلمة (General) من القائمة المنسدلة التي في أعلى يسار محرر الكود .
المتغيرات : قيم يمكنك تغييرها أثناء زمن تنفيذ البرنامج .
أي أنك يمكنك تغييرها أثناء التنفيذ , إما لغرض معالجة إدخال من المستخدم , أو حفظ قيمة دوارة (مثل X في دوارات For و Do في الدرس السابق) , وغيره الكثير من الأمثلة
والشكل العام لتعريف متغير هو :
كود (Public , Private , Dim , Static) X As {New} Type
حيث :
Public و Private و Static و Dim هي كلمات محجوزة يجب كتابة واحدة منها , وشرحها كالتالي :
Dim : تعريف متغير داخل الدالة أو الإجراء الحالي فقط , وهذا يقلل من المساحة المستخدمة من قبل البرنامج حيث لن يتم حجز مساحة المتغير إلا عند استدعاء الدالة أو الإجراء الذي فيه هذا المتغير , كما أنك لن تستطيع التعامل معه من خارج هذه الدالة أو الإجراء
Private : تعريف متغير خاص , وغالبا توضع المتغيرات من نوع Private في القسم General ليتم الوصول إليها من جميع الإجراءات والدوال في النافذة الحالية.
Public : تعريف متغير عام يمكن الوصول إليه من خلال جميع أجزاء البرنامج , وغالبا يوضع في القسم General أو في Module (سنتطرق لها لاحقاً بإذن الله تعالى)
Static : وهي تستخدم إن كنت ستستخدم المتغير كعداد , أو إن كنت تريد أن تبقى قيمته كما هي عند الخروج من الإجراء ومن ثم العودة إليه فمثلاً , لو وضعت متغير X من النوع Integer معرف كـDim في إجراء Timer , وجعلت قيمته تزيد بمقدار ما عند كل مرة يستدعى فيها الإجراء فستلاحظ أن قيمته لا تزيد , لأنه كلما تم استدعاء الإجراء فستعود قيمة المتغير إلى البداية لكن مع تعريف المتغير كـStatic فإن قيمته ستزيد جرب الأمر التالي في حدث Timer لأداة مؤقت :
كود Dim X As Integer X = X + 1 Me.Caption = X جرب مرة مع Dim وأخرى مع Static ولاحظ الناتج
X : اسم المتغير , ويخضع للشروط السابق ذكرها في اسم الثوابت
As: كلمة محجوزة لربط الاسم بالنوع
New : كلمة محجوزة تستخدم فقط إن كنت تريد تعريف كائن جديد , مثل تعريف نافذة جديدة أو غيره
Type : نوع المتغير
لتعريف متغير رقمي مثلاً نكتب :
كود Dim Num_Var As Integer
أنواع البيانات الأساسية :
String : متغير نصي
Integer : متغير رقمي
Byte : متغير رقمي , أقصى قيمة له هي 255
Double : متغير بفاصلة عشرية
Currency : عملة (فلوس)
Date : تاريخ
Boolean : قيمة منطقية (صح True أو خطأ False)
Long , Single متغيرات رقمية أيضاً
Variant : متغير "متلون" أي أنه يستعمل للتعامل مع أي نوع بيانات سواء كان رقمي أم نصي ... إلخ
ملحوظة : قد تجد عدة أنواع رقمية مثلاً , لكنها تختلف في المدى (أي أقصى قيمة تتقبلها , مثلاً Byte مداه من 0 إلى 255) وأيضاً في الحجم الذي تستخدمه من ذاكرة الجهاز
حجم المتغيرات : كل متغير كما ذكرت يحجز جزءاً من الذاكرة , وحجم هذا الجزء يختلف من متغير إلى آخر , فمثلاً
- Integer يحجز 2 بايت - Long يحجز 4 بايت - Byte يحجز بايت واحد - Single يحجز 4 بايت - Double يحجز 8 بايت - Variant يحجز 16 بايت
ملحوظة صغيرة , يمكنك تعيين أقصى حد لأحد المتغيرات من خلال إشارة ( * ) , فمثلاً يمكنك كتابة :
كود Dim S As String * 20
وهكذا فإن المتغير S سيكون أقصى طول له هو 20 حرف
الكائنات :
يمكنك تعريف متغير يأخذ صفات كائن ما وخصائصه ووظائفه من خلال أمر New السابق وأمر Set , ويكون الشكل كالتالي :
كود (Public , Dim , Private) Name As New Object
Set Name = Object
حيث :
Name : اسم المتغير
New : كلمة محجوزة , وتعني انه كائن جديد
Object : اسم الكائن , وعليك الاختيار من القائمة الظاهرة لك , وهذا شرح لأبرز ما فيها :
Project : وهو اسم المشروع , وهو كائن المشروع الحالي
Collection : مجموعة كائنات
Form : وهو اسم النموذج الحالي , وهو كائن النافذة الحالية
Set : كلمة محجوزة لربط الكائن بالمتغير
فمثلاً , لتعريف متغير من نوع النافذة الحالية , نكتب :
كود Dim F As New Form1
Set F = Form1 وهكذا يمكنك التعامل مع F على انه النافذة الحالية
أنواع البيانات المخصصة :
هذه الجزئية مهمة , وهي توفر لك إمكانية إنشاء نوع بيانات خاص بك (مثل String و Integer) خاص بك . ويكون ذلك بالشكل التالي :
منقول
كود (Public , Private) Type Name
Value1 As Type
Value2 As Type
Value… As Type
End Type
حيث :
Type الأولى : هي كلمة محجوزة لنخبر البرنامج أننا نعرف نوعا خاصاً جديداً
Name : اسم النوع ويخضع للشروط السابقة الخاصة بأسماء المتغيرات والثوابت
Value As Type : كأنك تعرف متغير مثل X As Integer
مثلاً , لتعريف نوع جديد خاص بطلبة مدرسة ما , يكون كالتالي :
كود Private Type Student
Name As String
Mark As Byte
End Type
الآن تعال في أي إجراء (مثلاً Form1_Load) واكتب :
كود Dim Alaa As Student
Alaa.Name = "Alaa !"
Alaa.Mark = 255
أولاً : تلاحظ أنك عندما كنت تكتب نوع المتغير , ظهر في القائمة الخاصة بالأنواع النوع الجديد الخاص بنا (Student)
ثانياً : بعد كتابتك للنقطة في السطر الثاني والثالث , تظهر قائمة فيها Mark و Name
الآن أضف الكود التالي بعد نهاية الكود السابق , ومن ثم شغل البرنامج :
كود Msgbox Alaa.Name
Msgbox Alaa.Mark
تلاحظ ظهور رسالتين فيهما القيم التي عيناها سابقاً
تم تحرير المشاركة بواسطة Ala2 VB: Aug 8 2008, 01:17 AM
|