Задания для самостоятельной работы.

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

Циклы в Delphi

Вариант 1

Цели лабораторной работы. Продолжение знакомства с интерфейсом среды Delphi. Изучение операторов повторений. Составление программ на организацию циклических вычислительных процессов. Отработка первоначальных навыков отладки и выполнения программ.

 

& Теоретический материал.

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

Формат:

While <условие(выражение булевского типа)> Do <оператор>.

Если выражение <условие> имеет значение True(истина), то выполняется оператор, после чего вычисление <условия> и его проверка повторяются. Если <условие> имеет значение False(ложь), оператор While завершает работу.

 

Оператор цикла с постусловием Repeat…Until.

Формат:

Repeat

<тело цикла>

Until <условие>.

Операторы <тело цикла> выполняются хотя бы один раз, после чего находится значение <условия>, если это значение False, операторы <тело цикла> повторяются, в противном случае оператор Repeat…Until завершает работу.

 

Оператор цикла с параметром (со счетчиком) For.

Формат:

For <параметр цикла>:=<начальное значение> To <конечное значение> Do <оператор>

или

For <параметр цикла>:=<начальное значение> Downto <конечное значение> 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.

 

Задания для самостоятельной работы.

1. Проанализируйте программы из примеров.

2. Составьте программу позволяющую вводить с клавиатуры 6 целых чисел и определяющую сколько из них положительны.

3. Составьте программы для выполнения задания 2, но с использованием других (по сравнению с заданием 2) операторов цикла.

4. Составьте программу позволяющую вводить с клавиатуры числа и определяющую их среднее геометрическое. Среднее геометрическое n чисел – корень n-й степени из произведения этих чисел. Программа прерывает работу, если введено неположительное число.

5. Числа Фибоначчи (fn) определяются формулами: f0=f1=1; fn=fn-1+fn-2 при n=2, 3, … Составить программу определения fk (k-известно).

6. Дано натуральное число n. Найти натуральное число от 1 до n с максимальной суммой делителей.

 

F Контрольные вопросы:

1. Структура консольной программы в Delphi.

2. Формат оператора присваивания.

3. Какие операции отношения используются в Паскале?

4. Какие логические операции используются в Паскале? Таблицы истинности для логических операций.

5. Что подразумевается под понятием составного оператора?

6. Условный оператор. Его структура и выполнение.

7. Оператор выбора. Его структура и выполнение.

8. Цикл с предусловием While.

9. Цикл с постусловием Repeat…Until.

10. Сколько операторов можно записать между ключевыми словами Repeat и Until?

11. Цикл с параметром (со счетчиком) For.

12. Какой тип должен иметь параметр цикла в цикле For?

13. Какой тип должны иметь начальное и конечное значения в цикле For?

14. Почему в цикле Repeat..Until тело цикла всегда будет выполняться хотя бы один раз?

15. Какое условие должно выполняться при использовании вложенных циклов?

16. Могут ли внешний цикл и внутренний цикл быть циклами разных видов?