אתחול struct
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-C של Coddy. שיעור 42 מתוך 63.
אמנם ניתן ליצור משתני struct ואז להקצות ערכים לכל אחד מהאיברים שלהם בנפרד, אך C מספקת דרך נוחה יותר להגדיר ערכי התחלה. ניתן לאתחל משתנה struct בעת ההכרזה עליו באמצעות רשימת אתחול המוקפת בסוגריים מסולסלים.
תחביר האתחול של struct הוא:
struct StructureName variableName = {value1, value2, ...};בעזרת הדוגמה שלנו למבנה Point, אפשר להצהיר עליו ולאתחל אותו בשורה נקייה אחת:
struct Point p1 = {10, 20};פעולה זו יוצרת משתנה Point בשם p1, כאשר x מוגדר ל־10 ו־y מוגדר ל־20. הערכים ברשימת האתחול מוקצים לחברי המבנה לפי סדר ההכרזה שלהם בהגדרת המבנה.
שיטת האתחול הזו לא רק תמציתית יותר מהשמות נפרדות, אלא גם מבטיחה שהמבנה שלך יתחיל עם ערכים משמעותיים ולא עם נתונים אקראיים וחסרי משמעות. היא שימושית במיוחד כשידועים לך הערכים ההתחלתיים בזמן הידור, ואתה רוצה ליצור משתני מבנה מוכנים לשימוש ביעילות.
אתגר
קלצרו תוכנית C שמדגימה אתחול של struct באמצעות רשימות אתחול. התוכנית שלכם צריכה:
- להגדיר
structבשםEmployeeעם החברים הבאים:- מספר שלם
idלאחסון מזהה העובד - מערך תווים
departmentבגודל 15 לאחסון שם המחלקה - מספר שלם
yearsOfServiceלאחסון שנות הוותק - מספר ממשי מסוג float בשם
salaryלאחסון שכר העובד
- מספר שלם
- ליצור שלושה משתני
Employeeבאמצעות רשימות אתחול עם הנתונים הבאים:emp1: מזהה 101, מחלקה "Engineering", 5 שנות ותק, שכר 75000.50emp2: מזהה 102, מחלקה "Marketing", 3 שנות ותק, שכר 65000.25emp3: מזהה 103, מחלקה "Sales", 8 שנות ותק, שכר 80000.75
- להדפיס את המידע על כל עובד בפורמט המדויק הזה:
Employee 1:ID: [id]Department: [department]Years of Service: [yearsOfService]Salary: [salary]Employee 2:ID: [id]Department: [department]Years of Service: [yearsOfService]Salary: [salary]Employee 3:ID: [id]Department: [department]Years of Service: [yearsOfService]Salary: [salary]
- לחשב ולהדפיס את השכר הכולל של שלושת העובדים בפורמט:
Total Salary: [total] - לחשב ולהדפיס את ממוצע שנות הוותק בפורמט:
Average Years of Service: [average]
האתגר הזה בודק את ההבנה שלכם באתחול של struct באמצעות רשימות אתחול, שבהן מכריזים על משתני struct ומאתחלים אותם בשורה אחת. יש לספק את הערכים ברשימת האתחול באותו סדר שבו הוצהרו החברים בהגדרת struct.
הפלט הצפוי שלכם צריך להיות:
Employee 1:
ID: 101
Department: Engineering
Years of Service: 5
Salary: 75000.50
Employee 2:
ID: 102
Department: Marketing
Years of Service: 3
Salary: 65000.25
Employee 3:
ID: 103
Department: Sales
Years of Service: 8
Salary: 80000.75
Total Salary: 220001.50
Average Years of Service: 5.33נסו בעצמכם
#include <stdio.h>
// TODO: הגדירו כאן את המבנה Employee
int main() {
// TODO: צרו שלושה משתנים מסוג Employee באמצעות רשימות אתחול
// TODO: הדפיסו מידע על כל עובד
// TODO: חשבו והדפיסו את סך המשכורות ואת ממוצע שנות הוותק
return 0;
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1יסודות המצביעים
מהו מצביע?הכרזה על מצביעיםאופרטור לקיחת הכתובת (&)אופרטור ביטול ההפניה (*)מצביעי NULLסיכום: יסודות המצביעים7מבנים (structs)
מהו struct?הכרזה על structיצירת משתני structגישה לאיברי structאתחול structסיכום: struct לנתוני תלמיד2מצביעים ומערכים
שמות מערכים כמצביעיםאיברי מערך ומצביעיםאריתמטיקה של מצביעיםהשוואת מצביעיםסיכום: מעבר על מערך באמצעות מצביעים5מצביעים ופונקציות
העברה לפי ערךהעברת מצביעים לפונקציותשינוי משתנים באמצעות מצביעיםדוגמה קלאסית: החלפההעברת מערכים לפונקציותחזרה: ארגומנטים של מצביעי פונקציה3מערכי תווים ומחרוזות
מחרוזות כמערכי charתו הסיום nullקלט מחרוזת באמצעות scanfשימוש ב־strlen()שימוש ב־strcpy()שימוש ב־strcat()שימוש ב־strcmp()סיכום: פונקציות מחרוזת בסיסיותתרגלו בעצמכם: קומפיילר C אונליין