עבור לתוכן

שאלה במשתנים בוליאנים - JAVA

Featured Replies

פורסם

זו תכנית שיוצרת מערך של 100 תאים ומכניסה מספרים רנדומליים 1-100 לכל תא. לאחר מכן המשתמש בוחר מספר מסוים והתכנית מחפשת את המספר במערך.

import java.util.Scanner;


public class arr {


public static void main(String[] args) {
Scanner s = new Scanner(System.in);
boolean found, flag = true;
int[] arr = new int[100];
for(int i=0; i<arr.length; i++){
arr[i] = (int) (1 + Math.random()*100);
System.out.print(arr[i]+" ");
}
do {
System.out.println();
System.out.print("Enter number to search: ");
int num = s.nextInt();
if(num>0 && num<=100) {
int i;
found = false;
// Search the array until number is found, or until end of array
for(i=0; i<arr.length && !found; i++) {
if(arr[i] == num) found = true;
}
if(found)
System.out.println("Number was found on cell "+i);
else
System.out.println("Number was not found");
}
else flag = false;
} while(flag);
}}

מה שלא הבנתי בתכנית זה השימוש במשתנים הבוליאנים.

עדיין לא הצלחתי לגמרי להבין מה השימוש בהם בתכניות שונות וכיצד הם מתבטאים.

מישהו יכול בבקשה לסגור לי את הפינה ולהסביר לי מה השימוש בהם בכלל ומה השימוש בהם בתכנית הנ"ל בפרט (בכל שלב שהם מופיעים)?

תודה מראש

פורסם

מה הקשר לנושא של ההודעה? השאלה שלך היא על בוליאנים, לא מערכים.

פורסם
  • מחבר

צודק, ערכתי.

פורסם

משתנה בוליאני נועד לתת לך אינדיקציה על מצב מסוים של המערכת ולכן הוא יכול להחזיק שני ערכים: אמת או שקר.

תקרא עוד קצת בויקיפדיה, זה משהו בסיסי שאתה חייב להבין בשביל לעבוד בכל שפת תכנות:

http://en.wikipedia.org/wiki/Boolean_data_type

בתכנית שלך יש שני משתנים כאלה, הראשון (found) כשמו כן הוא ואומר מתי מצאת את המספר שאתה מחפש.

שים לב שהלולאה רצה כל עוד המשתנה הזה מחזיק שקר (found! משמעו not found) וברגע שמוצאים את המספר משנים את ערכו לאמת ואז הלולאה מפסיקה.

המשתנה השני מחזיק בשם כללי ולא אינפורמטיבי (מנהג רע בתכנות אבל זה בלי קשר...) אבל התפקיד שלו דומה.

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

אם התנאי שבודקים בתוך הלולאה אינו מתקיים אז המשתנה הזה מקבל שקר ואז הלולאה מפסיקה לרוץ.

פורסם
  • מחבר

לפני הלולאה של חיפוש המספר כתוב found = false

אז מה זה אומר על found! ?

פורסם

בוא נעשה קצת סדר.

איפה שכתוב found=false מדובר בהצבה של ערך למשתנה.

איפה שכתוב found! (בתוך הסוגריים של לולאת ה-for) מדובר בבדיקה של ערך המשתנה.

המשמעות של בדיקה כזו היא השאלה "האם במשתנה found מוצב ערך false?".

אם אין לך את סימן הקריאה אז המשמעות היא "האם במשתנה מוצב ערך true".

מכיוון שאתה מציב false למשתנה בתחילת התכנית אז הבדיקה found! מתקיימת - התשובה לשאלה הנ"ל חיובית ולכן הלולאה ממשיכה עד אשר תציב ערך true למשתנה הזה ואז התנאי כבר לא יתקיים.

פורסם

אופרטור "!" זה אופרטור אונרי שמשמעותו שלילה.

במידה וערכו של found הוא false אזי found! משמעותו true וההפך.



!false == true


!true == false

פורסם
  • מחבר

עכשיו זה ברור. תודה חבר'ה.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים