Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа №3 ТКС-12б (циклы).doc
Скачиваний:
7
Добавлен:
14.11.2019
Размер:
458.24 Кб
Скачать

Лабораторная работа №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.