این آموزش در زمان های قدیم نوشته و در حال حاضر آرشیو شده. لذا توضیح و آموزش تخصصی ویژوال بیسیک دات نت به دلیل اینکه دیگه یادم رفته مقدور نیست. من در حال حاضر به طور تخصصی روی زبون سی شارپ کار میکنم، توصیه من به شما هم همین زبونه (:

  با قسمت سوم آموزش زبان شیرین VB.NET در خدمتتون هستم. این بخش حساس ترین

  بخش این زبونه و اگه قسمت سوم(که یعنی این قسمت باشه) رو نخونید دیگه بعدش براتون

  مبهم میشه. ابتدا میریم سراغ تمرین هایی که تو آموزش قبلی گذاشتم

  امیدوارم که حلشون کرده باشین ؛ اگر هم نتونستید حل کنید هیچ عیبی نداره. به عنوان جریمه پونصد

  بار بنویسید Msgbox تا دیگه از یادتون نره!

  برای تمرین اول گفته شد:

  1. برنامه ای بسازید که در آن پس از کلیک روی یک دکمه پیام "اطلاعات ذخیره نشده اند. آیا خارج میشوید؟" به کاربر داده شود که دارای شکلک اخطاری و دکمه های بله خیر باشد.

  Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
      MsgBox("اطلاعات ذخیره نشده اند. آیا خارج میشوید؟", vbExclamation + vbYesNo)
  End Sub

 2. ابتدا یک دکمه ایجاد کنید و متن روی آن را به "خروج از نرم افزار" تغییر دهید. سپس کدی بنویسید که پس از کلیک کردن کاربر روی دکمه پیام "خداحافظ" با شکلک اطلاعات به کاربر نمایش داده شود و پس از آن برنامه بسته شود (راهنمایی: در ویژوال بیسیک کد ها خط به خط اجرا میشوند بنابراین برای ساخت چنین برنامه ای تنها نیاز است کد مربوط به خروج از نرم افزار را در خط بعد از کد جعبه پیام بنویسید)

  Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
      MsgBox("خداحافظ", vbInformation)
      End
  End Sub

 قبل از اینکه وارد بحث متغیر ها بشیم من یه نکته کوچیکی رو بگم. تو هر زبون برنامه نویسی عبارت هایی تو کد وجود دارن که اجرا نمیشن بلکه فقط برنامه نویس اونا رو برای توضیحات بیشتر میون کد مینویسه. به این عبارات ؛ عبارات کامنت شده(Commented Lines) میگن. تو زبون های مختلف کد ها رو با علائم مختلفی کامنت میکنن. داخل ویبی دات نت کد ها با علامت کوتیشن ' کامنت میشن. داخل کد هر جا که کوتیشن دیده بشه ؛ تا آخر خط کد ها اجرا نمیشن. الان یه چن تا مثال میزنم بیشتر توش قوطه ور بشین!

 'این کد اجرا نمیشود و فقط برای توضیحات است
  MsgBox("Hello!") ' کد نمایش پیام اجرا میشود اما این متن اجرا نمیشود
 'MsgBox("Hello!") کل این خط اجرا نمیشود

البته کامنت کردن فقط برای توضیحات نیستا ؛ مثلا برای تست کردن و خطایابی نرم افزار اگه بخواین چند تا کد اجرا نشن حتما لازم نیست کد ها رو پاک کنید و بعد دوباره بنویسید. فقط کافیه کامنتشون کنید. حالا سوالی که اینجا پیش میاد اینه که "آقا من گیریم بخوام شونصد تا خط رو کامنت کنم بیام هی پشتشون کوتیشن بزنم که دستم به فنا میره که!" در اینجا ویژوال استودیو به شما میگوید: "زرشک! مگه من میذارم دست برنامه نویس عزیزم بره تو گچ؟" آره ؛ ویژوال استودیو فکر اینجاهاشو کرده. کافیه برای کامنت کردن چندین خط همشون رو انتخاب کنید و بعد کنترل های Ctrl + K و بعدش Ctrl + C رو بزنید. برای آن کامنت(Uncomment) کردن هم دکمه های Ctrl + K  و سپس Ctrl + U رو فشار بدین

عملکرد کلید
کامنت کردن یه عالمه کد! Ctrl + K , Ctrl + C
آن کامنت کردن یه عالمه کد! Ctrl + K , Ctrl + U

والسلام!


متغیر ها (Variable)

 آقا متغیر که دیگه نیاز به تعریف نداره اسمش روشه اصن! ینی یه مقدار که ممکنه در طول برنامه تغییر بکنه (یه متغیر فقط به یک مقدار محدود نمیشه و میتونه چندین مقدار رو با هم داشته باشه). این بخش خیلی خیلی به درد بخوره و اگه حوصله متغیر ها رو ندارید برنامه نویسی رو ببوسین بذارین کنار خنده

همونطور که تو تیتر نوشتم در لاتین به متغیر میگن Variable و تو اکثر زبون های برنامه نویسی سه حرف اولش رو برای تعریف متغیر استفاده میکنن یعنی var ؛ اما از اونجایی که ویبی دات نت خیلی تافته جدا بافتس! از سه حرف Dim برای تعریف متغیر استفاده میکنه. متغیر ها انواع مختلفی دارن که چن تاشون رو الان با هم مرور میکنیم


نوع متغیر توضیحات مثال
String

مقادیر رشته ای - مقادیری هستن که بین دو تا دابل کوتیشن قرار میگیرن

و عینهون همون چیزی هستن که دیده میشن و یک عبارت مشخصی هستن

(شاید الان براتون یکم مبهم باشه ولی مثال میزنم متوجه بشید)

 "hello" , "aryan" , "2+2" , "true"
Boolean

مقادیر درست و غلط - این نوع متغیر فقط و فقط دو مقدار

true و false قبول میکنه

true , false
Integer

مقادیر عددی - عدد های بین 32767 تا 32767- رو قبول میکنه

2+2 , 500 , 4 - 1
Char

یک کارکتر

a , f , n
Object

یک شی

تمامی اشیا
Long

اعداد بین -2,147,483,648 تا 2,147,483,648

7000000 , 80 * 9000
Date

تاریخ

January 1, 100 to December 31, 9999


حالت کلی تعریف متغیر در ویبی به این شکله که ملاحضه میکنید:

Dim نام متغیر as نوع متغیر

مقدار دهی به متغیر هم روش های مختلفی داره. اینو دریاب:

 Dim YeChizi As String = "این یک رشته است ؛ با رشته سوپ فرق دارد"
Dim YeChizi As String 
YeChizi = "این یک رشته است ؛ با رشته سوپ فرق دارد"

 به نظر من روش آموزش تئوری اصلا بازده خوبی نداره و اگه میخواید این مطالب براتون شبیه روزنامه نشه ؛ ویژوال استودیو رو باز کنید و تمرین کنید. حالا چند تا کد مثال میزنم تا یکم این مطلب از آشفتگی در بیاد. من این کد رو داخل دکمه ای به اسم Button1 نوشتم:

   Dim EsmeMan As String = "Aryan"
   MsgBox(EsmeMan)

 خوب حالا اگه رو دکمه کلیک کنیم پیامی میده که توش نوشته Aryan (میدونم الان میگید این پسره چقد خودشیفتس همه جا اسم خودشو نوشته ولی صرفا مثاله این ها ^_^ )

حالا یکی دیگه مثال میزنیم که با ذهن همگیمون آشنایی داره:

   Dim GheimatePride As Long = 23000000
   MsgBox(GheimatePride)

اینم آخریش:

   Dim AreYouHappy As Boolean = True

این متغیر ها همینجوریش مفت هم گرونن! اما اگه تو برنامه استفاده بشن ارزش پیدا میکنن. در روز های آتی کد هایی رو مرور میکنیم که بدون متغیر امکان پذیر نیستن


دستورات شرطی

ما در طول زندگیمون با شرط های مختلفی رو به رو میشیم. مثلا "اگه پول داشته باشی همه چیو داری" ؛ "اگه تخم مرغ بخرم باز هم ناهار نیمرو داریم" ؛ "اگه تند تر بدوم زود تر میرسم" و ...

پس نتیجه میشه "همه چیو داشتن" زمانی اتفاق میفته که "پول داشته باشی" ؛ و یا "زمانی زود تر به مقصد میرسی" که "تند تر بدویی" (البته این تند تر دویدن برای اون کلاغه تو قصه ها صادق نیست!)

در برنامه نویسی هم دستورات شرطی همینجوری هستن. "زمانی میتونی به برنامه وارد بشی" که "رمز رو درست زده باشی". حالت کلی دستورات شرطی در این زبون به این شکله:

    If شرط Then
            'اگر شرط برقرار باشد این دستورات اجرا میشود
    Else
            'اگر شرط برقرار نباشد این دستورات اجرا میشود
    End If

البته گذاشتن Else اجباری نیست و میتونه دستور IF شما به این شکل باشه:

   If شرط Then
       'اگر شرط برقرار باشد این دستورات اجرا میشود
   End If

 به عنوان مثال:

   Dim Sobhoone As String = "چایی شیرین"

   If Sobhoone = "چایی شیرین" Then
       MsgBox("برای صبحونه چایی شیرین دارین ؛ خوشا به سعادتت")
   Else
       MsgBox("از شواهد به نظر میرسه که صبحونه چایی شیرین ندارین")
   End If

تو کد بالا برنامه هرگز عبارت "از شواهد به نظر میرسه که صبحونه چایی شیرین ندارین" رو نشون نمیده چون در متغیر صبحونه ؛ "چای شیرین" تعریف شده و شرط همیشه برقراره مگر اینکه بخواید مقدار صبحونه رو تغییر بدید

خوب اینجا یکم کانالمون عوض میشه ولی باز برمیگردیم به دستورات شرطی. فعلا اینجا رو گوش بده:

تو زبون ویبی دات نت همین نقطه کوچولو بزرگ ترین نقش رو بازی میکنه ؛ ما از . برای رسیدن به زیر مجموعه های یک شی ؛ یک دستور و یا ... استفاده میکنیم. به عنوان مثال یه تکست باکس میسازیم و میخوایم در هنگام اجرای برنامه ببینیم که کاربر چه متنی رو داخل تکست باکس نوشته. به این شکل:

 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
     MsgBox(TextBox1.Text)
End Sub

حالا اگه رو دکمه کلیک کنید متن داخل تکست باکس پیام داده میشه به شما. در کد بالا ما متن داخل تکست باکس رو Get کردیم. یعنی گرفتیمش و به کاربر نشونش دادیم. اما میتونیم Set هم کنیم یعنی متن تکست باکس رو عوض کنیم

 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
     Textbox1.Text = "متن تکست باکس عوض شد"
End Sub

الان اگه فرم رو اجرا کنید و سر دکمه کلیک کنید متن داخل تکست باکس عوض میشه. چند مثال از نقطه رو این زیر آوردم:

Set کردن

Label1.Text = "Hello" 
Label1.ForeColor = Color.Red
Textbox1.PasswordChar = "*"
Me.Text = "This Form"
Form2.Text = "The Other Form"

Get کردن متن تکست باکس

Msgbox(Textbox1.Text)

Get کردن متن تکست باکس دوم و  Set کردن متن تکست باکس اول

Textbox1.Text = Textbox2.Text

توابع

My.Computer.Audio.Play("C:/a.wav")
MessageBox.Show("Hello")
Form2.Show()
Me.Hide()
ListBox1.Items.Clear()

 حالا از همین نقطه داخل دستورات شرطی استفاده میکنیم:

1. برنامه ای بنویسید که دارای یک دکمه و یه تکست باکس باشد. هنگامی که کاربر روی دکمه کلیک کرد اگر متن داخل تکست باکس "ramz" باشد پیام "رمز صحیح است" با شکلت اطلاعات در غیر این صورت پیام "رمز اشتباه است" با شکلک اخطاری نمایش داده شود

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        If TextBox1.Text = "ramz" Then
            MsgBox("رمز صحیح است", vbInformation)
        Else
            MsgBox("رمز اشتباه است", vbExclamation)
        End If
    End Sub

2. برنامه ای بنویسید که پس از کلیک روی دکمه ؛ رنگ متن تکست باکس به رنگ قرمز تغییر کند و سپس دکمه غیب شود

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Textbox1.ForeColor = Color.Red
        Button1.Visible = False
    End Sub

3. برنامه ای ای بنویسید که کاربر نام خود را در تکست باکس وارد کند و پس از کلیک روی دکمه عبارت "سلام {نام کاربر} عزیز خوش اومدی" پیام داده شود با شکلک اطلاعات و متن عنوان "خوش آمد گویی"

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        MsgBox("سلام " + Textbox1.Text + " خوش اومدی", vbInformation, "خوش آمد گویی")
    End Sub

 نکته های کد های بالا:

  • خاصیت Visible مربوط به غیب بودن یا آشکار بودن یه کنترله. اگه True باشه نمایش داده میشه و اگه False باشه نامرئی میشه -_-
  • اگه بخوایم چند رشته رو به هم بچسبونیم و یکیشون کنیم از نماد های + و یا & استفاده میکنیم

اگه دستورات شرطی رو یکم قلقلکش بدیم متوجه میشیم که یجای کار میلنگه. آقا گیریم من میخوام بگم اگه تو تکست باکس نوشتم "یک" یه دستور اجرا شه اگه نوشتم "دو" یه دستور دیگه ؛ نوشتم "سه" .... و  همینطور تا آخر. خوب سخته دیگه برای هر کدوم اینا کد نوشتن. اینجاست که از Select Case استفاده میکنیم. شکل کلی استفادش به این شکله:

        Select Case موضوع مورد بحث

            Case شرط اول
                'دستورات شرط اول

            Case شرط دوم
                'دستورات شرط دوم

                ...

            Case Else
                'این دستور زمانی اجرا میشود که هیچ یک از دستورات بالا اجرا نشود
        End Select

خوب به این مثال ملموس نیگا کنید:

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Select Case TextBox1.Text
            Case "علی"
                MsgBox("علی بچه با معرفتیه")
            Case "ممد"
                MsgBox("راستی خبر داری ممد رفته سربازی؟")
            Case "عباس"
                MsgBox("منظورت حاج عباس شاطره یا عباس خطر؟")
            Case ""
                MsgBox("هیچی ننوشتی که!")
            Case Else
                MsgBox(TextBox1.Text & " رو نمیشناسم")
        End Select

    End Sub

چیز هایی که یاد گرفتیم:

  • کامنت کردن و آن کامنت کردن
  • تعریف متغیر و مقدار دهی بهش
  • بلوک شرطی If ... Then ...Else...
  • بلوک شرطی Select Case
  • Get کردن و Set کردن ویژگی یک کنترل
  • نقطه!

خوب اینم از اینش ؛ هر جا که نفهمیدید یا مشکلی بود بگید براتون توضیح بدم. اما کجا با این عجله؟ این تمرین ها رو حل کن بینم!

تمرین در خانه


1. برنامه ای بنویسید که دارای یک جعبه متنی و یک دکمه باشد. پس از اینکه روی دکمه کلیک شد اگر متن داخل تکست باکس "خروج" باشد برنامه بسته شود و اگر "خروج" نباشد (هر چیزی به غیر از خروج) متن داخل تکست باکس به کاربر پیام داده شود

2. برنامه ای بنویسید که کاربر هر عددی بین 1 تا 5 را به صورت عددی در تکست باکس وارد کند ؛ پس از کلیک روی دکمه همان عدد به صورت حروف به کاربر پیام داده شود