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

للمبتدئين : شرح للمتغيرات و الثوابت و المعاملات

مغلق
بدأه Mostafa Ismail في 22 نوفمبر 2005 · 18 رد · 3,077 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

كنت قد أعدت درس شامل (للمتغيرات و الثوابت و المعاملات في الفيجول بيسك) في منتدى فيجول بيسك دوت نت للعرب قبل توقفه

وكما يجب علي قبل أن انقل الدرس إلي المنتدى إن استأذن أعضاء ومشرفين المنتدى ولاني بحثت في المنتدى عن مواضيع أو دروس مشابهة ولكني لم أجد مواضيع كاملة جامعة بين المتغيرات و الثوابت و المعاملات بشكل مرتب وعملي بأمثلة

انتظر رأي الأخوة . . . !

#2

أرجوك يا أخي لا تبخل على أخوانك فهم في أمس الحاجة

إلى مثل هذه الدروس ( لأنهم سوف يحتاجونها عندما يعملون برامج ) فلا تحرم نفسك من الأجر

..

..

..

نتظر دروسك بفارغ الصبر

#3

توكل على الله

في الإنتظار

#4

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

واعتقد انه لا يوجد مواضيع مشابهة لأنه لم يرد علي احد من الأعضاء القدامى أو المشرفين وبما أن السكوت من علامات الرضا لذلك سأبدأ في نقل الدروس لكم بعد غد إن شاء الله عندما اصل إلي البيت

إلي اللقاء . . . !

#5

مقدمــــــــــــــة :

البيانات في أي لغة من لغات البرمجة بما فيها فيجول بيسك أما أن تكون متغيرات Variables أو ثوابت Constants و المتغير هو مكان في الذاكرة يتم تخصيصه لك لتقوم بوضع عنوان له ويخزن المعلومة التي تريدها بداخلة كما يمكنك تغير هذه المعلومة بمعلومة أخري في نفس المكان ويظل عنوانه ثابت .

أما الثابت فمثله مثل المتغير تماما إلا انك لن تحتاج لتغير هذه المعلومة . وكما هو واضح من الاسم عبارة عن اسم يحمل قيمة ثابتة لا تتغير أثناء تنفيذ البرنامج .

ولكي هذان المثالين ليوضح لك وظيفة كل من المتغيرات والثوابت ..

مثال علي المتغيرات والثوابت :

المتغيرات . إذا أردت أن تسال عن اسم العميل الذي سيدخله المستخدم فان اسم العميل قيمة متغيرة لأنك لا تعرف من هو هذا العميل الذي سيقع عليه اختيار المستخدم في هذه الحالة تستخدم متغير لتضع فيه اسم العميل انظر المثال التالي :

HisName$=InputBox$("اكتب اسم العميل")

في هذا المثال سيعرض فيجول بيسك علي المستخدم مربع حوار نتيجة لتنفيذ أمر InputBox$ يطالبه فيه بكتابه اسم العميل ويقوم بحفظ اسم العميل الذي يدخله المستخدم في المتغير HisName$ ويبقي المتغير HisName$ يحمل هذا الاسم حتى يقوم المستخدم بتغيره ويتم تغير القيمة التي يحملها المتغير HisName$ بوضع قيمة أخري داخلة فيقوم الفيجول بيسك باستبدال القيمة القديمة بالقيمة الجديدة .

الثوابت . إذا كان عملك يتطلب مجموعة من العمليات الحسابية ترتبط بوحدة ثابتة مثل وحدة القياس المتر وهو يساوي مائه سنتمتر فيمكن الإعلان عن ذلك بالأمر التالي:

Const Meter=100

وهذه يفيدك عندما تكون جميع حساباتك بالنسبة للوحدة سنتمتر فبدلا من قيمة المتر وكتابة الرقم ( 100 ) في كل مرة سيتم كتابه الثابت Meter في جميع التعليمات المطلوبة داخل البرنامج وهي فائدة كبيرة تجعل برنامجك سهلا وبسيطا.

فائدة أخري يمكن الحصول عليها من استخدام الثوابت ، فمثلاً في حالة تعديل كل حساباتك لتصبح منسوبة لوحدة الملليمتر بدلا من السنتمتر ( والمعروف أن المتر = 1000 ملليمتر ) فبدلا من إجراء هذا التعديل في جميع إجراءات برنامجك ( وهو كتابة الرقم 1000 بدلا من الرقم 100 ) يكفي أن تعدل الرقم 100 ليصبح 1000 في نفس الأمر كآلاتي .

