- •Глава 7. Программирование циклических вычислительных процессов
- •7.1. Оператор цикла с предусловием while
- •7.2. Оператор цикла с постусловием repeat
- •2) Вычисляется логическое выражение l, результат вычисления анализируется;
- •X, y, dx, a, b : real;
- •7.3. Оператор цикла с параметром for
- •7.4. Одномерные массивы и их описание
- •7.4.1. Обращение к элементу массива
- •7.4.2. Ввод и вывод одномерных массивов
- •7.4.3. Организация циклов с использованием массивов
- •Пример 7.13
- •7.5. Вопросы для самоконтроля
7.3. Оператор цикла с параметром for
Оператор имеет вид
for i := m1 to m2 do оператор
или
for i := m1 downto m2 do оператор,
где оператор - простой или составной оператор (тело цикла); i - параметр цикла; m1, m2 - соответственно начальное и конечное значения параметра (рис. 7.3).
Рис. 7.3. Синтаксическая диаграмма оператора for
На параметр цикла в операторе for накладываются следующие ограничения:
1) в качестве параметра может использоваться только переменная дискретного типа1 (например, целого);
2) начальное и конечное значения параметра могут быть константами, переменными или выражениями, но должны иметь одинаковый с ним тип;
3) параметр цикла, а также его начальное и конечное значения не могут быть изменены никаким оператором в теле цикла;
4) после завершения цикла значение его параметра становится неопределенным, если только цикл не был прерван оператором перехода.
Выполнение оператора for начинается с присваивания его параметру цикла начального значения m1. Затем значение параметра (назовём его текущим и обозначим i ) сравнивается с конечным значением m2. Если в операторе цикла используется ключевое слово to и i m2, то выполняется тело цикла, после чего параметр i увеличивается на 1; когда i становится строго больше m2, цикл перестает выполняться и следует переход на оператор, расположенный за циклом. При использовании в операторе for ключевого слова downto i после каждого выполнения тела цикла уменьшается на 1. Выполнение цикла продолжается до тех пор, пока i не станет строго меньше m2.
Пример 7.4
Выполнить задание, приведённое в примере 7.1, используя оператор for.
В этой задаче количество повторений цикла равняется числу точек разбиения на отрезке [a,b] и может быть вычислено до выполнения цикла как целая часть от деления длины отрезка b-a на величину шага x.
program example74;
var x, y, dx, a, b: real;
n, i : integer;
begin
{вычисление числа повторений тела цикла}
n := trunc ((b - a) / dx) + 1;
x := a;
for i := 1 to n do
begin
y := sin ( sqr (x));
writeln ('x:=', x:10:3, ' y:=' ,y:10:3);
x := x + dx
end
end.
7.4. Одномерные массивы и их описание
Одним из многих вопросов, стоящих перед программистом, приступающим к решению задачи, является вопрос о том, в каком виде следует представить исходные данные, так как от этого зависит качество программы. Часто исходные данные рационально представить в виде массива. Массив - это упорядоченная совокупность переменных одного типа, называемых элементами массива. Все элементы имеют одно и то же имя, совпадающее с именем массива. Каждый элемент снабжается индексом (порядковым номером), определяющим его относительную позицию в ряду других элементов, и называется индексированной переменной. Индекс элемента записывается вслед за его именем в квадратных скобках, например, a[3], max[10] и т.д.
Характеристиками каждого массива являются его имя, размерность и длина. Имя массива выбирается по тем же правилам, что и имя простой (неиндексированной) переменной. Одномерный массив в TurboPascal соответствует в математике вектору. Под длиной массива будем понимать количество составляющих его элементов. Массивы относятся к одной из разновидностей составного типа, а именно к регулярному типу.
Определение регулярного типа имеет вид
array [t2] of t1,
где t1 - тип элементов массива (базовый тип); t2 - тип индексов элементов массива.
В качестве элементов массива могут выступать переменные любого типа, допустимого в языке. Тип индекса задаёт количество элементов в массиве, т.е. его длину; это количество определяется числом возможных значений типа, указанного в описании массива. Для индексации элементов массива чаще всего используется ограниченный тип, который образуется из какого-либо дискретного, кроме longint.
В программе каждый массив должен быть описан. Его описание может быть сделано либо в разделе описания переменных - var, либо в двух разделах: описания типов - type и описания переменных. Но в любом случае в описании массива должно присутствовать определение регулярного типа.
Описание массива в разделе переменных выглядит так:
var
имя массива: array [t2] of t1;
Пример 7.5
a)
var
amper: array [0..30] of real;
Описан массив с именем amper, состоящий из 31 элемента типа real; индексация его элементов начинается с нуля и заканчивается целым числом 30; справа от символа ’: ’ находится определение регулярного типа;
b)
var
v,w: array [-1..15] of integer;
Описаны два эквивалентных массива v и w целого типа, содержащие по 17 элементов в каждом.
________________________________________________________
Рассмотрим теперь второй способ описания массивов. Он включает себя два этапа: сначала в разделе описания типов объявляется регулярный пользовательский тип, а затем в разделе описания переменных указывается имя массива, принадлежащего данному типу:
type
имя типа = array [t2] of t1;
var
имя массива: имя типа;
Пример 7.6
type vec = array [-5..10] of integer;
var b: vec;