Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Паскаль_Конспект лекций.doc
Скачиваний:
41
Добавлен:
27.05.2015
Размер:
1.39 Mб
Скачать

7.4 Дополнительные операторы при программировании циклов

7.4.1 Досрочный выход из цикла - break

Иногда необходимо бывает проводить проверку на возможный выход из цикла где-нибудь в его середине, а не в начале или конце. Такой выход из цикла обеспечивается процедурой break, которая прерывает выполнение самого внутреннего вложенного цикла, будь то for, while или repeat.

Пример. Повторим задачу из предыдущего пункта: вычислить выражениес точностьюe.

program p7_9;

var

S, е, х: real;

i: integer;

begin

Writeln('Введите точность');

Readln(e);

S := 0;

For i :=1 to 1000 do begin

x:= l/(i*i*i) ;

S:= S + x;

{ если точность вычисления суммы достигнута, то выход из цикла }

If x < e then break;

end;

Writeln(Summa = ' , S:10:8) ;

end.

7.4.2 Переход к следующей итерации цикла - continue

Не редко полезной может оказаться процедура continue, которая прерывает выполнение самого внутреннего цикла for, while или repeat и передаёт управление на его заголовок, так что начинается выполнение очередной итерации цикла.

Пример:

……………………

while abs(p) > e do

begin

………………….

for i : = 1 to m do

begin

…………………………

if y <= 0 then continue;

…………………………

p: = p+y;

end;

if p > 1 then break;

……………………………

s: = s+p;

end;

………………………

В этом примере во внутреннем цикле пропускаются итерации в случае отрицательных или равных нулю величин y, а во внешнем – цикл прервется, если величина p превысит 1.

Лекция 8. Массивы

Массивом называют последовательность однотипных данных, имеющих один идентификатор - имя и различающихся по номерам (индексам) в этой последовательности.

Чтобы описать массив необходимо указать имя массива, тип его элементов, количество индексов (размерность массива), диапазоны изменения индексов.

8.1 Одномерные массивы

Описание одномерных массивов имеет вид

<список идентификаторов>: array [< диапазон изменения

индекса>] of <тип элементов массива>;

<диапазон изменения индекса> - это поддиапазон любого перечислимого типа. Например:

1 ..85, январь ..декабрь, ‘A’ .. ‘Zи т.п.

Типом элементов массива может быть любой простой тип. Кроме того, элементами массива могут быть другие массивы. Массивы описывают, как и остальные переменные в разделе Var.

Примеры:

A: array[l ..10] of integer; { массив с одним индексом,

который меняется от 1 до 10,

элементы массива целые числа }

В: array['А' . . ' Z ' ] of Real; { массив с одним индексом,

который меняется от 'А' до 'Z' ,

элементы массива - вещественные числа}

С: array[10 .. 20] of Char; { массив с одним индексом,

который меняется от 10 до 20,

элементы массива – символы }

Если два массива А и В однотипные, то допускаются следующие операторы присваивания:

А := В; или В := А;

Необходимо отметить, что элементы массивов имеют те же свойства, что и обычные переменные соответствующих типов. Доступ к элементу массива в программе выполняется путём указания идентификатора массива, а затем в квадратных скобках его номера (индекса).

Пример:

A[1]: = 7;

A[2]: = A[6];

A[6]:=SQRT(f);

На месте индекса элемента массива может стоять идентификатор переменной. В этом случае во время выполнения программы будет осуществлена подстановка – значение этой переменной.

Примеры:

1)

i:=7;

A[i] := 23; {это равносильно оператору А[7] : = 23; }

2)

for j:= 1 to 10 do A[j]:= j*j;

В последнем примере в цикле выполняется присвоение элементам массива конкретных значений. Изменение счётчика цикла в каждой итерации позволяет перебрать все элементы массива.

Одномерный массив длины N можно представить как вектор c элементами (А1, А2,..., АN). Если необходимо ввести значения элементов массива с клавиатуры, то для этого проще всего использовать цикл:

for i := 1 to n do read (A[i]) ;

или с выводом сообщения:

for i:= 1 to n do

begin

Write('введите А[' , i , ']: ');

Readln(A[i] ) ;

end;

Подобным образом можно организовать вывод элементов массива на экран. Например, в строку без комментариев:

for i := 1 to n do Write(А[i] : 4, ' ');

или в столбец и с комментариями:

for i := 1 to n do Writeln('А[' , i , ']= ' , A[i]);

Кроме операций ввода и вывода, любые другие операции с элементами массива осуществляются в цикле, и лучше всего для этих целей подходит цикл типа for … do.

Часто размер массива приходится несколько раз изменять во время отладки программы. Изменение диапазона в описании массива влечёт за собой изменение параметров цикла и возможно других переменных. Можно облегчить подобные преобразования, если при указании диапазона изменения индексов использовать константы.

Задача. Ввести массив с клавиатуры, найти максимальный и минимальный элементы.

program p8_1;

const n = 10; { Константа n задаёт максимальное количество

элементов в массиве А}

var

A: array[1..n] of real;

i: integer;

max, min : real;

begin

{ ввод элементов массива }

Writeln(' Введите ' , n, ' элементов массива:');

for i := 1 to n do Read (A [i] );

readln;

{ Начальные установки }

max := А [ 1] ;

min := A [ 1] ;

{поиск максимума и минимума}

for i:= 2 to n do

if A[i] > max then max:= A[i]

else

if A[i] < min then min:= A[i];

{ вывод максимума и минимума}

Writeln('max= ', max, ' min= ' , min);

end.

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