Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Алгоритмы и алгоритмические языки. Учебное пособие
.pdf
121
подстановки фактических параметров, над которыми производятся
действия.
Число и тип формальных и фактических параметров должны
совпадать с точностью до их следования. Все формальные параметры
делятся на два вида: параметры-переменные и параметры-значения.
Областью действия переменной (идентификатора) называется
часть программы, в пределах которой она может быть использована.
Область действия переменных определяется местом их объявления. В
программе все переменные делятся на глобальные и локальные.
Глобальные переменные – это те переменные, которые объявлены в
описании основной части, и их могут использовать любые процедуры
и функции данной программы. Переменные, описанные внутри
подпрограммы, называются локальными и могут быть использованы
только внутри данной подпрограммы. Локальные переменные могут
быть описаны как в заголовке программы, так и в разделе описания
переменных.
Пример 7.1. Составить процедуру умножения двух вещественных
чисел.
Алгоритм составления процедуры в графическом виде для
примера 7.1 приведен на рис. 7.1.
Рис. 7.1. N-S-диаграмма алгоритма для примера 7.1
PROGRAM PR7.1; {ПРОЦЕДУРА УМНОЖЕНИЯ ДВУХ
ВЕЩЕСТВЕННЫХ ЧИСЕЛ}
USES CRT;
VAR A, B, P: REAL;
PROCEDURE PROIZ (X, Y: REAL; VAR P: REAL;) {ПРОЦЕДУРА}
BEGIN
P:=X*Y
END;
BEGIN {ОСНОВНАЯ ПРОГРАММА}
CLRSCR;
WRITELN ('ВВЕДИТЕ ВЕЩЕСТВЕННЫЕ ЧИСЛА A, B:');

122
WRITELN;
READLN (A, B);
PROIZ (A, B, P);
WRITELN ('P=', P:9:2);
READKEY
END.
Переменные x, y в программе PR7.1 являются формальными
переменными. Процедура вызывается из основной программы
оператором PROIZ (a, b, p), где переменные a и b, указанные в круглых
скобках – фактические параметры, передающие свои значения
формальным параметрам x, y. Результат выполнения процедуры
передается в переменную p.
Функции
Для вычисления только одного значения в Паскале используются
функции.
Отличия функции от процедуры:
1. процедура может иметь новые значения, а функция только одно
значение, которое является результатом;
2. заголовок функции состоит из служебного слова FUNCTION,
имени функции и списка формальных параметров, записанных
между круглыми скобками.
FUNCTION имя [(формальные параметры)]: <тип результата>;
[<раздел описаний>]
BEGIN
Тело функции
<Имя>:=<значение>;
END.
Пример 7.2. Составить программу расчета значения функции
Структурограмма алгоритма представлена на рис. 7.2.

123
Рис. 7.2. N – S-диаграмма алгоритма для примера 7.2
Для расчета факториалов и используется функция fact.
Вызов функции осуществляется дважды внутри выражений
;
из основной программы. Результат выполнения функции возвращается
в основную программу через имя функции. Для этого используется
оператор присваивания fact=fact1. Тип аргумента и результата указаны
в заголовке функции.
PROGRAM PR7.2; {ФУНКЦИЯ РАСЧЕТА ФАКТОРИАЛА}
USES CRT;
VAR A, B: INTEGER; D1, D2, F: LONGINT;
FUNCTION FACT (N: INTEGER): LONGINT; {ФУНКЦИЯ}
VAR I: INTEGER;
FACT1: LONGINT;
BEGIN
FACT1:=1;
FOR I=1 TO N DO FACT1:= FACT1*I;
FACT:=FACT1
END;
BEGIN {ОСНОВНАЯ ПРОГРАММА}
CLRSCR;
WRITELN ('ВВЕДИТЕ ДВА ЦЕЛЫХ ЧИСЛА A, B – ');
WRITELN;
READLN (A, B);
D1:=FACT(A);
D2:=FACT(A+B);
F:= D1* D2;
WRITELN ('D1=',D1, ' ':2, 'D2=',D2, ' ':2, 'F=', F);
READKEY
END.

