» נושאי לימוד
» נושאי לימוד
יום שבת 4 במאי 2024
פונקציות מתמטיות בפסקל
דף ראשי  פרק 3 :יסודות שפת פסקל  לולאות  פונקציות מתמטיות בפסקל גרסה להדפסה

פונקציות מתמטיות בפסקל

 

עד כה עסקנו רק בתוכניות שכללו רק את ארבע הפעולות הפשוטות. נוסיף עוד שתי פעולות חשבון פשוטות div ו- mod.

הפעולה div מבצעת חילוק שלמים כלומר המנה ללא השארית. התוצאה מוצבת במשתנה שלם.

הפעולה mod מחשבת את השארית שבחילוק שלמים.

 

לדוגמא:                 9div 4 = 2

                           9mod 4 = 1                  

 

אם נרצה למצוא את ספרת היחידות Y במספר מסוים X, נרשום:                                               Y:=X mod 10

ואם נרצה להציב את שאר הספרות משמאל לספרה האחרונה במספר X לתוך המשתנה Z :  

                                                           Z:=X div 10

 

בשתי פעולות אלו, div ו- mod יהיו מעורבים משתנים שהוגדרו כ-integer בלבד.

מבחינת סדר הקדימויות בפעולות החשבון, פעולות אלו שוות-ערך לפעולת הכפל והחילוק.

 

סיכום פעולות אריתמטיות בפסקל:

 

Operator

Operation

Operands

Result

+

Addition or unary positive

real or integer

real or integer

-

Subtraction or unary negative

real or integer

real or integer

*

Multiplication

real or integer

real or integer

/

Real division

real or integer

real

div

Integer division

integer

integer

mod

Modulus (remainder division)

integer

integer

 

בפסקל קיימות פונקציות נוספות המאפשרות ביצוע תוכניות מרוכבות יותר.

אנו נלמד כמה מהפונקציות השימושיות לנו.

ככל שהשפה מתקדמת יותר כך מספר הפונקציות המשכללות את השפה רב יותר (זה אחד ההבדלים שבין הגירסאות השונות של טורבו פסקל)

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

 

program SQUARE_ROOT;

var

    X:real;

begin

    readln(X);

    X:=sqrt(X);

     write(X);

end.

 

 

 

 

 

 

 

 

 

 

 

 

 להורדת הדוגמא לחץ כאן

 

דוגמת ריצה:

 

 

בדוגמא זו הוצגה הפונקציה sqrt, המבצעת את הוצאת השורש מהמשתנה הנתון בסוגריים. את תוצאת החישוב, ההוראה מציבה שוב במשתנה X.

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

לאכל פונקציה יכולה לבצע פעולה על כל סוג משתנה. ישנן פונקציות שסוג המשתנה בסוגריים יכול להיות רק שלם או רק ממשי. וגם התוצאה היא ממשית או שלמה.

משתנה עליו מבוצעת הפעולה נקרא משתנה הכניסה לפונקציה.

המשתנה שלתוכו מוצבת תוצאת החישוב של הפונקציה נקרא משתנה היציאה של הפונקציה.

 

 

להלן מס' פונקציות שימושיות בפסקל:

 