Const Meter=1000

وبذلك تتم عملية التعديل مرة واحدة فقط لتعطي النتيجة المطلوبة .

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

ولعدم التشتت سنترك الثوابت قليلا وسنتكلم عن المتغيرات بشكلا من التفصيل .

وهذا ما سنتطرق إليه في الدرس القادم إن شاء الله .

#6

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

أنواع المتغيرات :

يوجد في الفيجول بيسك أنواع كثيرة للمتغيرات نوضح منها التالي .

نوع المتغير : Integer

معناه : عدد صحيح صغير نسبيا

حجمه : 2 Byte

مداه : من 32768- إلي 32767

مثال : 0,1,1000, --- -1,-2000

نوع المتغير : Long

معناة : عدد صحيح كبير نسبيا

حجمه :4 byte

مداه : من 2147483648- إلي 214783674

مثال : 0,1,33000 , --- -2,-33000

نوع المتغير :Single

معناه : عدد حقيقي صغير نسبيا (يحتوي علي علامة عشرية عائمة Floating Point)

حجمه : 4 byte

مداه : من 3.402823E38- إلي -1.401298E-45 (قيم سالبة)

من 1.401298E-45 إلي 3.402823E38 (قيم موجبة)

مثال : 0,1,33000,

-2,-33000

نوع المتغير :Double

معناه : عدد حقيقي كبير نسبيا (يحتوي علي علامة عشرية عائمة)

حجمه :8 bye

مداه : رقم هائل

نوع المتغير : Currency

معناه : عدد حقيقي كبير نسبيا (يحتوي علي علامة عشرية ثابتة)

حجمه : 8 byte

مداه : رقم هائل

نوع المتغير : Byte

معناه : عدد صغير جدا أو بيانات ثنائية

حجمه : 1 Byte

مثال : من صفر إلي 255

نوع المتغير : Boolean

معناه : متغير منطقي يحمل قيمتان فقط صفر أو واحد .أو True or False

حجمه : 2 Byte

نوع المتغير : Date

مثال : يحمل قيم تاريخه و وقت وهو من نفس نوع المتغير Double

حجمه : 8 Byte

مداه : من التاريخ 1 يناير 100 إلي 31 ديسمبر 9999

ومن الساعة 00:00:00 إلي 23:59:59

نوع المتغير : Object

معناه : كائنات أو فئات Classes

نوع المتغير : String

معناه : سلسلة من الحروف

مداه : من صفر إلي 65500 حرف تقريبا

مثال : "AB","15", "AAA111"

نوع المتغير : Variant

معناه : الوقت/التاريخ أو عدد ذو علامة عشرية عائمة أو سلسة حروف

حجمه : 16 Byte

مداه : التاريخ من 1 يناير 0000 إلي 31 ديسمبر 9999 وفي الأعداد مثل Double وفي الحروف مثل String

و الآن وقد تعرفنا علي أنواع المتغيرات ( ارجع إلي كتاب الأستاذ تركي العسيري فيه شرح لأنواع المتغيرات بشكل من التفصيل ).

ولكن بقي لنا شئ آخر وهو كيف نعلن عن هذه المتغيرات في فيجول بيسك . ومعني الإعلان عن المتغير عبارة عن أمر يخبر فيجول بيسك باسم المتغير ونوعه ليتمكن الفيجول بيسك من حجز المساحة اللازمة من ذاكرة الحاسب لهذا المتغير وتهيئته . وقبل الإعلان عن أي متغير يجب إن نعرف شئ مهم جدا وهي ..

#7

الشروط الواجب توافرها عند اختيار اسم للمتغير ..

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

ألا يزيد عدد حروف اسم المتغير عن 40 حرفا .

ويجب ألا يحتوي علي أي مسافات أو نقاط وإذا كان اسم المتغير يحتوي علي كلمتين فأنصحك باستخدام (_) Under Score للفصل بينهما ..

و يجب أيضا إلا يتضمن كلمة من الكلمات المحجوزة وهي الكلمات التي تستخدم في الأوامر و العبارات التي يستخدمها فيجول بيسك فمثلا لا يسمح باستخدام كلمة Print كاسم للمتغير فإذا احتجت لتسمية متغير مثل كلمة Print فيمكنك أن تكتب الكلمة كجزء من اسم المتغير PrintText مثلا .