124
Вопросы для самоконтроля
1. Что называется подпрограммой?
2. Что такое структурное программирование и для чего оно
применяется?
3. Сходства и различия подпрограмм-процедур и
подпрограмм-функций?
4. Что такое параметр функции и его назначение в
программировании?
5. Какие виды параметров существуют?
6. Что такое локальные и глобальные параметры и их отличия?
Задания для самостоятельной работы
Для заданий 1–15 начертите N – S-диаграмму и напишите
программу на языке TP.
1. Составить программу, в результате которой величина
меняется значением с величиной , а величина – с величиной .
(Определить процедуру, осуществляющую обмен значениями двух
переменных величин.)
2. Даны стороны двух треугольников. Найти сумму их
периметров и сумму их площадей. (Определить процедуру для расчета
периметра и площади треугольника по его сторонам.)
3. Даны основания и высоты двух равнобедренных трапеций.
Найти сумму их периметров и сумму их площадей. (Определить
процедуру для расчета периметра и площади равнобедренной
трапеции по ее основаниям и высоте.)
4. Написать рекурсивную функцию для вычисления
факториала натурального числа .
5. Написать рекурсивную функцию для расчета степени
вещественного числа ( – натуральное число, операцию возведения
в степень не использовать).

125
6. Написать рекурсивную функцию вычисления суммы цифр
натурального числа.
7. Написать рекурсивную функцию вычисления количества
цифр натурального числа.
8. Даны первый член и разность арифметической прогрессии.
Написать рекурсивную функцию для нахождения –го члена
прогрессии.
9. Даны первый член и разность арифметической прогрессии.
Написать рекурсивную функцию для нахождения суммы первых
членов прогрессии.
10. Даны первый член и знаменатель геометрической
прогрессии. Написать рекурсивную функцию для нахождения ее –го
члена.
11. Даны первый член и знаменатель геометрической
прогрессии. Написать рекурсивную функцию для нахождения суммы
первых членов прогрессии.
12. Написать рекурсивную функцию для вычисления –го
члена последовательности Фиббоначи. Последовательность
Фиббоначи образуется по закону:
13. Написать рекурсивную процедуру для вывода на экран цифр
натурального числа в обратном порядке.
14. Написать рекурсивную процедуру для ввода с клавиатуры
последовательности чисел и вывода ее на экран в обратном порядке
(окончание последовательности – при вводе нуля).
15. Написать рекурсивную процедуру перевода натурального
числа из десятичной системы счисления в двоичную.
Тестовые задания №7
1. В языке программирования Pascal основное различие между
процедурами и функциями заключается в том, что
A) в процедуре допускается описание локальных переменных, а в
функции – нет
B) в программе обращение к процедуре может осуществляться
многократно, тогда как к функции только один раз
C) в процедуре допускается использование глобальных переменных,
а функции – нет

126
D) в результате работы процедуры можно получить любое
количество данных, а функции – только одно значение
E) в результате работы процедуры можно получить фиксированное
количество данных, а функции – множество значений
2. Формальные параметры процедуры
A) объявляются в разделе описания
B) описываются в конце алгоритма
C) описываются в ее заголовке
D) указываются при описании промежуточных переменных
процедуры
E) описываются в конце программы
3. Фактические параметры процедуры
A) указываются при описании промежуточных переменных
процедуры
B) описываются в конце алгоритма
C) указываются в команде вызова процедуры
D) описываются в ее заголовке
E) объявляются в разделе описания
4. В модульном программировании программа
A) разделена на отдельные самостоятельные части
B) включает только циклы
C) включает только ветвления
D) не выводит результат вычислений
E) не запрашивает исходные данные
5. Подпрограмма – это
A) группа операторов, повторяющаяся многократно
B) обособленная часть программы, которую можно вызывать из
основной программы
C) вложенный цикл
D) вложенное ветвление
6. Подпрограмма вызывается по имени
А) из оператора ввода
B) только из вложенного цикла
C) только из оператора цикла
D) только из одного места основной программы
E) из любого места основной программы
7. Подпрограммы реализуются в виде
A) ветвлений
B) циклов

