Основные стандартные процедуры и функции

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


«Применение оператора цикла с предусловием, цикла с постусловием, с параметром»

Цель работы: Научиться программировать линейные, разветвляющиеся и циклические вычислительные процессы.

Образовательные результаты, заявленные во ФГОС третьего поколения:

Студент должен

уметь:

- работать в среде программирования;

- реализовывать построенные алгоритмы в виде программ на конкретном языке программирования

знать:

- этапы решения задачи на компьютере;

- типы данных;

- базовые конструкции изучаемых языков программирования

Краткие теоретические и учебно-методические материалы по теме практической работы:

Цикл с предусловием while…do

Цикл с предусловием реализуется на языке Pascal с помощью оператора while…do. Количество повторений такого цикла заранее не определено и зависит от входных данных задачи. В данной циклической конструкции перед выполнением следующего повторения цикла проверяется значение логического выражения. Форматзаписи:

while <условие> do <оператор>;

где

while, do – служебные слова (пока [выполняется условие] делать);

<условие> – выражение логического типа (например, b <= 5);

<оператор> – произвольный оператор языка Pascal, называемый телом цикла. Оператор может быть простым, составным или структурированным.

Принцип действия оператора while…do:

1 Вычисляется значение логического выражения (проверяется условие).

2 Если результатом вычисления значения логического выражения (проверки условия) является ответ true (истина), то выполняется оператор, составляющий тело цикла и стоящий после служебного слова do. Происходит возврат к пункту 1.

3 Если результатом вычисления значения логического выражения (проверки условия) является ответ false (ложь), то оператор while…do заканчивает свою работу и управление передается на следующий оператор.

Исходя из описанного алгоритма, повторение действий 1 и 2 продолжается, пока результатом вычисления значения логического выражения (проверки условия) не станет ответ false (ложь). Вообще говоря, оператор цикла while…do может не выполниться ни разу (если значением логического выражения сразу является false).

Примечание − Тело цикла обязательно должно содержать оператор, действие которого влияет на значение логического выражения (изменяет значения входящих в него операндов). Иначе неизбежна ситуация «зацикливания» − бесконечного повторения операторов тела цикла, приводящая зачастую к зависанию среды программирования.

Цикл с постусловием repeat…until

Цикл с постусловием, в котором сначала выполняется оператор или группа операторов, а затем проверяется условие, реализуется на языке Pascal с помощью структурированного оператора repeat…until. Формат оператора:

Repeat

<операторы цикла>

until<условие>;

где

repeat, until – служебные слова (повторять до тех пор, пока не будет выполнено условие);

<операторы цикла> – повторяющаяся в цикле последовательность операторов (тело цикла). Использовать в качестве тела цикла операторные скобки begin…end нецелесообразно, т. к. роль скобок в данном случае играют зарезервированные слова repeat и until;

<условие> – выражение логического типа.

Принцип действия оператора repeat…until:

1 Выполняются операторы, расположенные между операторами repeat…until, составляющие тело цикла.

2 Вычисляется значение логического выражения, стоящего после слова until (проверяется условие). Если результатом вычисления значения логического выражения является ответ false (ложь), то операторы, составляющие тело цикла, выполняются вновь.

3 Если результатом вычисления значения логического выражения (проверки условия) является ответ true (истина), то оператор repeat…untilзаканчивает свою работу, и управление передается на следующий за ним оператор.

Как следует из описанного алгоритма, повторение действий 1 и 2 продолжается до тех пор, пока результатом вычисления логического выражения не станет ответ true (истина), т. е. пока не выполнится условие.

Примечания.

1 Тело цикла оператора repeat…until обязательно должно содержать оператор, действие которого влияет на значение логического выражения (изменяет значения входящих в него операндов). Иначе неизбежно «зацикливание».

2 Тело цикла repeat…until обязательно повторится хотя бы один раз при любом значении логического выражения.

Цикл с параметром for…to…do

Цикл с заранее известным числом повторений может быть реализован на Pascal с помощью оператора цикла с параметром for… to… do. Формат оператора:

for <параметр цикла>:=<нач_знач> to <кон_знач> do <оператор>;

