Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОП Конспект лекций - Паскаль.doc
Скачиваний:
20
Добавлен:
30.11.2018
Размер:
1.46 Mб
Скачать

Тема 8: Вираження і пріоритет операцій. Стандартні математичні функції та процедури

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

Вираження визначають порядок виконання операцій. Операції визначають дії, які треба виконати над операндами.

Часто вираженням є константа, перемінна чи функція.

При складанні виражень необхідно дотримуватись наступних правил.

Вираження записуються в один рядок. Верхні і нижні індекси не допускаються. Наприклад, формула:

повинна бути записана у виді вираження:

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

варто записати у вигляді

Якщо вираження записане правильно, то кількість дужок, що відкриваються, дорівнює числу закриваючих дужок. Зайві правильно поставлені дужки не впливають на результат.

Неможна записувати підряд два знаки операцій. Наприклад, вираження:

a+b/-c записано невірно; його варто записати у видгляі

a+b/(-c).

Складні вираження потрібно розбивати на декілька простих, а повторювані дії обчислювати окремо. Наприклад, вираження:

(a+bx)-2(a+bx)+c(a+bx) варто записати в такий спосіб

x:=a+b*x

z:=y-2*y+c*y

Вираження може бути арифметичним і логічним. При виконанні операції у вираженнях слід дотримуватися пріоритету операцій (табл. 8.1).

Таблиця 8.1. Пріоритет операцій.

Пріоритет

Тип дій

Операції або елементи

1

2

3

4

5

6

Обчислення в круглих дужках

Обчислення значень функції

Унарні операції

Мультимедійні операції

Аддитивні операції

Операції відношень

( )

Функції

@, not, унарні + та -

*, /,div, mod, and, shl, shr

+ , -, or, xor

=, <>, <, >, <=, >=, in

Пріоритет операторів визначаються за наступними правилами:

Операнд, що знаходиться між двома операндами з різними пріоритетами, зв'язується з оператором, що має більш високий пріоритет.

Операнд, що знаходиться між двома операторами з рівними пріоритетами, зв'язується з оператором, що знаходиться ліворуч його.

При наявності дужок спочатку виконується дії в них, при цьому, виконання варто починати з дій у самих внутрішніх дужках.

Операції, зазначені в одному рядку, мають однаковий пріоритет.

Розглянемо приклад. Дано логічне вираження:

(a > 3) and (b = a + 6) or not (c = 4)

Визначити його результат при А = 2, В=8, С=5.

Порядок виконання операцій наступний:

Виконується операція порівняння А>С у перших дужках, її результат False, тому що 2<3;

Виконується дія в других дужках з дотриманням пріоритету – спочатку обчислюється значення А+6, а потім значення В порівнюється зі значенням А+6. Результат – True тому що 8=8;

Виконується операція порівняння С = 4 у третіх дужках, її результат False, тому що 5 не дорівнює 4;

Виконується операція Not (С = 4), її результат True, тому що Not False є True;

Виконується операція And над першими і другими дужками - False And True, результат її True;

Виконується операція Or над вираженням ліворуч і праворуч від неї - False Or True, результат її True;

Отже, остаточний результат логічного вираження – True.

Приклад. Визначення значень логічних змінних У1, У2, У3.

const

t = true; {логічна константа}

var

b1, b2, b3 : boolean; {логічні змінні}

begin

b1 := false;

b2:=t and b1;

b1 := (not b2) or (not b1);

b3 := b1 and b2 and t;

writeln (‘b1=’,b1,’ ’,’b2=’,b2,’ ‘,’b3=’,b3)

end.

Приклад. Визначити значення логічного вираження

(a>b) and (b=a+2) or not (c<>b)

при наступних даних: А=7, У=9, З=5.

var

l : boolean; {логічна змінна}

a, b, c : integer;

begin

writeln (‘Введіть цілі значення a, b, c :’);

read(a, b, c);

l:=(a>b) and (b=a+2) or not (c<>);

writeln (‘Значення логічного вираження = ‘, l)

end.

Стандартні математичні функції і процедури

Розглянемо основні математичні функції і процедури стандартної бібліотеки System Turbo Pascal.

Функції:

Abs(x) – повертає абсолютне значення х.

Наприклад, abs(-2.4)=2.4;

Cos(x) – повертає косинус числа х (х у радіанах )

Наприклад:

var

x : real;

begin

x := -46.78;

writeln(cos(x));

end.

Sin(x)-повертає синус числа х(х у радіанах).

Arctan(x)-повертає арктангенс числа х.

Exp (х)-повертає число рівне E в ступені х.

Наприклад:

var

x : real;

begin

x:=5.36;

writeln(exp(x));

end.

