מדריך זה נמצא כעת בשלבי כתיבה…
אשמח לקבל פניות/בקשות/הצעות לשיפור בכתובת 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.
מבוא
אם בת ישראלית רוצה ללמוד לתכנת בשפת רובי, אז עליה ללמוד ממדריך זה.
ננתח את המשפט הנ”ל:
המשפט פותח במילה “אם”. המילה אם מבטאת התניה.
אשכתב את המשפט בצורה הבאה: אם תנאי כלשהו מתקיים אז משהו צריך להתבצע.
המשפט מורכב מחלקים קבועים ומחלקים משתנים. החלקים הקבועים מהווים את הבסיס למשפט, את הנוסח שלו. החלקים המשתנים נקבעים לפי הכותב והוא יקבע מהו התנאי ומה יקרה במידה והתנאי מתקיים.
ניתן לדמות את זרימת התוכנית כזרימת מים, ואת הקוד ניתן לדמות למסלול בו המים עוברים. כאשר משתמשים בתנאים בקוד, זרמי מים שונים עוברים מסלול שונה.
תנאי הוא למעשה טיפוס בוליאני. משתנה בוליאני הוא משתנה בגודל ביט בודדת, אשר יכול להכיל רק שני ערכים בלבד- נכון/לא נכון, כן/לא, 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
מדריכי תכנות - אוסף מדריכי התכנות בפנגווין.