فائدة (1) :

يفضل الإعلان عن نوع المتغير لزيادة سرعة التعامل معه .

المتغيرات التي لم تحدد نوعها يعمل فيجول بيسك علي الإعلان عنها تلقائيا من النوع Variant وهو أبطأ أنواع المتغيرات .

فائدة (2) :

يوجد نوعان من المتغير من النوع String وهي متغيرات ثابتة الطول Fixed Length و متغيرات متغيرة الطوال Variable Length . و المتغيرات الحرفية ثابتة الطوال وكما واضح من اسمها هي متغيرات محدد لها عدد الحروف في أثناء التصريح عنها ولا يمكن أن يتغير طولها وتكون بصورة التالية :

Dim TafTaf As String * 10

و المتغيرات الحرفية متغيرة الطول تستخدم في حالة عدم معرفتك بطول المتغير المار إليها ومن عيوبها إنها تلتهم حجم كبير جدا من الذاكرة .

كيفية الإعلان عن المتغيرات :

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

Value = 10              '   قيمة = 10Value هنا أعطينا المتغير
Text1.Text = Valu  'و هنا أخطأنا في كتابة اسم المتغير

و لحل هذه المشكلة الإعلان عن المتغير بأمر Dim مثلا . ( سنتكلم عن أوامر الإعلان عن المتغيرات لاحقا )

Dim Value As Integer

ولجعل فيجول بيسك لا يستخدم متغيرا إلا قبل الإعلان عنه أو بمعني اصح يجبرك للإعلان عن كل متغير تستخدمه بكتابة هذه العبارة في قسم التصاريح العامة General Declaration . بإظهار رسالة خطأ ..

Option Explicit

ولجعل هذه العبارة تكتب تلقائيا . من قائمة Tools اختر أمر Options وضع علامة صح في صندوق الاختيار أمام عبارة Require Variable Declarations من صفحة Editor أي طلب الإعلان عن أي متغير قبل استخدامه ..

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

و لكي نتحكم في المتغيرات بشيئا من الفاعلية أكثر يجب نتعرف علي أوامر الإعلان حتى يمكننا الإعلان عن المتغير بشكل سليم واستغلال الذاكرة بشكل أفضل ..

أوامر الإعلان عن المتغيرات :

أمر الإعلان Dim : يستخدم لتعريف متغير ديناميكي Dynamic Variables ضمن الأجراء ويكون مجال رؤية هذا المتغير داخل الأجراء فقط وعمرة من عمر الأجراء أي أن عندما ينتهي الأجراء ينتهي معه مفعول المتغير المحلي ويصبح لا قيمة له أو صفر ولهذا سمي أمر الإعلان هذا بديناميكية لأنه يوفر في الذاكرة بشكل جيد .

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

فائدة (3) :

أن أمر الإعلان Redim لا يستخدم ألا داخل أجراء فقط أي لا يستخدم في قسم الإعلانات مثل الأمر Dim

أمر الإعلان Static : يستخدم لتعريف متغير ستاتيكي Static Variables ضمن الأجراء ويكون مجال رؤية هذا المتغير داخل الأجراء فقط وعمرة من عمر الوحدة التي بداخلها الأجراء سواء كانت الوحدة هذه Form أو Module أو Class أي أن عندما ينتهي الأجراء يظل المتغير ساكن في الذاكرة وكذلك قيمته موجودة ولكنك لا يمكنك الوصول إلية ألا من داخل الأجراء التابع له .

نصيحة (1) :

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

أمر الإعلان Private :

يستخدم لتعريف متغير عام General Variables ولكنه يكون علي مستوي الوحدة سواء كانت Form أو ملف برمجة BAS أو فئة Class وبالطبع عمرة يكون من عمر الوحدة .

أمر الإعلان Public : يستخدم لتعريف متغير عام General Variables ولكنه يكون علي مستوي المشروع ككل ويمكن الوصول إليه من جميع الوحدات الموجودة في المشروع وعمرة من عمر البرنامج ككل ويظل في الذاكرة حتى ينتهي البرنامج .

