ВУЗ:
Составители:
Рубрика:
6
ухудшает ее понимание и затрудняет отладку. С помощью оператора перехода
нельзя перейти из основной программы в подпрограмму, нельзя выйти из под-
программы. Переход внутрь структурированного оператора может привести к
неправильному результату.
Решим задачу о вычислении наибольшего общего делителя неотрицатель -
ных целых чисел а и b . В основу программы положим алгоритм Евклида реше-
ния этой задачи .
Пусть
a
b
≥
. Тогда если
b
=
0
, то НОД (
ab,
)=
a
. Если
b
<>
0
, то
справедливо равенство НОД(
ab,
)=НОД(
bc,
)=… , где с – остаток от деления а
на b.
♣ Так как c=a-bq (где q - целое), то у чисел a,b и у чисел b,c один и тот же
набор делителей . Следовательно, у чисел a,b и у чисел b,c один и тот же наи -
больший общий делитель . ♣
Когда остаток от очередного деления будет равен нулю , вычисления пре-
кращают. Последний делитель объявляется НОД(
ab,
).
program Nod;
label 1,2;
var a,b,c:integer;
begin
1:write('Введите неотрицательные целые a и b:');
readln(a,b);
{защита от ошибок при вводе}
if (a<0) or (b<0)
then begin writeln('Повторите ввод!'); goto 1 end;
{реализация алгоритма Евклида}
write('НОД(',a,',',b,')=');
2:c:=a mod b;
if c=0
then write(b)
else begin a:=b; b:=c; goto 2 end;
readln
end. {Nod}
Проверьте работу программы на ПК! Предусмотрите удобный интер-
фейс !
2.3. Операторы цикла
Программы, в основе которых лежит структура повторения, называются
циклическими.
Циклически повторяемые действия встречаются очень часто, поэтому для
этого в Паскале предусмотрено целых три структурированных оператора цик-
ла.
Формат оператора цикла с предусловием :
While Булево выражение Do Оператор;
Страницы
- « первая
- ‹ предыдущая
- …
- 4
- 5
- 6
- 7
- 8
- …
- следующая ›
- последняя »