1. مهمان گرامی، جهت ارسال پست، دانلود و سایر امکانات ویژه کاربران عضو، ثبت نام کنید.
    بستن اطلاعیه

آموزش مقدماتي و جامع ويژوال بيسيك 6 Visual Basic

شروع موضوع توسط minaaa ‏14/12/10 در انجمن Visual Basic

  1. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    كادرهاي پيام و ورودي

    ويژوال بيسيك چندين تابع توكار دارد كه وظايف بسياري از جمله عمليات مرسوم رياضي و رشته اي را براي ما انجام ميدهند.
    بعضي از اين توابع نيز كارهاي ورودي و خروجي راانجام ميدهند.

    نكته : تابع ، روالي است كه يك يا چند متغير به عنوان آرگومان مي پذيرد و يك نتيجه را بر مي گرداند.همانند تابع Abs به معني قدر مطلق.

    مروري بر MsgBox و InputBox

    وقتي كه لازم باشد تا از كاربر سوالاتي پرسيده شود يا پيامهاي خطائي و اطلاعاتي به كاربر دهيد مجبوريد از كادرهاي پيام و يا ورودي استفاده كنيد.حتما زماني كه با خط دايال آپ خود قصد اتصال به اينترنت را داشته ايد خطاهاي مرسوم مودم را اعم از اشغال خط و ... ديده ايد.
    تمامي اين پيامها در كادرهاي پيام به شما داده مي شوند.
    به عنوان مثال اگر كاربر داده اي را به اشتباه وارد كند شما با بررسي اطلاعات وارد شده مي توانيد صحت و سقم اطلاعات وارد شده را توسط كادرهاي پيام به كاربر اطلاع دهيد.
    همچنين با كنترل كادرهاي متني قبلا آشنا شديد و دانستسد كه براي دريافت اطلاعات بسيار مناسب هستند اما همواره اين كادر ها به كار نمي آيند.كادرهاي ورودي براي پرسيدن سوالاتي كه تنها تحت شرايط خاص بروز مي كنند بسيار مناسب هستند.
    كادر هاي ورودي هميشه فضائي را براي پاسخگوئي كاربر به سوالات فراهم مي آورند.

    بررسي ( )MsgBox

    هميشه تابع MsgBox را به يك متغير صحيح منسوب سازيد .متغير مقدار بازگشتي را نگه خواهد داشت و آن مقدار مشخص كننده دكمه اي است كه كاربر فشرده استتا بر مبناي آن تصميم گيري شود.
    در قسمت پائيين كادر متني مي تواند دكمه هاي مختلفي اعم از OK ، Yes,No و... بسته به انتخاب برنامه نويس وجود داشته باشد.
    در اينجا قالب اين تابع را ميبينيد:
    ([[Message=MsgBox (strMsg,[,[intType],strTitle
    strMsg يك رشته است ، يك متغير يا يك ثابت رشته اي به عنوان پيام كه در كادر متني نمايش مي يابد.
    intType : مقدار عددي يا عبارتي است كه گزينه هائي كه در كادر پيام مي خواهيد را نمايش مي دهند.
    اهم اين عبارات و اعداد عبارتند از:
    vbOkonly يا مقدار 0 كه دكمه Ok را نمايش ميدهد.
    vbOkCancel يا مقدار 1 كه دكمه هاي Ok , ‍Cancel را نمايش مي دهد.
    vbAbortRetryIgnore يا مقدار 2 كه دكمه هاي Abort و Retry , Ignore را نمايش مي دهد.
    vbYesNoCancel يا مقدار 3 كه دكمه هاي Yes , No, Cancel را نمايش مي دهد.
    و...
    همچنين شما مي توانيد از شمايل متنوعي با توجه به پيام داده شده انتخاب نمائيد.به عنوان مثال اگر پيامتان يك پيام خطائي است از vbCritical واگر سوالي است از vbQuestion و اگر اطلاع رساني است از vbInformation استفاده كنيد.

    نكته مهم : اگر خواستيد از دو يا جند انواع دكمه و شمايل استفاده كنيد بين انها علامت "+" را قرار دهيد.

    و در نهايت strTitle رشتهاي اختياري است كه نشان دهنده متن درون نوار عنوان كادر متني است.
    به عنوان مثال اگر يك كد براي اجراي يك كادر پيام به شكل زير بنويسيد بايد هنگام اجرا شكلي همانند شكل زير داشته باشد.
    Message = MsgBox("Are you reday for report?", vbQuestion + vbYesNo, "Report Request")

    [​IMG]
    ​

    اما مقادير بازگشتي MsgBox به شرح ذيل است:
    1 : كاربر دكمه Ok را فشرده است.
    2 : دكمه Cancel
    3 : دكمه Abort
    4 : دكمه Retry
    5 : دكمه Ignore
    6 : دكمه Yes
    7 : دكمه No

    بررسي InputBox

    اين تابع بسيار ساده است زيرا خيلي شبيه تابع MsgBox عمل مي كند.
    قالب اين تابع به شكل زير است:
    ([[[strVariable=InputBox(strPrompt[,[strTitle][,strDefault][,intXpos,intYpos

    strPrompt دقيقا همان پيامي است كه چاپ مي شود ، strTitle عنوان درون نوار عنوان ، strDefault مقدار رشتهاي پيش گزيده درون كادر ورودي و intXpos,intYpos مختصات قرار گرفتن كادر ورودي روي صفحه مانيتور شماست.
    نكته: عباراتي كه در قالب پيام به صورت [ ] مي بينيد optional هستند و استفاده از انها دلبخواهي است همانند همين مختصات قرار گرفتن كادر ورودي.

    كد زير اگر اجرا شود كادر ورودي همانند شكل زير خواهيد داشت:

    ("Message = InputBox("what is your name?", "Name request", "Ali​

    [​IMG]
    ​

    __________________
     
  2. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    عملگرهاي مقايسه اي و احكام شرطي 1
    ​

    عملگرهاي مقايسه اي عملگرهائي هستند كه مقادير داده اي را با يكديگر مورد مقايسه قرار مي دهند و نتايج درست يا غلط را باز مي گردانند.

    در ويژوال بيسيك 6 عملگر مقايسه اي داريم به شرح زير:
    < : عملگر بزرگتر
    > : عملگر كوچكتر
    = : عملگر برابر يا تساوي
    =< : عملگر بزرگتر مساوي
    => : عملگر كوچكتر مساوي
    <> : عملگر نامساوي

    عملگر هاي مقايسه اي مي توانند متغير ها ، لفظ ها ، مقادير كنترل ها و .... را مقايسه نمايند.

    نكته : هنگامي كه رشته ها را با هم مقايسه مي كنيد ويژوال بيسيك از جدول اسكي براي تعيين نحوه مقايسه كاراكتر ها استفاده مي كند.

    حكم IF :

    مهمترين حكم شرطي در يك برنامه حكم IF است . با منطقي كه اين حكم به وجود مي آورد برنامه كاربردي مي تواند شروع به تجزيه و تحليل داده هاي شامل عملگرهاي مقايسه اي و انجام تصميم گيري ها بر اساس آن تجزيه تحليل ها كند.

    حكم IF شامل دو قسمت مهم بررسي شرط با IF و بدنه حكم IF است.
    قالب حكم IF به شكل زير است:

    کد:
    IF comparision ThenOne or more VB statmentsEnd IF
    End IF به ويژوال بيسيك مي گويد كه بدنه حكم IF در كجا به پايان مي رسد.فرض كنيد كاربري مقدار فروش را در كنترل كادر متني به نام txtSales وارد مي كند. IF زير مقدار پاداش بر اساس فروش را محاسبه مي كند
    کد:
    IF (txtSales.Text > 5000) ThensngBonus=txtsales.Text * 0.12End IF
    نكته : در بدنه حكم IF مي تواند بيش از يك خط دستور يا كد قرار بگيرد.

    نكته مهم : IF تك خطي نياز به End IF ندارد به شرطي كه حكم IF بعد از Then نوشته شود.

    شاخه Else حكم IF

    در حالي كه حكم IF كد را در صورت درست بودن مقايسه اجرا مي كند Else در صورت درست نبودن حكم IF حكم هاي مربوط به خود را اجرا مي كند.به قطعه كد زير توجه كنيد:

    روي فرم دو عددكنترل كادر متني به اضافه يك دكمه فرمان قرار دهيد و كد زير را در رويه كليك دكمه فرمان بنويسيد.

    کد:
    کد:
    Private Sub Command1_Click()If Val(Text1.Text) >= Val(Text2.Text) Then Text1.BackColor = vbBlue Text2.BackColor = vbWhiteElse Text1.BackColor = vbWhite Text2.BackColor = vbBlueEnd IfEnd Sub​

    هنگام فشردن دكمه اگر مقدار عددي وارد شده در كنترب كادر متني يك از دو بيشتر بود رنگ زمينه اين كنترل به آبي تغيير پيدا خواهد كرد و رنگ زمينه كنترل كادر متني دو به سفيد ولي اگر مقدار عددي كنترل كادر متني دو بزرگتر از يك بود بالعكس.

    ​
     
  3. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    عملگرهاي مقايسه اي و احكام شرطي 2
    ​

    اميدوارم تا اين قسمت آموزشها مورد توجه قرار گرفته باشد.در ادامه بحث به مقايسات مركب با عملگرهاي منطقي و انتخابهاي شرطي select case خواهم پرداخت.

    مقايسات مركب با عملگرهاي منطقي

    ويژوال بيسيك داراي سه عملگر ديگر نيز كه به عملگرهاي منطقي معروفند ميباشد
    And , Or , Not اين عملگرها هستند.عملگرهاي منطقي امكان ادغام دو يا چند آزمايش مقايسه اي را به صورت يك مقايسه مركب فراهم مي آورند.
    عملگر And باعث مي شود كه دو عبارت شرطي با هم تركيب شوند ونتيجه درست اين عبارت مركب تنها در صورتي محق خواهد شد كه هر دو عبارت شرطي درست باشند.
    عملگر Or نيز باعث تركيب دو عبارت شرطي مي شود ولي با اين تفاوت كه هرگاه تنها يك عبارت از ظر منطقي ارزش درست داشته باشد كل عبارت تركيبي درست خواهد بود.
    و عملگر Not هم آزمايش مقايسه اي را معكوس مي سازد.
    به مثالهاي زير توجه كنيد.

    کد:
    If (sngsals > 5000) And (intvalue > 10000) Then intsum = 50End If
    در مثال بالا زماني در متغير intsum مقدار 50 قرار خواهد گرفت كه هم sngsales بزرگتر از 5000 باشد و هم intvalue بزرگتر از 10000 کد:
    If Not (sngsals > 5000) Thenintsum = 50End If

    در مثال بالا هم زماني در intsum مقدار 50 قرار خواهد گرفت كه sngsales از 5000 بزرگتر نباشد.

    چندين انتخاب با Select Case

    حكم IF براي مقايسه داده اي در حالتي كه يك يا دو آزمايش مقايسه اي بايد صورت پذيرد بسيار مناسب است وليكن وقتي كه بايد آزمايشهائي را با بيش از دو شرط انجام دهيد نگهداري IF بسيار دشوار مي گردد.عملگرهاي منطقي نيز تنها در نوع هاي خاصي از شروط مي توانند مفيد باشند.
    در اوقات ديگر بايد چندين حكم IF..Else در درون يكديگر قرار دهيد.
    سريعترين راه ياد گيري Select Case ديدن يك مثال است.

    کد:
    Select Case intAgeCase Is < 6: MsgBox "Kindergarten"Case 6: MsgBox "1st Grade"Case 7 To 11: MsgBox "2st Grade"Case Else: MsgBox "Advanced"End Select
    ​
    در همين مثال فوق 4 قالب مختلف Select Case آمده است.
    در خط اول نوع متغير كه intAge است به حكم Select Case معرفي شده است كه بر اساس مقدار آن تصميم گيري شود.
    در خط دوم اگر سن مورد نظر كمتر از 6 باشد عبارت "Kindergarten" نمايش مي يابد.
    در خط دوم اگر مقدار صرفا 6 سال باشد عبارت "1st Grade" نمايش مي يابد.
    در خط سوم به ازاي سن بين 7 تا 11 سال عبارت "2st Grade" نمايش مي يابد.
    در خط چهارم هم اگر مقدار intAge هيچكدام از اين مقادير نباشد عبارت "Advanced" نمايش داده خواهد شد.
    و در نهايت در خط پنجم با دستور End Select قالب حكم به پايان مي رسد. توجه داشته باشيد كه بايد دستور پايان دادن به قالب Select Case حتما در پايان بدنه حكم نوشته شود.

    ​
     
  4. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    حلقه ها در ويژوال بيسيك 1
    ​

    تا كنون با منطق ترتيبي و تصميم گيري آشنا شده ايد . در ادامه آموزش مقدماتي ويژوال بيسيك 6 به تحليل و استفاده از حلقه ها در ويژوال بيسيك مي پردازيم.حلقه ها نقش مهمي در برنامه ها ايفا مي كنند زيرا در بيشتر اوقات لازم خواهد بود كه بخشهائي از از يك برنامه را براي پردازش چندين مقدار داده اي تكرار كنيد.به عنوان مثال ممكن است لازم باشد كه هزينه اي را براي تمامي مشتريان خود محاسبه كنيد.يك حلقه مي تواند مشخصات هر مشتري را بخواند و هزينه مربوط به او را محاسبه كند.

    حلقه هاي Do While

    حلقه Do While در ويژوال بيسيك به طرق مختلف مورد استفاده قرار مي گيرد.اين دستور همانند دستور IF با عباران مقايسه اي كه در درسهاي قبل فرا گرفتيد كار مي كند.يك حلقه هميشه شامل چندين و يا يك خط حكم است كه داراي خطوط و شروع و پايان مشخصي خواهد بود.قالب حكم Do While همانند زير است:

    کد:
    Do While (comparison test)Block of one or more Visual Basic statmentsLoop
    ​

    مادامي كه comparison test درست است بلوك كد به چرخيدن ادامه مي دهد.براي خروج از حلقه حتما بايد comparison test غلط شود والا برنامه گرفتار حلقه نامتناهي يعني حلقه اي كه هيچ گاه به پايان نمي رسد خواهد شد.

    نكته: براي خروج از حلقه نامتناهي از كليد هاي تركيبي Ctrl+Break استفاده كنيد.

    در مثال زير تا زماني كه مقدار i به كمتر از 5 نرسد برنامه از حلقه خارج نمي شود:

    کد:
    کد:
    Private Sub Form_Load() i = 10 Do While i > 5 i = i - 1 MsgBox i LoopEnd Sub
    ​

    دوستان عزيزم سعي كرده ام تا حد امكان مالب را بسيار ساده و با مثالهائي ساده تر تشريح كنم اميد است در اين موارد اگر سوالي برايتان پيش آمد در تاپيك مهم : طرح سوالات و مشکلات در مورد زبان های برنامه نویسی مطرح فرمائيد.

    حلقه Do Until

    برعكس حلقه Do While كه تا زماني كه نتيجه شرط درست باشد در حلقه مي ماند حلقه Do Until تا زماني آزمايش مقايسه اي غلط باشد در حلق مي ماند.
    قالب حكم Do Until مانند زير است:

    کد:
    Do Until (comparison test)Block of one or more Visual Basic statmentsLoop
    به اين مثال توجه كنيد:

    کد:
    کد:
    Private Sub Form_Load() i = 10 Do Until i < 5 MsgBox i i = i - 1 LoopEnd Sub​

    در اين مثال تا زماني كه مقدار i كمتر از 5 نشود برنامه از حلقه خارج نخواهد شد.

    كدام حلقه بهترين است؟

    از حلقه هائي استفاده كنيد كه بهترين و در جايگاه خود مناسبترين باشد.در واقع هيچ مزيت فني بين آنها وجود ندارد و تنها بسته به زمان استفاده هر كدام ممكن است در اولويت قرار بگيرند.
    ​
     
  5. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    حلقه ها در ويژوال بيسيك 2
    ​

    تا اينجاي كار با پاره اي از حلقه ها خصوصا آنهائي كه با Do در ارتباط بودند آشنا شديد .
    حال به باقي حلقه هاي مرتبط به Do و حلقه هاي ديگر مي پردازيم.

    ديگر حلقه هاي Do

    دو جور ديگر از اين نوع حلقه ها وجود دارند كه درست مانند دو حلقه قبلي كار مي كنند.
    Do...Loop While و Do Loop Until بسيار شبيه به همتاهاي خود هستند كه در قبل ديديد.اما اين قالبهاي جديد ،آزمايشهاي مقايسه اي خود را به جاي ابتداي حلقه در پائين حلقه انجام ميدهند.
    اگر حلقه با يك حكم Do آغاز گردد،يا با Loop While و يا با Loop Until خاتمه مي يابد.
    قالب Do....Loop While را مشاهده مي فرمائيد.


    کد:
    DoBlock of one or more Visual Basic statements
    (Loop while (comparison test​

    در اين حالت Do تنها به نظر مي رسد ولي اين طور نيست مقصود از Do شروع حلقه اي است كه در انتها به حكم آزمايشي Loop While مي رسد.در اين حالت و با اين نوع بدنه حلقه ، بدنه حلقه حداقل يكبار اجرا مي گردد.مادامي كه comparison test درست باقي بماند بدنه حلقه بيش از يكبار اجرا مي گردد.
    حكم Do...Loop Until دقيقا مشابه بالائي است ولي در صورت غلط بودن نتيجه آزمايش حلقه بيش از يكبار اجرا مي گردد.

    حلقه For

    حلقه For نيز براي ايجاد گردش مورد استفاده قرار مي گيرد.(از نظر شخص من بسيار كاربردي تر از حلقه هاي منتسب به Do است).يك حلقه مناسب كه كمي مشكل تر از حلقه Do است ولي هنگامي كه به آن تسلط يافتيد در پياده سازي آن مشكل كمي خواهيد داشت.
    يك حلقه For هميشه با حكم For آغاز مي گردد و با حكم Next خاتمه مي يابد.قالب حلقه For به شكل زير است:
    کد:
    For Countvar= Startval To Endval [step Incrementval]Block of one or more Visual Basic statementsNext
    مثالي ساده مي تواند در نشان دادن نحوه كار حلقه For كمك نمايد.
    در اين مثال مجموع اعداد 1 تا 10 محاسبه مي گردد.

    کد:
    کد:
    Private Sub Form_Load() intsum = 0 For intNumber = 1 To 10 intsum = intsum + intNumber Next MsgBox intsumEnd Sub

    intNumber در اين مثال در واقع CounterVar در قالب حلقه است.StartVal مي تواند يك عدد يك عبارت و يا يك متغير باشد.10 به جاي آن نشسته است.EndVal هم مي تواند يك عدد يا يك عبارت باشد .در اينجا خبري از Step نيست .در قالب حكم For استفاده از Step اختياري است كه اگر مقدار آنرا مشخص نكنيد ويژوال بيسيك مقدار 1 را براي آن برمي گزيند.بنابراين هر دو حكم For زير كار يكساني انجام مي دهند.
    For intNumber= 1 To 10
    For intNumber=1 To 10 Step 1

    ​
    مجددا به مثال بر مي گرديم.در ابتداي برنامه مقدار intsum برابر 0 قرار مي گيرد تا كاملا جمع مقادير مقدار اوليه اي نداشته باشد.حلقه با حكم For آغاز مي گردد و در ابتدا مقدار IntNumber برابر 1 قرار مي گيردو اين مقدار در بدنه حلقه با مقدار intsum كه صفر است جمع مي شود و با رسيدن به حكم Next چون هنوز شرط حلقه به پايان نرسيده است (حلقه بايد به مقدار intNumber تا 10 يكي يكي اضافه كند).بنابراين دوباره به ابتداي حلقه بر مي گردد و اين بار مقدار intnumber را برابر 2 قرار مي دهد و اين مقدار را با intsum كه الان 1 است جمع مي كند و عدد 3 را مجددا در intsum قرار مي دهد.حلقه تا زماني كه مقدار intNumber به 10 برسد به همين روال ادامه مي دهد و پس از رسيدن به 10 و جمع بست مقدار نهائي و قرار دادن ان در intsum ازحلقه خارج گشته و به وسيله يك دستور پياميMsgBox مقدار نهائي intsum را به كاربر نمايش ميدهد.

    شايد اين سوال پيش بيايد كه به راحتي با يك خط دستور به شكل زير مي توان به جواب رسيد و نيازي به اين همه كد نويسي و استفاده از حلقه نيست:
    intsum=1+2+3+4+5+6+7+8+9+10
    اما اگر تعداد اعداي كه خواستيم مجموع آنها را حساب كنيم 1000 بود به چه شكل مي توانستيم تمام اعداد را بنويسيم پس مي بينيم كه استفاده از حلقه For كار را آسان مي كند.

    اگر براي Step مقدار منفي در نظر بگيريد حلقه زير پنج بار صداي بوق بلند گوي كامپيوتر شما را در ميآورد:

    کد:
    کد:
    For intCtr = 5 To 1 Step -1 BeepNext
    نكته: دستور Beep سبب بوق زدن بلند گوي كامپيوتر مي شود.

    نكته مهم : شما به راحتي مي توانيد با دستور Exit For از حلقه For خارج شويد.

    در اين رابطه به كد زير دقت كنيد:
    کد:
    کد:
    For i = 1 To 10 If i < 5 Then Exit For End IfNext
    در اين مثال به محض اينكه مقدار i از 5 كوچكتر شود از حلقه خارج مي شود.
    به ترتيب استفاده از حلقه For، If ،End IF و Next دقت كنيد.
    ​