На прошлом уроке мы с вами вспомнили, что существуют следующие типы данных: целочисленные, вещественные, логический и строковый. К целочисленным относятся integet, byte, word, shortint, longint. Все они различаются диапазоном значений. К вещественным: real, single, double, extended. Они также отличаются диапазоном входящих в них значений. Логический тип один – boolean. Он может быть равен одному из двух значений: либо True, либо False. Символьный тип также только один – char. В него входят все символы, то есть одна переменная может быть равна только одному символу.
На этом уроке мы с вами рассмотрим арифметические операции, а также стандартные функции и процедуры.
Как вы знаете, арифметические операции и операции отношений производятся с числовыми типами, поэтому мы будем рассматривать целый и вещественный типы.
Операции над данными делятся на унарные и бинарные. Унарные операции – это операции, которые применяются к одному операнду. Бинарные операции – это операции, которые применяются к двум операндам.
В Pascal существует одна унарная арифметическая операция – изменение знака. Выглядит она следующим образом: – <величина>.
Давайте рассмотрим таблицу с бинарными арифметическими операциями. Для примера возьмём две переменных А и B.
Итак, первая операция – сложение. Обозначается знаком «плюс». Выражение выглядит следующим образом: «А + B». Если А и B – вещественного типа, например, real, обозначается буквой R, то в результате мы получим число вещественного типа. Если же А и B – целого типа, например, integer, обозначается буквой I, то в результате мы получим число целого типа. Ну и если А – целого типа, B – вещественного, или наоборот, А – вещественного типа, а B – целого, в результате мы всё равно получим число вещественного типа.
Следующая операция – вычитание. Обозначается знаком «минус». Выражение будет записано как «А – B». При вычитании типы будут в результате получаться такие же, как и при сложении. То есть, если А и B вещественного типа, то результат так же будет вещественного типа. Если А и B целого типа, то результат соответственно также будет целого типа. А если А – целого, B – вещественного, или же А – вещественного, B – целого, то результат получится вещественного типа.
Далее идёт умножение. Обозначается знаком звёздочки. Выражение выглядит следующим образом: А * B. При умножении переменных А и B, тип результата будет таким же, как и при сложении и вычитании.
Четвёртая операция – вещественное деление. В языке программирования Pascal обозначается как слэш. Выражение будет таким: A/B. При делении переменных вещественного типа, результат так же будет вещественного типа. При делении переменных целого типа, результат будет снова вещественного типа. Ведь даже если мы будем делить целое число на целое, в результате мы можем получить вещественное. Например, при делении пяти на два мы получим две целых пять десятых. А это уже вещественный тип. Даже если в результате деления получается целое число, то хранится оно будет в переменной вещественного типа. Например, при делении шести на два мы получим три. Но число три будет иметь вещественный тип. И соответственно при делении переменной целого типа на переменную вещественного или же наоборот переменную вещественного типа на переменную целого типа, результат будет вещественного типа.
Следующая операция – целочисленное деление. Обозначается в программировании, как div. Выражение будет таким: А div B. Давайте вспомним, что это такое. Пусть А =5, а B=2. Присвоим переменной C значение A div B. C будет равно 2, так как при целочисленном делении переменной присваивается целая часть от деления. Или же если А = 7, а B=2, то C=3. И так далее. При применении этой операции могут использоваться только переменные целого типа. Результат соответственно также будет целого типа.
И последняя операция – остаток от целочисленного деления. Обозначается в языке Pascal как mod. Записывается следующим образом: А mod B. В этой операции используются переменные целого типа. Результат также будет целого типа. И снова разберёмся на примере. Пусть А =5, B=2. C присвоим значение А mod B. В результате C=1. То есть при применении этой операции выделяется остаток от деления – целое число. Давайте в столбик разделим 5 на 2.
1 не делиться на цело на 2. То есть это и будет являться целочисленным остатком от деления.
Или же если мы присвоим переменной А=8, а B=3, то получим C=2. И снова давайте разделим в столбик.
2 не делиться нацело на три, соответственно наш остаток равен 2. И так далее.
Перейдём к рассмотрению стандартных функций и процедур в языке Pascal. Их называют стандартными, потому что они уже встроены в стандартный модуль System, который подключается к программе автоматически. Существует огромное количество стандартных процедур и функций. К наиболее часто используемым функциям относятся математические. К примерам часто используемых процедур относятся следующие: Read – процедура ввода данных, Write – процедура вывода дынных.
Все стандартные процедуры и функции объединены в модули, которые подключаются к основной программе и становятся доступными для использования. То есть стандартные процедуры и функции являются внешними подпрограммами по отношению к вызывающей программе. Как говорилось ранее, все часто используемые процедуры и функции объединены в модуль System.
Что же касается использования остальных процедур, которые не включены в модуль System, необходимо в начале программы (после заголовка) записать следующее:
Uses <имя модуля>
Например, для работы с графикой необходимо подключить модуль GraphABC.
Для этого необходимо после заголовка записать Uses GraphABC.
Вывод графики осуществляется в специальное графическое окно, которое появляется при выводе программы.
А теперь давайте рассмотрим таблицу со стандартными математическими функциями языка Pascal. Для примера возьмём переменную a.
Первая, Pi. Эта функция возвращает значение числа Pi с 19 знаками после запятой. Тип результата – вещественный.
Далее идёт функция abs(a). Она вычисляет модуль числа, которое прописывается в скобках. Если тип переменной a целый, то и результат будет целого типа. А если вещественный, то результат соответственно будет вещественного типа.
Далее, arctan (a). Вычисляет арктангенс числа a в радианах. Не зависимо от того, какого типа переменная a, результат будет вещественного типа.
cos (a). Находит косинус в радианах. Здесь также не важно, какого типа переменная a, так как результат будет вещественного типа.
exp (a). Вычисляет Е в степени a, то есть находит экспоненту. Е – это число Эйлера, которое равно примерно 2,718. Здесь также не важен тип аргумента, так как результат будет в любом случае вещественным.
frac (a) – возвращает дробную часть числа a. Результат будет вещественного типа. Так, например, если a=9,7, то после выполнения функции frac(a), программа выведет на экран число 0,7.
int (a). Получает целую часть числа a. Тип результата – вещественный. Если a=12,7, то после применения этой функции результат будет равен 12.
ln (a). Вычисляет натуральный логарифм a. Тип результата всегда будет вещественного типа.
random. Результат будет вещественного типа. Эта функция выдаёт псевдослучайное число в интервале от 0 до 1. Единица не включается.
random (a). Тип аргумента может быть только целого типа. Результат также будет целого типа. Данная функция выдаёт псевдослучайное целое число в интервале от 0 до a. a сюда не входит.
round (a). Тип аргумента a – вещественный, результат будет целого типа. При использовании этой функции программа округляет значение a до ближайшего целого. Так, например, если a=7,3, то результатом будет число 7. Если же a=7,8, то результатом будет число 8. Функция round – это единственный способ преобразования вещественных чисел к целому типу.
sin (a). Вычисляет синус в радианах. Тип результата всегда будет вещественным.
sqr (a). Возводит значение a в квадрат. Если a – целого типа. То результат также будет целого типа. Если же a вещественного типа, то результат, соответственно будет также вещественного типа.
sqrt (a). Вычисляет корень квадратный из значения a. Тип результата всегда будет вещественным.
trunc (a). Эта функция возвращает целую часть числа a, то есть ближайшее целое число, которое не превышает a по модулю. Тип переменной – вещественный, а вот тип результата будет целым.
Чтобы разобраться подробнее давайте заполним предоставленную таблицу.
Нам даны выражения. Необходимо вписать значения выражений в таблицу.
Итак, первая функция abs (5.7). Эта функция вычисляет модуль числа. Наше число положительное, значит ответом будет само это число.
Далее abs (-3.14). Снова функция вычисления модуля числа. Наше число является отрицательным. Модулем отрицательного числа является противоположное число. То есть 3.14.
Следующее выражение frac(4.5). Эта функция вычисляет дробную часть числа. Значит значение выражения будет равно 0.5.
int (6.98). int получает целую часть числа. Значит значение выражения будет равно 6.
Следующее выражение снова int (6.1). Целая часть равна 6.
Идём дальше. round (6.3). Функция round округляет число. Значит значение равно 6.
round (4.8). По правилам округления мы получим число 5.
sqr (4). Это функция возведения в квадрат. Ответом будет число 16.
sqr (9). Теперь нужно вычислить корень квадратный из числа. Он будет равен 3.
И последнее выражение, trunc (8.5). Данная функция получает целую часть числа. В нашем случае она будет равна 8.
Это то, что касается стандартных функций, которые необходимо знать.
А теперь давайте вспомним, что такое арифметическое выражение. Арифметическое выражение – это последовательность числовых констант, переменных, математических функций, соединённых знаками арифметических операций и круглыми скобками. Арифметическое выражение задаёт порядок выполнения действий над числовыми величинами. Одна константа или одна переменная – это простейшая форма арифметического выражения.
Возьмём для примера математическое выражение: .
На языке Pascal это выражение будет выглядеть следующим образом: .
Для правильной записи арифметических выражений, необходимо знать некоторые правила:
1. Все символы нужно писать в строчку на одном уровне. Все знаки операций должны проставляться. В математике, например, мы можем не писать знак умножения, а вот при записи на языке программирования необходимо это делать.
2. При записи выражения нельзя допускать два идущих друг за другом арифметических знака. Если же нам нужно записать x+–y, то –y обязательно нужно брать в скобки: x+(–y).
3. Необходимо соблюдать порядок выполнения действий. Сначала вычисляются функции. Далее унарная операция изменение знака и возведение в степень. После этого умножение, деление, целочисленное деление и нахождение остатка от целочисленного деления. И в последнюю очередь выполняются операции сложения и вычитания.
4. Если несколько операций одинакового приоритета записаны подряд, то нужно их выполнять слева направо.
5. Часть выражения, которая записана в скобках, вычисляется в первую очередь.
Если выражение не имеет математического смысла, например, деление на ноль, логарифм отрицательного числа и так далее, не нужно его записывать.
Давайте расставим порядок выполнения действий в примере, который рассматривали раньше.
Итак, сначала будут выполняться операции в первых скобках. Первым действием выполнится ln (y). Затем sin (x) и только после этого ln (y) + sin(x). Далее будут выполняться операции во вторых скобках. То есть в четвёртом действии будет сначала находится sqrt (y), затем 2*y. И только после этого в шестом действии будет находится 2*y + sqrt (y). В седьмом будет прибавляться к сумме первого и второго слагаемых – третье: 2*y + sqrt (y) + x. И последнее действие –деление первой скобки на вторую.
В языке Pascal нет функции для вычисления выражения xy. Но есть несколько способов записи. Давайте рассмотрим их.
Если y – целое положительное значение, то степень можно вычислить через умножение. Например, если y=4, то x4=x*x*x*x. Если же степень числа большая, то лучше выполнять вычисление в цикле.
Далее, если y является целым отрицательным числом, то мы получим следующее: xy= (1/x)|y|. Если же y=0, то x0=1.
Если же y имеет вещественное значение, не равное нулю, то будем использовать следующую математическую формулу: xy = ey ln(x). При записи на язык программирования получим следующее: exp (y*ln(x)).
Мы можем видеть, что в этом случае не допустимо нулевое или отрицательное значение для x. Для целого y такого ограничения нет.
Давайте запишем следующее выражение на языке Pascal: .
Для начала корень запишем как степень.
А теперь при помощи экспоненты запишем на языке программирования и получим такое выражение: .
Если после вычислений значения данного выражения мы получаем величину целочисленного типа, то выражение будет иметь целочисленный тип. Если же после вычислений получаем в результате вещественную величину, то выражение будет иметь вещественный тип.
А сейчас давайте подведём итоги.
Сегодня мы с вами вспомнили основные арифметические операции языка Pascal, которые применяются к числовым величинам. Также узнали, что основные процедуры и функции языка записаны в основном модуле System, и как можно подключать дополнительные модули. Рассмотрели таблицу стандартных функций языка Pascal. Вспомнили, как правильно записывать арифметические выражения на языке Pascal, а также в каком порядке следует выполнять операции.