Элективный курс "Программирование"

Арифметические выражения

       Рассмотрим подробно арифметические выражения, т.к. именно с их помощью выполняются все вычисления в программе.

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

  • операндов (констант, переменных, функций);
  • знаков операций;
  • круглых скобок.

Арифметические операции

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

       Например, в выражении (х+у) *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);



вверх

 
Hosted by uCoz