לדלג לתוכן

Visual Basic/יסודות השימוש בשפה/הגרלת מספר אקראי

מתוך ויקיספר, אוסף הספרים והמדריכים החופשי
Visual Basic 6.0



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

הפקודות להגרלת מספר אקראי

[עריכה]

כדי להפעיל את התכונה אשר מאפשרת לנו להגריל מספר, יש לכתוב את המילה Randomize (הגרל) במקום כלשהו בתוכנה, לפני שורת-הקוד הראשונה בה אנו רוצים להגריל מספר (לא בהכרח מיד לפני השורה). פקודה זו מפעילה את הפונקציה שמגרילה מספרים. מספיק לכתוב פקודה זו רק פעם אחת, אפילו אם אנו רוצים להגריל כמה מספרים שונים.

כעת, בכל שורה שלאחר הפקודה Randomize, אנו יכולים להשתמש בפונקציה Rnd כדי להגריל מספר. פקודה זו מגרילה שבר עשרוני, בין 0 ל-0.999. נבנה תוכנה פשוטה שתדגים את השימוש בפקודת ההגרלה. נפתח טופס חדש ונמקם בו כפתור-פקודה ותיבת-טקסט. אנו רוצים שבכל פעם שנלחץ על הכפתור התיבה תציג שבר אקראי, לכן נכתוב בחלון הקוד את השורות הבאות:

Private Sub Command1_Click()
    Randomize
    Text1.Text = Rnd
End Sub

הפקודה Rnd תיתן לנו מספר בטווח 0-0.999. כעת נניח, במקום זאת, שאנו רוצים תוכנה שתגריל עבורנו מספר שלם בטווח 0-99. לצורך כך, נכפיל את תוצאת ההגרלה ב-100, ונעגל אותה כלפי מטה. כך, אם ההגרלה תוציא 0, התוצאה הסופית תשאר 0; אם נקבל 0.999, ההכפלה תיתן לנו 99.9, והתוצאה הסופית תהיה 99; אם נקבל, למשל, 0.482, התוצאה הסופית תהיה 48, וכו'. כדי לעגל מספר כלפי מטה, נשתמש בפקודה Int. שורת הקוד הרלוונטית תראה כעת כך:

Text1.Text = Int(Rnd * 100)

על פי העקרון שהשתמשנו בו כאן, ניתן לאמר באופן כללי שכאשר אנחנו רוצים להגריל מספר בטווח 0 עד N, עלינו לכתוב את הפקודה הבאה:

 Int(Rnd * N+1)

אפשרות נוספת, במקום להשתמש בפקודה Int היא להצהיר על משתנה מסוג שלם (Integer) ולשים בתוכו את הערך המוגרל. כאשר אנו שמים שבר בתוך משתנה שאמור להכיל מספר שלם, השבר מעוגל אוטומטית כלפי מטה. הקוד יראה כעת כך:

Private Sub Command1_Click()
    Dim X As Integer
    Randomize
    X = Rnd * 100
    Text1.Text = X
End Sub

כעת, הבה נדון במספר נקודות חשובות המופיעות בקטע הקוד הזה.

טווח של משתנה

[עריכה]

יתכן ששמת לב כי בקטע הקוד האחרון הצהרנו על המשתנה X בתוך חטיבת-הקוד של כפתור-הפקודה Command1; זאת בניגוד לכל דוגמאות-הקוד הקודמות, בהן הצהרנו משתנים תחת החלק (Declarations), שאינו חלק משום חטיבת קוד. ישנה חשיבות רבה למיקום בו מבצעים הצהרה על משתנה.

בפרק הקודם, השתמשנו במשתנה שהגדרנו בשני מאורעות שונים: במאורע cmd_add_Click הצבנו ערך בתוך המשתנה X, ובמאורע cmd_result_Click השתמשנו בערך הנמצא במשתנה X. במילים אחרות, היינו צריכים נגישות למשתנה זה מכל התוכנה שלנו.

בתוכנה שכתבנו כעת, השתמשנו במשתנה בשם X רק בתוך חטיבת קוד אחת, Command1_Click. לאחר שהמחשב מסיים לעבד את כל הפקודות שבתוך חטיבת קוד זו, אין לנו עוד צורך במשתנה X, כיוון שלא נשתמש בערך שנמצא בו עוד. גם אם נלחץ פעם נוספת על הכפתור Command1, לא יהיה צורך שנזכור מה היה ערכו של המשתנה בפעם שעברה שהכפתור נלחץ, כיוון שכעת נשים בו ערך חדש. לכן, אנו מגדירים את המשתנה בתוך חטיבת הקוד של הכפתור, וכתוצאה מכך, המשתנה "נעלם" ברגע שמסתיים הביצוע של קוד זה. אם ננסה להשתמש במשתנה זה במקום אחר בקוד (למשל, מתוך חטיבת קוד של כפתור-פקודה אחר), נקבל הודעת שגיאה, כיוון שלחטיבות קוד אחרות אין נגישות למשתנה שהוגדר בתוך חטיבת קוד מסויימת.

מושג זה נקרא טווח (Scope) של משתנה. הטווח של המשתנה X במקרה זה מוגבל רק לחטיבת הקוד Command1_Click. אנו עוד ניגע במושג הטווח במקומות נוספים בהמשך הספר.

הזחה

[עריכה]

בקטעי הקוד שבפרק זה, הסטנו את שורות הקוד שבתוך המאורע מעט פנימה. עיצוב זה נקרא הזחה (Indentation). כאשר כותבים קוד בתוך חטיבת-קוד (Code Block), נהוג להזיח פנימה את כל שורות הקוד שבתוך החטיבה (אך לא את שורת הפתיחה ושורת הסיום של החטיבה - במקרה זה, השורה Private Sub‎... והשורה End Sub). עיצוב כזה של קוד נחשב לכתיבת קוד נכונה, ונעשה בו שימוש מעתה ועד סוף הספר.

כאשר ישנן חטיבות קוד מקוּננות (Nested) - כלומר, חטיבת קוד אחת הנמצאת בתוך חטיבת-קוד אחרת - החטיבות הפנימיות יותר מוזחות יותר פנימה. דוגמאות לכך נראה בהמשך הספר.

ברוב סביבות העבודה, מבצעים הזחה באמצעות מקש הטאב (Tab). לחיצה על מקש זה מזיחה את השורה 4 רווחים פנימה. ב-Visual Studio, ניתן לשנות את כמות הרווחים בהזחה דרך התפריט Tools > Options, תחת המחיצה Editor, באמצעות ההגדרה Tab Width; מומלץ להשאיר הגדרה זו על 4 רווחים, כיוון שזהו הנהוג ברחבי העולם בתכנות Visual Basic כמו גם בשפות תכנות אחרות.

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

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