Задания для самостоятельной работы.
Лабораторная работа № 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. Могут ли внешний цикл и внутренний цикл быть циклами разных видов?