Операции и стандартные математические функции в паскале. Стандартные арифметические функции в паскале. Функции в Паскале — мега переменные

31.01.2019 Learnpascal

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

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

Процедуры — мини-программы.

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

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

Program superpuper; var очень много буковок; procedure ampersand; begin write("&&&&&&&&&&&&&&&&&&&&"); end; begin суперсложный код; ampersand; суперсложный код; ampersand; суперсложный код; ampersand; суперсложный код; ampersand; end.

Функции в Паскале — мега переменные.

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

Пример: a:=sqr(4).

Обратите внимание! Функции необходимо присваивать! Просто написав их в тексте программы, как процедуры, вы ничего не добьетесь!

Структура функции представлена на картинке ниже.

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

Математические функции

Имя Тип аргумента Результат вычисления Пример
Abs(x) Целый или Вещ. Модуль х Abs(-6) = 6
Sqrt(x) Вещественный Корень из х Sqrt(25)=5
Sqr(x) Целый и Вещ. Квадрат х Sqr(5)=25
Power(x, a) Вещественный Значение х а Power(5,3)=125
Frac(x) Вещественный Дробная часть х Frac(5.67)=0.67
Sin(x) Вещественный Синус х Sin(45)=0.8509
Cos(x) Вещественный Косинус х Cos(45)=0.5253
Arctan(x) Вещественный Арктангенс х Arctan(5)=1.3734
Int(x) Вещественный Целая часть х Int(5.67)=5.0
Random(x) Целый Случайное число (0..х-1) Random(5)=4
Succ(x) Порядковый Следующий Succ(10)=11
Pred(x) Порядковый Предыдущий Pred(‘Z’)=’Y’

Математические процедуры

Inc(x, a) Целый X:=X+A Inc(5)=6
Dec(x, a) Целый X:=X-A Dec(25,20)=5

Преобразование типов

Trunc(x) Вещественный Целая часть х Trunc(5.67)=5
Round(x) Вещественный Округление х до целого Round(5.67)=6
Важно! Если х = 5.5, то результат – 6, а если х = 6.5, то результат тоже 6!?

Операции div и mod.

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

Div

Для того, чтобы найти частное от деления, мы используем операцию div.

  • 25 div 20 = 1;
  • 20 div 25 = 0;
  • 39 div 5 = 7;
  • 158 div 3 = 52.

Mod

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

  • 25 mod 20 = 5;
  • 20 mod 25 = 0;
  • 39 mod 5 = 4;
  • 158 mod 3 = 2.

Чтобы окончательно понять, с чем мы имеем дело, решим следующую задачу:

Задача 1. Найти сумму цифр двухзначного числа.

Так как эта задача очень простая, мы с вами обойдемся блок-схемой и программой.

Блок-схема program Sumoftwo; var Number, Num1, Num2, Sum: integer; begin write("Введите двухзначное число: "); read(Number); { Возьмем число 25 } Num1:= Number div 10; { 25 div 10 = 2 } Num2:= Number mod 10; { 25 mod 10 = 5 } Sum:= Num1 + Num2; { 2 + 5 = 7 } write("Сумма двух чисел -- ", Sum); end.

Задача 2. Найти сумму цифр трехзначного числа.

Чуть усложненная версия предыдущей задачи. Самая большая сложность — вторая цифра.


Приоритет div и mod больше, чем приоритете + и -. Поэтому в данной программе можно обойтись без скобок. program Sumoftree; var Number, Sum: integer; begin write("Введите трехзначное число: "); read(Number); { Возьмем число 255 } Sum:= Number div 100 + Number mod 10 + Number div 10 mod 10; { 255 div 100 + 255 mod 10 + 255 div 10 mod 10 = 12 } write("Сумма трёх чисел -- ", Sum); end.

Вот и всё. На следующем уроке мы с вами начнём изучать особенности PascalABC.Net.

Тема: Математические функции в Паскале

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

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

Пример: a:=sqr(4).

Обратите внимание! Функции необходимо присваивать! Просто написав их в тексте программы, как процедуры, вы ничего не добьётесь!

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

Математические функции

Тип аргумента

Результат вычисления

Целый или Вещ.

Вещественный

Корень из х

Целый и Вещ.

Квадрат х

Вещественный

Значение х а

Вещественный

Дробная часть х

Вещественный

Синус х в радианах

Вещественный

Косинус х в радианах

Вещественный

Арктангенс х в радианах

Arctan(5)=1.3734

Вещественный

Целая часть х

Целый или Вещ.

Случайное число (0..х-1)

Порядковый

Следующий

Порядковый

Предыдущий

Pred(‘Z’)=’Y’

Математические процедуры

Преобразование типов

Вещественный

Целая часть х

Вещественный

Округление х до целого

Важно! Если х = 5.5, то результат – 6, а если х = 6.5, то результат тоже 6!?

