اجراء الفرع العام
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مع إعطاؤه القيمة schoolDim 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
منار جمالن