أمر الإعلان Global : أمر الإعلان أو الكلمة المحجوزة Global كانت تستخدم في الإصدارات القديمة للفيجول بيسك ومازالت حتى الآن تستخدم وهي تؤدي نفس وظيفة أمر الإعلان Public ولكنك لن تستطيع التصريح عنها ألا في الوحدات النمطية فقط .

الإعلان بإضافة رمز مميز :

يستخدم مع المتغير ---- الرمز المستخدم

Integer ----- %

Long ----- &

Single ----- !

Double ----- #

Currency ----- @

String ----- $

فمثلا الأمر ..

MyName$="TafTaf"

يعلن عن متغير من نوع String ( سلسة من الحروف )

الإعلان باستخدام الوظيفة AS :

وهنا تفيد الوظيفة AS في تميز نوع المتغير الذي يأتي بعد الوظيفة AS مع أحد الأوامر Redim. Dim. Static. Global Private. Public حيث يتم كتابة الأمر ثم اسم المتغير ثم كتابة الوظيفة AS ثم كتابة نوع المتغير . انظر المثال التالي .

Dim TafTaf  AS String

فائدة (4) :

أوامر الإعلان السابق ذكرها هي تعتبر ضمن الكلمات المحجوزة مثل الجملة Option Explicit أو أمر Print والكلمات المحجوزة هي الكلمات التي يحتفظ بها الفيجول بيسك لنفسه ولا يمكنك استخدامها كاسم للمتغير أو للثابت .

الإعلان باستخدام أمر تعريف دالة :

في هذه الطريقة يتم استخدام أحد الأوامر التالية :

( CCur , CLng , CDbl , Clnt, CStr , CSng, Cvar)

للأنواع الآتية علي التوالي.

Currency , Long , Double , Integer , String , Single , Variant

وعند كتابة أي حرف بعد أي من هذه الأوامر تتحول كل المتغيرات التي تبدأ بهذه الأحرف إلي نفس النوع المعلن عنه في الأوامر المستخدم ، وفي المثال التالي نستخدم الأمر Clnt للإعلان عن جميع المتغيرات الموجودة في البرامج والتي تبدأ بحرف A علي إنها من النوع Integer .

Clnt A

أما في المثال التالي فيتم الإعلان عن التغيرات الموجودة في البرامج و التي تبدأ بأحد الأحرف التالية B أو C أو D علي أنها من النوع String .

Cstr B-D

Cstr B-D

لاحظ أنه لا ينبغي كتابة أكثر من حرفين متصلين بدون العلامة ( - ) بعد الأمر .

للإعلان عن أي متغير يبدأ بالحرف (A ) أو بأحد الحروف من ( D ) إلي ( F ) أو من ( X ) إلي ( Z ) علي أنه من النوع Double اكتب الأمر بالصورة التالية :

CDbl A, D-F , X-Z

علاقة المصفوفات بالمتغيرات :

المصفوفات هي في حد ذاتها عبارة عن سلسلة من المتغيرات لها نفس الاسم ولكن يكون لها رقم وهنا تختلف عن المتغيرات بوجود هذا الرقم الذي يوفر لك الوقت و الجهد .

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

أما الحل الامثل في هذه الحالة فهو استخدام مصفوفة تتكون من 100 عنصر و الصيغة التي تحقق هذا الغرض لهذه المصفوفة كما يلي :

Private Names(99)  As String

وان شاء الله غدا سنتكلم عن مدي استخدام المتغير وعمرة Lifetime and Scope of Variable :

تم تعديل هذه المشاركة بواسطة Mostafa Ismail في 27 نوفمبر 2005 في 01:20

#8

كان درسنا السابق عن أنواع المتغيرات وكيفية الإعلان عنها ولكن بقي لنا شئ مهم جدا لنعرفه عن المتغيرات وهو مدي استخدام المتغير وعمرة Lifetime and Scope of Variable

مدي استخدام المتغير وعمرة Lifetime and Scope of Variable :

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

1. المتغيرات العامة ..

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

يستخدم الأمر Public للإعلان عن المتغيرات العامة في المثال التالي يتم الإعلان عن متغير عام لكي تستخدمه جميع الإجراءات في جميع الوحدات النمطية من نوع Integer واسمه ABC .

Public ABC AS Integer

2. المتغيرات علي مستوي الوحدة النمطية ..

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

