הפונקציה printf
לפני שנתחיל לדבר על טיפוסים ואופרטורים, נדון בקצרה באחת הפונקציות החשובות והבסיסיות ביותר בשפה - printf. משמעות שם הפונקציה הוא print formatted, או הדפסת טקסט בפורמט. הפונקציה תהיה שימושית עבורנו בדוגמאות הקרובות ולכן נציג אותה בקצרה כעת.
Tip
בהמשך נגדיר בצורה מדויקת מהי פונקציה. כרגע נשתמש בהגדרה האינטואיטיבית כפי שפגשנו בהרצאת המבוא - פונקציה היא קטע קוד ש-״קוראים״ לו ע״י שימוש בסוגריים
()וביניהן הארגומנטים הנדרשים.
הדפסת טקסט סטטי
בתכנות, נהוג לקרוא להצגת טקסט על המסך הדפסה, או print. הצגת טקסט למשתמשים של התוכניות שנכתוב היא הדרך הבסיסית והטבעית לתקשר עם איתם, וקל להבין מדוע זה שימושי ורצוי. כמו כן, כמתכנתים ניתן להשתמש בהצגת טקסט על מנת להבין בדיוק מה קורה בתוכנית שלנו. למשל:
#include <stdio.h>
int main() {
printf("The program is on its first line.\n");
printf("The program has reached its second line.\n");
}
Warning
לפני שימוש ב-
printfבקוד, חובה לכתוב את השורה<include <stdio.h#, בעדיפות בראשית הקובץ בו אנו עובדים. בהמשך נתעכב לעומק על משמעות השורה הזו - בקצרה, היא מבקשת מהקומפיילר ״להביא״ לקובץ הנוכחי את הקוד של הפונקציהprintfואחרות על מנת שנוכל להשתמש בהן.
ראינו כבר דוגמאות פשוטות להדפסה של Hello World - נבחן דוגמא נוספת:
#include <stdio.h>
int main() {
printf("Hello from Studies C language programming course!\n");
printf("The printf function can be used to print arbitrary text");
printf("If you have a really long line, you can end the line with quotes "
"and continue on a new line, like this.\n");
}
הדפסת טקסט דינמי
כוח העל של הפונקציה printf היא בכך שהיא יכולה לקרוא משתנים בזמן ריצת התוכנית ולהדפיס את תוכנם. כך למעשה היא מנגישה לנו מידע דינמי על הקורה בתוכנית שלנו תוך כדי ריצתה. היינו רוצים לכתוב, למשל, משהו שנראה ככה:
int variable = 5;
printf("value = variable");
הבעיה בסינטקס מסוג זה הוא ש-printf לא יכולה לדעת האם אנחנו רוצים להדפיס את התווים variable עצמם או את ערך המשתנה variable - במקרה זה, 5.
לטובת זאת משתמשים בתווים מיוחדים הנקראים מזהי הדפסה (format specifiers) - תווים מוסכמים מראש ש-printf מזהה בתור שומרי מקום (placeholders) למשתנים, ומדפיסה במקומם את ערך המשתנה. מיד נגדיר במדויק מהו טיפוס של משתנה - בדוגמא variable הוא משתנה מטיפוס int, ומזהה ההדפסה שלו הוא d%. כלומר, כאשר נרצה להדפיס משתנה מטיפוס int, נכתוב במקומו את מזהה ההדפסה d%, כך:
#include <stdio.h>
int main() {
int x = 7;
printf("x is an int variable with value %d\n", x);
}
במידה וסיפקנו ל-printf מזהי הדפסה כלשהם, יש להגיד לה איזה משתנים להדפיס לפי הסדר הרצוי. למשל:
#include <stdio.h>
int main() {
int x = 54;
int y = -5;
printf("x = %d, y = %d\n", x, y);
}
מספר מזהי ההדפסה צריך להיות שווה למספר הפרמטרים הנוספים שהעברנו - למשל, שתי הדוגמאות הבאות לא תקינות:
#include <stdio.h>
int main() {
int x = 7, y = 3;
printf("x = %d, y = %d\n", x);
printf("x = %d\n", x, y);
}
Note
כפי שציינו קודם, פונקציית ה-
mainהיא נקודת ההתחלה שהקומפיילר קובע לכל התוכניות שלנו, ולכן כל הדוגמאות מכילות אותה.