منهج الفيجول بيسك

الفصل الاول
ــــــــــــــــــ
                                                                              تمثيل البيانات  


     كيف تجرى عملية حسابية في ال Visual Basic.net
• فى البداية تستقبل ما يكتبه المستخدم باستخدام اداة الكتابة Text Box وهذا يمثل المدخلات     
      (مدخلات حرفية) تحول إلي رقمية
• ثم يتم اجراء العمليات الحسابية عليها في ذاكرة الحاسب
• واخيراً تقوم بعرض النتائج بالتنسيق المناسب
 البيانات الثابتة و المتغيرة
• اى بيانات تخزن في ذاكرة الحاسب الداخلية
• هذه ا لذاكرة تتكون من ملايين الخلايا المتساوية و تسمى كل خلية (Byte )
• يمثل عدد الخلايا حجم الذاكرة
• تسمح كل لغات البرمجة بإعطاء اسماء للخلايا التى سيتم تخزين البيانات بها حتى يسهل تتبعها و التعامل معها
• يعطى اسم واحد لكل خلية أو مجموعة من الخلايا ما دامت تحمل قيمة واحدة  ولذلك
1. اذا كانت القيم المخزنة تتغير اثناء تشغيل البرنامج فإن اسماء الخلايا التى تشغله هذه القيم يطلق عليها متغيرات Variables
2. اذا كانت القيم لا تتغير اثناء تشغيلها البرنامج فإن اسماء الخلايا التى تشغلها هذه القيم يطلق عليها الثوابت Constants
 انواع البيانات

لاحظ ان :-
         الارقام بين الاقواس (  ) تعنى عدد الخلايا التى يشغلها الرقم في الذاكرة
               آى عدد البايت

 قواعد تكوين الاسماء في ال VB.net:-
 
 أولا: قواعد يجب الالتزام بها :-
1. يجب ان يبدأ الاسم بحرف من حروف الانجليزية
2. يأتى بعد الحرف الاول أى عدد من الحروف او الارقام
3. لايسمح ان يحتوى على رموز او علامات او مسافات ماعدا علامة ال Underscore
4. ممنوع استخدام الكلمات المحجوزة فى VB.net مثل Data – Short – Double   .......... الخ
 ثانيا : قواعد يستحسن الالتزم بها :-
1. اختر اسماء ذات معنى مناسب
2. فى الكلمات التى تتكون من مقطعين يمكن ان يبدأ كل مقطع بحرف Capital
3. يفضل ان يبدأ الاسم بـ 3 احرف تعطى انطباع عن نوع المتغير
 امثلة لأسماء صحيحة
FirstName        
Ahmed2000     
PopulationOfEgypt       
Spent_mony    
      
     
  امثلة لأسماء غير صحيحة
    2ndWorldWar                           
                                 اكتب هنا الخطأ  ……………………….………..
Spen.Mon      
………………………………………..
Birth Day          
………………………………………..
Double                                                      
………………………………………..
 أنواع الثوابت :-
 ثوابت جواهرية:-
  هى الثوابت الموجودة فى بناء و جوهر نظام ال VB.net
  أى يستطيع البرنامج التعامل معها بدون اعلان
مثال                                        Color.Black
               Color.Blue
     Color.Red
 ثوابت مسماه :-
    هى الثوابت التى يقوم المبرمج بتعريفها طبقا لاحتياجات البرنامج و هذه تحتاج إلي اعلان عنها  قبل استخدامها                   
     و إلا حدث خطأ
الاعلان عن الثوابت
Const Name as String = " Ahmed"
Const Mass AS Decimal = 123.5 d
Const Mass as Single = 0.123 f   
  لاحظ أن :-
1. لابد من استخدام كلمة  Const للاعلان عن الثابت و هى من الكلمات المحجوزة
2. لابد ان تكتب ( = )ثم بعدها قيمة هذا الثابت
3. هذه القيمة تظل ثابته لا يمكن تغيرها اثناء تشغيل البرنامج
4.  بعد القيمة تكتب اختصار لكل نوع

حرف الاختصار النوع
S Short
I Integer
L Long
R Double
F Single
D Decimal
 الإعلان عن المتغيرات

 Dim school as Integer
 Dim Name as String
 Dim Address as String = "Cairo"
 Dim Price as Decimal = 123
   لاحظ ان :-
 
