Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка(Паскаль)(А4).doc
Скачиваний:
7
Добавлен:
27.08.2019
Размер:
1.25 Mб
Скачать

Вирази, операнди, операції.

Змінні і константи всіх типів використовуються у виразах.

Вираз задає порядок виконання дій над елементами даних і складається з операндів (констант, змінних, звертань до функцій), круглих дужок і знаків операцій.

Круглі дужки ставляться, як і в математиці, для керування порядком виконання операцій. Якщо дужки відсутні, операції виконуються в залежності від їх пріоритетів, про що буде сказано далі.

Операції в мові Паскаль підрозділяються на:

  • арифметичні,

  • відношення (порівняння),

  • логічні, та ін.

Операції можуть бути унарними та бінарними. У першому випадку операція відноситься до одного операнду і завжди записується перед ним, у другому операція виражає відношення між двома операндами і записується між ними.

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

Операція

Дія

Типи операндів

Тип результату

Бінарні

+

Додавання

Цілий

Дійсний

Цілий

Дійсний

-

Віднімання

Цілий

Дійсний

Цілий

Дійсний

*

Множення

Цілий

Дійсний

Цілий

Дійсний

/

Ділення

Цілий

Дійсний

Дійсний

Дійсний

Div

Ділення націло

Цілий

Цілий

mod

Залишок від ділення

Цілий

Цілий

Унарні

+

Збереження знака

Цілий

Дійсний

Цілий

Дійсний

-

Заперечення знака

Цілий

Дійсний

Цілий

Дійсний

Операції відношення виконують порівняння двох операндів і визначають, значення виразу є істинним або хибним. Результат завжди має булівський тип і приймає одне з двох значень: True (істина) або False (хибність). Всі операції відношення зведені в наступну таблицю:

Операції

Назва

Вираз

Результат

=

Дорівнює

А=В

True, якщо А дорівнює В

<>

Не дорівнює

A<>B

True, якщо А не дорівнює В

>

Більше

A>B

True, якщо А більше В

<

Менше

A<B

True, якщо А менше В

>=

Більше або дорівнює

A>=B

True, якщо А більше або дорівнює В

<=

Менше або дорівнює

A<=B

True, якщо А менше або дорівнює В

Результатом виконання логічного (булевського) виразу є логічне значення True або False. Операндами служать дані тільки булівського типу. Список логічних операцій наведений у таблиці:

Операція

Дія

Вираз

А

В

Результат

not

Логічне заперечення

not A

True

False

False

True

and

Логічне “ТА”

A and B

True

True

False

False

True

False

True

False

True

False

False

False

or

Логічне “АБО”

A or B

True

True

False

False

True

False

True

False

True

True

True

False

Виконання кожної операції відбувається з урахуванням її пріоритету. Значення пріоритетів зазначені в наступній таблиці:

Операція

Пріоритет

Вид операції

Not, унарні «-» і «+»

Перший (вищий)

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

*, /, div, mod, and

Другий

Операції типу множення

+, -, or

Третій

Операції типу додавання

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

Четвертий (нижчий)

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

Арифметичні вирази у якості операндів можуть містити імена функцій. З поняттям функції ми будемо знайомитись пізніше в курсі програмування, але стандартні функції (cos, sin, x2 та інші) Вам знайомі з курсу математики і їх використання у курсі інформатики відрізняється тільки правилами запису (синтаксису). Так, на відміну від математики, в програмуванні аргумент функції обов’язково береться в круглі дужки. Нижче подана таблиця, що містить ці функції. Літерами Х та І позначені відповідно: Х – цілі та дійсні типи, І – тільки цілі.

Abs(X)

Обчислення абсолютного значення (модулю) Х. Тип результату збігається з типом параметра.

ArcTan(X)

Обчислення кута, тангенс якого дорівнює Х, значення кута подано в радіанах і може знаходитися в діапазоні від -/2 до /2. Для перетворення значення кута з радіанної міри в градусну необхідно значення кута помножити на число 180/. Результат має дійсний тип.

Cos(X)

Обчислення косинуса Х, параметр задає значення кута в радіанах. Для перетворення значення кута з радіанної міри в градусну необхідно значення кута помножити на число 180/. Результат має дійсний тип.

Frac(X)

Знаходження дробової частини Х. Результат має дійсний тип.

Int(X)

Знаходження цілої частини Х (дробова частина відкидається). Результат має дійсний тип.

Pi

Повертає значення числа  (3.1415926).

Sin(X)

Обчислення синуса Х. Параметр задає значення кута в радіанах. Для перетворення значення кута з радіанної міри в градусну необхідно значення кута помножити на число 180/. Результат має дійсний тип.

Sqr(X)

Пiднесення до квадрату значення Х. Тип результату збігається з типом параметра.

Sqrt(X)

Обчислення квадратного кореня з Х. Тип результату дійсний.

Random

Генерує значення випадкового числа з діапазону від 0 до 0.99. Тип результату дійсний.

Random(P)

Генерує значення випадкового числа з діапазону від 0 до P. Тип результату цiлий. Щоб випадкові числа були “більш випадковими”, необхідно періодично змінювати базу генерації. Для цього використовується процедура Randomize, що дозволяє при кожному новому запуску програми отримувати різні випадкові числа.

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

на мові Паскаль буде мати наступний вигляд:

(a-b)/(2*c+(a/(c+(b-5)/(c-b))))

А такий:

на мові Паскаль:

1E+04*a-34.2*cos(beta).

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

Var

X: integer;

Y: real;

то оператор

Y := X+2;

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

X := 2.78;

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