آموزش ویژوال بیسیک

آموزش قدم به قدم ویژاول بیسیک 2015 از مبتدی تا پیشرفته

آموزش ویژوال بیسیک

آموزش قدم به قدم ویژاول بیسیک 2015 از مبتدی تا پیشرفته

طبقه بندی موضوعی

درس دهم : حلقه های For … Next

چهارشنبه, ۲۵ فروردين ۱۳۹۵، ۰۹:۰۲ ب.ظ

درس دهم حلقه های For … Next

10-1 مقدمه

  در درس آرایه ها به حلقه های فور اشاره کردیم. حلقه قور برای تکرار یک سری دستور به تعداد مشخص به کار میرود. یعنی میگوییم انجام بده کدهای زیر را تا زمانی که مقدار فلان متغیر در فلان رنج است. حلقه ها در تمامی زبانهای برنامه نویسی از مهمترین و پر کاربردترین دستورات ان زبان میباشند. برای پر کردن آرایه ها صف ها و پشته ها، برای جست و جو و پیمایش در المان های مختلف و صدها دلیل دیگر باید به استفاده از حلقه ها روی آوریم. مثلا تصور کنید میخواهید یک عدد را به باینری تبدیل کنید. همانطور که میدانید روش کار به این صورت است که باید عدد مورد نظر را آنقدر بر 2 تقسیم کنید که دیگر تقسیم پذیر نباشد و با جمع آوری آخرین خارج قسمت و باقیمانده ها میتوان به معادل باینتری عدد دست یافت. خب برای طراحی این برنامه چی میکنید؟ اگر عددی سه رقمی در اختیار بود، برای آن بارها و بارها کد تقسیم و ذخیره ی باقیمانده و خارج قسمت در متغیر ها مجزا را مینوشتید؟ اگر عدد نامعین بود و قرار بود از ورودی دریافت شود چه؟ از کجا باید فهمید چند بار تقسیم برای آن باید نوشته شود؟ اینجاست که اهمیت حلقه های تکرار مشخص میشود. درست مانند دستورات شرطی معمولا برنامه ای نیست که حداقل یک بار از حلقه ها استفاده نکرده باشد. در این آموزش به تشریح چند نوع حلقه ی For, While و Do … While میپردازیم.

10-2 سینتکس حلقه ی For

  در ویژوال بیسیک 2015 سینتکس حلقه ی فور به صورت زیر است :

For variable = value1 To value2 step n

Statements ….

Next

10-2-1 تعریف متغیر مورد استفاده در حلقه

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

10-2-1-1 تعریف متغیر خارج از حلقه

  میتوان متغیر را خارج از حلقه تعریف، و در داخل حلقه آن را فراخوانی کرد:

        Dim i As Integer
        For i = 0 To 3
            MsgBox("This is the test #" & i.ToString())
        Next

10-2-1-2 تعریف متغیر داخل حلقه

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

        For i As Integer = 0 To 3
            MsgBox("This is the test #" & i.ToString())
        Next

10-2-2 رنج و بازه ی تکرار

  در درس قبل با کلمه ی کلیدی TO آشنا شدیم. چه متغیر را درون حلقه و چه خارج آن تعریف کنیم، بعد از نام متغیر یک مقدار اولیه به آن میدهیم، سپس با کلمه ی کلیدی TO پایان بازه را مشخص میکنیم. توجه کنید که در ویژوال بیسیک کلمه ی کلیدی TO خود عدد پایانی را هم حساب میکند.

10-2-3 Step یا گام

  نرخ افزایش یا گام بدین معنی ست که حلقه در بازه ی معین شده چند تا چند تا حرکت کند. این کلمه ی کلیدی اختیاری است و میتوانید آن را استفاده نکنید. من هم در مثال های بالا آن را قرار ندادم. اگر این کلمه را در حلقه ی فور نیاورید، ویژوال بیسیک اتوماتیک آن را مثبت 1 میگیرد. و هر بار یک واحد به ارزش عدد 1 در بازه حرکت صعودی میکند. اگر بخواهید در بازه حرکت معکوس یا کاهشی انجام دهید دیگر استفاده از Step اختیاری نیست. باید حتما از گام استفاده کرده و مقدار آن را عدد منفی یک قرار دهید.

10-2-3-1 گام افزایشی

  اگر گام را مثبت 2 قرار دهید، اگر بازه از 1 تا 5 باشد، حلقه سه بار اجرا خواهد شد. یک بار با مقدار اولیه متغیر یعنی عدد 1. بعد دو واحد افزایش میابد و میشود 3. کد باز اجرا میشود. بعد دو واحد دیگر افزایش میابد و متغیر برابر با 5 میشود باز کد اجرا میشود و تمام. حال اگر این مقدار را 3 بگذارید، حلقه دو بار اجرا میشود. یک بار با مقدار اولیه و یک بار با مقدار 4. بعد از این افزایش از بازه بیرون میزند و حلقه خاتمه میابد. توجه میکنید که اگر نرخ افزایش شما بیش از بازه باشد حلقه همیشه فقط یک بار اجرا خواهد شد:

        For i As Integer = 1 To 5 Step 2
            MsgBox("This is the test #" & i.ToString())
        Next

10-2-3-2 گام کاهشی

  گفتیم برای حرکت معکوس در بازه باید گام را منفی قرار دهید. یعنی مثلا وقتی بازه از 10 تا 1 است، باید گام را منفی 1 یا منفی هر عددی که میخواهید بگذارید.

  از این تکنیک ها میتوان برای مثال برای تولید اعداد فرد استفاده کرد.

10-2-4 Next

  استفاده از این کلمه ی کلیدی الزامی و جزئی از سینتکس حلقه ی فور است. با این کلمه ی کلیدی چهارچوب حلقه مشخص و اسنیپت بسته میشود.

10-3 پرش به خارج از حلقه ی For

  برای این منظور از دستور ساده ی Exit For استفاده میشود. معمولا خروج از حلقه را با دستور شرطی IF همراه میکنند که اگر شرایطی خاص اتفاق افتاد، برنامه از حلقه خارج شود اگر نه به اجرای حلقه ادامه دهد.

  حال که با حلقه ی فور آشنا شدیم به مثال زیر توجه کنید. میخواهیم برنامه ای بنویسیم که کلیه اعداد زوج دو رقمی را به صورت نزولی در خروجی چاپ کند. مطابق شکل 1-10 داخل فرم خالی فقط یک لیبل در گوشه ای قرار دهید و از کد زیر استفاده کنید. سعی کنید کد را تحلیل کنید. خروجی مطابق شکل 2-10 خواهد بود.

 

preExe10

شکل 10-1 برنامه قبل از اجرا

  کد برنامه:

Public Class forLoopsMain
    Private Sub forLoopsMain_Load(sender As Object, e As EventArgs) Handles Me.Load
        Label1.AutoSize = False
        Label1.Dock = DockStyle.Fill
        Label1.ForeColor = Color.Brown
        Label1.BackColor = Color.White
        Label1.Font = New Font("Arial", 10)
        Label1.Text = ""
        For i As Integer = 98 To 10 Step -2
            Label1.Text &= i & "    "
        Next
    End Sub
End Class

postExe10

شکل 2-10 برنامه بعد از اجرا

تمرین : برنامه ای بنویسید که یک آرایه ی یک بعدی با 10 عضو را به عنوان نمرات دانشجو از ورودی دریافت و سپس جمع کل و معدل را حساب کند.