1. لابد من استخدام كلمة Dim  للإعلان عن المتغير
2. يمكن ان تكتب ( =) و بعدها قيمة و هذه القيمة ستكون قيمة البداية
أو يمكن ان تهملها و لا تستخدم (=) و فى هذه الحالة
_ المتغيرات الرقمية تبدأ بقيمة صفر
_ المتغيرات الحرفية ستكون فارغة
الاعلان عن اكثر من متغير باستخدام امر Dim  واحد
      Dim Child as Integer = 123,Name as String = "Ahmed"
      Dim Child , Name , Address as Integer
 امر التخصيص ( الاحلال )  :-
      ان اهم دور للمتغيرات هو تخزين البيانات بها ولكى نخزن قيمة فى متغير نستخدم امر التخصيص

علامة = تسمى معامل التخصيص
( اى يتم حجز مكان فى الذاكرة يسمى باسم المتغير و توضع داخله القيمة )
يجب مراعاة الاتى:-
1. اسم المتغير الذى نريد التخزين فيه يكون شمال (=)
2. القيمة المراد تخزينها تكون يمين (=) وتكون من نوع ملائم لنوع المتغير
3. القيمة يمكن ان تكون :-
a. قيمة مجردة
مثل     X=5
b. متغير من نوع اخر   X=Y
c. عملية حسابية
مثل  X=2Y+Z                      
مثال
Price = Quantity*UnitPrice
                            حيث أن:
Quantity = 100
UnitPrice = 5.5
Price = 0.0
   ولتنفيذ هذا الأمر سيقوم الحاسب بعمل الآتي :-

أ‌- استبدال القيمتين5.5 & 100  بالمتغيرين UnitPrice & Quantityبالترتيب فيصبح الطرف الأيمن للعلامة  "=" هو5.5 * 100
ب‌-  تنفيذ عملية الضرب وحساب النتيجة، فتصبح القيمة تساوى (550)
ت‌-  تخزين النتيجة ( 550 ) فى Price
ونلاحظ في هذا الأمر أن القيمة   UnitPrice & Quantitلم تتغير وذلك لاننا فقط نستعمل قيمة المتغيرات التي علي يمين "=" واستعمال القيم لايؤثر فيها ولا يغيرها بكل تأكيد؛ أما قيمة Price  فإنها تغيرت نتيجة تخزين النتيجة بها، وذلك يعني أن النتيجة (550 ) قد حلت محل القيمة القديمة للمتغير   Priceو التى     كانت صفرا 
 استعمال امر التخصيص مع المتغيرات الحرفية
FirstName ="Hany"
SecondName = "Ahmed"
Fullname = "Welcome"&FirstName&"  "&SecondName
تكون النتيجة
 Welcome Hany Ahmed
- قمنا بعملية ربط بين المتغيرات باستخدام العلامة &
- "   " تعنى انه سيترك مسافة فارغة مقدارها مسافة واحدة او عدة مسافات
- " " تعنى قيمة حرفية فارغة ( طولها صفر )
 التحويل بين الانواع المختلفة للبيانات
 تحويل البيانات الحرفية الي بيانات رقمية
- يمكننا اجراء عمليات حسابية باستخدام المتغيرات و الثوابت مادامت هذه  المتغيرات و الثوابت من الانواع الرقمية
- ولكن عند ادخال البيانات الى البرنامج فاننا ندخلها عن طريق اداة الكتابة               ( Text Box )
- وبرنامج ال VB.net تعامل مع هذه البيانات على انها بيانات حرفية و ليس رقمية اى لا يمكن اجراء العمليات الحسابية عليها إلا بعد تحويلها الي بيانات رقمية
- لتحويل البيانات الحرفية الى رقمية نستخدم وسيلة ( Method ) اسمها Parse
             الشكل العام لل Parse Method
1. لتحويل قيمة حرفية الي عدد صحيح Integer
Integer.Parse (القيمة الحرفية )
2. لتحويل قيمة حرفية الى عدد عشرى Decimal
Decimal.Parse (القيمة الحرفية )

 مثال
لديك سعر الكتاب ، و عدد الكتب و مطلوب حساب السعر الاجمالى
                              الحل
        
             سعر الكتاب                                    Uprice
            عدد الكتب                                     Books Q
          السعر الاجمالى                                 Tprice
