Transcript lab_3_java

1
‫שימוש בחלון דיאלוג‬
‫• עד כה השתמשנו בחלון הקלט על מנת לקבל‬
‫אינפורמציה מהמשתמש (ע"י שימוש ב‪)Scanner‬‬
‫ובחלון הפלט על מנת להציג הודעות למשתמש‬
‫(ע"י שימוש ב‪) System.out.println‬‬
‫• כעת נלמד להשתמש בתיבות דו שיח ( ‪dialog‬‬
‫‪ )boxes‬כדרך אלטרנטיבית לבצע פעולות אלו‬
‫• אנחנו נלמד דרך קלה להציג תיבות דו שיח בעזרת‬
‫המחלקה ‪JOptionPane‬‬
‫‪2‬‬
‫שימוש בחלון דיאלוג(המשך)‬
‫• ראשית נצטרך להוסיף בראש כל תוכנית פקודה‬
‫שתייבא את המחלקה‪:‬‬
‫;‪import javax.swing.JOptionPane‬‬
‫• כעת נוכל להשתמש בחלון הדיאלוג בתוכנית‬
‫• על מנת להציג הודעה‪:‬‬
‫‪JOptionPane.showMessageDialog(null,Mes‬‬
‫;)‪sage‬‬
‫• כאשר ‪ Message‬היא מחרוזת‬
‫‪3‬‬
)‫שימוש בחלון דיאלוג(המשך‬
:‫• לדוגמא‬
JOptionPane.showMessageDialog)null,”Hello world!”(;
JOptionPane.showMessageDialog
)null,”hello world”,
“my message",
JOptionPane.PLAIN_MESSAGE);
4
‫שימוש בחלון דיאלוג לקליטת קלט‬
‫ניתן להשתמש בחלון הקלט על מנת לקרוא משתנים מסוג מחרוזת‬
:‫• כדי לקרוא מחרוזת‬
:‫או‬
•
String numberOfYearsString = JOptionPane.showInputDialog( 19 "Enter
number of years as an integer, \nfor example 5:");
5
‫המרת מחרוזת לסוג משתנה אחר‬
‫במידה ונרצה לקרוא משתנים מסוג אחר נאלץ לקרוא קודם מחרוזת‬
‫ואז להמיר אותה לסוג הרצוי‪:‬‬
‫•‬
‫איך לקחת ממחרוזת משתנה מסוג ‪char:‬‬
‫•‬
‫על מנת להמיר מחרוזת למספר מסוג ‪:int‬‬
‫•‬
‫על מנת להמיר מחרוזת למשתנה מסוג ‪:double‬‬
‫•‬
‫;"‪s = "14.1‬‬
‫;)‪double d = Double.parseDouble(s‬‬
‫על מנת להמיר מחרוזת למשתנה מסוג ‪:boolean‬‬
‫;"‪s = "false‬‬
‫;)‪boolean b = Boolean.parseBoolean(s‬‬
‫”‪String s=“f‬‬
‫;)‪char c = s.charAt(0‬‬
‫;”‪String s = “10‬‬
‫;)‪int i = Integer.parseInt(s‬‬
‫‪6‬‬
1 ‫דוגמא‬
import javax.swing.JOptionPane;
public class Lab3 {
public static void main(String[] args){
int number;
String temp = JOptionPane.showInputDialog("Enter a number
please");
number = Integer.parseInt(temp);
System.out.println("The number is :"+number);
temp = JOptionPane.showInputDialog("Enter character");
char ch = temp.charAt(0);
System.out.println("You entered:" + ch);
}
}
7
2 ‫דוגמא‬
‫תוכנית שקולטת מספר ומחשבת את השורש שלו‬
import javax.swing.JOptionPane;
public class Lab3 {
public static void main(String[] args) {
float number;
String temp =
JOptionPane.showInputDialog(null,"Enter a number
please");
number = Float.parseFloat(temp);
temp = "sqrt of "+number + " is "+Math.sqrt(number);
JOptionPane.showMessageDialog(null, temp);
}
8
‫ההוראה ‪if‬‬
‫• עד עכשיו כתבנו תוכניות שכל הפקודות שבהן‬
‫התבצעו לפי הסדר‪ ,‬מתחילת התוכנית ועד סופה‬
‫• מה נעשה אם נרצה שפקודות שונות יתבצעו‬
‫במצבים שונים?‬
‫• ההוראה ‪ if‬בג'אווה מאפשרת לנו לעשות זאת‬
‫‪9‬‬
‫ תחביר‬: if ‫ההוראה‬
:‫ הוא‬if ‫• התחביר המינימאלי של פקודת‬
if (<condition>)
<command>;
:‫• דוגמא‬
public class IfExample1 {
public static void main(String[] args) {
int n1=1,n2=2;
if (n2>n1)
System.out.println(n2 +" is larger than ”+ n1);
}
}
10
‫ תנאי שיקרי‬:‫תנאים‬
?‫• מה יהיה הפלט על המסך בתוכנית הבאה‬
public class IfExample_1b {
public static void main(String[] args) {
int n1=1,n2=2;
if (n2==n1)
System.out.println(n2 +" is larger than ”+ n1);
}
}
!‫לא יהיה פלט מכיוון שהתנאי לא מתקיים‬
11
‫יחסים לוגיים‬
‫• תנאי לוגי פשוט (ביטוי בולאני פשוט) מכיל אופרטור יחס‪.‬‬
‫האופרטורים של היחס הם‬
‫==‬
‫שווה‬
‫=!‬
‫לא שווה‬
‫>‬
‫גדול‬
‫<‬
‫קטן‬
‫=>‬
‫גדול או שווה‬
‫=<‬
‫קטן או שווה‬
‫*** הערה‪ :‬יש להקפיד על סדר הכתיבה משמאל לימין‪,‬‬
‫ולא להוסיף רווחים בין שני סימנים‬
‫‪12‬‬
‫ביטויים בוליאניים (לוגיים)‬
‫•‬
‫•‬
‫•‬
‫•‬
‫‪13‬‬
‫תזכורת‪ :‬כשלמדנו על משתנים דיברנו על משתנה‬
‫בוליאני‪ ,‬שמקבל ערכי אמת או שקר (‪)true/false‬‬
‫זהו טיפוס הנתונים שמשתמשים בו בתנאי‬
‫לדוגמא‪ ,‬יכולנו לכתוב‬
‫)‪if (true‬‬
‫{‬
‫‪do something..‬‬
‫}‬
‫ככלל‪ ,‬כל מה שאנחנו כותבים בתנאי ה ‪ if‬מתפרש לערך‬
‫בוליאני‪ true :‬או ‪ false‬ולפי זה מחליטים מה לבצע‬
‫ביטויים בוליאניים (המשך)‬
‫• שימו לב להבדל בין "=" (אופרטור השמה) לבין "==" (אופרטור השוואה)‪.‬‬
‫• מה יודפס למסך?‬
‫; ‪boolean x = false‬‬
‫השמה = ‪//‬‬
‫)‪if (x=true‬‬
‫{‬
‫;(”‪System.out.println)“first if‬‬
‫}‬
‫)‪if (x==false‬‬
‫אופרטור השוואה == ‪//‬‬
‫{‬
‫;(”‪System.out.println)“second if‬‬
‫}‬
‫• תשובה‪ :‬ה ‪ if‬הראשון יודפס תמיד כי זאת פעולת השמה והיא מחזירה את‬
‫הערך שהיא שמה במשתנה‪ .‬ה ‪ if‬השני לא יודפס כי כשמגיעים אליו הערך‬
‫של ‪ x‬הוא ‪true‬‬
‫‪14‬‬
‫ביצוע מספר פקודות בבלוק של ‪if‬‬
‫• עד עכשיו ביצענו פקודה אחת לאחר תנאי ‪if‬‬
‫• מה אם נראה לבצע מספר פקודות?‬
‫• במקרה זה המבנה יהיה כזה‪:‬‬
‫{)>‪if (<condition‬‬
‫מספר הוראות לביצוע בתוך בלוק של קוד ‪<command 1>; //‬‬
‫…‬
‫;>‪<command N‬‬
‫}‬
‫• בתוך הסוגריים המסולסלים ניתן לכתוב כל פקודה‪ ,‬כולל ‪ if‬נוסף‬
‫• לא חייב להשתמש בסוגריים המסולסלים עבור שורה אחת‬
‫‪15‬‬
‫‪if-else‬‬
‫• לפעמים נרצה לחלק את התוכנית לשני מקרים‪ :‬מה‬
‫לעשות אם התנאי כן התקיים ומה לעשות אם הוא לא‬
‫התקיים‬
‫• ניתן לבצע זאת בג'אווה ע"י שימוש בהוראות ‪:if-else‬‬
‫{)>‪if (<condition‬‬
‫…‬
‫}‬
‫{ ‪else‬‬
‫…‬
‫}‬
‫‪16‬‬
‫דוגמא‬
import java.util.Scanner;
public class IfExample3 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int number; //this will hold the number the user gives
System.out.println("Please enter a positive integer");
number = input.nextInt();
}
}
if(number>0){
System.out.println(“Positive number!");
}
else{
System.out.println(number +
" is a negative number!");
}
17
‫‪( if-else‬המשך)‬
‫דרך שנייה לעשות את זה‪:‬‬
‫)‪if (x>5‬‬
‫{‬
‫…‬
‫}‬
‫)‪if (x<=5‬‬
‫{‬
‫‪….‬‬
‫}‬
‫דרך זו עלולה להיות בעייתית אם אנחנו משנים את הערך של ‪ X‬ב‪IF -‬‬
‫הראשון כך שהוא עונה גם על התנאי הבא‪.‬‬
‫‪18‬‬