משתנה (תכנות) – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
לימור י (שיחה | תרומות)
ויקיפדיה:Check Wikipedia
שורה 1:
ב[[תכנות]], '''משתנה''' (variable) הוא חלק [[זיכרון מחשב|זיכרון]] ב[[תוכנית מחשב|תוכנית]] המכיל [[נתון]] שיכול להשתנות בזמן הריצה, על פי הפקודות הניתנות לו, בניגוד ל[[קבוע (תכנות)|קבוע]] שמכיל ערך שנקבע בתחילת ההרצה ונשאר קבוע עד סופה. גודל המשתנה עצמו שונה לפי סוג הטיפוס שלו ויכול לנוע מבית אחד ועד טווח זיכרון גדול של מגהבייטים שלמים. בנוסף לפעולת ההשמה ניתן לבצע גם פעולה של שליפת המידע שבמשתנה.
 
===שמות===
לכל משתנה חייב להיות שם. שם משתנה יכול להכיל רצף מכל סוג שהוא של אותיות ומספרים. ישנם תוים בודדים שאסור שיהיו בשם משתנה או בתחילתו. לצורך קריאות [[תוכנית מחשב|הקוד]] ישנן שיטות שונות לקבוע את שמות המשתנים. אחת הידועות שבהן היא "השיטה ההונגרית". אחד הדברים החשובים בהבנת קוד תוכנית הוא נתינת שמות משתנים משמעותיים וארוכים, שמסבירים את תפקידו של המשתנה בעצם שמו. לעתים ישנן מוסכמות לקידומת של משתנה בהתאם לסוגו, ולטווח הכרתו. הדבר נפוץ בעיקר בהגדרת פקדים בטפסים, ומאפשר לנווט ביניהם בקלות.
 
===הכרזה מפורשת והכרזה מרומזת===
בחלק מ[[שפת תכנות|שפות התכנות]] כמו שפת [[C]] ושפת [[Pascal]], חובה להכריז על המשתנה לפני השימוש בו. שימוש במשתנה בלי הכרזה מפורשת שלו תגרום להודעת שגיאה. שפות אחרות, בעיקר שפות סקריפט כמו [[VBScript]] לא דורשות מן התוכניתן להכריז על המשתנה בטרם השימוש בו, והמערכת מגדירה אותו בפעם הראשונה שהיא נתקלת בו. אם כי על פי נוהלי התכנות המתוקנים, רצוי להכריז על כל המשתנים באופן מאורגן, והדבר תורם לקוד מסודר, איתור [[שגיאות כתיב]], ולניפוי יעיל של הקוד. לעתים יש שפות שיש בהן את שתי האפשרויות, לעבוד במוד של הכרזה מפורשת והכרזה מרומזת, על פי סוג ההצהרה בתחילת המודול (למשל use strict ב-[[Perl]]).
 
===סוג טיפוס===
לכל משתנה יש [[טיפוס נתונים|טיפוס]] שקובע איזה סוג נתונים הוא יכול להכיל. גודל המשתנה שונה בהתאם לטיפוס ויכול להיות בטווח רחב. גודל קטן ביותר למשתנה מסוג בוליאני ותו ועד לגודל גדול למשתנה מסוג מערך או אובייקט. בחלק מהשפות (בעיקר אלו שבהן לא מחויבים להגדיר את המשתנים) יש טיפוס "כללי" שמאפשר לשים את רוב הערכים.
 
סוגים טיפוסיים של משתנים הם: [[מספר שלם]] (בטווחים שונים), [[מספר ממשי]] - ([[נקודה צפה]]) (בטווחים שונים), תו, [[מחרוזת (תכנות)|מחרוזת]], [[מערך (מבנה נתונים)|מערך]], מצביע, רשומה, [[תכנות מונחה עצמים|אובייקט]] וערך בוליאני, ישנן שפות שמוסיפות טיפוסים ספציפיים נוספים כמו משתני אוסף, תאריך ומטבע.
 
===אורך חיים===
אורך חיים הוא הטווח שבו המשתנה קיים פיזית.
משתנה גלובלי יהיה קיים כל זמן שהתוכנה רצה. משתנה לוקאלי המוגדר בפונקציה יהיה קיים בזמן שהפונקציה מורצת, אך לפניה או אחריה הוא לא יהיה קיים כלל. משתנה גלובלי במחלקה יהיה קיים כאשר נוצר מופע של המחלקה. יכול להיות מצב שבו משתנה יהיה קיים, אך לא יהיה נגיש לפעילות באזור מסוים. ומאידך יכול להיות מצב שבו משתנה לא יהיה נגיש, אך תוכנו ישמר כאשר הוא יוגדר מסוג סטטי.
 
