StartprogrammingusingObjectPascal:Arrays
배열
배열은 같은 형식을 지닌 변수들의 연속입니다. 10개의 Integer 변수에 대한 배열을 선언하려 한다면, 다음과 같이 할 수 있습니다.
Numbers: array [1 .. 10] of Integer;
배열의 인덱스를 사용하여 배열의 단일 변수에 접근할 수 있습니다.
Numbers[1] := 30;
두번째 변수에 값을 넣으려면, 인덱스 2를 사용합니다.
Numbers[2] := 315;
다음 예제에서는, 10명의 학생들의 성적을 입력하도록 요구하고 이들을 배열에 넣습니다. 심지어 통과/실패 결과까지 바로 뽑아낼 것입니다.
var
Marks: array [1 .. 10] of Integer;
i: Integer;
begin
for i:= 1 to 10 do
begin
Write('Input student number ', i, ' mark: ');
Readln(Marks[i]);
end;
for i:= 1 to 10 do
begin
Write('Student number ', i, ' mark is : ', Marks[i]);
if Marks[i] >= 40 then
Writeln(' Pass')
else
Writeln(' Fail');
end;
Writeln('Press enter key to close');
Readln;
end.
최대 최소 학생 성적을 가져오기 위해 이전 코드를 수정할 수 있습니다.
var
Marks: array [1 .. 10] of Integer;
i: Integer;
Max, Min: Integer;
begin
for i:= 1 to 10 do
begin
Write('Input student number ', i, ' mark: ');
Readln(Marks[i]);
end;
Max := Marks[1];
Min := Marks[1];
for i:= 1 to 10 do
begin
// Check if current Mark is maximum mark or not
if Marks[i] > Max then
Max := Marks[i];
// Check if current value is minimum mark or not
if Marks[i] < Min then
Min := Marks[i];
Write('Student number ', i, ' mark is : ', Marks[i]);
if Marks[i] >= 40 then
Writeln(' Pass')
else
Writeln(' Fail');
end;
Writeln('Max mark is ', Max);
Writeln('Min mark is ', Min);
Writeln('Press enter key to close');
Readln;
end.
참고로, 첫번째 성적(Marks[1])을 최대 최소 성적으로 가정하고, 나머지 성적들과 비교할 것입니다.
Max := Marks[1];
Min := Marks[1];
순환문 안에서 각각의 성적에 대해 Max와 Min을 비교합니다. Max보다 큰 수를 찾으면 Max의 값을 그것으로 대체하고, Min보다 작은 수를 찾으면 Min의 값을 그것으로 대체합니다.
앞의 예제에서 주석을 도입했습니다.
// Check if current value is minimum mark or not
이 라인은 주석이라는 것을 의미하는 문자들 // 로 줄을 시작했으며, 코드에 영향을 주지 않고 컴파일되지 않을 것입니다. 이 기술은 코드의 일부분을 다른 프로그래머들에게 설명하거나 프로그래머 자신에게 설명할 때 사용합니다.
// 는 짧은 주석에 사용합니다. 여러줄의 주석을 원한다면, { } 또는 (* *)로 주석으로 삼을 문자열들을 감쌀 수 있습니다.
예제:
for i:= 1 to 10 do
begin
{ Check if current Mark is maximum mark or not
check if Mark is greater than Max then put
it in Max }
if Marks[i] > Max then
Max := Marks[i];
(* Check if current value is minimum mark or not
if Min is less than Mark then put Mark value in Min
*)
if Marks[i] < Min then
Min := Marks[i];
Write('Student number ', i, ' mark is : ', Marks[i]);
if Marks[i] >= 40 then
Writeln(' Pass')
else
Writeln(' Fail');
end;
또한 우리의 코드 일부를 주석처리하여 일시적으로 비활성화 할 수 있습니다.
Writeln('Max mark is ', Max);
// Writeln('Min mark is ', Min);
Writeln('Press enter key to close');
Readln;
위의 코드에서 학생 최소 성적을 기록하는 프로시저를 비활성화 했습니다.
참고
C언어에서와 같이 0을 기반으로 하는 인덱스를 가진 배열을 선언할 수 있습니다.
Marks: array [0 .. 9] of Integer;
이 또한 10개의 요소를 지닐 수 있지만, 첫번째 항목은 인덱스 0을 사용하여 접근할 수 있습니다.
Numbers[0] := 30;
두번째 항목
Numbers[1] := 315;
마지막 항목
Numbers[9] := 10;
또는
Numbers[High(Numbers)] := 10;