§18. Массивы в Паскале.

Основные темы параграфа:


-массивы в паскале

-описание и обработка массива на Паскале

-описание и ввод значений в массив на Алгоритмическом языке

-цикл с параметром на Паскале

-программа с двумя массивами

-форматы вывода

-коротко о главном

-вопросы и задания

-тест самопроверки


Массивы в Паскале


А теперь посмотрим, как можно на Паскале запрограммировать алгоритм вычисления среднегодовой температуры.
Для этого сначала познакомимся с правилами описания массивов. Заметим, что в данном разделе учебника мы ограничиваемся только работой с одномерными массивами (линейными таблицами).

Описание и обработка массива на Паскале


Общая форма описания одномерного массива на Паскале такая:
var <имя массива>: array [<нижняя граница индекса .. верхняя граница индекса>] of <тип массива>
Слово "array" буквально переводится как "массив". Границы индекса могут быть любыми целыми числами. Важно, чтобы нижняя граница была меньше верхней границы. Описание массива температур будет следующим:
var T: array [1..12] of real;

Цикл с параметром на Паскале


Рассмотрим полный текст программы на Паскале.


В этой программе дважды использован оператор цикла с параметром. Он имеет следующий формат:
for <параметр цикла> := <начальное значение параметра> to <конечное значение параметра> do <тело цикла>;
Если параметр цикла - целая переменная, то ее значение будет возрастать через единицу. Существует другой вариант этого оператора, в котором вместо слова to записывается downto. В этом случае значение параметра цикла убывает через единицу. Следовательно, начальное значение в этом случае должно быть больше конечного.
Так же как и для оператора цикла while, здесь тело цикла может быть либо простым оператором, либо составным. В первом случае тело цикла заканчивается на ближайшей точке с запятой. В нашем примере - это цикл суммирования. Во втором случае тело цикла заключается между словами begin и end (цикл ввода).

Форматы вывода


В программе присутствует еще один новый для вас элемент Паскаля: формат вывода. Это числа с двоеточиями, стоящие после переменных в операторе вывода write:
write( 'Т [',I:2,']=');
В этой записи I:2 обозначает, что значение переменной I выводится как целое число в две символьные позиции на экране. Для однозначного числа в первой позиции будет помещен пробел, например: _5.
В операторе вывода результата также используется формат: Tsred: 6:2. Значение переменной Tsred выводится как смешанное число в 6 позиций, две последние из которых занимает дробная часть. В третьей справа позиции - точка. Лишние позиции для целой части занимаются пробелами. Например: _34.25.
Результат выполнения программы Temperature будет выведен на экран в следующем виде:
Среднегодовая температура =2.56 градусов.

Программа с двумя массивами


А теперь расширим условие задачи. Требуется для каждого месяца определить отклонение его средней температуры от среднегодовой величины.
Вернемся к электронной таблице на рис. 3.13. Добавим к ней еще один столбец С, в котором будут вычисляться искомые отклонения. В ячейку С2 занесем формулу =В2-$В$14. По этой формуле вычислится отклонение январской температуры от среднегодовой. Скопировав эту формулу в ячейки СЗ:С13, получим все остальные величины. Смысл "замораживания" адреса В14 вам должен быть понятен. Результаты приведены в таблице:


Реализуем вычисление отклонений в программе на Паскале. Очевидно, в программе должен появиться еще один массив для размещения в нем таблицы отклонений. Дадим этому массиву имя Dt. Как и массив температур, он состоит из 12 чисел: Dt[l] , Dt[2] , Dt[3] , ..., Dt [12] . К предыдущей программе надо добавить описание массива Dt в следующем виде:var Dt: array[1..12] of real;
Значение каждого элемента массива равно разности между температурой соответствующего месяца и среднегодовой температурой. Например, для января: Dt[l] = Т[1] - Tsred. Такие вычисления повторяются в цикле 12 раз. Значения массива Dt выводятся на экран.,br. Запишем на Паскале фрагмент, который надо вставить в конец предыдущей программы, чтобы решить поставленную задачу.


Здесь вычисление значений массива Dt и вывод их на экран совмещены в одном цикле. Результат работы программы будет следующим:
Dt[1]= -23,56
Dt[2]= -20,56
Dt[3]= -10,06

Dt[12]= -20,56
Как и следовало ожидать, это те же самые числа, что получены в электронной таблице.

Коротко о главном


Простейший формат описания одномерного массива: var<имя массива>: array [<нижняя граница индекса .. верхняя граница индекса>] of <тип массива>
В простейшем случае оператор цикла с параметром записываетсятак:
for<параметр цикла>:=<начальное значение параметра> to <конечное значение параметра>
do<тело цикла>
В формате вывода указывется количество позиций на экране для вывода значений.Для вещественного числа указывается также количество цифр в дробной части.

Вопросы и задания


1. Как можно описать на Паскале массив, в котором будут храниться значения численности населения Москвы к концу каждого года XX века?
2. Вы приобрели котенка. Каждый вечер вы определяете его вес с помощью весов. Как можно описать на Паскале массив, в котором будут храниться значения
веса котенка в течение месяца (например, мая)?
3. Напишите фрагмент программы на Паскале ввода исходных данных для массивов, определенных в заданиях 1 и 2.
4. Введите в компьютер программу Temperature, добавив к ней обработку массива Dt. Выполните программу, получите результаты. Сравните их с приведенными в
параграфе.
5. Составьте программы на Паскале по алгоритмам из заданий 3, 4 предыдущего параграфа. Выполните эти программы на компьютере.

Тест для самопроверки


Тест для самопроверки