Персональная страничка
Диканева Тараса
Викторовича

Главная \ Преподавательское \ Программирование для начинающих

1. Линейные программы: арифметические операторы, стандартные функции и ввод/вывод в текстовом режиме

Предыдущий раздел:

Следующий раздел:

1.4. Стандартные функции

Кроме арифметических операторов в выражениях могут участвовать функции. У функций есть аргументы и говорят, что функция возвращает значение. Аргументы пишутся в скобках вслед за именем функции, например, sin(y) – возвращает синус от значения переменной y. Возвращаемые значения можно присваивать переменным или использовать в выражениях:

  z:=sin(y);
  y:=(1+2*sin(y))/2;

Для каждой функции необходимо знать допустимый тип ее аргументов. Например, аргументом синуса должно быть выражение либо целого, либо вещественного типа. Невозможно взять синус от строки или символа. С другой стороны, например функция length(s), определяющая длину строки может быть взята только от строковой переменной.

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

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

round(y) — округление числа. Аргумент целое или вещественное число. Возвращаемое значение целого типа.

trunc(y) – отбрасывание дробной части. Возвращаемое значение целого типа.

sin(y), cos(y) – синус и косинус.

ln(y) – натуральный логарифм.

exp(y) – экспонента.

sqr(y) – возведение в квадрат. Тип возвращаемого значения зависит от типа аргумента. Если аргумент был целым, то результат будет целым. Иначе результат будет вещественным.

sqrt(y) – квадратный корень. Возвращаемое значение вещественного типа.

abs(y) – модуль. Тип возвращаемого значения зависит от типа аргумента. Если аргумент был целым, то результат будет целым. Иначе результат будет вещественным.

arctan(y) – арктангенс.

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

random – возвращает случайное число в диапазоне от 0 до 1.

pi – возвращает число π.

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

  x:=2+round(sin(2*pi*y)+2);

Следующий раздел:

Предыдущий раздел:

10 комментариев

  1. Аноним

    A чем отличается trunc от rounda?

  2. Аноним

    Все, затормозил, извиняюсь.

  3. Yulia

    Объясните, пожалуйста, почему функция sin возвращает вещественное значение и его нельзя присвоить целочисленной переменой? Или здесь целые переменные берутся как подвид вещественных?
    Аналогично, почему у квадратного корня возвращаемое значение только вещественного типа? Спасибо

  4. Taras

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

    var
      x: integer;
      y: real;
    begin
      x := 2;
      y := 2;
      ...
    

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

    В общем случае число типа real нельзя превратить в число типа integer без потерь информации, поэтому присваивания

      x := y;
      x := sin(y);
      x := sqrt(x);
    

    запрещены. Собственно, в некоторых языках (например в C++) такое разрешено, и если присваивается нецелое число, то от него просто берется целая часть. Но Паскаль рассчитан на новичков и чтобы уберечь вас от трудноуловимых ошибок, это запретили. Если хочешь взять целую часть или превратить число типа real в число типа integer, это надо делать явно:

      x := trunc(y);
      x := trunc(sin(y));
      x := trunc(sqrt(x));
    

    Ну, или то же самое с round’ом.

  5. Yulia

    Все понятно и очень интересно, спасибо

  6. Василий

    Если я понял round(y) — округление числа это больше 0,5 присваиветчя к целому числу на 1 больше, а trunc(y) – отбрасывание дробной части это для банка выкидывать после запятой даже 0,9, а sin(y), cos(y) – синус и косинус.
    ln(y) – натуральный логарифм exp(y) – экспонента и sqrt(y) – квадратный корень всегда есть вероятность дробей и потому возвращаемые значения вещественного типа, а abs(y) – модуль это положительное число, т. е отбрасывается знак что ли.

  7. ssxmp

    Для начинаюших кто знает синус и косинус!

  8. Василий_Н

    Описание функции Random немного оно верно. Оно не возвращает число в диапазоне от 0 до 1. Оно может возвращать любое число. Если написать Random(200) То он может вернуть любое число в диапазоне от 0 до 200.

  9. Феликс

    Что означает термин «возвращает»? Что возвращает? Куда? Кому?

  10. Taras

    Функция «возвращает» свое значение. sin(x) — возвращает значение синуса.
    Вызов функции это запуск некоторой подпрограммы (например, подпрограммы для вычисления синуса) и под возвращением имеется в виду возвращение в вашу основную программу.

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