Лабораторная работа № 6П
Массивы в ТурбоПаскале.
Задание к лабораторной работе № 6П
1. Составить и отладить программу для вычисления среднегодовой температуры и ежемесячных отклонений от этого значения для заданного в табл. 1 массива среднемесячных температур Т[1…12].
Таблица 1.
Месяц года | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
Температура, | -21 | -18 | -7,5 | 5,6 | 10 | 18 | 22,2 | 24 | 17 | 5,4 | -7 | -18 |
2. Составить и отладить программу для выбора максимального элемента из рассмотренного ранее массива температур, т. е. отбора самой высокой температуры и номера месяца, соответствующего ей.
Краткие теоретические сведения
Множество значений, содержащихся в таблице, обозначается следующим образом:
![]()
Порядковые номера элементов (1, 12, i и др.) называются индексами. Индексированные величины удобнее использовать при записи их для математической обработки. Например, для вычисления среднегодовой температуры используется следующая формула:

В Паскале аналогом таблиц является структурированный тип данных, который называется регулярным типом, или массивом. Как и таблица, массив представляет собой совокупность пронумерованных однотипных значений, имеющих общее имя. Элементы массива обозначаются как переменные с индексами. Индексы записываются в квадратных скобках после имени массива. Например:
Т[1], Т[5], Т[i].
Массив, хранящий линейную таблицу, называется одномерным, а прямоугольную — двухмерным. В программах могут использоваться массивы и большей размерности.
Описание массивов. Переменная регулярного типа описывается в разделе описания переменных в следующей форме:
Var <идентификатор> : Array [<тип индекса>] Of <тип компонент>
Чаще всего в качестве типа индекса употребляется интервальный тип. Например, указанный в задании одномерный массив среднемесячных температур можно описать следующим образом:
Var Т : Array [1..12] Of Real;
Объем памяти, выделяемый под массивы, в ТурбоПаскале составляет 64 Кбайт.
По аналогии с математикой одномерные числовые массивы часто называют векторами, а двухмерные — матрицами.
В Паскале не допускается употребление динамических массивов, т. е. массивов, размер которых определяется в процессе выполнения программы. Изменение размеров массива происходит через изменение в тексте программы и повторную компиляцию.
Для упрощения таких изменений индексные параметры определяют в разделе констант:
Const Imax = 10; Jmax = 20;
Var Mas : Array[1..Imax, l..Jmax] Of Integer;
В этом случае для изменения размеров массива Mas и всех операторов программы, связанных с этими размерами, достаточно отредактировать только одну строку в программе — раздел констант.
Обработка массивов в программах производится поэлементно. Например, ввод значений элементов массива может производиться в цикле следующим образом:
в одномерный массив
For I := 1 То 12 Do
ReadLn(Т[I]);
в двумерный массив
For I := 1 To IMax Do
For J := 1 To JMax Do
ReadLn(Mas[I, J]);
Здесь каждое следующее значение будет вводиться с новой строки. Для построчного ввода вместо оператора ReadLn используется оператор Read.
Аналогично в цикле по индексной переменной организуется вывод значений массива. Например:
For I := 1 То 12 Do Write(T[I] : 8 : 4);
Рассмотрим задачу выбора максимального элемента из рассмотренного ранее массива температур, т. е. отбора самой высокой температуры и номера месяца, соответствующего ей.
Идея алгоритма решения этой задачи следующая: чтобы получить максимальную температуру в вещественной переменной ТМах, сначала в нее заносится первое значение массива Т[1]. Затем поочередно значение ТМах сравнивается с остальными элементами массива температур, и каждое значение, большее ТМах, присваивается этой переменной. Для получения номера самого теплого месяца в целую переменную NumMax следует засылать номер элемента массива температур каждый раз одновременно с занесением в ТМах его значения.
Программа решения такой задачи следующая:
TMax := T[1];
NumMax := 1;
For I := 2 To 12 Do
If T[I] > Tmax
Then
Begin
TMax := T[I];
NumMax := I
End;
Порядок выполнения задания к лабораторной работе № 6П
1. На основании теоретических сведений составьте и отладьте программу в соответствии с п. 1 задания к лабораторной работе № 6П.
2. После составления и отладки своей программы для проверки правильности сравните ее с одним из возможных вариантов программы, приведенным ниже.
Program Example_1;
Const N = 12;
Type Vec = Array [1..N] Of Real;
Var T, Dt : Vec;
St : Real;
I : Integer;
Begin { ---Ввод исходных данных---}
WriteLn('Введите таблицу температур');
For I := 1 То N Do
Begin
Write(I : 2,':');
ReadLn(T[I])
End;
--Вычисление средней температуры--
St:=0;
For I:=1 To N Do
St:=St+T[I];
St:=St/N;
--Вычисление таблицы отклонений от среднего--
For I:=1 То N Do
Dt[I]:=St—T[I];
--Вывод результатов--
WriteLn('Средняя температура равна ', St:6:2);
WriteLn;
WriteLn('Отклонения от средней температуры:');
For I := 1 То N Do
WriteLn(I:1,':',Dt[I]:6:2)
End.
По такой программе можно рассчитать среднее значение и вектор отклонений от среднего значения для любого одномерного вещественного массива. Настройка размера массива осуществляется только редактированием раздела констант.
3. Составьте и отладьте программу в соответствии с п. 2 задания к лабораторной работе № 6П. При составлении программы используйте фрагмент программы, приведенный в разделе «Краткие теоретические сведения».
4. Предъявите обе программы преподавателю, выполните индивидуальное задание и ответьте на контрольные вопросы по теме лабораторной работы.