где

for, to, do – служебные слова (для, до, выполнить);

<параметр цикла> – параметр цикла, в качестве которого выступает переменная типа integer (byte);

<нач_знач> – начальное значение параметра цикла: константа, переменная или выражение типа integer (byte);

<кон_знач> – конечное значение параметра цикла: константа, переменная или выражение типа integer (byte);

<оператор> – простой, составной или структурированный оператор (тело цикла).

Принцип действия оператора for…to…do:

1 Параметру цикла присваивается начальное значение, и операторы цикла выполняются в первый раз.

2 Параметр цикла увеличивается на единицу, т. е. <параметр_цикла>:= <нач_знач> + 1. Тело цикла выполняется во второй раз.

3 При каждом увеличении параметра цикла на единицу, операторы тела цикла повторяются вновь.

4 В последний раз цикл выполняется при достижении параметром цикла конечного значения, т. е. <параметр_цикла>:= <кон_знач>.

Таким образом, операторы тела цикла for…to…doвыполнятся ровно <кон_знач> − <нач_знач> + 1 раз.

Если конечное значениепараметра цикла меньше начального, то можно использовать иной формат оператора:

for <параметр цикла>:=<нач_знач> downto <кон_знач>
do <оператор>;

В этом случае шаг изменения параметра цикла равен -1.

Примечание − В некоторых версиях среды Turbo или FreePascal параметр цикла может быть использован в качестве операнда выражений и операторов, составляющих тело цикла, но не может быть изменен.

Основные стандартные процедуры и функции

Для построения вычисляемых выражений, используемых в правой части оператора присваивания или в операторах вывода, можно применить ряд стандартных встроенных функций. Большинство из них (таблица 1) имеют в качестве аргумента (аргументов) данные вещественных и целых типов, некоторые − только вещественных.

Используя в программном коде стандартные функции, следует помнить, что аргумент всегда надо брать в круглые скобки!

 

Таблица 1 − Стандартные математические функции

Запись функции на Pascal Математическая запись Тип аргумента Тип результата Действие
abs(x) integer, real integer, real модуль (абсолютное значение) числа х
sqr(x) integer, real integer, real квадрат числа х
sqrt(x) integer, real real квадратный корень из числа х
sin(x) integer, real real синус числа х
cos(x) integer, real real косинус числа х
аrctаn(x) integer, real real арктангенс числа х
ln(x) integer, real real натуральный логарифм числа х
ехр(x) integer, real real экспонента числа х, т. е. 2,718 х
trunc(x) real integer отбрасывает дробную часть х
round(x) real integer округляет число х
int(x) real real целая чась числа х
frac(x) real real дробная часть числа х

 

Для записи математических функций, отсутствующих в перечне встроенных, используются известные математические формулы, например:

 

Математическаяфункция Математическая формула Запись на языке Pascal
sin(x)/cos(x)
cos(x)/sin(x)
arctan(x/sqrt(1-sqr(x)))
arctan(sqrt(1-sqr(x))/x)
arctan(1/x)
exp(x*ln(a))
ln(x)/ln(10)
ln(x)/ln(a)
(exp(x)-exp(-x))/2
(exp(x)+exp(-x))/2

 

Задания для практического занятия:

1. Создать новый файл: File / New (Файл / Создать). Сохранить его в личной папке на диске z:\ под именем ФИО23.pas. Периодически сохранять файл в процессе работы (клавиша F2).

2. Набрать в окне ФИО23.pas текст программы табулирования функции, т. е. вычисления значения функции при изменении аргумента vr на диапазоне от -1 до 4, т. е. , с шагом 0,4, где с = 12. Использовать цикл while…do с предусловием.

 

Programprim_3;

vara, b, c: integer; {описание целых переменных}

vr, hvr, fn1, fn: real; {описание вещественных переменных}

begin

a:=-1; b:=4; {границы диапазона изменения переменной}

hvr:=0.4; {шаг изменения переменной vr }

c:=12; {значение константы c }

vr:=a; {переменной vr присваивается начальное значение}

while vr<=b do {условием выхода из цикла указывается

достижение переменной vr правой границы диапазона}

