русс | укр

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

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

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

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


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

Функции.


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


 

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

 

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

FUNCTION Max2(P1, P2: INTEGER): INTEGER;

{(P1 > P2 --> Max2 := P1) | (P2 >= P1 --> Max2 := P2)}

BEGIN {Max2}

IF P1 > P2

THEN

Max2 := P1 {возвращаем P1 как значение Max2}

ELSE

Max2 := P2 {возвращаем P2 как значение Max2}

END; {Max2}

Синтаксические правила для объявления функции представлены ниже:

<раздел объявления функций/процедур> ::= <объявления функций/процедур> |

<объявления функций/процедур> ::= <объявление функции/процедуры>

| <объявления функций/процедур> <объявление функции/процедуры>

<объявление функции/процедуры> ::= <заголовок>; <блок>;

<заголовок>::= PROCEDURE <идентификатор> <список формальных параметров>

| FUNCTION <идентификатор> <список формальных параметров> : <тип результата>



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

FUNCTION Max3(P1, P2, P3: INTEGER): INTEGER;

{Max3 присваивается наибольшее значение из P1, P2, P3}

VAR

T: INTEGER;

BEGIN {Max3}

T := Max2(P2, P3);

Max3 := Max2(P1, T);

END; {Max3}

Когда Max2 вызывается первый раз , она возвращает наибольшее из P2, P3, которое присваивается T. Далее T используется как фактический параметр во втором вызове Max2. Поскольку вызовы функций могут появляться везде, где появляются выражения, а параметры Max2 являются параметрами-значениями, Max3 может быть переписана так, что первый вызов Max2 будет параметром в ее втором вызове.

FUNCTION Max3(P1, P2, P3: INTEGER): INTEGER;

{Max3 присваивается наибольшее значение из P1, P2, P3}

BEGIN {Max3}

Max3 := Max2(P1, Max2(P2, P3));

END; {Max3}

Выражение в операторе присваивания будет вычислено сначала вызовом Max2 для получения максимума P2, P3 и далее вызовом Max2 с P1 и результатом предыдущего вызова.

 

Следующие синтаксические правила включают вызовы функций в синтаксис выражений добавлением и к <множителю>.

 

<множитель> ::= <переменная> | <вызов функции>

|<беззнаковая константа> | (выражение) | NOT <множитель>

<вызов функции> ::= <идентификатор функции> <список фактических параметров>

<идентификатор функции> ::= <идентификатор>

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

<список фактических параметров> ::= <список фактических параметров>,

<фактический параметр> | <фактический параметр>

<фактический параметр> ::= <выражение>

 

Заметим, что <список фактических параметров> может быть пустым – функция может не иметь параметров.



<== предыдущая лекция | следующая лекция ==>
Параметры–значения и параметры–переменные. | Составные типы данных в D Pascal


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


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

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

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


 


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

 
 

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

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