СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Работа с процедурами и функциями

Категория: Информатика

Нажмите, чтобы узнать подробности

Просмотр содержимого документа
«Работа с процедурами и функциями»


Тема: "Работа с процедурами и функциями".

Цель работы: 

Получение практических навыков по разработке алгоритмов на процедуры и функции.


Количество часов на выполнение работы

Продолжительность выполнения данной практической работы составляет 2 академических часа.


Оборудование

Аппаратное обеспечение: персональный компьютер следующей конфигурации:

  • процессор не ниже Intel i3;

  • жесткий диском со свободным объемом не менее 1 Гб;

Программное обеспечение:

  • операционная система Windows 7 / 8 / 8.1 / 10.

  • установленная среда программирования PascalABC.


Краткие теоретические сведения

При решении сложных задач разумно разбить алгоритм на несколько более простых составляющих. В языке Pascal существуют специальные средства для этого – подпрограммы. Есть два вида подпрограмм: процедуры и функции. Функция получает информацию от вызывающей программы через свои параметры. Параметры, описанные в заголовке функции, называются формальными параметрами. Параметры, указанные при вызове функции называют фактическими. Типы и число фактических параметров должны соответствовать типу и числу формальных параметров. Следующий пример иллюстрирует работу функций.


Program Table;

Uses CRT; // Подключение модулей

// Описания функций, требующихся в программе

function cube(x:real):real; // возведение в куб

begin

cube:=x*x*x; // имени функции присваивается значение

end;

function sign(x:real):integer; // вычисление знака числа

begin

if x0 then sign:=1

else if x=0 then sign:=0

else sign:=-1;

end;

// ==== Начало главной программы ==========

var a : real; // блок описания переменных

const a1 = -5.0; // блок описания констант (постоянных)

a2 = +5.0;

st = 0.5;

begin

a:=a1;

while (ado

begin

writeln(a:4:1,cube (a):10:3,sign(a):3); // вызов функций

a:=a+st;

end;

end.


Обратите внимание, что внутри тела функции (заключенного в операторные скобки beginend) вы обязаны хотя бы один раз имени функции присвоить значение. В этой программе также используется новый материал, не связанный с функциями, – это константы. Значение констант задается через знак равенства (а не присваивания). Тип константы определяется из типа присваиваемого значения. Константы, в отличие от переменных, не могут менять свое значение.


Рассмотрим еще один пример, в котором функция имеет два параметра разного типа.


Program Power2;

Uses CRT;

function power(x : real; n : integer) : real; // возведение в степень

var i : integer; // локальные переменные r : real;

begin

r:=1.0;

for i:=1 to n do r:=r*x; // накопление произведения

power:=r; // результат присвоить имени функции

end;

// ==== Начало главной программы ================

var i : integer; // блок описания переменных

begin

for i:=1 to 10 do

writeln(i:2,power (2.0,i):6:0);

end.


В данном примере функция имеет два формальных параметра (типа real и типа integer), а также две локальных переменных. Имена локальных переменных действуют только внутри тела функции. Переменная i в главной программе, и переменная i внутри функции – это две разных переменных. При вызове функции первый фактический параметр соответствует первому формальному параметру. Второй параметр – второму.

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

В стандартной графической библиотеке нет процедуры, рисующей треугольники. Давайте создадим такую процедуру и проверим ее работу.





Program UseProc;

Uses GraphABC;

Procedure Triangle(x1,y1,x2,y2,x3,y3:integer);

// Процедура рисует треугольник

begin

line(x1,y1,x2,y2);

line(x2,y2,x3,y3);

line(x3,y3,x1,y1);

end;

// Главная программа

begin

SetWindowSize(500,500);

Triangle(100,200,400,300,250,150);

Triangle(10,20,30,40,50,10);

end.


Как мы видим, процедура Trianlge имеет шесть целочисленных параметров и вызывает функции трижды функции Line для соединения точек. Создав такую процедуру, мы можем использовать ее столько раз, сколько нам надо в главной программе.


Задания по практической работе

  1. Описать процедуру PowerA3(A, B), вычисляющую третью степень числа A и возвращающую ее в переменной B (A — входной, B — выходной параметр; оба параметра являются вещественными). С помощью этой процедуры найти третьи степени пяти данных чисел.

  2. Описать процедуру PowerA234(A, B, C, D), вычисляющую вторую, третью и четвертую степень числа A и возвращающую эти степени соответственно в переменных B, C и D (A — входной, B, C, D — выходные параметры; все параметры являются вещественными). С помощью этой процедуры найти вторую, третью и четвертую степень пяти данных чисел.

  3. Описать процедуру Mean(X, Y, AMean, GMean), вычисляющую среднее арифметическое AMean = (X+Y)/2 и среднее геометрическое GMean = √X·Y двух положительных чисел X и Y (X и Y — входные, AMeanиGMean—выходные параметры вещественного типа). С помощью этой процедуры найти среднее арифметическое и среднее геометрическое для пар (A, B), (A, C), (A, D), если даны A, B, C, D.

  4. Описать процедуру TrianglePS(a, P, S), вычисляющую по стороне a равностороннего треугольника его периметр P=3·a и площадь S=a2·√3/4 (a — входной, P и S — выходные параметры; все параметры являются вещественными). С помощью этой процедуры найти периметры и площади трех равносторонних треугольников с данными сторонами.

  5. Описать процедуру RectPS(x1,y1,x2,y2,P,S), вычисляющую периметр P и площадь S прямоугольника со сторонами, параллельными осям координат, по координатам (x1,y1), (x2,y2) его противоположных вершин (x1,y1,x2,y2 — входные, P и S — выходные параметры вещественного типа). С помощью этой процедуры найти периметры и площади трех прямоугольников с данными противоположными вершинами.

  6. Описать функцию Power1(A,B) вещественного типа, находящую величину AB по формуле AB = exp(B·ln(A)) (параметры A и B — вещественные). В случае нулевого или отрицательного параметра A функция возвращает 0. С помощью этой функции найти степени AP, BP, CP, если даны числа P, A, B, C.

  7. Описать функцию Power2(A, N) вещественного типа, находящую величину AN (A — вещественный, N — целый параметр) по следующим формулам: A0 = 1; AN = A·A·...·A (N сомножителей), если N 0; AN = 1/(A·A·...·A) (|N| сомножителей), если N K, AL, AM, если даны числа A, K, L, M.

  8. Используя функции Power1 и Power2 (задания 6 и 7), описать функцию Power3(A, B) вещественного типа с вещественными параметрами, находящую AB следующим образом: если B имеет нулевую дробную часть, то вызывается функция Power2(A, Round(B)); в противном случае вызывается функция Power1(A, B). С помощью этой функции найти AP, BP, CP, если даны числа P, A, B, C.

  9. Описать функцию Exp1(x, ε) вещественного типа (параметры x, ε — вещественные, ε 0), находящую приближенное значение функции exp(x): exp(x) = 1 + x + x2/(2!) + x3/(3!) + ... + xn/(n!) + ... (n! = 1·2·...·n). В сумме учитывать все слагаемые, большие ε. С помощью Exp1 найти приближенное значение экспоненты для данного x при шести данных ε.

  10. Описать функцию Sin1(x, ε) вещественного типа (параметры x, ε — вещественные, ε 0), находящую приближенное значение функции sin(x): sin(x) = x−x3/(3!) + x5/(5!)−... + (−1)n·x2·n+1/((2·n+1)!) + ... . В сумме учитывать все слагаемые, модуль которых больше ε. С помощью Sin1 найти приближенное значение синуса для данного x при шести данных ε.