للإعلان عن متغير من هذا النوع استخدم الأمر Private بدلا من الأمر Public في المثال التالي يتم الإعلان عن متغير من نوع String واسمه TafTaf لكي يستخدم فقط مع الوحدة النمطية التي يوجد بها .

Private TafTaf As String

وهذا الأمر يمكن إدخاله من خلال الأجراء لإدخال الأمر علي مستوي الوحدة النمطية استخدمه بنفس الطريقة التي تستخدمها للإعلان عن المتغير العام مع فارق واحد وهو استخدام أمر Private بدلا من أمر Public .

3. متغيرات علي مستوي الأجراء ..

يقتصر مدي هذه المتغيرات علي الأجراء الموجودة به فقط ولا يمكن استخدامه في أي مكان غيرة وهي بهذا تعتبر اقل المتغيرات مدي من حيث عمرها فهي تبقي موجودة بالذاكرة حتى بعد أن ينتهي الأجراء الذي أعلن فيه عنها وبهذا يتضح أن الفرق بين هذه المتغيرات و المتغيرات العامة أو المتغيرات علي مستوي الوحدة النمطية في مداها فقط حيث لا يتعدى مداها الأجراء الذي أعلن عنها فيه . يستخدم لهذا الغرض الأمر Static ويتضح ذلك من المثالين التالين في المثال الأول يظهر المتغير S1 محتفظا بقيمته فترة تنفيذ الأجراء Load Form وبمجرد الخروج من الأجراء ستكون قيمته تساوي صفر بينما في حالة استخدام المثال الثاني فإن المتغير سيحتفظ بقيمته بعد تنفيذ نفس الأجراء السابق .

المثال الأول :

Private Sub Form_Load (Cancel As Integer)
Dim S1 As Integer
S1 = 5
End Sub

المثال الثاني :

Private Sub Form_Load (Cancel As Integer)
Static S1 As Integer
S1 = 5
End Sub

فائدة (5) :

يوفر عليك مدي المتغيرات وعمرها استهلاك مساحة من الذاكرة بدون داع فمثلا إذا كنت تريد استخدام متغير في أكثر من وحدة نمطية فيجب أن تعلن عنه كمتغير عام بالأمر Public وإذا كنت تحتاج للمتغير في وحدة نمطية واحدة فقط استخدم الأمر Private للإعلان عنه أما إذا كنت تحتاج للمتغير مؤقتا في هذا الأجراء فقط استخدم أمر Static ليبقي مداه داخل الأجراء فقط .

مستويات الإعلان عن المتغيرات : ( هذا الجزء منقول عن موضوع العقل الصناعي : الثوابت و المتغيرات للأخ BSC )

في القسم العام لملفات البرمجة Dim عام ، Private عام ، Public شامل ، Global شامل

في القسم العام للنوافذ Dim عام ، Private عام ، Public عام

داخل إجراءات الملفات Dim ساكن

داخل إجراءات النوافذ Dim محلي ، Static ساكن

المصطلحات :

1- شامل : عام لجميع نوافذ البرنامج وملفاته

2- عام : عام لجميع إجراءات النافذة أو الملف الذي تم الإعلان داخلها ( الشامل أعم )

3- المحلي والساكن : كلا منهما خاص بالإجراء الذي تم الإعلان داخله

الفرق بين المحلي والساكن :

1- المتغير المحلي يفقد قيمته عند الخروج النهائي من الإجراء

2- الساكن يحتفظ بقيمته طوال مدة تشغيل البرنامج

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

هل ابدأ في الثوابت هل من متابع . . .!

#10

ان شاء الله سأكمل الدرس

ولكني لا اجد اهتمام من الاخوة

اتمني ان تستفيد من الدرس و الدروس القادمة اخي المهنا

#11

انا اضم صوتي للمهنا .....

بصراحة الموضوع هيدا جدا هام بالنسبة لي وقد مررت عليه اكثر من مرة ولم اشارك باي تعليق لأني كنت منتظرة ان يكون لدي اسئلة ..

وحقك علينا اخي مصطفى وخاصة نحن الفئة التي تبخل حتى بالشكر على مجهود شخص اراد افادتنا ونكتفي بالقراءة فقط بدون اي تعليق ...

فارجو ان تعذر مني هذه الانانية

ونحن منتظرين منك كل ما هو مفيد

ولكن لدي سؤال ؟؟؟؟

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

ارجوا اجابتي بصراحة ...

