(
שפת תכנות)מתוך ויקיפדיה, האנציקלופדיה החופשית. עטיפת המהדורה המקורית של הספר המגדיר את שפת התכנות CC היא שפת תכנות פרוצדורלית. מצד אחד השפה מאפשרת ניצול מרבי של יכולות המחשב בדומה לשפת סף, ומצד שני היא שפה עילית לכל דבר הכוללת בקרת זרימה ומבני נתונים.שפת C תוכננה לראשונה ע"י דניס ריצ'י במעבדות בל על מערכות UNIX שרצו על מחשבי PDP-11. הצורך בשפה עלה כשפה לצורך כתיבת מערכת הפעלה. באותה עת הייתה קיימת שפת ה-B, ובאמצעותה נכתבה שפת C בתחילה. כאשר התפתחה שפת C, הגיעה למצב בו המהדר בו מהדרים את השפה כתוב אף הוא בשפת C עצמה. מקור השם של השפה הוא באותה שפת B, תוך התקדמות אות אחת באלפבית.כיום C לא קשורה למערכת הפעלה מסויימת או מחשב מסויים.רוב הגרעין (Kernel) של מערכת ההפעלה לינוקס כתוב ב C, כמו גם הרבה תוכנות אחרות המהוות את מערכת ההפעלה GNU/Linux.לשפת C הונהגו כללים שנכתבו ע"י ועדה ולנהלים אלו קוראים ANSI C. על מנת לכתוב בשפה יש צורך במהדר (הממיר תוכנית הכתובה בשפה לשפת מכונה אותה המחשב מבין). סביבות עבודה לשפת C כיום כוללות מהדר, כלי לניפוי שגיאות (מציאת תקלות, באגים), וכן אפשרות לערוך את הקוד, כל זה בחבילת תוכנה אחת.עיקרון מנחה בשפה הוא עקרון היעילות, ובכך היא מצטיינת. כל פעולה בשפה מתבטאת בפעולה בודדת או במספר מועט של פעולות בשפת סף. משום כך אין בה סוגי מבנים מורכבים כגון מחרוזות או בדיקות סמויות בגישה למערכים. מסיבה זו היא גם כוללת לא מעט אפשרויות לשגיאות שהמהדר (Compiler) לא יאתר אותן, כגון פנייה לאיבר שלא קיים במערך או פנייה למשתנה לא מאותחל וכד'.תוכן עניינים <הסתר>1 "Hello World" ב־C 2 מושגים בתכנות ומימושם בשפת C 3 ראו גם 4 קישורים חיצוניים <עריכה>"Hello World" ב־Cהתוכנית הפשוטה המופיעה בהמשך מדפיסה "Hello World" לקובץ הפלט המקובל (לרוב המסך אך לפעמים יכול להיות קובץ או חומרה אחרתמבני נתונים דינמיים.
לדוגמה, מצביע למשתנה מסוג short, או מערך של מספרים מסוג זה, שהוא
משתנה המייצג
מספר שלם בן שני בתים: short *x;דגל - טיפוס נתונים המכיל אחד משני ערכים המציינים קיומו או סתירתו של תנאי. במרבית שפות התכנות משמש משתנה בוליאני לתפקיד זה, אך בשפת C אין טיפוס בוליאני. במקום זאת, משתמשים בערך השונה מאפס או שווה לאפס כדי לייצג ערכי 'אמת' או 'שקר', בהתאמה. אתחול משתנה - מתן
ערך התחלתי למשתנה. לעיתים (בעיקר בזמן דיבאג) המהדר נותן ערך ערך התחלתי למשתנים, ולעיתים לא. אם לא ניתן ערך התחלתי על-ידי המהדר, הערך התחלתי של המשתנה הוא נתון אקראי או נתון סתמי (ערך התחלתי כזה מכונה לעיתים זבל), על כן אין להסתמך בשום פנים על כך שערכו ההתחלתי של משתנה מספרי יהיה אפס. הנחה כזו היא שגיאה נפוצה אצל מתחילים. לדוגמה, איתחול משתנה מסוג char, המייצג תו בייצוג ASCII: char ch = 'a';מערך - אוסף של משתנים המסודרים ברצף בזיכרון. מספרו הסידורי של התא הראשון במערך בשפת C הוא 0, ולכן האיבר האחרון במערך בן חמישה איברים יהיה איבר מס' 4. גישה לאיבר מתבצעת ע"י רישום מספרו בתוך סוגריים מרובעים. לדוגמה, הגדרת מערך של מספרים מסוג float, המייצג מספר נקודה צפה בן ארבע בתים (דיוק יחיד): float n<5>;לחלופין, ניתן להגדיר מערך על ידי איתחול ערכיו. נגדיר מערך של מספרים מסוג double, המייצג מספר נקודה צפה בן שמונה בתים (דיוק כפול): double n<> = {3.14, 2.71, 0.8, 5, 32};רשומה - משתנה שמכיל מספר שדות, כאשר כל אחד מהשדות הוא משתנה בפני עצמו. מאפשר לאחד מספר משתנים העוסקים באותו פריט מידע לתוך משתנה יחיד. לדוגמה, רשומה (או מבנה) המתארת שם וגיל של אדם. היא מכילה שני שדות: struct person { char *name = "John"; int age = 52; };מחרוזת - לא קיימת בשפת C כטיפוס בודד אלא כמערך של תווים. מחזורת בגודל n צורכת מקום של n+1 משום שמצטרף תו 0 (0\ או NULL). הטיפול במחרוזת נעשה ע"י פונקציות של הספריה הסדרתית. לדוגמה, המחרוזת char *name = "John";השקולה למערך char name<> = {'J', 'o', 'h', 'n', '\0'};לולאה - מבנה בקרה שמאפשר חזרה על אותו קוד ברצף מספר פעמים. ב־C נהוגים שלושה סוגי לולאות: לולאות while שמבוססות על בדיקת תנאי להמשך הלולאה לפני ביצוע הקוד, לולאות do-while שדומות ללולאות while רק שהתנאי נבדק ביציאה, ולולאות for, שבנוסף לבדיקת התנאי גם משלבות בצורה טבעית משתני עזר שיפקחו על ריצת הלולאה (למשל, ספירת מספר הפעמים שהלולאה חזרה על עצמה). לולאת for: int i; for (i=0; i < 5; i++) { /*your code here... */ }לולאת while עם בקרה בכניסה: while (/*some boolean condition*/) { /*your code here... */ }לולאת do-while עם בקרה ביציאה: do { /*your code here... */ } while (/*some boolean condition*/)הנגרמת ע"י התוכנית בזמן הרצתה. למשל: חלוקה באפס, כתיבה לאיזור שמור בזיכרון, טיפול בנתונים שגויים (או זבל). סוגי קבצים - קובץ טקסט וקובץ בינארי. קובץ טקסט יכול לעלות ע"י כל מעבד תמלילים. קובץ בינארי לעומתו מכיל ייצוגים של נתונים וכדומה ואינו מיועד לקריאה ע"י כל מעבד תמלילים. הגישה השונה מתבצעת בדרך כלל קריאה לפונקציות ספריה שונות. גישה לקובץ - גישה לקובץ נעשית לרוב ע"י חוצץ הנוטל בכל פעם קטע נתונים מהקובץ. המיקום של החוצץ ניתן על ידי המצביע לקובץ. ב־C ישנה אפשרות לעקוף את החוצץ אולם היא בשימוש רק בתוכנות מרמה נמוכה (מערכות הפעלה למשל). פונקציה - אוסף של פקודות (אלגוריתם) שיכול (אך לא חייב) לקבל ערכים כקלט ולהחזיר משתנה יחיד כפלט. שינוי בערכי משתני הקלט בפונקציה לא ישפיע על ערכיהם בחלקים אחרים בתוכנית, אלא אם מדובר במשתנים מיוחדים שהוגדרו מראש כגלובליים, או לחילופין, אם הערך שהועבר לפונקציה לא היה ערך של משתנה, אלא ערך של המיקום בזיכרון שבו נמצא המשתנה, כלומר מצביע. לדוגמה, פונקציה המקבלת שני מספרים ומצביע למקום בזיכרון, מחזירה את הפרשם, ושמה במקום שבזיכרון את סכומם
סקירות נוספות אודות C