127
C) процедур
D) функций
E) вложенных циклов
8. Подпрограммы различаются
A) по количеству переменных
B) по типу переменных
C) по качеству
D) способом их использования
E) назначением
9. Два типа подпрограмм
A) истинные
B) стандартные
C) ложные
D) разрабатываемые программистом
10. Стандартная подпрограмма включена в
A) текстовый редактор
B) лексический анализатор
C) библиотеку программ
D) исполняемый файл
11. Доступ к стандартной подпрограмме обеспечивается
средствами
A) исполняемого файла
B) текстового редактора
C) табличного процессора
D) графического редактора
E) языка программирования
12. Стандартными подпрограммы являются
A) процедура очистки экрана CLRSCR
B) оператор ввода
C) оператор вывода
D) функция COS
E) функция SIN
13. Пользовательские подпрограммы разрабатываются
A) программистами
B) администраторами
C) операторами
D) пользователями
E) программами

128
14. Подпрограмма обязательно должна иметь
A) цикл
B) подзаголовок
C) заголовок, отличающийся от заголовка основной программы
D) ветвление
E) вложенный цикл
15. Подпрограмма заканчивается символом
A) точка
B) точка с запятой
C) двоеточие
D) тире
E) многоточие
16. Процедуры выполняют
A) цикл
B) проверку условия
C) некоторую последовательность действий
D) ввод данных
E) вложенный цикл
17. Заголовок процедуры
A) BEGIN
B) FOR
C) IF
D) PROCEDURE
E) FUNCTION
18. За служебным словом PROCEDURE следует
A) глобальная переменная
B) локальная переменная
C) фактический параметр
D) формальный параметр
E) имя процедуры
19. Между служебными словами BEGIN и END в процедуре
записывают
A) фактические параметры
B) тело цикла
C) тело функции
D) тело процедуры
E) формальные параметры
20. Результатом выполнения процедуры является
A) элемент одномерного массива

129
B) двумерный график
C) элемент двумерного массива
D) трехмерный график
E) одно или несколько значений
21. Результат процедуры передается в основную программу как
A) табличное значение
B) значение ее параметра
C) звуковой сигнал
D) текстовый символ
22. Фактические параметры
A) локальные переменные
B) глобальные переменные
C) аргументы стандартных функций
D) параметры, передающиеся процедуре или функции при обращении
к ней
23. Формальные параметры
A) глобальные переменные
B) имена входных данных, используемые в подпрограмме
C) аргументы стандартных функций
D) локальные переменные
24. Формальные и фактические параметры
A) совпадают по типу, количеству и порядку следования
B) имеют одинаковое начертание
C) указывают на область памяти
D) являются исходными данными
25. Два вида формальных параметров
A) параметры-переменные
B) локальные переменные
C) глобальные переменные
D) параметры-значения
E) аргументы функций
26. Глобальные переменные объявляются в
A) процедуре
B) описании основной части и могут быть использованы любыми
процедурами и функциями данной программы
C) функции
D) подпрограмме
27. Локальные переменные объявляются в

130
A) процедуре
B) описании основной части и могут быть использованы любыми
процедурами и функциями данной программы
C) функции
D) подпрограмме
28. Функции вычисляют
A) одно значение
B) два значения
C) три значения
D) несколько значений
29. Служебное слово, определяющее функцию
A) BEGIN
B) FOR
C) IF
D) PROCEDURE
E) FUNCTION
30. За именем функции следуют
A) переменные
B) аргументы функции
C) фактические параметры
D) формальные параметры
E) константы
Ответы к тестовым заданиям №7
Вопрос
Ответ
Вопрос
Ответ
Вопрос
Ответ
1 D 11 Е 21 В 2 C 12
А, D, Е
22
D
3 C 13 А 23
В
4 А 14 С 24
С
5 В 15 В 25
А, D
6 Е 16 С 26
В
7
С, D
17 D 27
D
8
D, Е
18 Е 28
А
9
В, D
19 D 29
Е
10 С 20 Е 30
D
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
