Константы в Pascal.

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

Функции trunc, round в Pascal.

Для того чтобы в Паскаль можно было оперировать не только целыми числами, но и дробными существуют вещественные типы данных. Один из таких типов называется Real. В этом уроке мы рассмотрим 2 функции, которые производятся над дробными числами. Это ...

Textcolor, Window, Textbackground в Pascal.

Текст, который мы выводим на экран с помощью процедуры Writeln или с помощью оператора Write можно изменять. Процедура Textcolor используется для изменения цвета выводимого текста. Процедура Textbackground изменяет цвет фона, на котором выводится ...

Циклы и массивы

Спецификация процедуры.

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

Линейные процессы вычислений.

Простейший алгоритм представляет собой цепочку блоков (операторов) от начального блока до конечного. Каждый блок должен быть выполнен один единственный раз. Это линейный алгоритм. Он отражает ...

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

  • появляется возможность поблочной отладки больших программ, возможно, создаваемых несколькими программистами с последующим объединением отлаженных подпрограмм в единое целое;
  • экономится оперативная память, так как многократно используемые компоненты (подпрограммы) заносятся в память ЭВМ один раз;
  • облегчаются изменения программы, так как изменение одной программы не вызывает корректировку других.

Подпрограммы могут использоваться пятью способами:

  • основная программа и подпрограммы располагаются в одном файле (программном, а после трансляции — в объектном модуле);
  • тексты подпрограмм расположены в различных файлах и подключаются директивами компилятора;
  • подпрограммы организуются как оверлейные структуры и поочередно загружаются на одно и то же место в оперативной памяти ЭВМ;
  • подпрограммы пишутся на другом языке программирования и подключаются одним из вышеописанных способов;
  • подпрограммы оформляются как внешние и вызываются из основной программы. В языке Паскаль подпрограммы реализуются в виде процедур или функций.

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

FUNCTION <имя функции> (<список параметров>):<тип результата>;

где FUNCTION – служебное слово; имя функции – идентификатор функции; список параметров – перечень формальных параметров (то есть исходных данных) с указанием их типов; тип результата – данное скалярного типа, значение которого должно приобрести имя функции. На рис. 1.1 представлена в виде «Черного ящика» функция, имеющая список входных параметров и использующая переменные, описанные на более высоком уровне. Выходной параметр у функции всегда один, его называют результатом. Как правило, это данное любого скалярного типа или строка типа STRING.

podprogrammih

Допускается описание функции и без формальных параметров, примерами встроенных функций без входных параметров являются: PI (возвращает значение числа ?) и RANDOM (возвращает случайное вещественное число в интервале от 0 до 1). Заголовок функции без параметров имеет вид:

FUNCTION <имя>:<тип результата>;

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

podprogrammih.

Рис. 1.2 Структура функции без входных параметров

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

Примеры применения арифметических функций.
Пример 1. Вычислить выражение:

podprogrammih..

В формуле многократно используются операции возведения в степень и извлечения корней, которые реализуются с помощью показательной функции. Такая функция не входит в список встроенных функций языка Паскаль. Поэтому для решения этой задачи предлагается создать пользовательскую, показательную функцию PW(Z, W), где Z — основание, a W — показатель степени. Эта функция реализует вычисление по формуле Zw.


PROGRAM PR1;
VAR X, Y, А, В: REAL;
FUNCTION PW(Z, W: REAL): REAL;
BEGIN
PW := EXP(Z * LN(W))
END;
BEGIN
WRITELN('Введите значения X, A, B');
READ(X, A, B);
Y := (PW(A, X+l) + PW(ABS(X*X + 1), B) * COS(PW(X/2 + PI/8,1/3)) /PW(X*X + B*B, 1.5);
WRITELN('Y=', Y)
END.


На этом примере хорошо виден важнейший принцип использования функций, а именно, работу механизма передачи в тело функции значений параметров для осуществления расчетов. При вычислении Y функция PW вызывается четыре раза. Первый раз фактическими параметрами являются А и Х+1. При вызове функции PW происходит подстановка Z = A, W = Х+1. Теперь, когда формальные параметры Z и W определены, управление передается операторам тела функции PW. По завершении расчетов результат (вещественное число) помещается в переменную с именем PW, то есть становится доступным в исходном выражении Y, откуда и был произведен вызов. При втором вызове функции PW опять происходит вычисление и подстановка значений фактических параметров во входные переменные функции (называемые формальными параметрами) Z = ABS(X*X + 1) и W = В и т.д.
Пример 2. Вычислить выражение: Z = F(A*B,A + B,| A-B|)-2.5-F(Sin(| А| + |В|),А*В,1.5-В), где

podprogrammih...В этом примере непосредственно из самой постановки задачи видна необходимость в программировании пользовательской функции F, имеющей три формальных параметра X, Y, Z. Из математической формулы подлежащей вычислению, очевиден тип функции F и величин X, Y, Z — это вещественные переменные.


PROGRAM PR2;
VAR А, В, Z: REAL;
FUNCTION F(X, Y, Z: REAL): REAL;
VAR F1: REAL;
BEGIN
F1:= X * Y * Z;
IF F1<0 THEN F:=X+Y+Z ELSE
IF F1=0 THEN F:=X*X+Y*Y + Z*Z ELSE
F=F1
END;
BEGIN
WRITELN('Введите значения А, В'); READ(A, В);
Z := F(A*B, A + B, ABS(A-B))-2.5*F(SIN(ABS(A) + ABS(B)), A*B, 1.5*B);
WRITELN('Z =  ', Z: 12: 6)
END.


При программировании функции можно обратить внимание на то, что выражение X*Y*Z встречается четыре раза. Обычно в таком случае вводят рабочую переменную, в нашем примере F1 = X*Y*Z.
Эта переменная используется только в теле функции, а в основной программе не нужна. Поэтому переменная F1 объявляется в разделе VAR функции и поэтому доступна только из операторов этой функции. Такая переменная называется локальной переменной. Локальная переменная существует только во время выполнения функции и недоступна из тела основной программы. Переменные, объявленные в разделе описания VAR основной программы, называются глобальными, они доступы из основной программы и из всех функций этой программы. В нашем примере таких переменных три А, В, Z. Если бы была такая необходимость, то в теле функции можно бы было прочитать значение этих переменных и даже присвоить им новые значения, что, впрочем, делать не рекомендуется из соображений трудностей, возникающих при отладке. Чтобы создать качественный сайт, Вам просто необходима аренда серверов по оптимальной и доступной цене.Если функций несколько, то в них могут быть идентификаторы переменных и констант с одинаковыми наименованиями, но область их действия будет распределяться только на тот блок, где они описаны, поэтому их описания (типы данных) могут различаться.
Если в функции локальная константа или переменная имеют тот же идентификатор, что и глобальная константа или переменная, то глобальная из этой функции становится невидимой (недоступной).


Предыдущая статья: Сортировка двумерного массива.
Оглавление: Лекции по Pascal. Часть 2.
Следующая статья: Использование массивов и функций в качестве формального параметра.


Добавить комментарий

Защитный код
Обновить

   ГлавнаяПаскальЛекции по Pascal. Часть 2.Массив символов.