ساخت یک برنامه ساده با Ruby

اجازه بدهید یک برنامه بسیار ساده به زبان Ruby بنویسیم. این برنامه یک پیغام را نمایش می‌دهد. در این درس می‌خواهم ساختار و دستور زبان یک برنامه ساده Ruby را توضیح دهم. قبل از ایجاد برنامه به این نکته خیلی مهم توجه کنید:

یکی از تنظیماتی که قبل از شروع این درس توصیه می‌کنیم که اعمال کنید این است که پسوند فایل‌ها داخل ویندوز را قابل مشاهده کنید. برای این کار به My Computer رفته و به صورت زیر از منوی Organize گزینه Folder and search options را بزنید:
create-simple-program-with-ruby-01
از پنجره باز شده به صورت زیر به سربرگ View رفته و تیک کنار گزینه Hide Extension for khnown file types را بردارید:
create-simple-program-with-ruby-02
در ادامه شما را نحوه ایجاد اولین برنامه در Ruby را توضیح می‌دهیم. همانطور که گفته شد، شما برای کامپایل و اجرای برنامه‌های Ruby به مفسر این زبان نیاز دارید، که آن را در درس قبل نصب کردیم و الان فرض می‌کنیم که شما هیچ IDE یا محیط کدنویسی در اختیار ندارید و می‌خواهید یک برنامه Ruby بنویسید. در این برنامه می‌خواهیم پیغام Welcome to Ruby Tutorials چاپ شود.

استفاده از CMD یا Command Prompt

در این روش، شما به منوی Start ویندوز رفته و cmd را اجرا می کنید. بعد از اجرای cmd دستور ruby -h را بنویسید:

Microsoft Windows [Version 10.0.18363.959]
(c) 2019 Microsoft Corporation. All rights reserved.

C:\Users\Siavash>ruby -h
Usage: ruby [switches] [--] [programfile] [arguments]
  -0[octal]       specify record separator (\0, if no argument)
  -a              autosplit mode with -n or -p (splits $_ into $F)
  -c              check syntax only
  -Cdirectory     cd to directory before executing your script
  -d              set debugging flags (set $DEBUG to true)
  -e 'command'    one line of script. Several -e's allowed. Omit [programfile]
  -Eex[:in]       specify the default external and internal character encodings
  -Fpattern       split() pattern for autosplit (-a)
  -i[extension]   edit ARGV files in place (make backup if extension supplied)
  -Idirectory     specify $LOAD_PATH directory (may be used more than once)
  -l              enable line ending processing
  -n              assume 'while gets(); ... end' loop around your script
  -p              assume loop like -n but print line also like sed
  -rlibrary       require the library before executing your script
  -s              enable some switch parsing for switches after script name
  -S              look for the script using PATH environment variable
  -v              print the version number, then turn on verbose mode
  -w              turn warnings on for your script
  -W[level=2|:category]     set warning level; 0=silence, 1=medium, 2=verbose
  -x[directory]   strip off text before #!ruby line and perhaps cd to directory
  --jit           enable JIT with default options (experimental)
  --jit-[option]  enable JIT with an option (experimental)
  -h              show this message, --help for more info

دستور ruby -h، لیست تمام دستوراتی که می توانیم از آنها برای تعامل با مفسر Ruby استفاده کنیم را در اختیار ما می گذارد. مثلا در بین دستورات بالا e- باعث اجرای یک دستور در cmd می شود. cmd را بسته و یکبار دیگر آنرا اجرا کرده و کدهای زیر را بنویسید:

Microsoft Windows [Version 10.0.18363.959]
(c) 2019 Microsoft Corporation. All rights reserved.

C:\Users\Siavash>ruby -e 'puts "Welcome to Ruby tutorials!"'
Welcome to Ruby tutorials!

C:\Users\Siavash>

استفاده از محیط تعاملی یا Interactive

هنگام نصب مفسر Ruby در ویندوز یک محیط کدنویسی و تعاملی هم همراه آن نصب می شود که به شما اجازه کدنویسی با Ruby را می دهد. این محیط تعاملی در منوی Start ویندوز قرار دارد و نام Interactive Ruby می باشد. بر روی این نام در منوی Start کلیک کنید. این محیط همانند cmd مشکی می باشد. بعد از اجرا، دستورات زیر را در آن نوشته و دکمه Enter را بزنید:

irb(main):001:0> puts "Welcome to Ruby Tutorials"   
Welcome to Ruby Tutorials
=> nil
(reverse-i-search)

استفاده از ویرایشگر متن و محیط cmd

در این روش که پیشنهاد می دهیم در آموزش های بعدی هم از آن استفاده کنید، ابتدا یک ویرایشگر متن مانند Notepad را باز کرده و کدهای زیر را در داخل آن نوشته (حروف بزرگ و کوچک را رعایت کنید) و با پسوند Ruby ذخیره کنید :

puts "Welcome to Ruby Tutorials!"

create-simple-program-with-ruby-03

create-simple-program-with-ruby-04

create-simple-program-with-ruby-05
همانطور که مشاهده می‌کنید، بعد از ذخیره، فایل با پسوند MyFirstProgram.rb.txt ذخیره می‌شود که شما باید پسوند txt. آن را حذف کنید. هنگام پاک کردن پسوند، پیغامی به صورت زیر ظاهر می‌شود که شما باید بر روی گزینه Yes کلیک کنید:

تا شکل نهایی فایل به صورت زیر در آید:
create-simple-program-with-ruby-06
حال نوبت به اجرای برنامه می‌رسد. فایل ما در درایو D قرار دارد. ابتدا cmd را باز کرده و کد زیر را در داخل آن نوشته و دکمه Enter را می‌زنید :

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\siavash>d:

D:\>ruby MyFirstProgram.rb
Welcome to Ruby Tutorials!

D:\>

همانطور که در کد بالا مشاهده می‌کنید برای اجرای کدهای Ruby ابتدا کلمه ruby و سپس نام پروژه به همراه پسوند آن را می‌نویسیم (مثل MyFirstProgram.rb).

مثال بالا ساده‌ترین برنامه‌ای است که شما می‌توانید در Ruby بنویسید. هدف در مثال بالا نمایش یک پیغام در صفحه نمایش است. هر زبان برنامه نویسی دارای قواعدی برای کدنویسی است. Ruby دارای توابع از پیش تعریف شده‌ای است که هر کدام برای مقاصد خاصی به کار می‌روند. هر چند که در آینده در مورد توابع بیشتر توضیح می‌دهیم، ولی در همین حد به توضیح تابع بسنده می‌کنیم که توابع مجموعه‌ای از کدها هستند که وقتی اسم آنها را صدا می زنیم، یک کار خاص را انجام می دهند. یکی از این توابع، تابع puts است. از تابع puts برای چاپ یک رشته استفاده می‌شود. یک رشته گروهی از کاراکترها است، که به وسیله دابل کوتیشن (“) محصور شده است. مانند:“!Welcome to Ruby Tutorials”. یک کاراکتر می‌تواند یک حرف، عدد، علامت یا … باشد. در کل مثال بالا نحوه استفاده از تابع puts است. توضیحات بیشتر در درس‌های آینده آمده است. Ruby فضاهای خالی را نادیده می‌گیرد. مثلاً از کد زیر اشکال نمی‌گیرد:

puts       "Welcome to Ruby Tutorials!"

همیشه به یاد داشته باشید که Ruby به بزرگی و کوچکی حروف حساس است. یعنی به طور مثال MAN و man در Ruby با هم فرق دارند. رشته‌ها و توضیحات از این قاعده مستثنی هستند که در درس‌های آینده توضیح خواهیم داد. مثلاً کدهای زیر با خطا مواجه می‌شوند و اجرا نمی‌شوند:

PUTs "Welcome to Ruby Tutorials!"
PuTs "Welcome to Ruby Tutorials!"
pUts "Welcome to Ruby Tutorials!"

تغییر در بزرگی و کوچکی حروف از اجرای کدها جلوگیری می‌کند. اما کد زیر کاملاً بدون خطا است :

puts "Welcome to Ruby Tutorials!"

در زبان Ruby نیازی به سمیکالن (;) ندارید. همین که بعد از هر خط یک بار Enter بزنید به منزله این است که آن خط به پایان رسیده است. مثلاً دو خط زیر دو دستور جدا هستند:

puts "Welcome to Ruby Tutorials!"
puts "Welcome to Ruby Tutorials!"

به جای استفاده از چند تابع puts برای چاپ چند دستور می توان از یک تابع puts برای این منظور استفاده کرد. به کد زیر توجه کنید:

puts "Welcome to Ruby Tutorials!" , "Welcome to Ruby Tutorials!" , "Welcome to Ruby Tutorials!"
Welcome to Ruby Tutorials!
Welcome to Ruby Tutorials!
Welcome to Ruby Tutorials!

در کد بالا ما سه بار رشته Welcome to Ruby Tutorials! را با استفاده از یک تابع puts چاپ کرده ایم. کافیست بین دستورات علامت کاما (,) قرار دهید. در Ruby یک تابع دیگر برای چاپ در خروجی وجود دارد که نام ان print است. تفاوت این تابع با تابع puts این است که تابع puts هر دستور را در یک خط جدا چاپ و تابع print همه دستورات را در یک خط و پشت سر هم چاپ می کند. برای درک بهتر به کد زیر توجه کنید:

puts "Hello "
puts "World!"
Hello
World!

مشاهده می کنید که دستورات در دو خط جدا از هم چاپ شدند. حال همین کد را با استفاده از تابع print می نویسیم :

print "Hello "
print "World!"
Hello World!

گاهی اوقات در برنامه نویسی می خواهیم که برخی از کد در ابتدا و برخی در انتهای برنامه اجرا شوند. برای این منظور می توانیم از دو دستور یا بلوک کد BEGIN و END به صورت زیر استفاده کنیم :

puts "This is a statement"

END {
  puts "End statement"
}

BEGIN {
  puts "BEGIN statement"
}

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

This is a statement
END statement
BEGIN statement

ولی خروجی کد بالا به صورت زیر خواهد بود:

BEGIN statement
This is a statement
END statement

یعنی ابتدا دستورات داخل بلوک BEGIN، سپس This is a statement و در نهایت دستورات بلوک END اجرا می شوند.