Операции div и mod рассмотрим по подробней.

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

Для того, чтобы найти частное от деления, мы используем операцию div.

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

Чтобы окончательно понять, с чем мы имеем дело, решим следующую задачу:

Задача 1 . Найти сумму цифр двухзначного числа.

Так как эта задача очень простая, мы с вами обойдемся блок-схемой и программой.

Блок-схема

    program Sumoftwo;

    var Number,Num1,Num2,Sum: integer;

    write("Введите двухзначное число: ");

    read(Number); { Возьмем число 25 }

    Num1:= Number div 10; { 25 div 10 = 2 }

    Num2:= Number mod 10; { 25 mod 10 = 5 }

    Sum:= Num1 + Num2; { 2 + 5 = 7 }

    write("Сумма двух чисел -- ",Sum);

Задача 2 . Найти сумму цифр трехзначного числа.

Чуть усложнённая версия предыдущей задачи. Самая большая сложность - вторая цифра.

Приоритет div и mod больше, чем приоритете + и -. Поэтому в данной программе можно обойтись без скобок.

    program Sumoftree;

    var Number,Sum: integer;

    write("Введите трехзначное число: ");

    read(Number); { Возьмем число 255 }

    Sum:= Number div 100 + Number mod 10 + Number div 10 mod 10; { 255 div 100 + 255 mod 10 + 255 div 10 mod 10 = 12 }

    write("Сумма трёх чисел -- ",Sum);

Итоги урока.

Домашнее задание.


Окончание табл. 2

TRUNC(X) ROUND(X) Выделение целой час­ти числа Округление Х до бли­жайшего целого вещественный целый
PRED(X) SUCC(X) Нахождение предшествующего значения (в его типе) Нахождение последующего элемента (значе­ния, следующего за Х в его порядковом типе) целый, логический или символьный
ORD(X) Определение порядко­вого номера символа Х в наборе символов или его перечислимом типе символьный целый
CHR(X) Определение значения символа по его порядковому номеру целый символьный
ODD(X) Логическая функция проверки нечетности целый логический
Frac(X) Int(X) Дробная часть числа Целая часть числа вещественный вещественный

Целые типы в Pascal ABC

В Pascal ABC имеется три стандартных типа целых чисел: Byte, Integer и Word. Диапазон их возможных значений зависит от внутреннего представления числа, которое может занимать один, два или четыре байта. В таблице 3 приведены характеристики этих целых типов.

Таблица 3

Классификация целых типов

Компилятор языка Pascal ABC определяет максимальное значение MAXINT для данных типа INTEGER. При этом справедливо будет соотношение:

MAXINT <= K <= MAXINT

Описание переменных целых типов производится в разделе описаний VAR:

Var <имя переменной> : <целый тип>;

где <целый тип > может быть определен как Byte, Integer или Word.

Например:

VAR K: INTEGER;

I, J: BYTE;

Для целых типов определены следующие операции: сложение, вычита­ние (имеют более низкий приоритет), умножение и деление - DIV, MOD. К целым типам применимы функции из таблицы 4. Функции TRUNC(X) и ROUND(X) с вещественным аргументом также дают целый результат (см. табл. 2). Стандартные математические функции в случае задания целого аргумента всегда возвращают вещественные значения (см. табл. 2).

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

Таблица 4

Встроенные процедуры и функции для целых типов

Вещественные типы

В отличие от целых типов значения вещественных типов опреде­ляют число с десятичной точкой лишь с некоторой точностью, зависящей от внутреннего представления числа. Вещественное число в памяти ПК хранится в формате, состоящем из знака, мантиссы и порядка числа. Десятичная точка подразумевается стоящей перед левым (старшим) разрядом мантиссы (такая мантисса называется нормализованной). При выполнении операций десятичная точка сдвигается путем выполнения умножения мантиссы наE (символ экспоненты) с порядком.

Например, запись числа в виде: <знак> <мантисса> Е <порядок> соответствует представлению числа <знак> <мантисса>*10 < порядок > .

В Pascal ABC используются только два вещественных типа – REAL и COMPLEX , характеристики которых приведены в таблице 5.

Таблица 5

Вещественные типы

Объявление переменных вещественных типов производится в разделе описаний переменных VAR аналогично переменным целых типов в виде:

Var <переменная> : <вещественный тип>;

где <вещественный тип > может быть задан только Real или Complex .

Для работы с вещественными типами определены стандартные функ­ции: sin, cos, arctаn, ln, exp, sqr, abs, sqrt (табл. 2), а также функции вещественного типа (табл. 6).

Таблица 6

Встроенные функции вещественного типа

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

Выражения

Константы и переменные

Константы и переменные могут принимать значения любого из разрешенных типов данных в заданных диапазонах.

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

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

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

Вычисление значений выражений выполняется в определенном порядке, показанном таблице 2.3.

Таблица 2.3

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

