تز gl/l (13)

خرید بک لینک

2 الگوریتم ها

هر مسأله کامپیوتری میتواند با اجرای مجموعه ای از اعمال با ترتیبی خاص حل شود .یک رویه برای حل یک مسأله بر حسب :

اعمالی که اجرا میشوند .

ترتیبی که این اعمال اجرا می گردند.

الگوریتم نامیده میشود.مثالی که در ادامهمی آید، اهمیت تشخیص صحیح تر بیت اجرای اعمال راتشریح میکند.الگوریتم طلوع آفتاب و برخاستن از خواب را در نظر بگیریدکه در زیر می آید و جوانی از خواب بیدار شده وبه سر کار می رود:(1)از خواب بلند شو،(2)پیژامه را در آور،(3)یک دوش بگیر،(4) لبلس بپوش،(5)صبحانه بخور،سوار ماشین شو و به سر کار برو . این روتین باعث انجام کاری می شود که به خوبی تدارک یافته است تا تصمیمات مهمی اخذ گردد.
فرض کنید که مراحل مشابهی را به تر تیبی کاملا" متفاوت انجام دهید(1)از رختخواب خارج شو،(2)پیژامه رادر آور،(3)لباس بپوشف(4) یک دوش بگیر،(5)صبحانه بخور،(6)سوار ماشین شو و به سرکار برو. در این مورد،انجام کار توسط ما بیانگر کاری سرسری است .

اهمیت تعیین دقیق ترکیب ظهور اعمال، برای برنامه های کامپیوتری به کار می رود. منظور از کنترل برنامه وظیفه مرتب سازی صحیح عبارت یک برنامه است. در این فصل ، بررسی قابلیتهای کنترل برنامه Visual Basicراشروع می کنیم.

3-3شبه کد

شبه کد یک زبان مصنوعی و غیر رسمی است که به برنامه نویسان کمک میکند تا الگوریتم ها را برنامه نویسی کنند.شبه کدی که ما ارائه میدهیم، برای برنامه نویسی الگوریتم هایی مفید است که به بخشهای ساخت یافته برنامه های Visual Basicتبدیل خواهند شد.شبه کد راحت و کاربر پسند است ویک زبان برنامه نویسی واقعی کامپیوتر به حساب نمی آید. شبه کد درکامپیوتر اجرا نمیشود. درعوض به برنامه نویس نطیر Visual Basicراجع به آن فکر کند در این فصل، نمونه ای Visual Basicراجع به آن فکر کند. در این فصل، نمونه هایی متعددی از الگوریتم های شبه کد را فراهم کرده ایم.

شیوه شبه کدی که ما ارائه میدهیم تنها متسکل از کاراکترهاست،بنابراین برنامه نویسان میتواند آنرا با استفاده ازیک برنامه ویراستار، به راحتی تایپ کنند. برنامه نویسان می توانند برنامه های شبه کد فراهم شده را به سادگی وبه دقت به برنامه های Visual Basicمتناظر تبدیل نماید.در بیشتر موارد،تبدیل به سادگی با جای گزینی عبارات شبه کد با معادلهای Visual Basicآنها انجام می شود.

شبه کد بطور طبیعی تنها عبارت اجرایی را توصیف می کند (اعمالی که هنگام تبدیل شیه کد به Visual Basicواجرای آنها انجام می شوند.)معرفی ها عبارات اجرایی نیستند. مثلا"،معرفی:

Dim number As Integer

کامپایلر رااز نوع متغیر iمطلع می نمایدوکامپایلر را راهنمایی می کند تا فضایی را در حافظه برای این متغیر رزرو کند.این معرفی باعث هیچ عملی از جمله ورودی،خروجی یا یک محاسبه نمی شود،تا هنگام اجرای برنامه نوسیان متغیرها واهداف آنها رادر ابتدای یک برنامه شبه کد فهرست میکنند.

3-4ساختارهای کنترلی

طبیعتا"،عبارات در یک برنامه، یکی پس ازدیگری وبه ترتیب ظهور در برنامه اجرا میشوند.این موضوع اجرایی ترتیبی نام دارد. عبارات مختلفVisual Basicبه برنامه نویسان امکان می دهند تاعبارت بعدی راکه ممکن است در توالی نباشد جهت اجرا مشخص کنند. یک انقال کنترل زمانی روی میدهد که عبارتی غیر از عبارت بعدی در برنامه اجرا شود.

در طی دهه 1960،مشخص شدکه استفاده در هم وبر هم از انتقالهای کنترل، باعث به وجود آمدن مشکلاتی برای گروههای نرم افزار نویسی می شود.این مشکل gitoبو که در برخی از زبانهای برنامه نویس اجازه می داد تا یک انتقال کنترل رابه یکی از محدوده های گسترده مقاصد ممکن در برنامه تعیین کند این امر باعث می شد تا سازماندهی برنامه هاکاملا"از بین برود و دنبال کردن آنها مشکل شود.تصور برنامه نویسی ساخت یافته تقریبا" معادل با حذف gotoبه وجود آمد.

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

کاربوهم و ژاکوپینی نشان داد که تمام برنامه ها را می توان بر اساس تنها ساختار کنترلی نوشت که عبارتند از:ساختار ترتیبی،ساختار انتخاب و ساختار تکرار. ساختار ترتیبی که در Visual Basicتعبیه شده است ،کامپیوتر عبارات Visual Basicرایکی پس از دیگری،با ترتیبی که در برنامه مشخص شده است، اجرا میکند،مگراینکه بجای دیگر هدایت شود.قطعه فلوچارت شکل1-3یک ساختار ترتیبی مناسب را نشان میدهد که دو محاسبه به ترتیب انجام میشوند.

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

شکل

هر چند اغلب برنامه نویسان شبه کد راترجیع می دهند،با این حال فلوچارت ها همانند شبه کدها،اغلب برای برنامه نویسی و ارائه الگوریتم ها مفید می باشند.فلوچارت ها نحوه عملکرد ساختارهای کنترلی را بطور واضع نشان میدهند،یعنی همگی مااز آنها در این متن استفاده می کنیم.خواننده باید شبه کد واراٸه های فلوچارت هر ساختار کنترلی رابه دقت مقایسه کند.

قطعه فلوچارت شکل 1-3رابرای ساختار درنظر بگیرید.از نماد مستطیل که نماد عمل نیزنامیده می شود،برای نشان دادن هر نوع عملی که شامل یک عملیات محاسباتی یا ورودی/خروجی است،استفاده کنید.خطوط جریان در شکل ترتیبی را نشان می دهندکه اعمال انجام میشود(ابتداgrade به totalاضافه می شود،سپس،با counter جمع می گردد).دریک ساختار ترتیبی می توانیم هرتعدادعملی داشته باشیم هرجایی دریک ترتیب که یک عمل می تواندقرار گیرد،چندین عمل نیز می تواند قرار گیرند.

