Лабораторная работа № 4

Циклы в 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.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: