الفصل الأول
تمثيل البيانات
(1) كيف تجرى عملية حسابية في ال Visual Basic.net
فى البداية تستقبل ما يكتبه المستخدم باستخدام اداة الكتابة Text Box وهذا يمثل المدخلات (مدخلات حرفية) تحول إلي قيم عددية التي يتم اجراء العمليات الحسابية عليها في ذاكرة الحاسب ثم تقوم بعرض النتائج
(2) البيانات الثابتة و المتغيرة
• اى بيانات يتم التعامل معها لابد ان تكون مخزنة في ذاكرة الحاسب الداخلية
• ذاكرة الحاسب تتكون من ملايين الخلايا (الاماكن – المخازن) المتساوية و تسمى كل خلية (Byte )
• السعة التخزينية للخلية اما حرف واحد او عدد صحيح بين – 128 و + 127
• يمثل عدد الخلايا حجم الذاكرة ويعطى اسم لكل خلية او لكل مجموعة خلايا ما دامت تحمل قيمة واحدة حتى يسهل تتبعها و التعامل معها
• اذا كانت القيم تتغير اثناء تشغيل البرنامج فإن اسماء الخلايا التى تحوى هذه القيم يطلق عليها متغير
• اذا كانت القيم لا تتغير اثناء تشغيل البرنامج فإن اسماء الخلايا التى تحوي هذه القيم يطلق عليها الثوابت
(3)انواع البيانات
تتحدد البيانات 1- الحجم عدد Byte 2- المدي Range حدود القيم
3—الدقة Precision عدد الخانات وهي خاصة بالرقمية فقط
ومن اهم انواع البيانات
1- Boolean تحتاج 2 خلية True/False
2- Date تحتاج 8 خلية من 1/1/1000 الي 31/12/9999
3- حروف *حرف Char يحتاج 2خلية حرف واحد
*سلسلة حرفية String اي عدد من الحروف = عدد الخلايا
4- اعداد 1-صحيحة
Byte يحتاج خلية واحدة بين 0 و 255 الدقة خانة واحدة
Short يحتاج 2 خلية بين – 32768 و+ 32767 الدقة 5 خانات
Integer يحتاج 4 خلية بين + 2147483647 و – 2147483648 الدقة 10خانات
Long يحتاج 8 خلية بين ± 9223372036854775808 الدقة 19 خانة
2عشرية
Single تحتاج 4 خلية بدقة 7 خانات Double تحتاج 8 خانات بدقة 15 خانة
Decimal تحتاج 16 خلية بدقة 29 خانة
(5)اختيار النوع المناسب لكل متغير
حسب : نوع البيانات التي يمكن تخزينها فيه - العمليات التي يمكن اجراؤها عليه - حجم الذاكرة
طبيعة البيانات المخزنة النوع المناسب السبب
True / False Boolean احسن استغلال للذاكرة
ارقام السيارات التليفونات الرقم القومي String اختيار وحيد
مبلغ من المال Decimal يخزن ارقام عشرية وبدقة وبدون اخطاء وسريع في العمليات
عدد صحيح بين ± 32768 Short استهلاك قليل للذاكرة واسرع في العمليات الحسابية
عدد صحيح بين ± 2147483647 Integer اقل في الذاكرة واسرع في الحساب من Long
عدد صحيح اكبر من ±2147483647 Long اختيار وحيد
كسر عشري سبع خانات دقة Single اسرع من Double
كسر عشري اكبر من 7 خانات دقة Double
مثال اذا اردنا ان نخزن القيمة 123456.10987654321 في ثلاث متغيرلات X وY وZ من الانواع Single وDoubleوDecimal علي الترتيب فاكمل الجدول موضحا السبب
السبب القيمة المخزنة النوع المتغير
Single X
Double Y
Decimal Z
(4)قواعد تكوين الاسماء في ال VB.net:-
أولا: قواعد يجب الالتزام بها :-
1. يجب ان يبدأ الاسم بحرف من حروف الانجليزية A……Z a……z
2. يأتى بعد الحرف الاول أى عدد من الحروف او الارقام
3. لايسمح ان يحتوى على رموز او علامات او مسافات ماعدا علامة ال Underscore _
4. ممنوع استخدام الكلمات المحجوزة فى VB.net مثل Data – Double Dim-Print-Data
ثانيا : قواعد يستحسن الالتزم بها :-
1. اختر اسماء ذات معنى مناسب
2. فى الكلمات التى تتكون من مقطعين يمكن ان يبدأ كل مقطع بحرف Capital
3. يفضل ان يبدأ الاسم بـ 3 احرف تعطى انطباع عن نوع المتغير
FirstName Ahmed2000 PopulationOfEgypt Spent_mony امثلة لأسماء صحيحة
2ndWorldWar Spen.Mon Birth Day Double امثلة لأسماء غير صحيحة
في حالة استخدام اسم خطأ يعطي synatax error
(6)الثوابت : طريقة لاعطاء اسماء للخلايا التي تحتوي قيم لا تتغير اثناء تشغيل البرنامج
الثوابت الجوهرية هى الثوابت الموجودة فى بناء و جوهر نظام ال VB.net أى يستطيع البرنامج التعامل معها بدون اعلان مثال مجموعة الالوان Color.Black Color.Blue Color.Red
طريقة الاستعمال TxtX.ForeColor = Color.Blue
(7)المتغيرات طريقة لاعطاء اسماء للخلايا التي تحتوي قيم تتغير اثناء تشغيل البرنامج
Dim ChildWeight as Integer
Dim Population as Integer
Dim Name as String
Dim Address as String = "Cairo"
Dim UnitPrice as Decimal = 123.5
لاحظ ان :- 1- لابد من استخدام كلمة Dim للإعلان عن المتغيرثم اسم المتغير ثم as ثم النوع
2-يمكن ان تكتب ( =) و بعدها قيمة و هذه القيمة ستكون قيمة البداية أو يمكن ان تهملها و لا تستخدم (=) و فى هذه الحالة المتغيرات الرقمية تبدأ بقيمة صفر و المتغيرات الحرفية ستكون فارغة
الاعلان عن اكثر من متغير باستخدام امر Dim واحد
Dim UnitPrice as Decimal = 123.5,Name as Address = " Cairo "
Dim ChildWeight, Population as Integer
Dim Name as String
(8)امر التخصيص ( الاحلال ) :-
ان اهم دور للمتغيرات هو تخزين البيانات بها ولكى نخزن قيمة فى متغير نستخدم امر التخصيص
Variable Name = Value
علامة = تسمى معامل التخصيص
( اى يتم حجز مكان فى الذاكرة يسمى باسم المتغير و توضع داخله القيمة )
يجب مراعاة الاتى:- (1)اسم المتغير الذى نريد التخزين فيه يكون شمال (=)
(2)القيمة المراد تخزينها تكون يمين (=) وتكون من نوع ملائم لنوع المتغير
(3)القيمة يمكن ان تكون :-
قيمة مجردة X=5 حيث يتم تخزين قيمة 5 في المتغير X
متغير اخر X=Y حيث يتم تخزين قيمة Y في المتغير X
عملية حسابية X=2Y+Z حيث يتم حساب القيمة 2Y+Z ثم تخزن في X
1- المتغيرات التي على يمين = لا يحدث بها اي تغيير
2- مفهوم العلامة = في امر التخصيص يختلف نهائيا عن مفهومها في المعادلة الرياضية
حيث الصيغة X+3=10 صحيحة كمعادلة رياضية وليست صحيحة كامر تخصيص لوجود عملية حسابية شمال =والصيغة X=X+1 غير صحيحة كمعادلة رياضية وصحيحة كامر تخصيص
(9)استعمال امر التخصيص مع المتغيرات الحرفية String
من العمليلت التي نقوم بها على المتغيرات الحرفية عملية ربط اكثر من قيمة حرفية او متغير حرفي ببعضها لتكوين متغير حرفي واحد هذا الربط يتم باستعمال & الذي يسمى معامل الربط
FirstName ="Hany"
SecondName = "Ahmed"
Fullname = "Welcome"&FirstName&" "&SecondName
تكون النتيجة Welcome Hany Ahmed
- " " تعنى انه سيترك مسافة فارغة مقدارها مسافة واحدة او عدة مسافات و" " تعنى قيمة حرفية فارغة مثال اكمل الجدول التالي
TaxRate Price UnitPrice Quantity Statement
Dim Quantity As Integer = 100
Dim UnitPrice As Decimal = 5.5
Dim Price As Decimal
Dim TaxRate = 0.10
Price = Quantity * UnitPrice
Price = Price – Price * TaxRate
UnitPrice = 6.2
Price = Quantity * UnitPrice
Price = Price – Price * TaxRate
مثال قم بتتبع مجموعة الاوامر التالية :
Z Y X Statement
Dim X As Short
Dim Y As Short
Dim Z As Short
X = 10
X = 2 * X + 1
Y = X - 8
Z = Y /4
Z = Z + 4
Dim X As Short
Dim Y As Short
Dim Z As Short
X = 10
X = 2 * X + 1
Y = X - 8
Z = Y /4
Z = Z + 4.
مثال تتبع مجموعة الاوامر الاتية :
Dim FirstName As String
Dim LasttName As String
Dim Message As String
FirstName = “Hany”
LastName = “Ahmed”
Message = “Welcome ” & FirstName & “ “ & LastName
Message LastName FirstName Statememet
Dim FirstName As String
Dim LasttName As String
Dim Message As String
FirstName = “Hany”
LastName = “Ahmed”
Message = “Welcome ” & FirstName &“ "& LastName
(10)التحويل بين الانواع المختلفة للبيانات
تختلف طريقة تخزين القيمة الحرفية "123" اختلاف تام عن طريقة تخزين القيمة العددية 123 فالقيمة الحرفية "123" تخزن في 3 خلايا اما القيمة العددية 123 يمكن ان تخزن في خلية واحدة
اولا تحويل البيانات الحرفية الي بيانات عددية
- يمكننا اجراء عمليات حسابية باستخدام المتغيرات و الثوابت و الخصائص object مادامت هذه المتغيرات و الثوابت والخصائص من الانواع العددية
- ولكن عند ادخال البيانات الى البرنامج فاننا ندخلها عن طريق اداة الكتابة ( Text Box )
- وبرنامج ال VB.net يتعامل مع هذه البيانات على انها بيانات حرفية و ليس عددية اى لا يمكن اجراء العمليات الحسابية عليها مباشرة ولحل هذه المشكلة لابد من تحويلها الي بيانات عددية
- لتحويل البيانات الحرفية الى عددية نستخدم Parse Method
- كل انواع البيانات العددية التي تستخدم في الاعلان عن المتغيرات مثل integer و decimal ما هي الا فئات class اي لها خصائص و طرق(وسائل) وجميعها تشترك في ان لها Parse Method
الشكل العام لــ Parse Method
1. لتحويل قيمة حرفية الي عدد صحيح Integer نستخدم (القيمة الحرفية ) Integer.Parse
2. لتحويل قيمة حرفية الى عدد عشرى Decimal نستخدم (القيمة الحرفية ) Decimal.Parse
القيمة الحرفية قد تكون خاصية اداة متغير حرفي او ثابت اما نتيجة قيمة التحويل فهي قيمة عددية
اذا صادفت Parse Method اي حرف-علامة لا يمكن تحويلها لرقم فان التحويل يتتوقف ويظهر رسالة خطأ
مثال
لديك اداتان من ادوات الكتابة الاولي(txtBooksQuantitly) عدد الكتب ، الثانية(txtUnitPric) سعر الكتاب و مطلوب حساب الثمن الاجمالى ووضعه في متغير رقمي(TotalPrice)
الحل
Dim BooksQuantitly as Integer
Dim UnitPric as Decimal
Dim TotalPrice as Decimal
BooksQuantitly = Integer. Parse (me . txtBooksQuantitly. Text )
UnitPric = Decimal. Parse (me . txtUnitPric. Text )
TotalPrice = BooksQuantitly * UnitPric
لاحظ ان :-
داخل الاكواد يمكن كتابة بعض الاسطر التى تساعد المبرمج و لكن المترجم او المفسر يهملها ولا يلتفت اليها وتسمى تعليقات وهذه الاسطر تكتب امامها ( ' ) مثل ' calculate the total price
ثانيا تحويل البيانات العددية الي بيانات حرفية
لاظهار النتائج يتم اظهارها في الاداة Label او TextBox وعليه لابد ان تكون حرفية اي تتحول من عددي الى حرفي باستعمال ToString ( )وما بين القوسين يسمي معامل الدالة argument وفي حالة عدم وجود شئ داخل الاقواس يكون البيان غير مصاغ unformatted
الصيغة العامة هي txtResult.Text=xInteger.ToString()
مثال
لديك اداتان من ادوات الكتابة الاولي(txtBooksQuantitly) سعر الكتاب ، الثانية(txtUnitPric) عدد الكتب و مطلوب حساب الثمن الاجمالى ووضعه في متغير رقمي(TotalPrice) ثم اظهار النتيجة في اداة الكتابة txtResult الحل
Dim BooksQuantitly as Integer
Dim UnitPric as Decimal
Dim TotalPrice as Decimal
BooksQuantitly = Integer. Parse (me . txtBooksQuantitly. Text )
UnitPric = Decimal. Parse (me . txtUnitPric. Text )
TotalPrice = BooksQuantitly * UnitPric
txtResult.Text = TotalPrice.To string ( )
ثالثا التحويل بين انواع البيانات العددية : -
***التحويل المباشر ( التلقائى )
- يستخدم عند تحويل من نوع عددى ذا سعة تخزينية صغيرة الى نوع عددى ذا سعة تخزينية اكبر
- نعنى بالسعة التخزينية هنا عدد خلايا لذاكرة
مثال :- اذا ردنا تحويل المتغير ( 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
decimal – Double single
decimal double
ملاحظات :-
التحويل المباشر لا يصلح فى حالتين :
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
مثال :
اكتب اوامر تخزين المتغيرات n1,n2,n3 من النوع single , Double ,Decimal على الترتيب في المتغيرات v1 ,v2, v3 من النوع Decimal , Integer ,Single على الترتيب
الحل
V1 = convert.ToDecimal (n1 )
V2= convert.ToDecimal (n2 )
V3= convert.ToDecimal (n3 )
(11)العمليات الحسابية :-
المعامل المؤثر العملية
+ جمع
- طرح
* ضرب
/ قسمة عادية
\ قسمة اعداد صحيحة
mod باقى القسمة
^ اسس
***قسمة الاعداد الصحيحة وباقي القسمة
إذا قسمنا العدد الصحيح (Integer ) 48 على العدد الصحيح 5 فتكون النتيجه كالآتى :-
1. قسمة عادية 48 / 5 =9.6
2. قسمة اعداد صحيحة (اهمال باقي القسمة) 48 \ 5 = 9
3. اذا اردنا الباقى فيمكن الحصول عليه باستخدام 48 mod 5 = 3
*** الاسس :
يستعمل ( ^ ) فى رفع عدد معين ( الاساس ) الى اس معين و تكون النتيجة من النوع Double
فمثلا اذا كان X=5
فإنه Y=X^5
اذا Y = 25
بشرط ان تكون Y من النوع Double
***ترتيب تنفيذ العمليت الحسابية :-
ترتيب تنفيذ العمليات الحسابية داخل 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 ) B)1- نستبدل كل متغير بقيمته 3^ 2 * 2 + 4 * 3
2-حساب ما بداخل الاقواس اولا 2 * ( 4 ) 2- يتم حساب الاس اولا 9 * 2 + 4 * 3
3- تنفيذ عملية الضرب فيكون الناتج ( 8 ) 3- تنفيذ عملية الضرب التى في اليسار 18 + 4 * 3
4- تنفيذ عملية الضرب التى في اليمين 18 + 12
5- تنفيذ الجمع ليكون الناتج 30
مثال
• اكتب الاكواد اللازمة لمشروع يحتوى على نموذج (Form ) واحد الخاصية Name له هى Form1 اما الخاصية Text له هى Math
• يحتوى هذا النموذج على اداتى كتابة هما TextFirst – TextScond
• المطلوب عرض نتائج عمليات الجمع و الطرح و الضرب و القسمة و قسمة الاعداد الصحيحة و باقى القسمة و الرفع االى اس لمحتويات اداتى الكتابة في سبع ادوات Label هى
LbLAdd – LbLSub – LbLMul – LbLDiv – LblDiv2 – LbLMod – LbLExp
• عرض المعاملات الرياضية + , - , * , / , \ , mod , ^ في خصائص الادوات من Label 10 الى Label 16
• اداة Button تحتوى على اوامر تنفيذ العمليات
الحل
1-تخطيط المشروع
رسم واجهة المستخدم ( الشكل المقابل )
2-كتابة المشروع
أ – من الصفحة الرئيسية اختر قائمة File اختار New Project
او من Star Page اختار Creat Project فى مربع RecentProject
ب – يظهر مربع New Project
من Project typ اختار Windows
من Templaes اختار Windowes Application
القيمة الخاصية الاسم
نجعلها فارغة
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
جـ – ادخل الاسم الذى اخترته للمشروع فى خانة Name و ليكن Math
د – اضغط Ok
3--تهيئة النموذج
- تغيير ابعاده لتحصل على المساحة المناسبة
- تغير خاصية Text وجعلها Math
1-وضع الادوات على النموذج
تتغير خصائص الادوات طبقا للجدول
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 وبعدها نقطة تظهر قائمة تحتوى على الكائنات و الخصائص و الطرق التى استعملت بهذا النموذج
(12)مجموعة أوامر Try / Catch :-
_ تستخدم لاكتشاف الاخطاء التى تحدث اثناء تشغيل البرنامج و التعامل معها
_ بالرغم من ان VB . net يكتشف الاخطاء و يقوم بعرض رسائل
_ لكن المبرمجين يفضلون استعمال Try / Catch لان هذا يتيح لهم التعامل مع الاخطاء بانفسهم و عرض رسائل اوضح للمستخدم
الفكرة الاساسية لها :-
Try
مجموعة من الاوامر التى لابد ان ينفذها المستخدم بدون اخطاء
Catch
كود يكتب و لا ينفذ الا ي حالة حدوث اخطاء في الاوامر السابقة و غالبا يكون رسالة
End Try
بقية اوامر البرنامج
- اذ قمنا بتنفيذ الاوامر بعد Try بدون اخطاء ينتقل البرنامج الي الاوامر بعد End Try مباشرة
- اذا تم تنفيذ الاوامر بعد Try بأخطاء ينتقل البرنامج الي الاوامر بعد Catch ليعرض الرسالة الموجودة بها و لا يتابع تنفيذ الاوامر بعد ذلك تصحيح الخطأ
مثال:- نفس السابق ويزيد
• في حالة ادخال المستخدم بيانات غير الارقام تظهر رسالة One of the filds is not numeric , Pleace enter only numeric values "
• في حالة ادخال المستخدم صفرا في الخانة الثانية تظهر رسالة" Second value must not be zero "
الحل تكون الاكواد كلتالي :-
‘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()