Visual Basic/יסודות השימוש בשפה/שימוש במשתנים

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



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

הגדרת משתנה[עריכה]

ברוב שפות התכנות, יש צורך להצהיר (Declare) על משתנה, לפני שניתן לעשות בו שימוש. ב-Visual Basic ניתן להשתמש במשתנים גם בלי להצהיר עליהם מראש, אך נהוג ומומלץ להצהיר עליהם בכל זאת, כיוון שדבר זה מקל על הקריאה וההבנה של הקוד.

את ההצהרה מבצעים לרוב בחלק העליון ביותר של חלון הקוד, מעל כל הבלוקים של המאורעות. שים-לב שכאשר סמן הכתיבה נמצא בחלק זה של הקוד, בתיבת הטקסט העליונה השמאלית כתוב General (כיוון שחלק זה של הקוד שייך לתוכנה הכללית, ולא לאובייקט מסוים), ובימנית כתוב Declarations (כיוון שזהו החלק המתאים להצהרות על משתנים). כתבו את קוד ההצהרה כך:

Dim VariableName As Type

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

שמות משתנים[עריכה]

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

למשתנים, כמו לאובייקטים, ישנו סטנדרט שמות מקובל - שמו של משתנה לרוב מתחיל באות המייצגת את הטווח (Scope) שלו - מושג אותו תלמד בהמשך - לאחר מכן שלוש אותיות המייצגות את סוג המשתנה, ולאחריהן תיאור קצר של תפקיד המשתנה. למרות הסטנדרט הזה, ישנם מקרים רבים בהם נותנים למשתנה שם שהוא בעל אות אחת בלבד. נהוג, למשל, שהשמות X, Y, I, N מייצגים משתנים מספריים, S מכיל מחרוזת (String) כלומר סדרה של אותיות, ועוד.

סוגי משתנים[עריכה]

לכל משתנה יש סוג או טיפוס (Type), אשר קובע מה המשתנה מכיל. להלן רשימה של סוגי המשתנים הנפוצים יותר.

Info icon.png
משתנה שלם מורכב מ-2 בתים, כלומר 16 ביטים. לכן, משתנה זה יכול להכיל 2 בחזקת 16 מספרים, כלומר 65,536. כיוון שהמשתנה צריך להיות מסוגל לקלוט גם מספרים שליליים, טווח-המספרים המעשי קטן בחצי, כיוון שבפועל רק 15 ביטים מכילים את המספר עצמו (2 בחזקת 15 הוא חצי מ-2 בחזקת 16), והביט ה-16 קובע האם המספר חיובי או שלילי. בנוסף, המספר 0 נחשב למספר חיובי לצורך העניין, ולכן הטווח החיובי של משתנה שלם קטן באחד מהטווח השלילי (כיוון שהטווח החיובי מתחיל מהמספר 0, והטווח השלילי מתחיל ב-1-).

משתנה שלם ארוך מורכב מ-4 בתים, כלומר 32 ביטים. לכן, שלם ארוך תופס פי 2 מקום משלם רגיל, וטווח-המספרים שלו הוא ריבוע טווח-המספרים של שלם רגיל (2 בחזקת 32, במקום בחזקת 16).

נקודה צפה רגילה היא, כמו שלם ארוך, בגודל 4 בתים, ונקודה צפה כפולה היא בגודל 8 בתים (64 ביטים). חלק מהבתים מייצגים את ספרות המספר וחלק את מיקום הנקודה העשרונית, לכן גודל המספר בא על חשבון הדיוק אחרי-הנקודה.

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

משתנה מסוג בוליאני מייצג ביט אחד בלבד.

שלם (Integer) - 
משתנה המכיל מספר שלם בגודל לא קטן מ-32,768- ושאינו עולה על 32,767 (2 בחזקת 15).
שלם ארוך (Long integer, בקיצור Long) - 
משתנה המכיל מספר שלם, שגודלו אינו עולה על 2 בחזקת 31 ואינו קטן ממינוס 2 בחזקת 31 (בערך 2 מיליארד). משתנה זה תופס יותר זכרון משלם רגיל, לכן נהוג לא להשתמש בו כאשר ניתן להסתפק בשלם.
נקודה צפה - דיוק רגיל (Single-Precision Floating Point, בקיצור Single) - 
משתנה המכיל שבר או מספר מעורב. משתנה זה רושם בנפרד את ספרותיו של המספר (לפי הסדר), ובנפרד את מיקומה של הנקודה העשרונית במספר. לכן, גודלו של המספר בא על-חשבון מספר הספרות אחרי הנקודה. מבחינת זכרון, משתנה מסוג זה תופש אותה כמות מקום כמו שלם ארוך.
נקודה צפה - דיוק כפול (Double-Precision Floating Point, בקיצור Double) - 
זהה לסוג הקודם מבחינת תפקידו, אך תופס פי שניים מקום, ולכן יכול להכיל מספרים שיהיו גדולים ו/או מדויקים יותר.
מחרוזת (String) - 
שורה של תווים. המושג תו (Character) מתייחס לאותיות, מספרים, סימני-פיסוק וסימנים אחרים, וכו'. מחרוזת יכולה להכיל כ-2 בחזקת 31 תווים (בערך 2 מליארד), וכמות המקום שהיא תופשת משתנה בהתאם לאורכה.
בוליאני (Boolean) - 
המשתנה הקטן ביותר, אשר יכול להכיל אחד משני ערכים - אמת (True) או שקר (False), אותם ניתן לייצג גם באמצעות 1 או 0.
משתנה (Variant) - 
אם בוחרים סוג משתנה זה, או אם לא מגדירים למשתנה כל סוג, הוא נהיה משתנה כללי. משתנים כללים יכולים להכיל כל ערך, ומשנים את סוגם לפי הערך שהם מכילים באותו רגע.
Hands-on.png

