°ˆ~*¤®§(*§ مـــنـــتـــدى بــــوعـــــنــــان §*)§®¤*~ˆ°
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

°ˆ~*¤®§(*§ مـــنـــتـــدى بــــوعـــــنــــان §*)§®¤*~ˆ°

الموقع موجه لكل الشباب العرب أدخل وأبدع مساحة بدون قيود
 
الرئيسيةأحدث الصورالتسجيلدخول

 

 الفصل(3): التركيبات أنواعها واستخداماتها

اذهب الى الأسفل 
كاتب الموضوعرسالة
Admin
مدير
مدير
Admin


عدد الرسائل : 68
العمر : 36
Localisation : oujda
السٌّمعَة : 3
نقاط : 6637
تاريخ التسجيل : 10/02/2007

الفصل(3): التركيبات أنواعها واستخداماتها Empty
مُساهمةموضوع: الفصل(3): التركيبات أنواعها واستخداماتها   الفصل(3): التركيبات أنواعها واستخداماتها Emptyالأربعاء فبراير 15, 2012 8:04 pm

السلام عليكم ورحمة الله وبركاته
بسم الله الرحمن الرحيم
درسنا اليوم دسم بعض الشيء ويحتاج لشيء من التركيز.
بداية علينا أن نتيقن أن الأنواع في فيجوال بسيك دوت نت لا تقتصر على ما قد طور مع اللغة مثل short int16 int32 single short integer string date point .......إلخ
فربما احتاج أنواع جديدة من المتغيرات والثوابت التي لا تتواجد في فيجوال بيسك دوت نت....لا مشكلة.....اصنعها بنفسك!

سيحتوي الدرس باذن الله على التالي:

  • التركيبات من نوع Enums
  • التركيبات من نوع Structure
أولا: التركيبات من نوع Enums
بالنسبة للتركيبات من نوع Enums فهي تستخدم لتعريف أنواع جديدة من التركيبات على وجه الحصر أو التعميم ....كيف ذلك؟؟!
كما نعرف في السنة 12 شهرًا وبما ان عددها ثابت فيمكننا اختصار جهد تكرارها في الشيفرة كالتالي:



رمز برمجي:
Enum Month
Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec
End Enum
لكن ما الذي حدث وما استفيد؟؟
انظر أخي الكريم:
لقد قمنا بصنع تركيبة جديدة واسميناها بالشهر ووضعنا كل شهر داخل التركيبة كجزء منها....
وماذا بعد...؟
الآن علينا معرفة بعض الأمور:

.عند الاستعلام عن عنصر من عناصر الEnum فاننا نستعلم بالشكل التالي:




رمز برمجي:
TextBox1.Text =Month.Jan



الفصل(3): التركيبات أنواعها واستخداماتها 11247272230


وبما أن الثابت Month.Jan لم يتم اسناد قيمة له فسيتم اسناد القيمة الافتراشية له وهي صفر ..لماذا؟
العنصر الأول من عناصر تركيبة الEnum تبدأ من
الصفر والعنصر الثاني يساوي السابق+1 والثالث يساوي السابق+1 وهكذا إلى أن
نصل إلى العنصر Month.Dec فسنراه يحمل القيمة 11 ولك التجربة
.يمكن اسناد قيم وقت صنع التركيبة كالتالي:




رمز برمجي:
Enum Month
Jan = 22
Feb = 5
Mar = 23
Apr
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec
End Enum






رمز برمجي:
TextBox1.Text =Month.Mar



الفصل(3): التركيبات أنواعها واستخداماتها 11247272381


وكما نرى فان العنصر Month.Mar يحمل القيمة 23 والعنصر التالي سيحمل القيمة السابقة + 1 حسب ما ذكرنا في الأعلى .





رمز برمجي:
TextBox1.Text =Month.Apr




الفصل(3): التركيبات أنواعها واستخداماتها 11247272439


ملاحظة: يمكننا الجزم بأن التركيبات من نوع Enum تعادل
بوظيفتها الثوابت فعناصرها عبارة عن ثوابت ولهذا عند محاولة اسناد قيم
للعنصر خارج سطره في التركيبة فان ذلك سيتوج بالرفض من قبل
المترجم........انظر الصورة التالية:



