русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Описание процедур и функций. Формальные параметры


Дата добавления: 2015-07-09; просмотров: 872; Нарушение авторских прав


Очень часто в программах встречаются однотипные участки, которые выполняют одни и те же вычисления с различными данными. Такие части программ целесообразно выполнять с помощью подпрограмм. Использование подпрограмм позволяет:

1) сделать основную программу более наглядной и компактной;

2) уменьшить объем используемой памяти ЭВМ;

3) сократить время написания и отладки программы, так как различные подпрограммы могут быть написаны различными людьми параллельно.

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

Все параметры, которые использует подпрограмма, можно разбить на две категории: локальные параметры, объявленные внутри подпрограммы и доступные только ей самой, и глобальные – объявленные в основной программе и доступные как программе, так и всем её подпрограммам.

По мимо этого можно выделить ещё два вида параметров: фактические и формальные. Формальные параметры – параметры, определённые в заголовке подпрограммы. Фактические параметры – выражения, задающие конкретные значения при обращении к подпрограмме. При обращении к подпрограмме её формальные параметры замещаются фактическими, переданными из главной программы.

 

Описание процедуры имеет следующий вид.

Procedureимя процедуры (список формальных параметров);

Раздел описаний

Begin

Раздел операторов

End;

 

Здесь имя процедуры задаётся пользователем.

Раздел описаний, как и в основной программе, может включать разделы Uses, Label, Const, Type, Var и раздел вложенных процедур и функций.

Формальные параметры не описываются в разделе описания процедур. Допускается использования процедур без параметров.



Параметры процедур бывают двух видов:

1) параметры – значения (входные параметры);

2) параметры – переменнные (выходные параметры).

Описание входных параметров процедуры в списке формальных параметров имеет также вид:

Список переменных1: тип1; список переменных2: тип2; и т.д.

Описание выходных параметров выглядит следующим образом:

VarСписок переменных1: тип1; Var список переменных2: тип2; и т.д.

Вызов процедуры в основной программе имеет следующий вид:

имя процедуры (список фактических параметров);

Фактические параметры перечисляются через запятую, без указания их типа. Между формальными и фактическими параметрами должно быть соответствие по количеству параметров, порядку из следования и типу данных. Имена соответствующих параметров могут быть одинаковыми или разными. Входными фактическими параметрами могут быть константы, переменные или выражения, выходными фактическими параметрами могут быть только переменные.

Пример:

 

Другой вид подпрограммы в языке Турбо-Паскаль – функция – оформляется аналогично процедуре и отличается от нее по структуре только заголовком, общий вид которого выглядит следующим образом:

Function имя (список формальных параметров): тип;

Функции имеют несколько отличительных особенностей.

1. Функция имеет только один результат выполнения (но может иметь несколько входных параметров, выходных параметров у функции нет);

2. Результат обозначается именем функции. Поэтому в разделе операторов функции обязательно должен присутствовать оператор присваивания, в левой части которого стоит имя этой функции.

3. Вызов функции в основной программе осуществляется непосредственно в выражениях по ее имени с указанием фактических параметров.

 

Использование процедур и функций на примере вычисления площади выпуклого четырехугольника

Задание: вычислить площадь плоского четырехугольника, заданного длинами четырех сторон и диагонали.

Диагональ делит выпуклый четырехугольник на два треугольника, площадь каждого из которых можно вычислить по формуле Герона:

S=Sqrt(p(p-a)(p-b)(p-c)), где p=(a+b+c)/2;

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

 

Program F1;

var AB,BC,CD,DA, AC,s1,s,a,b,c,p:real;

procedure TriangleSquare;

begin

p:=(a+b+c)/2;

s1:=Sqrt(p*(p-a)*(p-b)*(p-c));

end;

Begin

Read(AB,BC,CD,DA,AC);

a:=AB;b:=BC;c:=AC;

TriangleSquare;

s:=s1;

a:=DA;b:=AC;c:=CD;

TriangleSquare;

WriteLn(s+s1);

End.

В данной программе выполняется два обращения к процедуре TriangleSquare непосредственно перед каждым обращением идет группа операторов присваивания, задающих значения переменных a,d,c. Этого нагромождения операторов присваивания можно избежать, используя процедуру с параметрами.

Кроме того, в данной программе переменная p используется как вспомогательная переменная внутри процедуры и в основной программе не используется. Поэтому имеет смысл описать эту переменную внутри процедуры.

Запишем теперь эту же программу, но используя процедуру с параметрами.

Program F2;

var AB,BC,CD,DA,AC,s1,s:real;

procedure TriangleSquare(a,b,c:Real;Var s:Real);

var p:Real;

begin

p:=(a+b+c)/2;

s:=Sqrt(p*(p-a)*(p-b)*(p-c));

end;

Begin

Read(AB,BC,CD,DA,AC);

TriangleSquare(AB,BC,AC,s1);

TriangleSquare(DA,AC,CD,s);

WriteLn(s+s1);

End.

Не трудно заметить, что данная программа, записанная с помощью процедуры с параметрами, гораздо нагляднее, понятнее, компактнее, чем программа, записанная с использованием процедуры без параметров, и, тем более, без использования подпрограмм. Но в случае, когда имеется только один выходной параметр, гораздо удобнее использовать подпрограмму – функцию. Так при использовании функции вычисления площади треугольника методом Герона данная программа будет выглядеть следующим образом.

 

Program F2;

var AB,BC,CD,DA,AC:real;

function TriangleSquare(a,b,c:Real):Real;

var p:Real;

begin

p:=(a+b+c)/2;

TriangleSquare:=Sqrt(p*(p-a)*(p-b)*(p-c));

end;

Begin

Read(AB,BC,CD,DA,AC);

WriteLn(TriangleSquare(AB,BC,AC)+TriangleSquare(DA,AC,CD);

End.

 



<== предыдущая лекция | следующая лекция ==>
Строковые переменные и строковые константы | Отладка программы


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.641 сек.