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

Операторы ограничения и прерывания цикла

Данные операторы применяются внутри операторов цикла с параметром или условием. Операторы имеют вид:

Continue; - ограничение цикла,

Break; - прерывание цикла.

Операторы Continue и Break позволяют производить действия не для всех операторов внутри цикла. Действие оператора Continue заключается в передаче управления на начало цикла, при этом контролируется условие выхода из цикла. Действие оператора Break заключается в передаче управления оператору, следующему за последним оператором цикла, при этом не контролируется условие выхода из цикла. Во вложенных циклах операторы Continue и Break действуют только на цикл в котором они записаны. Приведем пример использования операторов для блокировки несанкционированного доступа в программу.

For i := 1 to 3 do

begin

Write( 'Введите ПАРОЛЬ:' ); Readln(S); {S и Parol - переменные одного типа}

If S = Parol Then Break { прерывание цикла }

else If i <> 3 Then Continue; { ограничение цикла }

Writeln( 'Доступ к программе ЗАПРЕЩЕН' );

Writeln( 'Нажмите Enter' );

Readln;

Halt { прерывание программы }

end; { продолжение программы }

Массивы

Массив - упорядоченные данные одного типа. Возможно создание массива, вклю-чающего массив другого типа. Массивом часто обозначают характеристики обьектов одного типа, имеющих одинаковые единицы измерения. Массив состоит из элементов, имеющих порядковые номера, т. е. элементы массива упорядоченны. Таким образом, если обьекты одного типа обозначить именем, например "A", то элементы обьекта будут A[1], A[2] и т. д. В квадратных скобках указан номер элемента. Порядковый номер элемента массива, обычно не несет никакой информации о значении элемента, а показывает расположение элемента среди других. К элементам массива можно обращаться только по их номеру (индексу). Значения элементам массива присваиваются также как и другим переменным с учетом типа массива. Если элементы массива имеют один индекс, то массив называется одномерным или линейным, либо массив - вектор. Значения элементов одномерного массива обычно выводят на экран или бумагу в виде столбца или строки. В некоторых случаях удобно элементы массива пронумеровывать двумя независимыми индексами, такие массивы называются двумерными или матрицами. Значения элементов двумерного массива обычно выводят на экран в виде таблицы. Если элементы массива имеют три независимых индекса, то массив называется трехмерным. Значения элементов трехмерного массива обычно выводят на экран в виде набора таблиц.

Линейные массивы

Линейным массивом можно обозначить, например, оценки учеников класса. Каждая оценка является значением элемента массива оценок "A" и имеет порядковый номер (индекс). В Турбо-Паскале значение индекса указывается в квадратных скобках после имени массива. Можно создать массив фамилий "S" учеников класса. Значением элемента массива будет фамилия ученика, а индексом - порядковый номер по списку. Пусть дан список фамилий учеников и их оценки:

Фамилии

Оценки

1

Иванов

5

2

Петров

4

3

Сидоров

5

4

Титов

5

...

...

...

30

Якупов

4

Описание массивов:

Var A : array[1..30] of byte;

S : array[1..30] of string; {или}

SO: array[1..30] of string[12];

Присвоение значений элементам массива:

"A" - A[1]:= 5; A[2]:= 4; и т. д.

"S " - S[1]:= 'Иванов'; S[2]:= 'Петров'; и т. д.

Приведем таблицу обозначений и соответствия элементам массива, их значений и индексов:

Номер элемента индекса

1

2

3

4

1

30

Элементы массива "S"

S[ 1 ]

S[ 2 ]

S[ 3 ]

S[ 4 ]

S[ i ]

S[ 30 ]

Значения элементов

Иванов

Петров

Сидоров

Титов

...

Якупов

Элементы массива "A"

A[ 1 ]

A[ 2 ]

A[ 3 ]

A[ 4 ]

A[ i ]

A[ 30 ]

Значения элементов

5

4

5

5

...

4

Если известна зависимость, по которой изменяются значения элементов массива, то присвоение значений удобно проводить в операторах цикла c параметром или с условием. Например, присвоим значения элементам массива "y" по зависимости: y=sin(x), где x= Pi * i/180, 0<= i <=180.

For i:= 0 to 180 Do y[i]:= sin(Pi * i/180);

Присвоим случайные значения в диапазоне от -30 до +40 ста элементам массива "R":

Randomize;

for i:= 1 to 100 Do R[i]:= - 30 + Random(71);

Присвоим значения семи элементам массива "A" оператором Readln:

For i:= 1 to 7 Do

begin

Write('Введите A[',i,']= ');

Readln(A[i]);

end;

При выводе массива на экран удобно размещать данные в виде таблицы - в несколько колонок. Для вывода обозначений переменных ("шапки таблицы") можно использовать операторы вывода символов в цикле, например:

For j:=1 to 66 do Write('-'); Writeln;

For j:=1 to 3 do Write('| Фамилия | оценка |'); Writeln;

For j:=1 to 66 do Write('-'); Writeln;

- шапка для вывода в три пары колонок значений переменных "S" и "A". Шапка занимает 66 позиций (по ширине экрана в текстовом режиме размещается 79 символов и пробел). Оператор Writeln; переводит курсор на новую строчку.

Вывод значений ста элементов массивов "S" и "A" в три пары колонок, произведем операторами:

For i:= 1 to 100 do

begin

Write('|', s[i]:11,'|', a[i]:8, '|');

if (i mod 3) = 0 Then Writeln;

if (i mod 60) = 0 then Readln;

end;

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

В цикле удобно определять сумму элементов массива, наибольший (наименьший) элемент и создавать новые массивы, удовлетворяющие некоторому условию, например:

s := 0;

for i := 1 to 100 do s:= s + a[i]; { s - сумма элементов массива}

a_max := a[1];

for i:= 1 to 100 do { поиск наибольшего элемента a[j] }

if a[i] > a_max then begin a_max:= a[i]; j:= i; end;

j := 0; k := 0;

for i:=1 to 100 do {создание новых массивов с элементами: b[j]>=0, c[k]<0}

if a[i] >= 0 then

begin

j := j+1;

b[j] := a[i];

end

else

begin

k := k+1;

c[k] := a[i]

end;

j := 0;

k := 8;

for i:= 1 to 100 do {создание массива номеров "M" для элементов: a[i] > a[k]}

if a[i] > a[k] then

begin

j := j+1;

M[j] := i;

end;