Программирование на языке Turbo Pascal

Цикл


Цикл – команда исполнителю повторить многократно указанную последовательность команд алгоритмического языка или, другими словами, многократно повторяющаяся часть программы.

Существует три разновидности  оператора цикла.

2.      Оператор цикла с параметром.

Используется, когда известно, сколько раз выполняется циклическая часть программы.

for <параметр цикла>:=<начало> to/downto <конец> do <оператор>;

                     для                                                       до                         делать

параметр цикла - числовая переменная типа integer

начало, конец - арифметическое выражение

to - используется когда начало меньше конца

downto - используется когда начало больше конца

оператор - тело цикла, любой оператор, в том числе и составной

Принцип работы:

§         Параметру присваивается значение начало



§         Выполняется оператор - тело цикла.

§         Затем параметр сравнивается с концом.

§         Если параметр больше/меньше конца, то начинает работать следующий оператор за оператором цикла, в противном случае к параметру прибавляется/отнимается единица.

§         Снова выполняется оператор.

§         Так продолжается пока параметр не станет больше/меньше конца.

3.      Цикл с предварительным условием

while <условие> do <оператор>;

                                                              пока                         делать

условие

- логическое выражение

оператор

- любой оператор, в том числе и составной.

Принцип работы:

§         Проверяется истинность условия

§         Если условие истинно выполняется оператор


§         Цикл работает, пока условие не станет ложным.
4.      Цикл с последующим условием
repeat <операторы> until <условие>
                                                   повторять                           до тех пор пока
условие
- логическое выражение
операторы
- любое количество любых операторов, в том числе и составной.
Принцип работы:
§         Выполняются все операторы между repeat и until
§         Проверяется ложность условия
§         Цикл работает, пока условие не станет истинным.
5.      Особенности и отличия операторов цикла
-        Вход в цикл возможен только через его начало
-        Переменные оператора должны быть определены до входа в цикл
-        Необходимо предусмотреть выход из цикла, чтобы он не повторялся бесконечно.
-        Оператор while repeat может ни разу не выполнится
-        оператор repeat обязательно выполниться хотя бы раз
6.      Примеры программ

Проверить, является ли целое число простым.
Uses crt;
Var n{введенное число},i:integer;
Begin
Readln(n);
For i:=2 to n-1 do
If n mod i =0 then begin writeln(n,’не простое’);readkey; halt;end;
writeln (n, ‘простое’);
readkey;
end.
Написать программу, которая выводит на экран табл. умножения, например на 7.
Uses crt;
Var m,n,p:integer;
Begin 
For i:=1 to 10 do 
Writeln(7,’*’,I:2,’=’,7*I:2);
Readkey; end.
Написать программу, которая выводит табличные значения функции у=|x|+2. Диапазон изменения аргумента  от – 4 до 4, приращение аргумента  - 0.5
uses crt;
var x,y:real;
begin;
clrscr;
writeln('y':20,' : ','x':5);
writeln('               --------------');
x:=-4;
repeat
y:=abs(x)+2;
writeln(y:20:1,' : ',x:5:1);
x:=x+0.5;
until x>4;
 readkey;
 end.
Написать программу, которая определяет максимальное число из введенной последовательности положительных чисел. Завершение ввода – 0.
Uses crt;
Var a{очередное число}, m{макс.число}:integer;
Begin M:=0;
Repeat
Writeln(‘введи число’);Readln(a);
  If a>m then m:=a;
Until a=0;
Writeln(‘max=’,m);
Readkey; end.
Имеются или не имеются среди чисел cos(i3)sin(in), i=1,…,n, числа меньше 0,0001. Если имеются, то выводить «есть», если нет – «нет»
 uses crt;
 label 1;
 var i,n:integer;
begin    clrscr;
 writeln ('Введите n'); readln (n);
 for i:=1 to n do
   if cos(i*i*i)*sin(i*n)<0.0001 then begin
        writeln ('есть');goto 1;    end;
 writeln ('нет');
1:readkey;end.
Написать программу, которая позволяет найти наибольший общий делитель двух целых чисел
program nod;
 uses crt;
 var n1,n2,nod: integer;
begin  clrscr;
 writeln ('Введите два целых числа');
 readln (n1,n2);
 while n1<>n2 do 
  if n1>n2 then n1:=n1-n2 else n2:=n2-n1;
nod:=n1;
writeln 'Наибольший общий делитель -',nod);
readkey;end.
Написать программу, которая позволяет найти наименьшее общее кратное двух целых чисел
program nok1;
   uses crt;
   var nok,n1,n2:byte;i:word;
begin
  clrscr;
writeln('введите два числа');  readln(n1,n2);
  nok:=1;
    for i:=n1*n2 downto 2 do
    if (n1 mod i=0) and (n2 mod i=0) then nok:=i;
write('NOK -',nok);
readkey;end.
<


7.      По тексту готовой программы составить условие задачи:

1)   program pt1;
uses crt;
var a,i,j:integer;
begin
clrscr;
randomize;
for i:=1 to 15 do
begin
a:=trunc((random(7))*5)-10;
write(a:4);
end;
     readln;
     end.
2)   program pt1;
uses crt;
var a,i,j:integer;
begin
clrscr;
randomize;
for j:=1 to 10 do
begin
a:=trunc((random(9))*5)-20;
write(a:4);
end;
     readln;
     end.
3)   program pt1;
uses crt;
var a,i,j:integer;
begin
clrscr;
randomize;
for i:=1 to 15 do
begin
a:=trunc((random(11))*5)-20;
write(a:4);
end;
     readln;
     end._
4)   program pt1;
uses crt;
var a,i,j:integer;
begin
clrscr;
randomize;
for i:=1 to 4 do
begin
for j:=1 to 5 do
begin
a:=trunc((random(7))*5)-10;
write(a:4);
end;
writeln;
end;
     readln;
     end._
5)   program pt1;
uses crt;
var a,i,j:integer;
begin
clrscr; randomize;
for i:=1 to 5 do begin
for j:=1 to 5 do begin
a:=trunc((random(9))*5)-20; write(a:4);
                 end;
   writeln;
                 end;
     readln;  end.

8.      Ответить на вопросы
-        Сколько раз будут выполнены инструкции между  Begin  и End?
 For i:=j to j+1 do
Begin

end;
-        Чему будет равен x после выполнения инструкций?
X:=0;
For i:= -5 to 0 do
N:=i*i;
X:=X+N;
-        Что будет выведено на экран в результате выполнения инструкций?
N:=5;
X:=0;
For i:=1 to N do X:=i;
Writeln(X);
-        Сколько звездочек будет выведено на экран в результате выполнения инструкций?
For i:=1 to 5 do
            For j:=1 to 5 write (‘*’);

Содержание раздела