русс | укр

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

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

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

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


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

Процедуры и функции

При записи алгоритма на алгоритмическом языке высокого уровня (в том числе и на ТР) пользователю предоставляется возможность создавать в рамках разрабатываемой программы свои собственные операторы (процедуры) и операции (функции).

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

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

procedure <имя>(<формальные параметры>);{заголовок процедуры}

<секция описаний процедуры>

begin

<секция действий процедуры>

end;

function <имя>(<формальные параметры>):<тип>;{заголовок функции}

<секция описаний функции>

begin

<секция действий функции>

end;

Заголовок подпрограммы служит для организации обмена данными (параметрами) между программой и подпрограммой (исходные данные для работы подпрограммы и результаты работы подпрограммы). В функции один из результатов работы подпрограммы приписывается ее имени, тип результата (и функции) – <тип> – указывается в заголовке. В качестве типа <тип> может использоваться любой простой, строковой или ссылочный. В секции описаний подпрограммы приводятся описания локальных (внутренних) меток, констант, типов данных, переменных и подпрограмм, в секции действий подпрограммы записывается алгоритм работы подпрограммы. При обращении к подпрограмме указывается ее имя и фактические параметры.

Формальные параметры представляют собой список через «точку с запятой» предложений вида:

[var/const]<список переменных>:<имя типа>

Необязательные параметры var и const указывают способ передачи данных. Ключевое слово var означает, что данные передаются по адресу. Такие данные называются параметрами-переменными. Ключевое слово const означает, что данные передаются по адресу, но с защитой от изменения их значений. Такие данные называются параметрами-константами. Если перед списком переменных ключевое слово отсутствует, то данные передаются по значению. Такие параметры называются параметрами-значениями.

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

Вызов процедуры (как самостоятельного оператора):

<имя>(<список фактических параметров>)

Вызов функции (в выражении, где допустим тип функции):

…<имя>(<список фактических параметров>)…

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

Тип передачи Ключевое слово Фактический параметр
По значению - Любые выражения соответствующего типа
По адресу var Имена переменных
По адресу const Любые выражения соответствующего типа

Между формальными (в описании подпрограммы) и фактическими (при обращении к подпрограмме) параметрами должно быть согласование по количеству, типам и порядку следования. (!)

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

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

Вот примеры использования подпрограмм (процедур и функций) в Паскале:

1. Программа вычисляет величину y=max(min(x1,x2,x3),max(min(x3,x5,x4),x4))

program minmax;

var y,x1,x2,x3,x4,x5:real;

function max(a,b:real):real;

begin if a>b then max:=a else max:=b end;

function min(a,b:real):real;

begin if a<b then min:=a else min:=b end;

begin

readln(x1,x2,x3,x4,x5);

y:=max(min(x1,min(x2,x3)),max(min(x3,min(x5,x4)),x4));

writeln(y)

end.

Обратите внимание на порядок обращений к подпрограммам!

2. Программа подсчитывает количество символов ‘A’,’B’ и ‘C’ в введенной пользователем строке:

program ABC;

var s:string; i:integer;

procedure kolABC(s:string; var kolA,kolB,kolC:integer);

begin

kolA:=0; kolB:=0; kolC:=0;

for i:=1 to length(s) do

case s[i] do

‘A’: kolA:=kola+1;

‘B’: kolB:=kolB+1;

‘C’: kolC:=kolC+1;

end;

end;

begin

readln(s);

kolABC(s,kolA,kolB,kolC);

writeln(kolA,kolB,kolC);

end.

Функция ввода данного типа integer с защитой:

function enter_integer(s:string):integer;

var i,n:integer;

begin

repeat

readln(s);

val(s,n,i);

if i=0 then enter_integer:=n

until i=0;

end;

Просмотров: 381


Вернуться в оглавление



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


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

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

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


 


Полезен материал? Поделись:

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

 
 

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