ساختار های کنترلی
در این فصل، با روش های برنامه سازی ساخت یافته آشنا می شویم. در این روش، ما «ساختار» هایی داریم که کمک میکنند برنامه را کنترل کنیم. از این ساختارها برای کنترل ورودی و خروجی ها، و همچنین کنترل مقادیر و تعیین نتایج، استفاده میکنیم. در کل، چند ساختار کنترلی ساده در روبی وجود دارند که در این فصل بررسی خواهند شد.
ساختار if
این ساختار، ساده ترین ساختار شرطی در روبی است که تنها در صورت درست بودن یک شرط، یک نتیجه به ما میدهد. به این شکل می توان از این ساختار استفاده کرد :
if CONDITION
STATEMENT
end
برای مثال، یک عدد را از ورودی خوانده ایم و میخواهیم بررسی کنیم زوج است یا خیر :
if n%2 == 0
puts "#{n} is even"
end
ساختار else
گاهی، باید در صورت غلط بودن شرطمان نیز نتیجه ای تعیین کنیم (برای مثال موقع چک کردن شماره شناسه، رمز عبور و ...) . برای این کار، از ساختار else استفاده میکنیم :
if n%2 == 0
puts "#{n} is even"
else
puts "#{n} is odd"
end
برنامه نمونه
در اینجا، برنامه ای مینویسیم که چک میکند یک عدد زوج است یا فرد، و عدد را توسط کیبرد و با پیامی مناسب، از کاربر میگیرد و سپس نتیجه را با یک پیام مناسب به اطلاع کاربر میرساند
print "Enter a number: "
n = gets.chomp
n = n.to_i #از آنجایی که ورودی به صورت رشته دریافت می شود، باید به عدد صحیح تبدیل شود
if n%2 == 0
puts "#{n} is even"
else
puts "#{n} is odd"
end
بررسی بیش از یک شرط
در ساختار مرسوم، با استفاده از if میتوانستیم در صورت درست بودن شرط، نتیجه ای برگردانیم و همچنین میتوانستیم توسط else در صورت غلط بودن شرط، نتیجه ای را به کاربر برگردانیم. اما، گاهی اوقات لازم است بیشتر از یک شرط را بررسی کنیم. برای این کار، دو روش در روبی وجود دارد.
روش اول : استفاده از elsif
این روش، روش مرسوم تر استفاده از چند شرط است. برای مثال، میخواهیم چک کنیم که عدد ما در رنج هایی که مد نظر داریم هست یا خیر. در نظر بگیرید چهار گروه سنی با چهار حرف اول الفبای انگلیسی داریم :
A : 0-5
B : 5-10
C : 10-18
D : 18 and higher
و در صورت ورود رقم ها این پیام ها چاپ شود :
A : Your child is too young for our products
B : Your child can use our blue products
C : Your child can use our purple products
D : You (or your child) can use our gold products.
برنامه ما به این شکل خواهد شد :
if age > 0 || age < 5
puts "Your child is too young for our products"
elsif age > 5 || age < 10
puts "Your child can use our blue products"
elsif age > 10 || age < 18
puts "Your child can use our purple products"
else
puts "You (or your child) can use our gold products"
end
نکته
در اینجا، از یک عملگر منطقی استفاده شد، که توضیح آن چنین است :
از عملگر ||
زمانی استفاده میکنیم که درستی یکی از بخشهای شرط برای ما کافیست. از عملگر &&
زمانی استفاده می شود که همه بخش های شرط ما باید درست باشند. از عملگر !
نیز زمانی استفاده می شود که نقیض شرط برای ما مهم باشد.
روش دوم: استفاده از case
این روش، ساده تر از روش قبلی است، و معمولا فقط زمانی که چندین شرط داشته باشیم، از این روش استفاده میکنیم. روش کلی case به این شکل است :
case VARIABLE
when CONDITION
STATEMENT
else
STATEMENT
end
حال بیایید مثال قبلی را بار دگر ، با استفاده از case بنویسیم :
case age
when 0...5
puts "Your child is too young for our products"
when 5...10
puts "Your child can use our blue products"
when 10...18
puts "Your child can use our purple products"
else
puts "You (or your child) can use our gold products"
end
نکته
در اینجا، از یک نوع داده خاص به اسم «رنج» استفاده کردیم. رنج ها به دو دسته هستند. دسته اول، رنج هایی هستند که کران بالا عضو آنها نیست و این شکل نمایش داده می شوند:
0...10
و رنجهایی که کران بالا نیز عضوشان است که به این شکل نشان داده می شوند :
0..10
جمع بندی
با استفاده از دانشی که تا اینجا به دست آورده اید، میتوانید برنامه های تقریبا کاربردی ای بنویسید، برنامه هایی که بتوانند از کاربر ورودی بگیرند، و ورودی را دستخوش تغییر کنند، سپس نتیجه تغییرات را با یک ساختار کنترلی چک کنند و نتیجه مطلوب را به کاربر بازگردانند. با استفاده از فصل های بعدی، به کاربردهای برنامه هایتان نیز افزوده می شود، چرا که اصلی ترین مفاهیم را در فصل های بعدی فرا خواهید گرفت.