Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгор_ТХТК_пособие.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.6 Mб
Скачать

I : Integrer; {номер числа }

Begin

For I := 1 To D Do

Begin

Readln(Num);

C1:=Num Mod D;

Num:=Num Div D;

C2:=Num Mod D;

C3:=Num Div D;

Writeln(C1:2,C2:2,C3:2)

End;

End.

Пример 4.5 Определение номера буквы в латинском алфавите.

Program Lett;

Var

Bukva, ch:char;

K:integer;

Begin

Write(‘введите букву: ’);

Read(bukva);

K:=0;

For ch:=’A’ to bukva do

K:=k+1;

Writeln(‘буква ’,bukva, ‘ имеет номер ’,k,’ в латинском алфавите’);

End.

Пример 4.6 Вычислить значение логической функции для двух значений а: истина и ложь.

Program BOOL;

Var

F,a:Boolean;

Z,y: integer;

Begin

Write(‘Z= ‘);

Read(z);

Write(‘Y= ‘);

Read(y);

Writeln(‘Z= ‘,z,’Y= ‘, y);

For a:= true downto false do

Begin

F:=not a and (y>0) or (y>z);

Writeln(‘A=’,a,’F=’,f)

End

End.

4.3.2 Оператор цикла с постусловием

Часто встречаются задачи, когда число повторений в цикле неизвестно, а задано некоторое условие его продолжения или окончания.

Для программирования таких алгоритмов в Паскале существуют два типа операторов – оператор с предусловием и оператор с постусловием.

Оператор цикла с постусловием это оператор Repeat (ПОВТОРЯТЬ), который в общем виде записывается так:

Repeat

Операторы

Until условие;

Схема его работы представлена на рис. 4.5.

В теле цикла записывается один или несколько операторов, которые будут выполняться многократно. Они располагаются между служебными словами Repeat и Until, поэтому обрамлять их словами Begin и End не нужно. После слова Until записывается условие выхода из цикла (по значению параметра).

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

Пример 4.7 Изобразить степени двойки, не превышающие 10000.

Program Two;

Var

Num: Integer;

Begin

Num:=2;

Repeat

Writeln (Num);

Num:=Num*2;

Until Num>1000;

End.

Пример 4.8 Определить является ли число простым.

Program Prim;

Var

I,n: integer;

Begin

Writeln(‘ввидите число’);

Read(n);

Write(n,’-‘);

I:=1;

Repiat

I:=i+1;

Until n nod i=0;

If i=n then writeln(‘простое число!’)

Else writeln(‘делится на ’,i);

End.

4.3.3 Оператор цикла с предусловием

О н отличается от оператора Repeat тем, что условие выполнения цикла проверяется до начала. Цикл выполняется, если оно истинно. Оператор с пред-условием начинается служебным словом While. Общая форма его записи:

While условие do

Оператор1;

Схема работы оператора приведена на рис. 4.6.

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

Begin

операторы

End;

В отличие от Repeat цикл While может не выполняться ни разу.

Пример 4.9 Вычисление множителей последовательности целых чисел

Program Dividers;

Const

d=2;

Var

Num, Del,P : Integer;

Begin

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

Readln(Num);

While Num <>0 Do

Begin

P := 0; { число простое }

For Del := d To Num Div d Do

Begin

If Num Mod Del=0 Then

Begin

Write(Del);

P := 1; { число не простое }

End;

End;

If P=0 Then{ п.2.3 }

Writeln('Число ',Num,' - простое');

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

Read(Num);

End;

End.

Пример 4.10 Нахождение делителей целого положительного числа (кроме 1 и самого числа). Х- исходное число, half – половина введенного числа, divider – делитель, I – счетчик.

Program Divid;

Var

Divider, half, I, x: integer;

Begin

Repeat

Write(‘введите положительное число’);

Read(x);

If x<=0 then writeln (‘неправильный ввод’)

Until x>0;

Half:=x div 2;

While Divider <=half do

Begin

If x mod divider=0 then

Begin

I:=i+1;

Writeln(I,’ – й делитель равен’,divider)

End;

Divider:=divider +1;

End;

If i=0 then writeln (‘делителей нет’);

Writeln(‘конец решения’);

End.