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


Оператор присваивания 
Мы уже знаем, что задать значение какой-либо переменной можно используя оператор ввода. Используется оператор ввода в тех случаях, когда значение задает пользователь в ходе выполнения программы.
Но очень часто нам необходимо задать новое значение какой-либо переменной, вычислив его по определенной формуле. В этом случае поможет нам оператор присваивания.
 
Общая форма оператора присваивания имеет такой вид
<имя переменной> := <выражение>;

Работает оператор присваивания следующим образом:
1. сначала вычисляется выражение, стоящее справа от знака присваивания;
2. полученное значение выражения сохраняется (говорят "присваивается") в переменной стоящей слева от знака присваивания. При этом старое значение переменной стирается.

Например, если нам необходимо задать переменной с значение в два раза превышающее значение переменной b, то надо будет записать так:
с := 2 * b;

Не забывайте, что в программировании нельзя опускать знаки умножения в выражении. Иначе компьютер не поймет, что вы хотите именно умножить.
Например, нельзя написать просто c := 2b, это будет неверно!

Выражение, стоящее в правой части оператора присваивания, позволяет вычислять значения по различным формулам.

Что может содержать выражение
• целые и вещественные числа (в вещественных числах целая и дробная часть разделяются точкой, а не запятой, как это принято в математике)
• знаки арифметических действий:  
+ сложение,
- вычитание,
* умножение,
div целочисленное деление,
mod остаток от деления

• вызовы стандартных функций (для некоторых из них необходимо подключить библиотеку math - для этого в самом начале программы, перед объявлением переменных, необходимо добавить строчку "uses math;")
 abs(i) модуль целого числа i  
 sqrt(x) квадратный корень из вещественного числа x
 power(x,y) вычисляет x в степени y

• круглые скобки для изменения порядка действий

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

Например, наиболее часто используемые стандартные математические функции и их запись на языке Pascal
 abs(i) модуль числа i;
 sqrt(x) квадратный корень из числа x;
 power(x,y) вычисляет x в степени y (всегда возвращает вещественное число).

Надо запомнить, что аргумент функции записывается всегда в скобках.
Для работы функции power() необходимо подключить дополнительную математическую библиотеку.
Сделать это можно, добавив строчку перед объявлением переменных:
uses math;
var ...

Запись арифметических операций
Допустим нам необходимо вычислить выражение, записанное в математическом виде таким  образом: 
\({ 2\ \cdot\ 17,56^2 \over {7\ \cdot\ 2,47\ \cdot\ 0,43}}\)

Правила записи арифметических выражений
1. Выражение может содержать числа, имена других переменных, знаки операций, круглые скобки, имена функций, арифметические операции и их знаки (+, -, *, /, div, mod).
2. Разделителем целой и дробной части является точка.
3. Выражение записывается в одну в строку (линейная запись выражений), символы последовательно выстраиваются друг за другом, проставляются ВСЕ знаки операций, используются круглые скобки.

Таким образом, следуя правилам записи арифметических выражений, мы должны перевести данную дробь (математическую запись) в линейную запись, то есть записать дробь в одну строчку. Так как числитель и знаменатель у нас сложные (то есть содержат два и более множителя), то при записи выражения в линейную форму необходимо числитель и знаменатель взять в скобки.
Таким образом линейная запись такого выражения будет выглядеть следующим образом:
 
(2*17.56*17.56)/(7*2.47*0.43)

Напишем программу для вычисления значения данного выражения. Для этого определимся с входными и выходными данными.

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

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

В программе результат сразу будем выводить на экран. Так как у нас имеется дробь, то результатом будет являться вещественное число. 
 
begin   
    writeln((2*17.56*17.56)/(7*2.47*0.43):9:6); 
end.

Запустите программу на компьютере и убедитесь что она выдает результат равный 82.949843.

 

Особенности деления в Pascal
В языке программирования Pascal существуют три операции деления:
/ - деление,
div - целочисленное деление, 
mod - вычисление остатка от деления.

Что надо запомнить:
1) Операция вычисления остатка от деления (mod) и целочисленное деление (div) выполняются ТОЛЬКО над целыми числами.
2) Операция деления (/) всегда возвращает вещественное число, и её результат нельзя записывать в целочисленную переменную.

Разберем примеры выполнения операций деления:
var i, n: integer;
    x: real;
i := 7;
x := i div 4; // x = 1.0000000000000E+000, используем целочисленное деление и записываем результат в вещественную переменную
x := i / 4; // x = 1.750000000000E+000, используем обычное деление
n := i div 4; // i = 1, так как используем целочисленное деление и записываем результат в целочисленную переменную
n := i mod 4; // n = 3, так как берём остаток от деления и записываем значение в целочисленную переменную