Next:5.2.3
Доказательство свойств программ
Up:5.2
Структурированные типы данных
Previous:5.2.2
Массивы
type ДОСКА = array 7 of array 7
of ФИГУРА;
АНКЕТЫ = array 1000
of
array 100 of array 200 of char;
СЕССИЯ= array 5
of array 15 of array 25 of array 5 of
integer;
var A : ДОСКА; B : АНКЕТЫ; С : СЕССИЯ;
Следующий оператор цикла в матрице C ставит первыми оценки того студента 2 курса 12 группы, который по первому экзамену получил лучшую оценку:
for K:=1 to 999 do
if C[2][13][0][0]
C[2][13][K][0] then C[2][13][0] := C[2][13][K] end
end,
а задача нахождения в переменной C наилучшей оценки студента 0 (подготовительного) курса 11 группы может быть решена следующим фрагментом программы:
E := 1;
for K := 0 to 24 do
for L:= 0 to 4 do
if C[0][11][K][L]>
E then E := C[0][11][K][L] end
end
end
В качестве еще одного примера рассмотрим решение задачи построения по заданной последовательности вещественных чисел а1,..., а100 матрицы А = {Aij}, в которой 1 <= i,j <= 100 и Aij = ai101-i для всех i и j, и печати построенной матрицы по строкам.
module ПостроениеМатрицы;
const N = 100; (*Длина входной последовательности*)
type ИНДЕКС = integer; МАТРИЦА = array
N of array N of real;
var F : МАТРИЦА ; K,L : ИНДЕКС ;
begin
(*Ввод последней строки матрицы А *)
for K := 0 to N-1 do read(A[N][K])
end;
(* Заполнение первых 99 строк матрицы А *)
for L := N-2 to 0 by -1 do
(*Заполнение L-й строки
матрицы А*)
for K := 0 to
N-1 do A[L][K] := A[L+1][K]
A[N][K] end
end;
(*Печать построенной матрицы А *)
for L := 0 to N-1 do
(*Печать L-й строки матрицы
А *)
for K := 0 to
N-1 do write (A[L][K]) end;
writeln
end
end ПостроениеМатрицы.
Массив может быть многомерным: допускается заменять в описании массива слова of array на запятую, а в переменной с индексами символы ][ также на запятую. Например, можно переписать программу построение матрицы следующим образом:
module ПостроениеМатрицы2;
const N = 100; (*Длина входной последовательности*)
type ИНДЕКС = integer; МАТРИЦА = array
N, N of real;
var F : МАТРИЦА ; K,L : ИНДЕКС ;
begin
(*Ввод последней строки матрицы А *)
for K := 0 to N-1 do read(A[N,K])
end;
(* Заполнение первых 99 строк матрицы А *)
for L := N-2 to 0 by -1 do
(*Заполнение L-й строки
матрицы А*)
for K := 0 to
N-1 do A[L,K] := A[L+1,K]
A[N,K] end
end;
(*Печать построенной матрицы А *)
for L := 0 to N-1 do
(*Печать L-й строки матрицы
А *)
for K := 0 to
N-1 do write (A[L,K]) end;
writeln
end
end ПостроениеМатрицы2.
Возможность конструирования матриц, многомерных массивов и других составных
объектов приводит к синтаксическим правилам для понятия "переменная", приведенным
на рис. 5.7. Переменная, образованная только одним именем переменной, называется
полной
переменной; она представляет все свое значение целиком. Частичная
переменная содержит, по крайней мере, одно выражение и обозначает заданную
часть значения полной переменной. Полные и частичные переменные равноправны:
частичная переменная может быть операндом выражения, она может образовывать
левую часть оператора присваивания или быть параметром оператора ввода.
Name {"[" Expression { "," Expression } "]"}
Рис. 5.6. Синтаксис переменной
Next:5.2.3
Доказательство свойств программ
Up:5.2
Структурированные типы данных
Previous:5.2.1
Массивы