Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab1.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
299.01 Кб
Скачать

6. Арифметичні та символьні вирази

Поняття про арифметичні вирази в Turbo Pascal повністю аналогічне поняттю виразу в алгебрі. Синтаксично арифметичний вираз визначається таким чином:

[операнд1] [знак операції] операнд2 [знак операції...]

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

  • числа (цілочисельних та дійсних типів);

  • змінні;

  • функції.

Це первинні арифметичні вирази. Крім них операндами можуть бути арифметичні вирази нижчого рівня ієрархії.

Приклади арифметичних виразів:

а) a*b/(c+5) відповідає .

В цьому виразі операція множення має операнди a і b (змінні), операція додавання - с (змінна) і 5 (константа) і операція ділення має операнди a*b і с+5 (вирази нижчого рівня ієрархії).

б) sin(x)+cos(x).

Тут операндами операції додавання є функції.

Функції визначаються програмістом в розділі процедур та функцій. Для роботи з елементарними математичними функціями в Turbo Pascal є набір стандартних функцій (табл. 5).

Таблиця 5. Деякі арифметичні стандартні функції

Математична Стандартна Тип Тип

функція функція аргумента функції

sin(x) R R

I R

cos(x) R R

I R

ln(x) R R

I R

exp(x) R R

I R

abs(x) R R

I I

sqrt(x) R R

I R

sqr(x) R R

I I

arctan(x) R R

I R

[x]ціла частина trunc(x) R I

заокруглення

до цілого round(x) R I

Приклади.

round(7.4)=7

round(3.75)=4

round(-5.7)=-5

round(-8.4)=-8

Послідовність виконання операцій при обчисленні значення арифметичного виразу встановлюється згідно їх пріоритетів:

  1. обчислення функцій,

  2. * / div, mod, and, she, shr зростання

  3. + - or, xor пріоритету

Операції одного пріоритету не обов’язково виконуються зліва направо. При оптимізації програми компілятор може порушити цей порядок. Потрібний порядок виконання можна встановити за допомогою круглих дужок.

7. Оператори присвоєння

Формат оператора присвоєння в загальному випадку має вигляд:

[мітка:]:змінна:=вираз[;]

Міткою оператора може бути будь-яка сукупність латинських букв, арабських цифр та знака підкреслення, та описана в розділі міток label. Вона може бути опущена, якщо не потрібна. Знак ; в деяких випадках обов’язковий (якщо оператор присвоєння не входить як складова частина в інший оператор), в деяких випадках його можна записувати або не записувати (попереду end), а в деяких випадках його не можна писати зовсім (попереду else, про це далі). Якщо змінна та вираз арифметичних типів, то оператор називається арифметичним оператором присвоєння. Для оператора присвоєння необхідно, щоб тип змінної та тип виразу співпадали. Для арифметичних операторів присвоєння можливі винятки з цього правила:

  1. Змінна може бути дійсного типу, а вираз цілочисельного типу (але не навпаки).

  2. В рамках цілочисельних типів допускається змішування типів змінної та виразу.

Дія оператора присвоєння:

  1. Обчислюється значення виразу.

  2. Присвоюється це значення змінній.

Для арифметичних операторів присвоєння перед присвоєнням можливе перетворення типу виразу до типу змінної. Проте цим користуватися необхідно досить обережно, так як при цьому можуть бути дуже несподівані результати.

Приклад.

а:longint, а b:byte;

Піісля виконання операторів присвоєння

а:=12345678;

b:=a;

змінна b буде дорівнювати 78 (!), а якщо b:integer, то взагалі не зрозуміло: b=24910.

Для присвоєння значення текстовій та символьній змінним можна використати оператор присвоєння.

Приклади:

str1:='Група студентів';

str2:='18-ї'+' групи.';

str3:=str1+str2;

ch1:='F';

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

Приклади:

Опис змінної Оператор присвоєння Значення змінної

a:string[5] a:='abcdef' 'abcde'

a:string[2] a:='abcdef' 'ab'

a:string[12] a:='abcdef' 'abcdef'

a:char a:='bc' помилка

a:string[1] a:='bc' 'b'

a

18

:string[12] a:='g' 'g'

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]