البته چون من نميدونم شما چقدر با محيط vb آشنا هستيد سعي ميكنم كه اولا مثال ها در حد خيلي خيلي ساده باشه تا درك ساختارها راحت تر باشند و ثانيا با كمترين ابزار دستورات قابل رويت باشند.
دستورهاي ساختاري:
1- دستورهاي شرطي
2- دستورهاي تكرار
گاهي در برنامه ،شرايطي براي اجراي بعضي از برنامه ها وجود دارد.به عبارت ديگر اگر شرايطي فراهم شود بايد دستور يا دستورهايي اجرا گردند و در غير اين صورت (برقرار نبودن شرط) نبايد اجرا شوند.
دستورهاي شرطي:
1- دستور if – then
2- دستور if –then-else
3- دستور case
دستور if-then وend if
و دستور else if
شكل كلي اين دستور به صورت زير مي باشد. Then شرط if
اگر دقت كني ميبيني اين دستور به زبان ساده ميگه اگر شرط برقرار بود سپس ......
مثال1: برنامه بنويسيد كه بررسي كند اگر اسم نوشته شده در text1 با اسم نوشته شده در text2 برابر پيغام equal را چاپ نمايد.
Please Login or Register to see this codeحال اگر شرط برقرار نبود داخل label هيچ چيزي نوشته نميشود. و خط فرمان به دستورات بعد از end if پرش مي كند و دستورات بعد از آن را اجرا ميكند.
مثال2 : اگر عدد وارد شده كوچكتر از 10 بود ، پيغام blow ، اگر بزرگتر از 10 بود پيغام abov را چاپ كند.
Please Login or Register to see this codeنحوه اجرا: شرط اول بررسي ميشود در صورتي كه برقرار نباشد بدون وقفه به دستور بعداز end if پرش ميكند و شرط دوم را بررسي ميكند. اما براي اين كار مجبور شديم از دو دستور if استفاده كه علاوه بر طولاني شدن برنامه از زيبايي اون نيز كاسته خواهد شد.
بنابراين كمي ساختار را عوض ميكنيد و ميگيم اگر عدد كوچكتر از 10 بود پيغام blow در غيراينصورت (يعني عدد بزرگتر از 10 بود) ، پيغام abov را چاپ كن.
تنها فرقي كه در برنامه ايجاد ميشود اين است كه ديگر شرط ها ،توسط if هاي جداگانه محاسبه نميشوند بلكه با يك if و كلمه else دو شرط بررسي ميشود. و اصلا نيازي نيست كه فكر كني كه از كدوم راه برنامه رو بنويسي معمولا راه دوم رايج ترين حالت بررسي شرط هست.
مثال3 : بررسي كنيد عدد وارد شده زوج هست يا فرد.
Please Login or Register to see this codeتوضيح: اگر عدد وارد شده به 2 قابل قسمت بود زوج در غير اين صورت فرد .
حال ميدانيم كه عدد صفر نه زوج هست و نه فرد ، و اگر در همين برنامه عدد صفر را وارد كنيم به ما خواهد گفت كه عدد زوج است و اين با قانوني كه تعريف كرديم مطابقت ندارد پس بايد اول از هر چيز بررسي كنيم كه عدد وارد شده صفر هست يا نه .اگر بود چاپ كند "number is not even or odd" در غير اين صورت بررسي زوج يا فرد بودن. پس برنامه را به شكل زير تغيير ميدهيم.
Please Login or Register to see this codeدستور select و end selectاگر تعداد شرط هاي يك مسئله زياد باشد ،به جاي استفاده از if –else از دستور select استفاده ميكنيم.
كلاهنگامي كه بخواهيم براساس مقادير مختلف يك متغير يا يك عبارت ،تصميم گيري هاي مختلفي داشته باشيم،از select استفاده ميكنيم.شكل كلي اين دستور به صورت زير هست:
متغير يا عبارت select case
مقادير 1 case
مجموعه دستورهاي 1
مقادير 2 case
مجموعه دستورهاي 2
.
.
.
.
Case else
End select
نحوه اجراي دستور select : ابتدا عبارت يا متغير موجود در select case ارزيابي مي شود ، اگر مقدار اين عبارت يا متغير با يكي از مقادير 1 براير باشد ،مجموعه دستورهاي 1 اجرا ميشود و select خاتمه مي يابد.اگر مقدار عبارت يا متغير با يكي از مقادير 2 برابر باشر ، مجموعه دستورهاي 2 اجرا ميشودو select خاتمه مي يابد و.....
قسمت case else در اين دستور اختياري هست و در صورتي كه نوشته نشود ،اگر مقدار عبارت ، با هيچ يك از مقادير ذكر شده براير نباشد ،هيچ دستوري اجرا نمي شود و كنترل از select خارج ميشود.
مثال: برنامه بنويسيد كه يكي از چهار عملگر اصلي +،-،* و / را به همراه دو عدد صحيح از وردي دريافت و سپس اين عملگر ها را روي اين دو مقدار اعمال كند ،در صورتي كه كاراكتري غير از اين چها عملگر وارد شده باشد ، پيغام خطايي را نمايش دهد.
البته تو vb دستوري مثل select زياد مرسوم نيست .مثلا براي اين چهار عملگر قشنگتر اين هست كه چهار تا command قرار بديم و براي هر كدوم كد مناسب را بنويسيم يا راههاي ديگر . و فقط براي آشنايي شما با اين دستور به اين شكل استفاده ميكنم.
Please Login or Register to see this codeدر ساختار select ميتوان در قسمت مقادير ،بازه اي از مقاديررا بررسي كرد يا مقداري را با عبارت مورد نظر مقايسه نمود:
>مقدار دوم < to >مقدار اول< case
>مقدار< >عملگر مقايسه اي< case is
مثال : برنامه اي بنويسيد كه عدد صحيح مثبتي را از ورودي دريافت و مشخص كند كه عدد يك ، دو ، سه يا بيشتر است.
Please Login or Register to see this codeخوب rampco جان اميدوارم تا اينجا با اين دستورات مشكل نداشته باشي. ولي در بين دستورات شرطي دستور if اهميت بيشتري دارد .
اما زماني در برنامه نياز داريم كه يك عمل خاص بارها تكرار شود. در اينجا از حلقه ها استفاده ميكنيم .اگرتعداد دفعات تكرار مشخص بود از حلقه for و اگر تعداد دفعات مشخص نبود از حلقه while
حلقه هاي تكرار:
1- حلقه for…next
2- حلقه while…wend
3-حلقه do…loop
حلقه for….next افزايشي
در اين حلقه ابتدا مقدار اوليه در متغير(شمارنده حلقه ) قرار مي گيرد و سپس با مقدار نهايي مقايسه ميشود .اگر مقدار متغير از مقدار نهايي كمتر يا مساوي دستور اجرا مي گرددو سپس يك واحد به مقدار متغير افزوده مي شود ، و مجددا عمل مقايسه با مقدار نهايي انجام ميگيرد و در صورتي كه هنوز مقدار متغير از مقدار نهايي كمتر يا مساوي باشد دستور اجرا مي گردد و الا ديگر دستور اجرا نميشود و حلقه قطع ميشود.
شكل كلي اين دستور :
Please Login or Register to see this codeفرم ديگر حلقه
Please Login or Register to see this codeاگر گام حركت ذگر نشود شمانده يكي يكي اقزايش پيدا ميكنه . ولي اگر بخواهيم مثلا 2تا 2تا حركت كنيم بايد در حلقه به جاي گام حركت عدد مورد نظر رو بنويسيم.
اگر بخواهي مجموعه دستورات در داخل حلقه بعد از برقراري شرط اتفاق بيفته فرم كلي دستورا به شكل زير ميشه
Please Login or Register to see this code اگر بخواهي بعد از برقراري شرطي حلقه اجرا شه if رو قبل از حلقه قرار ميديم.
و فرم هاي ديگه .....كه با توجه به برنامه ميشه حلقه هارا طراحي كرد.
اما درمورد قانون حلقه :
1- تعداد دفعات تكرار اين حلقه با مقادير اوليه و نهايي شمارنده حلقه و گام حركت تعيين ميشود.
2- اين مقادير مي توانند اعداد صحيح مثبت ، منفي و اعشاري و يا حاصل يك عبارت محاسباتي باشند.
3- اگر گام حركت ،برابر با عدد يك باشد،نيازي به نوستن آن نيست .
4- بين دو عبارت for، next مجموعه اي از دستورها و عبارات نوشته مي شوند كه به عنوان بدنه حلقه شناسايي مي گردد و به تعداد دفعات مشخص اجراي آنها تكرار مي شود.
5- اگر در داخل حلقه ميخواهيم به محض برقراري شرط از حلقه خارج شويم مي توانيم از دستور exit for استفاده كنيم.
نكته مهم.
تعداد دفعات تكرار:
اگر مقدار اوليه بزرگتر از مقدار نهايي باشد ، حلقه تكرار نخواهد شد.
اگر مقدار اوليه مساوي مقدار نهايي باشد ، حلقه يكبار تكرار خواهد شد.
اگر مقدار اوليه از نهايي كچكتر باشد ، انگاه تعداد تكرار مي شود، 1+مقدار اوليه – مقدار نهايي
مثال از حلقه for افزايشي:
برنامه اي بنويسيد از كه تعداد مقسوم عليه هاي عدد وارد شده را محاسبه كند..
Please Login or Register to see this codeتوضيح: براي بدست آوردن تعداد مقسوم عليه هاي يك عدد بايد آن عدد را از يك تا خود عدد تقسيم كنيم كه در اينجا چون حلقه يكي يكي اضافه ميشه پس مي تونم از خود متغير شمارنده براي عمل تقسيم استفاده كنم ، اگر باقيمانده صفر شد در يك متغيري تعداد را شمارش كنيم يعني در صورتي كه با قيمانده صفر شد به متغير يكي اضافه كنيم كه اينجا اين متغير شمارنده b هست.
فرض كن عدد وارد شده 4 هست.
نحوه اجرا: ابتدا I=1 و كوچكتر از a پس حلقه اجازه اجرا دارد .
اگر باقيمانده a بر I برابر صفر شد سپس
به متغير b يكي اضافه كن.
I بعدي
باردوم: ابتدا به شمارنده يكي اضافه ميكنه سپس بررسي ميكنه I از a كوچكتر هست يانه .i=2 ، بله كوچكتر هست
A تقسيم بر I برابر صفر مي شود پس در نتيجه شرط برقرار هست و به b يكي اضافه ميكنه پس حالا مقدار b برابر 2 هست.
بار سوم: ابتدا به شمارنده يكي اضافه ميكنه سپس بررسي ميكنه I از a كوچكتر هست يانه . 1=3 ، بله كوچكتر هست
A تقسيم بر I برابر صفر نمي شود پس در نتيجه شرط برقرار نيست و به b هيچ مقداري اضافه نمي شود.
بار چهارم: ابتدا به شمارنده يكي اضافه ميكنه سپس بررسي ميكنه I از a كوچكتر هست يانه . i=4، خير اين بار مساوي هست پس ميتونه اجرا بشه.
تقسيم بر I برابر صفر مي شود پس در نتيجه شرط برقرار هست و به b يكي اضافه ميكنه پس حالا مقدار b برابر 3 هست.
.بار پنجم : ابتدا به شمارنده يكي اضافه ميكنه سپس بررسي ميكنه I از a كوچكتر هست يانه . i=5 ، خير اين بار كوچكتر هست پس نميتونه اجرا بشه. و تعداد تكرار حلقه در اين مثال برابر 4 و تعداد مقسوم عليه ها برابر 3 .
مثال: برنامه اي بنوسيد كه از 1 تا 10 ، ضرب اعداد زوج را چاپ كند.
Please Login or Register to see this codeدر اينجا مقدار اوليه b را برابر يك قرار مي دهيم چون در غير اين صورت vb مقدار اوليه رو برابر صفر قرار ميده و چون ضرب اعداد زوج را خواسته ، پس شمارنده از اولين عدد زوج شروع مي شود .
For كاهشي:
فقط step مقدار منفي ميگيره و جاي مقدار نهايي با اوليه عوض ميشه.
Please Login or Register to see this codeحالا من مثال ميدم ، لطفا شما حل كنيد.
برنامه اي بنويسيد كه فاكتوريل عدد وارد شده رو محاسبه كند. اگر عدد وارد شده صفر يود ، طبق قانون فاكتوريل عدد 1 را چاپ كند . ( هم با افزايشي هم با كاهشي)
5!=1*2*3*4*5=120
شكل كلي حلقه for همين بود. در رابطه با نوشتن برنامه و مثال هاي اون ترجيح ميدم اگر برنامه هايي داريد كه با حلقه for كار مي كنه و شما در نوشتن يا مفهوم اون دچار مشكل هستيد مطرح كنيد تا بنده در حد توانم شمارو راهنمايي كنم.
حلقه تكرار while…wend
هنگامي كه تعداد دفعات تكرار مجموعه اي دستورات نامعين باشد ، نميتوانيم از حلقه for…next استفاده كنيم و بايد حلقه ديگري مثل while….wend را به كار برد.
شكل كلي دستور
Please Login or Register to see this codeاين حلقه تكرار تا زماني كه شرط مورد نظر درست باشد ،تكرار و اجرا خواهد شد.اما به محض اينكه شرط نقض شد ،حلقه خاتمه يافته ،دستور بعد از wend اجرا مي شود.
مثال: برنامه اي بنويسيد كه فاكتوريل عدد را حساب كند.
Please Login or Register to see this code
در اين حلقه fact رو به اين صورت محاسبه ميكنه:
5!=5 * 4 * 3 * 2 * 1
يعني تا زماني كه n بزرگتر از 1 يك هست حلقه ادامه پيدا ميكنه .
به بيان ساده تر:
فرض كن عدد وارده 3 باشه .
پس در بررسي while ، n بزرگتر از 1 هست پس حلقه اجازه اجرا داره
در اين مرحله fact=1*3
در اين مرحله n=2
كنترل برنامه به ابتداي برنامه مي ره.
وقتي به ابتداي حلقه بر ميگرده دوباره شرط رو بررسي ميكنه
n بزرگتر از 1 هست پس حلقه اجازه اجرا داره
در اين مرحله مقدار قبلي fact كه 3 بوده در مقدار n ضرب ميشه. fact=3*2
در اين مرحله n=1
كنترل برنامه به ابتداي برنامه مي ره.
وقتي به ابتداي حلقه بر ميگرده دوباره شرط رو بررسي ميكنه
n بزرگتر از 1 هست ، نه .... چون مساوي يك هست پس حلقه اجازه اجرا نداره
پس از حلقه خارج مي شويم.
نكته :اگر درقسمت while ، شرط رو به اين صورت مينوشتيم while n>=1 در اين صورت حلقه يك بار ديگر اجازه اجرا را پيدا مي كرد.