Читайте также:
|
|
Кафедра ПОСТ
ФУНКЦИИ, ОПРЕДЕЛЕННЫЕ ПОЛЬЗОВАТЕЛЕМ
МЕТОДИЧЕСКИЕ УКАЗАНИЯ к лабораторной работе № 17
по дисциплине
"Программирование"
для студентов специальностей
2-45 01 02 – Системы радиосвязи, радиовещания и телевидения
2-45 01 03 – Сети телекоммуникаций
Минск 2006
Составитель Балаш А.Н.
Издание утверждено на заседании кафедры ПОСТ
”28” января 2006г.,протокол № 5
Зав. кафедрой ПОСТ А.А.Прихожий
ФУНКЦИИ, ОПРЕДЕЛЕННЫЕ ПОЛЬЗОВАТЕЛЕМ
1. ЦЕЛЬ РАБОТЫ
1.1. Получение навыков в написании программ с использованием функций.
1.2. Изучение механизма передачи параметров по значению.
2. ЛИТЕРАТУРА
2.1. А. Н. Вальвачев, В. С. Крисевич. Программирование на языке ПАСКАЛЬ для персональных ЭВМ ЕС.-Минск: Вышэйшая школа,1989.-С.58..62.
2.2. В. С. Новичков, Н. И. Парфилова, А. Н. Пылькин. Алгоритмические языки в техникуме. ПАСКАЛЬ. - М.: Высшая школа,1990.-С.122..123,130..135.
2.3. Н. Д. Васюкова, В. В. Тюляева. Практикум по основам программирования. Язык Паскаль. - М.: Высшая школа,1991.- С.119..122.
3. ДОМАШНЕЕ ЗАДАНИЕ
3.1. Изучить по [2.1], [2.2], [2.3] правила записи подпрограмм-функций и способов обращений к ним; способы передачи параметров в подпрограмму-функцию; порядок выполнения программ, использующих подпрограммы.
3.2. Начертить блок-схему алгоритма решения и составить программу нахождения разности факториалов F=m!-k!. Вычисление факториала оформить в виде функции.
3.3. Подготовить бланк отчета.
4. ТСО И НАГЛЯДНОСТЬ
4.1.ПЭВМ IBM PC.
5. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
5.1. Проверка домашнего задания и подготовки студентов к работе.
5.2. Подготовка ПЭВМ к работе.
5.3. Получение у преподавателя и выполнение индивидуального задания.
5.4. Оформление отчета по лабораторной работе.
6. СОДЕРЖАНИЕ ОТЧЕТА
6.1. Наименование и цели лабораторной работы.
6.2. Ответы на контрольные вопросы.
6.3. Постановка задачи.
6.4. Блок-схемы алгоритмов и тексты программ к задачам из индивидуального задания.
6.5. Результаты решения.
7. КОНТРОЛЬНЫЕ ВОПРОСЫ
7.1. Что такое подпрограмма?
7.2. При каких условиях целесообразно использование подпрограмм?
7.3. Для чего предназначены функции?
7.4. Что включает в себя заголовок функции?
7.5. Какая существует связь между формальными и фактическими
параметрами?
7.6. Как вы понимаете глобальные и локальные данные?
8. МЕТОДИЧЕСКИЕ УКАЗАНИЯ
8.1. Общие сведения.
В практике программирования часто встречаются случаи, когда по ходу выполнения программы приходится производить одни и те же вычисления, но при различных исходных данных. Чтобы исключить повторение одинаковых записей и сделать тем самым программу проще и понятнее, можно выделить эти повторяющиеся вычисления в самостоятельную часть программы, которая может быть использована многократно по мере необходимости. Такая автономная часть программы, реализующая определенный алгоритм и допускающая обращение к ней из различных частей общей программы, называется подпрограммой.
Использование подпрограмм позволяет сократить объем и улучшить структуру программы с точки зрения наглядности и читаемости, уменьшить вероятность ошибок и облегчить процесс отладки программы.
В языке Паскаль подпрограммы реализуются в виде процедур и функций, которые вводятся в программу с помощью своего описания.
Любая программа может содержать несколько процедур и функций, которые объявляются в разделе описания вслед за разделом переменных.
Выполнение программы начинается с операторов основной программы. При необходимости вызывается подпрограмма и начинают действовать ее операторы. Затем управление передается в основную программу, которая продолжает выполняться. Подпрограмма оформляется подобно основной программе, т.е. состоит из заголовка, раздела описаний и раздела операторов. Имена, объявленные в разделе описания основной программы, действуют в разделе операторов основной
программы и в любой подпрограмме (процедуре и функции). Эти имена называются глобальными.
Имена, объявленные в подпрограмме, действуют только в этой подпрограмме и в любой объявленной в ней процедуре и функции. Такие имена называются локальными. Они недоступны для операторов основной программы.
8.2. Описание функции.
Функции представляют собой группу операторов, в результате выполнения которых вычисляется одно значение, присваиваемое имени функции.
Описание функции включает в себя заголовок функции, разделы описаний (меток, констант, типов, переменных, дополнительных функций и процедур, являющихся локальными по отношению к описываемой функции), тело функции.
В заголовке функции за ключевым словом FUNCTION указывается ее имя, а в скобках - список параметров со своими описаниями. В заголовке определяется тип значения, возвращаемого функцией. Как правило, окончательный результат присваивается имени функции в конце тела функции.
Общая структура записи функции имеет вид:
FUNCTION F(q1:T1; q2:T2;...):T;
<Разделы определений и описаний локальных параметров и
подпрограмм>
BEGIN
P1;
P2;
....
F:=
END;
где F - имя функции; qi - имена формальных параметров;
Ti - типы параметров; T - тип результата;
Pi - операторы тела функции.
Среди входящих в функцию операторов должен обязательно присутствовать хотя бы один оператор присваивания, в левой части которого стоит имя данной функции. Этот оператор и определяет значение, вырабатываемое функцией.
Функция может иметь собственные локальные константы, типы, переменные и вспомогательные процедуры и функции.
Обращение к функции осуществляется в правой части оператора присваивания, при этом в выражении записываются имя функции и фактические параметры.
Каждый фактический параметр должен соответствовать формальным параметрам, указанным в заголовке, и иметь тот же тип.
После выполнения функции вычисленное значение присваивается имени функции и передается в выражение.
8.3. Пример.
Составить программу вычисления:
используя функцию для вычисления степени y=xn (а - вещественное, m - целое).
Схема алгоритма решения задачи представлена на рис.1,а,б.
Программа, реализующая данный алгоритм, имеет вид:
PROGRAM VST;
VAR M:INTEGER;
A,Z,R:REAL;
(* Функция вычисления степени *)
FUNCTION ST(N:INTEGER; X:REAL):REAL;
VAR I:INTEGER;
Y:REAL;
BEGIN (* ST *)
Y:=1;
FOR I:=1 TO N DO
Y:=Y*X;
ST:=Y
END; (* ST *)
BEGIN (* VST *)
READ (A,M);
WRITELN ('A=',A:5:2,' M=',M);
Z:=ST(5,A)+ST(5,1/A);
IF M=0 THEN R:=1 ELSE IF M>0 THEN R:=ST(M,A) ELSE
R:=ST(-M,1/A);
Z:=Z/(2*R);
WRITELN ('Z=',Z:6:2)
END. (* VST *)
Результаты выполнения программы при различных значениях M:
1.2 0 1.2 2 1.2 -3
A=1.20 M=0 A=1.20 M=2 A=1.20 M=-3
Z=1.45 Z=1.00 Z=2.50
Пояснение к программе. В программе приняты следующие обозначения: А –
вещественное число, которое нужно возвести в степень; М - целое число, обозначающее степень, в которую возводится число А; Z - вычисляемое значение; R - результат возведения числа А в степень m; ST - подпрограмма-функция, описывающая алгоритм вычисления степени y=xn.
В заголовке функции с именем ST перечислены формальные параметры N, X, определяющие ее исходные данные. Результат выполнения функции (значение локальной переменной Y) присваивается ее имени ST. Тип результата (тип функции) - REAL, который указывается в заголовке функции при ее описании.
Функция ST вызывается четыре раза для различных значений фактических параметров. В теле функции произойдет замена формальных параметров N,X на фактические: первый раз на 5,А; второй раз на 5,
1/А (a-5=1/a5); третий раз (если М>0) на М, А и четвертый раз (если М<0) на -М,1/А. Затем выполнится совокупность действий, предусмотренных операторами функции. Результат, полученный в подпрограмме-функции, присваивается ее имени и возвращается в основную программу.
Рис.1. Схема алгоритма решения задачи из пункта 8.3.:
а) схема алгоритма основной программы;
б) схема алгоритма подпрограммы-функции.
8.4. Параметры функций.
При организации функций в языке Паскаль используются следующие типы параметров: параметры-значения, параметры-процедуры и параметры-функции.
Параметры-значения определяют исходные данные для работы функций при каждом обращении к ним, в списке формальных параметров перечисляются через запятую с обязательным указанием их типов, например:
FUNCTION FACT(K:INTEGER):INTEGER;
FUNCTION PRM(I,J:INTEGER, R:REAL):REAL;
В качестве соответствующего фактического параметра может быть использовано любое выражение, результат вычислений которого принадлежит тому же типу, что и формальный параметр. В качестве простейшего выражения указанного типа может быть константа или переменная. В примере 8.3 формальные параметры N,X в заголовке функции - параметры-значения. При вызове функции осуществляется подстановка значений фактических параметров. В процессе выполнения подпрограммы формальные параметры могут изменяться, но это никак не отразится на соответствующих фактических параметрах-переменных, которые сохраняют те значения, которые имели до вызова подпрограммы. Поэтому параметры-значения нельзя использовать для передачи результатов из подпрограммы в основную программу!
Между формальными и фактическими параметрами должно быть соответствие по количеству параметров, по их типу и порядку следования.
8.5. Пример.
Вычислить ,
где V1,V2,V3 - объемы шаров с радиусами r1, r2, r3 соответственно.
Вычисление vi производить в подпрограмме-функции.
PROGRAM PRIM;
VAR R,Z;REAL; I:INTEGER;
FUNCTION OB(RAD:REAL):REAL;
VAR VI:REAL;
BEGIN
VI:=4/3*PI*SQR(RAD)*RAD;
OB:=VI
END;
BEGIN Z:=0;
FOR I:=1 TO 3 DO
BEGIN
WRITELN('ВВЕДИТЕ РАДИУС ШАРА');
READLN(R);
Z:=Z+OB(R);
END;
Z:=Z/3;
WRITELN('Z=',Z:6:2)
END.
Результаты выполнения программы:
ВВЕДИТЕ РАДИУС ШАРА
1.2
ВВЕДИТЕ РАДИУС ШАРА
1.4
ВВЕДИТЕ РАДИУС ШАРА
1.1
Z=8.10
9. ТРЕБОВАНИЯ К ЗНАНИЯМ И УМЕНИЯМ СТУДЕНТОВ
В результате выполнения лабораторной работы студенты должны:
- знать правила записи программ-функций и способов обращения к ним;
- овладеть навыками алгоритмизации и программирования задач с использованием подпрограмм-функций, навыками написания подпрограмм и обращения к ним, выбора параметров подпрограмм.
План 2002/03, поз. 134
Дата добавления: 2015-04-11; просмотров: 96 | Поможем написать вашу работу | Нарушение авторских прав |