המדריך השלם לתכנות בשפת רובי (Ruby) / הורחב ע"י אור דבורי

מדריך זה נמצא כעת בשלבי כתיבה…

אשמח לקבל פניות/בקשות/הצעות לשיפור בכתובת gnudles@nana.co.il

הקדמה

לפני שמתחילים

מהלך העבודה

כתיבת התכנית

שם הקובץ- hello.rb

את התכנית ניתן לכתוב בכל עורך טקסט. אנו נשתמש בדוגמה זו בעורך הטקסט של Gnome - כלומר gedit

כתבי או כתוב תכנית פשוטה בעורך הטקסט,

קוד:

class Hello
  def initialize(name)
    puts "Hello " + name
  end
end

hello = Hello.new("world")

בהמשך תבין/י מה משמעותה של כל שורה בקוד הנ”ל.

כתיבת הערות

יש המון סיבות הגיוניות מדוע רצוי לכתוב הערות בתוך התוכנית שאתם כותבים.

מסיבה זאת, איני מתכוון לספר לכם, הקוראים והקוראות (כבר אמרתי ששפת רובי מתאימה לצורת החשיבה של רוב הנשים?) מדוע יש לכתוב הערות, אך אספר לכם כיצד: ראשית, יש לכתוב סולמית ”#” בסוף השורה עליה רוצים להעיר או בתחילת שורה חדשה. לאחר מכן יש לכתוב את ההערה. כל מה שתכתבו מהסולמית עד לסוף השורה יחשב כהערה והמריץ של רובי יתעלם ממנו.

הרצת התכנית

אנו נריץ את התכנית בעזרת מתרגם ruby, מתוך המסוף

    ruby hello.rb

כך צריכה להראות התכנית בעורך הטקסט ובמסוף בו אתם מבצעים את ההרצה.

(לחץ/י על התמונה על מנת להגדילה)

הפיכת הסקריפט לניתן להרצה

קודם כל עלינו לדעת היכן מותקן מתרגם הרובי שלנו. נרשום ב Terminal את הפקודה הבאה:

which ruby    

בד”כ הפלט המתקבל מפקודה זו הוא usr/bin/ruby/

נוסיף את השורה המתקבלת מהטרמינל לשורה הראשונה בקוד שלנו, אך נוסיף לפניה !#

(Sharp-Bang)

הקוד שלנו יראה כך:

#!/usr/bin/ruby
class Hello
  def initialize(name)
    puts "Hello " + name
  end
end

hello = Hello.new("world")

השלב האחרון שנותר לך לעשות הוא “לספר” למערכת להתייחס לקובץ זה כאל קובץ הרצה. נריץ ב Terminal את הפקודה בתוספת שם הקובץ שברצונך להפוך לקובץ הרצה. במקרה שלנו יש לרשום את השורה הבאה:

chmod +x hello.rb    

עכשיו בפעם הבאה שתנסי או שתנסה לפתוח את הקובץ, יפתח הדיאלוג הבא שיאפשר לך לבחור את הפעולה שברצונך לעשות עם הקובץ.

מתקדמים

בהמשך העבודה בודאי תרצו להתקין כלי פיתוח נוספים וספריות פיתוח חדשות. אפשר למצוא מדריכים לשימוש בכלים אלו ברשת ופה באתר.

בסיסי השפה

אופרטורים

האופרטורים הבסיסיים:

+ חיבור

- חיסור

* כפל

/ חילוק

** חזקה

() סוגריים

הדרך הטובה ביותר ללמוד היא ע”י דוגמאות.

לכן, בהנחה שהתקנת את המסוף Interactive Ruby עליך לפתוח את ה Terminal ולהריץ את השורה הבאה:

irb --simple-prompt    

כעת תוכל/י להשתעשע עם מספרים ואופרטורים

הבט/י בדוגמא הבאה

(לחץ/י על התמונה על מנת להגדילה)

הערה: כדי לצאת ממסוף הרובי בחזרה לטרמינל יש להקיש “exit” או ללחוץ Ctrl+d .