כעת, נלמד כיצד להכין תוכנה פשוטה אשר מבצעת חיבור בין שני מספרים. לצורך העניין, נצטרך משתנה אחד. פתחו פרויקט וטופס חדש ב-Visual Basic, והכנסו לחלון הקוד של הטופס (עשו זאת ע"י לחיצה על כפתור View Code שנמצא מעל חלון ניווט הפרויקט, מימין-למעלה; ניתן גם ללחוץ לחיצה כפולה על הטופס, ואז למחוק את כל הטקסט שיופיע אוטומטית בחלון הקוד). כעת, וודאו שבתיבות הרשימה שבראש חלון-הקוד מופיעות המילים (General) ו-(Declarations) (אלו המילים שיופיעו אם סמן הכתיבה שלכם נמצא בחלק העליון ביותר של הקוד, מעל כל המאורעות).

לצורך התוכנה שלנו, נצטרך משתנה מספרי אחד. נקרא לו X. נגדיר את המשתנה בצורה הבאה: Dim X as Integer

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

Hands-on.png
בניית תוכנת המחשבון
[עריכה]

עיצוב הטופס[עריכה]

בטופס הריק של התוכנה, נמקם כעת תיבת-טקסט בשם txt_number. את תוכנה של התיבה (Text) יש למחוק. מתחת לתיבה נמקם שני כפתורים, אחד מהם יכיל את סימן החיבור [+] ויקרא cmd_add, והשני יכיל את סימן השווה [=] ויקרא cmd_result. מתחת לשני כפתורים אלו יש למקם תיבת-טקסט נוספת, לה נקרא txt_result; יש למחוק גם את תוכנה של התיבה הזו.

תוכל לעצב את הכפתורים והתיבות בכל דרך שתראה מתאימה. לאחר-מכן, לחץ על כפתור התוצאה [=], וקבע אצלו את התכונה Enabled ל-False. דבר זה יגרום לכך שלא ניתן יהיה ללחוץ על הכפתור, עד שתשנה את התכונה הזו באמצעות קוד. כעת, לחץ על תיבת הטקסט התחתונה (txt_result), וקבע את תכונת Locked ל-True. הדבר יגרום לכך שהמשתמש לא יוכל להזין טקסט לתוך התיבה הזו.

כעת, לחץ לחיצה-כפולה על כפתור החיבור כדי לפתוח את חלון הקוד שלו, והמשך לפרק הבא.

כתיבת הקוד[עריכה]

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

אם כך, נתחיל מהכנסת המספר מתיבת הטקסט העליונה לתא הזכרון. דבר זה נעשה בצורה מאוד פשוטה - יש לכתוב בתוך הקוד של כפתור-הפקודה את שמו של המשתנה (X), לאחריו הסימן שווה [=], ולאחריו יש להתייחס לתכנה של תיבת הטקסט, כלומר txt_number.Text. בנוסף, אנו רוצים לגרום לכך שתיבת-הטקסט תתנקה לאחר הפעולה הזו, לכן נוסיף שורת קוד אשר תרוקן את הטקסט שבתיבה. בסך-הכל, הקוד צריך להיראות כך:

Private Sub cmd_add_Click ()
X = txt_number.Text
txt_number.Text = ""
End Sub

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

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

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

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

txt_result.Text = X + txt_number.Text

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

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

להלן הקוד המלא של כל התוכנה:

 Dim X As Integer
 
 Private Sub cmd_add_Click()
 X = txt_number.Text
 txt_number.Text = ""
 cmd_result.Enabled = True
 End Sub
 
 Private Sub cmd_result_Click()
 txt_result.Text = X + txt_number.Text
 End Sub
יסודות השימוש בשפה
תכנות בסיסי עם אובייקטים שימוש במשתנים הגרלת מספר אקראי