الفصل الأول
تمثيل البيانات
كيف تجرى عملية حسابية في ال 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