Author Topic: اساسيات  (Read 754 times)

Ahmed Youssef

  • Helping Freak
  • Administrator
  • Active Member
  • *****
  • Posts: 242
    • View Profile
    • WWW
    • Email
اساسيات
« on: October 26, 2008, 06:19:36 AM »

الفصل الثاني: أهلا بالعالم

برنامجك الأول مع Ruby سيكون Hello, World وهى عادة في أي دورة أن يتبدأ به     

افتح محررك واحفظ الملف باسم hi.rb ، لاحظ إن rb هو إمتداد سكربتات ruby ، واكتب:
Code: [Select]
puts “Hello, World!”

احفظ التعديل
وشغل الملف كالتالي:
Code: [Select]
ruby hi.rb

C:\Documents and Settings\StrikerX>ruby hi.rb
Hi Ruby!

C:\Documents and Settings\StrikerX>hi.rb
Hi Ruby!


ماذا تعني puts ؟
puts هى دالة تستخدم فى طباعة ال strings -سلاسل نصية-
ملاحظة: إذا لم يتعرف نظامك على ruby فكل ما عليك فعله هو إخباره بالمسار الصحيح عندك كالتال:
Code: [Select]
set path=%path%;RUBY_PATH\bin


حيث RUBY_PATH هو المسار الذي ثبت فيه Ruby

أو كالتالي:

1)انقر بالمين على My Computer ثم Properties
2) اختر Advanced Tab
3)ثم Environment Variables
4)في Variables لـ (UserName) : على  PATH ثم اختر Edit
5)أضف RUBY_PATH;
لا تنس إضافة الفاصلة المنقوطة (;)

سنتعامل فى معظم الوقت مع Ruby بطريقة التفاعلية، بمعنى أن السطر الذي ستكتبه سينفذ في وقته، مثال ذلك:
Code: [Select]
C:\Documents and Settings\StrikerX>ruby -e "puts 'Hello!'"
Hello!


لاحظ إن ال e هى switch معناها execute وهى بتنفذ العبارة التي بعدها ولكنه أسلوب شاق قليلا، لذا سنستخدم irb script أو تقدر تستخدم المتوفرة فى الfxri
فى ال cmd اكتب
Code: [Select]
irb -v

C:\Documents and Settings\StrikerX>irb -v
irb 0.9.5(05/04/13)


إذا لم يكن موجودا عندك فثبته باستخدام  yum او apt-get حسب توزيعتك
Code: [Select]
yum install irb

sudo apt-get install irb

Code: [Select]
irb(main):001:0> puts "Hello, RUBY!"
Hello, RUBY!
=> nil#

لاحظ كلمة nil وهى تعي أن تعبيرك لم يرجع أي قيمة .. ستتعرف عليه اكثر لاحقا
nil = null = None

روبي كحاسبة
تستطيع إستخدام روبي كحاسبة،  وتنفيذ عمليات حسابية
Code: [Select]
irb(main):002:0> 1+2
=> 3
irb(main):003:0> 8*9
=> 72
irb(main):004:0> 10/2
=> 5
irb(main):005:0> 6-9
=> -3


مرحبا روبي بشكل أفضل!
أي سكربت لما تكتبه فى روبي أو أي لغة نصية مثل بايثون و بيرل ، يفترض أن يكون السطر الأول هو مسار المفسر الخاص باللغة.

كيف ستعرف المسار ؟
بإستخدام which
Code: [Select]
%>which ruby
/usr/bin/ruby


افتح محررك المفضل واكتب
Code: [Select]
#!usr/bin/ruby
puts “Hi, Ruby!”

احفظ الملف ك hi2.rb
وشغله كالتالى
Code: [Select]
%>./hi2.rb

سيظهر لك الرسالة التالي:  Permission denied
فواضح أنه بحاجة لصلاحيات التنفيذ استخدام chmod لإعطاه الصلاحيات اللازمة:
Code: [Select]
%> chmod 755 hi2.rb

%> ./hi2.rb
Hi,Ruby!




التعليقات
تخيل أنك كتبت برنامجا مثلا 2000 سطر وجئت لتراجعه بعد سنة واكتشفت إنك نسيت لماذا استخدمته، ولماذا عملت كذا فى الكود ؟ إذا كنت أنت صاحب الكود الأصلي هكذا، فمابالك بشخص يطالع مصدر برنامجك ؟
بكل بساطة التعليقات هي فن التوضيح لمصدر برنامجك، بإن تضيف تلميحات وتوضيحات على الجزئيات التى تتوقع أنها  غامضة في برنامجك، ولاحظ أن المفسر أو المترجم سيتجاهل التعليقات هذه،  ولن ينفذها لأنه يفهم أن هذه التعليقات  للمبرمج وللشخص الذي سيقرأ المصدر ولكن ليس له هو.
مرحبا روبي بشكل أفضل!
افتح محررك المفضل واكتب:
Code: [Select]
#!usr/bin/ruby

puts “Hi, Ruby!”  #printing 'Hi, Ruby' on the screen!

لاحظ أن معظم اللغات النصية أو المفسرة تستخدم العلامة: # فى كتابة التعليقات،  وهذا الأسلوب أفضله شخصيا مع أنه  توجد لغات تقدم أساليب مختلفة إضافة لـ # ولكني أستخدم العلامة # دائما.

تستطيع أن تجعل التعليق يمتد على كذا سطر .. اذا كنت من مستخدمى C مثلا فستجده مشابها لـ /*          */  وفى ruby  ويكون هكذا:
Code: [Select]
=begin


