русс | укр

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

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

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

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


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

Описание процедур


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


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

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

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

Begin

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

End;

Раздел описаний процедуры подобен разделу описаний программы и состоит из разделов меток, констант, типов, переменных, процедур и функций. Он может отсутствовать вообще. Раздел операторов заключён в операторные скобки Begin End;

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

параметры – значений

параметры - переменных (перед ними должно стоять слово var),

параметры – процедуры (перед ними должно стоять служебное слово Procedure),

параметры – функции (перед ними должно стоять служебное слово Function)

Выполнение процедуры происходит при её вызове по имени:

Имя (фактические параметры).

Между формальными и фактическими параметрами должно быть полное соответствие:

- количество формальных и фактических параметров должно быть одинаково,

- порядок следования формалтных и фактических параметров должен быть один и тот же,

- тип каждого фактического параметра жлдэен совпадать с типом соответствующего ему формального параметра.

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



Хотя параметры процедуры делятся на отдельные виды, но в простых программах чаще всего используются параметры-значения и параметры-переменные. Данные этих параметров передаются в обоих направлениях, из программы в процедуру и наоборот.

Параметры–значения (перед ними не стоит слово var) можно передавать только в одном направлении: из программы в процедуру. То есть, параметры-значения могут быть только входным для процедуры, а параметры-переменные как входными, так и выходными.

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

Пример: Пусть в программе необходимо многократно вычислять площадь квадрата sк=а^2 и площадь прямоугольника sp=a*b при различных значениях сторон а и b.

Procedure Place (x, y: real);

Begin

Sk:=x*x

Sp:=x*y

End;

Вызвать эту процедуру можно, используя фактические переменные:

Place (A, B); где значения параметра А и В передаются в процедуру параметром X, Y.

Другой вариант:

Procedure Place (x, y: real; Var Sk, Sp: real);

Тогда обращение к ней: Place (A, B, S1, S2);

При вызове процедуры вместо переменных А, В можно указать конкретные значения: Place (2.5, 4, S1, S2).

Допускается одинаковое обозначение соответствующих формальных и фактических параметров.

Пример: В 1-ой вводимой с терминала строке подсчитать количество точек, а во 2-ой – количество букв ‘A’. Подсчёт символов реализовать в процедуре Podshet.

Program Pod;

Const Tochka =’.’;

Var S:Integer;

Procedure Podchet (Sim: Char; Var Kol:Integer);

Var C:char;

Begin kol:=0;

Writeln (‘Введите строку’);

Repeat read (c);

If c=sim then kol:=kol+1;

Until EOLN

End;

Begin Readln;

Podchet (Tochka,S);

Writeln (‘Кол-во точек=’,S:3);

Podchet (Tochka’A’,S);

Writeln (‘Кол-во букв А’,S:3);

End.

Здесь процедура Podschet имеет два формальных пар-ра:

Sim - входной параметр (параметр значения), определяет символ, который подсчитывается в строке;

Kol - выходной параметр, через который передаётся количество подсчитанных символов.

Для того, чтобы результаты работы процедуры Podschet был доступен в программе, он передается по ссылке.

Фактический параметр, соответствующий формальному параметру sim, при первом вызове процедуры задается именем константы, определенной в основной программе, а при втором вызове – в явном виде. Обе формы задания правильны, так как в качестве фактического параметра, передаваемого по значению, м. использоваться произвольное выражение соответствующего типа.

Процедуры возвращают результат в основную программу не только при помощи параметров – переменных, но непосредственно изменяя глобальные переменные. Переменные, описанные в основной программе, являются глобальными по отношению к внутренним процедурам и функциям. Переменные, описанные внутри процедур и функций, являются локальными. Локальные переменные существуют только при выполнении процедуры и недоступны в основной программе. Переменная с символьного типа, описанная в процедуре Podschet, является локальной, а переменная s целого типа, описанная в основной программе, является глобальной.

Изменим процедуру Podschet, чтобы она передавала результат своей работы через глобальную переменную.

Program Pod1;

Const Tochka=’.’;

Var s:integer;

Procedure Podshet (Sin:Char);

Var c:char;

Begin s:=0

Writeln (‘Введите строку’);

Repeat Read (c);

If c=sim then S:=s+1;

Until EOLN

End;

Begin Readln;

Podshet (tochka);

Writeln (‘Кол-во точек=’s:3);

Podshet (‘A’);

Writeln (‘Кол-во букв A=’,S:3);

End.

Программы Pod и Pod1 работают одинаково. Для конкретной задачи программист можно выбирать тот или иной способ передачи результатов работы процедуры и вызвавшую её программу.

Однако в сложных программных комплексах не рекомендуется использовать глобальные переменные, т.к. это ухудшает структурированность программы.

Пример:

Procedure Summa (A:integer;var B:Integer);

Begin A:=A+3;B:=B+3;

End;

В основной программе: A:=5; B:=5;

Summa (A,B);

Write (A,B);

Здесь значения A:=5; B:=5 передаются в процедуру, где вычисляются новые значения A=5+3=8 и B=5+3=8. Новое значение В передается в программу, а значение А нет. Поэтому в основной программе будет А=5, В=8.

Если в процедуру нужно передать в качестве параметра не просто одно значение, а массив, то в этом случае фактически параметрами является имя массива. При этом формальный параметр указывается после слова var вместе с типом массива. Само же описание массива делается в разделе type основной программы.

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

Пример: Определить длину окружности С, площадь круга S, (радиуса = R) удаление L центра окружности от начала координат. X, Y – координаты центра окружности.

1й вариант

 

 

y

 

 
 

 


R

 
 

 


y

 

 

L

 

 

x x

 

Program Ex;

Var R:Real;(*радиус*)

X,Y,:Real; (*центр*)

C:Real; (*длина окружности*)

S:Real; (*S круга *)

L:Real; (*Удаление центра*)

Procedure Round;

Begin

C:=2*Pi*R;

S:=Pi*SQR(R);

L:=SQRT (SQR(X)+SQR(Y));

End;

Begin

Writeln (‘Ввод);

Read (r,x,y);

Round; (*вызов процедуры*)

Writeln (‘Длина окр-ти=’,C:6:2);

Writeln (‘S круга=’,S:6:2);

Writeln (‘Удал-е центра=’,L:6:2);

End.

 

2й вариант

Program Ex;

Var R,X,Y,C,S,L:Real;

Procedure Round (R,X,Y:Real; Var C,S,L);

Begin

C:2*Pi*R;

S:=Pi*SQR (R);

L:=SQRT (SQR (X)+ SQR (Y));

End:

Begin

Writeln (‘Ввод’);

Read (R,X,Y);

Round (R,S,Y,S,L,C);

Writeln (‘Длина окружности=’,C:6:2);

Writeln (‘S круга=’,S:6:2);

Writeln (‘Удаление центра’,L:6:2);

End.



<== предыдущая лекция | следующая лекция ==>
ПРОЦЕДУРЫ И ФУНКЦИИ | Стандартные процедуры


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


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

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

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


 


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

 
 

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

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