Лабораторная работа № 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.  Предъявите обе программы преподавателю, выполните индивидуальное задание и ответьте на контрольные вопросы по теме лабораторной работы.