קבלת החלטות בתוכנית -
תנאים לוגיים IF
תהליך בקרה מורכב משלושה שלבים: קבלת מידע מהחיישנים, עיבוד מידע וקבלת החלטות , ביצוע פעולה במערכת בהתאם למידע.
קבלת החלטות הוא הלב של תהליך הבקרה ולכן גם בתכנות אנחנו נדרשים לקבל החלטות. קבלת החלטות בתוכנה מבוצע בעזרת תנאים לוגיים - פקודת IF.
לחצו על הכפתור להורדת מצגת בנושא.
מבנה בסיסי של קבלת החלטות בתוכנה - תרשים זרימה
בתרשים מעל ניתן לראות את שלושת השלבים של תהליך הבקרה. שלב קבלת ההחלטה מופיע בתוך המעויין: האם ההפרש גדול מערך רצוי כלשהוא? מהמעויין יוצאים שני חיצים שמייצגים את שתי ההחלטות שניתן לקבל: מה לעשות אם התשובה לשאלה היא כן, ומה לעשות אם התשובה היא לא.
בדומה לתיאור הגרפי של תהליך קבלת ההחלטות, כותבים את פקודת IF בתוכנית.
תחביר הפקודה IF
בדומה לתרשים הזרימה, ניתן לראות בתחביר הפקודה IF את השאלה שנבחנת - condition . אחרי השאלה ניתן לראות שני קטעים המוגבלים בסוגריים מסולסלים { }.
המקטע הראשון { } מכיל את הפקודות שהתוכנית תבצע אם התשובה לשאלה היא כן, ואילו המקטע השני { } מכיל את הפקודות לביצוע אם התשובה לשאלה היא לא.
איך מנסחים שאלה - condition
בתכנות ניתן לכתוב 6 סוגי תנאים (שאלות לבחינה) כפי שמופיע מעל.
שימו לב לכך שבדיקת שיוויון מסמנים עם 2 סימני ==, וזאת כדי להבדיל מכתיבה עם סימן = אחד שמשמעותו היא שמור את הערך שמימין לסימן בתוך המשתנה שמשמאל לסימן (למשל A=9) .
בדיקת שונות (אי שיוויון) מסומנת על ידי סימן קריאה ! וסימן שווה =. הסימן קריאה מייצג פעולת היפוך - ההפך משווה.
כל כתיבת של ביטוי תנאי מקבלת אחד משני ערכים: אמת TRUE, אם התשובה לשאלה היא כן, ושקר FLALSE אם התשובה לשאלה היא לא. הערך אמת מיוצג בתוכנה על ידי הערך 1, ואילו הערך שקר מיוצג על ידי 0.
דוגמאות בסיסיות
בדוגמא הראשונה (ראו תמונה) בתוכנית מוגדרים שני משתנים a ו- B. התוכנית בודקת האם A גדול מ- B. אם תנאי הבדיקה מקבל ערך TRUE היא מדפיסה ביטוי "A>B" , אחרת (ELSE) היא מדפיסה ביטוי הפוך. חשוב לשים לב כי אם הביטוי קיבל ערך FALSE זה מכסה שני מצבים: 1) A=B או 2) A<B
בדוגמא השניה (ראו תמונה) שינינו בתוכנית את הערכים של המשתנים a ו- B כדי שתדפיס את מצב ELSE
המשמעות של המילה ELSE היא "אחרת", כלומר אם התנאי שנבדק בשורת ה-IF לא מתקיים אז תבצע את הפקודות הבאות. לא תמיד יהיו הנחיות מה יש לבצע אחרת, ובמצב זה לא נכתוב את קטע הפקודה של ELSE. למשל: אם ביקשתי מהמשתמש להקליד ערך של שעה (0-23) כחלק מתוכנית גדולה, אז אני ארצה לבדוק שהוא הכניס ערך בתחום החוקי. הבדיקה תהיה האם הערך לא חוקי. אם התשובה היא אמת (ערך לא חוקי) אז התוכנית תבקש להכניס ערך אחר. אם התשובה היא שקר (ערך חוקי) אז התוכנית תמשיך הלאה ללא צורך להגדיר ELSE.
חשוב!!! כשכותבים בתוכנית תנאי IF יש לבדוק שהתוכנית מגיבה נכון לכל תוצאה אפשרית של הבדיקה כדי להמנע ממצב כפי שמופיע בדוגמא.