Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на Pascal / Delphi / Лекции по Turbo Pascal [12].pdf
Скачиваний:
130
Добавлен:
02.05.2014
Размер:
1.06 Mб
Скачать

Одесский колледж компьютерных технологий “СЕРВЕР”

Предполагается, что данная программа должна сформировать строку из 26 символов, содержимым которой является последовательность заглавных букв латинского алфавита. Однако вызов процедуры Writeln покажет, что содержимым переменной Str будет строка из одного символа A. Ошибка заключается в том, что присваивание значений элементам строки не влияет на её текущую длину, которая была установлена равной 1 при первом присваивании (здесь значение получала строка в целом). В этом случае нужно воспользоваться операцией сложения строк. Более правильной будет следующая программа:

VAR

Str: string[26]; i: integer;

BEGIN Str := '';

for i:=1 to 26 do

Str := Str+Chr(Ord('A')+i-1); Writeln(Str);

END.

Многомерные массивы.

Предположим, что в массиве нужно хранить оценки не по одному предмету, а по нескольким. В таком случае можно завести несколько массивов, но, вероятно, возникнет путаница. В Паскале для этого предназначены многомерные массивы. Например, двумерный массив, в котором хранятся оценки по двум предметам 25 учеников, описывается так:

var klass : array [1..2, 1..25] of integer;

или

type DvMas = array [1..2, 1..25] of integer; var klass : DvMas;

Этот массив можно представить себе в виде таблицы оценок:

 

Предметы \ № учеников

1

2

3

4

5

6 . .

25

Математика

2

4

3

2

5

4

.

.

4

история

5

3

3

4

5

4

.

.

5

В этой таблице в первой строке записаны оценки, например, по математике, а во второй - по истории. Получается, что у каждого ученика есть две оценки, то есть каждому номеру ученика соответствует две оценки - в первой и во второй строках. К конкретной оценке конкретного ученика можно обратиться, указав номер предмета (1 или 2) и номер ученика (от 1 до

25):klass[1,6]; klass[2,24] и т.д.

47

Одесский колледж компьютерных технологий “СЕРВЕР”

8 7 6 5 4 3 2

1 a b c d e f g h

Хорошо известным вам примером двумерного массива [1..8,1..8] является шахматная доска.

????????????????????????????????

F4 - клетка в 4-й строке и 6-м

Этот массив описывается так: Ches : array [a..h, 1..8] of string;

Примером 5-тимерного массива может служить адрес человека: (№ города, № улицы, № дома, № квартиры, № жителя в квартире).

Для обработки многомерных массивов используют вложенные циклы. Например, вводится описанный выше массив klass так:

for pred:=1 to 2 do

организуется цикл по предметам,

begin

 

for pupl:=1 to 30 do

для каждого предмета организуется

read(klass[pred,pupl]);

цикл ввода по ученикам.

End;

 

Сначала в строку вводятся оценки по первому предмету (i=1), потом курсор переводится на следующую строку и вводятся оценки по второму предмету

(i=2).

for pupl:=1 to 30 do begin

организуется цикл по ученикам.

for pred:=1 to 2 do

для каждого ученика организуется

read(klass[pred,pupl]);

цикл ввода по предметам

end;

 

48