حيث ان :-
  السعر الاجمالى = سعر الكتاب * عدد الكتب
  Dim BooksQ as Integer
  Dim Uprice as Decimal                             لتعريف المتغيرات التى سوف يستخدمها
        Dim Tprice as Decimal

لتحويل النص المكتوب فى مربع النص BooksQ الى عدد صحيح
  BooksQ = Integer. Parse (me . BooksQ . Text )
لتحويل النص المكتوب فى مربع النص Uprice الى عدد عشرى
  Uprice = Decimal. Parse (me . Uprice . Text )
  لحسلب السعر الاجمالى
  Tprice = BooksQ * Uprice
لاحظ ان :-
داخل الاكواد يمكن كتابة بعض الاسطر التى تساعد المبرمج و لكن برنامج VB.net  لا يراها او يشعر بها هذه الاسطر تكتب امامها ( ' )
 مثل
 ' calculate the total price
هذه الاسطر تسمى تعليقات  Comments
          ويمكن كتابة بها اسم المبرمج وتاريخ كتابة النسخة
 تحويل البيانات الرقمية الي بيانات حرفية
باستعمال  To string ( )

     مثال
 فى المثال السابق اذا اردنا تحويل السعر الاجمالى الى نص حتى يمكن عرضه فى اداه الكتابة
 Result . Text = price . To string ( )
لاحظ ان :-
Result                         هو اسم صندوق الكتابة Text Box الذى يعرض فيه السعر الاجمالى
 العمليات الحسابية :-

المعامل المؤثر العملية
+ جمع
- طرح
* ضرب
/ قسمة عادية
\ قسمة اعداد صحيحة
mod باقى القسمة
^ اسس
 
قسمة الاعداد الصحيحة وباقي القسمة
إذا قسمنا العدد الصحيح (Integer ) 48 على العدد الصحيح 5 فتكون النتيجه كالآتى :-
1. قسمة عادية
48 / 5 = 9
2. قسمة اعداد صحيحة
48 \ 5 = 9              ( اى اهمال باقى القسمة)
3. اذا اردنا الباقى فيمكن الحصول عليه كالآتى :-
48 mod 5 = 3
    الاسس :
  يستعمل معامل الاسس ( ^ ) فى رفع عدد معين ( الاساس ) الى اس معين  و تكون النتيجة من النوع  Double
   فمثلا  اذا كان         X=5
           فإنه     Y=X^5
            اذا    Y = 25
      بشرط ان تكون Y من النوع Double
    مثال
• اكتب مشروع يحتوى على نموذج (Form ) واحد الخاصية Name  له هى Form1  اما الخاصية Text  له هى  Math
• يحتوى هذا النموذج على اداتى كتابة هما
         Text First – Text Scond
• المطلوب عرض نتائج عمليات الجمع و الطرح و الضرب و القسمة و قسمة الاعداد الصحيحة و باقى القسمة و الرفع  االى اس لمحتويات اداتى الكتابة في سبع ادوات Label  هى       
             LbLAdd – LbLSub – LbLMul – LbLDiv – LblDiv2 – LbLMod – LbLExp
• عرض المعاملات الرياضية  + , - , * , / , \ , mod  , ^ في خصائص الادوات  من Label 10   الى  Label 16  لسبع ادوات Label                                           
• اداة  Button تحتوى على اوامر تنفيذ العمليات
الحل
1- تخطيط المشروع
رسم واجهة المستخدم ( الشكل السابق )
2- كتابة المشروع
    أ – من الصفحة الرئيسية اختر قائمة File   _______< New Project
         او  من Star Page  ______< Creat Project فى مربع RecentProject  
   ب – يظهر مربع New Project
         من Project typ ________< Windows
        من Templaes _________> Windowes Application
  جـ – ادخل الاسم الذى اخترته للمشروع فى خانة  Name و ليكن Math
   د –  اضغط Ok
3- تهيئة النموذج
 - تغيير ابعاد ه لتحصل على المساحة المناسبة
 - تغير خاصية Text  وجعلها Math
4- وضع الادوات على النموذج
تتغير خصائص الادوات طبقا للجدول
القيمة الخاصية الاسم
نجعلها فارغة
Center
Micro soft sans serif
Bold
10  Text
Text Align
Font
Fon Styl
Font Size txtBox1
نجعلها فارغة
Center
Micro soft sans serif
Bold
10 Text
Text Align
Font
Fon Styl
Font Size txtBox2
First
Second Text
Text Label 1 – Label 2
فارغة
Fixed3d Text
Border Styl   Label 9 الى Label 3 
+ ،- ،*،/ ، \ ، mod ، ^ Text Label 16 الى Label 10 
5. ضبط موقع الادوات على ال Form
اما يدوي بالماوس او من قائمة Format _______> Align
6. اكتب الاكواد للزر Buton
انقر مرتين على الزر مما سيؤدى الى فتح Cod Window مكتوبا بها الاوامر الاولى و الاخيرة و ما عليك إلاكتابة الاتى :
           ‘Declare the local variables
    1 Dim First, Second, ad, subtract, Mul, Div, Div2 As Decimal
    2 Dim Modulus As Integer
    3 Dim Expon As Double
         ‘Convert the text strings to decimal
    4 First = Decimal.Parse(Me.txtFirst.Text)
    5 Second = Decimal.Parse(Me.txtSecond.Text)
        'Caculate the values of local variables
    6 ad = First + Second
    7 lblAdd.Text = ad.ToString()
    8 subtract = First - Second
    9 lblSub.Text = subtract.ToString()
    10 Mul = First * Second
    11 lblMul.Text = Mul.ToString()
    12 Div = First / Second
    13 lblDiv.Text = Div.ToString()
    14 Div2 = First \ Second
    15 lblIntDiv.Text = Div2.ToString()
    16 Modulus = First Mod Second
    17 lblMod.Text = Modulus.ToString()
    18 Expon = First ^ Second
    19 lblExp.Text = Expon.ToString()
لاحظ ان :-
 كلمة Me  تستعمل لتوفير وقت البرمجة و هى تعنى ان هذه الادوت توجد على نفس النموذج
وعند كتابة كلمة Me   وبعدها نقطة تظهر قائمة تحتوى على الكائنات و الخصائص و الطرق التى استعملت بهذا النموذج
لاحظ ان :-
اذا ادخل المستخدم مثلا $ هذه العلامة ان البرنامج لا يستطيع تحويلها الي ارقام فيتم عرض رسالة خطا كنتيجة لهذا
 مجموعة أوامر Try / Catch :-
_ تستخدم لاكتشاف الاخطاء التى تحدث اثناء تشغيل البرنامج و التعامل معها
_ بالرغم من ان VB . net يكتشف الاخطاء و يقوم بعرض رسائل
_ لكن المبرمجين يفضلون استعمال  Try / Catch لان هذا يتيح لهم التعامل مع الاخطاء بانفسهم و عرض      رسائل اوضح للمستخدم
 الفكرة الاساسية لها :-
        Try
         مجموعة من الاوامر التى لابد ان ينذها المستخدم بدون اخطاء
        Catch
   كود يكتب و لا ينفذ الا ي حالة حدوث اخطاء في الاوامر السابقة و غالبا يكون رسالة
 End Try
  بقية اوامر البرنامج
       - اذ قمنا بتنفيذ الاوامر بعد Try  بدون اخطاء ينتقل البرنامج الي الاوامر بعد End Try   مباشرة
       - اذا تم تنفيذ الاوامر بعد Try   بأخطاء ينتقل البرنامج الي الاوامر بعد Catch   ليعرض الرسالة الموجودة بها و لا يتابع تنفيذ الاوامر بعد ذلك تصحيح الخطأ
     مثال:-
   عند تطبيق هذه المجموعة على المثال السابق يتم استخدامها مرتين
1. مرة عند ادخال المستخدم للبيانات متى يتم ادخال بيانات صحيحة 
2. مرة عند عمل القسمة حتى لا يكون الرقم الثانى و هو المقسوم عليه صفرا
وتكون الاكواد كلتالي :-
           ‘Declare the local variables
    1 Dim First, Second, ad, subtract, Mul, Div, Div2 As Decimal
    2 Dim Modulus As Integer
    3 Dim Expon As Double
         ‘Convert the text strings to decimal
    4  Try
    5 First = Decimal.Parse(Me.txtFirst.Text)
    6 Second = Decimal.Parse(Me.txtSecond.Text)
    7  Catch
   8 msg Box ( " One of the filds is not numeric , Pleace enter only numeric values " )
    9   End Try
        'Caculate the values of local variables
    10 ad = First + Second
    11 lblAdd.Text = ad.ToString()
    12 subtract = First - Second
    13 lblSub.Text = subtract.ToString()
    14 Mul = First * Second
    15 lblMul.Text = Mul.ToString()
    16  Try
    17 Div = First / Second
    18 lblDiv.Text = Div.ToString()
    19 Div2 = First \ Second
    20 lblIntDiv.Text = Div2.ToString()
    21 Modulus = First Mod Second
    22 lblMod.Text = Modulus.ToString()
    23  Catch
    24 msg Box ( " Second value must not be zero " )
    25  End Try
    26 Expon = First ^ Second
    27 lblExp.Text = Expon.ToString()
 التحويل بين انواع البيانات العددية : -
 التحويل المباشر ( التلقائى )
- يستخدم عند تحويل من نوع عددى ذا سعة تخزينية صغيرة الى نوع عددى ذا سعة تخزينية اكبر
- نعنى بالسعة التخزينية هنا عدد خلايا لذاكرة
    
 مثال :-       اذا ردنا تحويل المتغير  ( Number1 )  من النوع Decimal  الى المتغير ( Number 2) وهو من النوع   Integer كالآتى :-
Number 1 = Number 2  
     انواع التحويلات التى يمكن إجراؤها بالطريقة المباشرة
TO From
Short – Integer – Long – Single – Double – Decimal Byte
Integer – Long – Single – Double – Decimal Short
Long – Single – Double – Decimal Integer
Single – Double – Decimal Long
Single – Double  Decimal
Double Single
ملاحظات :-
التحويل المباشر لا يصلح فى حالتين :
1.  تحويل البيانات من النوع Double   الى اى نوع اخر
2. تحويل البيانات التى تحتوى على كسور ( Single , Double ) الى النوع Decimal
وفى هذه الحالات نستخدم التحويل غير المباشر
 التحويل الغير مباشر
- يتم استخدامه عندما نحول نوع ذوسعة تخزينية كبيرة الى نوع اقل فى السعة التخزينية
- اى يستخدم بين البيانات العددية التى لايمكنك اجراء التحويل المباشر عليها مثل تحويل النوع Double  الى اى نوع اخر من انواع البيانات
- و لتسهيل عملية التحويل الغير مباشر يتيح البرنامج للمبرمجين Class يسمى Convert Class يحتوى على وسائل Methods تبدأ اسماؤها بـ To للتحويل   بين الانواع المختفلة
Use Method       الطريقة المستخدمة النوع المطلوب التحويل اليه         To Convert to Data type
ToInt16 Short
ToInt32 Integer
ToInt64 Long
ToDecimal Decimal
ToSingle Single
ToDouble Double
  مثال :
      اذا اردنا تحويل المتغير ( Number 1 ) من النوع Single  الى المتغير ( Value1 )  من النوع      Decimal  
  Value1 = convert to Decimal (Number1 )
 ترتيب تنفيذ العمليت الحسابية :-
ترتيب تنفيذ العمليات الحسابية داخل VB يتم كالآتى : حتى يتم الحصول على النتائج الصحيحة
1. العمليات التى بين الاقواس ( الداخلية اولا ثم الخارجية )
2. عمليات الاسس
3. عمليات الضرب و القسمة ( الاولوية من اليسار ثم اليمين )
4. عمليات قسمة الاعداد الصحيحة
5. عمليات حساب باقى القسمة
6. عمليات الجمع و الطرح ( الاولوية من اليسار الي ليمين )
مثال :-
   ما هى نتيجة تنفيذ العمليات الاتية بافتراض القيم التالية للمتغيرات :-
                      X = 2      Y = 3      Z = 4
A)     X * ( Y + 1 )         
B)     Y^ X * X + Z *3         
الحل
A)
1- نستبدل كل متغير بقيمته
2* ( 3 + 1 )
2- حساب ما بداخل الاقواس اولا
2 * ( 4 )
                 3- تنفيذ عملية الضرب فيكون الناتج  ( 8 )
   B )
1.  نستبدل كل متغير بقيمته          3^ 2 * 2 + 4 * 3
2. يتم حساب الاس اولا               9 * 2 + 4 * 3
3. تنفيذ عملية الضرب التى في اليسار 18 + 4 * 3 
4.  تنفيذ عملية الضرب التى في اليمين  18 + 12
5.    تنفيذ الجمع ليكون الناتج 30