دستور If
اگر به اولین برنامه خود برگردیم، آیا جالب تر نیست که به جای گفتن کلی Hello World، بتوانیم “صبح بخیر دنیا” یا “عصر بخیر دنیا” را بسته به زمان روز بگوییم؟
در اجرای برنامه بعدی، اگر زمان (ساعت) رایانه زودتر از ساعت ۱۲ بعدازظهر باشد، جمله “صبح بخیر دنیا” چاپ می شود و اگر زمان رایانه بعد از ساعت ۱۲ بعد از ظهر باشد، جمله “عصر به خیر دنیا” چاپ خواهد شد:
If (Clock.Hour < 12) Then
TextWindow.WriteLine(“Good Morning World”)
EndIf
If (Clock.Hour >= 12) Then
TextWindow.WriteLine(“Good Evening World”)
EndIf
بسته به زمان اجرای این برنامه، یکی از خروجی های زیر را مشاهده خواهید کرد:
شکل ۱-۴ : صبح به خیر دنیا
شکل ۲-۴ : عصر به خیر دنیا
بیایید سه خط اول برنامه را تحلیل کنیم.
قبلاً متوجه شده اید که این سه خط به رایانه می گوید که اگر زمان (ساعت) کمتر از ۱۲ یاشد، خروجی «صبح بخیر دنیا» را نشان دهد.
کلمات If، Then و EndIf جزو دستورات (کلمات کلیدی) اسمال بیسیک هستند که هنگام اجرای برنامه توسط کامپیوتر قابل درک می باشند.
کلمه If همیشه با یک شرط همراه است که در این مورد (Clock.Hour < 12) است.
به یاد داشته باشید که شرط بعد از دستور If حتما باید داخل پرانتز باشد. بعد از این شرط ، عملیاتی که در صورت برقراری شرط باید اجرا شوند تاقبل از رسیدن به دستور EndIf قرار می گیرند.
نکته: در Small Basic می توانید از شی Clock برای دسترسی به تاریخ و زمان فعلی رایانه استفاده کنید.این شی همچنین مجموعه ای از ویژگی ها را در اختیار شما قرار می دهد که به شما امکان دریافت روز، ماه، سال، ساعت، دقیقه و ثانیه را به طور جداگانه خواهد داد.
بین Then و EndIf، ممکن است بیش از یک دستور (عملیات) وجود داشته باشد و اگر شرط If برقرار باشد، رایانه همه آنها را اجرا خواهد کرد.
برای نمونه به این مثال توجه کنید:
If (Clock.Hour < 12) Then
TextWindow.Write(“Good Morning. “)
TextWindow.WriteLine(“How was breakfast?”)
EndIf
دستور Else
در برنامه ابتدای این فصل، ممکن است متوجه شده باشید که شرط دوم به نوعی زائد است. مقدار Clock.Hour یا کمتر از ۱۲ است یا خیر. یعنی نیازی به بررسی شرط دوم نبود.
در مواقعی مانند این، میتوانیم با استفاده از یک دستور (کلمه کلیدی) جدید مانند Else، دیگر از شرط دوم if..then..endif استفاده نکنیم و برنامه را کوتاه تر کنیم.
برنامه قبل را این بار با دستور Else بازنویسی می کنیم که به این صورت می شود:
If (Clock.Hour < 12) Then
TextWindow.WriteLine(“Good Morning World”)
Else
TextWindow.WriteLine(“Good Evening World”)
EndIf
خروجی این برنامه دقیقاً مانند برنامه قبل می باشد و این ما را به یک نکته مهم در برنامه نویسی کامپیوتر می رساند:
“در برنامه نویسی، معمولاً راه های زیادی برای انجام یک کار وجود دارد. گاهی اوقات یک راه منطقی تر از راه دیگر است. انتخاب این مورد به عهده برنامه نویس است. با نوشتن برنامه های متعدد و کسب تجربه بیشتر، متوجه این تکنیک های مختلف و مزایا و معایب آنها خواهید شد.”
نوشتن برنامه تشخیص عدد زوج یا فرد
برنامه زیر یک عدد را از کاربر دریافت کرده و زوج یا فرد بودن آن را به ما اطلاع می دهد:
TextWindow.Write(“Enter a number: “)
()num = TextWindow.ReadNumber
remainder = Math.Remainder(num, 2)
If (remainder = 0) Then
TextWindow.WriteLine(“The number is Even”)
Else
TextWindow.WriteLine(“The number is Odd”)
EndIf
و هنگامی که این برنامه را اجرا کنید، خروجی مانند زیر را مشاهده خواهید کرد:
شکل ۳-۴ : زوج یا فرد
در این برنامه یک عملیات مفید جدید دیگر به نام Math.Remainder را معرفی کرده ایم. همانطور که احتمالا متوجه شده اید، Math.Remainder عدد اول را بر عدد دوم تقسیم کرده و باقیمانده را برمی گرداند.
انشعاب
همانطور که قبلا یاد گرفتید، کامپیوتر دستورات یک برنامه را به ترتیب از بالا به پایین پردازش می کند. با این حال، یک دستور خاص وجود دارد که میتواند باعث شود رایانه به دستور دیگری از برنامه بپرد.
بیایید نگاهی به برنامه بعدی بیاندازیم:
i = 1
:start
TextWindow.WriteLine(i)
i = i + 1
If (i < 25) Then
Goto start
EndIf
شکل ۴-۴ : استفاده از دستور Goto
در برنامه بالا، مقدار ۱ را به متغیر i اختصاص دادیم. و سپس یک عبارت جدید اضافه کردیم که به دونقطه ختم می شود (:)
:start
به این عبارت برچسب می گویند. برچسب ها مانند نشانک هایی هستند که کامپیوتر آنها را درک می کند. شما می توانید نشانک را هر چیزی نامگذاری کنید و می توانید هر تعداد برچسب را که می خواهید در برنامه خود اضافه کنید، البته تا زمانی که نام همه آنها منحصر به فرد باشد.
حال به این جمله از برنامه توجه کنید:
i = i + 1
این دستور به رایانه می گوید که عدد ۱ را به متغیر i اضافه کند و دوباره آن را به i اختصاص دهد. بنابراین اگر مقدار i قبل از این دستور ۱ بود، پس از اجرای این دستور ۲ می شود.
و نهایتا:
If (i < 25) Then
Goto start
EndIf
این قسمتی از برنامه است که به رایانه می گوید که اگر مقدار i کمتر از ۲۵ باشد، اجرای دستورات را از شروع برچسب استارت شروع کند.
اجرای بی پایان
با استفاده از عبارت Goto میتوانید کاری کنید که رایانه هر چند بار که ما بخواهیم چیزی را تکرار کند.
به عنوان مثال، می توانید برنامه زوج یا فرد را مانند زیر طوری تغییر دهید که برای همیشه اجرا شود.
در این حالت فقط با کلیک بر روی دکمه Close (X) در گوشه سمت راست بالای پنجره می توانید برنامه را متوقف کنید.
:begin
TextWindow.Write(“Enter a number: “)
()num = TextWindow.ReadNumber
remainder = Math.Remainder(num, 2)
If (remainder = 0) Then
TextWindow.WriteLine(“The number is Even”)
Else
TextWindow.WriteLine(“The number is Odd”)
EndIf
Goto begin
شکل ۵-۴ : برنامه زوج یا فرد با اجرای بی پایان
ترجمه و تألیف : کامبیز حسامی