هنگامی یکفلوچارت را رسم می کنیم که الگوریتم کا ملی را نشان دهد، یک نماد دایره حاوی کلمه Beginاست که اولین نماد مورد استفاده می باشد،یک نماد دایره که حاوی کلمهEnd است،محل خاتمه الگوریتم را نشان میدهند.هنگامی که تنها بخشی از یک الگوریتم را رسم می کنیم (همانند 1-3)،نمادهای دایره از نمادهای دایره کوچک که نمادهای متصل کننده نیز نامیده میشوند،به دلخواه حذف می گردند.

شاید مهم ترین نماد فلوچارت سازی ،نمادلوزی باشد که تصمیم گیری نیز نامیده میشود و انجام یک تصمیم رانشان می دهد.نماد لوزی رادر بخش 5-3بررسی می کنیم. Visual Basicسه نوع ساختار انتخاب را فراهم می کند که در این فصل و فصل بعد به آنها می پردازیم.ساختار انتخاب If /Thenدر صورت درست بودن یک شرط، عملی را انجام می دهد(انتخاب می کند)یا در صورت نادرست بودن شرط،از عمل صرف نظر مینماید.ساختار انتخاب If/Then/Elseدر صورت درست بودن شرط،عملی را انجام می دهد ودر صورت نادرست بودن شرط ،عمل دیگری را انجام می دهد. ساختار انتخاب Select Caseکه در فصل4 بررسی می شود.یکی از چندین عمل را بسته به مقدار یک عبارت انجام میدهد.

ساختار If/Then ساختار تک انتخاب نیز نامبرده می شود،زیرا یک عمل (یا گروهی از اعمال)راانتخاب کرده یا از آن صرف نظر می کند.ساختار If/Then/Elseساختار انتخاب دوبل نامیده می شود،زیرا بین دو عمل متفاوت (یا گروههایی از اعمال) انتخاب می کند. ساختار Select Caseساختار چند انتخاباتی نامیده می شود،زیرا از بین اعمال مختلف (یا گروههایی از اعمال )انتخاب می کند.

Visual Basicهفت نوع ساختار تکرار را فراهم کرده است(While،While/Loo Do

ForEach/Next For/Next Do/Loop Until Do/Loop While).هریک از کلمات کلیدی Each Next For Loop UntiI Do While Case Select End Then Ifو کلمات کلیدی Visuai Basicهستند(شکل2-3)مجموعه کاملی از کلمات Visual Basicرادر سراسر این کتاب بررسی می کنیم.مجموعه کلمات کلیدی Visual Basicبیشتر لز سایر زبانهای برنامه نویسی معمول است.
Visual Baisc Keyword

And Alias AddressOf AddHandlar

Assembly As Ansi AndAlso

Byte ByRef Boolean Auto

Catch Case Call ByVal

CDare CChar CByte CBool

CInt Char CDbl CDec

COnst CObj CLng Class

CType CStr CSng CShort

Default Declare Decimal Date

Do DirectCast Dim Delegate

Elseif Else Each Double

Error Erase Enum End

Finally False Exit Event

Get Function Frjend For

If Handles GoTo GetType

Inherits In Imports Implements

Lib Is Interface Integer

Me Loop Long Like

MustOverride MustInherit Module Mod

New Namespace MyClass MyBase

NotInheritable Nothing Not Next

Option On Object NotOverridable

Overloads OrElse Or Optional

Preserve ParamArray Overrides Overridable

Public Protected Property Private

REM ReDim ReadOnly RaiseEvent

Select Retu Resume RemoveHandler

Short Shared Shadows Set

Stop Step Static Single

Synclock Sub Structure String

True To Throw Thene

Until Unicode TypeOf Try

WithEvents With While When

Xor WriteOnly

Visual Basic.NET
The following are retained as keywords althottgh they are no longer supprted in

Wend Variant Let

شکل 2-3کلمات کلیدیVisual Basic

شکل 3-2کلمات کلیدی Visual Basic

Visual Basicیازده ساختار کنترلی دارد(ترتیب،سه نوع انتخاب و هفت نوع تکرار).هربرنامه درصورت لزوم با ترکیب تعدادی ازهر یک از این ساختارهای کنترلی تشکیل می شود.هر ساختار کنترلی،همانند ساختار ترتیب شکل3-1،بادو نماد دایره کوچک فلوچارت می شود که یکی نقطه ورودی ساختار کنترلی و دیگری نقطه خروجی است.

ساختارهای کنترلی تک ورودی /تک خروجی(ساختارهای کنترلی که با اتصال نقطه خروجی یک ساختار کنترلی به نقطه ورودی بعدی به یکدیگر متصل می شوند )ساختار برنامه ها را ساده می سازند.این مسأله شبیه به پشت بندی بلوکهای سازنده است.بنابراین ما آن را پشت بندی ساختارکنترل می نامیم. تنها یک روش دیگر در مورد ساختارهای کنترلی وجود دارد که ممکن است به هم متصل شوند وآن ازطریق تودر تو کردن ساختار کنترلی است که یک ساختار کنترلی می تواند در ساختار دیگری قرارگیرد.بنابراین،الگوریتم ها در برنامه های Visual Basicازیکی از این یازده نوع متفاوت ساختارهای کنترلی مرکب به دو روش مزبور ساخته می شوند.

5-3ساختار انتخاب If/Then

دریک برنامه،ساختار انتخاب از بین رشته های مختلفی از اعمال انتخاب می شود.مثلا"فرض کنید که نمره قبولی در یک امتحان ،60(از100)باشد کد نشان می دهد که آیا شرط نمره دانش آموز بیشتر یا مساوی 60است ،درست یا نادرست می باشد، ااگر شرطی درست باشد،آن گاه قبول چاپ می شود و عبارت شبه کد بعدی در ترتیب انجام می گیرد.(توجه داشته باشید که شبه کد یک زبان برنامه نویسی واقعی نیست). اکر شرط نادرست باشد،از عبارت چاپ صرف نظر می شود و عبارت بعدی شبه کد در ترتیب انجام می شود توجه داشته باشید که خط دوم این ساختار انتخاب،دندانه ای است. حالت دندانه ای اختیاری است.اما به شدت توصیه می شود،زیرا بر ساختار موروثی برنامه های ساخت یافته تاٴ کیدمی کند.عبارت If/Thenشبه کد قبلی در Visual Basicرا میتوان به این صورت نوشت:

If studentGrade>=60Then

Console.WriteLine(Passed)

End If

توجه داشته باشید که کد Visual Basicمتناظربا شبه کد است،و نشان می دهد که چگونه شبه کد می تواند به عنوان یک ابزار برنامه نویسی مفید واقع شود.عبارت بدنه ساختار If/Thenرشته کاراکتری Passedرابه عنوان خروجی به پنجره کنسول می فرستد.توجه داشته باشیدکه عبارت خروجی در این ساختار انتخاب دارای تورفتگی است.این تورفتگی اختیاری است،اما اکیدا" توصیه میشود زیرابرسازماندهی موروثی برنامهای ساخت یافته تاکید دارد.

