01-10-12, 06:14 PM
كاتب الموضوع : جهاد العريقي
بسم الله الرحمن الرحيم
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاتة
اولا ما معنى تراكيب متداخلة ...?
لناخذ مثال اولا على هذا النوع ..
يمكن عمل تركيب تحكم متداخلة كا الاتي :
كا استخدام جملة If ….. Then ….. End If For …… Loop أي استخدام جمل تحكم مختلفة في لالمهام ومتداخلة مع بعضها البعض .. كما اسلفنا عبارة IF , FOR .. اذن هذا ا نقصد به التراكيب المتداخلة ..
في vb يمكن عمل تراكيب على عدة مستويات او حسب حاجة المبرمج لها ..
ما هي الفائدة من التراكيب المتداخلة ?
جعل البرنامج سهل القراءة .. وذلك ليسهل معرفة الاخطاء ..
ملاحظة هامة :
يجب التاكد دائما من فتح واغلاق التراكيبب المتداخلة مع بعضها البعض في نفس التركيب ...
ما ذا اعني بهذه الملاحظة ..
المعنى هو لايمكن مثلا ان استخدم For … Next أي الدوران بــ For وانا بداخل جملة If الشرطية . .. وان اقوم باغلاق الدوران (أي كتابة العبارة Next ) بعد End If أي بعد ان انهي جملة الشرط فهذا خطاء ويجب التأكد من اغلاق For … قبل End If ...
لناخذ مثال بشكل عام على التراكيب المتداخلة :
كود :
[color=#000000][COLOR=#007700]For [/color][color=#0000bb]a [/color][color=#007700]= [/color][COLOR=#0000bb]1 To 100
[/COLOR][color=#007700]{ [/color][color=#0000bb]statements [/color][COLOR=#007700]}
If [/COLOR][color=#0000bb]a [/color][color=#007700]= [/color][COLOR=#0000bb]99 Then
[/COLOR][color=#007700]{ [/color][color=#0000bb]statements [/color][COLOR=#007700]}
[/COLOR][color=#0000bb]End [/color][COLOR=#007700]If
While [/COLOR][color=#0000bb]b [/color][color=#007700]< [/color][COLOR=#0000bb]a
[/COLOR][color=#007700]{ [/color][color=#0000bb]statements [/color][COLOR=#007700]}
If [/COLOR][color=#0000bb]total [/color][color=#007700]<= [/color][COLOR=#0000bb]0 Then
[/COLOR][color=#007700]{ [/color][color=#0000bb]statements [/color][COLOR=#007700]}
[/COLOR][color=#0000bb]End [/color][COLOR=#007700]If
[/COLOR][color=#0000bb]End [/color][COLOR=#007700]While
For [/COLOR][color=#0000bb]c [/color][color=#007700]= [/color][COLOR=#0000bb]1 to a
[/COLOR][color=#007700]{ [/color][color=#0000bb]statements [/color][COLOR=#007700]}
[/COLOR][COLOR=#0000bb]Next
Next
[/COLOR][/COLOR]
اذا هذا مثال للتراكيب وانظر الى الجمل المستخدمة في الكود السابق.... لكل جملة نهاية ولكن ضمن نفس التركيب For ….. Next وليس بعده .. ايضا انظر الى كل جملة بشكل مستقل لها نهايتها..
لناخذ مثال عملي على التراكيب وليكن على المصفوفات ...
انشاء مشروع جديد ومن ثم اختار Consol Application
ومن ثم نكتي الكود الاتي:
كود :
[COLOR=#000000][COLOR=#0000bb]Module Module1
Sub Main[/COLOR][COLOR=#007700]()
[/COLOR][color=#0000bb]Dim Array2D[/color][color=#007700]([/color][color=#0000bb]6[/color][color=#007700], [/color][color=#0000bb]4[/color][color=#007700]) As [/color][COLOR=#0000bb]Integer
Dim iRow[/COLOR][color=#007700], [/color][color=#0000bb]iCol [/color][color=#007700]As [/color][COLOR=#0000bb]Integer
[/COLOR][color=#007700]For [/color][color=#0000bb]iRow [/color][color=#007700]= [/color][color=#0000bb]0 To Array2D[/color][color=#007700].[/color][color=#0000bb]GetUpperBound[/color][color=#007700]([/color][color=#0000bb]0[/color][COLOR=#007700])
For [/COLOR][color=#0000bb]iCol [/color][color=#007700]= [/color][color=#0000bb]0 To Array2D[/color][color=#007700].[/color][color=#0000bb]GetUpperBound[/color][color=#007700]([/color][color=#0000bb]1[/color][COLOR=#007700])
[/COLOR][color=#0000bb]Array2D[/color][color=#007700]([/color][color=#0000bb]iRow[/color][color=#007700], [/color][color=#0000bb]iCol[/color][color=#007700]) = [/color][color=#0000bb]iRow [/color][color=#007700]* [/color][color=#0000bb]100 [/color][color=#007700]+ [/color][COLOR=#0000bb]iCol
Console[/COLOR][color=#007700].[/color][color=#0000bb]Write[/color][color=#007700]([/color][color=#0000bb]iRow [/color][color=#007700]& [/color][color=#dd0000]", " [/color][color=#007700]& [/color][color=#0000bb]iCol [/color][color=#007700]& [/color][color=#dd0000]" = " [/color][color=#007700]& [/color][color=#0000bb]Array2D[/color][color=#007700]([/color][color=#0000bb]iRow[/color][color=#007700], [/color][color=#0000bb]iCol[/color][color=#007700]) & [/color][color=#dd0000]" "[/color][COLOR=#007700])
[/COLOR][COLOR=#0000bb]Next iCol
Console[/COLOR][color=#007700].[/color][color=#0000bb]WriteLine[/color][COLOR=#007700]()
[/COLOR][COLOR=#0000bb]Next iRow
Console[/COLOR][color=#007700].[/color][color=#0000bb]Read[/color][COLOR=#007700]()
[/COLOR][COLOR=#0000bb]End Sub
End Module
[/COLOR][/COLOR]
الدوران الخارجي (iRow العداد ) يقوم بفحص كل صفوف المصفوفة ..
اما الدوران الداخلى (iCol) فيقوم بفحص كل عمود في الصف الحالي..
في كل تكرار التكرار الداخلي يقوم بفحص كل عنصر في الصف المحدد بواسطة العداد في التكرار الخارجي (iRow) بعد الانتها من العداد الداخلي أي عندما يصل الى نهايتة عداد الدوران الخارجي يزيد بمقدار واحد ومن ثم ينفذ الدوران الداخلي وهكذا ...
وويكون شكل العنصر الحالي في كل تكرار هو Array2D(iRow,iCol) ....
فيصبح الناتج كما في الشكل الاتي:
0, 0 = 0 0, 1 = 1 0, 2 = 2 0, 3 = 3 0, 4 = 4
1, 0 = 100 1, 1 = 101 1, 2 = 102 1, 3 = 103 1, 4 = 104
2, 0 = 200 2, 1 = 201 2, 2 = 202 2, 3 = 203 2, 4 = 204
3, 0 = 300 3, 1 = 301 3, 2 = 302 3, 3 = 303 3, 4 = 304
4, 0 = 400 4, 1 = 401 4, 2 = 402 4, 3 = 403 4, 4 = 404
5, 0 = 500 5, 1 = 501 5, 2 = 502 5, 3 = 503 5, 4 = 504
6, 0 = 600 6, 1 = 601 6, 2 = 602 6, 3 = 603 6, 4 = 604
والسلام ورحمة الله وبركاتة ..