Лабораторная работа № 6П Массивы в ТурбоПаскале.

advertisement
Лабораторная работа № 6П
Массивы в ТурбоПаскале.
Задание к лабораторной работе № 6П
1. Составить и отладить программу для вычисления среднегодовой температуры и ежемесячных
отклонений от этого значения для заданного в табл. 1 массива среднемесячных температур
Т[1…12].
Месяц года
Температура,  С
1
2
3
4
5
6
7
8
9
10
Таблица 1.
11
12
-21
-18
-7,5
5,6
10
18
22,2
24
17
5,4
-7
-18
2. Составить и отладить программу для выбора максимального элемента из рассмотренного ранее
массива температур, т.е. отбора самой высокой температуры и номера месяца, соответствующего ей.
Краткие теоретические сведения
Множество значений, содержащихся в таблице, обозначается следующим образом:
{Ti }, i  1, ..., 12.
Порядковые номера элементов (1, 12, i и др.) называются индексами. Индексированные величины удобнее использовать при записи их для математической обработки. Например, для вычисления среднегодовой температуры используется следующая формула:
Tср 
1 12
 Ti .
12 i 1
В Паскале аналогом таблиц является структурированный тип данных, который называется
регулярным типом, или массивом. Как и таблица, массив представляет собой совокупность пронумерованных однотипных значений, имеющих общее имя. Элементы массива обозначаются как
переменные с индексами. Индексы записываются в квадратных скобках после имени массива.
Например:
Т[1], Т[5], Т[i].
Массив, хранящий линейную таблицу, называется одномерным, а прямоугольную — двухмерным. В программах могут использоваться массивы и большей размерности.
Описание массивов. Переменная регулярного типа описывается в разделе описания переменных в следующей форме:
Var <идентификатор> : Array [<тип индекса>] Of <тип компонент>
Чаще всего в качестве типа индекса употребляется интервальный тип. Например, указанный
в задании одномерный массив среднемесячных температур можно описать следующим образом:
1
Лаб. 6П
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 То 1 2 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 следует засылать номер элемента массива температур каждый раз одновременно с занесением в ТМах его значения.
2
Лаб. 6П
Программа решения такой задачи следующая:
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];
3
Лаб. 6П
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. Предъявите обе программы преподавателю, выполните индивидуальное задание и ответьте на
контрольные вопросы по теме лабораторной работы.
4
Лаб. 6П
Download