Арифметичні вирази

Арифметичні вирази

Арифметичні вирази складаються з констант, змінних і операцій над ними.

Вирази записуються в один рядок. У виразах використовуються лише круглі дужки, причому кількість відкритих та закритих дужок повинна бути однакова. Не можна записувати підряд два знаки арифметичних операцій. При обчисленні виразів потрібно дотримуватись пріоритету операцій.

  1. Операції виконуються зліва на право відповідно старшинству операцій.
  2. Операція обчислення функцій.
  3. Операція множення, ділення.
  4. Операції додавання та віднімання.

Звичайні дроби, багатоповерхові дроби, складні функціональні залежності тощо у мові програмування записуються в один рядок, причому порядок виконання дій контролюється за допомогою круглих дужок. Наприклад, такий математичний вираз:

на Паскаль буде мати вигляд: (a-b)/(2*c+(a/(c+(b-5)/(c-b))))
А такий:

на мові Паскаль:1E04*a-34.2*cos(beta).


Зверніть також увагу на те, що у всіх виразах обов'язково ставити знаки множення, а імена змінних - це ідентифікатори і тому вони повинні відповідати раніше зазначеним правилам.

Важливо при створенні виразів стежити за типами операндів. Як було зазначено вище, тип даних дозволяє встановлювати внутрішній формат збереження даних та контролювати дії, що виконуються над ними. Контроль за використанням змінних на етапі компіляції програми виконується в мові Паскаль автоматично. З одного боку - це її важлива перевага над іншими мовами програмування. Але з іншого - іноді не зручно те, що Паскаль майже не дозволяє автоматичне перетворення типів. Виключення зроблено тільки у відношенні до констант та змінних цілих типів, що дозволяється використовувати у виразах дійсного типу.

Наприклад, якщо змінні X та Y описані наступним чином:

Var
X: integer;
Y: real;
то оператор
Y := X+2;

синтаксично не має помилок, хоча типи змінних і не співпадають. Перетворення типів (з цілого у дійсний) в цьому випадку виконується автоматично. В той же час оператор:X := 2.78;буде помилковим, тому що автоматичне перетворення дійсних типів у цілі не виконується.

Не можна змішувати літерні та числові типи даних, тобто вираз типу: 5 + 'F' являється помилковим.

Однак відсутність автоматичного перетворення типів у Паскалі не означає, що він зовсім не має засобів перетворення даних: просто їх необхідно використовувати явно.

Oперації DIV (ділення націло) та MOD (остача від ділення) виконуються тільки з цілими типами даних і спроба використати у якості операторів для них дійсні дані призводить до помилки. Наприклад, помилковими будуть вирази
1.5 div 3 (один з операндів - дійсне число)
5 mod Y (змінна Y має дійсний тип)
4 / 1 div 2 (результатом операції ділення 4/1 буде дійсне число 4.0)

В мові програмування Pascal можна використовувати деякі готові функції для обчислення. Такими є:

  • sin(x)
  • cos(x)
  • ArcTan(x)
  • SQRT(x)
  • SQR(x)
  • abs(x)
  • exp(x)
  • ln(x)
  • round(x)

Для типів, які було розглянуто, використовуються операції “+”, ”-”, ”*”, ”/”.


При використанні функцій sin(x), cos(x) потрібно знати, що аргументи їх задаються в радіанній формі. Тому для обчислення значення цих функцій потрібно вміти використовувати переведення з радіанної міри в градусну і навпаки.
Наприклад:

Uses CRT;
Const Pi=3.1415926;
Var a,x : real;
Begin
ClrScr;
Write(‘Введіть кут ’);
Readln(x);
A:=sin(Pi*x/180);
Writeln(‘Sin(’,x:0:2,’)=’,a:0:2);
Readln;
End.

Наприклад: Обчислити вираз
 

Спочатку, використовуючи властивості логарифмічної функції, побудуємо математичну модель.

Далі, використавши функції exp(x), ln(x) напишемо програму.


uses crt;
const pi=3.1415926;
var f,x,z : real;
begin
clrscr;
write('x=');
readln(x);
z:=(x*pi)/180;
f:=exp(sin(z)*ln(x));
writeln('f(',x:0:1,')=',f:0:3);
readln;
end.