ПРОГРАММИРОВАНИЕ ЗАДАЧ С ПРОЦЕДУРАМИ И ФУНКЦИЯМИ
Цель работы: научиться составлять программы на языке Pascal для программирования задач с процедурами и функциями.
Оборудование: персональный компьютер типа IBM PC с процессором не ниже Intel Pentium I.
Дидактический материал: плакаты, раздаточный материал.
Подпрограммы
Подпрограмма – именованный блок операторов, отдельно выделенный в составе программы и не зависящий от других её частей. Подпрограммы бы- вают 2-х видов:
1. Подпрограмма-функция – это подпрограмма для вычисления функ- ции, которая возвращает какое-либо значение.
2. Подпрограмма-процедура – это подпрограмма для выполнения дей- ствий, которая не возвращает никаких значений.
Как правило, описание подпрограммы включает заголовок, разделы описаний и раздел операторов, начинающийся словом begin, а заканчива- ющийся словом end и точкой с запятой (;).
Формальные параметры – переменные, которые объявляются в заго-
ловке подпрограммы.
Фактические параметры – переменные или значения, которые под- ставляются вместо формальных параметров в момент конкретного вызова подпрограммы.
Параметры-значения – параметры, значения которых передаются в подпрограмму в момент её вызова.
Параметры-переменные – параметры со словом var, значения кото- рых могут использоваться после выполнения подпрограммы.
Локальные переменные – переменные, используемые только внутри подпрограммы.
Глобальные переменные – переменные, которые могут использоваться в любом месте основной программы, в т.ч. и в подпрограмме.
Заголовок описания функции имеет вид:
![]()
Это означает, что задаётся подпрограмма-функция с именем Func, зави-
сящая от формальных параметров FormPar1 типа T1 и т.д., а также вычисляющая значение типа T.
Вызов функции из основной программы или другой подпрограммы имеет вид:
![]()
Это означает, что вычисляется значение функции Func, зависящей от
фактических параметров FaktPar1 и т.д., причём вызов функции мо- жет осуществляться в составе выражения.
Заголовок описания процедуры имеет вид:
![]()
Это означает, что задаётся подпрограмма-процедура с именем Proc, зави-
сящая от формальных параметров FormPar1 типа T1 и т.д., а также выполняющая какие-либо действия.
Вызов процедуры из основной программы или другой подпрограммы имеет вид:
![]()
Это означает, что выполняются действия в теле процедуры Proc, зави-
сящей от фактических параметров FaktPar1 и т.д., причём вызов про- цедуры не может осуществляться в составе выражения.
Порядок выполнения
1. Зайти в Borland Pascal (или Pascal ABC).
2. Набрать текст программы для решения задачи № 1 и получить ответ для контрольного примера.
3. Получить ответ для своих исходных данных.
4. Набрать текст программы для решения задачи № 2 и получить ответ для контрольного примера.
5. Получить ответ для своих исходных данных.
Дополнительное задание
1. Вычислить
z = tg x + tg y
с использованием подпрограммы-функции вычисле-
ния тангенса.
2. Вычислить
z = ctg x + ctg y
с использованием подпрограммы-функции вычис-
ления котангенса.
3. Вычислить
z = lg x + lg y
с использованием подпрограммы-функции вычисле-
ния десятичного логарифма.
4. Вычислить
z = log2 x + log3 y
с использованием подпрограммы-функции вы-
числения логарифма по произвольному основанию.
5. ![]()
Вычислить z = + с использованием подпрограммы-функции вычисле-
ния корня произвольной степени.
6. В двумерном массиве A из m строк и n столбцов вычислить сумму и сред- нее значение всех элементов с использованием подпрограммы-процедуры.
7. В двумерном массиве A из m строк и n столбцов вычислить максимальный и минимальный элементы с использованием подпрограммы-процедуры.
8. В двумерном массиве A из m строк и n столбцов вычислить сумму и коли- чество элементов выше главной диагонали с использованием подпрограм- мы-процедуры.
9. В двумерном массиве A из m строк и n столбцов вычислить произведение и среднее значение элементов на главной диагонали с использованием под- программы-процедуры.
10. В двумерном массиве A из m строк и n столбцов вычислить максималь- ный и минимальный среди элементов ниже главной диагонали с использо- ванием подпрограммы-процедуры.
Примеры задач
|
Задача 1. Вычислить B = 2,15 + 70,3 , а также найти C = a0 + a1x + a2 x2 +…+ anxn с использо- ванием подпрограммы-функции возведения в степень. |
|
Программа. Program Lab6a; Var A:array[0..100] of real; B,C,x:real; i,n:integer; Function Step(a,b:real):real; |
|
begin Step:=exp(b*ln(a)); end; Begin writeln('Введи n,x'); read(n,x); writeln('Введи массив A'); for i:=0 to n do read(A[i]); B:=Step(2.1,5)+Step(7,0.3); C:=0; for i:=0 to n do C:=C+A[i]*Step(x,i); writeln('B=',B:10:3,' C=',C:10:3); End. |
|
|
Контрольный пример. |
|
|
Исходные данные: |
n = 3 ; x = 5 ; A = {4;3; - 2;1}. |
|
Результаты: |
B = 42,634 ; С = 94 . |
|
Задача 2. В двумерном массиве A из 3 строк и 4 столбцов вычислить сумму и про- изведение отрицательных элементов с использованием подпрограммы-процедуры. |
|
|
Программа. Program Lab6b; Const m=3; n=4; Type TT=array [1..m,1..n] of real; Var A:TT; i,j:integer; s,p:real; Procedure SumPro(B:TT; m,n:integer; var s,p:real); var i,j:integer; begin s:=0; p:=1; for i:=1 to m do for j:=1 to n do if B[i,j]<0 then begin s:=s+B[i,j]; p:=p*B[i,j]; end; end; Begin writeln('Введи массив A'); for i:=1 to m do for j:=1 to n do read(A[i,j]); SumPro(A,3,4,s,p); writeln(s,p); End. |
|
|
Контрольный пример. |
|
|
Исходные данные: |
æ 1 2 3 4 ö A = ç - 5 6 7 8 ÷ . ç 9 10 1 - 1÷ è ø |
|
Результаты: |
s = -6 ; p = 5 . |
Контрольные вопросы
1. Что такое подпрограмма? Перечислите виды подпрограмм.
2. Какие элементы входят в описание подпрограммы?
3. Что такое формальные и фактические параметры? Чем они отличаются?
4. Что такое параметры-значения и параметры-переменные? Чем они отли- чаются?
5. Что такое локальные и глобальные параметры? Чем они отличаются?
6. Какой вид имеет заголовок описания функции? Что это означает?
7. Какой вид имеет вызов функции? Что это означает?
8. Какой вид имеет заголовок описания процедуры? Что это означает?
9. Какой вид имеет вызов процедуры? Что это означает?
10. Напишите, что означает каждая строка в вышеприведённых програм- мах.
11. Напишите программу к одной из задач дополнительного задания.
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.