الفصل(3): التركيبات أنواعها واستخداماتها 11247270187


ونص رسالة الخطأ يقول:Constant cannot be the target of an
assignment أي أنه الثابت لا يمكن أن يكون هدفا لعملية تعيين.(أي اسناد
قيمة)
اذن يمكن استخدام الEnum في استخدامات الثوابت والتي يمكنك مراجعتها من الموضوع التالي:
http://vb4arab.com/vb/showthread.php?t=36557
ملاحظة : جميع قيم الEnum في المثالين السابقة من النوع Integer كما يمكن
تغيير نوعها لLong او Short او ما الى ذلك(أقصد المتغيرات العددية الصحيحة)
مثال:




رمز برمجي:
Enum Month As Long
Jan
Feb
....
....
End Enum
والآن دعونا نتطرق قليلا الى موضوع مرتبط
بالمتغيرات والثوابت ألا وهو محدودية المتغيرات والثوابت (بمعني آخر أين
يمكنني استخدامها) .... يمكنك تحديد محدودية الEnum كالتالي:
عندما تريد الEnum عامة ومستخدمة من جميع وحدات المشروع عليك سبقها ب Public أو بلا شيء
مثال:




رمز برمجي:
Public Enum Month As Long
Jan
Feb
....
....
End Enum

أو



رمز برمجي:
Enum Month As Long
Jan
Feb
....
....
End Enum
وإن كنت حصرها داخل الوحدة البرمجية المعلنة بها فعليك سبقها ب Private
مثال:



رمز برمجي:
Private Enum Month As Long
Jan
Feb
....
....
End Enum
ملاحظة أخيرة: علينا وضع التركيبة خارج أي حدث لان ذلك سوف يحدث خطأ برمجي:
مثال:




رمز برمجي:
Public Class Form1
'لا مشكلة
Enum Month
Jan
Feb
Mar
Apr
....
....
End Enum
End Class



رمز برمجي:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'هنا المشكلة
Enum Month
Jan
Feb
Mar
Apr
....
....
End Enum
End Sub

___________________________________
ثانيا: التركيبات من نوع Structure
يعرف هذا النوع من التركيبات بالانواع المعرفة من قبل المستخدم(User Defined Type-UDT)
ويمكن دمج العديد من المتغيرات والتركيبات داخل التركيبة الأم باستخدام الكلمة المحجوزة Structure
نعرف انه لدينا متغيرات من النوع String و Integer وDate وما الى ذلك.
لكن هل يمكنني صياغة متغير بالكيفية التي اريدها....لم لا؟
هذا النوع من المتغيرات يسمى Structure والتي دعمت ببيئة الدوت نت اكثر من ذي قبل
الآن نريد صنع متغير من نوع سيارة اي صنع خاص لا يعرفه فيجوال بيسك دوت
نت...لكن قبل ذلك علينا تحديد العناصر التي تدخل في مكونات السيارة وهي
الاسم والموديل والسعر والسعة وتاريخ الصناعة وتاريخ التصدير..... وما الى
ذلك

مثال:




رمز برمجي:
Structure Car
Dim Name As String
Dim cost As Integer
Dim Model As String
End Structure
استخدام المتغير الجديد بالضبط كاستخدام المتغير العادي
مثال:




رمز برمجي:
Dim NewCar As Car
NewCar.Name = "Mercedes"
NewCar.cost = 15
'طبعا انا ما بعرف ايش موديلاتها بس للتوضيح مش اكثر
NewCar.Model = "Gaosdh/#25"

MsgBox("Name: " & NewCar.Name & vbCrLf & "Cost: " & (NewCar.cost).ToString & vbCrLf & "Model: " & NewCar.Model
)

والناتج من هذه العملية:



الفصل(3): التركيبات أنواعها واستخداماتها 11247273165



