اجراء الفرع العام

Download Report

Transcript اجراء الفرع العام

‫الصف الحادي عشر‬
‫تكنولوجيا المعلومات‬
‫‪Information Technology‬‬
‫الوحدة الثانية‬
‫البرمجة بلغة فيجول بيسك‬
‫‪1‬‬
‫منار جمالن‬
‫مقدمة‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪2‬‬
‫تعد لغة فيجول بيسك احدى لغات البرمجة العليا و التي تعمل تحت‬
‫بيئة ويندوز ‪ Windows‬و هي لغة متطورة عن لغة بيسك والتي‬
‫كانت تعمل تحت بيئة دوس ‪.Dos‬‬
‫بيئة ويندوز تحتوي على أيقونات – قوائم – ألوان ‪ ،‬تعد بيئة سهلة‬
‫للمستخدم‪.‬‬
‫بيئة دوس تتعامل فقط باألوامر من خالل لوحة المفاتيح‪.‬‬
‫يتكون البرنامج في فيجول بيسك من عدة ملفات أهمها ‪:‬‬
‫‪ ‬الملف الرئيسي – المشروع ‪project‬‬
‫‪ ‬النموذج ‪form‬‬
‫منار جمالن‬
‫‪ ‬خطوات كتابة البرنامج في فيجول بيسك‬
‫‪ ‬تصميم واجهة البرنامج ( اختيار األدوات الالزمة للبرنامج)‬
‫‪ ‬ضبط الخصائص ( تعديل حجم األدوات و ألوانها و غيرها)‬
‫‪ ‬كتابة األوامر البرمجية (الجمل البرمجية التي سوف تنفذ)‬
‫‪ ‬تنفيذ البرنامج ( تشغيل البرنامج )‬
‫• مالحظة ‪ /‬يتم تنفيذ البرنامج من خالل قائمة‬
‫في شريط األدوات‬
‫أو الضغط على زر‬
‫‪ Run  start‬أو بالضغط على ‪F5‬‬
‫• لبدء برنامج فيجول بيسك ‪ -‬من قائمة‬
‫‪Start  programs  MS visual studio 6.0  MS visual basic 6.0‬‬
‫‪3‬‬
‫منار جمالن‬
‫‪‬‬
‫المتغير ‪ :‬اسم لمكان في ذاكرة الحاسوب – يتناسب المكان المحجوز للمتغير مع‬
‫نوع البيانات المراد تخزينها فيه‪.‬‬
‫‪‬‬
‫مثال ‪ :‬المتغير من نوع ‪ Integer‬يحجز ‪ 2‬بايت في الذاكرة بينما المتغير من نوع‬
‫‪ Double‬يحجز ‪ 8‬بايت في الذاكرة‪.‬‬
‫‪ ‬لإلعالن عن المتغيرات نستخدم األمر ‪ Dim‬و الصيغة العامة هي‪:‬‬
‫‪Dim name As Type‬‬
‫حيث ‪ name‬هو اسم المتغير ‪ type ،‬نوع البيانات‬
‫ اسم المتغير يجب أن يبدأ بحرف و أن ال يحتوي على أي رمز خاص مثل ( & *‬‫‪ )$ # ! - ? /‬و غيرها‪.‬‬
‫ال يشترط أن يكون السم المتغير معنى صحيح ولكن يفضل المبرمجون استخدام‬
‫اسماء ذات معنى و عالقة بالبيانات المراد تخزينها فيها‪.‬‬
‫‪4‬‬
‫منار جمالن‬
‫‪‬‬
‫مثال عن االعالن عن المتغير‬
‫ أعلن عن متغير اسمه ‪ x‬من نوع عدد صحيح‬‫‪Dim x as Integer‬‬
‫‪X= 5‬‬
‫وإلعطائه قيمة‬
‫عند اعطاء قيمة نصية لمتغير من نوع نص ‪ string‬يجب أن توضع القيمة بين‬
‫فاصلتين مزدوجتين‪.‬‬
‫ مثال ‪ :‬أعلن عن متغير من نوع نص اسمه ‪ c‬مع إعطاؤه القيمة ‪school‬‬‫‪Dim c as string‬‬
‫”‪C= “ school‬‬
‫ أعلن عن متغير اسمه ‪ m‬مع إعطاؤه قيمة من المستخدم في صندوق نص‬‫‪Dim m as integer‬‬
‫إدخال قيمة من أداة النص للمتغير )‪m = val (text1.text‬‬
‫‪5‬‬
‫منار جمالن‬
‫البرامج متعددة النماذج‬
‫‪‬‬
‫إلضافة نموذج جديد إلى البرنامج من قائمة‬
‫‪‬‬
‫إلظهار نموذج على الشاشة نختار‬
‫‪Project  Add form‬‬
‫يقوم بعرض النموذج على الشاشة‪FormName.show .‬‬
‫و اذا لم يكن محمل في الذاكرة يقوم بتحميله أوال ثم يتم عرضه على الشاشة‬
‫يقوم بتحميل النموذج على الشاشة‪Load FormName‬‬
‫حيث ‪ FormName‬اسم النموذج‬
‫أمثلة ‪:‬‬
‫‪-1‬اكتب االمر البرمجي الالزم لتحميل النموذج ‪ school‬في الذاكرة‪.‬‬
‫‪Load school‬‬
‫‪ -2‬اكتب األمر البرمجي الالزم إلظهار النموذج ‪ student‬على الشاشة‪.‬‬
‫‪Student.show‬‬
‫‪6‬‬
‫منار جمالن‬
‫‪‬‬
‫إلخفاء نموذج من الشاشة‬
‫‪FormName.hide‬‬
‫و يقوم االمر السابق بإخفاء النموذج من الشاشة مع إبقائه في الذاكرة‪.‬‬
‫‪‬‬
‫لحذف نموذج من الذاكرة‬
‫‪Unload formName‬‬
‫اذا كان النموذج معروض سيتم إخفائه من الشاشة ثم حذفه من الذاكرة‪.‬‬
‫مالحظة ‪ formName‬هو اسم افتراضي للنموذج‪.‬‬
‫‪7‬‬
‫منار جمالن‬
‫أمثلة‬
‫أكمل ‪:‬‬
‫‪ .......... ‬أمر برمجي يقوم بإخفاء النموذج ‪ car‬من الشاشة مع إبقائه‬
‫في الذاكرة‪(car.hide) .‬‬
‫‪ .......... ‬أمر برمجي لتحميل النموذج ‪ man‬على الذاكرة‪.‬‬
‫)‪(load man‬‬
‫‪ ........... ‬أمر برمجي لتحميل النموذج ‪ teacher‬على الذاكرة مع‬
‫إظهاره على الشاشة‪(teacher.show) .‬‬
‫‪ ........... ‬أمر برمجي لحذف النموذج ‪ class‬من الشاشة و من‬
‫الذاكرة‪(Unload class) .‬‬
‫‪8‬‬
‫منار جمالن‬
‫اإلجراءات ‪Procedures‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪9‬‬
‫اإلجراء ‪ :‬مجموعة من الجمل البرمجية التي تعمل كوحدة واحدة ألداء‬
‫مهمة محددة‪.‬‬
‫يتكون اإلجراء من ‪ :‬جملة تعريف اإلجراء ‪ ،‬جسم اإلجراء‪ ،‬جملة‬
‫النهاية‪.‬‬
‫مثال على اإلجراء‬
‫(‪Private sub command1_click‬‬
‫)‬
‫جملة التعريف‬
‫جسم اإلجراء‬
‫‪Dim s as string‬‬
‫”تكنولوجيا“ = ‪S‬‬
‫‪Text2.text= s‬‬
‫جملة النهاية ‪End sub‬‬
‫منار جمالن‬
‫‪ ‬مزايا استخدام اإلجراء في البرنامج ‪:‬‬
‫‪ -1‬تقليل الجمل البرمجية‪.‬‬
‫‪ -2‬تسهيل اكتشاف األخطاء و تصحيحها‪.‬‬
‫‪ -3‬تسهيل تصميم البرنامج‪.‬‬
‫هناك ثالث أنواع من اإلجراءات ‪:‬‬
‫‪ .2‬االقتران‬
‫‪ .1‬إجراء الحدث‬
‫‪10‬‬
‫منار جمالن‬
‫‪ .3‬إجراء الفرع العام‬
‫إجراء الحدث‬
‫‪11‬‬
‫‪ ‬إجراء الحدث ‪ :‬مجموعة من الجمل البرمجية التي تنفذ عند حدث‬
‫معين‪.‬‬
‫‪ ‬يتكون اسم إجراء الحدث من ‪ :‬اسم األداة التي سينفذ عليها‬
‫اإلجراء و نوع الحدث تفصلهما ( ‪. ) -‬‬
‫‪ ‬الحدث نوعان ‪ :‬مصدره المستخدم ‪ ،‬مصدره البرنامج ( لغة‬
‫فيجول بيسك)‬
‫أمثلة‬
‫‪ ‬حدث مصدره المستخدم ‪ :‬تحريك مؤشر الماوس ‪,‬‬
‫‪ ، mouseMove‬الضغط على األداة ‪.click‬‬
‫‪ ‬حدث مصدره البرنامج ‪ :‬تحميل النموذج على الذاكرة ‪load‬‬
‫‪form‬‬
‫منار جمالن‬
‫مثال على إجراء الحدث‬
‫‪ ‬أكتب إجراء حدث يقوم بحساب مساحة مستطيل عند‬
‫الضغط على زر أمر‬
‫‪ ‬الحل ‪ :‬الخطوة األولى‬
‫ لتسهيل كتابة البرنامج و األوامر يجب أن نتخيل شكل واجهة البرنامج‬‫( لمعرفة األدوات الالزمة )‪.‬‬
‫ من التصميم نستنتج أن األدوات هي ‪ text1,text2 :‬إلدخال الطول و العرض‬‫‪ label1,label2 ،‬لتسمية الطول و العرض ‪ ،‬أداة تسمية لطباعة الناتج‬
‫‪ ( label3‬حل آخر‪ :‬يمكن أن تتم الطباعة في أداة نص ‪)text3‬‬
‫و أداة زر تحكم ‪.command1‬‬
‫‪12‬‬
‫منار جمالن‬
‫ كتابة األوامر البرمجية‬: ‫الخطوة الثانية‬

Private sub command1_click( )
Dim x as integer, y as integer
X= val(text1.text)
Y= val(text2.text)
Label3.caption= x * y
End sub
‫منار جمالن‬
13
‫االقتران ‪Function‬‬
‫‪‬‬
‫‪‬‬
‫االقتران‪ :‬مجموعة من األوامر البرمجية التي تعمل كوحدة واحدة و‬
‫يتم تنفيذها عند عملية االستدعاء‪.‬‬
‫االقتران نوعان ‪:‬‬
‫‪.1‬‬
‫االقترانات الجاهزة مثل ‪val( ) , str( ) ,sin( ), cos( ), tan( ), sqr( ) ,‬‬
‫) (‪abs‬‬
‫يقوم المبرمج باستدعائها و تمرير القيم لها بدون معرفة آلية عملها‪ ،‬ثم يتم الحصول على‬
‫الناتج منها‪ ( .‬القيمة المرجعة من االقتران)‬
‫‪ .2‬االقترانات التي يعرفها ( يصممها ) المبرمج‬
‫يقوم المبرمج بتعريفها ‪ ،‬حيث يحدد عدد المعامالت التي سوف تمرر إلى‬
‫االقتران و يحدد القيمة المرجعة‪ ،‬كما و يحدد الجمل واألوامر البرمجية‬
‫المراد تنفيذها على هذه القيم‪.‬‬
‫‪14‬‬
‫منار جمالن‬
‫مثال على استخدام االقترانات الجاهزة‬
‫‪‬‬
‫اكتب برنامجا بلغة فيجول بيسك يقوم بحساب جيب الزاوية‪.‬‬
‫) (‪Private sub command1_click‬‬
‫اعالن عن متغير من نوع عدد حقيقي اسمه ‪Dim a as double a‬‬
‫)‪A= val(text1.text‬‬
‫تخزين القيمة العددية التي يدخلها المستخدم في صندوق النص ‪ text1‬في المتغير ‪a‬‬
‫)‪label1.caption= sin(a‬‬
‫استدعاء اقتران جيب الزاوية و تمرير قيمة المتغير في داخله ‪ ،‬و الذي سيقوم بحساب جيب الزاوية ثم يرجع‬
‫الناتج و يظهره في اداة التسمية ‪label1‬‬
‫‪End sub‬‬
‫‪15‬‬
‫منار جمالن‬
‫تعريف االقتران‬
‫‪ ‬الصيغة العامة لتعريف االقتران‬
‫‪Public | Private Function Name( Formal Parameters) As Type‬‬
‫حيث‬
‫‪ Public , Private‬أوامر برمجية لتحديد نوع االقتران هل هو عام أم خاص‬
‫‪ Function‬أمر برمجي يعني اقتران‬
‫‪ Name‬اسم االقتران – و ينطبق على تسمية االقتران قوانين تسمية المتغيرات‬
‫‪ Formal Parameters‬و هي المعامالت الشكلية التي ستم تمريرها من البرنامج لالقتران‬
‫‪ Type‬نوع االقتران ( تحديد نوع القيمة التي سيرجعها االقتران )‬
‫‪ ‬تعرف المعامالت باستخدام الجملة التالية )‪( Byval name as type‬‬
‫حيث ‪ name‬اسم المتغير ‪ type ،‬نوعه‬
‫و األمر ‪ Byval‬يعني أن قيمة المتغير الفعلي ستمرر في داخل المعامل الشكلي‪.‬‬
‫‪16‬‬
‫منار جمالن‬
‫مثال على البرامج باستخدام االقترانات غير‬
‫الجاهزة‬
‫‪‬‬
‫اكتب برنامج يقوم بحساب مكعب عدد باستخدام االقترانات‪.‬‬
‫‪ ‬الحل‪ :‬الخطوة األولى ‪ -‬نقوم بتعريف االقتران‬
‫لمعرفة عدد المعامالت الالزمة في جملة التعريف‪ ،‬يجب تحليل المسألة‬
‫لمعرفة طريقة الحل‪.‬‬
‫ ما هي معادلة حساب مكعب عدد ؟؟ ‪a * a * a‬‬‫بالتالي ال يلزمنا اال معامل واحد فقط‪.‬‬
‫‪Public function cube(Byval a as double) as double‬‬
‫‪Cube = a * a * a‬‬
‫يجب أن يتضمن جسم االقتران تخصيص قيمة‬
‫‪End function‬‬
‫السم االقتران – و هي القيمة التي سيرجعها‬
‫‪17‬‬
‫االقتران للبرنامج‬
‫منار جمالن‬
‫‪‬‬
‫الخطوة الثانية – كتابة البرنامج الرئيسي و الذي سيقوم باستدعاء االقتران الذي قمنا‬
‫بتعريفه‬
‫) (‪Private sub command1_click‬‬
‫‪Dim x as integer‬‬
‫)‪X= val(text1.text‬‬
‫قراءة القيمة االولى و التي سيدخلها المستخدم في صندوق النص االول ‪ text1‬و‬
‫تخزينها في المتغير ‪x‬‬
‫)‪Label1.caption= cube(x‬‬
‫استدعاء االقتران ‪ cube‬و تمرير قيمة المتغير ‪ x‬فيه‪ .‬و طباعة القيمة المرجعة‬
‫( ناتج االقتران) في أداة التسمية ‪label1‬‬
‫‪End sub‬‬
‫يتم استدعاء االقتران من‬
‫خالل اسمه و تمرير القيم‬
‫فيه‬
‫مالحظة هامة ‪ :‬اذا أردت تطبيق البرنامج السابق قم بحذف الشرح المكتوب باللغة العربية‬
‫‪18‬‬
‫منار جمالن‬
‫إجراء الفرع العام‬
‫‪ ‬إجراء الفرع العام‪ :‬مجموعة من الجمل البرمجية التي تعمل‬
‫كوحدة واحدة و يتم تنفيذها عند االستدعاء‪.‬‬
‫‪ ‬يستخدم إجراء الفرع العام للقيام بالمهام التالية‪:‬‬
‫‪ ‬ادخال بيانات من المستخدم‬
‫‪ ‬عرض معلومات على الشاشة‬
‫‪ ‬تحديد خصائص البرنامج‬
‫‪ ‬إجراء عمليات و إرجاع عدة قيم للبرنامج‬
‫‪19‬‬
‫منار جمالن‬
‫الصيغة العامة لتعريف إجراء الفرع العام‬
‫)‪Private | Public sub Name( Formal Parameters‬‬
‫حيث‬
‫‪ Public, Private‬أوامر برمجية لجعل اإلجراء عام أو خاص‬
‫‪ Sub‬أمر برمجي لتعريف اإلجراء ( كما في إجراء الحدث )‬
‫‪ Name‬اسم اإلجراء – و ينطبق عليه قواعد تسمية المتغير‬
‫‪ Formal Parameters‬المعامالت الشكلية التي ستمرر لإلجراء من البرنامج‬
‫‪ ‬جملة تعريف المعامالت في إجراء الفرع العام )‪(Byref name as type‬‬
‫حيث يستخدم االمر ‪ Byref‬للداللة على أن المعامل الفعلي سيمرر بالعنوان في‬
‫داخل المعامل الشكلي‪.‬‬
‫‪20‬‬
‫منار جمالن‬
‫مثال على إجراء الفرع العام‬
‫‪ ‬اكتب برنامج يقوم بإيجاد مربع عدد‬
‫‪ ‬الحل ‪ :‬الخطوة األولى تعريف اإلجراء‬
‫فكر !!‬
‫قانون حساب مربع عدد = العدد ‪ X‬نفسه – كم معامل نحتاج؟‬
‫نحتاج إلى معامل واحد ( العدد )‬
‫)‪Public sub square(Byref x as double‬‬
‫‪X= x * x‬‬
‫‪End sub‬‬
‫‪21‬‬
‫منار جمالن‬
‫‪‬‬
‫الخطوة الثانية ‪ :‬كتابة البرنامج الرئيسي و استدعاء اإلجراء‬
‫) (‪Private sub command1_click‬‬
‫تعريف متغير من نوع عدد حقيقي ‪Dim a as Double‬‬
‫ادخال القيمة التي سيدخلها المستخدم في )‪A= val(text1.text‬‬
‫صندوق النص في داخل المتغير‬
‫استدعاء إجراء الفرع العام مع تمرير المتغير فيه )‪Call square(a‬‬
‫طباعة المتغير في اداة التسمية ‪Label1.caption = a‬‬
‫‪End sub‬‬
‫قيمة المتغير ‪ a‬تختلف قبل و بعد‬
‫استدعاء إجراء الفرع‬
‫العام ‪square‬‬
‫مالحظة هامة ‪ :‬لتطبيق البرنامج السابق قم بحذف الشرح المكتوب باللغة العربية‬
‫‪22‬‬
‫منار جمالن‬
‫مقارنات هامة‬
‫وجه المقارنة‬
‫االقتران‬
‫اجراء الفرع العام‬
‫جملة التعريف‬
‫ تحتوي على اسم االقتران‬‫ تعرف فيه المعامالت باستخدام األمر‬‫البرمجي ‪ byval‬أي التمرير بالقيمة‬
‫‪ -‬يعرف نوع االقتران – القيمة المرجعة‬
‫ تحتوي على اسم االجراء‬‫ تعرف فيه المعامالت باستخدام األمر‬‫البرمجي ‪ byref‬أي التمرير بالعنوان‬
‫‪ -‬ال يعرف نوع االجراء – للقيمة المرجعة‬
‫القيمة المرجعة‬
‫قيمة واحدة – و تسند إلى اسم االقتران في‬
‫جسم االقتران‬
‫عدة قيم – و تسند إلى المتغيرات التي تمرر‬
‫في االجراء‬
‫جملة االستدعاء‬
‫)‪Name (parameters‬‬
‫يغير في قيم‬
‫المعامالت الفعلية‬
‫ال يغير قيم المعامالت الفعلية ( التي مررت‬
‫في داخل جملة االستدعاء )‬
‫‪23‬‬
‫)‪Call Name( parameters‬‬
‫منار جمالن‬
‫يغير في قيم المعامالت الفعلية ( التي مررت‬
‫في جملة االستدعاء)‬
‫التمرير بالقيمة و التمرير بالعنوان‬
‫‪‬‬
‫التمرير بالقيمة ( في االقتران) ‪ :‬أخذ نسخة عن قيمة المعامل الفعلي ‪/‬المتغير الفعلي ‪ ،‬و تمريرها‬
‫في المعامل الشكلي‪ .‬ال تتغير قيمة المعامل الفعلي بعد تنفيذ االقتران‪.‬‬
‫‪‬‬
‫التمرير بالقيمة ( في اإلجراء) ‪ :‬أخذ عنوان المعامل الفعلي و تمريره للمعامل الشكلي ‪ ،‬أي يصبح‬
‫المتغير الفعلي و الشكلي كمتغير واحد‪ .‬أي تغيير في قيمة المعامل الشكلي في االجراء ستغير قيمة‬
‫المعامل الفعلي الموجود في البرنامج الرئيسي‪.‬‬
‫‪‬‬
‫المعامل الفعلي ‪ :‬هو المعامل الذي تخزن فيه القيم التي يدخلها المستخدم و الذي سوف يمرر في‬
‫جمل استدعاء االقتران أو إجراء الفرع العام‪ ( .‬معرف في البرنامج الرئيسي الذي سنكتب فيه‬
‫جملة االستدعاء )‬
‫المعامل الشكلي ‪ :‬هو المعامل الذي تمرر فيه قيم المعامالت الفعلية من البرنامج الرئيسي‪.‬‬
‫( معرف في جملة تعريف االقتران أو إجراء الفرع العام )‬
‫‪‬‬
‫‪24‬‬
‫منار جمالن‬
‫نطاق المتغير‬
‫‪‬‬
‫المتغير هو ‪ :‬اسم لمكان في ذاكرة الحاسوب‪.‬‬
‫نطاق المتغير ‪ :‬هو الحدود أو المكان الذي يكون فيه المتغير معرفا‬
‫‪ ،‬و نستطيع فيه إجراء عمليات مختلفة عليه مثل إعطاءه قيم ‪،‬‬
‫طباعة و غيرها‪.‬‬
‫هناك ثالث أنواع من نطاقات المتغير في فيجول بيسك‪:‬‬
‫‪.1‬‬
‫المتغير المحلي‪ :‬و هو المتغير المعرف في داخل إجراء – و بالتالي يكون معرفا في داخل هذا‬
‫االجراء فقط‪.‬‬
‫المتغير على مستوى النموذج‪ :‬هو المتغير الذي يعرف في المنطقة العامة للتعريفات في ذلك‬
‫النموذج‪.‬‬
‫المتغير العام ‪ :‬و هو الذي يعرف باستخدام األمر ‪ public‬و تكون جملة تعريفه في داخل‬
‫وحدة قياسية )‪(Standard Module‬‬
‫‪‬‬
‫‪‬‬
‫‪.2‬‬
‫‪.3‬‬
‫‪25‬‬
‫منار جمالن‬
‫مالحظة هامة‬
‫الوحدة القياسية‪:‬‬
‫هي وعاء يحتوي على األمور التالية‪:‬‬
‫ اجراءات و متغيرات يمكن أن تستخدم في كل البرنامج‬‫ اجراءات و متغيرات تستخدم فقط في نطاق هذه الوحدة القياسية‬‫ ال تحتوي الوحدة القياسية على إجراء حدث ألنه اجراء خاص و بالتالي ال يمكن‬‫استخدامه في أكثر من مكان‪.‬‬
‫‪-‬‬
‫‪26‬‬
‫تستخدم الوحدة القياسية في حال أردنا استخدام مجموعة من االوامر بشكل مستمر‬
‫على نطاق البرنامج‪.‬‬
‫منار جمالن‬
‫مثال على المتغير على نطاق إجراء‬
‫) (‪Private sub command1_click‬‬
‫‪Dim s as Integer‬‬
‫‪S= 5‬‬
‫‪End sub‬‬
‫المتغير ‪ s‬معرف في داخل إجراء ( جملة التعريف ‪ dim‬مكتوبة في داخل اإلجراء)‬
‫مما يعني ان نطاقه فقط هو هذا االجراء‪.‬‬
‫ في حال قمنا بمحاولة طباعة قيمة المتغير ‪ s‬من إجراء آخر ‪ ،‬لن يتم طباعة القيمة‬‫‪.5‬‬
‫‪27‬‬
‫منار جمالن‬
‫المتغير على مستوى النموذج‬
‫‪ ‬عرف المتغير ‪ count‬من نوع عدد صحيح على مستوى النموذج ‪form1‬‬
‫‪ ‬الحل‪:‬‬
‫نكتب جملة تعريف المتغير ‪ count‬في المنطقة العامة للتعريفات الخاصة بالنموذج ‪form1‬‬
‫ننقر بالماوس مرتين في مكان فارغ في النموذج ‪ ،‬ثم نختار من القائمة المنسدلة في أعلى اليسار‬
‫‪General‬‬
‫ونكتب جملة التعريف التالية‬
‫‪Dim count as Integer‬‬
‫هكذا يصبح المتغير ‪ count‬معرف في كل االجراءات ( األزرار) الموجودة في هذا النموذج‪.‬‬
‫و يمكن إعطائه قيمة في اجراء ( مثال في زر ‪ ) command1‬و طباعتها من اجراء أخر ( في زر‬
‫‪) command2‬‬
‫‪28‬‬
‫منار جمالن‬
‫المتغير العام‬
‫‪ ‬نكتب جملة تعريفه في داخل وحدة قياسية بالشكل التالي‬
‫نذهب لقائمة ‪ Project‬ثم ‪Add Module‬‬
‫ثم ننقر مرتين على ال ‪Module‬‬
‫ونكتب الجملة البرمجية التالية‬
‫‪General b as Integer‬‬
‫هكذا يصبح المتغير ‪ b‬معرفا في كل اجزاء البرنامج ( في كل النماذج )‬
‫‪29‬‬
‫منار جمالن‬
‫المصفوفة األحادية‬
‫‪ ‬هي إحدى تراكيب البيانات و تقوم بتخزين مجموعة من المتغيرات من نوع واحد‪.‬‬
‫مثال عرف ‪ 10‬متغيرات من نوع عدد صحيح‪.‬‬
‫الحل‪ :‬يجب أن نكرر جملة تعريف المتغير ‪ 10‬مرات و نختار ‪ 10‬اسماء للمتغيرات‬
‫‪Dim a as integer‬‬
‫‪Dim x as integer‬‬
‫‪Dim c as integer‬‬
‫‪Dim y as integer‬‬
‫‪Dim e as integer‬‬
‫‪Dim b as integer‬‬
‫‪Dim g as integer‬‬
‫‪Dim f as integer‬‬
‫‪Dim t as integer‬‬
‫‪Dim n as integer‬‬
‫الحظ الحيز الكبير الذي تأخذه هذه الجمل ‪ ،‬باإلضافة لصعوبة حفظ أسماء كل هذه المتغيرات للعمل عليها الحقا‪.‬‬
‫الحل االفضل ‪ :‬نعرف مصفوفة من نوع عدد صحيح و نحدد عدد العناصر فيها ب ‪ 10‬عناصر‬
‫‪30‬‬
‫منار جمالن‬
‫تعريف المصفوفة األحادية‬
‫‪Dim name(n) as type‬‬
‫حيث ‪ name‬اسم المصفوفة‬
‫‪ n‬عدد عناصرها ( يبدأ ب صفر )‬
‫‪ Type‬نوع البيانات‬
‫حل السؤال السابق‬
‫‪Dim n(9) as integer‬‬
‫و بالتالي عرفنا مصفوفة من نوع عدد صحيح تحتوي على ‪ 10‬عناصر‬
‫تمثل ال ‪ 10‬متغيرات‪.‬‬
‫‪31‬‬
‫منار جمالن‬
‫إعطاء قيم للمصفوفة‬
‫‪‬‬
‫طريقة إعطاء القيم للمصفوفة‪:‬‬
‫‪ .1‬الطريقة األولى‪ :‬نقوم بكتابة اسم كل عنصر في المصفوفة و نعطيه قيم‬
‫بشكل منفصل ( إعطاء قيم للمصفوفة من خالل المبرمج)‪.‬‬
‫تخزين القيمة ‪ 5‬في العنصر االول في المصفوفة ‪n(0) = 5‬‬
‫تخزين القيمة ‪ 3‬في العنصر الثاني في المصفوفة ‪n(1) = 3‬‬
‫و هكذا‬
‫‪ .2‬الطريقة الثانية‪ :‬ادخال قيم للمصفوفة عن طريق المستخدم‪.‬‬
‫‪32‬‬
‫منار جمالن‬
‫‪‬‬
‫أعلن عن مصفوفة أحادية من نوع عدد حقيقي تقوم بتخزين ‪ 10‬عالمات ثم قم بطباعة هذه القيم‪.‬‬
‫) (‪Private sub command1_click‬‬
‫‪Dim a(9) as double‬‬
‫‪Dim i as integer‬‬
‫‪For I = 0 to 9‬‬
‫أمر لعمل تكرار ‪ 10‬مرات‬
‫)”ادخل العالمة“(‪a(i)=inputbox‬‬
‫)‪Label1.caption= label1.caption & “ “ & a(i‬‬
‫‪Next i‬‬
‫‪End sub‬‬
‫تقوم ‪ inputbox‬بإظهار شاشة تحتوي على صندوق نص ‪ ،‬و تظهر الرسالة المكتوبة بين ” ” فيها‬
‫‪33‬‬
‫منار جمالن‬
‫شرح البرنامج السابق‬
‫عند بدء التنفيذ تكون قيمة المتغير ‪ i‬تساوي صفر‬
‫تقوم هذه األوامر بإظهار الشاشة التالية ) ”ادخل العالمة“( ‪a(i) = inputbox‬‬
‫و عند ادخال قيمة و الضغط على ‪ ok‬ستخزن في العنصر االول للمصفوفة )‪a(0‬‬
‫ثم نطبع قيمة العنصر في ‪label1‬‬
‫ثم نصل لجملة ‪ next i‬و التي سوف تزيد قيمة المتغير ‪ i‬بواحد ‪ ،‬ثم يتم فحص شرط التكرار‬
‫‪34‬‬
‫منار جمالن‬
‫تابع شرح البرنامج السابق‬
‫شرط التنفيذ أن تكون قيمة المتغير ‪ i‬أقل او تساوي القيمة ‪9‬‬
‫بما أن قيمة المتغير ‪ i‬الجديدة هي ‪ 1=1+0‬اذن ما زال الشرط متحقق‪ .‬اذا سيتم تنفيذ الجمل التالية ل‬
‫‪for‬‬
‫تقوم هذه األوامر بإظهار الشاشة التالية ) ”ادخل العالمة“( ‪a(i) = inputbox‬‬
‫و عند ادخال قيمة و الضغط على ‪ ok‬ستخزن في العنصر الثاني للمصفوفة )‪a(1‬‬
‫ثم سيتم طباعة القيمة القديمة ألداة التسمية ( و التي تحتوي على العنصر األول ) باإلضافة إلى‬
‫قيمة العنصر الثاني‪.‬‬
‫ثم نصل لجملة ‪ next i‬و التي سوف تزيد قيمة المتغير ‪ i‬بواحد ‪ ،‬ثم يتم فحص شرط التكرار و‬
‫تتكرر هذه العملية ‪ 10‬مرات‬
‫‪35‬‬
‫منار جمالن‬
‫‪‬‬
‫في النهاية سيقوم البرنامج بطباعة ال ‪ 10‬قيم التي سيدخلها المستخدم‬
‫تفصلها مسافة في أداة النص ‪label1‬‬
‫‪‬‬
‫للمعرفة ‪ :‬آخر مرحلة يتم فيها تنفيذ جمل التكرار عندما تكون قيمة‬
‫المتغير ‪ i‬تساوي ‪ ، 9‬ألنه عند محاولة التكرار مرة أخرى تصبح قيمة‬
‫المتغير ‪ i‬تساوي ‪ 10‬و بالتالي لن يتحقق الشرط ‪for i =o to 9‬‬
‫‪36‬‬
‫منار جمالن‬
‫تم بحمد هللا‬
‫‪37‬‬
‫منار جمالن‬