Математичний вираз має дійсний (real) тип, якщо у ньому є:
В інших випадках математичний вираз має цілий тип (integer, word, longint,…).
Нехай змінні у програмі описані так:
Var x, y: integer; a, b: real;
Тоді значення виразу має такий тип:
Математичний вираз, значеня якого присвоюється змінній | Тип виразу |
---|---|
Z1:=x+y; | Цілий |
Z2:=x-a; | Дійсний |
Z3:=2*b; | Дійсний |
Z4:=0.5*x; | Дійсний |
Z5:=y/x; | Дійсний |
Z6:=a+b; | Дійсний |
Z7:=50/2; | Дійсний |
Z8:=x div 10; | Цілий |
Z9:=y mod 7; | Цілий |
Z10:=sqr(x); | Цілий |
Z11:=sqr(a); | Дійсний |
Z12:=abs(a); | Дійсний |
Z13:=abs(y); | Цілий |
Z14:=sqrt(b); | Дійсний |
Z15:=sqrt(y); | Дійсний |
Змінна | := | Вираз |
---|---|---|
Ціла | := | Цілого типу |
Дійсна | := | Цілого типу або дійсного типу |
Нехай змінні у програмі описані так:
Var x, y :integer; a, b: real; z: longint; n, m: byte;
Чи буде вірним оператор присвоювання?
Математичний вираз, який присвоюється змінній | Результат присвоювання |
---|---|
X:=-100; | Вірно. Змінна ціла, вираз цілий. |
y:=4*x; | Вірно. Змінна ціла, вираз цілий. |
a:=25*x+y; | Вірно. Змінна дійсна, вираз цілий. |
a:=a/b; | Вірно. Змінна дійсна, вираз дійсний. |
X:=a+5; | Невірно. Змінна ціла, вираз дійсний. |
b:=a+x; | Вірно. Змінна дійсна, вираз цілий. |
b:=y; | Вірно. Змінна дійсна, вираз цілий. |
y:=a; | Невірно. Змінна ціла, вираз дійсний. |
a:=x mod y; | Вірно. Змінна дійсна, вираз цілий. |
X:=a div b; | Невірно. Операція div не використовується для дійсних змінних a та b. |
y:=y mod 10; | Вірно. Змінна ціла, вираз цілий. |
y:=sqr(x); | Вірно. Змінна ціла, вираз цілий. |
X:=sqr(b); | Невірно. Змінна ціла, вираз дійсний. |
X:=sqrt(y); | Невірно. Змінна ціла, вираз дійсний. |
N:=-25; | Невірно. Тип не допускає від’ємних значень |
y:=33000; | Невірно. Максимальне додатне значення цього типу 32767. |
Z:=33000; | Вірно. |
Z:=6; n:=z; | Вірно. Z має маленьке додатне значення, яке можна присвоїти змінній типу byte. |
Z:=33000; x:=z; | Невірно. Z має занадто велике додатне значення, яке не можна присвоїти змінній типу integer. |
Окрім помилок, які виявляються в процесі трансляції програми, існують помилки, які виникають, коли програма вже почала виконуватись. Приклади у таблиці:
Програма | Опис помилки |
---|---|
Program P1; Var z:real; x,y:integer; Begin x:=100; z:=x/y; Writeln('z=',z:1:3); End. | Змінній y не присвоєне значення. Паскаль присвоює їй значення 0. В операторі z:=x/y виконується ділення на 0. |
Program P2; Var z:real; x,y:integer; Begin x:=100; y:=200; z:=sqrt(x-y); Writeln('z=',z:1:3); End. | В операторі z:=sqrt(x-y) добувається корінь квадратний з від’ємного числа -100. |
Program P3; Var a,h,o:longint; Begin a:=500; h:=100; o:=sqr(sqr(sqr(a)*sqr(h))); Writeln(o); End. | Обчислимо значення змінної„о”. sqr(h)=10000,sqr(a)=250000 sqr(a)*sqr(h)=2500000000=25*108. sqr(sqr(a)*sqr(h))=625*1016. sqr(sqr(sqr(a)*sqr(h)))= 390625*1032. Це перевищує максимальне значення, яке поміщається у змінну типу longint. |