ביטויים בוליאניים מורכבים

סגור באמצעות טופס זה תוכלו לספר ולהמליץ לחבריכם..
שם השולח:
כתובת דוא"ל של השולח:
שם המקבל:
שלח לכתובת דוא"ל:
הוסף הערה:
לעיתים קרובות ביצוע של קוד מותנה בקיומם של מספר תנאים או בקיום של תנאי בודד מבין



ביטויים בוליאנים מורכבים
 
מאת: ארז קלר


 להורדת דוגמאות הקוד

לעיתים ביטוי בוליאני מורכב ממספר ביטויים בוליאניים פשוטים יותר,
לדוגמה:
"אם תקבל ציון 100 במתמטיקה ותקבל ציון 100 באנגלית נקנה לך מחשב חדש".
"אם תקבל ציון 100 במתמטיקה או תקבל ציון 100 באנגלית נקנה לך מחשב חדש". 
במשפט הראשון התנאים לקבלת מחשב חדש הוחמרו, לא מספיק לקבל ציון 100 במתמטיקה (משימה קשה כשלעצמה), אלא, נדרש לקבל גם ציון 100 באנגלית.
אם "נפספס" באחד מהמקצועות לא נקבל מחשב חדש.
המשפט השני מקל עלינו, מספיק שנקבל ציון 100 באחד מהמקצועות (מתמטיקה או אנגלית) על מנת לקבל מחשב חדש.
המשותף לשני המשפטים – שניהם מורכבים משני משפטים בוליאניים פשוטים:
  1. "אם תקבל ציון 100 במתמטיקה"   
  2. "אם תקבל ציון 100 באנגלית"
השוני בין המשפטים הוא במילת הקשר ביניהם :
במשפט הראשון השתמשנו ב- וגם - מקובל לכנותו AND.

במשפט השני השתמשנו ב- או - מקובל לכנותו OR.

גם בתכנות נאלץ לבדוק מספר ביטויים בוליאניים על מנת להחליט האם לבצע פעולה מסוימת או שלא לבצע אותה.
לדוגמה:
"אם X גדול מ-0 וגם Y גדול מ- 0 אז צייר עיגול".
"אם X גדול מ-0" – הביטוי הבוליאני הפשוט הראשון,
"אם Y גדול מ-0" – הביטוי הבוליאני הפשוט השני.
מילת הקשר ביניהם היא 'וגם' (AND) ולכן שניהם צריכים להתקיים על מנת שנצייר עיגול.
"אם רוחב המלבן גדול מ-100 או גובה המלבן גדול מ-100 אז צייר עיגול".
"אם רוחב המלבן גדול מ- 100" - הביטוי הבוליאני הפשוט הראשון,
"אם גובה המלבן גדול מ- 100"  - הביטוי הבוליאני הפשוט השני.
מילת הקשר ביניהם היא או (OR) ולכן רק אחד מהם צריך להתקיים על מנת שנצייר עיגול.
 

בשפת #C מוגדרים שני אופרטורים המאפשרים ביצוע התניות מורכבות:
האופרטור &&  – מממש פעולת AND ('וגם') - יחזיר true רק כאשר שני  האופרנדים שלו (או כולם) הם true .
האופרטור || – מממש פעולת OR ('או') - יחזיר true כאשר אחד האופרנדים או כולם הם true .
בשני המקרים האופרנדים יכולים להיות משתנים בוליאניים או ביטויים בוליאניים.


And Operator
האופרטור && (AND)
 
מחזיר true רק כאשר שני האופרנדים שווים true .
לדוגמה:
בתוכנית מוגדרים שלושה משתנים בוליאניים:
bool flag1;
bool flag2;
bool result;

מה יהיה ערכו של המשתנה הבוליאני result לאחר ביצוע הפעולה הבאה?
;result = flag1 && flag2
 
flag1 flag2 && (AND)
false false false
true false false
false true false
true true true
 
 
OR Operator
האופרטור || (OR) 
יחזיר true כאשר לפחות אחד האופרנדים שווה true .
לדוגמה:
בתוכנית מוגדרים שלושה משתנים בוליאניים: 
bool flag1;
bool flag2;
bool result;
מה יהיה ערכו של המשתנה הבוליאני result לאחר ביצוע הפעולה הבאה?
result = flag1 || flag2;
 
flag1 flag2 II (OR)
false false false
true false true
false true true
true true true
 
דוגמת קוד (Logical Operator):
 1  : class Program 
 2  : { 
 3  :     static void Main(string[] args) 
 4  :     { 
 5  :         int num1 = 11; 
 6  :         int num2 = 12; 
 7  :         int num3 = 13; 
 8  :         int num4 = 14; 
 9  :         bool result = (num1 <= num2) || (num3 > num1); 
 10 :         Console.WriteLine(result); 
 11 :         result = (num4 <= num2) && (num4 != num1); 
 12 :         Console.WriteLine(result); 
 13 :     } 
 14 : } 
בשורה 9 - ביטוי בוליאני מורכב תוך שימוש באופרטור OR, מספיק שרק אחד מהאופרנדים של האופרטור || יהיה true כדי שכל הביטוי יהיה true.
בשורה 11 - ביטוי בוליאני מורכב תוך שימוש באופרטור AND, מספיק שרק אחד מהאופרנדים של האופרטור && יהיה true כדי שכל הביטוי יהיה true.
הערה - הסוגריים הם לא חובה, אבל הקוד יותר קריא כאשר עוטפים את האופרנדים בסוגריים.

פלט:
פלט התוכנית LogicalOperator


סדר קדימות של אופרטורים

האופרטור && (AND) הוא מסדר קדימות גבוה יותר מאשר האופרטור || (OR) והוא יחושב קודם:
 bool flag1 = false;
 bool flag2 = false;
 bool flag3 = true;
 bool result = flag1 || flag2 && flag3;
 Console.WriteLine(result);
התוצאה של הביטוי הוא false משום שתחילה מתבצע החישוב של flag2 && flag3 (מכיוון ש-flag2=false כל הבטוי שווה false) ורק לאחר מכן מתבצע חישוב של || בין התוצאה הראשונה לבים flag1.


 


 
 
 
העכבר הראשון
הומצא בשנת 1963 על ידי 
דאגלס אנגלברט,
לקח לו יותר מ-20 שנה
להפוך לרכיב חיוני.

 
העכבר הראשון