#12

السلام عليكم ورحمه الله وبركاته . . . !

معذرة علي التاخير وهذا بسبب انشغالي

اليوم ان شاء الله سأبدأ في الثوابت اتمني ان يكون استفاد احد من الدروس السابقة في المتغيرات

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

تسمية الثابت :

يخضع اسم الثابت لنفس الشروط التي شرحناها عند اختيار اسم المتغير وهي ألا يزيد عدد حروفه عن 40 حرفا، وأن يبدأ بحرف هجائي وألا يستخدم إحدى الكلمات المحجوزة للفيجول بيسك .

مدي الثوابت :

تتبع الثوابت نفس القواعد التي تحدد مدي المتغيرات حيث يحدد مدي الثابت بالمكان الذي تعلن فيه عن هذا الثابت . وتوضيح ذلك كما يلي .

ثوابت عامة : إذا أردت أن يكون الثابت عاما أي يمكن استخدامه من أي مكان في البرنامج فيجب أن تعلن عنه في الوحدة النمطية بشرط أن يسبق الإعلان عنه كلمة Public هكذا.

Public Const My_Name As String = "TafTaf"

ثوابت علي مستوي الوحدة النمطية : لكي تستخدم الثابت في وحدة نمطية فقط يجب أن تعلن عنه في قسم الإعلانات في هذه الوحدة النمطية تسبقه كلمه Private هكذا.

Private Const My_Age As Integer = 25

ثوابت علي مستوي الأجراء : : لكي تستخدم الثابت مؤقتا داخل إجراء معين أعلن عن الثابت داخل هذا الإجراء بنفس الطريقة السابقة.

و نكتشف من الكلام السابق أن الثوابت مشابه إلي حد كبير للمتغيرات في طريقة الإعلان عنها بأمر الإعلان Const أو حتى الإعلان عن نوع الثابت لزيادة سرعة التعامل معه وأيضا مجال رؤية الثابت وعمرة .

وللثوابت أنواع منها ثوابت عددية وثوابت حرفيه String وللإعلان عن ثابت حرفي يجب وضعة بين علامتي تنصيص " " .

الإعلان عن الثوابت : ( هذا الجزء منقول عن موضوع العقل الصناعي : الثوابت و المتغيرات للأخ BSC )

يتم الإعلان عن الثوابت باستخدام( Const ) أو ( Public Const )

مستوى الإعلان :

1- إذا تم الإعلان داخل إجراء يعتبر الثابت المعلن عنه محليا Const a=5

2- وإذا تم الإعلان في القسم العام للنافذة يصبح عاما لجميع إجراءات تلك النافذة Const a=5

3- وإذا تم الإعلان في القسم العام للملف يصبح عاما لجميع إجراءات ذلك الملف Const a=5

4- أما إذا تم الإعلان في القسم العام للملف - كما سبق - لكن سبقت كلمة Const بكلمة Public فسيصبح الثابت شاملا لجميع ملفات البرنامج ونوافذه

يتم الإعلان عن الثابت الشامل هكذا ( Public Const a=5 )

الثوابت و API :

كلنا نعرف مكتبات الربط الديناميكي Dynamic Link Libraries ( DLL ) و الفائدة الكبيرة التي نستفيد منها في برامجنا من التوابع ( الدوال ) و التي يطلق عليها واجهة برمجة التطبيقات Application Programming Interface ( API ) .

ولكن عند استخدام هذه التوابع يوجد بعض الثوابت التي يجب تمريرها لهذه التوابع لتقوم بعملها المطلوب منها علي أكمل وجهه لان الكل يعرف القاعدة الذهبية تقول أن لكل دالة من دوال API لها ثوابت خاصة بها . انظر المثالي التالي :

يصرح بهذه الدالة في قسم التصاريح العامة :

Private Declare Function MessageBox Lib "user32" _
Alias "MessageBoxA" (ByVal hwnd As Long, ByVal _
lpText As String, ByVal lpCaption As String, ByVal _
wType As Long) As Long
Const MB_OK = 0

اكتب هذا الكود في حدث Click للـ CommandButton :

Private Sub Command1_Click()
MessageBox Me.hwnd, "Hallow", "Example", MB_OK

End Sub

الكود السابق هو كود بسيط لعرض رسالة عن طريق توابع الــ API .

في البداية عملنا علي التصريح بالدالة في قسم التصاريح العامة بأمر الإعلان Private وبعد ذلك صرحنا عن ثابت وهو ثابت معرف مسبقا و موجود في الفيجول بيسك واسم الثابت MB_Ok وبالطبع لك مطلق الحرية في تسمية الثابت كما تعلمنا سابقا .

والخطوة الثانية العمل علي تمرير الثابت ليؤدي وظيفته المطلوبة منه في حدث Click للـ CommandButton أو في أي حدث تريده . ووظيفة هذا الثابت هي إظهار الزر موافق vbOkOnly للرسالة .

واليك بعض الثوابت المعرفة مسبقا الفيجول بيسك .

فائدة (6) :

من الممكن الاستغناء عن أمر الإعلان Private إذا كان الإعلان علي مستوي الوحدة أو الأجراء

Private Const MB_OK = 0
Const MB_OK = 0

يؤديان نفس الوظيفة ..

و ألان وقد انتهينا من شرح كل من المتغيرات و الثوابت واكتشفنا مدي أهميتهم لنا كمبرمجين لتوفيرهم لنا الوقت والجهد وبعد انتهاءنا من المتغيرات والثوابت سنتكلم عن موضوع لا يقل أهمية عنهما وهو عن المعاملات أو عوامل التشغيل Operators .

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

وإن شاء الله سيكون حديثنا عن المعاملات Operators في الدرس القادم بشكل من التفصيل ..

#13

اخي rsh76 يشهد الله انني لا يهمني الشكر علي شئ تقدمه ولكن كل ما اريدة هو المشاركة الفعالة في الموضوع يعني تخيل لو شارك الكثيرمن اعضاء المنتدي هذا بسؤال وهذا بأجابة وهذا بأضافة في نفس الموضوع فكم ستكون كمية الاستفادة لي ولك ولأعضاء المنتدي كله

هذا ما انشده

نسأل الله الاستفادة و الخير للجميع

ام بخصوص ما تقوله عنه ظاهرة فهو ان شاء الله لا يكون ظاهرة يكون حاله

تعرف ياخي ان بعد توقف منتدي فيجول بيسك توقفت معه عن البرمجة لمدة سنه تقريبا واتجهت كليا الي الهاردوير والاليكترونيات بوجه عام ولكني م اجد نفسي فيها

ولكن الحمد الله عوضنا الفريق العربي للبرمجة عن منتدي فيجول بيسك دوت نت للعرب فهو بحق منتدي ممتاز ويعتبر صرح كبير في عالم البرمجة و التكنولوجيا بشكل عام

#14

الله عليك يا أخي Mostafa Ismail

ايه الجمال ده

نرجو منك ان تكمل الدروس وتوضح لنا الفرق بين الفئة والاجراءعند كتابته في مديول

#15

أخي معذرة عن التأخير فانا في هذه الأيام مشغول جدا

أرجو التوضيح فكيف وضع كتابة فئة Class داخل وحدة نمطية Module

#16

أخي Mostafa Ismail أشكرك علي الاهتمام اولا

وانا اسأل ما الفرق بين الاجراء عند كتابته في مديول والاجراء عند كتابتة في فئة class ?

#17

من المعروف إن الإجراءات هي مجموعة من التعليمات يتم تنفيذها عند نداء الإجراء و المديول أو الوحدة النمطية Module هي وحدة منفصلة عن النوافذ ولكنها جزء من المشروع أو البرنامج

وفي الوحدة النمطية يمكن تعريف متغيرات عامة Public وإجراءات عامة وتكون مستوي الرؤية لديها علي مستوي المشروع

أما الكلاس أو الصنف أو الفئة Class فهي لها خصائص Property وطرق Methods وأحداث Events

و الحدث هنا هو الاختلاف بين الوحدة النمطية و الفئة حيث يمكنك صنع حدث معين في الكلاس عندما تريد

يعني خلاصة القول أن Module مختلف عن Class ولكن في حالة احتواء الـ Class علي إجراء عام فهو يشيه الوحدة النمطية فطول عمرة حتى نهاية البرنامج ولكن بشرط ألا يموت الكائن فيموت معه الإجراء العام

الـ Class يشبه الـ Form أو أي كائن في خصائصه

حاول إن تبحث عن كتاب الأستاذ تركي العسيري فهو يتكلم عن هذا الموضوع بشكل من التفصيل

