שימוש בדגל
לעיתים יש שימוש במשתנה עזר המשמש בדגל. דגל עוזר לנו לבצע החלטות על תקינות או אי תקינות הקלט והנתונים.
דוגמא לשימוש יעיל בדגל:
כתוב תת תוכנית הפותרת את הנוסחא:
נניח לצורך הפתרון כי קיימת תת-תוכנית אחרת הקולטת את המשתנים הממשיים A,B,C.
פתרון:
בנוסחא זו יש לבצע שתי בדיקות חשובות:
1. אם A שונה מ- 0?
2. האם הסכום A+B שונה מ-0?
אחרת,אם אחד מ-2 הביטויים יהיה שווה ל-0 נקבל תוצאה סופית בלתי מוגדרת (כתוצאה מחלוקה ב-0). במקרה כזה, המחשב מפסיק את הביצוע התקין של התוכנית ומודיע על שגיאה חמורה.
תת התוכנית הבאה מונעת חלוקה ב-0 על ידי בדיקה:
program CALC; var A,B,C:real; (* משתני הנוסחא *) FLG: integer; (*משתנה הנקרא דגל: משתנה עזר לתנאי החלוקה באפס*)
procedure FORMULA; { תת תוכנית הפותרת את הנוסחא} begin if A<> 0 then if (A+B) <> 0 then FLG :=1; else FLG:=0; else FLG := 0; (* הוא משתנה המוגדר כשלם FLG *) (* כאשר 1 מציין תקינות ו-0 מציין תוצאה בלתי מוגדרת *) if FLG = 1 then begin (* נקודה-פסיק בסיום כל הוראה בתוך הבלוק הפנימי *) X:= (A+B*(2+C*C/A)+B)/(A+B); writeln(X, ' = תוצאת הנוסחא'); end else writeln (' פתרון הנוסחא בלתי-מוגדר'); end;
|
כאשר הטעות בתוכנית מסוימת אינה נובעת מתחביר לקוי (לדוגמא חלוקה ב-0),כלומר, התוכנית עוברת הידור כנדרש, אך לא מבצעת את הדרוש או מתגלה תקלה תוך כדי ריצה. הטעות נחשבת כטעות לוגית (טעות בהיגיון התוכנית). רוב עבודתו של המתכנת היא בהיגיון ולא בתחביר.
טעות שאינה תחביר ומתגלה רק בהרצה היא טעות לוגית! |