struct person {
char *name;
int age;
struct person yossi;
השפה מאפשרת לתת שמות חדשים לטיפוסים באמצעות המילה typedef. למשל:
typedef struct person tPerson;
tPerson moshe;
מגדיר משתנה בשם moshe מהסוג struct person.
מבני בקרה.
פקודות בשפת C מתבצעות אחת אחרי השנייה, לפי הסדר, אלא אם כן מדובר במבנה בקרת זרימה כלשהו, המשנה את זרימת התוכנית.
פקודת תנאי.
מבנה הבקרה הפשוט והנפוץ ביותר הוא פקודת if. במבנה זה נבדק ערכו של תנאי מסוים, ומתבצע סט של פקודות אם התנאי נכון (ערך האמת שלו חיובי):
if (3 &lt; 5)
printf("three is lower than five");
אם מתכוונים לבצע יותר מפקודה אחת כאשר התנאי מתקיים, יש להשתמש בסוגריים מסולסלים:
if (number_of_apples &lt; 10) {
printf("I am hungry!");
printf("Give me more apples!");
לפקודת תנאי ישנה גרסה מורחבת, המאפשרת להגדיר רצף של פקודות שיתבצע במקרה שהתנאי איננו מתקיים. לשם כך משתמשים במילה השמורה else ("אחרת", באנגלית):
if (number_of_apples &lt; 10)
printf("I am hungry");
printf("I am not hungry!");
צורת כתיבה נוספת לקטע קוד הכולל בלוק if ו-else עם הוראה בודדת היא בעזרת שימוש באופרטור טרנרי (Ternary):
number_of_apples &lt; 10 ? printf("I am hungry") : printf("I am not hungry");
השימוש באופרטור טרנרי אינו נפוץ ואינו מומלץ מפאת קושי הבנתו בקריאת הקוד, אך יתרון שהוא מספק הוא קיצור הקוד לשורה בודדת.
לולאות.
פקודת תנאי מאפשרת להגדיר קטע קוד שיבוצע פעם אחת, או לא יבוצע כלל. לעיתים קרובות יש צורך להגדיר קטע קוד שיבוצע מספר כלשהו של פעמים - פעם אחת, עשרים, או בכלל לא. לצורך כך משתמשים בלולאות.
ב־C קיימים שלושה סוגי לולאות: לולאות while שמבוססות על בדיקת תנאי להמשך הלולאה לפני ביצוע הקוד, לולאות do-while שדומות ללולאות while, אך התנאי נבדק בסוף הלולאה, ולולאות for, שבנוסף לבדיקת התנאי גם משלבות בצורה טבעית משתני עזר שיפקחו על ריצת הלולאה (למשל, ספירת מספר הפעמים שהלולאה חזרה על עצמה).
לולאת for:
for (unsigned int i = 0; i &lt; 5; ++i) {
/* הכנס כאן קוד... */
לולאת while עם בקרה בכניסה:
while (/* הכנס כאן תנאי */) {
/* הכנס כאן קוד... */
לולאת do-while עם בקרה ביציאה:
/* הכנס כאן קוד... */
} while (/* הכנס כאן תנאי */);
שפת C כוללת אפשרות להורות למעבד לקפוץ ישירות לשורה, לה הוגדר שם (label) בעזרת פקודת goto.
בקוד להלן, הפקודה המסומנת "2" לא תתבצע כלל:
printf("a"); /* 1 */
goto out;
printf("b"); /* 2 */
printf("c"); /* 3 */
ניתן לקפוץ באמצעות goto אך ורק בתוך הפונקציה הנוכחית.
באמצעות פקודת goto ותנאי if ניתן לממש כל מבנה בקרה שהוא. עם זאת, שימוש בפקודת goto איננו נחשב לסגנון תכנות מומלץ, בדרך כלל. יש המחריגים מכלל זה פעולות עבורן אין מבנה בקרה מתאים המובנה בשפה, כגון
על מנת לעבור למקום מחוץ לפונקציה, יש להשתמש בפונקציה setjmp בתור label ובפונקציה longjmp עבור המעבר.
פונקציות.
פונקציה היא המבנה הבסיסי של השפה שבו יכולות להתבצע פקודות ומבני בקרה. אוסף של פקודות שיכול (אך לא חייב) לקבל אוסף של ערכים כקלט (ערכים אלה, והמשתנים המחזיקים אותם, נקראים "פרמטרים" או "ארגומנטים"), ולהחזיר ערך יחיד כפלט (ערך זה נקרא "ערך החזרה"). שינוי בערכי משתני הקלט בפונקציה לא ישפיע על ערכיהם בחלקים אחרים בתוכנית, שכן הם מועברים תמיד על פי ערך (by value).
דוגמה לפונקציה המקבלת שני מספרים ומחזירה את ערכו של הגדול מביניהם:
int max(int a, int b)
if (a &gt; b)
return a;
return b;
בהינתן הגדרה של פונקציה כזאת, ניתן להשתמש בה על מנת לקבל את המקסימום מבין שני מספרים בצורה קלה. למשל, הפקודה הבאה:
printf("%d", max(5, 3));
תדפיס את המספר 5, כי הוא המספר הגבוה יותר מבין המספרים 3 ו-5.
בשונה מפונקציות מתמטיות, פונקציות בשפת C יכולות לבצע פעולות שמשנות את המצב של המחשב. לדוגמה, הפונקציה printf מהדוגמה הקודמת היא פונקציה שמבצעת הדפסה למסך (או לאמצעי פלט אחר).
מודולים.
מודול בשפת C הוא יחידה עצמאית של תוכנה, המהודרת אל קובץ עצמאי. קובץ כזה לא ניתן להריץ באופן ישיר, אך ניתן להשתמש בו בקבצים אחרים. קובצי h. שמכילים הגדרות של מודולים מאפשרים למהדר להבין מתי משתמשים בתוכן של מודול חיצוני ומתי משתמשים בתוכן של הקובץ הנוכחי. בכל תוכנה יש מודול אחד ראשי שמכיל את הפונקציה main שבה מתחילה התוכנית.
אוסף של פקודות המאוגדות ומהודרות יחד למקום אחד המאפשר לנו להשתמש בהן ללא צורך להדר אותן עבור כל תוכנה מחדש נקרא ספרייה. בשפת C יש צורך לבצע פקודת include# לקובץ שמכיל את ההצהרות של פונקציות הספרייה בשביל להשתמש בה.
לדוגמה, הכללת הספרייה string, המכילה פונקציות לטיפול במחרוזות:
לפני תרגום התוכנית לשפת מכונה, תוכנית הנקראת קדם-מעבד (pre-processor) יוצרת קובץ חדש הכולל בנקודה בה מוכרזת ההכללה את תוכן הקובץ המוכלל, ואז מועבר הקובץ להידור לשפת מכונה.
שפת C היא שפה קטנה למדי. היא אינה מכילה פקודות הקושרות אותה למערכת הפעלה מסוימת או לתחום תוכנה מסוים. מסיבה זו, פקודות ספציפיות שכאלה (למשל לקלט ופלט, לחישובים מתמטיים, לעבודה עם מחרוזות ולהקצאות זיכרון דינמיות) נמצאות בספריות סטנדרטיות, שאינן חלק מתחביר השפה אך עונות לקונבנציה מוכרת וקבועה ומהוות חלק מהתקן הרשמי שלה. ספריות אלה מסופקות עם המהדר עבור מערכת הפעלה וחומרה מסוימות והתוכנה מקושרת (linked) עימן על פי צורך והגדרת כותב הקוד.
הערות.
ניתן בשפת C להוסיף הערות להסברת שלבי התוכנית. ההערות אינן משפיעות על ריצת התוכנית עצמה, אך הן מסייעות להבנתה בידי מתכנתים אחרים או בזמן מאוחר יותר. הערות בשפת C נכתבות בין זוג הסימונים /* */.
Multiline
Comment
בתקן C99 נוספה האפשרות לסמן הערה של שורה אחת על ידי // (שני לוכסנים סמוכים), המגדירה את כל הטקסט שמופיע אחריה כהערה. מאפיין זה נלקח משפת ++C.
// end of line comment
"Hello World".
תוכנית פשוטה זו מדפיסה את המחרוזת "Hello, World!" לפלט הסטנדרטי.
int main(void)
printf("Hello, World!\n");
return 0;
מסמך נקדי
מסמך נקדי הוא מסמך עקרונות שחובר בידי איש "קול ישראל" נקדימון רוגל בראשונה בשנת 1972 ובו מפורטים כללי אתיקה החלים על העוסקים בעיתונאות המשודרת.
כללים אלה יפים ליישום גם בעיתונאות הכתובה, אם ניתן בכלל לעשות הפרדה דיכוטומית בין השתיים.
"מסמך נקדי" הפך להיות מסמך שמהווה מעין "תורה שבכתב" של העיתונאות במדינת ישראל, ולמרות שהוא לא מסמך מחייב מבחינה חוקית, אלא משמש כהשראה אתית, עיתונאים ואנשי תקשורת רבים, מסתמכים עליו בעבודתם.
יוונית
יוונית ( - אֵלִינִיקַה) היא שפה הודו־אירופאית, שמוצאה באזור יוון של ימינו. היוונית דוּבּרה בתחילה גם לאורך חופי אסיה הקטנה (למעשה דיאלקטים יווניים שרדו באסיה הקטנה עד למאה ה־20) וחלקים מאיטליה ומצרפת. בעת העתיקה ניתן להבחין בין מספר דיאלקטים יווניים, והבולטים בהם היו האיוני, הדורי, האיולי, הארקדו־קפריסאי, ניב צפון־מערבי והניב האטי, שהוא למעשה ניב איוני עם תערובת של יסודות דוריים ובניב זה נכתבה רוב הספרות הקלאסית היוונית והוא גם משמש בסיס לשפה היוונית המודרנית.
יוונית עתיקה.
השפה היוונית קיימת בכתב למעלה מ־3000 שנה. הדעות חלוקות בדבר מקורות הלשון היוונית, ויש תאוריות שונות בנושא. אחת מהן טוענת שהיוונית נוצרה עם הגירת דוברי פרוטו־יוונית (יוונית קדומה מאוד) אל יוון, שהתרחשה בין השנים 3200 לפני הספירה ו־1900 לפני הספירה. תאוריה אחרת טוענת שהיוונית התפתחה ביוון עצמה מתוך שפה הודו־אירופאית קדומה.
יוונית אַטִית היא הניב היווני של אתונה; חלק ניכר מהספרות היוונית שהגיעה לידינו כתובה ביוונית אטית. בתקופה ההלניסטית השפה היוונית התפשטה לאזורים רבים בעולם, בהם לא דיברו קודם לכן יוונית, וכך הלכה והתפשטה שפה יוונית בעלת אלמנטים משותפים, ואילו הניבים השונים של היוונית הקלאסית דעכו. השפה החדשה נקראה יוונית קוֹינֶה (κοινη ביוונית מודרנית מבוטא "קיני"), היינו יוונית "משותפת", שהיא בבסיסה יוונית אטית בתוספת מעט איונית ובה נכתבו לימים תרגום השבעים והברית החדשה. לאלכסנדר הגדול נודע תפקיד מהותי בשילוב הניבים היווניים. הניב המשותף הקל על התקשורת בתקופה ההלניסטית, ומשנלמד על ידי בני המדינות שכבש, הפכה היוונית לשפה עולמית לזמן מה. היוונית המשותפת הזו שימשה לינגואה פרנקה של האימפריה הרומית במשך שנים רבות. לימים, עם פיצול האימפריה הרומית, הפכה היוונית לשפה הרשמית של האימפריה הרומית המזרחית, לימים האימפריה הביזנטית (יוונית זו נקראה "יוונית ביזנטית"), ומקץ מאות שנים נוספות התגלגלה ליוונית מודרנית של ימינו.
מערכת ההגה של הלשון היוונית העתיקה מבחינה בין 12 תנועות (חלקן נכתבות כדיגרף, דהיינו צירוף של צמד אותיות), מהן 5 קצרות ו־7 ארוכות. בנוסף קיימים 10 צירופים שונים של דיפתונגים.
בתחום מערכת העיצורים ראוי להזכיר כי היוונית מכירה בנישוף כתכונת מבדילה בחלק ממערכת עיצוריה.
היוונית העתיקה הבחינה בין שלושה סוגים שונים של הטעמה, אשר יכולים היו להופיע על אחת משלוש ההברות האחרונות של המילה. מערכת הטעם הייתה פונמטית.
המורפולוגיה של הלשון היוונית העתיקה, בדומה לשפות הודו־אירופאיות אחרות, מתאפיינת בנטייתה – לדוגמה, לשמות עצם יש חמש יחסות, שלושה מינים (זכר, נקבה, סתמי), ושלושה מספרים (יחיד, זוגי, רבים), ואילו לפעלים יש חמישה מודוסים, שלוש דיאתיזות (פעיל, סביל, מדיום), מין אחיד, שלושה גופים ושלושה מספרים.
כתיבת השפה.