משתנים

מבוא

משתנים הם תאים בזיכרון אשר שייכים לתוכנית המורצת.

משתנים יכולים לשמור מספרים מסוגים שונים, מחרוזות, ערכים בוליאניים וכד'.

למתכנתים (ובעיקר למתכנתות), יש צורך לשמור ערכים במשך ריצת התוכנית ולשנות את ערכם בזמן ריצה.

נניח ומתקבל קלט מהמשתמש/ת. יש צורך לאחסן את הקלט הזה לשלב מאוחר בתוכנית ולפעול בהתאם לו או לעבד אותו.

ברוב שפות התכנות, משתנים המכילים מספרים מתחלקים לשני סוגים:

  • מספרים שלמים (ללא נק' עשרונית)
  • מספרים ממשיים (עם נק' עשרונית)

כפי שבוודאי הבחנת, בדוגמא המובאת לעיל (irb) כאשר רשמתי 1/2 התוצאה היתה 0, אך כאשר רשמתי 1.0/2 התוצאה היתה 0.5 . זאת מכיוון שכאשר המפענח של רובי מבצע פעולות על משפרים שלמים, התוצאה תיהיה מספר שלם (ותעוגל כלפי מטה). אם המפענח יתקל בביטוי במספר ממשי הוא יתייחס לתוצאה כמספר ממשי.

אם כן, פתח/י את הטרמינל ואז את ה irb (כמו בפרק על האופרטורים) והתחל להציב ערכים למשתנים כמתואר בתמונה.

שם המשתנה

שים/י לב, בדוגמא, למשתנים אין שמות משמעותיים, אך בעת כתיבת תוכניות יש לתת שם משמעותי שמציין את תוכן התא. שם משתנה חייב להתחיל באות אנגלית קטנה. משתנה ששמו יתחיל באות גדולה יחשב כקבוע (constant) שם משתנה שיכיל מספר מילים יופרד בקו תחתון בין מילה למילה, לדוגמא: student_age. אם ינתן למשתנה השם studentage לא תרשם שגיאה אך משתנה עם שם כזה אינו קריא ומובן.

קבועים

קבועים הם משתנים שמאותחלים פעם אחת בעת יצירתם. הקבועים נשארים קבועים לכל אורך התוכנית וניסיון לשנות את ערכם יעורר שגיאה. כדי להגדיר קבוע יש ליצור משתנה ששמו מתחיל באות אנגלית גדולה. (לדוגמא Pi או The_day_that_I_started_Learning_Ruby).

משתני מחרוזת

מחרוזת היא משתנה המכיל רצף של תווים. קיימות מספר מתודות שתוכל/י לבצע על משתני מחרוזות.

ניתן להבין את חלקן בהסתכלות בדוגמא הבאה:

על מנת ללמוד על עוד מתודות הקיימות למחרוזות, תוכל/י לפתוח את ה Ruby Browser ולתרגל עם המסוף דרך irb.

וכמובן שגם אפשר להסתכל ב manuals…

קלט-פלט בסיסי

כידוע לכם/ן, על מנת שתוכנית תיהיה אינטראקטיבית, עליה לשלב קלט מהמשתמש, לבצע עליו פעולות בהתאם, ולהציג אותו בחזרה למסך. בחלק זה לא נשתמש ב irb. הגיע הזמן שנשתמש במה שלמדנו.

צור/צרי קובץ חדש בשם כלשהו עם סיומת rb. אני אקרא לקובץ שלי usr_in_out.rb

בכל שפות התכנות, נהוג לכתוב כהערה את שם הקובץ קוד. לכן תחילת התוכנית שלנו תראה כך:

#!/usr/bin/ruby
# usr_in_out.rb

כיצד מבצעים פלט?

ברובי קיימת פקודה בשם puts.

התחביר שלה הוא כזה:

puts "Hello World"

לאחר סיום הפקודה יכתב למסך Hello World

כיצד מבצעים קלט?

ברובי, קיימת פונקציה בשם gets המחכה לקלט מהמשתמש ומחזירה מחרוזת קלט למי שקרא לה.

משתנה יכול לאסוף את הקלט המוחזר מהפונקציה לעצמו, וכך זה נעשה בד”כ.

שילוב האלמנטים הבסיסיים

עכשיו לאחר שלמדנו משתנים וקלט ופלט, אפשר לחבר קוד שמקבל קלט מהמשתנה, מעבד אותו, ומדפיס את התוצאה.

אז קדימה, לעבודה:

1. יש לכתוב תוכנית הקולטת שלושה מספרים ומחשבת ומדפיסה את סכומם ואת הממוצע שלהם.

2. יש לכתוב תוכנית הקולטת מחרוזת

ומחשבת ומדפיסה את השורש של המספר המציין את אורכה (תוך שימוש באופרטור החזקה…)

לדוגמא המחרוזת “high” אורכה 4 תווים (השורש יהיה 2) ולכן יודפס המספר 2.

תנאים

מבוא

נניח שמורה רוצה לבנות תוכנית שבודקת עבור כל תלמיד ותלמידה האם הוא מצטיין או מצטיינת לפי הציון שלו/ה במבחן.

אז על המורה לכתוב תנאי שנראה כך:

אם ציון שהתקבל גבוה מ 90 אז הדפס על המסך “מצוין!”.

ננתח את המשפט הנ”ל:

המשפט פותח במילה “אם”. המילה אם מבטאת התניה.

אשכתב את המשפט בצורה הבאה: אם תנאי כלשהו מתקיים אז משהו צריך להתבצע.

המשפט מורכב מחלקים קבועים ומחלקים משתנים. החלקים הקבועים מהווים את הבסיס למשפט, את הנוסח שלו. החלקים המשתנים נקבעים לפי הכותב והוא יקבע מהו התנאי ומה יקרה במידה והתנאי מתקיים. “אם” ו-“אז” הם החלקים הקבועים במשפט.

ניתן לדמות את זרימת התוכנית כזרימת מים, ואת הקוד ניתן לדמות למסלול בו המים עוברים. כאשר משתמשים בתנאים בקוד, זרמי מים שונים עוברים מסלול שונה.

תנאי הוא למעשה טיפוס בוליאני. משתנה בוליאני הוא משתנה בגודל ביט בודדת, אשר יכול להכיל רק שני ערכים בלבד- נכון/לא נכון, כן/לא, 0/1, אמת/שקר או איך שלא תקראו להם. אבל ברובי אנחנו נשתמש בערכים true ו false כי ככה קבעו לנו.

לולאות
מערכים
סיכום ביניים
פונקציות
רקורסיה
טיפול בשגיאות ובחריגים
נימים
מבנים
קבצים
המחלקה והאובייקט
הורשה
תשובות לתרגילים

תרגיל 1:

#!/usr/bin/ruby
puts "Give me a number:"
a=gets.chomp # removes the '\n' before the variable assignment
# variable a contains the input String
puts "Just one?! Give me another one..."
b=gets.chomp.to_f # assign variable b a Float value
# variable b contains the input String
puts "Come On! Give me the last one!"
c=gets
# variable c contains the input String
a=a.to_f # convert the String into a Float
b.chomp! # remove the '\n' (new line) at the end of the string
b=b.to_f # Well, you can guess what this line do.
c.chomp! # and also that line.
c=c.to_f # and that line...
sum= a + b + c # sum up the numbers.
avg=sum/3 # divide the sum by 3 to get the average.
puts ("Their sum is "+sum.to_s+" and their average is "+avg.to_s)

פלט לדוגמא:

Give me a number: 
5
Just one?! Give me another one... 
3
Come On! Give me the last one! 
2.5
Their Sum is 10.5 and their average is 3.5

מדריכי תכנות

מדריכי תכנות - אוסף מדריכי התכנות בפנגווין.

מדריכים/מדריך_שלם_לשפת_רובי_ruby.txt · שונה לאחרונה ב: 2009/11/01 21:34 על ידי ordvori
chimeric.de = chi`s home Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0