Міністерство освіти і науки України
Національний університет „Львівська Політехніка”
Кафедра ЕОМ
Звіт
про виконання лабораторної роботи № 4
з курсу „Основи алгоритмізації та програмування”
Тема: Типи, вирази та операцiї мови Турбо Паскаль
Програмування лінійних процесів, розв'язання найпростіших задач.
Виконано:
стдент групи КІ-14
Сорокевич М.І.
Перевірено:
Ногаль М.В.
Львів – 2003
МЕТА РОБОТИ: Вивчення набору операцiй та правил побудови виразiв засобами мови Паскаль.
Теоретичні відомості
Операцiї
Вираз складається iз сумiсних по типу операндiв (констант, змiнних, звертань до пiдпрограм-функцiй), об'єднаних знаками операцiй i круглими дужками. Операцiї Паскаля виконуються згiдно їх прiорiтетiв.
В Паскалi визначенi наступнi операцiї:
Операцiя
Прiорiтет
Видоперацiї
@,not
перший (найвищий)
унарнi
*, /, div, mod, and, shl, shr
другий
мультиплiкативнi
+ ,- ,or ,xor
третiй
аддитивнi
=, <> ,< ,> ,<= ,>= ,in
четвертий (найнижчий)
вiдношення
Для змiни прiорiтету виконання операцiй необхiдно застосувати круглi дужки. Вираз у дужках обчислюється в першу чергу як окремий операнд згiдно правил прiорiтету операцiй. Операцiї з однаковими прiорiтетами виконуються злiва направо, або порядок визначається режимом роботи компiлятора (не обов'язково злiва направо при генеруваннi оптимального коду).
Арифметичнi операцiї над числовими даними
Позначення Назва Вид Типи операндiв Тип результату
операцiї операцiї операцiї
+ збереження унарна цiлий цiлий
знаку дiйсний дiйсний
- Iнверсiя унарна цiлий цiлий
знаку дiйсний дiйсний
* Множення бiнарна цiлий*цiлий цiлий
цiлий*дiйсний дiйсний
дiйсний*цiлий дiйсний
дiйсний*дiйсний дiйсний
/ Дiленнябiнарна цiлий/цiлий дiйсний
цiлий/дiйсний дiйсний
дiйсний/цiлий дiйсний
дiйсний/дiйсний дiйсний
div Цiлочисельне дiлення бiнарна цiлий div цiлий цiлий
mod Залишок вiд бiнарна цiлий mod цiлий цiлий
цiлочисельного дiлення
+ Додавання бiнарна цiлий+цiлий цiлий
цiлий+дiйсний дiйсний
дiйсний+цiли й дiйсний
дiйсний+дiйсний дiйсний
- Вiднiмання бiнарна цiлий+цiлий цiлий
цiлий+дiйсний дiйсний
дiйсний+цiлий дiйсний
дiйсний+дiйсний дiйсний
Математичнi функцiї
Звертання Тип аргумента Тип результату Дiя
Abs(x) цiлий цiлий абсолютне значення x
дiйсний дiйсний
Pi дiйсний число П=3.14159...
Sin(x) дiйсний дiйсний синус x радiан, x(рад)=П*y(град)/180
Cos(x) дiйсний дiйсний косинус x радiан, x(рад)=П*y(град)/180
ArcTan(x) дiйсний дiйсний арктангенс x, результат в радiанах
Sqrt(x) цiлий дiйсний корiнь квадратний x>=0
дiйсний дiйсний
Sqr(x) цiлий цiлий квадрат x
дiйсний дiйсний
Exp(x) дiйсний дiйсний експонента x
Ln(x) дiйсний дiйсний натуральний логарифм x>0
Trunc(x) дiйсний longint цiла частина x
Int(x) дiйсний дiйсний цiла частина x
Frac(x) дiйсний дiйсний дробова частина x
Round(x) дiйсний longint правильне округлення до найближчого цiлого
Odd(x) цiлий boolean повертає true, якщо x - непарне число
Hi(x) integer byte повертає старший байт
word byte аргумента у виглядi значення без знаку
Lo(x) integer byte повертає молодший байт
word byte аргумента
Swap(x) integer integer мiняє мiсцями байти
word word в словi
Random - дiйсний випадкове число 0<=y<1
Ord(x) порядковий цiлий порядковий номер x
Succ(x) порядковий порядковий повертає наступне значення порядкового типу
Pred(x) порядковий порядковий повертає попереднє значення порядкового типу
SizeOf(x) x - змiнна word Кiлькiсть байт, зайнятих аргументом
або iдентифiкатор
будь-якого типу
Математичнi процедури
Звертання Тип аргументiв Дiя
Inc(x) x - порядковий збiльшує порядковий номер x на 1
Dec(x) x - порядковий зменшує порядковий номер x на 1
Inc(x,n) x - порядковий, збiльшує порядковий номер x на n
n - цiлий
Dec(x,n) x - порядковий зменшує порядковий номер x на n
n - цiлий
Randomize - забезпечує послiдовностей випадкових величин,
якi повертаються функцiєю Random
Порозряднi логiчнi операцiї над цiлочисельними даними
Позначення Назва операцiї Вид операцiї Типи Тип
операцiї операндiв результату
not x порозрядне заперечення унарна цiлий цiлий
x and y порозрядне логiчне множення бiнарна цiлий цiлий
x shl y зсув влiво значення бiнарна цiлий цiлий
x на y розрядiв *) звiльненi розряди заповн. 0 (в сторону старших розрядiв)
x shr y зсув вправо значення бiнарна цiлий цiлий
x на y розрядiв *) звiльненi розряди заповн. 0 (в сторону молодших розрядiв)
xory порозрядне логiчне додавання бiнарна цiлий цiлий
xxory порозрядна сума по модулю 2 бiнарна цiлий цiлий
Таблиця значень порозрядних логiчних операцiй
Операнд 1
Операнд 2
not
and
or
xor
0
-
1
-
-
-
1
-
0
-
-
-
0
0
-
0
0
0
0
1
-
0
1
1
1
0
-
0
1
1
1
1
-
1
1
0
ВИКОНАННЯ РОБОТИ
ЗАВДАННЯ: Обчислити значення виразу:
Варіант 23.
program Lab4;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
y,a,b,x: real;
begin
writeln('Ця програма обчислює такий вираз:');
writeln('y:=sqrt(exp(a*x-b)*b)*sin(a*x)*cos(abs(b*x))');
writeln('Значення змінних такі: a=3.146, b=0.56, x=1.1');
a:=3.146;
b:=0.56;
x:=1.1;
y:=sqrt(exp(a*x-b)*b)*sin(a*x)*cos(abs(b*x));
writeln('Результат такий: y=',y);
readln
end.
ВИСНОВОК: На цій лабораторній роботі я вивчив набір операцiй та правил побудови виразiв засобами мови Паскаль на прикладі складення програми, що обчислює значення деякого арифметичного виразу із заданими значеннями змінних.