1 / 12

מבוא למדעי המחשב

מבוא למדעי המחשב. תרגול 5 שעת קבלה: יום שני 11:00-12:00 דוא"ל: keren@eli-wigs.com. פונקציות. פונקציה היא קטע קוד עצמאי שמיועד לשימוש חוזר. כל פונקציה מזוהה ע"י 3 שדות: טיפוס הערך שהפונקציה מחזירה. אם הפונקציה לא מחזירה ערך הטיפוס יהיה void . שם הפונקציה שישמש אותנו להפעלתה.

kipling
Download Presentation

מבוא למדעי המחשב

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. מבוא למדעי המחשב תרגול 5 שעת קבלה: יום שני 11:00-12:00 דוא"ל: keren@eli-wigs.com

  2. פונקציות פונקציה היא קטע קוד עצמאי שמיועד לשימוש חוזר. כל פונקציה מזוהה ע"י 3 שדות: • טיפוס הערך שהפונקציה מחזירה. אם הפונקציה לא מחזירה ערך הטיפוס יהיה void. • שם הפונקציה שישמש אותנו להפעלתה. • סוגריים ובתוכם רשימת הפרמטרים כאשר הם מופרדים בפסיקים. לכל פרמטר יש לציין את טיפוסו. גם אם אין פרמטרים, הסוגריים הם חובה.

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

  4. דוגמה #include <stdio.h> int abs(int x) { if (x<0) return (-x); return (x); } void main() { int a,b; printf (“\n enter 2 numbers”); scanf (“%d%d”,&a,&b); Printf (“ the absolute value of a = %d, the absolute value of b=%d”,abs(a),abs(b)); } הוראת החזרה

  5. לא ניתן לרשום פונקציה בתוך פונקציה. למשל, אי אפשר לרשום את הפונקציה abs בתוך הפונקציה main. כל פונקציה יכולה לקרוא לפונקציה שהוגדרה לפניה. כשיש מספר רב של פונקציות שמשתמשות אחת בשנייה נוצרת בעיה: באיזה סדר לרשום את כל הפונקציות? פתרון אפשרי: ניתן להצהיר על הפונקציות בתחילת התכנית, אחרי שורות ה-include ע"י כתיבת כותרת הפונקציה בלבד ובסופה התו ; .

  6. סוגי משתנים משתנה לוקלי (מקומי) הוא משתנה שמוגדר בגוף הפונקציה. הוא מוכר אך ורק ע"י הפונקציה שבה הוא מוכרז. למשל: int abs(int x) { int z; if (x<0) z=-x; else z=x; return (z); } Z הוא משתנה לוקלי של הפונקציה abs .

  7. משתנה חיצוני: משתנה שמוגדר מחוץ לגוף הפונקציה. תחום ההכרה של משתנה חיצוני הוא מרגע הופעתו בקובץ, כלומר, רק הפונקציות שמוגדרות אחריו יכירו אותו. משתנה מועבר: משתנה שמועבר ברשימת הפרמטרים לפונקציה. למשל, בפונקציה absX הוא משתנה מועבר. משתנה זה מוכר רק ע"י הפונקציה אליה הוא מועבר, אך ערכו הראשוני מתקבל ע"י הפונקציה הקוראת.

  8. מה לדעתך יהיה הפלט של התכנית הבאה? #include <stdio.h> void func(int x,int y) } x=10; y=30; printf ("\n x=%d y=%d",x,y); { void main() } int a=3,b=7; func(a,b); printf ("\n a=%d b=%d",a,b); { הרץ את התכנית ובדוק את תשובתך.

  9. כתבו תכנית שקולטת 5 שלשות של מספרים ממשיים ומדפיסה כמה שלשות מסודרות מהקטן לגדול יש. #include <stdio.h> int fixed(float a,float b ,float c) } return (a<b && b<c); { void main() } float num1,num2,num3; int count=0,i; for (i=1;i<=5;i++) } printf ("\n enter 3 numbers"); scanf ("%f%f%f",&num1,&num2,&num3); count+=fixed(num1,num2,num3); { printf ("\n there are %d fixed three",count); {

  10. כתבו תכנית שקולטת מספרים שלמים וחיוביים ומדפיסה את מכפלתם. קליטת הנתונים תפסק עם קליטת המספר 0.כתבו תחילה פונקציה שמחשבת מכפלת מספרים ללא פעולת הכפל. #include <stdio.h> int multi (int a,int b) } int i,result=0; for (i=1;i<=b;i++) result+=a; return result; { void main() } int num,ans=1; do } printf ("\n enter a number"); scanf ("%d",&num); if (num) ans=multi(num,ans); { while (num); printf ("\n the multiplication of all the numbers: %d",ans); {

  11. כתוב תכנית שתקלוט מספר תלמידים בבית הספר, ותדפיס כמה כיתות צריך (כאשר בכיתה לומדים 30 תלמידים) וכמה שולחנות צריך (כאשר לכל 2 תלמידים יש שולחן). השתמשו בפונקציה אחת. #include <stdio.h> int num_item(int num,int capacity) } int ans; if (!(num%capacity)) return (num/capacity); return ((num/capacity)+1); { void main() } int pupils; printf ("\n enter number of pupils"); scanf ("%d",&pupils); printf ("\n we need %d classes",num_item(pupils,30)); printf ("\n we need %d desks",num_item(pupils,2)); {

  12. כתבו תכנית שקולטת רבעיות של מספרים. אם המספר הראשון ברביעייה הוא 1, יודפס הממוצע של המספר השני והשלישי. אם המספר הראשון הוא 2, יודפס הממוצע של המספר השני והרביעי. אם המספר הראשון הוא 3 יודפס הממוצע של השלישי והרביעי. קליטת המספרים תסתיים כאשר המספר הראשון ברביעייה הוא לא 1 או 2 או 3. #include <stdio.h> void ave(float x,float y) } printf ("\n the average is: %f",(x+y)/2); { void main() } float a,b,c,d; printf ("\n enter 4 numbers"); scanf ("%f%f%f%f",&a,&b,&c,&d); while (a==1 || a==2 || a==3) } if (a==1) ave(b,c); if (a==2) ave(b,d); if (a==3) ave(c,d); printf ("\n enter 4 numbers"); scanf ("%f%f%f%f",&a,&b,&c,&d); { {

More Related