begin{составной оператор}

fn1:=sin(vr)/cos(vr); {расчет тангенса vr }

fn:=(sqr(fn1)*fn1+c)/sqrt(sqr(vr)+sqr(c)); {расчет

значения функции fn }

writeln('vr=',x:4:2,' fn=',y:7:3); {вывод

текущего значения переменной vr и функции fn }

vr:=vr+hvr{увеличение значения переменной vr

на величину шага}

end;

end.

 

3. Произвести компиляцию программы (клавиша F9). При наличии ошибок исправить их. Запустить программу на выполнение (Ctrl + F9) и просмотреть результаты (Alt + F5).

4. Создать новый файл: File / New (Файл / Создать). Сохранить его в личной папке на диске z:\ под именем ФИО24.pas. Периодически сохранять файл в процессе работы (клавиша F2).

5. Набрать в файле ФИО24.pas текст программы табулирования функции, т. е. вычисления значения функции при изменении аргумента vr на диапазоне от -1 до 4 с шагом 0,4, где с = 12. Использовать цикл repeat…until с постусловием.

 

Programprim_4;

vara, b, c: integer; {описание целых переменных}

vr, hvr, fn1, fn: real; {описание вещественных переменных}

begin

a:=-1; b:=4; {границы диапазона изменения переменной}

hvr:=0.4; {шаг изменения переменной vr }

c:=12; {значение переменной c }

vr:=a; {переменной vr присваивается начальное значение}

repeat{начало цикла с постусловием}

fn1:=sin(vr)/cos(vr); {расчет тангенса vr }

fn:=(sqr(fn1)*fn1+c)/sqrt(sqr(vr)+sqr(c)); {расчет

значения функции fn }

writeln('vr=',x:4:2,' fn=',y:7:3); {вывод

текущего значения переменной vr и функции fn}

vr:=vr+hvr{увеличение значения переменной vr

на величину шага}

untilvr>b{условием выхода из цикла является превышение

переменной vr значения правой границы диапазона}

end.

 

6. Произвести компиляцию программы (клавиша F9). При наличии ошибок исправить их. Запустить программу на выполнение (Ctrl + F9) и просмотреть результаты (Alt + F5).

7. Создать новый файл: File / New (Файл / Создать). Сохранить его в личной папке на диске z:\ под именем ФИО25.pas. Периодически сохранять файл в процессе работы (клавиша F2).

8.Набрать в файле ФИО25.pas текст программы табулирования функции, т. е. вычисления значения функции при изменении аргумента vr на диапазоне от -1 до 4 с шагом 0,4, где с = 12. Использовать цикл for…to…do с известным числом повторений.

 

Programprim_5;

vara, b, c: integer; {описание целых переменных}

vr, hvr, fn1, fn: real; {описание вещественных переменных}

begin

a:=-1; b:=4; {границы диапазона изменения переменной}

hvr:=0.4; {шаг изменения переменной vr }

c:=12; {значение переменной c }

vr:=a; {переменной vr присваивается начальное значение}

n:=round((b-a))/hvr)+1; {количество повторений цикла}

for i:=1 to n do

begin

fn1:=sin(vr)/cos(vr); {расчеттангенса vr }

fn:=(sqr(fn1)*fn1+c)/sqrt(sqr(vr)+sqr(c)); {расчет

значенияфункции fn }

writeln('vr=',x:4:2,' fn=',y:7:3); {вывод

текущего значения переменной vr и функции fn }

vr:=vr+hvr{увеличение значения переменной vr

на величину шага}

end

end.

 

9. Произвести компиляцию программы (клавиша F9). При наличии ошибок исправить их. Запустить программу на выполнение (Ctrl + F9) и просмотреть результаты (Alt + F5).

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

1. Оператор условного перехода. Полная и краткая формы. Использование составного оператора. Оператор выбора. Тип ключа выбора.

2. Основные циклические конструкции. Формат и принцип действия оператора с предусловием while…do. Особенности применения.

3. Формат и принцип действия оператора с постусловием repeat…until. Особенности применения.

4. Формат и принцип действия оператора for…to…do. Особенности применения.

 


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



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