ב-c, נוכל לחלק תוכנית גדולה לאבני הבניין הבסיסיות הידועות כפונקציה. הפונקציה מכילה את קבוצת הצהרות התכנות המוקפות על ידי {}. ניתן לקרוא לפונקציה מספר פעמים כדי לספק שימוש חוזר ומודולריות לתוכנית C. במילים אחרות, אנו יכולים לומר שאוסף הפונקציות יוצר תוכנית. הפונקציה ידועה גם בשם תהליך אוֹ תת שגרה בשפות תכנות אחרות.
היתרון של פונקציות ב-C
יש את היתרונות הבאים של פונקציות C.
- על ידי שימוש בפונקציות, נוכל להימנע מלכתוב מחדש את אותו היגיון/קוד שוב ושוב בתוכנית.
- אנו יכולים לקרוא לפונקציות C בכל מספר פעמים בתוכנית ומכל מקום בתוכנית.
- אנו יכולים לעקוב בקלות אחר תוכנית C גדולה כאשר היא מחולקת למספר פונקציות.
- שימוש חוזר הוא ההישג העיקרי של פונקציות C.
- עם זאת, קריאת פונקציות היא תמיד תקורה בתוכנית C.
היבטי פונקציה
ישנם שלושה היבטים של פונקציית C.
SN | היבטי פונקציה C | תחביר |
---|---|---|
1 | הצהרת פונקציה | return_type function_name (רשימת טיעונים); |
2 | קריאת פונקציה | function_name (רשימת_טיעונים) |
3 | הגדרת פונקציה | return_type function_name (רשימת טיעונים) {function body;} |
התחביר של יצירת פונקציה בשפת c ניתן להלן:
return_type function_name(data_type parameter...){ //code to be executed }
סוגי פונקציות
ישנם שני סוגים של פונקציות בתכנות C:
ערך החזרה
פונקציית C עשויה להחזיר ערך מהפונקציה או לא. אם אינך צריך להחזיר שום ערך מהפונקציה, השתמש ב-void עבור סוג ההחזרה.
בואו נראה דוגמה פשוטה לפונקציית C שאינה מחזירה שום ערך מהפונקציה.
דוגמה ללא ערך החזרה:
void hello(){ printf('hello c'); }
אם אתה רוצה להחזיר ערך כלשהו מהפונקציה, עליך להשתמש בכל סוג נתונים כגון int, long, char וכו'. סוג ההחזרה תלוי בערך שיוחזר מהפונקציה.
if else הצהרות java
בוא נראה דוגמה פשוטה לפונקציית C שמחזירה ערך int מהפונקציה.
דוגמה עם ערך החזרה:
int get(){ return 10; }
בדוגמה לעיל, עלינו להחזיר 10 כערך, כך שסוג ההחזרה הוא int. אם ברצונך להחזיר ערך נקודה צפה (לדוגמה, 10.2, 3.1, 54.5 וכו'), עליך להשתמש ב-float כסוג ההחזרה של השיטה.
float get(){ return 10.2; }
כעת, עליך לקרוא לפונקציה, כדי לקבל את ערך הפונקציה.
היבטים שונים של קריאת פונקציות
פונקציה יכולה לקבל או לא לקבל ארגומנט כלשהו. זה עשוי להחזיר ערך כלשהו או לא. בהתבסס על עובדות אלה, ישנם ארבעה היבטים שונים של קריאות פונקציה.
- פונקציה ללא ארגומנטים וללא ערך החזרה
- פונקציה ללא ארגומנטים ועם ערך החזרה
- פונקציה עם ארגומנטים וללא ערך החזרה
- פונקציה עם ארגומנטים ועם ערך החזרה
דוגמה לפונקציה ללא ארגומנט וערך החזרה
דוגמה 1
#include void printName(); void main () { printf('Hello '); printName(); } void printName() { printf('Javatpoint'); }
תְפוּקָה
Hello Javatpoint
דוגמה 2
#include void sum(); void main() { printf(' Going to calculate the sum of two numbers:'); sum(); } void sum() { int a,b; printf(' Enter two numbers'); scanf('%d %d',&a,&b); printf('The sum is %d',a+b); }
תְפוּקָה
לפזר עצים
Going to calculate the sum of two numbers: Enter two numbers 10 24 The sum is 34
דוגמה לפונקציה ללא ארגומנט ועם ערך החזרה
דוגמה 1
#include int sum(); void main() { int result; printf(' Going to calculate the sum of two numbers:'); result = sum(); printf('%d',result); } int sum() { int a,b; printf(' Enter two numbers'); scanf('%d %d',&a,&b); return a+b; }
תְפוּקָה
Going to calculate the sum of two numbers: Enter two numbers 10 24 The sum is 34
דוגמה 2: תוכנית לחישוב שטח הריבוע
אין אות כניסה
#include int sum(); void main() { printf('Going to calculate the area of the square '); float area = square(); printf('The area of the square: %f ',area); } int square() { float side; printf('Enter the length of the side in meters: '); scanf('%f',&side); return side * side; }
תְפוּקָה
Going to calculate the area of the square Enter the length of the side in meters: 10 The area of the square: 100.000000
דוגמה לפונקציה עם ארגומנט וללא ערך החזרה
דוגמה 1
#include void sum(int, int); void main() { int a,b,result; printf(' Going to calculate the sum of two numbers:'); printf(' Enter two numbers:'); scanf('%d %d',&a,&b); sum(a,b); } void sum(int a, int b) { printf(' The sum is %d',a+b); }
תְפוּקָה
Going to calculate the sum of two numbers: Enter two numbers 10 24 The sum is 34
דוגמה 2: תוכנית לחישוב הממוצע של חמישה מספרים.
#include void average(int, int, int, int, int); void main() { int a,b,c,d,e; printf(' Going to calculate the average of five numbers:'); printf(' Enter five numbers:'); scanf('%d %d %d %d %d',&a,&b,&c,&d,&e); average(a,b,c,d,e); } void average(int a, int b, int c, int d, int e) { float avg; avg = (a+b+c+d+e)/5; printf('The average of given five numbers : %f',avg); }
תְפוּקָה
Going to calculate the average of five numbers: Enter five numbers:10 20 30 40 50 The average of given five numbers : 30.000000
דוגמה לפונקציה עם ארגומנט ועם ערך החזרה
דוגמה 1
#include int sum(int, int); void main() { int a,b,result; printf(' Going to calculate the sum of two numbers:'); printf(' Enter two numbers:'); scanf('%d %d',&a,&b); result = sum(a,b); printf(' The sum is : %d',result); } int sum(int a, int b) { return a+b; }
תְפוּקָה
Going to calculate the sum of two numbers: Enter two numbers:10 20 The sum is : 30
דוגמה 2: תוכנית לבדוק אם מספר זוגי או אי-זוגי
#include int even_odd(int); void main() { int n,flag=0; printf(' Going to check whether a number is even or odd'); printf(' Enter the number: '); scanf('%d',&n); flag = even_odd(n); if(flag == 0) { printf(' The number is odd'); } else { printf(' The number is even'); } } int even_odd(int n) { if(n%2 == 0) { return 1; } else { return 0; } }
תְפוּקָה
Going to check whether a number is even or odd Enter the number: 100 The number is even
C פונקציות ספרייה
פונקציות ספרייה הן הפונקציה המובנית ב-C שמקובצות וממוקמות במקום משותף שנקרא הספרייה. פונקציות כאלה משמשות לביצוע פעולות ספציפיות. לדוגמה, printf היא פונקציית ספרייה המשמשת להדפסה על המסוף. פונקציות הספרייה נוצרות על ידי מעצבי המהדרים. כל פונקציות הספרייה סטנדרטית C מוגדרות בתוך קבצי הכותרות השונים שנשמרו עם ההרחבה .h . עלינו לכלול את קובצי הכותרות הללו בתוכנית שלנו כדי לעשות שימוש בפונקציות הספרייה המוגדרות בקובצי כותרות כאלה. לדוגמה, כדי להשתמש בפונקציות הספרייה כגון printf/scanf אנחנו צריכים לכלול stdio.h בתוכנית שלנו שהיא קובץ כותרת שמכיל את כל פונקציות הספרייה לגבי קלט/פלט סטנדרטיים.
רשימת קובצי הכותרות הנפוצים ביותר מופיעה בטבלה הבאה.
SN | קובץ הכותרת | תיאור |
---|---|---|
1 | stdio.h | זהו קובץ כותרת קלט/פלט סטנדרטי. הוא מכיל את כל פונקציות הספרייה לגבי קלט/פלט סטנדרטיים. |
2 | קוניום.ח | זהו קובץ כותרת קלט/פלט של המסוף. |
3 | מחרוזת.ח | הוא מכיל את כל פונקציות הספרייה הקשורות למחרוזות כמו gets(), puts() וכו'. |
4 | stdlib.h | קובץ כותרת זה מכיל את כל פונקציות הספרייה הכלליות כמו malloc(), calloc(), exit() וכו'. |
5 | מתמטיקה.ח | קובץ כותרת זה מכיל את כל הפונקציות הקשורות לפעולות מתמטיות כמו sqrt(), pow() וכו'. |
6 | זמן.ח | קובץ כותרת זה מכיל את כל הפונקציות הקשורות לזמן. |
7 | ctype.h | קובץ כותרת זה מכיל את כל פונקציות הטיפול בתווים. |
8 | stdarg.h | פונקציות ארגומנט משתנים מוגדרות בקובץ כותרת זה. |
9 | אות.ח | כל פונקציות הטיפול באות מוגדרות בקובץ הכותרות הזה. |
10 | setjmp.h | קובץ זה מכיל את כל פונקציות הקפיצה. |
אחד עשר | locale.h | קובץ זה מכיל פונקציות מקומיות. |
12 | errno.h | קובץ זה מכיל פונקציות לטיפול בשגיאות. |
13 | טען.ה | קובץ זה מכיל פונקציות אבחון. |
פרטים נוספים לגבי פונקציות C מסופקים להלן:
יש מספר מידע נוסף הקשור לפונקציות C. כמה מהם הם כדלקמן:
תכנות מודולרי: היכולת ל לחלק א תוכנית ענקית לתוך מודולים קטנים יותר וניתנים לניהול הוא אחד היתרונות העיקריים של שימוש בפונקציות ב-C. כל פונקציה עשויה להכיל עבודה או רכיב מסוים של פונקציונליות, מה שמייעל ומבהיר את מבנה התוכנית הכולל. אסטרטגיה מודולרית זו משפרת שימוש חוזר בקוד ומקלה על תחזוקה וניפוי באגים.
איך מחשב עובד
שימוש חוזר בקוד: על ידי שימוש בפונקציות, אתה יכול ליצור אלגוריתם מסוים או פיסת היגיון מסוימת רק פעם אחת ולהשתמש בו שוב ושוב במהלך התוכנית שלך. אתה יכול פשוט להתקשר לפונקציה בכל פעם שתצטרך להפעיל את הקוד, ולחסוך ממך את הצורך לשכפל אותו במקום אחר. זה לא רק מאיץ את הפיתוח אבל גם מבטיח עקביות ומפחית את האפשרות לעשות טעויות.
אנקפסולציה והפשטה: על ידי טשטוש הפרטים של יישום הפונקציונליות, פונקציות מציעות רמת הפשטה. ניתן להגדיר ממשק אב טיפוס של פונקציה ב-a קובץ הכותרת , בעוד שהיישום בפועל יכול להינתן בקובץ מקור אחר. חלקים אחרים של התוכנית יכולים להשתמש בפונקציה מבלי צורך להבין כיצד היא מיושמת באופן פנימי בגלל ההפרדה בין ממשק ליישום.
תחזוקה קלה של התוכנית: תוכנית עשויה להיות מובנת ולתחזוקה ביתר קלות אם היא מחולקת לפונקציות קטנות יותר. היכולת להקצות אחריות ספציפית לכל פונקציה הופכת את הקוד לקריא יותר ומקלה על פתרון בעיות ואיתור באגים. אתה יכול להתרכז בפונקציה הדרושה מבלי להשפיע על חלקים אחרים של התוכנית אם נמצאה שגיאה או יש צורך בשינוי.
שיתוף פעולה משופר: פונקציות מאפשרות למפתחים שעובדים על אותו פרויקט לשתף פעולה. התוכנית עשויה להיות מחולקת לפונקציות כך שמספר חברי צוות יוכלו לעבוד עליה פונקציות שונות בבת אחת. מפתחים עשויים לשלב בצורה חלקה את עבודתם בפונקציות אם הממשקים מפורטים היטב, מה שמשפר את הפרודוקטיביות ומקדם פיתוח יעיל.
העברת הפרמטר: אתה יכול לשלוח ארגומנטים או נתונים לפונקציה ב-C כדי שהיא תוכל לעבד אותם. הפונקציה יכולה לבצע פעולות וליצור תוצאות באמצעות תשומות אלו. אתה עשוי להגביר את הגמישות והסתגלות של פונקציות על ידי העברת פרמטרים, מה שיגדיל את הרבגוניות הכוללת של התוכנית שלך.
ערכי החזרה: פונקציות יכולות לשלוח ערכים בחזרה לקוד שקרא להם, מה שמאפשר תקשורת של תוצאות הביצוע של הפונקציה. אתה יכול לנצל את הערך המוחזר באזורים אחרים של התוכנית לאחר ביצוע חישובים או מניפולציה של נתונים בתוך הפונקציה. החזר ערכים מועילים במיוחד כאשר אתה צריך לחשב תוצאה או לקבוע תנאי בהתאם לפלט של הפונקציה.
סיכום:
לסיכום, פונקציות חיוניות לתכנות C מכיוון שהן נותנות תוכנית ארגון, שימוש חוזר ומודולריות . מפתחים יכולים להימנע מיצירת אותו קוד שוב ושוב על ידי פירוק תוכניות ענק לפונקציות קטנות יותר, מה שהופך את הקוד ליעיל יותר ופשוט יותר לתחזוקה. בכל מקום בתוכנית ניתן לקרוא לפונקציה, לספק גמישות ולשפר את זרימת הבקרה.
ה הצהרה, התקשר , ו הַגדָרָה של פונקציות הן רק כמה מהמאפיינים הרבים שלהן. המהדר מקבל מידע על ידי הצהרת הפונקציה של שם, טיעונים , ו סוג החזרה . אפשר לקרוא לפונקציה עם או בלי פרמטרים ועם או בלי א ערך החזרה . מתכנתים בונים פונקציות מוגדרות על-ידי המשתמש כדי לשפר את הקריאה והאופטימיזציה של הקוד שלהם, בעוד שפונקציות של ספריית C כמו printf() ו scanf() לספק יכולות מוגדרות מראש.
בסך הכל, פונקציות הן אבני בניין חיוניות בתכנות C, ומספקות יתרונות כולל ארגון מוגבר, שימוש חוזר בקוד ומעקב פשוט אחר תוכניות ענק. קריאות פונקציה יכולות להוסיף קצת תקורה, אבל היתרונות שלהן עולים על הפגיעה המינימלית בביצועים. מתכנתים עשויים לכתוב תוכניות C יעילות ומודולריות על ידי הבנה ושימוש בפונקציות.