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

פונקציות המוגדרות על ידי המתכנת

                                                    

                   

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

לדוגמא:  ;(X:=sqrt (X

כלומר, חשב את השורש הריבועי של X והצב אותו בחזרה בתוך X.

 

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

מבחינת כתיבת התוכנית והתייחסות לבניית הפונקציות אין שום הבדל בין function (פונקציה) לבין procedure (פרוצדורה). פונקציה היא תת-תוכנית לכל דבר. ההבדל היחידי, כפי שרואים בפונקציה sqrt, הוא שפונקציה מחזירה ערך באופן המאפשר כתיבה נוחה ואלגנטית.

פונקציה מחזירה ערך.

אופן פעולתה והשימוש בה דומה ל- procedure.

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

 

אופן ההגדרה והשימוש בפונקציה:

 

 

;סוג: (משתנים המועברים)שם הפונקציהfunction

var

          הגדרת משתנים מקומיים       

begin

                   גוף הפונקציה,                     

                     ההוראות                             

          ;ביטוי =: שם הפונקציה          

 ;end

 

ההצבה לתוך הפונקציה אינה חייבת להיות דווקא בסוף גוף התוכנית, אפשר להציב בכל מקום, וכמה פעמים שרוצים, את הביטוי או הערך לפונקציה.

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

 

דוגמא:

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

 

פתרון:

 

program NAME;

var

   NUMBER: integer;   

·       

· קטע הבא לפני תת-תוכנית (פונקציה) זו

·       

   { סדר הכתיבה זהה לזה של פרוצדורה }

 

function INCREMENT (N:integer): integer;

(* שם הפונקציה הוא כמו (אך לא בדיוק) שם של משתנה/תא  *)

(* העברת ערכים עם אותם כללים *)

(* אחרי העברת משתנים, מגדירים גם את סוג התא שהוא השם של הפונקציה *)

(* integer כאן הפונקציה מחזירה ערך שלם ולכן רשום אחרי הנקודתיים  *)

 

begin

   INCREMENT:=N+1;   (* הערך מוצב בפונקציה/ שם משתנה *)

end;

   ·       

   ·        קטע הבא אחרי תת-תוכנית (פונקציה) זו

   ·       

 

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

 

begin

   write (' הקש מספר שלם' );

   readln (NUMBER);

   { השימוש בפונקציה הוא כמו בפונקציות מוכנות על ידי פסקל }

   NUMBER:=INCREMENT(NUMBER);

   writeln(NUMBER, ' = המספר לאחר ביצוע הפונקציה');

end.

 

 

דוגמא נוספת:

כתוב תת תוכנית, המקבלת מספר כלשהו שלם ומחשבת כמה ספרות יש במספר זה.

 

פתרון:

גם אם המספר המועבר הוא 0, הרי יש ספרה אחת ולכן נתחשב באפשרות זו.

 

 

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

 23-03-04 / 22:25  עודכן ,  03-09-03 / 15:16  נוצר ע"י כפיר מרגי  בתאריך 
 משתנים כלליים ופרטיים-המשך - הקודםהבא - הצהרות TYPE 
תגובות הקוראים    תגובות  -  0
דרכונט
מהי מערכת הדרכונט?
אינך מחובר, להתחברות:
דוא"ל
ססמא
נושאי לימוד
חיפוש  |  לא פועל
משלנו  |  לא פועל
גולשים מקוונים: 3