کامپایلرVisual Basicازکاراکترهای فضای سفید از قبیل فاصله ها ،ratbوخطوط جدید که برای حالت دندانه ای وفاصله گذاری عمودی استفاده می شوند صرف نظر می کند،مگر اینکه کاراکتورها در رشته ها باشند.هر چند،برخی کاراکترهای فضای سفید از قبیل خط جدید در انتهای یک عبارت و فاصله بین نام متغیرها و کلمات کلیدی ضروری هستند.برنامه نویسان کارکترهای فضای سفید اضافی را برای بهبود و خوانایی برنامه اضافه می نمایند.

در فرمت چند خطی،تمام عبارات در بدنه If/Thenدر صورتی اجرا می شوند که شرط درست باشد.در فرمت یک خطی،تنهاعیارتی که بلافاصله بعد از کلمه کلیدی Thenقرار دارد. در صورت درست بودن شرط اجرا می گردد. هر چند نوشتن ساختار انتخاب If/Thenبه فرمت آخری باعث صرفه جویی در فضامیشود،بااین حال اعتقادمابراین است که سازماندهی ساختار،هنگام استفاده ازفرمت چندخطی واضح تراست.

باوجوداینکه خطاهای دستوری توسط کامپایلرتشخیص داده میشوند،خطاهای منطقی نظیرخطاهایی که هنگام استفاده ازعملگرمقایسه ایی نادرست درشرط یک ساختارانتخاب بوجودمی آیندتنهادرزمان اجرابربرنامه تاثیرمی گذارند.یک خطای منطقی مهلک باعث میشودتابرنامه موجب اشکال وخاتمه زودرس شود.یک خطای منطقی غیرمهلک اجرای برنامه راخاتمه نمی دهدولی باعث تولیدنتایج نادرست توسط برنامه میگرددفلوچارت شکل3-3ساختارIf/Thenتک انتخابی رانشان میدهد.این فلوچارت حاوی مهمترین نمادهای ساخت فلوچارت است(نمادتصمیم گیری یالوزی)که انجام یک تصمیم گیری رانشان میدهد.نمادتصمیم گیری حاوی یک شرط است که میتواندtrueیاfalseباشدنمادتصمیم گیری دوخط جریان داردکه ازآن خارج می شوند.یکی تصمیم گرفته شده هنگام درست بودن شرط موجوددرنمادرانشان می دهدودیگری هنگام نادرست بودن شرط را.

شکل

توجه داشته باشیدکه ساختارIf/Thenنیزیک ساختارتک ورودی/تک خروجی است.فلوچارتهابرای ساختارهای کنترلی باقیمانده نیزحاوی تنهانمادهای مستطیل میباشد(بجزنمادهای دایره کوچک وخطوط جریان)تاانجام اعمالی رانشان دهندوشامل نمادهای لوزی هستندتاانجام تصمیم گیری هارانشان می دهند.این مدل عمل/تصمیم گیری برنامه نویسی است که برآن تاٴکیدمی ورزیم.برای درک بهترفرآیندبرنامه نویسی ساخت یافته،می توانیم11صندوق رادرنظربگیریم که هریک حاوی ساختارهای کنترلی برای تنهایکی ازاین11نوع میباشندساختارهای کنترلی درهرصندوق خالی است.هیچ چیزی درمستطیل هایالوزی نوشته نشده است.وظیفه برنامه نویس اسمبل کردن یک برنامه بااستفاده ازهرتعدادساختارکنترلی است که الگوریتم درخواست می کند.این ساختارهای کنترلی رابه یکی از2روش ممکن(پشته بندی یاتودرتوکردن)ترکیب کرده،آنگاه اعمال وتصمیمات رابه روشی مناسب برای الگوریتم پرکنیم.درآینده انواع مختلف روشهای نوشتن اعمال وتصمیمات بحث خواهیم کرد.

6-3ساختارانتخابIf/Then/Else

ساختارانتخابIf/Then/Else عملی راانجام می دهدکه تنهاهنگام درست بودن شرط انجام می گیرددرغیراین صورت،ازعمل صرف نظرمیگرددساختارانتخابIf/Then/Else به برنامه نویس اجازه میدهدتااعمال مختلف راجهت انجام شدن تعیین کند،البته هنامی که شرط درست باشدنه اینکه شرط نادرست باشدمثلا"عبارت شبه کد

اگرنمره دانش آموزبیشتریامساوری60است

"قبول" راچاپ کن

درغیراین وصورت "مردود"راچاپ کن

درصورتی که نمره دانش آموزبیشتریامساوی60باشد،قبول راچاپ می کندودرصورت کمتربودن نمره وی از60،مردودراچاپ می کنددراین مورد،پس ازرخ دادن چاپ عبارت شبه کدکه بعدی به ترتیب انجام میشود.ساختارIf /Elseشبه کدقبلی رامی توان بصورت زیرVisual Basicنوشت:

If studentGrade>=60Then

Console.WriteLine(Passed)

Else