Например: Sin(X) + Cos(A/2+Z) - Log(7) .

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

1) имя функции должно строго соответствовать имени;

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

Таблица 2.4

Запись на Паскале Название функции Тип аргумента Тип результата
Abs(X) Абсолютная величина Integer Real Совпадает с типом X
Sqr(X) Вычисляет X во 2-ой степени Integer Real Совпадает с типом X
Sin(X) Cos(X) ArcTan(X) Синус, косинус и арктангенс X Integer Real Real
Exp(X) Экспоненциальная функция e x Integer Real Real
Ln(X) Логарифм натуральный Вещественный или целый Вещественный
Exp10(X) Log(X) Данные функции аналогичны Exp(X ) и Ln(X ), но по основанию 10 Вещественный или целый Вещественный
Sqrt(X) Корень квадратный числа X Вещественный или целый Вещественный
Odd(X) Выдает True, если X нечетный и False, если X четный Целый Булевский
Trunc(X) Выдает целую часть X , дробная часть отбрасывается Вещественный Целый
Round(X) Округляет X до ближайшего целого Вещественный Целый

Примечание . Тангенс x вычисляется как ; возведение в степень производится по следующей формуле: a x =Exp (x*Ln(a)) .

4.3. Стандартные функции в Turbo Pascal 7

В языке Паскаль существует ряд заранее разработанных подпрограмм-функций, которые можно использовать как готовые объекты. В Turbo Pascal их количество увеличено по сравнению со стандартом языка, и все они объединены в стандартные модули (см. п. 16). В данном разделе рассмотрены наиболее часто используемые стандартные функции. Стандартные функции ввода-вывода и динамического распределения памяти описаны в пп. 11 и 7 соответственно. Другие стандартные функции (работы со строками, указателями и адресами и т. д.), а также более подробное рассмотрение всех упомянутых выше функций, приведены в п. 16.

4.3.1. Арифметические функции

Арифметические функции можно использовать только с величинами целого и ипцественного типа. Их перечень приведен в табл. 4.

Таблица 4. Арифметические функции

Функция Назначение Тип результата
Abs(X) Абсолютное значение аргумента Совпадает с типом X
Arctan(X) Арктангенс аргумента Вещественный
Cos(X) Косинус аргумента Вещественный
Ехр(Х) е x Вещественный
Frac(X) Дробная часть числа Вещественный
Lnt(X) Целая часть числа Вещественный
Ln(X) Натуральный логарифм Вещественный
Pi Значение величины Pi=3.1415926535897932385 Вещественный
Sin(X) Синус аргумента Вещественный
Sqr(X) Квадрат аргумента Совпадает с типом X
Sqrt(X) Квадратный корень аргумента Вещественный

Примечание. Если функция используется с ключом компилятора {$N+}, то вместо величины типа Real она вычисляет величину типа Extended.

Пример.

{$N-}
begin
Р:= Pi {3.1415926536E+00}
end.

{$N-}
begin
Р:= Pi {3.1415926535897932385E+0000}
end.

4.3.2. Функции преобразования типа

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

Chr (X) - преобразование ASCII-кода в символ.

Аргумент функции должен быть целого типа в диапазоне (0..255). Результатом является символ, соответствующий данному коду.

High(X) - получение максимального значения величины.

Аргумент функции - параметр или идентификатор порядкового типа, типа-массива (см. п. 6.1), типа-строки (см. п. 6.2) или открытый массив (см. п. 10.3.5).

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

Low(X) - получение минимального значения величины.

Аргумент функции - параметр или идентификатор порядкового типа, типа-массива (см. п. 6.1), типа-строки (см. п. 6.2) или открытый массив (см. п. 10.3.5). Результат функции для величины порядкового типа - минимальное значение этой величины, типа-массива - минимальное значение индекса, типа-строки или открытого массива - 0.

Ord(X) - преобразование любого порядкового типа в целый тип.

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

Round (X) - округление вещественного числа до ближайшего целого.

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

Trunc(X) - получение целой части вещественного числа.

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

4.3.3. Функции для величин порядкового типа

Эти функции позволяют выполнить ряд действий над величинами порядкового i типа (найти предыдущий или последующий элемент, проверить число на нечетность) . К этим функциям относятся следующие:

Odd(X) - проверка величины X на нечетность.

Аргументом функции является величина типа Longint, результат равен True, если аргумент нечетный, и False - если четный.

Pred(X) - определение предыдущего значения величины X.

Аргументом функции является величина любого порядкового типа, результатом - предшествующее значение того же типа (например, Pred(2) равно 1). При применении функции к первому элементу последовательности возникает ошибка.

Succ(X) - определение последующего значения величины X.

Аргументом функции является величина любого порядкового типа, результатом - последующее значение того же типа (например, Succ(2) равно 3). При применении функции к последнему элементу последовательности возникает ошибка.

Понравилась статья? Поделитесь ей
Наверх