תכנות נומרי עם Matlab ו-Octave/אופרטורים
ערכים בוליאניים
[עריכה]אמת ושקר, וייצוגם
[עריכה]ביטוי בוליאני הוא ביטוי שיכול לקבל את הערכים "אמת" ו"שקר". לעתים צריך בתכניות מחשב להכריע האם דבר הוא אמת או שקר, לדוגמה, האם נכון שערכו של המשתנה x הוא 6, או האם שקר הוא שערכו של המשתנה x קטן מערכו של המשתנה y.
בשפות תכנות נהוגה המוסכמה שהערך המספרי 0 מציין "שקר", וכל ערך אחר מציין "אמת". במשפטי תנאי ובלולאות נראה כיצד לגרום למחשב לבצע פעולות שונות בהתאם לשאלה האם ערך כלשהו הוא אמת או שקר.
אופרטורים בוליאניים
[עריכה]קיימים מספר אופרטורים בוליאניים, כלומר אופרטורים שתוצאתם היא "אמת" או "שקר". לדוגמה, כדי לבדוק האם ערך המשתנה x הוא 6, רושמים
x == 6
כאשר יתבצע קטע קוד זה, יתרגם אותו המחשב ל"אמת" (ערך כלשהו שאינו 0) אם ערך x אכן 6, או ל"שקר" (הערך המספרי 0) אם ערכו שונה.
שים לב להבדל בין האופרטור == לבין פעולת ההשמה =.
אופן כתיבת האופרטורים הבוליאניים :
- == (להבדיל מ= המשמש להשמה) - האם שני צדי הביטוי שווים
- =~ - האם שני צדי הביטוי שונים
- > - האם הצד הימני של הביטוי גדול מצדו השמאלי
- < - האם הצד הימני של הביטוי קטן מצדו השמאלי
- => - האם הצד הימני של הביטוי גדול או שווה לצדו השמאלי
- =< - האם הצד הימני של הביטוי קטן או שווה לצדו השמאלי
תוכל לראות כיצד משתמשים באופרטורים בוליאניים בתנאי if (ייתכן שתרצה לבדוק זאת בקצרה לפני המעבר לנושא הבא).
אופרטורים לוגיים
[עריכה]כדאי לדעת: הרחבה בנושא ניתן למצוא בספר קשרים לוגיים. |
גימום, איווי, ושלילה
[עריכה]ביטוי בוליאני יכול להיות מורכב גם מאוסף של ביטויים בוליאניים פשוטים יותר, המחוברים על ידי קשרים לוגיים, למשל: "אם x שווה 5 או x שווה 6", או: "אם x גדול מ-y וגם y גדול מ-z", וכדומה.
גימום (conjunction בלעז), כלומר הקשר הלוגי "וגם", מיוצג על ידי התו & (או שני תווי &&):
<condition_1> &<condition_2>
כאשר condition_1 וcondition_2 הם שני תנאים בוליאניים, והגימום הוא אמת אם ורק אם שניהם אמת. לדוגמה:
x == 5 & y == 6
הוא התנאי שערכו של x הוא 5 וכן ערכו של y הוא 6.
איווי (disjunction בלעז), כלומר הקשר הלוגי "או", מיוצג על ידי התו | (או שני תווים ||):
<condition_1> | <condition_2>
כאשר condition_1 וcondition_2 הם שני תנאים בוליאניים, והאיווי הוא אמת אם ורק אם לפחות אחד מהם אמת אמת. לדוגמה:
x == 5 | y == 6
הוא התנאי שערכו של x הוא 5 או שערכו של y הוא 6.
שלילה (negation בלעז), כלומר הקשר הלוגי "לא", מיוצג על ידי התו ~:
~<condition>
כאשר condition הוא תנאי בוליאני, והשלילה היא אמת אם ורק אם התנאי הוא שקר. לדוגמה:
~(x == 5)
הוא התנאי השולל שערכו של x הוא 5.
ניתן גם ליצור תנאים המורכבים ממספר גדול יותר של ביטויים וקשרים לוגיים, ולהשתמש בסוגריים ע"מ לקבוע את סדר חישובם. למשל:
a > b | (a <= b & b==5)
.
הערכת ביטויים לוגיים מורכבים
[עריכה]בעת הרצת התוכנית מתבצע חישוב של תנאי מורכב משמאל לימין, ובשימוש בקצר לוגי (שיוסבר להלן).
נתבונן בתנאי המורכב:
x == 5 | y == 6
מבין שני הביטויים כאן, הביטוי השמאלי, x == 5 הוא זה שיוערך ראשון. כעת יש שתי אפשרויות:
- אם ביטוי זה הוא שקר, עדיין יכול הביטוי המורכב, x == 5 | y == 6, להיות אמת - יש לבדוק אם הביטוי הימני, y == 6, הוא אמת.
- אם ביטוי זה הוא אמת, אז הביטוי המורכב, x == 5 | y == 6, בהכרח אמת. אין צורך אפילו לבדוק את הביטוי הימני. השפה מבטיחה במקרה זה לערוך קצר לוגי - היא כלל לא תעריך את y == 6.
השפה מבטיחה שני סוגי קצרים לוגיים. בתנאי המורכב
<left_condition> | <right_condition>
לא יוערך הביטוי right_condition אם left_condition אמת. בתנאי המורכב
<left_condition> && <right_condition>
לא יוערך הביטוי right_condition אם left_condition שקר.
מתכנתים משתמשים בקצרים לוגיים באופן תדיר. לדוגמה:
if(x ~= 0 & 1 | x < 2)
disp('OK');
end
מבטיחה, על ידי קצר לוגי, שלא תתבצע בטעות חלוקה ב0.
דוגמה נוספת- לולאה שתתבצע עד שהמשתמש יכניס מספר חיובי.
x=-1;
while x<=0
x=input('insert number ');
end
הפרק הקודם: פעולות חשבון |
אופרטורים | הפרק הבא: משפטי תנאי |