פונקציית sqrt שמחזירה לנו את השורש של המספר.
דוגמא לתחביר בפסקל:   ;(X:=sqrt(Y
דוגמא לתוצאה מספרית: sqrt(9) = 3

 

פונקציית trunc שקוצצת את הספרות שאחרי הנקודה.
דוגמא לתחביר בפסקל:    ;(X:=trunc(Y
דוגמא לתוצאה מספרית: trunc(3.5)=3

 

פונקציית round שמעגלת את המספר.
דוגמא לתחביר בפסקל:      ;(X:=round(Y
דוגמא לתוצאה מספרית: round(2.7) = 3

 

 

פונקצית abs  שמחזירה את הערך המוחלט של המספר.
דוגמא לתחביר בפסקל:   ;(X:=abs(Y
דוגמא לתוצאה מספרית: abs(-9) = 9

 

סיכום פונקציות שימושיות בפסקל 

 

Function Name

Description

Argument type

Return type

abs

absolute value real or integer same as argument type

arctan

arctan in radians real or integer real

cos

cosine of a radian measure real or integer real

exp

e to the given power real or integer real

ln

natural logarithm real or integer real

round

round to nearest integer real integer

sin

sin of a radian measure real or integer real

sqr

(square (power 2 real or integer same as argument type

sqrt

(square root (power 1/2 real or integer real

trunc

(truncate (round down real or integer integer

 


 

דוגמא:

נניח שנתונים שני מספרים שלמים וחיוביים בני ארבע ספרות כל אחד.

נגדיר את המרחק בין שני המספרים כשורש סכום הריבועים בין הספרות.

לדוגמא, נתונים שני המספרים: 2345  ו- 7890 אזי המרחק X בין שני המספרים הוא:

 

 

יש להפחית מכל ספרה במספר הראשון את הספרה העומדת באותו מקום במספר השני ואת התוצאה לעלות בריבוע. לסכם את התוצאות ולהוציא שורש ריבועי.

 

פתרון:

 

בתוכנית זו, עלינו לפרק כל מספר לספרותיו כדי לבצע את המתבקש. לצורך זה נשתמש בפונקציות mod ו-div.

 

program DST;

  { תוכנית למציאת המרחק בין שני מספרים שלמים וחיוביים }

var

    A,B:integer; (* המספר הראשון והשני,בהתאמה*)

    I: integer; (* משתנה הלולאה *)

    S: integer; (*  צובר סכום הריבועים*)

    DEST: real; (* המרחק בין שני המספרים *)

    X,Y: integer; (* הספרות של המספרים *)

 

procedure INPUT_NUMBERS;

   {תת-תוכנית לקליטת שני המספרים  }

begin

    write ('  הקש מספר שלם חיובי בן ארבע ספרות '); readln(A);

    write ('  הקש מספר שלם חיובי בן ארבע ספרות '); readln(B);

end;

 

procedure FIRST;

   {  תת-תוכנית להצבת ערכים התחלתיים}

begin

    S:=0; (* הוא צובר ולכן נאפס אותו S *)

end;

 

procedure LAST_DIGIT_FIRST_NUM;

   { תת-תוכנית למציאת הספרה האחרונה מצד ימין של המספר הראשון }

begin

    X:=A mod 10;(*אם נחלק בעשר השארית היא הסיפרה האחרונה מימין*)

    A:=A div 10;(* מנת החלוקה ב-10 הן שאר הספרות משמאל, לפעם הבאה*)

end;

 

procedure  LAST_DIGIT_SECOND_NUM;

    { תת-תוכנית למציאת הספרה האחרונה מצד ימין של המספר השני }

begin

   Y:=B mod 10; (*אם נחלק בעשר אזי השארית היא הסיפרה האחרונה מימין*)

   B:=B div 10;(* מנת החלוקה ב-10 הן שאר הספרות משמאל, לפעם הבאה*)

end;

 

procedure SQUARE_DIFFERENCE;

   { תת תוכנית לצבירת ריבועי ההפרש של הספרות המחושבות בכל פעם }

begin

   S:= S+(X-Y)*(X-Y); (* אין פונקציה לחזקה ולכן נכפיל מספר בעצמו*)

end;

 

procedure SQUARE_ROOT_OF_SUM;

   { תת-תוכנית להוצאת השורש מסכום הריבועים }

begin

   DEST:=sqrt(S);

end;

 

procedure PRINT;

   { תת-תוכנית להדפסת התוצאות }

begin

   writeln (DEST, ' =  המרחק בין המספרים ' );

end;

 

(********** התוכנית הראשית************)

begin

   FIRST; (* בצע הצבת ערכים התחלתיים במשתנים *)

   INPUT_NUMBERS; (* קלוט מספרים *)

   for I:=1 to 4 do   (* ארבע ספרות – לולאה מאחד עד ארבע *)

   begin

      LAST_DIGIT_FIRST_NUM;  (* מצא הספרה הימנית *)   

      LAST_DIGIT_FIRST_NUM;  (* מצא הספרה הימנית *)
      LAST_DIGIT_SECOND_NUM; (* מצא הספרה הימנית *)
      SQUARE_DIFFERENCE;(*מצא את ריבוע ההפרש וצבור אותו *)
   end;
   SQUARE_ROOT_OF_SUM;  (* מצא את שורש סכום הריבועים *)
   PRINT; (* הדפס את התוצאה *)
end.

 

 להורדת הדוגמא לחץ כאן

 

דוגמת ריצה:

 

 

 10-03-04 / 22:47  עודכן ,  01-09-03 / 20:56  נוצר ע"י כפיר מרגי  בתאריך 
 לולאת REPEAT - הקודםהבא - לולאות כפולות 
תגובות הקוראים    תגובות  -  0
דרכונט
מהי מערכת הדרכונט?
אינך מחובר, להתחברות:
דוא"ל
ססמא
נושאי לימוד
חיפוש  |  לא פועל
משלנו  |  לא פועל
גולשים מקוונים: 2