السلام عليكم و رحمة الله و بركاته ،
الدرس الرابع : أنواع البيانات .
يمكنك استعمال أنواع البيانات لحفظ البيانات والمعلومات سواء المدخلة من المستخدم أو قيم افتراضية أو القيم الداخلة في المعالجة والحسابات , كما أنه لا تقتصر أنواع البيانات على الأرقام والحروف , وإنما تشمل أيضا الكائنات وغيرها الكثير.
عندما تقوم بتعريف نوع بيانات جديد , فإن البرنامج يحجز مساحة معينة (تختلف باختلاف نوع البيانات) من ذاكرة الجهاز , وهذه المساحة لها عنوان في الذاكرة , لكن انت يمكنك الوصول الى المساحة من خلال كتابة الاسم الذي عينته لنوع البيانات .
هذا الدرس طويل قليلاً , لكنه مهم جدا , وقد حاولت جمع أكبر قدر ممكن من المعلومات المتعلقة بأنواع البيانات فيه .
الثوابت : قيم ثابتة تعطي قيمة معينة , بحيث لا يمكنك تغييرها وقت تنفيذ البرنامج , ولكن يمكنك استدعاؤها في أي مكان من البرنامج , والشكل الثابت لتعريف ثابت ! هو :
Const X = Val
حيث :
Const : كلمة محجوزة توضح اننا نعرف ثابتاً.
X : اسم الثابت , ويراعى انه لا يكون به رموز غير الشرطة السفلية (_) ويكون من مكون من احرف وارقام انجليزية , ولا يحتوي على مسافات ولا يكون كلمة محجوزة , مثل اني اعرف ثابت اسمه IF ! أو For , Const , Do , IS ... إلخ.
وحتى تعرف هل الكلمة محجوزة أم لا , ستتحول معك إلى اللون الأزرق .
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 في الدرس السابق) , وغيره الكثير من الأمثلة.
والشكل العام لتعريف متغير هو :
ملحوظة أخيرة : كلمة 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 لأداة مؤقت :
X = X + 1
Me.Caption = X
جرب مرة مع Dim وأخرى مع Static ولاحظ الناتج.
X : اسم المتغير , ويخضع للشروط السابق ذكرها في اسم الثوابت.
As : كلمة محجوزة لربط الاسم بالنوع.
New : كلمة محجوزة تستخدم فقط إن كنت تريد تعريف كائن جديد , مثل تعريف نافذة جديدة أو غيره.
Type : نوع المتغير.
لتعريف متغير رقمي مثلاً نكتب :
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 بايت.
ملحوظة صغيرة , يمكنك تعيين أقصى حد لأحد المتغيرات من خلال إشارة ( * ) , فمثلاً يمكنك كتابة :
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 , ويكون الشكل كالتالي :
الكائنات :
يمكنك تعريف متغير يأخذ صفات كائن ما وخصائصه ووظائفه من خلال أمر New السابق وأمر Set , ويكون الشكل كالتالي :
Set Name = Object
حيث :
Name : اسم المتغير.
New : كلمة محجوزة , وتعني انه كائن جديد.
Object : اسم الكائن , وعليك الاختيار من القائمة الظاهرة لك , وهذا شرح لأبرز ما فيها :
Project : وهو اسم المشروع , وهو كائن المشروع الحالي.
Collection : مجموعة كائنات.
Form : وهو اسم النموذج الحالي , وهو كائن النافذة الحالية.
Set : كلمة محجوزة لربط الكائن بالمتغير.
فمثلاً , لتعريف متغير من نوع النافذة الحالية , نكتب :
Name : اسم المتغير.
New : كلمة محجوزة , وتعني انه كائن جديد.
Object : اسم الكائن , وعليك الاختيار من القائمة الظاهرة لك , وهذا شرح لأبرز ما فيها :
Project : وهو اسم المشروع , وهو كائن المشروع الحالي.
Collection : مجموعة كائنات.
Form : وهو اسم النموذج الحالي , وهو كائن النافذة الحالية.
Set : كلمة محجوزة لربط الكائن بالمتغير.
فمثلاً , لتعريف متغير من نوع النافذة الحالية , نكتب :
Set F = Form1
وهكذا يمكنك التعامل مع F على انه النافذة الحالية
أنواع البيانات المخصصة :
هذه الجزئية مهمة , وهي توفر لك إمكانية إنشاء نوع بيانات خاص بك (مثل String و Integer) خاص بك . ويكون ذلك بالشكل التالي :
أنواع البيانات المخصصة :
هذه الجزئية مهمة , وهي توفر لك إمكانية إنشاء نوع بيانات خاص بك (مثل String و Integer) خاص بك . ويكون ذلك بالشكل التالي :
Value1 As Type
Value2 As Type
Value… As Type
End Type
حيث :
Type الأولى : هي كلمة محجوزة لنخبر البرنامج أننا نعرف نوعا خاصاً جديداً.
Name : اسم النوع ويخضع للشروط السابقة الخاصة بأسماء المتغيرات والثوابت.
Value As Type : كأنك تعرف متغير مثل X As Integer.
مثلاً , لتعريف نوع جديد خاص بطلبة مدرسة ما , يكون كالتالي :
Type الأولى : هي كلمة محجوزة لنخبر البرنامج أننا نعرف نوعا خاصاً جديداً.
Name : اسم النوع ويخضع للشروط السابقة الخاصة بأسماء المتغيرات والثوابت.
Value As Type : كأنك تعرف متغير مثل X As Integer.
مثلاً , لتعريف نوع جديد خاص بطلبة مدرسة ما , يكون كالتالي :
Name As String
Mark As Byte
End Type
الآن تعال في أي إجراء (مثلاً Form1_Load) واكتب :
Alaa.Name = "Alaa !"
Alaa.Mark = 255
أولاً : تلاحظ أنك عندما كنت تكتب نوع المتغير , ظهر في القائمة الخاصة بالأنواع النوع الجديد الخاص بنا (Student).
ثانياً : بعد كتابتك للنقطة في السطر الثاني والثالث , تظهر قائمة فيها Mark و Name.
الآن أضف الكود التالي بعد نهاية الكود السابق , ومن ثم شغل البرنامج :
ثانياً : بعد كتابتك للنقطة في السطر الثاني والثالث , تظهر قائمة فيها Mark و Name.
الآن أضف الكود التالي بعد نهاية الكود السابق , ومن ثم شغل البرنامج :
Msgbox Alaa.Mark
تلاحظ ظهور رسالتين فيهما القيم التي عيناها سابقاً.
أرجو أن يكون الدرس مفيدا , وأن ينال إعجابكم.
والسلام عليكم و رحمة الله و بركاته.
والسلام عليكم و رحمة الله و بركاته.

0 التعليقات:
إرسال تعليق