===שמות משתנים===
בשפות תכנות ישנות (למשל [[BASICA]]) היה מקובל להשתמש בשמות קצרים מאוד (לרוב אות אחת), כיום גישה זו איננה מקובלת. במרבית שפות התכנות המודרניות, שמות המשתנים חייבים להיות [[מזהה|מזהים]] חוקיים, כלומר הם מוגבלים על פי אותם חוקים המגבילים את שמות הפונקציות, המחלקות, הקבועים וכדומה. מגבלות אלו משתנות משפת תכנות אחת לשנייה אולם הם לרוב כוללות מגבלת תווים אפשריים (תווים המשתמשים ל[[אופרטור]]ים כמו + או ? לרוב אסורים), איסור על שמות הזהים ל[[מילה שמורה|מילים שמורות]] וכן מספר תווים משמעותיים (למשל ב-[[Embedded SQL]] משתנים שהם בעלי 31 תווים ראשונים זהים נחשבים זהים).
 
שורה 24:
ישנן מספר שיטות מקובלות לשמות משתנים, התלויות בשפת התכנות (במיוחד בשאלה האם היא מבחינה בין אותיות קטנות לגדולות) ובספריות בהן משתמשים, כך ניתן למצוא שדה של אובייקט בעל השמות m_WikipedaCount, wikipediaCount, wikipediaCount_, wikipedia_count ועוד.
 
===טווח הכרה===
טווח ההכרה הוא הטווח שבו המשתנים חשופים בתוך התוכנית.
ישנם שלושה סוגים עיקריים של טווח הכרה במשתנים:
שורה 31:
#נתוני אובייקט - האובייקט עצמו מוגדר כמשתנה גלובלי או לוקלי, אבל הנתונים שבתוכו מטופלים בצורה אחרת שמאפשרת להסתיר אותם מחלקים אחרים בתוכנית.
 
===אתחול===
בחלק מהשפות כמו למשל C, חובה לאתחל את המשתנה לערך מסוים, אחרת עלול להמצא בו "זבל" (שהוא ערך מספרי סתמי, שנמצא בזיכרון המחשב, עקב פעולות קודמות). בשפות אחרות נעשה אתחול אוטומטי בזמן היצירה של המשתנה, כך שמשתנה מספרי מאופס, משתנה מחרוזתי מאותחל למחרוזת ריקה, משתנה מצביע מאותחל למיקום לא קיים וכדומה. בשפות שאין אתחול אוטומטי הדבר מאפשר גמישות ומאפשר למתכנת לבחור באיתחול או לוותר עליו, מכיוון שלפעמים אין צורך באתחול והדבר מבזבז פעולות מחשב, במיוחד כאשר מדובר במשתנים רבים. החיסרון שבחוסר אתחול אוטומטי שתמיד המתכנת צריך לדאוג לערכים שבמשתנה, ולעתים אי תשומת לב מספקת לעניין, עלולה לגרום ל[[באג]]ים קשים לאיתור.
 
===שימוש===
על כל משתנה ניתן לבצע שתי פעולות: פעולת השמה של ערכים לתוכו, ופעולה של שליפת מידע הנתון בו. בדרך כלל ניתן לבצע פעולות השמה למשתנה, כאשר הנתונים המושמים בו, הם מסוג הטיפוס של המשתנה. פעולות על המשתנים יבוצעו בדרך כלל באמצעות [[אופרטור (תכנות)|אופרטורים]] שונים.
 
שורה 51:
A=B+MaxOf(C,D) </blockquote> שמשמעותו השם למשתנה A את הערך שבמשתנה B + את הערך שמוחזר מהפונקציה MaxOf כאשר הפונקציה מקבלת שני ערכים ומחזירה את הגדול שבהם.
 
===דוגמאות של הגדרת משתנים===
דוגמאות להגדרת משתנה בשם A מסוג Integer ואיתחול שלו בערך 5 בשפות תכנות שונות. ישנן שפות שחייבת להיות מילת קידומת מסוימת על מנת להכריז על משתנה כמו Var (קיצור של Variable) בפסקל וDIM (או Public או Private) בVB, וישנן שפות שבהן אין כתיבה של מילה קבועה, אלא כתיבת סוג הטיפוס עצמו לפני משתנה היא הוראה ליצירת משתנה. בדוגמאות ניתן לראות שהכתיבה בשפת C הינה התמציתית ביותר, ואילו הכתיבה בVB הינה המובנת ביותר.
====פסקל====
<div style="direction: ltr;">
Var a: Integer=5;
</div>
====C ו C++====
<div style="direction: ltr;">
int a=5;
</div>
====VB====
<div style="direction: ltr;">
Dim a As Integer=5