| Массивы в ПаскалеА теперь посмотрим, как можно на Паскале запрограммировать алгоритм вычисления среднегодовой температуры. Для этого сначала познакомимся с правилами описания массивов. Заметим, что в данном разделе учебника мы ограничиваемся только работой с одномерными массивами (линейными таблицами). Описание и обработка массива на ПаскалеОбщая форма описания одномерного массива на Паскале такая: var <имя массива>:  array  [<нижняя граница индекса ..   верхняя  граница  индекса>]   of <тип массива>  Слово "array" буквально переводится как "массив". Границы индекса могут быть любыми целыми числами. Важно, чтобы нижняя граница была меньше верхней границы. Описание массива температур будет следующим: var  T:   array   [1..12]   of  real;
 Цикл с параметром на ПаскалеРассмотрим полный текст программы на Паскале. 
Program Temperature;var T: array[1..12] of real;
 I: integer;  Tsred: real;
 begin
 {Цикл  ввода}
 for  I:=l   to   12  do
 begin
 write ( 'T[ ',1:2, '] = ') ;
 readln(T[I])
 end;
 {Цикл   суммирования}
 Tsred:=0;
 for  I:=l   to   12   do
 Tsred:=Tsred+T[I] ;
 {Вычисление   среднего}
 Tsred:=Tsred/12;
 writeln( 'Среднегодовая  температура  =   ', Tsred:6:2,    '   градусов')
 end.
 В этой программе дважды использован оператор цикла с параметром. Он имеет следующий формат: 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 вам должен быть понятен. Результаты приведены в таблице на рис. 3.14. 
   |  | A | B |  |  
   | 1 | Месяц | Температура | Отклонения |  
   | 2 | 1 | -21 | -23,56 |  
   | 3 | 2 | -18 | -20,56 |  
   | 4 | 3 | -7,5 | -10,06 |  
   | 5 | 4 | 5,6 | 3,04 |  
   | 6 | 5 | 10 | 7,44 |  
   | 7 | 6 | 18 | 15,44 |  
   | 8 | 7 | 22,2 | 19,64 |  
   | 9 | 8 | 24 | 21,44 |  
   | 10 | 9 | 17 | 14,44 |  
   | 11 | 10 | 5,4 | 2,84 |  
   | 12 | 11 | -7 | -9,56 |  
   | 13 | 12 | -18 | -20,56 |  
   | 14 | Среднее: | 2,56 |  |  
 
 Рис. 3.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 выводятся на экран. Запишем на Паскале фрагмент, который надо вставить в конец предыдущей программы, чтобы решить поставленную задачу. 
for   I:=l   to   12   do begin
 Dt[I]:=  T[I]   -   Tsred;
 writeln('Dt[',I:2,']=',   Dt[I]:б:2)
 end
 Здесь вычисление значений массива Dt и вывод их на экран совмещены в одном цикле. Результат работы программы будет следующим:Dt[1]= -23,56
 Dt[2]= -20,56
 Dt[3]=   -10,06
 …
 Dt[12]=   -20,56
 Как и следовало ожидать, это те же самые числа, что получены в электронной таблице. Вопросы и задания 1.	Как можно описать на Паскале массив, в котором будут храниться значения численности населения Москвы к концу каждого года XX века? 2.	Вы приобрели котенка. Каждый вечер вы определяете его вес с помощью весов. Как можно описать на Паскале массив, в котором будут храниться значения веса котенка в течение месяца (например, мая)? 3.	Напишите фрагмент программы на Паскале ввода исходных данных для массивов, определенных в заданиях 1 и 2. 4.	Введите в компьютер программу Temperature, добавив к ней обработку массива Dt. Выполните программу, получите результаты. Сравните их с приведенными в параграфе. 5.	Составьте программы на Паскале по алгоритмам из заданий 3, 4 предыдущего параграфа. Выполните эти программы на компьютере. 
 
 |