[10 בפברואר 2009] [9 תגובות]
התנאי הוא משתנה בוליאני
נתחיל את השיעור בבחינת התנאי (השאלה שאותה שואלת פקודת ה-IF) באופן יותר יסודי.
ניזכר בשיעור משתנים ב-Java ובסוג המשתנה הבוליאני. משתנה זה יכול להכיל שני ערכים בלבד: אמת (TRUE) או שקר (FALSE). שימו לב כי התנאי של פקודת ה-IF הוא משתנה בוליאני. כלומר, שני קטעי הקוד הבאים זהים:
if (x==5){ System.out.println("X is 5"); }
boolean tnai = (x == 5); if (tnai){ System.out.println("X is 5"); }
לאחר השורה הראשונה, המשתנה tnai יכיל True או False בהתאם לערך של המשתנה x. אם x שווה ל-5 אז tnai יהיה true, אחרת, אם x שונה מ-5 הוא יהיה false. לאחר מכן, ניתן להשתמש בו בתור התנאי של פקודת ה-if.
שאלות מורכבות יותר
נוכל לבדוק האם שני תנאים מתקיימים בשאלה אחת על ידי האופרטור "וגם" (AND) שסימנו & (Shift+7). הנה דוגמה לכך:
if (x==50 & y>40){ System.out.println("This is True"); }
המשפט This is True יודפס אך ורק אם שני התנאים הבאים מתקיימים: X שווה ל-50 ו-Y גדול מ-40. אם אחד משני התנאים האלו לא יתקיים, התוצאה הסופית תהיה False והמשפט לא יודפס.
ניתן להרחיב זאת ולכלול הרבה "וגם" בתנאי אחד בדוגמה הבאה הוספנו שני תנאים. רק אם כל הארבעה יתקיימו, המשפט יודפס:
if (x==50 & y>40 & z<30 & x<y){ System.out.println("This is True"); }
בדרך כלל נשתמש באופרטור && במקום &. האופרטור && עובד בצורה דומה ל-& עם הבדל קטן:
- האופרטור &: אם התנאי הראשון אינו נכון(X אינו 50), כבר אין טעם להמשיך ולבדוק את התנאים הבאים מכיוון שהתנאי יהיה false בכל מקרה. עם האופרטור הזה (&) בכל זאת נבדוק את ערכם.
- האופרטור &&: אם התנאי הראשון אינו נכון, לא נמשיך לבדוק את התנאים הבאים.
אופרטור מעניין נוסף הוא האופרטור "או" (OR) וסימנו | (Shift+\). כאן יבדקו מספר תנאים, ומספיק שאחד מהתנאים יתקיים על מנת שתוצאת השאלה תהיה True. נביט בדוגמה הבאה:
if (x==50 | y==40 | z==30){ System.out.println("This is True"); }
- אם X שווה ל-50 זה מספיק על מנת שהמשפט יודפס. זה כבר לא משנה מה ערכם של Y ו-Z.
- אם Y שווה ל-40 המשפט יודפס בלי קשר לערכם של X ו-Z.
- וכמו שכבר הבנתם, מספיק ש-Z שווה ל-30 והמשפט יודפס בלי קשר לערכם של X ו-Y.
- הדרך היחידה שהמשפט לא יודפס למסך היא שכל שלושת התנאים יהיו False. כלומר גם X לא יהיה שווה ל-50 וגם Y לא יהיה שווה ל-40 וגם Z לא יהיה שווה ל-30.
גם כאן ישנו אופרטור || בנוסף לאופרטור |. אם התנאי הראשון הוא נכון (X שווה ל-50) כבר אין צורך לבדוק את הבאים מכיוון שהתנאי יהיה true בכל מקרה. האופרטור | יבדוק אותם בכל זאת, אך האופרטור || יפסיק את הבדיקה וישר ידפיס את המשפט למסך.
פקודת ELSE-IF
בפקודה זאת מתבצעת קודם כל פקודת IF רגילה, אך ה-ELSE שלה מיוחד מכיוון שהוא גם כן שואל שאלה. הכי קל להבין זאת באמצעות הדוגמה הבאה:
if (i==1){ System.out.println("I is ONE"); } else if(i==2){ System.out.println("I is TWO"); }
קודם כל בודקים אם ערכו של i שווה ל-1, אם כן מדפיסים I is ONE למסך וזוהי סוף התוכנית. אחרת, (אם i אינו שווה ל-1), מבצעים פקודת IF נוספת השואלת האם i שווה ל-2, אם כן מדפיסים I is TWO למסך והתוכנית מסתיימת. אחרת (אם i אינו שווה ל-2) לא עושים דבר.
שאלת הבנה: מבלי להריץ את שתי התוכניות הבאות, נסו לנחש מה יהיה הפלט של כל תוכנית. שימו לב, השינוי הוא בין פקודת ELSE-IF לפקודת IF רגילה.
int i =5; if (i>3){ System.out.println("GOOD"); } else if(i==5){ System.out.println("LIFE"); }
int i =5; if (i>3){ System.out.println("GOOD"); } if(i==5){ System.out.println("LIFE"); }
אם אינכם יודעים את התשובה... הדרו והריצו את התוכניות ובדקו את התשובה שלכם.
IF מקונן
If-מקונן היא פקודת if רגילה שנמצאת בתוך פקודת if אחרת. הביטו בקטע הקוד הבא:
if (x==5){ if (y==4){ System.out.println("Inside If+If"); } else{ System.out.println("Inside if+else"); } }
נשים לב כי יש לנו פקודת IF חיצונית (השואלת האם X==5) ללא ELSE לאחריה. במידה ו-X שווה ל-5 מתבצעת פקודת ה-IF המקוננת (הפנימית) ונשאלת השאלה "האם Y שווה ל-4?". נשים לב כי לפקודת ה-IF הפנימית יש ELSE.
נוכל להרחיב דוגמה זאת לכלול יותר מפקודת IF מקוננת אחת. למשל:
int x = 3; if (x>0){ System.out.println("x is bigger than 0"); if (x>1){ System.out.println("x is also bigger than 1"); if (x>2){ System.out.println("x is also bigger than 2"); if (x>3){ System.out.println("x is also bigger than 3"); } } } } else{ System.out.println("x is smaller than 0"); }
בתחילת התוכנית X מקבל את הערך 3. מה יהיו כל ההדפסות למסך? הנה:
x is bigger than 0
x is also bigger than 1
x is also bigger than 2
אם X היה שווה למינוס 5 (-5) מה היה נכתב למסך? שנו את הערך, הריצו את התוכנית ובדקו זאת.
סיכום
- למדנו שהתנאי של שאלת ה-if הוא ערך בוליאני ושניתן לאחסן בערכים בוליאנים תשובות של שאלות.
- ראינו כיצד להשתמש בפקודת else if על מנת לשאול שאלות נוספות.
- ראינו מהו if-מקונן וכיצד להשתמש בו.
בשיעור הבא נדון בנושא ה-לולאות. לולאות הן קטעי קוד שחוזרים על עצמן מספר פעמים.
וואי אחי תודה רבה
עזר לי מאוד!
תודה רבה!
אחלה גבר הטל הזה...
כל הכבוד אחי על היוזמה שלך, עוזר מאוד להבין את הדברים הבסיסיים בשפה.
הייתי רק ממליץ לך אולי לסדר את השיעורים בצורה טובה יותר ומסודרת, וזה מושלם.
תעתיקו ותדביקו את הקוד הזה .. איזה משחק שכתבתי :
/**
* @(#)game.java
*
*
* @author
* @version 1.00 2011/7/27
*/
import java.util.Scanner;
class game {
public static void main(String[] args) {
Scanner console = new Scanner(System.in);
int x = (int) (Math.random()*10)+1;
System.out.println("Welcome to my game!");
System.out.println("Try to guess the number 1 to 10.");
System.out.println("You have 5 guesses");
System.out.println("type your guess:");
int y = console.nextInt();
if (y==x)
{
System.out.println("***YOU WIN***");
}
else {
if (y<x+4 & y>x-4)
{
if (y<x+2 & y>x-2)
{
System.out.println("hot");
}
else if (y<x+3 & y>x-3)
{
System.out.println("very warm");
}
else if (y<x+4 & y>x-4)
{
System.out.println("warm");
}
}
else
{
System.out.println("cold");
}
System.out.println("You have got 4 more guesses");
System.out.println("type your other guess:");
int z = console.nextInt();
if (z==x)
{
System.out.println("***YOU WIN***");
}
else {
if (z<x+4 & z>x-4)
{
if (z<x+2 & z>x-2)
{
System.out.println("hot");
}
else if (z<x+3 & z>x-3)
{
System.out.println("very warm");
}
else if (z<x+4 & z>x-4)
{
System.out.println("warm");
}
}
else
{
System.out.println("cold");
}
System.out.println("You have got 3 more guesses");
System.out.println("type your other guess:");
int c = console.nextInt();
if (c==x)
{
System.out.println("***YOU WIN***");
}
else{
if (c<x+4 & c>x-4)
{
if (c<x+2 & c>x-2)
{
System.out.println("hot");
}
else if (c<x+3 & c>x-3)
{
System.out.println("very warm");
}
else if (c<x+4 & c>x-4)
{
System.out.println("warm");
}
}
else
{
System.out.println("cold");
}
System.out.println("You have got 2 more guesses");
System.out.println("type your other guess:");
int f = console.nextInt();
if (f==x)
{
System.out.println("***YOU WIN***");
}
else {
if (f<x+4 & f>x-4)
{
if (f<x+2 & f>x-2)
{
System.out.println("hot");
}
else if (f<x+3 & f>x-3)
{
System.out.println("very warm");
}
else if (f<x+4 & f>x-4)
{
System.out.println("warm");
}
}
else
{
System.out.println("cold");
}
System.out.println("type your other last guess:");
int d = console.nextInt();
if (d==x)
{
System.out.println("***YOU WIN***");
}
else
{
System.out.println(" ***YOU LOSE , TRY ANOTHER TIME.**** ");
}
}
}
}
}
}
}
בעיקרון זהו משחק נחמד,
לא יותר מזה.
אהבתי את הקטע של החם קר.
הכנתי משחק דומה לזה לא מזמן.
אצלי המחשב זורק מספר מאחד ועד 100.
יש ניסיון אחד וזה כמעט בלתי אפשרי, או כמו שכולם אומרים:
"מי שלא יודע לירקוד אומר שהרצפה עקומה.
הנה מה שהכנתי:
import java.util.Scanner;
class quiz
{
public static void main(String args[])
{
System.out.println("chouse namber from 1 to 100?");
System.out.println("write namber:");
Scanner console = new Scanner(System.in);
int y = (int) (Math.random()*100)+1;
int x = console.nextInt();
if (x==y)
{
System.out.print("yes! the namber is");
System.out.print(y);
}
if (x<y)
{
System.out.print("no! the namber is");
System.out.print(y);
}
if (x>y)
{
System.out.print("no! the namber is");
System.out.print(y);
}
}
}
תודה, זה עזר לי
אני לא מצליח להריץ את הקוד יש לי בעיה עם הelse
public class bollean {
}public static void main(String[] args) {
// TODO Auto-generated method stub
// boolean and if practice
int i =5;
if (i>3){
System.out.println("Good");
}
eles if(i == 5){
System.out.println("Life");
}
}
כתבת בקוד eles ולא else תשנה את זה וזה אמור לעבוד