Тип_результата ID_функции список параметров

Pascal: Занятие № 8. Подпрограммы: функции в Pascal

Функция в Паскале — это подпрограмма, которая в отличие от процедуры всегда возвращает какое-либо значение. Для этого в теле функции её имени присваивается вычисленное значение — результат, который она возвращает.

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

    локальные переменные в функции

    результат функции

    Решение:

    пример функции в паскале

    вызов функции в паскале

    Вызов функции:

    Функция суммы двух чисел на паскале

    var x,y:integer; function f(a,b:integer):integer; begin f:= a+b; end; begin writeln(‘первое число:’); readln(x); writeln(‘второе число:’); readln(y); writeln(‘сумма= ‘,f(x,y)); end.

    В рассмотренном примере использования функции в Паскале: функция f имеет два целочисленных параметра — a и b . Через двоеточие в заголовке функции (строка 2) указано, что значение, вычисляемое функцией, будет тоже целочисленным. В теле функции вычисляемая сумма присваивается имени функции. А в основной программе вызов функции осуществляется в качестве параметра оператора writeln .

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

    var x:integer; function fact(a:integer):integer; var i: integer; begin if a<=1 then begin fact:=1;exit; end; result:=2; for i:=3 to a do result:=result*i; fact:=result; end; begin writeln(‘chislo:’); readln(x); writeln(fact(x)); end.

    В рассмотренном примере функция имеет один параметр — a . Вычисляемое функцией значение имеет целочисленный тип, это указывается в заголовке функции (строка 2). В теле функции в цикле for вычисляется факториал числа. Результат вычисления присваивается имени функции (строка 9). В теле программы для вывода результата функции она вызывается в операторе writeln (строка 14), который и выводит результат на экран.

    Пример:

    Пример:

    Задача function 4. Описать функцию IsDigit(A) , которая возвращает истину, если целое число A представляет цифру (то есть A лежит в диапазоне 0–9). В основной программе вывести значение этой функции для N (N ≥ 0) данных чисел.

    Задача function 5. Вычисление степени числа с помощью функции на языке Паскаль.

    Пример:

    Задача function 6. Описать функцию Calc(A, B, Operation) вещественного типа, выполняющую над ненулевыми вещественными числами A и B одну из арифметических операций и возвращающую ее результат. Вид операции определяется целым параметром Operation : 1 — вычитание, 2 — умножение, 3 — деление, остальные значения — сложение. С помощью Calc выполнить для данных A и B операции, определяемые данными целыми N1 , N2 , N3 .

    Пример:

    Самостоятельная работа

    Пример:

    2 вариант: Описать функцию TriangleP(a, h) , находящую периметр равнобедренного треугольника по его основанию a и высоте h , проведенной к основанию ( a и h — вещественные). С помощью этой функции найти периметры трех треугольников, для которых даны основания и высоты (периметр = сумме длин всех сторон). Для нахождения боковой стороны b треугольника использовать теорему Пифагора: b 2 =(a/2) 2 +h 2 .

    Пример:

    Потренируйтесь в решении задач по теме, щелкнув по пиктограмме:

    Источник

    тип_результата ID_функции(список параметров)

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

    Тип результата определяет тип выражения, значение которого возвращается в точку ее вызова при помощи оператора return выражение; (возврат). Выражение преобразуется к типу_результата, указанному в заголовке функции и передается в точку вызова. Тип возвращаемого функцией значения может быть любым базовым типом, а также указателем на массив или функцию. Если функция не должна возвращать значение, указывается тип void. В данном случае оператор return можно не ставить. Из функции, которая не описана как void, необходимо возвращать значение, используя оператор return. Если тип функции не указан, то по умолчанию устанавливается тип int.

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

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

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

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

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

    int min (int x, int y)

    return (x<y) ? x : y;

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

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

    11.2. Вызов функции

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

    Простейший вызов функции имеет следующий формат:

    ID_функции (список аргументов);

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

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

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

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

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

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

    static int n = 0;

    printf(» %d %d %d \n», n++ , m++ , p++);

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

    В результате выполнения программы получим

    11.3. Передача аргументов в функцию

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

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

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

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

    Источник

    sotau .cbg.ru

    Ниже приведены основные математические функции, встроенные в системную библиотеку Паскаля:

    Abs (X) — возвращает абсолютное значение числа (или выражения) Х (т.е. находит модуль числа (или выражения) Х).

    Тип аргумента совпадает с типом результата:
        Если тип аргумента Х — целое, то и тип результата Abs (X) — тоже целое.
        Если тип аргумента Х — дробное, то и тип результата Abs (X) — тоже дробное.

    Sqr (X) — возвращает число, равное квадрату числа (или выражения) Х (т.е. находит квадрат числа (или выражения) Х).

    Тип аргумента совпадает с типом результата:
        Если тип аргумента Х — целое, то и тип результата Sqr (X) — тоже целое.
        Если тип аргумента Х — дробное, то и тип результата Sqr (X) — тоже дробное.

    Sqrt (X) — возвращает число, равное квадрату числа (или выражения) Х (т.е. находит квадрат числа (или выражения) Х).

    Тип результата — всегда дробное:
        Если тип аргумента Х — целое, то тип результата Sqrt (X) — дробное.
        Если тип аргумента Х — дробное, то и тип результата Sqrt (X) — тоже дробное.

    Примечание: Функцию можно применять только для X >= 0 (X — это число или выражение).

    Round (X) — функция округляет число (или значение выражения) Х до целых.

    Тип результата — всегда целое (тип только Longint):
        Если тип аргумента Х — дробное, то и тип результата Round (X) — целое.

    Пример: Round (2.8) = 3; Round (2.3) = 2.

    Trunc (X) — функция возвращает число, равное целой части числа (или значения выражения) Х.

    Тип результата — всегда целое (тип только Longint):
        Если тип аргумента Х — дробное, то и тип результата Trunc (X) — целое.

    Пример: Trunc (2.8) = 2; Trunc (2.3) = 2.

    Int (X) — функция возвращает число, равное целой части числа (или значения выражения) Х.

    Тип результата — всегда дробное (тип только Real):
        Если тип аргумента Х — дробное, то и тип результата Int (X) — тоже дробное.

    Пример: Int (2.8) = 2.0000000000E+00.

    Frac (X) — функция возвращает число, равное дробной части числа (или значения выражения) Х.

    Тип результата — всегда дробное:
        Если тип аргумента Х — дробное, то и тип результата Frac (X) — тоже дробное.

    Пример: Frac (2.1358) = 0,1358 = 1.3580000000Е-01.

    Sin (X) — возвращает синус числа (или значения выражения) Х.

    Тип результата — всегда дробное:
        Если тип аргумента Х — целое, то тип результата Sin (X) — дробное.
        Если тип аргумента Х — дробное, то и тип результата Sin (X) — тоже дробное.

    Примечание: Аргумент записывается в радианах: 1 рад — это примерно 57°, ПИ рад = 180°..

    Cos (X) — возвращает косинус числа (или значения выражения) Х.

    Тип результата — всегда дробное:
        Если тип аргумента Х — целое, то тип результата Cos (X) — дробное.
        Если тип аргумента Х — дробное, то и тип результата Cos (X) — тоже дробное.

    Примечание: Аргумент записывается в радианах: 1 рад — это примерно 57°, ПИ рад = 180°..

    Exp (X) — возвращает число, равное е в степени Х.

    Ln (X) — возвращает число, равное натуральному логарифму от числа Х.

    Pi — возвращает число ПИ.

    Inc (X, Y) — увеличивает значение числа Х на значение, равное Y. Если число Y не указано, то увеличение числа Х происходит на 1.

    Dec (X, Y) — уменьшает значение числа Х на значение, равное Y. Если число Y не указано, то уменьшение числа Х происходит на 1.

    Random (X) — возвращает случайное целое число в диапазоне [0 .. X]. Если аргумент не указан (т.е. просто написать Random), то возвращается случайное вещественное число из диапазона [0 .. 1].

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

    Примечание #1:

    Функций Тангенс и Котангенс в Паскале нет. Для их вычисления используйте выражения Sin (X) / Cos (X) и Cos (X) / Sin (X) соответственно.

    Функции возведения в произвольную степень в Паскале нет. Используйте многократное умножение для возведения в целочисленную степень, либо функцию Exp (X) и Ln (X) для возведения в вещественную (дробную) степень.

    Примечание #2:

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

    Задача #1. Ввести с клавиатуры длины катетов треугольника. Найти гипотенузу.

    Источник

    

    Pascal. Стандартные функции и выражения

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

    Функция Назначение
    ABS(x) Вычисление абсолютного значения x: |х|
    SQR(x) Вычисление квадрата x: x*x
    SIN(x) Вычисление синуса x: sin x
    COS(x) Вычисление косинуса x: cos x
    ARCTAN(x) Вычисление арктангенса x: arctg x
    EXP(x) Вычисление экспоненты (числа Е) в степени x
    EXP10(x) Вычисление 10 в степени x
    LN(x) Вычисление натурального логарифма x
    LOG(x) Вычисление десятичного логарифма x
    SQRT(x) Вычисление квадратного корня из x
    A DIV B Вычисление частного при делении А на В с отбрасыванием остатка
    A MOD B Нахождение остатка от делении А на В
    TRUNC(x) Нахождение целой части x
    RANDOM(x) Псевдослучайное число в интервале [0, x]
    ROUND(x) Округление значения x в сторону ближайшего целого
    ODD(x) Проверяет аргумент на нечетность. Результат TRUE, если аргумент нечетный, FALSE – если четный.
    ORD(x) Возвращает порядковый номер аргумента и, как следствие, преобразует величину порядкового типа в величину целого типа.
    CHR(x) Определение символа языка Паскаль по его порядковому номеру
    SUCC(x) Нахождение элемента, идущего после данного в перечне допустимых элементов
    PRED(x) Нахождение элемента, идущего перед данным в перечне допустимых элементов
    FRAC(X) Возвращает дробную часть x
    INT(X) Возвращает целую часть x
    Pi Значение математической постоянной π
    EOF(x) Возвращает TRUE, если файл находится в стоянии “конец файла”, иначе FALSE, если нет конца файла

    Выражения

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

    1) 12+3*3=21 (12+3)*3=45

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

    2) ( a >1) and ( a <=20)

    Такое логическое выражение возвращает истину, лишь в том случае, когда истинны оба выражения, т. е. если a входит в диапазон от 1 до 20 включительно. Стоит обратить внимание на скобки, здесь они необходимы для изменения приоритета, так как у операторов сравнения он низший.

    3) (a+3>0) and (a+3<15) or (b>1) and (b<10)

    Условие вернет истину, тогда когда истинными будут два условия слева или справа от OR , а также если они оба будут истинными.

    Логическая операция OR (или) суть дизъюнкция в логики и поэтому имеет следующую таблицу истинности:

    X Y X or Y
    1 1
    1 1
    1 1 1

    Ложь имеет место только когда X и Y ложны (нули). В том случае, чтобы истина возвращалась только тогда, когда одно из условий верно следует применить оператор XOR (исключающее или):

    (a+3>0) and (a+3<15) xor (b>1) and (b<10)

    4) x ^( a ) = exp( a *ln( x ))

    В Pascal нет функции возведения числа в степень (кроме степени 2), поэтому существует два пути:

    1 — умножать число само на себя, какое то количество раз;

    2 — воспользоваться функциями экспоненты и натурального логарифма.

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

    Источник

    Читайте также:  Симптомы метаболического алкалоза