ساختار حلقه ها :
اگر برنامه نویس بخواهد مجموعه دستوراتی را بر اساس یک شرط و یا تعداد معینی تکرار کند ، از حلقه استفاده می کند .
1. حلقه While :
این نوع حلقه تا زمانی که شرط صحیح است عمل دستورات داخل حلقه را تکرار می کند .
While ( جمله شرط )
عبارات
[ exit while ]
End While
تذکر : با استفاده از دستور exit while می توان بدون در نظر گرفتن شرط حلقه از آن خارج شد .
مثال : برنامه ای بنویسید که دو عدد از ورودی دریافت کند ، سپس اعداد زوج بین این دو را نمایش دهد . (با While )
Dim num1 As Integer
Dim num2 As Integer
Console.Write("Enter First Number : ")
num1 = Console.ReadLine()
Console.Write("Enter Second Number : ")
num2 = Console.ReadLine()
num1 += num1 Mod 2
While (num1 <= num2)
Console.WriteLine(num1.ToString())
num1 += 2
End While
Console.ReadLine()
مثال : برنامه ای بنویسیدکه یک رشته از ورودی دریافت کند ، اگر مقدار آن برابر Exit بود برنامه را پایان دهد .
Dim password As String = "exit"
While (password <> "Exit")
Console.Write("Enter Password : ")
password = Console.ReadLine
End While
Console.Write("You Have Exited ... :) ")
Console.ReadLine()
مثال : برنامه ای بنویسید که اعداد از 1 تا 20 را بشمارد . ( بدون نمایش روی صفحه مانیتور )
Dim counter As Integer = 0
While counter < 20
counter += 1
' Insert code to use current value of counter.
End While
2. حلقه For … next : این حلقه برای تکرار اجرای دستورات به تعداد معینی مورد استفاده قرار می گیرد . در این حلقه ، مقدار اولیه ، مقدار پایانی و مقداری به عنوان گام یا Step حلقه مشخص می شود . و این ساختار دستورات داخل خود را به تعداد مشخص شده تکرار می کند .
فرم کلی :
For نام شمارنده نقطه شروع to نقطه پایان step=گام حلقه
دستورات
Next
نکته : روش تبدیل کردن یک عدد با یک خط دستور به این صورت است: num1 += (num1 mod 2 )
تمرین : برنامه ای بنویسید که 9 بار عبارت Hi ASP.net را نمایش دهد .
Dim Counter As Integer
For Counter = 1 To 9 Step 1
Console.WriteLine(Counter.ToString + " : Hi ASP.net")
Next
Console.ReadLine()
تمرین : برنامه ای بنویسیدکه یک عدد از ورودی دریافت کند و ... آنرا محاسبه کند .
Sub Main()
Dim count As Integer = 1
Dim sum As Long = 0
Dim num1 As Integer
Console.Write("Enter a Correct Number : ")
num1 = Console.ReadLine()
For count = 1 To num1 Step 1
sum = sum + count
Next
Console.WriteLine(sum.ToString)
Console.ReadLine()
End Sub
تمرین : برنامه بنویسید که یک جدول ضرب 10 در 10 را نمایش دهد .
For i As Integer = 1 To 10
For j As Integer = 1 To 10
Console.Write("{0} ", i * j)
Next
Console.WriteLine()
Next
Console.ReadLine()
مفاهیم پایه .net
از آنجایی که زبان VB.net یک زبان برنامه نویسی و قدرتمند است ، در آن از مفاهیم برنامه نویسی شیئ گرا پشتیبانی کامل شده است .
* تذکر : برنامه نویسی شیئ گرا (Object Oriented Programming ) نوعی برنامه نویسی است که در آن با موجودیت های سیستم همانند یک شیئ رفتار می شود .
* برای پیاده سازی برنامه نویسی شیئ گرا ، ابتدا باید با مفهوم کلاس و اعضای آن آشنا شویم .
* کلاس : کلاس ها الگوی ساخت اشیاء هستند . مثلاً : کلاس انسان را در نظر بگیرید . هر یک از شما علمای بزرگوار اسلام ، یک مشتق یا Instance از کلاس انسان هستید .
* نحوه تولید یک کلاس در VB.net : الگوی ساخت کلاس در VB.net به سبک زیر است :
سطح دسترسی
Public یا Private Calss نام کلاس
اعضای کلاس
End Class
* تذکر : برای ساخت کلاس ، توسط نرم افزار VS کافی است ، در پنجره solution explorer روی نام پروژه کلیک راست کنیم . با استفاده از گزینه add و گزینه class یک کلاس جدید را به پروژه اضافه می کنیم .
در این صورت یک فایل مجزا به پسوند .vb برای آن کلاس ایجاد می شود .
یک نمونه : مثلاً ساخت یک کلاس برای تبدیل تاریخ میلادی به شمسی .
* یک کلاس شامل پنج نوع عضو می شود :
1. فیلد ( field ) : فیلد ها در کلاس بیانگر یک متغیر می باشند و در حقیقت یک مقدار را در خود ذخیره می کنند .
1-1- نحوه تعریف کردن فیلد :
سطح دسترسی نام فیلد as نوع داده ای
* تذکر : اگر سطح دسترسی یک عضو از کلاس دارای مقدار public باشد ، این عضو نتنها می تواند در داخل کلاس مورد استفاده قرار می گیرد ، در خارج کلاس نیز می تواند قابل دسترس باشد .
اگر بجای public ، سطح دسترسی private را قرار دهیم ، مقدار فقط داخل کلاس شناسایی می شود .
* نحوه استفاده از کلاس : برای استفاده از یک کلاس در کلاس دیگر و یا در طول برنامه ابتدا باید توسط دستور dim از آن کلاس یک مشتق ایجاد می کنیم .
توجه : کلاس ها از جنس Reference type هستند . بنابراین در هنگام تعریف مشتق باید از کلمه new استفاده کنیم .
مثلاً اگر نام کلاس را rect گذاشته باشیم ، اگر بخواهیم آنرا در برنامه فراخوانی کنیم باید دستور زیر را واردکنیم .
Dim r1 as new rect
R1.width
R2.height
Console.WriteLine("Rectangles width is : " + r1.width.tostring())
Console.WriteLine("Rectangles height is : " + r1.height.tostring())
توضیح : دو مقدارwidth و height مقداری هایی هستند که کلاس تعریف شده اند .
* نکته : شرط ضمنی : به صورت زیر در VB نوشته می شود .
Iif ( جمله شرطی , trueمقدار , false مقدار )
2- متد ها Method ) ( : متد ها به طور کلی به دو دسته تقسیم می شوند :
1-2- روال یا پراسیجر ( Procedure )
2-2- تابع یا فانکشن ( Function )
* روال یا procedure چیست ؟ مجموعه دستوراتی را انجام می دهد که دارای نام منحصر به فرد در کلاس است . وقتی بخواهیم مجموعه عملیاتی را چندین بار بکار ببریم کافی است این دستورات را در قالب یک روال تعریف کنیم .
الگوی ساخت روال به صورت زیر است :
سطح دسترسی sub نام روال [( مجموعه پارامترها یا آرگون ها )]
دستورات
End sub
تذکر : روال مقدار برگشتی ندارد . ولی تابع مقدار برگشتی دارد .
مثال : یک روال بنویسید که دو مقدار را دریافت کند و با پیام مناسب آنها را به کاربر نمایش دهد .
Public height As Integer
Public width As Integer
Public Sub rectangle(ByVal w As Integer, ByVal h As Integer)
Console.Write(" My width is : " + width.ToString)
Console.Write("my height is : " + height.ToString)
End Sub
* تابع یا Function ؟ توابع شبیه روال ها عمل می کنند با این تفاوت که حاوی مقدار برگشتی هستند . از آنجایی که یک تابع دارای مقدار برگشتی است ، باید این نوع مقدار برگشتی تابع تعریف شود .
الگوی کلی تابع :
سطح دسترسی Function نام تابع [(مجموع پارامترها )] as نوع داده ای مقدار برگشتی
دستورات
Return مقدار برگشتی
End function
نکته : بعد از دستور retrun هر دستوری که تایپ شود تاثیری در برنامه ندارد .
تمرین : تابعی بنویسید که طول و عرض یک مستطیل را دریافت کند و مساحت آن را برگرداند .
Public Function area(ByVal tool As Integer, ByVal arz As Integer)
Dim result As Integer
result = tool * arz
Return result
End Function
اگر بخواهیم تابع را در برنامه فراخوانی کنیم باید شبیه مثال زیر عمل کنیم :
Dim masahat As New Classfanc
Console.Write(masahat.area(5, 6))
Console.ReadLine()
تمرین : در کلاسی به نام test متدی بنویسید که یک عدد را دریافت کرده و زوج یا فرد بودن آن را مشخص کند .
Public Function zojfard(ByVal num1 As Integer)
Dim result As String
If num1 Mod 2 = 0 Then
result = "zoje"
Else
result = "fard"
End If
Return result
End Function
* تکنیک Over Load : در .net framwork برای تعریف متدها با تعدادی پارامترهای دلخواه شیوه جدیدی به نام over load ایجاد گردید . در این شیوه می توان یک متد را چند بار و با تعداد پارامترهای متفاوت تعریف نمود . در هنگام فراخوانی متد ، متدی اجرا می شود که تعداد پارامترهای آن مقدار دهی شده باشند .
* شرایط Over Load : وقتی می خواهیم یک متد را over load کنیم باید به نکات زیر توجه کنیم .
1. نوع متدهای over load شده باید با هم مشترک باشد .
2. سطح دسترسی متد ها باید با هم برابر باشد .
3. در صورتی که متدها از جنس function باشند ، باید نوع داده ای آنها برابر باشد .
4. پارامترهای متد ها یا باید از جنس تعداد و یا از لحاظ نوع با هم متفاوت باشند .
تذکر : کلمه me. در کلاس بیانگر خود کلاس می باشد . یعنی اگر بنویسیم me. در ادامه فهرست کلاس لیست می شود .
Public x As String
Public Sub showxy(ByVal x)
Console.Write(x)
Console.Write(Me.x)
End Sub