Ln(x) –повертає число рівне натуральному логарифму від числа х.

Наприклад:

var

x : real;

begin

x := 146.78;

writeln(ln(x));

end.

Pi –число Пі.

Наприклад:

var

r : real;

begin

r := 0.873;{радіус кола}

writeln('площа кола=',2*pi*r*r);

end.

Sqr(x) - зводить число х у квадрат.

Sqrt(x) - витягає корінь квадратний з числа х.

Наприклад:

var

x : real;

begin

x := 7.78;

writeln('x у квадраті =',sqr(x));

writeln('квадратний корінь з х=',sqrt(x));

end.

Trunc(x) - повертає число, рівне цілій частинй числа х, відкидаючи його дробову частину.

Наприклад:

var

x : real;

begin

x := -7.98;

writeln(trunc(x));

end.

Frac(x) – повертає число, рівне дробової частини числа х, відкидаючи його цілу частину

Наприклад:

var

x : real;

begin

x:=-7.98;

writeln(frac(x));

end.

Int(x) – повертає ціле число, рівне округленій частині числа х, при цьому округлення виконується убік найближчого меншого цілого числа.

Наприклад:

var

a, b, c, d : real;

begin

a := -0.97; b := -2.8; c := 0.97; d := 2.8;

writeln(‘a=’,int(a):3:1,’; b=’,int(b):3:1,’; c=’,int(c):3:1,’; d=’,int(d):3:1);

end.

Результати: a = 0.0; b = -2.0; c = 0.0; d = 2.0

Round(x) - повертає ціле число, рівне округленій частині числа х, при цьому округлення виконується за правилами математики.

Наприклад:

var a, b, c, d : real;

begin

a :=-2.3; b :=-2.5; c :=2.4; d:=2.5;

writeln(‘a=’,round(a),’b=’,round(b),’c=’,round(c),’d=’,round(d))

end.

Результати: a=-2 b=-3 c=2 d=3

Random(x) – генерує випадкові числа від 0 до х. Якщо аргумент х не заданий, то числа генеруються від 0 до 1.

Наприклад:

var x: integer;

begin

for x:=1 to 10 do

write(random(x):2,’;’);

end.

Результати:0; 0; 2; 0; 1; 4; 2; 1; 3; 4;

Odd(x)-повертає True, якщо число х непарне і Flalse - якщо парне.

Наприклад:

var x:integer;

begin

for x:=1 to 5 do

write(Odd(x),’;’);

end.

Результати: True; False; True; False; True;

Процедури:

Inc(x,y) - збільшує значення числа х на величину y. Якщо y не зазначений, х буде збільшуватися на 1.

Dec(x,y) - зменшує значення числа х на величину y. Якщо y не зазначений, х буде зменшуватися на 1.

Наприклад:

var n: integer;

begin

n := 5; writeln(‘для n=’,n);

inc(n); writeln(‘inc(n)=’,n);

n:=5;

inc(n,2);writeln(‘inc(n,2)=’,n);

n:=5;

dec(n);writeln(‘dec(n)=’,n);

n:=5;

dec(n,4);writen(‘dec(n,4)=’,n)

end.

Результати: для n=5

inc(n)=6

inc(n,2)=7

dec(n)=4

dec(n,4)=1

Randomize- забезпечує розбіжність послідовностей псевдовипадкових чисел, генеруємих функцією Random.

Наприклад:

var x:integer;

begin

randomize;

for x:=1 to 10 do

write(random((x)+1):2,’;’)

end.

Питання для контролю.

  1. В чому полягає різниця між формулою в математиці і вираженням у Pascal-і?

  2. Що визначають вираження, а що операції?

  3. Яких правил потрібно дотримуватися при складанні виражень?

  4. Яким маже бути вираження? Перелічте пріоритет операцій при виконанні дій у вираженнях.

  5. Назвіть правила визначення пріорітету операторів у вираженні.

  6. Назвіть функції що повертають

  • абсолютне значення заданого числа і косинус заданого числа;

  • синус і арктангенс заданого числа;

  • експоненту;

  • число, рівне натуральному логарифму від заданого числа;

  • число Пі.

  1. Як звести число Х в квадрат?

  2. Як витягти квадратний корінь з числа Х?

  3. Як повернути число, рівне цілій частині заданого числа?

  4. Як повернути число, рівне дробовій частині заданого числа?

  5. Як повернути ціле число, рівне округленій цілій частини заданого числа?

  6. Назвіть функцію, що генерує псевдовипадкові числа.

  7. Як забезпечити розбіжність генеруємих псевдовипадкових чисел?

  8. Дано число Х. Що повертає функція Odd(X)?

  9. Назвіть процедури що збільшують і зменшують задане число Х на величину У.