פרק 9  הוראות אריתמטיות.

ד. עיגול תוצאות חישוב

מצב מאוד שכיח בתכנות, בכתיבת הוראה אריתמטית כלשהי, הוא קבלת תוצאה, שאיננה מדוייקת לגמרי. כיצד מתרחש מצב שכזה? נשים לב לדוגמא הבאה:

ADD AMT1, AMT2  GIVING  AMT3.

AMT1                 AMT2                 AMT3          

התוכן אחרי  פעולת  ADD

PICTURE

התוכן

PICTURE

התוכן

PICTURE

37.99

99V99

25.142

99V999

12.857

99V999

כיוון ששדה התוצאה הוא משתנה המוגדר רק עם שתי ספרות דיוק לאחר  הנקודה העשרונית, מתבצע קיצוץ של הספרה הימנית ביותר 12.857 + 25.142 = 37.99, כך שהתוצאה המתקבלת איננה האמיתית ממש. באופן כללי, במקרים אלו, ברור שתוצאה יותר רצויה היתה התשובה 38.00, כלומר, תוצאה המעוגלת כלפי מעלה, בסיפרה הימנית.

על מנת להשיג עגול בהוראות אריתמטיות, ניתן להשתמש בעיגול התוצאה, בכל סוגי ההוראות שלמדנו, בעיגול התוצאה כפי שנראה בדוגמאות להלן:

ADD  AMT1  TO  AMT2  ROUNDED.

SUBTRACT  DISCOUNT  FROM  TOTAL  ROUNDED.

MULTIPLY  QTY  BY  PRICE  ROUNDED.

.DIVIDE  UNITS-OF-ITEM  INTO  TOTAL  ROUNDED

אפשר להשתמש בטכניקה זו גם בצורת הכתיבה עם GIVING, כפי שנראה מיד. בכל המקרים השונים, המילה השמורה ROUNDED תבוא מיד לאחר שם המשתנה, שהוא שדה התוצאה.

דוגמאות

ADD AMT1, AMT2  GIVING  TOTAL  ROUNDED.

ADD AMT1, AMT2  GIVING  TOTAL1  ROUNDED,  TOTAL2  ROUNDED.

אם שדות הנתונים AMT1 ו-AMT2 אמנם מכילים את הערכים כפי שצויינו בדוגמא, התוצאה אשר תתקבל בשתי הדוגמאות היא שהערך יעוגל ל-38.00.

יש לשים לב, שהשימוש ב-ROUNDED אינו הכרחי בכתיבה, והוא אכן רשות בלבד, ולא חובה. בכל מקרה, בו נכתוב בהוראה לעגל, נקבל תמיד תוצאה מעוגלת כלפי מעלה, בהתאם להגדרת משתנה התוצאה. אם לא נשתמש באפשרות העיגול, יכולים להיות מקרים של תוצאות מקוצצות. בדוגמא שלהלן נראה, כיצד אנו מקבלים שתי תוצאות שונות, במקרים של שימוש ב-ROUNDED, או אי שימוש בו (בהתאם לרצוננו):

דוגמא

DISCOUNT               TOTAL                    AMT          

התוכן

PICTURE

התוכן

PICTURE

התוכן

PICTURE

00

99

99.98

99V99

87.23

99V99

 

1. כתיבה רגילה

SUBTRACT   DISCOUNT  FROM  TOTAL  GIVING  AMT.  

במקרה זה, התוצאה המתקבלת (99.98 - 87.23 = 12.75) מכילה שתי ספרות אחר הנקודה, וכיוון שמשתנה התוצאה מוגדר ללא ספרות עשרוניות כלל, הרי נקבל ב-AMT את המספר 12 , לאחר קיצוץ של הספרות מימין.

2. כתיבה עם עיגול

SUBTRACT  DISCOUNT  FROM  TOTAL  GIVING  AMT  ROUNDED.

במקרה זה, אותה תוצאה 12.75 מעוגלת כלפי מעלה, ולפי הגדרת משתנה התוצאה, נקבל ב-AMT את המספר 13 (שהוא שונה מ-12 בתבנית מס'1  ).

אם משתמשים במלה ROUNDED, בהוראת ה-DIVIDE עם שארית, הרי מלה זו תופיע ראשונה ( לפי הכלל, צמודה למשתנה התוצאה); בצורה הבאה:

 (שם-נתון-3) GIVING (שם-נתון-2) BY {שם-נתון-1} DIVIDE

(קבוע-2)   INTO    {קבוע-1}                  

 [(שם-נתון-4) ROUNDED] [REMINDER] 

השארית תאוחסן, כמובן, במשתנה הרביעי.

קודם | תחילת הדף | הבא

שאלות להערכה עצמית >>

 

נושאים

פרק 3 - חטיבת הזיהוי                               (IDENTIFICATION DIVISION)
פרק 6 - חטיבת הביצוע                               (PROCEDURE DIVISION)
פרק 14 - הוראת DISPLAY ו-ACCEPT

.איתן 2002. כל הזכויות שמורות למערכת המידע איתן ©