Назад Вперед Зміст

Відповідність типу змінної та типу математичного виразу

Визначення типу математичного виразу

Математичний вираз має дійсний (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);Дійсний

Визначення типу змінної

Змінна := Вираз
Ціла:=Цілого типу
Дійсна:=Цілого типу або дійсного типу
  1. Значення виразу цілого типу (integer, word, longint,…) можна присвоювати як змінній цілого типу (integer, word, longint,…), так і змінній дійсного типу (real).
  2. Значення виразу дійсного типу (real) можна присвоювати тільки змінній дійсного типу (real).
  3. Якщо змінній цілого типу присвоїти значення виразу дійсного типу, буде помилка:
  4. Не можна присвоювати змінній значення, що виходить за її тип.

Нехай змінні у програмі описані так:

     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.

Назад Вперед Зміст