Циклы в Delphi
Вариант 2
Цели лабораторной работы. Продолжение знакомства с интерфейсом среды Delphi. Изучение операторов повторений. Составление программ на организацию циклических вычислительных процессов. Отработка первоначальных навыков отладки и выполнения программ.
& Теоретический материал.
Оператор цикла с предусловием While.
Формат:
While <условие(выражение булевского типа)> Do <оператор>.
Если выражение <условие> имеет значение True(истина), то выполняется оператор, после чего вычисление <условия> и его проверка повторяются. Если <условие> имеет значение False(ложь), оператор While завершает работу.
Оператор цикла с постусловием Repeat…Until.
Формат:
Repeat
<тело цикла>
Until <условие>.
Операторы <тело цикла> выполняются хотя бы один раз, после чего находится значение <условия>, если это значение False, операторы <тело цикла> повторяются, в противном случае оператор Repeat…Until завершает работу.
Оператор цикла с параметром (со счетчиком) For.
|
|
Формат:
For <параметр цикла>:=<начальное значение> To <конечное значение> Do <оператор>
или
For <параметр цикла>:=<начальное значение> Downt o <конечное значение> Do <оператор>.
В первом случае шаг изменения параметра цикла (+1), во втором – (-1).
: Примеры.
program Lab_4_1; {Программа позволяет вводить с клавиатуры целые числа и находить их сумму, пока не будет введено число 0}
{$APPTYPE CONSOLE}
uses
SysUtils, windows, DateUtils;
var value,summa: integer;
Begin
Setconsoleoutputcp(1251);
Setconsolecp(1251);
summa:=0;
Repeat
Writeln('Введите число');
Readln(value);
summa:=summa+value
Until value=0;
Writeln(‘Сумма равна: ',summa);
readln
End.
program Lab_4_2; {нахождение простых чисел, не превосходящих данного числа n}
{$APPTYPE CONSOLE}
uses
SysUtils, windows;
const n=1000;
var i,j:integer;
flag: boolean;
Begin
Setconsoleoutputcp(1251);
Setconsolecp(1251);
For i:=2 to n do {Рассматриваются все натуральные числа от 2 до n.}
begin
flag:=true; j:=2;
While (j<sqrt(i)+1) and flag do
Begin
If (i mod j)=0 then flag:=false; {Переменная flag принимает значение false, если число i имеет хотя бы один делитель отличный от 1 и самого себя}
j:=j+1 {Переход к проверке делимости на очередное натуральное число}
End;
If flag=true then write(i:6); {Если число не имеет делителей кроме 1 и самого себя то оно выводится на экран}
end;
readln
End.
program Lab_4_3; {Программа нахождения факториала n!=1*2*3*...*n}
{$APPTYPE CONSOLE}
uses
SysUtils, windows;
Var n,i,fact: integer;
Begin
Setconsoleoutputcp(1251);
Setconsolecp(1251);
fact:=1;
Write('Введите натуральное число ');
Readln(n);
For i:=2 To n Do fact:=fact*i; {Определение произведения всех натуральных чисел 1 до n}
Writeln(n,'!=',fact);
readln
End.
program Lab_4_4; {Алгоритм Евклида нахождения наибольшего общего делителя двух чисел}
{$APPTYPE CONSOLE}
uses
SysUtils, windows;
VAR m,n: integer;
Begin {начало раздела операторов}
Setconsoleoutputcp(1251);
Setconsolecp(1251);
|
|
Writeln('Введите два натуральных числа через пробел');
Readln(m,n);
While m<>n do {Пока числа различны большее число заменяется на разность большего и меньшего}
If m>n Then
m:=m-n
Else
n:=n-m;
Writeln(‘НОД=’,m);
readln
End.