مقدمه
ruby یک زبان برنامهنویسی تفسیری سطح بالا، همه منظوره و شیءگرا است که از نمونههای مختلف برنامهنویسی پشتیبانی میکند. منظور از این جمله این است که روبی از نمونههای مبتنی بر روال”procedure” یا مبتنی بر تابع “function” یا شیءگرا “OOB” پشتیبانی میکند. این زبان برنامهنویسی بر پایه بهرهوری بیشتر و سادگی ساخته شده است. در ruby همه چیز یک شیء هست حتی انواع دادهها که متغیرها را از نوع آنها تعریف میکنیم نیز شیء هستند بنابراین روبی یک زبان برنامهنویسی شیءگرای کامل میباشد.
این زبان برنامهنویسی در اواسط سال ۱۹۹۳ توسط آقای “Yukihiro Matz Matsumoto” که با نام Matz در ژاپن شناخته میشود توسعه یافت. طبق نظر توسعهدهنده زبان روبی، این زبان درواقع از زبانهای basic، Ada، Smalltalk، Perl، Lisp تاثیر گرفته است همچنین Syntax زبان روبی خیلی شبیه perl و python است. روبی در بین سالهای ۱۹۹۶ تاکنون در نسخههای مختلف از ۱ تا ۳ انتشار یافته است و بر روی پلتفرمهای مختلفی مانند ویندوز، سیستم عامل مک و نسخههای مختلف یونیکس اجرا میشود.
اگر بخواهیم به تعدادی از موارد کاربردی روبی اشاره کنیم میتوان گفت که پروژه Metasploit که توسط هکرها استفاده میشود توسط روبی نوشته شده است اگرچه در ابتدا با پایتون نوشته شده بود ولی پس از معرفی زبان RubyT دوباره از صفر با روبی نوشته شد. همچنین از روبی برای backend نویسی و اسکریپ نویسی استفاده میشود. برای مثال backend سایت github یا رادیو جوان با روبی نوشته شده است. بعضی از افراد از ruby برای backend نویسی و بعضیها نیز برای اسکریپت نویسی استفاده میکنند. در ادامه با بخش اصلی آموزشruby، کار با روبی و محیط کد نویسی آن آشنا میشویم.
شروع کار با ruby
برای این که مثالهای بکار رفته در این آموزش را بر روی کامپیوتر خود اجرا کنید به کامپیوتر Intel Core i3 یا i5 با حداقل ۲ الی ۴ گیگابایت رم (مطمئنا ۴ گیگابایت انتخاب بهتری خواهد بود) نیاز خواهید داشت. برای شروع کار لازم است موارد زیر موجود باشند:
- سیستم عامل لینوکس یا ویندوز
- وب سرور آپاچی
- مرورگر مناسب
- فایل نصبی ruby
نصب ruby در ویندوز
برای این کار از یکی از سایتهای معتبر یا سایت خود روبی، فایل zip آن را دانلود کرده و بعد از Extract با کلیک بر روی فایل rubyinstaller آن را نصب میکنیم. منتظر میشویم تا مراحل نصب طی شود و عملیات نصب تمام شود. احتمالاً اگر از خود سایت روبی اقدام کنید آسانتر خواهد بود. در مرحله دوم بعد از قبول کردن قوانین، صفحهای باز میشود که دو گزینه در آن تیک خورده است دقت کنید که گزینه add ruby executables to your path حتما تیک خورده باشد تا بعدا مجبور نباشید آن را بهطور دستی در قسمت path ویندوز وارد کنید. باز هم next را ادامه میدهیم و install شروع میشود.
بعد از نصب بهطور جداگانه در cmd از شما میخواهد نصب دو مورد زیر را با وارد کردن عدد ۱ و در مرحله دوم عدد ۳ انجام دهید.
و بعد از نصب گزینه ۱ نصب گزینه ۳ را از شما میخواهد توجه داشته باشید که گزینه ۲ انتخابی است. اگر هم مطمئن نیستید که کدام گزینه را انتخاب کنید کلید enter را بزنید.
برای کنترل اینکه آیا ruby در سیستم شما نصب شده است یا نه میتوانید با نوشتن دستور زیر آن را کنترل کنید. طبق این دستور نسخه روبی نصب شده بر روی سیستم را برای شما نشان میدهد..
C:\Users\NP>ruby -v
خروجی بهصورت زیر خواهد بود.
ruby 3.1.1p18 (2022-02-18 revision 53f5fc4236) [x64-mingw-ucrt]
اگر قادر به کامپایل Ruby خود نیستید می توانید از مدیر بسته سیستم (Package Management Systems) برای نصب Ruby استفاده کنید. البته بعضیها نصب این بسته را توصیه نمیکنند چراکه ممکن است نسخه قدیمی ruby را نصب کند. برای آموزش بهتر هر زبان برنامه نویسی میتوانید از مجموعه آموزش برنامهنویسی فرادرس استفاده کنید.
نصب Windows Package Manager
برای این کار در cmd دستور زیر را تایپ کنید.
winget install Ruby
خروجی به صورت زیر خواهد بود.
C:\Users\NP>winget install Ruby The "msstore source" requires that you view the following agreements before using. Terms of Transaction: https://aka.ms/microsoft-store-terms-of-transaction The source requires the current machine's 2-letter geographic region to be sent to the backend service to function properly (ex. "US"). Do you "agree" to all the source agreements terms? [Y] Yes [N] No: y Multiple packages found matching input criteria. Please refine the input. Name Id Source --------------------------------------------------------------------- Ruby On Rails-simpleNeasyApp by WAGmob 9WZDNCRDN7Q9 msstore Ruby RubyInstallerTeam.Ruby winget C:\Users\NP>
همچنین در ویندوز، میتوانید از Chocolatey Package Manager برای نصب Ruby استفاده کنید:
choco install ruby
حالا به یک ویرایشگر خوب برای کد نویسی نیاز داریم. اگر بخواهیم تعدادی ویرایشگر برای اینکار توصیه کنیم می توانید از ویرایشگرهای زیر استفاده کنید:
- SciTE که با نصب روبی نصب خواهد شد.
- E Text Editor
- Sublime Text
- RubyMine
که ما در این آموزش ruby از ویرایشگر sublime text استفاده میکنیم. تصویر زیر محیط این editor را نشان میدهد. به عنوان نمونه، میخواهیم “Hello World” را در خروجی چاپ کنیم. فایلی را در مسیر مشخصی با پسوند rb.ذخیره میکنیم.
C:\Users\NP\Desktop>testنام برنامه
hello world
دستورات Ruby
در این بخش از آموزش ruby به یادگیری دستورات و Syntax در زبان روبی میپردازیم. همه فایلهای روبی همانطور که احتمالا تا الان متوجه شدهاید پسوند rb. خواهند داشت.
۱- دستورات ورودی و خروجی در ruby
در ruby برای دریافت ورودی از gets و برای چاپ از دستور puts استفاده میکنیم.
val1 = "This is one" val2 = "This is two" puts val1 puts val2
خروجی کد بالا بصورت زیر است:
This is one This is two
دستور gets برای گرفتن هر ورودی از کاربر از صفحه استانداردی به نام STDIN استفاده میشود.
puts "Enter a value :" val = gets puts val
خروجی بصورت زیر میباشد:
Enter a value : This is 4 #عدد ۴ وارد شده بود This is 5 # عدد ۵ وارد شده بود
۲- تعریف متغیر در ruby
در این بخش از آموزش ruby به بحث متغیرها در ruby میپردازیم. متغیرها درواقع مکانهای حافظه هستند که مقادیر را برای استفاده توسط برنامه در خود نگه میدارند. پنج نوع متغیر وجود دارد که Ruby از آنها پشتیبانی میکند.
الف) متغیرهای سراسری (Global Variables)
متغیرهای سراسری با $ شروع می شوند. متغیرهای سراسرس اولیه دارای مقدار Null هستند و با گزینه w- اخطار ایجاد می کنند. در ادامه مثالی در جهت آشنایی با این متغیرها نشان داده شده است.
$variable = 10 puts "the value is #$variable"
خروجی برنامه بصورت زیر است:
C:\Users\NP\Desktop>test .rb the value is 10
مثال واضحتر برای فهم بیشتر استفاده این نوع متغیر در کد زیر آورده شده است دقت کنید دو کلاس تعریف شده و داخل هرکدام تابعی نوشته شده است که هر دو تابع از دو کلاس متفاوت، میتوانند به محتوای متغیر به دلیل global بودن آن دسترسی داشته باشند و چاپ کنند.
$global_variable = 15 class Class1 def print_global puts "Variable in Class1 is #$global_variable" end end class Class2 def print_global puts "Global variable in Class2 is #$global_variable" end end class1obj = Class1.new class1obj.print_global class2obj = Class2.new class2obj.print_global
خروجی بصورت زیر خواهد بود:
Variable in Class1 is 15 Variable in Class2 is 15
برای تعریف متغیر سراسری از علامت $ قبل از آن استفاده کردیم همچنین توجه داشته باشید که در Ruby، با قرار دادن یک کاراکتر (#) درست قبل از آن متغیر یا ثابت، میتوانید به مقدار هر متغیر یا ثابتی دسترسی پیدا کنید.
ب) متغیرهای instance در روبی
برای تعریف این نوع متغیرها از علامت @ در ابتدای متغیر استفاده میکنیم.
class Customer def initialize(id, name, addr) @cust_id = id @cust_name = name @cust_addr = addr end def display_details() puts "Customer id #@cust_id" puts "Customer name #@cust_name" puts "Customer address #@cust_addr" end end # Create Objects cust1 = Customer.new("1", "Ali", "tabriz, elgoli") cust2 = Customer.new("2", "pooya", "tehran, valiasr") # Call Methods cust1.display_details() cust2.display_details()
خروجی برنامه بصورت زیر است:
Customer id 1 Customer name Ali Customer address tabriz, elgli Customer id 2 Customer name pooya Customer address tehran, valiasr
ج) متغیرهای محلی
متغیرهای محلی با یک حرف کوچک یا _ شروع میشوند و دامنه آنها از ابتدای ” { ” یک کلاس، ماژول، def یا do تا انتهای” } ” میباشد.
د) متغیرهای ثابت
ثابتها با یک حرف بزرگ شروع میشوند. ثابتهای تعریف شده داخل یک کلاس یا پروسیجر، از داخل آن کلاس یا پروسیجر قابل دسترسی هستند و آنهایی که خارج از کلاس یا پروسیجر تعریف شدهاند بصورت سراسری قابل دسترسی هستند.
class Example VAR1 = 300 VAR2 = 400 def show puts "First Value is #{VAR1}" puts "Second Value is #{VAR2}" end end # Create Objects object = Example.new() object.show
و خروجی کد نوشته شده بصورت زیر است:
First Value is 300 Second Value is 400
۳- تعریف آرایه در ruby
آرایه در ruby با علامت [ ] تعریف می شود. برای مثال می توانید نمونه زیر را در نظر بگیرید:
ary = [ "farid", 11, 3.14, "This is a string", "last one", ] ary.each do |i| puts i end
farid ۱۱ ۳.۱۴ This is a string last one
۴- دستور شرطی if و elsif
ساختارهای شرطی ارائه شده در روبی در زبانهای مدرن بسیار رایج است در این بخش از آموزش ruby دستور if و مشتقات آن را یاد خواهیم گرفت.
if conditional [then] code... [elsif conditional [then] code...]... [else code...] end
x = 1 if x > 2 puts "x is greater than 2" elsif x <= 2 and x!=0 puts "x is 1" else puts "I can't guess the number" end
خروجی دستور بالا به شکل زیر است :
x is 1
۵- دستور unless
x = 1 unless x>=2 puts "x is less than 2" else puts "x is greater than 2" end
خروجی دستور بالا بهصورت زیر است:
x is less than 2
در ادامه آموزش ruby به حلقههای تکرار در این زبان برنامهنویسی خواهیم پرداخت.
۶- حلقههای تکرار در ruby
گاهی نیاز هست که دستوری یا عبارتی مکررا به تعداد دفعات مشخصی یا در صورت برآورده شدن شرطی انجام شود برای اینکار از حلقههای تکرار استفاده میکنیم. در ادامه به انواع حلقههای تکرار در ruby میپردازیم.
الف) حلقه for
شکل کلی حلقه For در ruby بدین شکل است:
for VARIABLE in DATA_STRUCTURE STATEMENT end
خوب حالا اجازه بدهید در ادامه آموزش ruby مثالی برای حلقه for بزنیم به تکه کد زیر توجه کنید.
for i in 0..6 puts "local variable Value is #{i}" end
در کد بالا محدوده ۰..۶ را را برای i تعریف کردهایم. دستور for i in 0..6 اجازه میدهد تا i مقادیری را در محدوده ۰ تا ۶ (شامل ۶ نیز هست) به خود اختصاص دهد و در ادامه تک تک اعداد را به همراه جملهای چاپ کند. خروجی دستور به شکل زیر است:
Value of local variable is 0 local variable Value is 1 local variable Value is 2 local variable Value is 3 local variable Value is 4 local variable Value is 5 local variable Value is 6
ب) حلقه for…in
حلقه for…in تقریباً دقیقاً معادل حلقه for ای است که در بالا توضیح داده شد، با این تفاوت که یک حلقه for، محدوده جدیدی برای متغیرهای محلی ایجاد نمی کند. عبارت حلقه for یعنی مثال پایین، با کلمه رزرو شده do، یک خط جدید یا یک نقطه ویرگول از کد جدا میشود. شکل کلی این حلقه به شکل زیر است:
(expression).each do |variable[, variable...]| code end
به عنوان مثال:
(۰..۶).each do |i| puts "local variable Value is #{i}" end
خروجی دستور بالا به شکل زیر است:
Value of local variable is 0 local variable Value is 1 local variable Value is 2 local variable Value is 3 local variable Value is 4 local variable Value is 5 local variable Value is 6
ج) حلقه while
شکل کلی دستور به شکل زیر است اجرای عبارت داخل end … while تا زمان برقراری شرط ادامه خواهد داشت.
while conditional [do] code end
در ادامه به مثالی از حلقه while توجه کنید.
$i = 0 $num = 5 while $i < $num do puts("number of loop i = #$i" ) $i +=1 end
خروجی دستور بالا به شکل زیر است:
number of loop i = 0 number of loop i = 1 number of loop i = 2 number of loop i = 3 number of loop i = 4
د) حلقه تکرار until
این حلقه تا زمانی که شرط برقرار شود ادامه دارد به محض برقراری شرط از حلقه خارج میشود به مثال زیر توجه کنید.
$i = 0 $num = 7 until $i > $num do puts("number of loop i = #$i" ) $i +=1; end
خروجی دستور بالا به شکل زیر است:
number of loop i = 0 number of loop i = 1 number of loop i = 2 number of loop i = 3 number of loop i = 4 number of loop i = 5 number of loop i = 6 number of loop i = 7
با مقایسه دو مثال بالا متوجه تفاوت این دو حلقه خواهید شد. در پایان یادآوری می کنیم که آموزش هر زبان برنامه نوسی نیازمند تمرین تکرار و یادگیری مداوم است. پیشنهاد می کنیم برای آموزش کامل و بهتر از آموزش مقدماتی برنامه نویسی روبی Ruby فرادرس استفاده کنید.
سخن آخر در مورد آموزش ruby
ruby یک زبان برنامهنویسی شیءگرا و همه منظوره است که تا حدودی شبیه پایتون بوده و استفاده و یادگیری آن نسبت به دیگر زبانهای شیءگرا آسان است. در این مقاله به آموزش ruby و کاربرد آن پرداختیم و سعی کردیم شما را با این زبان برنامهنویسی تا حدی آشنا کنیم. برای این منظور در ابتدا در مورد نصب و راهاندازی ruby صحبت کردیم و در ادامه آموزش سعی کردیم تا حد امکان در مورد دستورات پایه این زبان مطالبی را برای یادگیری آسان روبی برای شما عزیزان فراهم کنیم. از اینکه تا انتهای این مقاله با ما همراه بودید از شما سپاسگزاریم.
2 پاسخ
ممنون از راهنمایی تون
من تو حلقه تکرار مشکل دارد عبارتی که می خوام تکرار نمیشه