Console.WriteLine(Failed")

End If

توجه داشته باشیدکه بدنه عبارت Elseنیزدندانه ای است بنابراین بابدنه عبارتIfتراز میشود.

قرارداددندانه ای بودن منتخب شمابایددرسراسربرنامه هابه دقت،بکاررودخواندن برنامه هاکه ازقرارداددندانه ای واحدی استفاده نمی کندمشکل است.

فلوچارت شکل4-3جریان کنترل رادرساختارIf/Then/Elseنشان میدهدتوجه داشته باشیدکه تنهانمادهای مورداستفاده درفلوچارت(به اضافه دایره های کوچه وپیکان ها)مستطیل هابرای اعمال ویک لوزی برای تصمیم گیری است

شکل4-3

ساختارهایIf/Then/Elseتودرتومیتوانندبرای چندین حالت باقراردادن ساختارهای If/Then/Else درداخل ساختارهایIf/Then/Elseدیگرآزمایش شوند.مثلا"عبارت شبه کد زیرAرابرای نمرات بیشتریامساوی با90،Bرابرای نمرات محدوده80تا89،Cرابرای نمرات محدوده70تا79،Dرابرای نمرات محدوده60تا69،Fرابرای سایرنمرات چاپ میکند:

اگرنمره دانش آموزبیشتریامساوی90بود

"A"راچاپ کن.

درغیراین صورت:

اگرنمره دانش آموزبیشتریامساوی80بود

"B"راچاپ کن.

درغیراین صورت

اگرنمره دانش آموزبیشتریامساوی70بود

"C"راچاپ کن.

درغیراین صورت

اگرنمره دانش آموزبیشتریامساوی60بود

"D"راچاپ کن.

این شبه کدرامیتوان درVisual Basicبه این صورت نوشت:

If studentGrade>=90Then

Console.WriteLine("A")

Else

If studentGrade>=80Then

Console.WriteLine("B")

Else

If studentGrade>=70Then

Console.WriteLine("C")

Else

If studentGrade>=60Then

Console.WriteLine("D")

Else

Console.WriteLine("F")

End If

End If

End If

End If

اگرstudentGradeبیشتریامساوی90بتشد4شرط اول درست میباشنداماتنهاعبارت Console.WriteLineبعدازاولین آزمون اجرامیشودپس ازاینکهConsole.WriteLineویژه ایی اجراشد،برنامه ازبخشElseساختارIf/Then/Elseخارجی میشود

بیشتربرنامه نویسانVisual Basicترجیح میدهندکه ساختارهای If/Then/Elseقبلی رابااستفاده ازکلمه کلیدیElselfبه این صورت بنویسید

IfGrade>=90Then

Console.WriteLine("A")

Else IfGrade>=80Then

Console.WriteLine("B")

Else IfGrade>=70Then

Console.WriteLine("C")

Else IfGrade>=60Then

Console.WriteLine("D")

Else

Console.WriteLine("F")

End If

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

7-3ساختارتکرارWhile

ساختارتکراربه برنامه نویس اجازه میدهدتاعملی رامشخص کندکه درصورت درست باقیماندن یک شرط تکرارمیشودعبارت شبه کد:

تکراری راتوصیف میکند که در طی یک چرخه خرید. شرطthere are items my shopping list ممکن است درست یا نادرست باشد.اگردرست باشد،آن گاه عملPurchaese next itemوCross it off my انجام میشود این اعمال به طور تکراری اجرا میشود تاوقتی که شرط درست باقی بماند عبارتهای موجود در ساختار تکرارWhileبدنه آن را تشکیل می دهند.ممکن است شرط به طور تصادفی نادرست شود.(هنگامی که آخرین آیتم در لیست خرید، خریداری شده و لیست به انتها برسد).در این لحظه،تکرارخاتمه یافته و اولین عبارت بعد از ساختار تکرار اجرا می شود.

به عنوان یک نمونه از ساختارWhile،قطعه برنامه ای را در نظر بگیرید که برای یافتن اولین توان دو بزرگ تر از1000در نظر گرفته شده است.(شکل5-3).

درخط 7،از این ویژگی Visual Basicبهره برده ایم که مقدار دهی اولیه متغیر برای مشارکت در یک معرفی،مجاز است .هنگامی که به ساختارWhileوارد می شویم(خط11).productبرابر2 می باشد متغیرproductبه صورت تکراری در2 ضرب می شود(خط13)ومقادیر 4،8، 16، 32، 64 ،128، 256،512و1024رابه خود می گیرد.هنگامیکه productبرابر1024می شود،شرطproduct=1000در ساختار Whileنادرست می شود،این امر تکرار را خاتمه داده و1024را به عنوان مقادیر نهاییproductمشخص می کند.اجرا با عبارت بعد از کلمه ی کلیدیWhile Endادامه می یابد.

(توجه:اگر شرط یک ساختار Whileدر ابتدا نادرست باشد،بدنه عبارتها انجام نم شوند).

فلوچارتشکل6-3جریان کنترل ساختار Whileشکل5-3را نشان می دهد.باز هم توجه داشته باشید که (علاوه بر دایرهای کوچک و پیکانها)،فلوچارت تنها حاوی یک نماد مستطیل و نماد لوزی است.

1Fig3.5:While .vb

2Demonstration of While structure.

3

4Module modWhile

5

6Sub Main( )

7Dim Product

8

9struture multplies and displays product

10while product is less than or equal to 1000

11While product is=1000

12Console.Write("{0}" product)

13 product= product*2

14End While

15

16 Console.Write Line( )write blank line

17

18print result

19Console WriteLine(Smallest poewer of2"&_

20grenter than 1000 is {0}" product)

21End Sud Main

22

23 End Module' modWhile

شکل 5-3

شکل 6-3

این فلوچارت تکرار را به طور واضع نشان می دهد. خط جریانی که ازمستطیل خارج می شود به تصمیم برگشته و حلقه ای را ایجاد می کند.هربار که حلقه تکرار می شود،تصمیم امتحان می گردد تا وقتی که شرط در تصمیم به طور اتفاقی نادرست شود.در این لحظه،از ساختارWhileخارج شده و کنترل به عبارت بعدی در برنامه وپس از حلقه منتقل می شود.

8-3ساختار تکرار While/Loop Do

ساختار تکرار While/Loop Doهمانندساختار تکرار Whileعمل می کند.به عنوان مثال از یک ساختار While/Loop Do،نگارش دیگری از برنامه را در نظر بگیرید که برای یافتن اولین توان دو بزرگتر از1000طراحی شده است (7-3).

1Fig.3.7 DoWhile.vb

2Demonstration of the Do Whil/Loop structure.

3

4Module modDoWhile

5

6Sub Main( )

7Dim producht As Integer=2

8

Structure multiplies and displays 9

10 producht while producht

11Do While producht=1000

12Console. Write("{0}" producht)

13 producht= producht*2

14Loop

15

16 Console. Write Line( ) write blank line

17

18print result

19 Console. Write Line("Smallest power of 2"&_

20greater than 1000is {0} producht)

21End Sub Main

22

23End Module'modDo While

شکل 7-3

هنگامی که ساختار While/Loop Doوارد می شویم،مقدارproductبرابر 2است.متغیرproduct به صورت تکراری در2ضرب می شود ومقادیر4 ،8 ،16 ،32 ،64 ،128 ،256 ،512 و1024را هنگامی کهWhile/Loop Do برابر1024می شود شرط ساختار While/Loop Do( 1000>=product)نادرست می شود.این امر تکرار را خاتمه داده و 1024را به عنوان مقدار نهایی productدر نظر می گیرد.اجرای برنامه با عبارت بعد از ساختار While/Loop Doادامه می یاب.فلوچارت شکل8-3عبارت بعد از ساختار While/Loop Doرا تشریح می کند که جریان کنترل ساختار تکرار While/Loop Do

شکل6-3یکسان است.

شکل8-3

9-3ساختار تکرار While/Loop Do

ساختار تکرار While/Loop Doبر خلاف ساختارهای تکرار Whileو While/Loop Do،نادرست بودن شرطی را تست می کند تا تکرار را ادامه دهد.عبارت در بدنه یک While/Loop Doمادام به طور تکرار اجرا می شوند تا تست ادامه حلقه با نادرست ارزیابی شود.

شکل 10-3

10-3عملکرد های انتساب Visual Basicچندین عملگردانتساب را برای خلاصه کردن عبارات انتساب فراهم کرده است.مثلا"عبارت:

می تواند با عملگرد انتساب جمع=+به این صورت خاصه شود.

Value=value+3

Value+=3

عملگرد =+مقدار عبارت سمت راست عملگرد را با مقدار سمت چپ عملگرد جمع کرده و نتیجه را درمتغیر سمت چپ عملگرد ذخیره می کند.

هر عبارتی به شکل:

Variable=variable operator expression:

که operatorیکی را باینری +،-،*،ˆ،&/یامی باشد (یا سایر عملگردهایی کهدر ادامه کتاب بررسی می کنیم )،می تواند به شکل:

Variable operator = expression:

نوشته شود.شکل 12-3شامل عملگردهای انتساب حسابی،عبارات نمونه با استفاده از این عملگردها و توضیحات می باشد.
انتسابها توضیح عبارت نمونه عملگر انتساب

"H"e=d،4=cبا فرض

11toc c=c+7 c+=7 =+

1toc c=c-3 c-=3 = –

16toc c=c*4 c=4 =*

2toc c=c/2 c/=2 /=

1toc c=c3 c=3 =

16toc c=cˆ2 cˆ=2 =ˆ

"Hello"tod d=d&"llo" d&="llo" =&

شکل 11-3عملگرهای انتساب.

هر چند نمادهای =،=+،=-،=*،=/،=،=ˆو=&عملگر هستند،ولی نباید آنها رادر جدول تقدیم قرار دهیم.هنگامی که یک عبارت انتساب ارزیابی می شود،عبارت سمت راست. عملگر همیشه ابتداارزیابی می گردد،سپس به lvalueسمت چپ نسبت داده می شود.عملگرهای انتساب،برخلاف سایر عملگرهای Visual Basicتنها یک بار می توانند در یک عبارت روی دهند.

رویه ها

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

5-2ماژول ها، کلاسها و رویه ها

برنامه های Visual Basicاز چند قطعه از جمله ماژول ها و کلاسها تشکیل می شوند.

برنامه نویس کلاسها و ماژول های جدید را با کلاسهای از قبیل بسته بندی شده موجود در کتابخانه کلاس چارچوب کاری (FCL)NETترکیب می کند. این ماژول ها و کلاسها از قطعات کوچکتری به نام رویه ایجاد می شوند وقتی رویه ها در یک کلاس قرار می گیرند از آنها به عنوان متد نام می بریم.

FCLمجموعه ای غنی از کلاسها و متد ها را انجام محاسبات ریاضی معمول،دستکاری های رشته ای،دستکاری های کاراکتری،عملیات ورودی /خروجی،بررسی خطا وسایر عملیات مفید فراهم کرده است.این چارچوب کاری کار برنامه نویس را راحت تر می کند،زیرا متد ها قلبلیتهایی را فراهم می کنند که مورد نیازبرنامه نویس می باشد.در فصلهای قبل ما چند کلاس FCLنظیر Consoleرا معرفی کرده که متدهایی را برای ورود و خروج دادها فراهم می کند هر چندFCL متدهایی را فراهم میکند که وظایف معمولی را انجام می دهند ولی با این حال نمی تواند هر ویژگی را ارائه دهد که ممکن است مورد نیاز برنامه نویس باشد. به همین دلیل Visual Basicبه برنامه نویس اجازه میدهد رویه هایی عبارتند از رویه های Sub،رویه های Functionو رویه های رویداد.در این فصل اصطلاح رویه به رویه های Sub، Functionگفته میشود در غیر این صورت ذکر میشود که منظور از رویه چیست.

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

یک رویه با یک فراخوانی رویه،احضارمیشود(یعنی وظیف ی معینی را انجام می دهد).فراخوانی رویه نام رویه ای را مشخص میکند و اطلاعاتی(ارگومان ها )را فراهم مینماید که فرا خوان شده (یعنی رویه ای که فراخوانی میشود)برای انجام وظیفه خود نیازدارد. پس از اینکه رویه وظیفه ی خود را انجام داد،کنترل را به فراخوان بر میگرداند(یعنی رویه فرا خوان).در برخی موارد رویه یک نتیجه را به فراخوان بر میگرداند. مقایسه معمول برای این مسئله،شکل سلسله مراتبی مدیریت است.ریئس (فراخوان)از کارمند(فرخوان شده)در مورد انجام وظیفه ای و گزارش (یعنی برگرداندن)نتایج پس از تکمیل آن وظیفه سوال می کند. کارمند نیز ممکن است کارمند دیگری فرا خوانی کند و ریئس از این فرا خوانی ها آگاه نباشد.

نحوه این "پنهان سازی"جزئیات پیاده سازی را خواهیم دید که مهندسی نرم افزار خوب را ترویج می دهند. شکل 1-5 یک رویه Bossرا نشان میدهد مه با رویه های کارمند worker1،worker2 و worker3 به یک روش سلسله مراتبی ارتباط دارد. توجه داشته باشید که worker1به عنوان رویه رئیس worker4 و worker5در این مثال خاص عمل میکند. برای تقسم کد به رویه ها انگیزه های مختلفی وجود دارد.نخست اینکه روش تقسیم و تسخیر نوشن برنامه را بیشتر مدیریت میسازد انگیزه دیگر قابلیت استفاده مجدد نرم افزار است که از رویه های موجود به عنوان بلوک های سازنده در برنامه های جدید استفاده میشود. در صورت بکار گیری قرار دادهای مناسب برای نام گذاری و تعریف،میتوان برنامه ها را از قطعات استانداردی ایجاد کرد وظایف خاصی را انجام میدهند و به دین ترتیب نیاز به کد سفارشی را کاهش داد انگیزه سوم اجتناب از تکرا ر کد در یک برنامه است در صورت بسته بندی که به عنوان یک رویه می توان آنرا به راحتی با فراخوانی یا احضار رویه در محل های مختلف یک برنامه اجرا نمود.

شکل 1-5

3-5 رویه های Sub

برنامه هایی که تا این جا ارائه شدند،حداقل یک تعریف رویه داشتند(مثلMain)که متدهای FCL(همانند Console.WriteLine)را برای انجام وظایف برنامه فراخوانی می کرد حال ما نحوه داشتن رویه های سفارشی را بررسی میکنیم .

برنامه کاربردی کنسولی 2-5 را در نظر بگیرید که برای چاپ اطلاعات حقوق یک کارمند یک رویه Sub را به کار میبرد. این رویه از Main برنامه کاربردی احضار شده است .

شکل 2-5

معرفی ها و عبارات در تعریف رویه ،بدنه رویه را شکل میدهند. بدنه رویه حاوی Visual Basic است که معمولا با دستکاری یا تعامل با پارامترها اعمالی را انجام میدهد. بدنه رویه باید با کلمات EndSubپایان یابد که این کلمات پایان رویه را تعریف میکنند.شایان ذکر است که به بدنه رویه،بلوک نیز گفته میشود. بلوک ،دنباله ای از عبارات و معرفی هایی از بدنه یک ساختار باهم گروه بدنی شده اند و بر حسب نوع ساختار با یکی از عبارات End،Next،Else

یا Lootپایان می یابد.

وقتی اجرا به عبارتSub End(یعنی پایان بدنه رویه)میرسد کنترل به فراخوان برمیگردد. همچنین برای برگرداندن کنترل به نقطه ای که رویه Sub احضار شده است می توان از کلمات کلیدی Retu وExit Sub استفاده نمود به زودی این کلمات کلیدی را به طور مفصل شرح میدهیم.

4-5 رویه های Function

رویه های Function شبیه به رویه های Sub میباشد با این تفاوت که رویه های Function مقداری را به فراخوان برمی گردانند (یعنی یک مقدار را ارسال میکنند)ولی

رویه هایSub چنین کاری را انجام نمی دهند. برنامه کاربردی کنسولی شکل 3-5 برای محاسبه مربع های عدا د صحیح 1 تا 10 از رویSquareاز نوع Functionاستفاده می کنند.

شکل 3-5

فرمت یک تعریف رویه Function به شرح زیر است

نام رویه،لیست پارامتر،معرفی ها، و عبارات موجود در یک رویهFunction همانند عناصر متناظر خود در یک تعریف یک برنامه کاربردی ویندوزاستفاده میشود،درکلاسهای تعریف شده برنامه نویس تعریف کنند.

تا اینجا تعدادی از برنامه های کاربردی ما ارتباط متقابل کاربر را از طریق پنجره فرمان(در این پنجره کاربر می تواند یک مقدار ورودی را در برنامه تایپ کند)یا کادر محاوره ای پیام (پیامی را به کار بر نشان می دهد که با کلیک کردن روی دکمه OKآن بسته می شود)امکان پذیر کرده اند .در فصل 3،برنامه های کاربردی ویندوز را با ایجاد برنامه ای معرفی کردیم که اطلاعات را در بر حسبی روی یک فرم نشان می دهد.

هر چند که پنجره فرمان و کادرهای محاوره ای پیام روشهای معتبری برای دریافت ورودی از کاربر ونمایش خروجی به شمار می روند ولی با این حال قابلیتهای محدودی دارند.(پنجره فرمان هر بار فقط می تواند یک خط از ورودی کاربر رادریافت نماید وکادرمحاوره ای نیز می تواند فقط یک پیام را نمایش دهد . دریافت ورودی های متعدد به طور هم زمان امری عای و متداول است. برای معرفی برنامه نویسی رابط کاربر پیچیده تر،برنامه شکل 4-5 از مدیریت رویداد GUIاستفاده می کنند(یعنی توانایی پاسخ به تغییر یک در GUI نظیر زمانی که کاربر روی یک دکمه کلیک می کند).

کلاس FrmMaximum از یک GUIاستفاده میکند که ازسه کادر متن(txtFirst،txtSecond،textThird)برای ورودی کاربر ،یک دکمه(cmdMaximum)برای احضار محاسبه و چهار Label(از جملهlblMaximum که نتایج را نمایش می دهد )تشکیلمیشود. ما این اجزا را به صورت ویژوال با استفاده از Tooibbox و تغییر خصوصیات انها در پنجرهProperties ایجاد میکنیم.

خطوط 7 تا 21 معرفی هایی هستند که نام را جزرا نشان میدهند. هر چند این خطوط کد بخشی از کد تولید شده Visual Basicبه شمار میروند. ولی هدف ما از نمایش آنها نشان دادن اشیایی از که بخشی از فرم می باشد(کد کامل این برنامه در سایت www.deitel.com وجود دارد).

خط پنج نشان میدهد که کلاسFrmMrximum از System.Windows.Forms.Form ارث میبرد. به خاطر داشته باشید که هه فرم ها از کلاس System.Windows.Forms.Form ارث میبرند یک کلاس میتوانند صفات و رفتارها(داده ها و متدها)را از کلاس دیگری به ارث میبرند به شرطی که در سمت راست کلاس کلمه کلیدی Inherits مشخص شده یاشد،در فصل 9 به موضوع وراثت می پردازیم.

کلاس FrmMrximum حاوی دو تعریف شده برنامه نویس استMrximum (خطوط 39 تا 43 ) سه پارامتر Double را میگیرد و مقدار بزرگتری پارامتر را بر میگرداند. توجه داشته باشید که این متدی شبیه به تعریف یک روحیه Function در یک

ماژول است. ضمنا" برنامه شامل متدها متن Click_Mrximum cmd نیز میباشد (خطوط 26 تا 36) وقتی کاربر روی یک جزء(نظیر یک دکمه)در حالتDesign

دابل کلیک میکند، IDN متدی را تولید می نماید که یک رویداد را مدیریت میکند(یعنی مدیر رویداد) عمل یک کاربر را نشان میدهد(نظیر کلیک کردن روی یک دکمه یا تغییر مقدار).مدیر رویداد متدی است که با روی دادن یک رویداد اجرا(فراخوانی ) میشود. در این مثال متد Click_Mrximum cmd رویداد حاصل از کلیک کردن روی دکمه Mrximum cmd را مدیریت میکند. برنامه نویسان کدی را میتویسند که موقع بروز چنین رویدادهایی وظایف خاصی را انجام میدهد انها با به کار گیری رویدادها و اشیاء می توانند برنامه های کاربردی ایجاد نمایند که معاملات کاربری پیچیده تری را امکان پذیر میسازد. نام مدیران رویدادی که به وسیله IDN ایجاد شده اند بانام شی شروع میشود سپس یک زیر خط و بعد نام رویداد می اید. در فصل 11نحوه مدیران رویداد مختص به خود و نام گذاری انها را توضیح میدهیم.

وقتی کاربر روی دکمه Mrximum cmd کلیک میکند رویه Click_Mrximum cmd (خطوط 26 تا 36 )اجرا میشود. خطوط 31 تا 33 مقادیر 3 کادر متن را با استفاده از خصوصیت Text بازیابی میکند مقادیر به صورت ضمنی به نوع Double تبدیل میشود و در متغییر های value1، 2 value ،3 valu ذخیره می گردند.

خط 35 متد Mrximum (خطوط 39 تا 43) را با ارگومان های value1، 2 value ،3 valu فراخوانی می کند.سپس مقادیر این آرگومان ها در پارامترهای valueOne، Tow value ،Three valul موجود متد Mrximum ذخیره میشوند . متد Mrximum نتیجه عبارت خط 42 را بر می گرداند که این متد با متد Math کلاس Math 2 فراخوانی را انجام میدهد متد Mat بزرگترین آرگومان Doubleرا برمیگرداند،بدین معنا که محاسبه خط 42 نخست پارامترهای valueOne، Tow value را مقایسه میکند سپس مقدار برگشتی به وسیله اولین فراخوانی متد را با پارامتر Three value مقایسه مینماید فراخوانی با متد ها (نظیرMath.Maxکه در یک کلاس FCLتعریف میشود حاوی نام

کلاس و سپس عمل گر(.) باشد که عمل گر دستیابی عضو نیز نامیده میباشد به هر حال فراخوانی با متد های تعریف شده در کلاسی که حاوی فراخوانی متد است فقط مستلزم مشخص نمودن نام متد میباشد.

وقتی کنترل به متد Click_Mrximum cmd برمیگردد خط 35 مقدار برگشتی به وسیله متد Mrximumرا به خصوصیتText بر چسبlbl Maximum نسبت میدهد و متن برای کاربر نمایش داده میشود . شاید متوجه شده باشید که تایپ پرانتز های باز پس از یک متد یا نام رویه باعث می باشدکه Visual Basic پنجره ای حاوی نام ها و انواع آرگومان رویه را نشان دهد. این ویژگی،ویژگیParameter Info شکل5-5 مربوط به IDNاست. Parameter Info با شناسایی رویه های قابل

دسترسی آرگومانهای انها کد نویسی را ساده میکند. این ویژگی اطلاعات رویه های تعریف شده برنامه نویس ومتد های موجود درFCL رانشان میدهد.

همچنین Visual Basicویژگی Intelli Sense را نیز ارائه میکند که همه اعضای موجود دریک کلاس را نشان میدهد. مثلا وقتی برنامه نویس عمل گر نقطه را پس از نام کلاس(نظیرMath) شکل 6-5 تایپ میکند،این ویژگی لیستی از متد های کلاس را نشان میدهد. کلاسMath متدهای زیادی دارد که به بنامه نویس اجازه میدهند محاسبات ریاضی و گوناگون ومختلف را انجام دهد

شکل 5-5

شکل 6-5

برخی از متدهای کلاسMath به عنوان نمونه از متدهای متنوع FCL در شکل 7-5 به طور خلاصه بیان شده اند. در این جدول متغیر های x و y از نوع Double میباشند. ضمنا" بسیاری از متد ها نسخه هایی را فراهم میکند که مقادیر به عنوان آرگومان از انواع داده های دیگر میگیرند. به علاوه کلاس Math دو مقدار ثابت ریاضی را تعریف میکند : Math.PI و Math.E مقدار ثابت Math.PI(3.141572653587932896) کلاس Math،نسبت به محیط دایره قطر ان(یعنی دو برابر شعاع است) مقدار ثابت مقدار مبنای لگاریتم های طبیعی است که با مت.Loth Math محاسبه میشوند.

شکل7-5

6-5 ترویج ارگومان

ویژگی مهم دیگر تعریف متد ها ،اعمال آرگومان هاست (یعنی مجبور کردن ارگومانها به نوعی خاص برای ارسال به یک متدVisual Basic تبدیلات عرضی پشتیبانی می کند تبدیل عریض هنگامی روی میدهد که یک نوع به سایر انواع تبدیل شود (معمولا انواعی که می توانند داده های بیشتری را نگه داری کنند)بدون اینکه داده ای از بین برود و یک تبدیل باریک هنگامی روی میدهد که داده ممکن است در طی تبدیل از بین برود(معمولا به انواعی که داده کوچکتری را نگه داری می کنند)شکل8-5 تبدیلات عریض پشتیبانی شده در متدVisual Basic را نشان می دهد.

مثلا متدSqrt کلاسMath می تواند با یک آرگومان صحیح فراخوانی شود حتی اگر این متد در کلاسMathتعریف شده باشد تا یک آرگومان double را بگیرد عبارت Console Write Ling(Math.Sqrt(4)).

Math.Sqrt(4)را به طور صحیح ارزیابی کرده و مقدار 2 را نمایش می دهد Visual Basic مقدار 4 از نوع صحیح را به مقدار 0/4 از نوع double تبدیل می کند، پیش از این که آن مقدار را به Math.Sqrt ارسال نماید.

در این مثال آرگومان دقیقا" به نوع پارامتر تعریف متد مربوط نمی شود به همین دلیل قبل از فراخوانی متد یک تبدیل عریض ضمنی مدار را به نوع مناسب تغییر می دهد Visual Basic تبدیلات بایرک راروی آرگومانهای ارسال شده به .رویه ها انجام می دهد مثلا اگر متغییر رشته number حاوی مقدار چهار باشد فراخوانی number)) Math.Sqrt به طور صحیح با دو ارزیابی می شود در هر حال برخی از تبدیلات باریک ضمنی با موفقیت انجام نمی شوند و باعث به وجود امدن خطا های زمان اجرا و خطاهای منطقی می گردد ه عنوان مثال اگر متغییر number حاوی مقدار "hello" باشد ارسال آن به صورت یک آرگومان به متد Math.Sqrt باعث به وجود آمدن یک خطای زمان اجرا میشود. در بخش بعدی در مورد مقیاس هایی صحبت میکنیم که برنامه نویس با کمک انها میتواند مانع بروز چنین مشکلاتی شود.

شکل 8-5

ترویج آرگومان علاوه بر مقادیر نوع داده اصلی که به عنوان آرگومان به متدها ارسال شده اند به عبارات حاوی مقادیر دو یاچند نوع داده نیز اعمال می گردد.چنین عباراتی عبارات نوع مرکب نیز نامیده می شوند. در یک عبارت نوع مرکب،هر مقداربه بالاترین نوع داده در عبارت ارتقا می یابد (یعنی تبدیلات عریضی انجام می شوند تا اینکه مقادیر همان نوع حاصل شود).مثلا اگر singleNumber از نوعSingle و integer Namberاز نوعIntegerباشد Visual Basicبا ارزیابی عبارت singleNumber+integer Namber مقدارintegr Number

را به نوع Single تبدیل می کند،سپس این نوع به singleNumber اضافه می شود و نهایتا" یک نتیجه Single تولید می گردد منظور این است که هر چند انواع داده های اصلی مقادیر نگهداری می شوند،نسخه موقتی هر مقدار برای استفاده در عبارت ایجاد می گردد وانواع داده های نسخه های موقت به طور مناسب اصلاح می شوند.

7-5Option Strict تبدیلات نوع داده

Visual Basicچندین گزینه را برای کنترل روش مدیریت اناع داده به وسیله کامپایلر ارائه می دهد این گزینه ها به برنامه نویسان کمک می کنند تا خطاهای حاصل از تبدیلات باریک را حذف نماید و بدین ترتیب کد،ایمن تر و مطمئن تر خواهد شد.اولین گزینه Option Strict است که به طور پیش فرض با Onتنظیم می شود،بدین معنا که در برنامه های Visual Basicایجاد شده در فصلهای 1تا4 فعال شده است.این گزینه برنامه نویس را مجبور می کند تا همه متغیرها را قبل از استفاده در برنامه به طور صریح معرفی کند.با انجام معرفی های صریح خطاهای املایی وسایر خطاهای پیچیده ای که ممکن است در صورت فعالنبودن گزینه Option Strict روی دهند ،ازبین می روند.مثلاوقتی Option StrictباOffتنظیم شده باشد،کامپایلر نام متغیر های دارای املایی نادرست را به عنوان معرفی های متغیر جدید تفسیر می کند واین امر موجب به وجود آمدن خطاهای پیچیده ای می شود که رفع آنها بسیار مشکل است.

گزینه دیگری که به طور پیش فرض باOffتنظیم می شود Option Strictاست Visual Basic،Option Strictرا به عنوان روشی را برای افزایش وضوح برنامه و کاهش زمان اشکال زدایی ارائه می دهد.

وقتی این گزینه باOnتنظم شود،کامپایلر همه تبدیلات را بررسی می کند وبرنامه نویس بایدبرای هر تبدیل باریکی که باعث افت داده ها(مثلا"تبدیل از نوع DoubleبهIntege)یا پایان برنامه می شود (به عنوان مثال رشته ای نظیر "hello"به نوع Integer)یک تبدیل صریح را انجام دهد.

متدهای کلاس Convertانواع داده ها را به طور صریح تغییر می دهند. نام هر متد تبدیل،از کلمه Toتشکیل می شود که پس از آن نام،نوع داده هایی می آید که متد آرگومان خود رابه آن تبدیل می نماید.به عنوان نمونه برای اینکه کاربر ورودی رشته ای را در متغیر Numberنوع Integerذخیره کند(در Visual Basicبه صورت نوع Int32یعنی یک عدد صحیح32بینی نشان داده می شود)

باید در حالی که گزینهOption StrtctباOnتنظیم شده است عبارت زیر را به کار برد:

Number=Convert.ToInt32(Consoie.ReadLine)

وقتی Option StrictراباOffتنظیم کنید، Visual Basicچنین تبدیلات نوع را به صورت ضمنی انجام می دهد به این معنا که ممکن است برنامه نویس متوجه تبدیل باریک در حال انجام نشود.اگر داده هایی که تبدیل می شوند ناسازگار با نوع داده هایی جدید باشند یک خطای زمان اجرا روی می دهد.

Option Strictباعث جلب توجه برنامه نویس به تبدیلات باریک می شود به طوری که می تواندآنها را حذف یا به خوبی مدیریت نماید.درفصل10در مورد نحوه مدیریت خطاهایی توضیح می دهیم که به خاطر تبدیلات باریک ناموفق ایجاد شده اند.

از این رو به بعد مثالهی کد، Option StrictباOnتنظیم می شود. از طریق IDNوباکلیک راست روی نام پروژه در Solution Explorerمی توانید این گزینه را فعال نمایید.

بدین منظور از منوی حاصله گزینه Propertiesراانتخاب کنید تا کادرمحاوره ای گزینه Property Pages(شکل 9-5)باز شود.از درخت دایرکتوری سمت چپ کادرمحاوره ای گزینه Buildرااز لیست Properties Commonانتخاب نمایید.در وسط کادر محاوره ای یک کادر باز شوبابرچسب Option Strictوجود دارد.به طور پیش فرض این گزینه باOffتنظیم می شود.ازکادربازشو گزینهOnرا انتخاب نموده و سپس روی دکمه Applyکلیک کنید.

شکل 9-5

در کادرمحاوره ای Property Pagesباتنظیم ، Option StrictباOnتغییر به طور سراسری به کل پروژه اعمال می شود. همچنین برنامه نویس می تواند این گزینه رادر فایل کد جدااگانه ای با تایپ عبارتOn Strict Optionدر شروع فایل در بالای معرفی یا عبارت Importsفعال نماید.

8-5انواع مقداری وانواع مرجع

دربخش بعد،ارسال آرگون ها به رویه ها رابامقدار وبامرجع بررسی خواهیم کرد. برای فهم این مطلب ابتدا باید بین انواع داده Visual Basicتمایزی قائل شویم. همه انواع Visual Basicرا می توان به عنوان انواع مقداری یا انواع مرجع دسته بندی کرد.متغیری از نوع مقداری حاوی داده های همان نوع است. معمولا"انواع مقداری برای یک قطعه داده منفرد(نظیر مقدار Integerیا Doudle)استفاده می شوند.ولی متغیری از نوع مرجع (آگاهی اوقات مرجع نامیده می شود)حاوی آدرس محلی از حافظه است که داده ها در آنها ذخیره می شوند،آدرس محلی حافظ می تواند شامل قطعات جداگانه ای از داده ها با شد. به طور کلی انواع مرجع تحت عنوان اشیاشناخته می شوند که فصلهای 7،8،9به طورمفصل به بررسی آنها می پردازیم

هر دونوع مقداری ومرجع شامل انواع تعبیه شده وانواعی می باشد که برنامه نویس ایجاد می کند.انواع مقداری تعبیه شده شامل انواع صحیح (Byte،Short،IntegerوLong)،انواع اعشاری DoubleوSingleوانواع Boolean،Data،DecimalوCharمی باشد.انواع مرجع تعبیه شده حاوی ObjectوStringهستند(اغلب مواقع نوع Stringهمانند نوع مقداری رفتار می کند که در بخش بعد به این مطلب می پردازیم). انواع مقداری که برنامه نوس می تواند بسازد عبارت اند از:ساختارها وشمارشها،انواع مرجع که به وسیله برنامه نویس ایجاد می شوند شامل کلاسها،رابطهاونماینده ها می باشند. در فصلهای 7،8،14انواع تعریف شده برنامه نویس را به طور مفصل شرح می دهیم.

جدول شکل 10-5انواع داده اصلی را لیست می کند که این داده ها بلوک های سازنده انواع پیچیده تر نظیر کلا سها راشکل می دهند.Option Strctبا Onتنظیم شده باشد همه متغیرها باید قبل از استفاده در یک برنامه،یک نوع داشته باشند.به این الزام نوع دارکردن متدی گفته می شود.

نوع اندازه برحسب بیت مقادیر استاندارد

Boolean 16 FalseیاTrue —————

Char 16 یک کاراکتریونی کد (مجموعه کاراکتریونی کد

Bytu 8 صفرتا255 ——————

Date
64 اول ژانویه0001تا31دسامبر9999
23:59:59:0:00:00تا —————-

Decimal 128 7.9E+28تا1.0E-28 —————-

Short 16 32.767تا -23.768 ————-

Integer 32 2̦147̦483̦647̦ -2̦147̦183̦648 —————

Long 64 -9̦223̦372̦036̦854̦775̦80
9̦223̦372̦036̦854̦775̦807 ——————

Single 32 +3.4E+38 1.5E-45 (اعشاری754 IEEE)

Double 64 +1.7E+308 5.0E-324 (اعشاری754 IEEE)

Object 32 هر نوع داده —————

String —————– کاراکترهاییونی کدصفرتا-2000000000 (مجموعه کاراکتری یونی کد)

شکل 10-5انواع داده اصلی Visual Basic

درجدول هرنوع مقداری به همراه اندازی برحسب بیت (1بیت 8بیتاست)و محدوده مقادیر آن ارائه شده است. جهت ترویج این قابلیت،مایکروسافت از استانداردها ی بین المللی برای فرمت های کاراکتری(یونی کد)واعداداعشاری (IEEE 754)استفاده می کند.

مقادیری که مستقیما" در کد برنامه تایپ می گرد تز gl/l (655)...

ما را در سایت تز gl/l (655) دنبال می‌کنید

برچسب: نویسنده: بازدید: 118 تاريخ: جمعه 17 تير 1401 ساعت: 18:23

صفحه بندی