פעולות בעזרת מערכים חד-מימדיים
אם כבר אפשר להשתמש במשתנה המאחסן את מספר התא,אפשר גם כך:
program NAME;
var
A:array [1..15] of integer;
I:integer; (*משנה הלולאה והערך שמציבים לתאי המערך*)
begin
for I:=1 to 12 do A[I]:=I+2;
end.
להורדת הדוגמא לחץ כאן
ולאחר ביצוע התוכנית:
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
דוגמא:
כתוב תוכנית הקולטת למערך בין 10 תאים מספרים כלשהם ומחשבת ומדפיסה את כל המספרים הגדולים מהממוצע
פיתרון:
להורדת הדוגמא לחץ כאן
דוגמא:
כתוב תוכנית הקולטת למערך בן 10 תאים,מספרים שלמים בלבד.התוכנית תדפיס את כל המספרים הנמצאים במקומות הזוגיים שהם אי זוגיים.
כלומר, אם הקלט למערך יהיה:
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
3 |
1 |
5 |
6 |
4- |
8 |
10 |
7 |
1- |
2- |
אז ההדפסה תהיה:
3
5
1-
פיתרון:
program NUMBERS; (********* התוכנית הראשית********)
{תוכנית הדפסת המספרים האי זוגיים במקומות הזוגיים}
var
N:ARRAY[7..16] of integer;
I:integer;
begin
{קלט הנתונים למערך}
for I:=7 to 16 do
begin
write('Enter number [' ,I, ']:' );
readln(N[I]);
end;
{בדיקה ופלט}
{הצבת ערך התחלתי למונה הלולאה}
I:=16; (*מהסוף להתחלה*)
{הלולאה}
while I>7 do
begin
if (N[I] mod 2)=1 then writeln(N[I]);
I:=I-2; (*מונה הלולאה קטן*)
end;
end.
להורדת הדוגמא לחץ כאן
דוגמת ריצה:
בכל התכניות עד כה נשמר בקפדנות העיקרון שאסור לחרוג מגודל המערך.
הטעות הזו תתגלה במהלך הרצת התוכנית.במקרב שתקלה כזו קוראת(ולא תמיד פסקל מתריע על סכנה הזו).נרשם תוכן התאים בזיכרון במקומות שלא יועדו להם,ואז מופיעות תקלות לא צפויות .
בהוראת הפלט ניתן לבצע חישובים כדוגמת ההוראות הבאות:
write(X+2Y); - תחילה יחושב הביטוי ולאחריו תודפס התוצאה.
writeln(A+B*ord('A')); - התוצאה אינה נשמרת בתא כלשהו.
write(X div Y); - התוצאה של החישוב נמחקת לאחר התוצאה.