Цель работы: получение навыков в составлении программ с использованием процедур и функций.
Задание:
1 Составить блок-схему алгоритма с использованием процедур и функций.
2 Изучить особенности программирования алгоритмов на алгоритмическом языке Паскаль.
3 Запрограммировать полученный алгоритм.
4 Ввести текст программы в компьютер.
5 Выполнить расчет по программе.
Для выражений из лабораторной работы 2 вычисление 4-го элемента выражения оформить как функцию.
В задании к лабораторной работе 2 ввод исходных данных оформить в виде процедуры.
Методические указания.
Функции – это фундаментальные логические элементы, служащие для выполнения действий, связанных с решением поставленной задачи.
Следует различать описание и представление функции. Описание делает возможным доступ к функции (помещает ее в область видимости), про которую известно что она внешняя. Представление задает действия, выполняемые функцией при ее вызове. Представление функции включает:
* Тип значения, возвращаемого функцией (если значение не возвращается, то тип функции – void).
*Число и тип формальных параметров.
*Код (тело) функции, который должен быть выполнен при вызове функций.
* Указания о видимости функции вне файла, где она задается.
• Локальные переменные, которые могут маскировать глобальные переменные.
Таблица 7
Вариант | Задание | Точность |
![]() | ε= ![]() | |
![]() | ε= ![]() | |
![]() | ε= ![]() | |
![]() | ε= ![]() | |
![]() | ε= ![]() | |
![]() | ε= ![]() | |
![]() | ε= ![]() | |
![]() | ε= ![]() | |
![]() | m=5 m=10 | |
![]() | m=7 m=25 | |
![]() | m=40 m=100 | |
![]() | m=10 m=20 | |
![]() | m=15 m=17 | |
![]() | m=4 m=20 m=100 | |
![]() | m=60 m=65 m=120 | |
![]() | m=7 m=10 m=23 |
Пример программы циклической структуры:
uses crt; { Подключается библиотека ввода-вывода }
var m:Integer; { Наибольшее значение аргумента }
{ Функция для подсчета факториала }
Function Fact(x:Integer):Integer;
var k, i: Integer; { k-переменная накопления значения факториала,
i–счетчик цикла }
begin
k:= 1; { Присвоение начального значения рекуррентной формуле
вычисления факториала }
for i:= 1 to x do k:=k*i; { Вычисление факториала}
Fact:= k; { Возврат вычисленного значения факториала }
end;{Function Fact}
{В данной функции производится расчет произведения ряда множителей}
Function Raschet(m:Integer):Real;
var n, i: Integer; { n–номер члена ряда, i–счетчик цикла }
k: Real; { Переменная накопления произведения членов ряда }
begin
n:= 1; { Присвоение начального значения аргументу члена ряда }
k:= 1; { Присвоение начального значения рекуррентной формуле
произведения членов ряда }
repeat { Цикл с постусловием}
for i:=1 to n do
k:= k * (Sqrt(Fact(n))+8*n)/(3*n–2); { Накопление произведения
членов ряда }
n:= n+1; { Приращение аргумента }
until n > m; { Сравнение аргумента с верхней границей диапазона }
Raschet:= k;
end;{Function Raschet}
{ Основной блок программы }
begin
ClrScr;{ Производится очистка экрана }
WriteLn('Выполнил Поляков Д.Г., КТФ, Р-11 ');
WriteLn; {Вывод пустой строки}
WriteLn('Введите количество множителей ');
ReadLn(m); {Вводится верхняя граница диапазона изменения аргумента}
WriteLn('Выводится результат вычисляемого выражения');
WriteLn(Raschet(m):4:5); { Форматный вывод }
ReadKey; { Задержка экрана }
end.
Содержание отчёта по лабораторной работе
1 Цель лабораторной работы.
2. Задание.
3. Методические указания.
4. Блок-схема алгоритма программы.
5. Текст программы.
6. Результаты расчетов.
Контрольные вопросы
1 Что называют процедурой?
2 Что называют функцией?
3 Какая разница между процедурой и функцией?
4 Чем различаются описание и представление функций?
5 Локальные переменные.
6 Глобальные переменные.
7 Как осуществляется вызов подпрограммы
8 Из чего состоит описание подпрограммы?
9 Что должно быть перечислено в списке формальных параметров(если он есть)?
10 Может ли вызов функции выглядеть так же, как и вызов процедуры?
Лабораторная работа 6.