[3 בינואר 2008] [45 תגובות]
משתנה (variable) מסוגל לשמור נתונים בזיכרון המחשב. נוכל להשתמש בערך ששמרנו במשתנה בשלב מאוחר יותר של ריצת התוכנית. כמו כן, ניתן לבצע פעולות על ה-משתנים כפי שנראה בהמשך.
דוגמה ל-משתנה: כאשר אתם משחקים במשחק כמו TETRIS, מספר הנקודות שצברתם נשמרים בתוך משתנה. כל פעם שאתם מצליחים "לסגור שורה", הערך שזוכר המשתנה גדל, כלומר המשתנה זוכר ערך גדול יותר.
אילו נתונים נרצה לשמור ?
- מספרים (4, 250, 2.53)
- מילים(שלום, Hello, Tel Aviv)
- תאריכים(01/01/2008)
- ועוד...
כל משתנה הוא מ-טיפוס (type) מסויים, לפי הערכים אותם הוא צריך לזכור. ישנם טיפוסים שיכולים לזכור רק מספרים שלמים וישנם טיפוסים המסוגלים לשמור רק מילים ומשפטים.
לפני שנוכל להשתמש במשתנה מסויים, עלינו להכריז עליו, כך המהדר ידע כיצד להשתמש בו. עלינו להכריז על שני דברים: טיפוס המשתנה ושם המשתנה.
הערה: את כל הדוגמאות שיוצגו מרגע זה, תוכלו להוסיף לתבנית הבאה (במקום של השורה הריקה באמצע) ואז להדר כפי שנלמד בשיעור הקודם (תוכנית ראשונה).
class tirgul{ public static void main(String[] args){ } }
מספרים שלמים
int x;
בשורה זאת הכרזנו על:
- int - מגדיר משתנה מטיפוס Integer - כלומר, מספר שלם. המספר יכול להיות חיובי או שלילי.
- x - זהו השם של המשתנה, לאחר שורה זאת, נוכל להשתמש במשתנה x על פי שמו.
על מנת שהמשתנה x יזכור ערך מסויימם, עלינו לבצע פעולת השמה. השמה מתבצעת בעזרת הסימן = (שווה) כך:
x = 5;
בשורה זו הצבנו את הערך 5 למשתנה x. ובמילים פשוטות: לאחר שורה זאת x שווה ל-5. נוכל לבצע הכרזה ו-השמה של משתנה בשורה אחת כך:
int x = 5;
נוכל להדפיס למסך את ערכו של x ע"י שימוש ב-println מהשיעור הקודם:
System.out.println(x);
על המסך תודפס הסיפרה 5. ביקשנו להדפיס את x, לכן המחשב מדפיס את הערך ש-x שווה לו. אם טעיתם כיצד להדפיס את האות x על המסך, זוהי הדרך: (שימו לב לגרשיים ""):
System.out.println("x");
נוכל להגדיר שני משתנים, x ו-y, לחבר בינהם ולהדפיס את התוצאה למסך:
int x = 2; int y = 110; System.out.println(x+y);
על המסך יודפס המספר 112. המחשב התבקש להדפיס את הערך x+y, כלומר התבקש לבצע את הפעולה 2+110 ולאחר החישוב, הדפיס את התוצאה למסך.
מספרים ממשיים (עשרוניים)
מספרים בעלי נקודה עשרונים(2.5, 3.6, 150.1) ישמרו במשתנה מסוג double ויוגדרו באופן הבא:
double z = 3.5;
הגדרנו משתנה מסוג double בשם z והצגנו בו את הערך 3.5 - נוכל להציגו באופן דומה להצגת מספרים שלמים:
System.out.println(z);
על המסך יודפס המספר 3.5
תווים
תו (אות אחת, או סימן אחד) ישמר בתוך משתנה מסוג char:
char letter = 'X';
הכרזנו על משתנה מטיפוס char ושם המשתנה הוא letter. ביצענו פעולת השמה למשתנה letter והצבנו בו את הערך A. שימו לב כי הערך מוקף בגרשיים בודדות. נוכל להדפיס את ערכו של תו כך:
System.out.println(letter);
מחרוזות
מעתה ואילך, כל טקסט שנרצה לשמור בזיכרון, ישמר לתוך משתנה מסוג String(בעברית: מחרוזת). כך מגדירים מחרוזת:
String text = "This is a good lesson!";
הגדרנו משתנה מסוג מחרוזת, שמו הוא text והערך שהוא מכיל הוא המשפט שכתוב בין הגרשיים(""). שימו לב: כל טקסט שנרצה לשמור יכתב בתוך גרשיים.
נוכל לשרשר מחרוזות (חיבור מחרוזת ראשונה לשנייה) באמצעות פעולת החיבור, ולאחר מכן נוכל להדפיסה:
String start = "This is"; String end = "very simple"; String all = start + " " + end; System.out.println(all);
התוכנית תדפיס את המשפט: This is very simple - שימו לב כי חיברנו את המחרוזת start למחרוזת רווח(" ") ואז למחרוזת end. מכאן ניתן להסיק כי אפשר לשרשר מחרוזת שנשמרה במשתנה למחרוזת הנכתבת באופן מפורש בין גרשיים.
משתנים בוליאנים
בהרבה מקרים נרצה לשמור ערך מסוג: כן/לא, אמת/שקר, נכון/לא נכון. לשם כך שיים משתנה מטיפוס boolean (בוליאני) היכול להכיל שני ערכים: true או false. כך נגדיר אותו:
boolean isThisNice = true;
הגדרנו משתנה בוליאני, בעל השם isThisNice והצבנו בו את הערך true. המחשב מכיר את המילים true ו-false ורק בהם יש להשתמש בעבודה עם משתנים בוליאנים.
כמו כן, המחשב מסוגל לבצע השוואות ואת התוצאה להציב במשתנה בוליאני. בדוגמה הבאה x שווה ל-1 ולאחר מכן אנו שואלים האם הוא שווה ל-0 (בעזרת הסימן == עליו נללמד בשיעור הבא). מכיוון שהדבר הוא שיקרי, b יהיה שווה ל-false:
int x = 1; boolean b = (x == 0);
קבועים (final)
ניתן להגדיר משתנה קבוע על ידי הוספת המילה final לפני הכרזתו. הערך של קבוע מוגדר בתחילת התוכנית ואינו יכול להשתנות במהלך התוכנית. נהוג לתת למשתנה זה שם המורכב רק מאותיות גדולות:
final int DAYS_IN_WEEK = 7;
scope (טווח הכרה)
כאשר אנו מכריזים על משתנה בתוכנית שלנו, ניתן להשתמש בו רק בבלוק בו הוא הוגדר. בלוק הוא הקטע המצוי בין הסוגרים המסולסלים {}. טווח זה נקרא scope. המהדר אינו מכיר את המשתנה מחוץ לטווח זה. נראה דוגמה לכך בשיעור העוסק ב-לולאות בהמשך הדרך.
המרה (casting)
לפעמים נרצה להתייחס למשתנה כאילו הוא היה מטיפוס אחר ואז נשתמש ב-המרה. השימוש נעשה באמצעות פתיחת סוגרים לפני המשתנה וכתיבת הטיפוס שאנו ממירים אליו. לדוגמה אם נרצה להתייחס למשתנה הממשי f כאילו היה מספר שלם, נבצע זאת כך:
double f = 3.5; System.out.println( f ); System.out.println( (int) f );
הפלט יהיה:
3.5
3
בפעם הראשונה המהדר רואה את f כאילו הוא מספר ממשי ולכן מדפיס אותו כ-3.5 ובפעם השניה המהדר רואה את f כאילו היה מספר שלם ולכן מתעלם מכל מה שאחרי הנקודה העשרונית ואנו מקבלים את המספר 3.
סיכום
כל סוגי המשתנים שהוצגו למעלה (פרט לטיפוס String) נקראים משתנים פרמיטיבים מכיוון שהם כלולים בבסיסה של שפת Java. מלבד משתנים אלו, יש עוד מספר משתנים פרימיטיבים, אך כרגע נמשיך ונלמד לעבוד רק עם ארבעת אלו.
בשיעור הבא נלמד כיצד לבצע פעולות על משתנים על ידי אופרטורים.
האם תוכל בבקשה להראות דוגמה עם חישוב של מספרים כמו שהייתה למעלה אבל בצורה מפורטת?
כי אני לא מבינה איפה להכניס את השורות של ה - int x
כפי שראינו בשיעורים הקודמים, הקוד צריך להופיע בתוך "מעטפת" שכרגע לדעתי עדיין לא חשוב מה מטרתה.
הכנתי את הקובץ http://www.ketacode.com/code/nums.java שמכיל את הקוד עבור הדוגמה (שתשובתה 112) - יש להדר אותה ולהריץ אותה.
אם תביטי בקוד, תוכלי לראות את שתי השורות שיש להוסיף בהתחלה.
תודה רבה לך!! עזרת לי מאוד:)
thanks
אתה יכול בבקשה ליכתוב קוד + מעטפת שאפשר להריץ?
לא... אני בכוונה לא כולל את הקוד המלא עם המעטפת.
המטרה היא שבשיעור זה כבר תדעו כיצד לכתוב את המעטפת ותדעו כיצד להריץ אותה.
הדרך הטובה ביותר בהתחלה היא עבודה על בסיס דוגמת ה-Hello World. ניתן לערוך את דוגמה זאת בעזרת הקוד שיש בפוסט הזה.
מה צריך לרשום בSystem.out.println אם אני מריץ משתנים בוליאנים?
אם תוסיף לדוגמה של המשתנה הבוליאני את השורה הבאה:
System.out.println(isThisNice);
תודפס למסך המילה True. תנסה בעצמך :)
תשים דוגמא של חיבור מספרים בתוך מעטפת הקישור לא עובד
הנה (העתק והדבק את הקוד הבא...):
class hello
{
public static void main(String args[])
{
int x = 2;
int y = 110;
System.out.println(x+y);
}
}
אפשר דוגמא של המחרוזת כולה עטופה?
לא משנה
רשמתי את הכול ומתי שרשמתי
ובסוגרים x ואז f5 וזה רשם לי x (יש לי את התוכנה jcreator זה משנה)
ממש תו דה מי שכתב את הדף הזה ממש עזר לי ליזכור את המשתנים :)
אפשר דוגמא של איך מדפיסים מחרוזת בודדה
הנה לגביי זה
String text = "This is a good lesson!";
איך מדפיסים את זה?
פשוט תוסיף בשורה שאחרי מה שכתבת את זה:
System.out.println(text);
וזה ידפיס את הטקסט למסך.
שלום טל יש לי בעייה
רשמתי את כל התרגיל אם המספרים השלים(INT) נכון הוא הידר לי הכל
ואז הפעלתי את התוכנית והוא במקום לרשום 112
הוא רושם לי X+Y
למה.... מה עושים?
כנראה שמה שעשית הוא לשים את X+Y בתוך גרשיים כך:
System.out.println("x+y"); // NO GOOD
מה שאתה צריך לעשות זה בלי גרשיים כך:
System.out.println(x+y); // GOOD
כן צודק תיקנתי תודה בכל מיקרה
המדריכים שלך כל כך טובים שפשוט אני מבין הכל תודה רבה=) מגיעה לך הוקרע
כי הסתקלתי במדריכים אחרים וראיתי ששמה יותר קשה להבין מעצלך=)
תודהה!!
אהה יש לך גם טעות
רשמתה
תווים
תו (אות אחת, או סימן אחד) ישמר בתוך משתנה מסוג char:
הכרזנו על משתנה מטיפוס char ושם המשתנה הוא letter. ביצענו פעולת השמה למשתנה letter והצבנו בו את הערך A.אבל שם רשום X איך זה הגיוני(רשום איפה ש יש LETTER=X) נראה יצתאה לך טעות לא?
תגדי טל נכון לקובץ שהכנו קראנו לו TIRGUL
אז למה כשה אני שמהנ לא שם הוא רושם שהוא לא מצליך לזהות את הקובץ?
לדעתי לשורה בשם:
הכרזה ו-השמה
כדאי לקרוא אתחול משתנה.
מתחבר יותר טוב אח"כ למערכים שרוצים לאתחל את התאים בהם בלידתם...
אומנם כאן ביצענו איתחול של המשתנים, אך לדעתי זה מחולק לשני קטעים: הכרזה (או הצהרה) בה אנחנו מגדירים את סוג המשתנה ו-השמה בה אנחנו מכניסים ערך למשתנה.
אם בהמשך התוכנית נבצע השמה נוספת, זה כבר לא יהיה איתחול המשתנה.
צריך לרשום את המשתנים בפינקס רשימות או אפשר גם בJCreator לכתוב את המשתנים
אפשר כך או כך, איך שנוח לך לעבוד.
תודה רבה זה מובן להבנה :)
ממש תודה. כיף שאפשר להבין ושזה ממש ברור
ושגם צריך לחשוב כי אתה לא נותן את כל הקוד ישר
לקח לי זמן להבין שצריך לכתוב java trigul בשביל להפעיל את זה
כנראה פיספסתי משהו בשיעור הקודם
הי טל,
יש לך טעות, כתבת טעיתם במקום תהיתם:
על המסך תודפס הסיפרה 5. ביקשנו להדפיס את x, לכן המחשב מדפיס את הערך ש-x שווה לו. אם טעיתם כיצד להדפיס את האות x על המסך, זוהי הדרך: (שימו לב לגרשיים ""):
תודה בכל מקרה :) בלוג נהדר!
המדריך שלך מושלם!!
תודה אתה מלךך !!!
אני לא מבין איך אפשר לעשות שיהיה מספר *מספר *מספר
אפשר עוד פרטים?
למשל ציטוט?
הי,
ניסיתי לעשות את מה שכתוב פה על ה- string,
זה לא עושה לי compile,
אני משתמש ב- bluej
זה לא אמור להיות משנה נכון?
הי,
עשיתי משתנה בוליאן ואני לא יודע איך לשים לו ערך של מספר
היי,תודה על הבלוג הזה הוא ממש עוזר,גם אני בתחילת דרכי.
רציתי לשאול,
מה לא נכון בקוד הבאה ?
class hello
{
public static void main(String args[])
{
boolean isThisNice = true;
system.out.printin("isthisnice");
}
}
ועוד משו טל ברשותך :)
במשתנה בוליאני כמו שהראת לנו פה
שלום. אני מאוד נהנה מללמוד מהאתר הזה, גם כי זאת עברית פשוטה וגם כי מסבירים אותה ממש טוב( אני בן 13, כיתה ז, לומד באופן עצמאי).
למי שהגיב שתי תגובות מעליי, מצאתי שתי בעיות בקוד שלך.
1. system אמור להיות באות גדולה.
2.println ולא print in
אבל בתכלס הכל סבבה.
טל אני לא הבנתי איפו להוסיך את ה-int אתה יכול לשלןך את איך שהקובץ צריך להיראות אחרי שומוסיפים int
מה
final int x=7
בעצם אומר?
טל, ראשית כל הכבוד לך על האתר המצויין הזה!
שנית רציתי לשאול אותך מדוע בתכונה של JCreator הוא מסמן לי את השווה (=) בצבע אדום ולא את המספרים?
כשאני מריץ את התוכנה אז היא לא רושמת לי את המספרים או את התוצאות,היא רושמת לי את ה-X או X+Y.
האם סימון הצבעמשפיע בצורה כלשהי?
למה אתה לא משתמש ב" new string" לפני יציקת הערך?
תשתמשו בתוכנה אפוקליפסה
תודה
תודה רבה
תודה רבה רבה