#18

أشكرك أخي Mostafa

فقد بدءت تتضح لي الرؤية الان

وسابحث عن الكتاب

#19

السلام عليكم ورحمه الله وبركاته . . .

و اليوم سنتكلم عن عوامل التشغيل رغم انه لا يوجد اسئلة ولا استفسارات عن المتغيرات و الثوابت

اتمني ان يستفيد الجميع

عوامل التشغيل Operators :

اللغة العربية والإنجليزية أو حتى اللغة الفرنسية نعرف جميعا انهم من اللغات الحية التي يتعامل بها الإنسان وانه أسلوب حضاري للحوار ليعبر كل شخص عن ما بداخلة ليفهم الآخر عما يعني ولكنهم لغات مختلفة ولربما من يعرف العربية لا يعرف الإنجليزية ومن يعرف الإنجليزية لا يعرف الفرنسية وهكذا ولكن رغم اختلافهم ألا أنه يوجد شيء مشترك بينهما أو أشياء كثيرة ولكن ما يهمنا من المشاركة هو الجزء الذي نحن بصدد إليه وهو عوامل التشغيل أو المعاملات Operators .

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

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

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

ولكن في الواقع من أطلق علي اللغات البرمجة كلمة لغات لم يبالغ في تسميتها لان اللغات البرمجية قريبة الشبه بنسبة كبيرة جدا وبين اللغات الحية في استخدامها لعوامل التشغيل وكما تستخدمها جميع اللغات الحية تستخدمها جميع اللغات البرمجية و لذلك ... ولكن دعنا من كل هذا و لندخل في المفيد .

تقسم المعاملات أو عوامل التشغيل إلى مجموعات و هي :

• المعاملات الحسابية ( Arithmetic Operators ) تقوم بعمليات الجميع و الطرح و الضرب والقسمة

• معاملات الإسناد و المقارنة ( Assignment and Comparison Operators ) : تخصيص القيم و تقارن بينها .

• المعاملات المنطقية ( Logical Operators ) تتعامل مع القيم التي يمكن أن تكون صحيحة أو خطأ .

• معاملات مزج العبارات ( Concatenation Operators ) : تمزج العبارات حرفية .

• المعاملات التعريفية ( Identifier Operators ) : تخلق أسماء واضحة لكائنات قاعدة البيانات لتتمكن من استخدام نفس اسم الحقل في اكثر من جدول داخل قاعدة البيانات .

• معاملات أخرى : لتسهيل إنشاء التعبيرات لاختيار سجلات تندرج تحت شروط معينة .

وفيما يلي شرح اكثر توضيحا للمعاملات التي نستخدمها في لغات البرمجة .

المعاملات الحسابية Arithmetic Operators :

تقوم بعمليات الجمع و الطرح و الضرب و القسمة ولذلك فهي تعمل فقط مع البيانات الرقمية .

• المعامل (+) : وظيفته جمع قيمتين .

2 + 5

• المعامل (-) : وظيفته طرح قيمة من أخري .

Data() - 10

• المعامل (*) : وظيفته ضرب قيمتين .

[Unit Price] * 1.25

• المعامل (/) : قسمة رقم علي أخري .

Qty / 2.5

• المعامل (\) : قسمة رقم صحيح علي آخر .

[Units] \ 6

• المعامل Mod : تعيد باقي القسمة إذا كانت القسمة لها باق .

[Units] Mod 6

• المعامل (^) : رفع قيمة إلى القوة .

اقتباس
[Value] ^ [Exponent]

ونوضح فيما يلي بعض الملاحظات علي المعاملات الثلاث الأخيرة . . .

• المعامل (\) : عند استخدام هذا المعامل يتم تقريب الرقم العشري إلى أقرب رقم صحيح ويتم إهمال الكسر العشري إذا وجد في خارج القسمة .

• المعامل Mod : يعيد باقي القسمة إذا كانت القسمة لها باق فمثلا المثال 23 Mod 5 يعيد القيمة لأن 23 تقسيم 5 تساوي 4 والباقي 3

• المعامل (^) : معناه رفع أول قيمة إلى القوة المذكورة في القيمة الثانية فمثلا 2^4 معناها رفع القيمة إلى القوة الرابعة أي 2*2*2*2 ويكون الناتج 16

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…