תכנות נומרי עם Matlab ו-Octave/אופרטורים: הבדלים בין גרסאות בדף

תוכן שנמחק תוכן שנוסף
שומבלע (שיחה | תרומות)
העתקה משפת c ותחילת עבודה
 
שומבלע (שיחה | תרומות)
התאמה
שורה 1:
{{Matlab/octave}}
 
כדי להשתמש בנתונים שנקלטו מהמשתמש ולנתב בעזרתם את התוכנה, מדי פעם צריכים לעשות בדיקה של הנתונים.
 
==ערכים בוליאניים==
 
===אמת ושקר, וייצוגם בשפת C===
 
ביטוי בוליאני הוא ביטוי שיכול לקבל את הערכים "אמת" ו"שקר". לעתים צריך בתכניות מחשב להכריע האם דבר הוא אמת או שקר, לדוגמה, האם נכון שערכו של המשתנה x הוא 6, או האם שקר הוא שערכו של המשתנה x קטן מערכו של המשתנה y.
 
בשפתבשפות Cתכנות נהוגה המוסכמה שהערך המספרי 0 מציין "שקר", וכל ערך אחר מציין "אמת". בהמשך[[Matlab/octave/משפטי דףתנאי|במשפטי זהתנאי]] וב[[שפת CMatlab/octave/לולאות|לולאות]] נראה כיצד לגרום למחשב לבצע פעולות שונות בהתאם לשאלה האם ערך כלשהו הוא אמת או שקר.
 
===אופרטורים בוליאניים===
 
שפת C כוללתקיימים מספר אופרטורים בוליאניים, כלומר אופרטורים שתוצאתם היא "אמת" או "שקר". לדוגמה, כדי לבדוק האם ערך המשתנה x הוא 6, רושמים
<source lang = "cmatlab">
x == 6
</source>
שורה 20:
שים לב להבדל בין האופרטור == לבין פעולת ההשמה =.
 
לשפתאופן Cכתיבת האופרטורים הבוליאניים הבאים:
*<nowiki>== (להבדיל מ= המשמש להשמה) - האם שני צדי הביטוי שווים</nowiki>
*<nowiki>=!~ - האם שני צדי הביטוי שונים</nowiki>
*<nowiki>> - האם הצד הימני של הביטוי גדול מצדו השמאלי</nowiki>
*<nowiki>< - האם הצד הימני של הביטוי קטן מצדו השמאלי</nowiki>
שורה 36:
ביטוי בוליאני יכול להיות מורכב גם מאוסף של ביטויים בוליאניים פשוטים יותר, המחוברים על ידי קשרים לוגיים, למשל: "אם x שווה 5 '''או''' x שווה 6", או: "אם x גדול מ-y '''וגם''' y גדול מ-z", וכדומה.
 
גימום ([[w:en:conjunction|conjunction]] בלעז), כלומר הקשר הלוגי "וגם", מיוצג על ידי התו & (או שני התוויםתווי &&):
<source lang = "cmatlab">
<condition_1> && <condition_2>
</source>
כאשר condition_1 וcondition_2 הם שני תנאים בוליאניים, והגימום הוא אמת אם ורק אם שניהם אמת. לדוגמה:
<source lang = "c">
x == 5 && y == 6
</source>
הוא התנאי שערכו של x הוא 5 וכן ערכו של y הוא 6.
 
 
איווי ([[w:en:disjunction|disjunction]] בלעז), כלומר הקשר הלוגי "או", מיוצג על ידי התו | (או שני התוויםתווים ||):
<source lang = "cmatlab">
<condition_1> || <condition_2>
</source>
כאשר condition_1 וcondition_2 הם שני תנאים בוליאניים, והאיווי הוא אמת אם ורק אם לפחות אחד מהם אמת אמת. לדוגמה:
<source lang = "cmatlab">
x == 5 || y == 6
</source>
הוא התנאי שערכו של x הוא 5 או שערכו של y הוא 6.
 
שלילה ([[w:en:negation|negation]] בלעז), כלומר הקשר הלוגי "לא", מיוצג על ידי התו !:
<source lang = "cmatlab">
!<condition>
</source>
כאשר condition הוא תנאי בוליאני, והשלילה היא אמת אם ורק אם התנאי הוא שקר. לדוגמה:
<source lang = "c">
!~(x == 5)
</source>
הוא התנאי השולל שערכו של x הוא 5.
שורה 69:
 
ניתן גם ליצור תנאים המורכבים ממספר גדול יותר של ביטויים וקשרים לוגיים, ולהשתמש בסוגריים ע"מ לקבוע את סדר חישובם. למשל:
<source lang = "cmatlab">
a > b || (a <= b && b==5)
</source>
.
 
תוכל לראות כיצד משתמשים באופרטורים בוליאניים ב[[שפת C/ביטויים בוליאניים ותנאים#if ואופרטורים|התנאי if]] (ייתכן שתרצה לבדוק זאת בקצרה לפני המעבר לנושא הבא).
 
====הערכת ביטויים לוגיים מורכבים====
 
{{שקול לדלג|סיבה = נושא זה מסביר את אחת הטכניקות הקצרניות של שפת C (הידועה בקצרנותה). הקוד הנוצר משימוש בטכניקה זו עלול לבלבל מתכנתים מתחילים. עם זאת, טכניקה זו נמצאת בשימוש רב, בעיקר ב[[שפת C/מערכים|מערכים]], ולכן מומלץ שתשוב לנושא כאן כשתגיע לשם.}}
 
בעת הרצת התוכנית מתבצע חישוב של תנאי מורכב משמאל לימין, ובשימוש בקצר לוגי (שיוסבר להלן).
 
נתבונן בתנאי המורכב:
<source lang = "cmatlab">
x == 5 || y == 6
</source>
מבין שני הביטויים כאן, הביטוי השמאלי, x == 5 הוא זה שיוערך ראשון. כעת יש שתי אפשרויות:
*אם ביטוי זה הוא שקר, עדיין יכול הביטוי המורכב, x == 5 || y == 6, להיות אמת - יש לבדוק אם הביטוי הימני, y == 6, הוא אמת.
* אם ביטוי זה הוא אמת, אז הביטוי המורכב, x == 5 || y == 6, בהכרח אמת. אין צורך אפילו לבדוק את הביטוי הימני. השפה מבטיחה במקרה זה לערוך ''קצר לוגי'' - היא כלל לא תעריך את y == 6.
 
השפה מבטיחה שני סוגי קצרים לוגיים. בתנאי המורכב
<source lang = "cmatlab">
<left_condition> || <right_condition>
</source>
לא יוערך הביטוי right_condition אם left_condition אמת. בתנאי המורכב
<source lang = "cmatlab">
<left_condition> && <right_condition>
</source>
לא יוערך הביטוי right_condition אם left_condition שקר.
 
בשפת C, הידועה בקצרנותה, מתכנתים משתמשים בקצרים לוגיים באופן תדיר. לדוגמה:
<source lang = "cmatlab">
if(x !~= 0 && 1 / x < 2)
printfdisp("'OK"');
end
</source>
מבטיחה, על ידי קצר לוגי, שלא תתבצע בטעות חלוקה ב0.
 
דוגמה נוספת- לולאה שתתבצע עד שהמשתמש יכניס מספר חיובי.
<source lang = "matlab">
x=-1;
while x<=0
x=input('insert number ');
end
</source>
{{Matlab/octave|מוגבל}}
[[קטגוריה:Matlab/octave|קלט ופלט]]