АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

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

Читайте также:
  1. II. Выполнение процедуры
  2. III. Завершение процедуры
  3. III. Завершение процедуры
  4. III. Окончание процедуры
  5. XVIII. ПРОЦЕДУРЫ И ФУНКЦИИ
  6. Абстрактные классы и чистые виртуальные функции. Виртуальные деструкторы. Дружественные функции. Дружественные классы.
  7. Аналитические методы при принятии УР, основные аналитические процедуры, признаки классификации методов анализа, классификация по функциональному признаку.
  8. Аналитические процедуры
  9. Аналитические процедуры аудита
  10. Банки и их функции. Банковская система
  11. Банкротство: понятие, факторы, процедуры
  12. В 72-х дневном цикле подвиг длится 8 суток, из которых 2 суток – голод, а 6 – очистительные процедуры и работа над собой. В 12-ти летнем цикле подвиг длится 1 год.

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

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

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

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

Наиболее часто используемые арифметические встроенные функции:

ABS(X) – вычисление абсолютной величины Х;

ARСTAN(X) – вычисление угла, тангенс которого равен Х, значение угла представляется в радианах;

COS(X) – вычисление косинуса Х, параметр задает значение угла в радианах;

SIN(X) - вычисление косинуса Х, параметр задает значение угла в радианах;

EXP(X) – вычисления значения еХ;

INT(X) – вычисление целой части Х;

LN(X) – вычисление натурального логарифма Х;

SQR(X) – возведение значения Х в квадрат;

SQRT(X) – извлечение квадратного корня из Х;

PI – функция возвращает значение числа p;

RANDOM(N) – генерирует значение случайного числа в диапазоне от 0 до N, тип результата целочисленный;

RANDOM – генерирует значение случайного числа в диапазоне от 0 до 0,99, тип результата вещественный.

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

tg(x)=sin(x)/cos(x); ctg(x)=cos(x)/sin(x);

lg(x)»0,43429ln(x); ;

; .

В Паскале нет функции возведения в степень, поэтому для вычисления ZX необходимо записать EXP(X*LN(Z)), причем число Z должно быть больше нуля.

Встроенные процедуры ввода-вывода (WRITE, WRITELN, READ, READLN) были рассмотрены ранее.

Функция, определенная пользователем, состоит из заголовка и тела функции и имеет формат:

FUNCTION имя функции[(формальные параметры)]: тип результата;

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

BEGIN

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

END;

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

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

имя функции [(фактические параметры)];

Процедуры пользователя. Описание такой процедуры включает заголовок (имя) и тело процедуры. Заголовок состоит из зарезервированного слова PROCEDURE, имени процедуры и необязательного заключенного в круглые скобки списка формальных параметров с указанием типа каждого параметра. Имя процедуры – идентификатор, уникальный в пределах программы, тело процедуры – локальный блок по структуре аналогичный программе на Паскале. Формат записи процедуры:

PROCEDURE имя процедуры [(формальные параметры)];

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

BEGIN

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

END;

Для обращения к процедуре используется оператор вызова процедуры:

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

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

Если процедура возвращает в программу какие-либо значения, то соответствующие переменные должны быть описаны в разделе описаний переменных. [10, 11]

Пример 15. Программы нахождения факториала:

а) с использованием функции.

PROGRAM FAKT1;

USES CRT;

VAR N,M,F1,F2: integer;

FUNCTION F(K: integer): integer;

VAR FAKT,I: integer;

BEGIN

FAKT:=1

FOR I:=1 TO K DO FAKT:=FAKT*I;

F:=FAKT;

END;

BEGIN {основная программа}

CLRSCR;

READ (N,M);

F1:=F(N); F2:=F(M); {обращение к функции}

WRITELN(‘ ‘,N:3,’!=’,F1:7);

WRITELN(‘ ‘,N:3,’!=’,F2:7);

END.

б) с использованием рекурсивной функции.

PROGRAM FAKT3;

USES CRT;

VAR N: integer;

FUNTION FACT(I: integer):longint;

BEGIN

IF I=1 THEN FACT:=1

ELSE FACT:=I*FACT(I-1)

END;

BEGIN {основная программа}

CLRSCR;

READ (N);

F1:=FACT(N); {обращение к функции}

WRITELN(‘ ‘,N:3,’!=’,F1:7);

END.

в) с использованием процедуры.

PROGRAM FAKT2;

USES CRT;

VAR N,M: integer;

PROCEDURE F(K: integer);

VAR FAKT,I: integer;

BEGIN

FAKT:=1

FOR I:=1 TO K DO FAKT:=FAKT*I;

WRITELN(‘ ‘,K:3,’!=’,FAKT:7);

END;

BEGIN {основная программа}

CLRSCR;

READ (N,M);

F(N); F(M); {обращение к процедуре}

END.


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.006 сек.)