- •Лабораторная работа №3
- •1. Теоретическая часть
- •1.1. Циклические алгоритмы.
- •1. Цикл со счетчиком.
- •1.2 Операторы цикла в языке программирования Pascal.
- •1.3 Пример составления алгоритма и программы на языке Pascal для циклического вычислительного процесса.
- •2. Практическая часть
- •2.1 Требования к выполнению работы:
- •2.2 Варианты индивидуальных заданий.
- •2.3 Контрольные вопросы и практические задания:
Лабораторная работа №3
“Программирование циклических вычислительных процессов”
Цель работы: освоение методов составления алгоритмов циклических вычислительных процессов и организации циклических программ сложной структуры.
1. Теоретическая часть
1.1. Циклические алгоритмы.
Цикл – это последовательность действий, которая может выполняться более одного раза.
Циклический алгоритм – это алгоритм, содержащий один или несколько циклов.
Имеется 3 вида циклов:
цикл с предусловием;
цикл с постусловием;
цикл со счетчиком (счетный цикл).
Если выполнение цикла связано с каким-либо логическим условием, то используются циклы с предусловием или с постусловием.
Циклы со счетчиком представляют такой класс, в котором выполнение тела цикла должно повторяться заранее определенное число раз.
Блок-схемы циклических алгоритмов выглядят следующим образом:
1. Цикл со счетчиком.
2. Цикл с предусловием. 3. Цикл с постусловием.
1.2 Операторы цикла в языке программирования Pascal.
В Pascal для каждого вида цикла имеется соответствующий оператор:
цикл типа while (с предусловием);
цикл типа repeat…until (с постусловием);
цикл типа for (счетный).
1.Оператор цикла типа while
Форма записи:
while <условие> do оператор;
где: <условие> – логическое выражение;
оператор – выполняемый в цикле оператор или тело цикла.
Если тело цикла представляет собой некоторую последовательность действий (составной оператор), то их надо заключить в операторные скобки begin... end:
while <условие> do
begin
группа операторов
end;
Схема работы такого цикла: пока условие является истинным (true), выполняется тело цикла и снова проверяется условие и т.д. Когда условие станет ложным (false) цикл завершает работу.
2. Оператор цикла типа repeat…until
Форма записи:
repeat
оператор;
until <условие>;
Схема работы такого цикла: сначала выполняется оператор, потом проверяется условие, если условие является ложным, выполняется оператор и снова проверяется условие и т.д. Когда условие станет истинным, цикл завершает работу.
3. Оператор цикла типа for
Форма записи:
for i:=A to B do оператор;
for i:=A downto B do оператор;
Здесь переменная i - переменная цикла, или счетчик;
А - начальное значение переменной цикла;
В - конечное значение переменной цикла.
При переходе к обработке оператора цикла for переменной цикла присваивается заданное начальное значение. Затем в цикле выполняется оператор (простой или составной). Если тело цикла представляет собой составной оператор, то его надо заключить в операторные скобки begin... end. Каждый раз при выполнении тела цикла переменная цикла увеличивается на 1 (для for...to) или уменьшается на 1 (для for...downto). Цикл завершается при достижении переменной цикла своего конечного значения.
1.3 Пример составления алгоритма и программы на языке Pascal для циклического вычислительного процесса.
Задание:
Вычислить значение выражения:
b – исходная величина, ее значение вводятся с клавиатуры и не изменяется;
a – изменяется в диапазоне [0;10] с шагом 1;
y – результат, его значения выводятся на экран.
Решение.
Исходя из условия задания переменная a является целочисленной, поэтому может быть использована в качестве счетчика в счетном цикле.
1.3.1 Блок-схема алгоритма решения данной задачи с использованием счетного цикла выглядит следующим образом:
Текст программы на языке Pascal, соответствующей данному алгоритму, выглядит следующим образом:
program lab3_1;
uses crt;
var a:integer;
b,y:real;
Begin
clrscr;
writeln('Введите b: ');
read(b);
writeln(' a y');
for a:=0 to 10 do
begin
write(a:3);
if a>b then begin
y:=1.2*a+3*b;
writeln(y:8:2);
end
else begin
if a>0 then begin
y:=(a-b)/sqrt(a);
writeln(y:8:2);
end
else writeln('y не существует');
end;
end;
readkey;
End.
1.3.2 Блок-схема алгоритма решения данной задачи с использованием цикла с предусловием выглядит следующим образом:
Текст программы на языке Pascal, соответствующей данному алгоритму, выглядит следующим образом:
program lab3_2;
uses crt;
var a:integer;
b,y:real;
Begin
clrscr;
writeln('Введите b: ');
read(b);
writeln(' a y');
a:=0;
while a<=10 do
begin
write(a:3);
if a>b then begin
y:=1.2*a+3*b;
writeln(y:8:2);
end
else begin
if a>0 then begin
y:=(a-b)/sqrt(a);
writeln(y:8:2);
end
else writeln('y не существует');
end;
a:=a+1;
end;
readkey;
End.
1.3.3 Блок-схема алгоритма решения данной задачи с использованием цикла с постусловием выглядит следующим образом:
Текст программы на языке Pascal, соответствующей данному алгоритму, выглядит следующим образом:
program lab3_3;
uses crt;
var a:integer;
b,y:real;
Begin
clrscr;
writeln('Введите b: ');
read(b);
writeln(' a y');
a:=0;
repeat
write(a:3);
if a>b then begin
y:=1.2*a+3*b;
writeln(y:8:2);
end
else begin
if a>0 then begin
y:=(a-b)/sqrt(a);
writeln(y:8:2);
end
else writeln('y не существует');
end;
a:=a+1;
until a>10;
readkey;
End.