Элективный курс "Программирование"
Арифметические выражения
Рассмотрим подробно арифметические выражения, т.к. именно с их помощью выполняются все вычисления в программе.
Результатом арифметического выражения является целое или вещественное значение. Выражение задает порядок действий над элементами данных и состоит из:
- операндов (констант, переменных, функций);
- знаков операций;
- круглых скобок.
Арифметические операции
Операции определяют действия, которые надо выполнить над операндами. В отличие от традиционной математической записи обязательно указывать все знаки операций.
Например, в выражении (х+у) *5-10 операндами являются переменные х и у, а также константы 5 и 10; а +, * — знаки арифметических операций сложения и умножения соответственно. Символ операции умножения — * (звездочка) должен присутствовать в явном виде. Если все объекты, входящие в выражение, определены в момент их использования (в нашем примере — это переменные х и у), то значение выражения считается определенным.
В простейшем случае выражение может состоять из одной переменной или константы. Круглые скобки ставятся так же, как и в обычных математических выражениях для управления порядком выполнения операций.
Операции DIV и MOD
Целочисленное деление div (от division, деление) отличается от обычной операции деления тем, что возвращает целую часть частного, а дробная часть отбрасывается — 13 div 3 = 4, а не 4,(3). Результат div всегда равен нулю, если делимое меньше делителя.
Например:
11 div 5 = 2
10 div 3 = 3
2 div 3 = 0
123 div 4 = 30
17 div (-5) = -3
-17 div 5 = -3
-17 div (-5) = 3
Взятие остатка от деления mod (от modulus, мера) вычисляет остаток, полученный при выполнении целочисленного деления.
Например:10 mod 5 = 0
11 mod 5 = 1
10 mod 3 = 1
14 mod 5 = 4
17 mod (- 5) = - 2
-17 mod 5 = -2
-17 mod (-5) = 2
Аргументы операций div и mod — целые числа. Взаимосвязь между операциями div и mod проста. Для а>0 и b>0 справедливо:
a mod b = a – (a div b)*b
(a div b)*b + (a mod b) = a
Обратите внимание — операцию mod можно использовать, чтобы узнать, кратно ли целое а целому b. А именно, а кратно b тогда и только тогда, когда а mod b = 0.
Приоритет операций
| Операция | Приоритет | Вид операции |
| not, @ | Первый (высший) | Унарная операция |
| *, /, div, mod, and, shl, shr | Второй | Операции типа умножения |
| +, —, or, xor | Третий | Операции типа сложения |
| =, < >, <, >,<=, >=, in | Четвертый | Операции отношения |
Обратите внимание — операции с равным приоритетом выполняются слева направо. Выражение, заключенное в скобки, перед выполнением вычисляется как отдельный операнд. При наличии вложенных скобок вычисления выполняются, начиная с самых внутренних. В тексте программы необходимо проверять парность расстановки скобок: число открывающих скобок должно быть равно числу закрывающих скобок.
Арифметические процедуры и функции
| Стандартная функция | Выполняемое действие | Тип | |
| аргумента | результата | ||
| abs (x) | |x| | real | real |
| integer | integer | ||
| sqr (x) | x2 | real | real |
| integer | integer | ||
| sqrt (x) | x1/2 | real | real |
| integer | real | ||
| exp (x) | ex | real | real |
| integer | real | ||
| ln (x) | ln (x) | real | real |
| integer | real | ||
| sin (x) | sin (x) | real | real |
| integer | real | ||
| cos (x) | cos (x) | real | real |
| integer | real | ||
| arctan (x) | arctg (x) | real | real |
| integer | real | ||
| pi | число Π | - | real |
Вызов стандартной функции осуществляется путем указания в нужном месте программы имени функции (аbs, ln, ехр и др.) и ее аргумента, заключенного в круглые скобки. После вычисления значения функции ее вызов заменяется результатом, и расчет содержащего ее выражения продолжается дальше.
Следует знать:
- аргумент прямых тригонометрических функций sin и соs задается в радианах.
Для преобразования значения угла из радианной меры в градусную необходимо умножить величину угла на число 180/рi.
Для перевода значения угла из градусной меры в радианную необходимо умножить величину угла на число pi/180. - результат функции агсtаn получается в радианах;
- функция random ( N ) возвращает случайное число х, удовлетворяющее условию 0<=х<N. Тип аргумента и результата — word. В том случае, если нам необходимы целые случайные числа из диапазона A<=х<=B, мы можем получить их, используя выражение A+random (B-A+1).
Если параметр диапазон не указан, то random возвращает число х в диапазоне 0<=х<1. Тип результата — rеаl. В том случае, если нам необходимы вещественные случайные числа из другого диапазона: A < х< B, мы можем задать его при помощи A+B*random.
Перед первым обращением к функции random необходимо с помощью вызова процедуры randomize инициализировать программный генератор случайных чисел. В противном случае при каждом запуске программы датчик будет выдавать одни и те же числа. Эту особенность можно использовать при отладке программы; - процедура dec(х,n) уменьшает значение целочисленной переменной х на n .
Например, х:=10; dec (х, 2); {результат: 8} .
При отсутствии необязательного параметра n процедура принимает вид deс(х) , а значение х уменьшается на единицу; - процедура inc(х,n) увеличивает значение целочисленной переменной х на n.
Например, х:=10; inc(х,3); {результат: 13}.
При отсутствии необязательного параметра n процедура принимает вид inс (х), а значение х увеличивается на единицу; - функция frас(х) вычисляет дробную часть х.
Аргумент и результат — rеаl.
Например write (frас(0.25*11) :4:2); {результат 0.75}; - функция int (х) вычисляет целую часть х.
Аргумент и результат — rеа1.
Например, write(int(422.117) :4:2) ; {результат 422.00}.
Таким образом, х=int (х) +frас (х). - функция преобразования типа trunc(х) возвращает ближайшее целое число, меньше или равное вещественному х, для х>=0 , и больше или равное х, для х<=0 (от truncate, усекать). Таким образом, выполняется отбрасывание десятичных знаков после точки.
Аргумент — rеаl , результат — longint.
Например:
trunc ( 6.7); {результат: 6},
trunc;(-1.6); {результат:-1}. - Функция преобразования типа round(х) возвращает значение х, округленное до ближайшего целого числа (от round, круглый).
Аргумент — rеаl, результат — longint.
Например:
round (6.7); {результат:7},
round(-1.6); {результат:-2}. - Вычисление степени числа выполняется в Тurbо Раsсаl с использованием свойств логарифмов:
c=ab => Ln(c)= b*Ln(a) => c=eb*Ln(a) => c:=exp(b*Ln(a));
Таким образом, нельзя возвести в степень отрицательное число. Для этого можно использовать операторы циклов. - Для вычисления логарифма с основанием а используем:
Loga(x)=Ln(x)/Ln(a); - В Тurbо Раsсаl определены только три тригонометрические функции: sin, соs, аrсtg. Для вычисления остальных тригонометрических функций необходимо использовать известные соотношения:
tg(x)=sin(x)/cos(x);
ctg(x)=cos(x)/sin(x);
csc(x)=1/sin(x);