=end

مثال:
Code: [Select]
#!usr/bin/ruby

=begin
Author : ahmed youssef
Language: Ruby
Purpose : printing Hello, World!
=end

puts “Hello, World!”




المتغيرات
من الاسم معناها متغيرات أي أنها بتتغير قيمتها خلال برنامجك
على سبيل المثال متغير بإسم String سيشير لـ "Hello, World”

لاحظ أن string التي تحمل اسم Hello, World مخزنة فى مكان معين فى الذاكرة .. ولكي نستدعيها داخل برنامجنا يجب أن نعمل لها اسم مستعار لمكانها حتى نقدر نصل للبيانات المخزنة فيها .. لذا نحن لما أردنا استخدام Hello, World أعطيناها اسم String ، وكلما نستخدم كلمة String  خلال برنامجنا سيستدعى Hello, World مباشرة !!

لاحظ المثال التالي:
Code: [Select]
irb(main):004:0> name="Ahmed"
=> "Ahmed"#

irb(main):007:0> puts name
Ahmed
=> nil


لاحظ الفرق بين name و "name"
الأولى هى متغير والثانية هى سلسلة نصية:
Code: [Select]
irb(main):008:0> puts name
Ahmed
=> nil
irb(main):009:0> puts "name"
name
=> nil##

لاحظ الأمثلة التالية
Code: [Select]
name=”Ahmed Youssef”
city=”Cairo”
lang=”Ruby”
site=”P.F”
age=66


أنشأنا متغيرات بإسمname, city, lang, site, age وأعطينها قيم مناسبة لها

 تستطيع أن تعرفهم على سطر واحد كالتالي:
Code: [Select]
name, age=”Ahmed”, 20


ملحوظة: لاتسمى متغيراتك بكلمات محجوزة باللغة

كيفية الحصول على نوع المتغير ؟
بكل بساطة Ruby مثلما قلنا سابقا كل شيء فيها عبارة عن Object أو كائن وتوجد أشياء أساسية  فى كل كائن منها الطريقة class وهذه ترجع لنا نوع الكائن نفسه .. لاحظ التالي:
Code: [Select]
irb(main):020:0> name="Ahmed"
=> "Ahmed"
irb(main):021:0> name.class
=> String

irb(main):022:0> x=10
=> 10
irb(main):023:0> x.class
=> Fixnum##

وهكذا ..
كيفية التحويل من  int إلى float
 بيتم باستخدام الطريقة  to_f  وهى إختصار ل to float
Code: [Select]
irb(main):024:0> x=10
=> 10
irb(main):025:0> f=x.to_f
=> 10.0###


الطريقةto_s 
وهي طريقة تحول الكائن إلى  string (سلسلة نصية)، مثلا لو يوجد كائن كالتالي:
Code: [Select]
x=5555

الكائن هذا عبارة عن عدد صحيح  int عادى ، ولكن نحن نريد تحويله إلى سلسلة نصية ؟ فسنستخدم الطريقة to_s  كالتالي:
Code: [Select]
irb(main):026:0> x=5555
=> 5555
irb(main):027:0> s=x.to_s
=> "5555"
irb(main):028:0> x.class
=> Fixnum
irb(main):029:0> s.class
=> String


لاحظ بمناسبة التحويل انك إذا مررت المعامل 2 لـ int التي تريد تحويلها ستتحول إلى صيغة الثنائية  وإذا مررت المعامل ١٦ ستتحول إلى الصيغة الست عشرية كالتالي:
Code: [Select]
irb(main):030:0> 14.to_s(2) #binary
=> "1110"
irb(main):031:0> 14.to_s(16) #hex
=> "e"

الثوابت
هى عبارة عن ثوابت لا تتغير قيمتها طوال برنامجك .. أشهر مثال عليها هو PI = 3.1459
يفضل أن تتبع الإسلوب القياسى فى الكتابة بإن تجعل حروف الثوابت حروف كبيرة.

صفوف الأعداد

Ruby فيها العديد من الصفوف المستخدمة فى التعبير عن الأرقام مثل: Integer و Fixnumو Float و Bignum و Rational لكن نحن لا يهمنا غير ال Integer وال Fixnum و تستطيع أن تطلع على الباقى في التوثيق.

كيف يتم التحويل القسري ؟
على فرض اعندنا float على الشكل هذا 10.8
ونريد أن نحوله إلى integer ، فكل الذي عليك هو تمرر الرقم للصف Integer  كالتالي:
Code: [Select]
irb(main):035:0> floatVar=10.8
=> 10.8
irb(main):036:0> intVar=Integer(floatVar)
=> 10

لاحظ إن ال int  لا يتعامل مع الفاصلة العائمة فيتجاهلها وتبقى القيمة الصحيحة من ال float هى 10

إذا string يمكن أن يكون Integer، على سبيل المثال
“56” نقدر أن نحوله لرقم كالتالى 56
Code: [Select]
irb(main):037:0> Integer("56")
=> 56

لكن إذا كان على الشكل التالي مثلا "abc” فلن ينفع، لأن محتوياته ليس أرقام ، بل حروف.

التحويل من Binary
Code: [Select]
rb(main):042:0> Integer (00001110)
=> 584
i

وهكذا ..

succ, next
هى طرق تعيد القيمة التالية للرقم، على الشكل التالي:
Code: [Select]
puts 1.succ #returns 2
puts 5.next #returns 6




Logged

Life is just a chance to grow a soul. - A. Powell
Weblog: http://ahmedyoussef.wordpress.com/