קורס זה תוצג שפת C וכן מימוש לנושאים מתקדמים: תוצג השפה למתכנתי JAVA / C++, נלמד מהם מצביעים (פויטרים), מחרוזות, מבנים, קבצי header וחלוקת הפרוייקט למודולים, תהליך הקומפילציה וה- preprocessor והקצאות דינאמיות.בנושאים המתקדמים ילמדו הנושאים הבאים: מצביעים לפונקציות, variadic function, עבודה עם סיביות, קבצים, יצירת קובץ ספריה (lib), מימוש מבני הנתונים רשימה (list) ועץ (tree) ויוצגו דוגמאות לשילוב כל הנושאים ביחד.
 
בקורס זה ילמדו נושאים מתקדמים בשפת C, ויכוסו הנושאים הבאים:
  1. משתנים מסוגים שונים: משתנים מקומיים (לוקאליים), משתנים גלובלים ומשתנים סטטים.
  2. מצביעים: נראה מהו מצביע, מה הוא מאפשר לנו, כיצד נראים מצביעים בזיכרון, כיצד פונים אליהם וכיצד לאתחל אותם.
  3. אריתמטיקה של מצביעים: נבין כיצד מבוצעות פעולות אריתמטיות על משתנים מטיפוס כתובת, וכן נראה כיצד מטריצה נשמרת בזיכרון ואילו פעולות אריתמטיות ניתן לבצע עליה.
  4. מחרוזות: נלמד על ההבדל בין מחרוזת לבין מערך של תווים, פונקציות של מחרוזות כמו strcpy, strcat, strcmp.
  5. מבנים: נכיר מהו מבנה (struct) ומתי כדאי להשתמש בו, נראה כיצד מבנה נראה בזיכרון, כיצד הוא מועבר לפונקציה, נראה מערך של מבנים. 
  6. חלוקת הפרויקט לקבצים ופקודות קדם מעבד (preprocessor): נראה כיצד להפריד בין הצהרות הפונקציות למימושים בין קובץ H לקובץ C, נכיר את מנגנון ה- ifndef-define-endif  לעומק ונראה כיצד הוא פותר בעיות של include'ים כפולים, ונראה כיצד להגדיר מאקרו באמצעות define.
  7. הקצאות דינאמיות: הקצאה דינאמית היא הדרך שלנו לבקש זיכרון נוסף מהמחשב בזמן ריצה, נחוץ בעיקר כאשר לא יודעים עם הרצת התוכנית כמה זיכרון צריך (למשל עבור מערך שגודלו נודע רק בזמן ריצה). נכיר את פונקציות ההקצאה malloc ו- calloc, את פונקצית ההגדלה realloc, ונדון בחשיבות של שחרור זיכרון ונכיר את פונקציית השחרור free.
  8. מצביעים לפונקציות: עד כה הכרנו שפונקציות מקבלות כפרמטרים משתנים, וכעת נראה שהם יכולות לקבל כפרמטר שם של פונקציה אחרת. נראה את המוטיבציה לכך ואת אופן היישום והשימוש.
  9. variadic functions: נלמד את המנגנון המאפשר לכתוב פונקציה המקבלת מספר משתנה של פרמרטים (בסגנון scanf ו- printf). לצורך כך נכיר את הפקודות שבספריה args.h: הפקודה לאתחול va_start, הפקודה לסיום va_end, הפקודה למשיכת ערך מרשימת הפרמטרים args.
  10. סיביות: עד כה עבדנו עם משתנים ברמת הבתים, מה שליעיתים ביזבז זיכרון רב. בפרק זה נלמד כיצד לעבוד עם סיביות, שהן היחידות הבסיסיות ביותר בזיכרון המחשב. השימוש בסיביות הוא לרוב עבור כיווץ מידע ועבור הצפנה.
  11. קבצים: על מנת לייצר המשכיות בין הרצות שונות של התוכנית, נרצה לשמור את המידע למאגר נתונים, ובמקרה זה לקובץ. נכיר קבצים בינאריים וקבצי טקטסט, נלמד כיצד לכתוב ולקרוא מהם, נלמד את הפקודות השונות לכתיב הולקריאה מכל אחד מסוגי הקבצים, וכן על ההבדלים בכתיבה ובקריאה בעיקר כאשר יש מבנה המחזיק כתובות.
  12. מבני נתונים: נלמד על מבנה הנתונים רשימה מקושרת (Linked List), על מבנה הנתונים תור (Queue) ועל מבנה הנתונים מחסנית (Stack). נלמד על אופן מימוש כל אחד ממבני נתונים אלו ועל היתרונות והחסרונות של כל אחד מהם.
  13. פרמטרים ל- main: עד כה ה- main רץ כתוכנית עצמאית, אבל מאחר והוא פונקציה, ניתן לשלוח לו גם ערכים. בפרק זה נלמד כיצד לשלוח לו ערכים בעת ההפעלה.
כבר רשומים?
לחצו כאן!!