מבוא לתכנות ולמדעי המחשב בשפת C/לולאות for ומערכים: הבדלים בין גרסאות בדף

תוכן שנמחק תוכן שנוסף
imported>כתריאל בארי
אין תקציר עריכה
imported>כתריאל בארי
אין תקציר עריכה
שורה 45:
התחביר של לולאת for מורכב משלושה חלקים מופרדים בסמני ; (נקודה פסיק):
<syntaxhighlight lang ="text">
for(מתבצע בסוף כל איטרציה; תנאי סיום לולאה;אתחול, מתבצע לפני הלולאה) {..}
</syntaxhighlight>
בעקרון, ניתן להכניס בכל חלק, כל קוד חוקי ב C (בחלק האמצעי חייב להיות לו ערך שיחשב כתנאי) אבל בדרך כלל הקוד דומה לזה שבדוגמה האחרונה ומשמש ללולאות פשוטות.
שורה 230:
note that a[7] was not declared!
</syntaxhighlight>
שימו לב שלא נוצר משתנה עם אינדקס 7 והשימוש בו יחשב שגיאה.הסיבה היא שבב C ספירת אברי מערך מתחילה מ 0. שגיאה כזו, של חריגה מגבולות המערך שהוקצה, בדרך כלל לא תדווח בזמן קומפילציה ואפילו לא בזמן הריצה. התנהגות תוכנית המכילה שגיאת חריגה מגבולות מערך איננה מוגדרת ויכולה ליצור בעיות רציניות ומאוד לבלבל. שגיאות כאלה קשות לאיתור לכן נסו להמנע מהן.
 
השימוש שנעשה בסדרת התאים בדוגמה זו, לא שונה מהותית משימוש בשבעה משתנים שונים מהסוג בו השתמשנו בעבר. עדיין, אבל, ביצירצביצירת שם של איבר מערך ע"י שימוש באינדכס, מותר שהאינדכס יהיה משתנה, או ביטוי כלשהו, ובשימוש כזה מתבטא היתרון הגדול של מערכים. לדוגמה:
 
<syntaxhighlight>
שורה 273:
</syntaxhighlight>
 
היכולת להתייחס למשתנה ששמו מורכב משם המערך בתוספת אינדקס שהוא משתנה או ביטוי, פותחת בפנינו אפשרויות רבות. הביטוי [a[i יכל להתייחס לכל אחד משבעת המשתנים שבמערך, תלוי בערכו של i המייצג כאן את האינדקס. אילו היינו רוצים לכתוב את התכנית שלעיל ללא שימוש במערך היינו צריכים להגדיר שבעה משתנים שונים, ולהתייחס לכל אחד בהוראה נפרדת. חישבו על מצבים שבהם אנו צריכים לטפל בעשרות (למשל, אם נרצה לשמור ציונים של תלמידים בכיתה, ולחשב ממוצעים, ציון מקסימלי או מינימלי, וכו'), מאות או אלפי משתנים.
 
בכדי לתת דוגמה נוספת ליכולות שנובעות משימוש באינדקס משתנה, נשכלל קצת את הקוד הקודם ונוסיף היפוך של סדר הערכים במערך:
שורה 304:
</syntaxhighlight>
 
לסיכום, עדלעד לשיעור זבזה עסקנו במשתנים בודדים. מערכים הם הדוגמה האשונההראשונה למבנה נתונים, כלומר אוסף נתונים המאורגנים יחד במבנה מסוים. מערך הוא סידור רציף של נתונים בזיכרון המחשב כך שלכל נתון ניתן להתייחס לפי המקום הסידורי שלו. המערך הוא מבנה הנתונים הבסיסי ביותר. בהמשך הקורס נראה מבני נתונים מורכבים יותר.