[right]لعلك لاحظت شيئا: عندما قمنا بربط المعطيات داخل الرسالة فان الجزء NewCar.Cost الحقناه بالدالة .ToString ......ما وظيفتها...؟!
عندما قمنا بربط نصوص في محتوى الرسالة رأينا أن هناك معطى يلزم ربطه لكنه
خارج عن الجماعة(جماعة النصوص) ولكي يتم التلاءم قمنا بتطبيق الدالة
ToString عليه والتي تقوم بتحويل المعطى من قيمة عددية الي نصية ليتم الربط
بسلام (يمكن تشبيهها بالدالة Str()) في لغة الفيجوال بيسك 6


الآن دعونا نتعمق أكثر
يمكن للتركيبة من Structure أن تحتوي على تراكيب داخلية الأمر الذي يطلق عليه تراكيب متداخلة
Nested Structures
كيف ذلك ولماذا..؟
الآن دعنا نرجع قليلا الى السيارة ...نريد ألحاق مكون آخر للسيارة وهو
تاريخ الانتاج وتاريخ التصدير..هل يتوجب علينا جعل كل مكون منفصلا عن
الآخر؟
ليس تماما .. كما نعلم فان كلا المكونين من النوع Date والذي يمكن اجماله بالشكل التالي:




رمز برمجي:
Structure Car
Dim Name As String
Dim cost As Integer
Dim Model As String

Structure DateOfx
Dim Produce As Date
Dim Export As Date
End Structure

Dim DateOf As DateOfx
End Structure
ما الذي حدث؟
الآن قمنا بادخال تركيبة التواريخ داخل تركيبة مكونات السيارة والذي يمكن استخدامه بالصورة التالية:



رمز برمجي:
Dim NewCar As Car
NewCar.Name = "Mercedes"
NewCar.cost = 15
NewCar.Model = "Gaosdh/#25"
NewCar.Dateof.Produce = #11/29/2003#
NewCar.Dateof.Export = #11/29/2005#

MsgBox("Name: " & NewCar.Name & vbCrLf & "Cost: " & (NewCar.cost).ToString & vbCrLf & "Model: " & NewCar.Model & vbCrLf & "DateOf Produce: " & NewCar.Dateof.Produce & vbCrLf & "DateOf Export: " & NewCar.Dateof.Export
)
والناتج:


الفصل(3): التركيبات أنواعها واستخداماتها 11247275678



كما يمكننا تضمين أحداث داخل التركيبة والتي ساوجزها وساخصص للاحداث فصل كامل ان شاء الله
مثال بسيط:




رمز برمجي:
Structure Car

Structure DateOfx
Dim Produce As Date
Dim Export As Date
End Structure

Dim Name As String
Dim cost As Integer
Dim Model As String
Dim Dateof As DateOfx

Sub CloseForm(ByVal frm As Form)
frm.Close()
End Sub

End Structure

ويستخدم كالتالي:




رمز برمجي:
NewCar.CloseForm(Me)

الذي حصل اننا صنعنا حدث أو اجراء يقوم باغلاق النموذج الذي تم تمريره وهنا مررنا للاجراء النموذج Me وهو النموذج قيد التطوير

بهذا نكون قد انهينا درسنا لهذا اليوم ان شاء الله
بانتظار القادم باذن الله[/right]
الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://bouanane.yoo7.com
 
الفصل(3): التركيبات أنواعها واستخداماتها
الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1
 مواضيع مماثلة
-
» الفصل(4): المصفوفات
» الفصل (1) : الفيجوال بيسك دوت نت (لمحة تعريفية)
» الفصل (0) : دورة تعلم معنا فيجوال بيسك دوت نيت
» الفصل(2):الثوابت والمتغيرات وخصائصها....نظرة مفصلة
» الفصل(5):صنع القرار...الجزء الأول-الجمل الشرطية

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
°ˆ~*¤®§(*§ مـــنـــتـــدى بــــوعـــــنــــان §*)§®¤*~ˆ° :: °ˆ~*¤®§(*§ مـــنـــتـــدى البرمجة والتطوير §*)§®¤*~ˆ° :: VB.NET-
انتقل الى: