[Powered by Google Translate] פונקציות הן קטעי הקוד בשימוש בתוך תכנית גדולה יותר
לביצוע משימה מסוימת.
הם ידועים גם כנהלים, שגרות, וsubprograms,
מאז שהם באמת רק תוכניות מינים בתוך תוכניות.
למרות שאתה אולי לא שמת לב,
אתה בהחלט השתמשת פונקציות כבר אם לתכנת ב C.
כשאתה כותב את דברים על המסך באמצעות printf,
אתה בעצם משתמש בפונקציה בשם printf.
כמו כן, GetInt וGetString הם פונקציות שCS50 מספקת עבורך.
כמתכנתים, אנחנו משתמשים בפונקציות של מספר סיבות.
>> בעלי פונקציות לבצע משימות נפוצות כמו לכתוב על המסך
ולשאול את המשתמש עבור קלט חוסך לנו זמן, כאשר תכנות.
זה לא הכרחי לכתוב קוד כדי לעשות את אותם דברים
מאז הם כבר עשו בשבילנו.
זה אפילו לא נחוץ לנו להבין בדיוק איך הפונקציות האלה עובדות באופן פנימי.
במקום זאת, אנחנו רק צריכים לדעת איך להשתמש בו או לקרוא להם בתוכניות שלנו.
היא גם עוזרת לכתוב פונקציות בתוכניות גדולות יותר
גם אם אתה לא מתכנן על שאחרים להשתמש בם,
רק כדי לחלק את המשימה הגדולה יותר בהישג יד.
בדרך זו, אתה נותן למבנה לקוד שלך הרבה כמוך הייתי נותן למבנה מאמר,
ועם פרויקטים גדולים באמת לאפשר לאנשים מרובים
לעבוד על חלקים שונים באותו הזמן
מכיוון שזה ברור שבו עבודתו של האדם אחד מסתיימת והשני מתחיל.
>> פונקציות בדרך כלל פועלות על 1 או יותר תשומות, הידועים כטיעונים או פרמטרים,
הפיכת תשומות לאלה ערך תפוקה אז שהוא חזר.
עם זאת, ייתכן גם שיש פונקציות שאינם משתמשים בכל טיעון קלט
ואל תחזרו פלט.
טוב, מספיק עם החומר הרך.
בואו נסתכל על כמה פונקציות אמיתיות בג
>> כאן יש לנו פונקציה שנקראת כיכר ש, תאמינו או לא,
מחשב את הריבוע של הקלט.
בואו לנתח את התחביר שלו.
המילה הראשונה שאתה רואה בפונקציה, int,
מציין את סוג ההחזרה של הפונקציה, כלומר, סוג C של הפלט של הפונקציה.
פונקציה זו תהיה פלט ערך עם הסוג int.
המילה הבאה שאתה רואה זה את השם של הפונקציה, הכיכר במקרה זה.
שמות פונקציות מתאימות חשוב במיוחד
מאז זה כנראה התיעוד הגלוי ביותר של מה הפונקציה עושה.
זה יכול להיות מגניב לשם התפקיד Shazam זה או booyah,
אבל זה לא אומר לנו שום דבר על מה שהפונקציה עושה.
>> בעקבות שם הפונקציה לבוא התשומות לפונקציה, את הטיעונים.
הם מופיעים בתוך קבוצה של סוגריים
עם שניהם סוג ושם לשימוש עבורם בתוך הגוף של הפונקציה.
הכיכר לוקחת רק טיעון 1, int לכיכר,
שהחלטתי לתת את השם x.
זה מסיים את הכרזת פונקציה או אב טיפוס.
הסוגריים המסולסלים מסביב שאר הפעולה
תסמן את תחילתו וסופו של הגוף לתפקד,
ההגדרה של הפונקציה עצם.
כיכר היא פונקציה פשוטה למדי.
יש בזה רק קו 1, שכן כל שעלינו לעשות הוא להכפיל את x על ידי עצמו.
מילת התמורה מציינת את ערך התפוקה ומעוררת את סוף הפונקציה.
כדי להשתמש בפונקציית הכיכר, אנחנו צריכים לספק את התשומות המתאימות
ולאחר מכן ללכוד את הפלט.
הנה, אתה רואה כמה דרכים לעשות את זה.
אנחנו יכולים לעבור בint גלם, כמו 6, או שאנחנו יכולים לעבור במשתנה כמו.
שימו לב שכל פעם שאנו מכנים כיכר,
אנו ללכוד את הפלט במשתנה ולאחר מכן להדפיס אותו.
עם זאת, אין לנו לאחסן את ערך ההחזרה במשתנה ואז להדפיס.
אנחנו רק יכולים לשלוח אותו ישירות לprintf כפי שאנחנו עושים כאשר אנחנו מרובעים 10,
אך אין זה אומר שאין לנו גישה לערך ההחזרה של כיכר 10
במקום אחר בקוד.
בואו נסתכל על דוגמה פשוטה אחרת.
>> הפעם, אנו נסכם 2 צפנו יחד, כך שנוכל לראות מה פונקציה נראית כמו
כאשר הוא קבל 2 כניסות רק במקום 1.
כפי שאתה יכול לראות, זה לא שונה בהרבה.
כל מה שאנחנו עושים הוא להוסיף בטענת 2, לצוף בשם B,
לרשימת הארגומנטים באמצעות פסיק כדי להפריד אותו מהטענה הראשונה, לצוף.
אז, הריבוע שלנו ופונקציות סכום הם די קלים להבין
בגלל שהם שווים ערך לפונקציות שראיתם כבר פעם בשיעורי מתמטיקה.
עכשיו, בואו נסתכל על פונקציה שהיא מעט שונה.
במקום להחזיר ערך, הוא משנה מצב.
תופעה זו ידועה כבעלת תופעת לוואי.
בתכנית זו, פונקצית printf_fudd_style
יש סוג החזר שלא ראו לפני כן, בטל ומבוטל.
>> חלל הוא נהג לומר שפונקציה לא מחזירה שום דבר.
אין משתנים של חלל סוג,
כך שאם אתה מנסה להחזיר משהו מפונקציה כמו printf_fudd_style,
המהדר לצעוק עליך.
בתוך printf_fudd_style, אנו רואים כי בעוד שהפונקציה עדיין מבצעת משימה,
כלומר, מיתוג כל הרופים לב"ב,
הנקודה של הפונקציה היא לשנות את המחרוזת ולאחר מכן להדפיס אותו על המסך,
שינוי מצב התכנית במקום לחזור תוצאה.
שימוש בפונקציה זו דומה מאוד לשימוש בריבוע שלנו ופונקציות סכום,
אלא שאנו לא שומרים את התוצאה במשתנה או להעביר אותו לפונקציה אחרת
מכיוון שאין לדבר על תוצאה.
לכן, כאשר אנו לקמפל ולהריץ תכנית פאד אלמר,
אתה רואה את זה "אתה ממזר ארנב!" מקבל הפך זכות
"אתה wascally wabbit!"
>> לבסוף, יש פונקציה 1 יותר ראוי לדיון
מאחר שאתה כבר משתמש בה בכל תכנית C שאי פעם נכתב, עיקרי.
העיקרי הוא פונקציה הרבה כמו כל האחרים.
יש בזה סוג תמורה, שם, רשימה של טענות, וגוף.
סוג ההחזרה של עיקרי הוא תמיד int,
וint זה משמש לתקשורת את מעמדה של התכנית כאשר היא מסתיימת.
>> האם זה יפעל בהצלחה, או שהוא יסתיים מוקדם בגלל טעות?
חוזר לאפס מלמד לרוץ מוצלח,
ומחזיר כל ערך שאינו אפס מציין שגיאה.
בהתאם לסוג של תכנית שאתה כותב,
חוזר קודים שונים לשגיאות שונות יכול להיות מועיל
לאנשים שמשתמשים בתכנית שלך בהמשך.
טיעוני חשמל הם קצת יותר מסובכים.
>> רשימת הארגומנטים יכולה להיות ריקה,
בו אנו מציינים על ידי הכתיבה בחלל ריק בין הסוגריים,
או הרשימה יכולה להיות 2 טענות: int ומערך של char * s.
אלה משמשים כאשר התכנית שלך מתכוונת להשתמש
טיעונים עברו בשורת הפקודה כאשר התכנית מופעלת.
טיעון int נקרא בדרך כלל argc,
וזה שווה את אורכו של מערך char *, הידוע כargv.
Argv מכיל את הארגומנטים בשורת פקודה שמועברים לפונקציה.
במקרה אחר קצר, נדבר על אופן שימוש במשתנים הללו ביתר פירוט.
לעת עתה, אתה יכול להרגיש חופשי להכריז עיקרי כאן או לכאן.
אני בדרך כלל בוחר לכתוב את זה בדרך הקצרה, ללא ויכוחים, כאשר דבר אפשרי.
>> עכשיו שאתה יודע איך לכתוב פונקציות,
אתה גם על הדרך שלך לפיתוח תוכניות גדולות ומורכבות יותר.
השם שלי הוא נייט Hardison. זה CS50.