Основные стандартные функции языка паскаль. Математические функции и процедуры в языке программирования паскаль Стандартные математические функции и процедуры паскаля
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.
Окончание табл. 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
Встроенные функции вещественного типа
При этом операции +, -, *, / в арифметическом выражении дают вещественный результат, если хотя бы один из операндов вещественный.
В программировании, довольно часто приходиться выполнять однотипные действия, причем в задачах разного уровня и класса. И для ускорения процесса написания кода эти действия выносят в специальные подпрограммы – стандартные функции. Обращение к такой подпрограмме происходит по ее имени, а в скобках указывается значение аргумента. В следующей таблице указаны те стандартные функции, которые используются в языке программирования 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) | Псевдослучайное число в интервале |
| 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 |
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
Ложь имеет место только когда X и Y ложны (нули). В том случае, чтобы истина возвращалась только тогда, когда одно из условий верно следует применить оператор XOR (исключающее или).
Наряду с другими языками программирования в языке Паскаль присутствуют средства, которые позволяют оформить подпрограмму (своеобразный вспомогательный алгоритм) к основной программе — процедуры и функции Паскаль. Они в основном применяются, когда какое-либо действие или подалгоритм повторяется множество раз в программе, либо когда есть необходимость использовать части ранее составленных алгоритмов.
Подпрограммы - это своего рода разбиения больших программ на отдельные части. Это удобно и эффективно разбивать большие программы на несколько подпрограмм, что упрощает разработку кода основной программы. Чтобы использовать подалгоритм как подпрограмму, нужно присвоить ему имя и описать алгоритм в соответствии с правилами языка Паскаль.
Далее, если появилась необходимость вызвать подалгоритм в основной программе, то упоминают в необходимом месте имя того или иного подалгоритма в сочетании со списком данных (как входных, так и выходных). Это упоминание, как правило, производит выполнение операторов, входящих в подпрограмму и работающих с указанными данными. После выполнения используемой подпрограммы работа основной программы продолжается, но уже начиная с команды, следующей сразу после вызова подпрограммы.
В Паскале можно выделить два типа подпрограмм:
- Функции
- Процедуры
Их структура описания достаточно схожа со структурой программы на Паскале, т.е. в состав процедур и функций также входят и заголовок, и раздел описаний (описание констант, меток, типов, самих функций и процедур, переменных и т.д.), и исполняемая часть (описание процедур): Структура функции в языке программирования Паскаль выглядит следующим образом:
Структура процедуры в Паскале представлена так:
Как и в формате описания функций, так и в формате описания процедур формальные параметры в заголовке функций и процедур представляются следующим образом:
var имя параметра: имя типа;
Формальные параметры разделяются запятыми; ключевое слово var в некоторых случаях может быть опущено. Когда параметры имеют одинаковый тип, то имена этих параметров перечисляют чрез запятую, указывая в конце после знака «:» имя соответствующего типа.
Когда описывают параметры, то можно пользоваться только стандартными именами типов, которые определены при помощи команды type. Процедуры вызываются с помощью оператора, имеющего следующую структуру:
имя процедуры(список фактических параметров);
В круглых скобочках указан список фактических параметров (их перечисление через «,»). Когда осуществляется вызов процедуры, то фактические параметры выступают в качестве формальных параметров, которые находятся на том же месте в заголовке процедуры. В результате передаются входные параметры, а затем происходит выполнение операторов исполняемой части, а после этого осуществляется возврат в вызывающий блок.
Функция в Паскале вызывается аналогично, однако есть возможность вызвать функцию внутри какого-нибудь выражения, т.е. имя функции может находиться в разделе условий оператора if, справа от оператора присваивания и т.д. Чтобы передать в вызывающий блок выходное значение функции в исполняемой части, перед возвратом в вызывающий блок нужно прописать команду:
имя функции:=результат;
Когда появилась необходимость вызвать процедуру и функцию, то следует руководствоваться следующими правилами
- количество формальных параметров = количество фактических параметров;
- фактические и формальные параметры должны обладать одним и тем же порядком следования и типом.
Заметка . Имена фактических и формальных параметров могут быть одинаковыми - это не вызывает никаких проблем, поскольку соответствующие им параметры в любом случае окажутся разными по той причине, что хранятся в различных областях памяти.
Для выполнения часто встречающихся операций и преобразований данных, относящихся к разным типам, существуют заранее определенные функции, которые называются СТАНДАРТНЫМИ. Для обращения к функции необходимо задать ее имя и в скобках список аргументов (параметров).
Прежде чем перейдем к стандартным функциям, сначала ознакомимся с правилами их использования:
- 1. Имя функции записывается прописными буквами латинского алфавита.
- 2. Аргумент функции записывается в круглых скобках после имени функции.
- 3. Аргументом функции может быть константа, переменная, или арифметическое выражение того же типа
Теперь рассмотрим некоторые стандартные функции:
Функция Действие Тип Х Тип возвращаемого значения
SQRT(X) вычисляет квадратный корень из аргумента Х действительный действительный
SQR(X) вычисляет квадрат аргумента Х целый действи-тельный целый действи-тельный
RANDOM(X) возвращает случайное число, перед вызовом функции желательно использовать в программе оператор RANDOMIZE включающей случайную инициализацию генератора случайных чисел целый, положительный соответствует типу переменной принимающей значение
SIN(X) вычисляет синус аргумента Х действительный действительный
COS(X) вычисляет косинус аргумента Х действительный действительный
ABS(X) вычисляет абсолютное значение (модуль) аргумента Х целый действи-тельный целый действи-тельный
ODD(X) проверяет Х на четность длинное целое логический
ORD(X) определяет порядковый номер символа Х любой тип кроме действительного длинное целое
CHR(X) определяет символ стоящий по порядковому номеру Х byte символьный
PRED(X) определяет предыдущее значение по отношению к Х любой тип кроме действительного тот же тип
SUCC(X) определяет последующее значение по отношению к Х любой тип кроме действительного тот же тип
ARCTAN(X) вычисляет арктангенс аргумента Х действительный действительный
EXP(X) вычисляет экспоненту от аргумента Х действительный действительный
LN(X) вычисляет натуральный логарифм от Х действительный действительный
TRUNC(X) находит целую часть от Х действительный длинное целое
ROUND(X) округляет Х в сторону ближайшего целого действительный длинное целое
INT(X) возвращает целую часть аргумента Х действительный действительный
FRAC(X) возвращает дробную часть аргумента Х действительный действительный
DEC(X,N) уменьшает значение переменной Х на заданное число N любой тип кроме действительного тот же тип
INC(X,N) увеличивает значение переменной Х на заданное число N любой тип кроме действительного тот же тип
PI возвращает значение числа - действительный
- 1. ORD(‘R’)=82; ORD(5)=5;
- 2. CHR(68)=’D’; можно вызывать эту функцию через #, если аргумент функции константа (#68="D");
- 3. PRED(‘N’)=’M’; PRED(87)=86;
- 4. SUCC(‘S’)=’T’; SUCC(87)=88;
- 5. PI=3.141592653897932385;
- 6. ROUND(3.1415)=3;
- 7. LN(1)=0.000;
- 8. SQRT(36)=6.000;
- 9. SIN(90*pi/180)=1.000.
Замечание:
В тригонометрических функциях аргумент должен быть задан только в радианной мере угла.
Популярное
- Война копипасту (copypast) — как защитить свой текст от копирования Стоит ли жаловаться на копипаст
- Карты памяти используются в мобильных устройствах для увеличения объема памяти для сохранения данных
- Что такое синий экран смерти?
- Как пользоваться яндекс диском и что это такое Как работает яндекс диск на компьютере
- Объединяем разделы жёсткого диска
- Ускорение подтверждения транзакции биткоин как это сделать
- Почему BIOS не видит диск (CD-DVD) и что делать?
- Как делать скриншоты на Mac?
- Как в фотошопе вырезать и вставить объект Наложение полупрозрачных изображений на фотографию в фотошопе
- Браузер теперь и для Linux


