Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Глава7.doc
Скачиваний:
1
Добавлен:
16.04.2019
Размер:
139.26 Кб
Скачать

7.4.1. Обращение к элементу массива

Массивы не могут обрабатываться целиком за исключением единственного случая, когда они используются в операторе присваи­вания, например, а:=b, если их типы эквивалентны. Для того, чтобы получить доступ к элементу массива, нужно записать обращение к нему, которое выглядит как

имя массива[индекс].

В качестве индекса можно использовать константу, переменную или выражение, соответствующие типу индексов, объявленному в опи­сании массива.

Пример 7.7

b[100], c[k], yes[j+2]

Приведены обращения к элементам массивов с именами b, c и yes. Значения переменных k и j должны быть определены заранее.

________________________________________________________

7.4.2. Ввод и вывод одномерных массивов

Для ввода и вывода всего массива или его части используют операторы цикла, как правило, оператор for.

Пример 7.8

var

z : array [10..100] of integer;

k : integer;

begin

for k := 10 to 100 do read (z [ k ]);

for k := 21 to 30 do write (z [ k ]);

В приведенном фрагменте программы вводятся все элементы мас­сива z целого типа, а выводятся 10 его элементов - с 21-го по 30-й.

________________________________________________________

Отдельные элементы массивов вводятся так же, как и простые переменные.

7.4.3. Организация циклов с использованием массивов

Задачи такого рода являются весьма распространёнными в вы­числительной практике и программировать их можно с использованием любого из трёх описанных выше операторов цикла. Но наилучшим для этой цели часто является оператор for. Однако, каким бы оператором мы ни пользовались, всегда нужно иметь в виду следующее.

1. Существуют два варианта выхода из цикла, не противореча­щих логике циклического вычислительного процесса. Выход может быть осуществлён либо после достижения параметром цикла своего предельного значения, либо до этого момента, если такая необходи­мость диктуется условием задачи.

Пример 7.9

Дан массив c(20), содержащий положительные и отрицатель­ные элементы. Вывести порядковый номер первого отрицательного элемента массива.

program example79;

var

c : array [1..20]of real;

n : integer;

begin

write ('введите массив - ');

for n:=1 to 20 do read ( c [ n ]); readln;

n:=1;

{поиск первого отрицательного элемента}

while (n <= 20) and (c [ n ] > 0) do n := n + 1;

if n <= 20 then {печать номера первого отри-}

write ('n=' ,n) {цательного элемента массива}

else write ('отрицательных элементов нет');

end.

Цикл выполняется пока встречаются положительные элементы и индекс элемента на вышел за верхнюю границу массива. Поскольку выход из цикла произойдет после нарушения одного из этих условий, то в операторе if стоит проверка по какому из них был завершен цикл.

2. Вход в тело цикла извне, минуя оператор цикла, запрещён.

Ниже приведены примеры организации циклических вычислитель­ных процессов с помощью оператора for.

Пример 7.10

Дан вектор a(50). Вычислить сумму его элементов. Алгоритм задачи приведён в первой главе (см. пример 1.14).

program example710;

var

i: integer;

s: real;

a : array [1..50] of real;

begin

write ('введите массив -');

for i:=1 to 50 do read(a[i]);

s:=0; {oбнуление ячейки s, предназна­ченной

для накопления суммы}

for i:=1 to 50 do s := s + a [ i ];

{накопление суммы элементов массива}

writeln ('s=', s:10:3)

end.

Пример 7.11

Дан целочисленный вектор b(100). Найти наибольший элемент этого вектора. Алгоритм задачи приведён в первой главе (см. пример 1.15).

program example711;

var max : real;

i : integer;

b : array [1..100] of real;

begin

write ('введите массив - ');

for i:=1 to 100 do read (b [ i ]); readln;

max:=b [1]; {присваивание временному максимуму

max его начального значения }

{поиск элемента вектора с наибольшим значением}

for i:=2 to 100 do

if b [ i ] > max then max := b [ i ];

writeln ('max=', max:10:3)

end.

В примерах 7.10 и 7.11 параметр цикла i выполняет роль счет­чика числа повторений тела цикла и индекса элемента массива.

Пример 7.12

Вычислить произведение первых n чисел натурального ряда (произведе­ние это носит название факториала и обозначается n!).

Схема алгоритма

program example712;

var nf, n, k : integer;

begin

write ('введите n - '); readln ( n );

nf:=1; {присваивание факториалу его

начального значения}

{вычисление значения факториала}

for k:=1 to n do nf := nf * k;

write ('n!=', nf:10:0)

end.

В программе параметр цикла k служит не только счётчиком пов­торений тела цикла, но и непосредственно участвует в вычислении факториала в качестве простой переменной, которая последовательно принимает значения чисел натурального ряда 1, 2, 3 и т.д.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]