מערכים חד מימדיים
נתאר לעצמנו כיצד הייתה צריכה להיראות תוכנית סדרה של עשרת אלפים מספרים ומדפיסה את כל המספרים הגדולים מהממוצע.
היה צורך לבצע לולאה הקולטת את עשרת אלפי המספרים,צוברת אותם,ומחשבת את הממוצע ואז עוד לולאה הקולטת שוב את כל המספרים ומדפיסה רק את אלו הגדולים מהממוצע.לא הגיוני לעבוד כך!!!
זו דוגמא בולטת לצורך בקליטת נתונים שאפשר להשתמש בהם שוב ושוב בלי לקלוט אותם כל פעם מחדש.
לצורך פתרון בעיות כאלו,ודומות לה,נגדיר משתנה המוגדר ממערך של תאים.
למשל:
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
לכל מערך התאים האלו יש שם אחד ומציין אחד למספר התא.
כל התאים יכולים להיות שלמים או כולם ממשיים או כולם תווים,אך אי אפשר שחלק מהתווים יהיו מסוג אחד וחלק אחר מסוג שני.
ב-var,נגדיר את המערך בן 15 תווים כך:
program NAME; var A:array [1…..15] of integer; begin end. |
המילה array (מילה שמורה) פרושה מערך ולאחריה (לא משנה אם יש או אין רווח), ביו סוגריים מרובעים, מופיע התחום של מספרי התאים-מספר התא הראשון שתי נקודות ומספר התא האחרון.כאן,התחום הוגדר בין 1 ל-15 ,כלומר 15 תאים,of היא מילה שמורה גם כן, ולאחריה מופיע סוג התאים במערך.
כלומר המבנה הכללי של הגדרת מערך תאים:
var ;סוג of [תחום] array :שם מערך |
אפשר להגדיר את אותו מספר תאים כך:
program NAME; var A:array [-5…..9] of integer; begin end. |
כלומר,התא הראשון מספרו 5- והתא האחרון מספרו 9.סה"כ 15 תאים.
כמובן,יש להקפיד שמספר התא האחרון יהיה גדול או שווה למספר התא הראשון.
מכיוון שאין חלק של תא, אזי המספרים שמגדירים את התחום הם שלמים בלבד.
נניח,שרוצים להציב ערכים בתוך תאי המערך.ההצבה תהיה כך:
program NAME; var A:array [1…..15] of integer; begin A[1]:=3; (*הצבת ערך 3 לתוך תא מספר 1*) A[3+2]:=-4; (*הצבת ערך 4- לתוך תא מספר 5*) end. |
ולאחר הרצת התוכנית:
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
|
|
|
|
|
|
|
|
|
|
4- |
|
|
|
3 |
בהצבה,מופיע שם המערך ואחר כך בסוגריים מרובעים מספר התא במערך אליו מבצעים את ההצבה.מלבד העובדה שהתאים הם חלק מהמערך,כל תא בתוך המערך הוא תא נפרד.
לתא במערך אפשר לפנות גם כך:
program NAME; var A:array [1..15] of integer; I:integer; begin I:=3; A[I]:=5; (*מספר התא במערך*) A[I+4]:=9; (*לתא מספר 3 מציבים את הערך 5*) A[I+1]:= A[I]; (*לתא מספר 4 מציבים את תוכן תא 3*) end. |
להורדת הדוגמא לחץ כאן
חלון watch לאחר הרצת התוכנית:
כלומר קיבלנו את המערך הבא:
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
|
|
|
|
|
|
|
|
9 |
|
|
5 |
5 |
|
|