Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции информатика.doc
Скачиваний:
59
Добавлен:
11.04.2015
Размер:
2.47 Mб
Скачать

3.8 Вложенные циклы

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

Примеры вложенного цикла For:

1. var a,b:integer;

begin

for i:= 1 to 2 do

for j:= 1 to 3 do

writeln(i, ‘ ’, j); {выполнится 6 раз}

end.

На экране увидим:

1 1

1 2

1 3

2 1

2 2

2 3

2. var a,b:integer;

begin

for i:= 1 to 2 do

begin

for j:= 1 to 3 do writeln(i, ‘ ’, j); {выполнится 6 раз}

writeln(‘******’);

end;

end.

На экране увидим:

1 1

1 2

1 3

******

2 1

2 2

2 3

Правило выполнения:

на каждом шаге внешнего цикла полностью выполняются все шаги внутреннего цикла.

Пример 1: Программа вычисления и вывода на экран таблицы умножения (Пифагора).

var i,j: integer;

begin

for i:=1 to 9 do

begin

for j:=1 to 9 do

write(i*j:4);

writeln;

end;

end.

Пример 2: Программа вычисления значений функции f(x,y)=sin(x)*cos(y), где х=0..π с шагом π/5 и у=0..1 с шагом 0,1.

var x,y,f: real;

begin

x:=0;

repeat

y:=0;

while y<=1 do

begin

f:=sin(x)*cos(y);

write(f:6:3);

y:=y+0,1;

end;

x:=x+pi/5;

writeln;

until x>pi;

end.

3.9 Оператор перехода goto

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

Структура оператора:

GOTO <метка>;

< метка >: <оператор>;

Метка – это число от 0 до 9999, или идентификатор. Метки, используемые в программе, должны быть описаны:

LABEL 1, 2, Met;

Нельзя использовать оператор GOTO для перехода в подпрограммы, а также внутрь операторов цикла, условного и составного операторов.

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

Пример: Частное от деления целых чисел.

Label M1;

var x,y,res: integer;

begin

write(‘Введите x,y’);

readln(x,y);

if y=0 then

begin

writeln(‘Деление на ноль!’);

goto M1;

end;

res:=x div y;

writeln(‘Частное = ’, res);

M1: writeln(‘Конец программы’);

end.

Задачи для самоконтроля

3.1 Определить, какие значения x, y, z будут напечатаны после выполнения программы.

var x,y,z: real;

begin

x:=-2; y:=3; z:=3.5;

z:=x-2.5;

y:=x-y+2*z;

x:=x+y-2*z;

x:=y-2*x;

y:=x+2*y+z;

z:=(x+y)*2;

writeln(‘x=’,x,’ y=’,y,’ z=’,z);

end.

3.2

а) Определить значение переменной x после работы следующего фрагмента программы:

a = 8; b = 3 * a – 4; x = 0; y = 2 * b;

if ( 2 * a > b ) or (4 * a < y ) then begin x = 7; y = –15 end;

if ( x > 0 ) and ( 2 * a + b < y ) then begin x = 5; y = –7 end;

б) Определить значение переменной x после работы следующего фрагмента программы:

a = –3; b = –4 * a –2; x = 1; y = b/2 – 1;

if ( 5 * a > b ) or ( y > a ) then begin x = x + 2; y = x – 3 end;

if ( 2 * a + 8 > y ) and ( y < x ) then begin x = y + 5; y = 6 end;

3.3 Определить значение переменной x после работы следующих фрагментов программы:

а) x:=5;

for i:=2 to 4 do x:= x – 2;

б) x:=4; y:=2;

While y<= 4 do begin

x:=x - 2;

y:=y+1;

end;

в) x:=4; y:=2;

Repeat

x:=x - 2;

y:=y+1;

until y>=4 ;