InstagramTwitterSnapChat


 
وصف

العودة   منتديات سكاو > الكليات الجامعية > منتدى كلية الحاسبات وتقنية المعلومات > منتدى قسم علوم الحاسبات
التسجيل مشاركات اليوم البحث
   
   


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

منتدى قسم علوم الحاسبات

إضافة رد
 
أدوات الموضوع إبحث في الموضوع انواع عرض الموضوع
منتديات طلاب وطالبات جامعة الملك عبد العزيز منتديات طلاب وطالبات جامعة الملك عبد العزيز
  #1  
قديم 26-12-2014, 08:18 PM

عبدالقادر البعداني عبدالقادر البعداني غير متواجد حالياً

استاذ جامعي

 
تاريخ التسجيل: Dec 2014
الكلية: كلية الحاسبات وتقنية المعلومات
التخصص: علوم حاسوب
نوع الدراسة: ماجستير
المستوى: متخرج
البلد: الدول العربية
الجنس: ذكر
المشاركات: 7
افتراضي الدرس(4): التركيبات أنواعها واستخداماتها


دورة الدوت نت

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


السلام عليكم ورحمة الله وبركاته

بسم الله الرحمن الرحيم


درسنا اليوم دسم بعض الشيء ويحتاج لشيء من التركيز.

بداية علينا أن نتيقن أن الأنواع في فيجوال بسيك دوت نت لا تقتصر على ما قد طور مع اللغة مثل 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
وبما أن الثابت 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
وكما نرى فان العنصر Month.Mar يحمل القيمة23 والعنصر التالي سيحمل القيمة السابقة + 1 حسب ما ذكرنا في الأعلى .

كود:

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

ونص رسالة الخطأ يقول:Constant cannot be the target of an assignment أي أنه الثابت لا يمكن أن يكون هدفا لعملية تعيين.(أي اسناد قيمة)

اذن يمكن استخدام الEnum في استخدامات الثوابت

ملاحظة : جميع قيم ال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
كود:

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)
لعلك لاحظت شيئا: عندما قمنا بربط المعطيات داخل الرسالة فان الجزء 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
ما الذي حدث؟

الآن قمنا بادخال تركيبة التواريخ داخل تركيبة مكونات السيارة والذي يمكن استخدامه بالصورة التالية:



كود:

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
والناتج:

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

مثال بسيط:

كود:

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وهو النموذج قيد التطوير



بهذا نكون قد انهينا درسنا لهذا اليوم ان شاء الله



بانتظار القادم باذن الله
رد مع اقتباس

 

إضافة رد


تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة

الانتقال السريع

 


الساعة الآن 07:36 AM


Powered by vBulletin® Version 3.8.9 Beta 3
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Ads Organizer 3.0.3 by Analytics - Distance Education

أن كل ما ينشر في المنتدى لا يمثل رأي الإدارة وانما يمثل رأي أصحابها

جميع الحقوق محفوظة لشبكة سكاو

2003-2024