Учебно-методическое пособие. Алматы, 2017 ббк



бет43/106
Дата03.01.2022
өлшемі483.39 Kb.
#451845
түріУчебно-методическое пособие
1   ...   39   40   41   42   43   44   45   46   ...   106
УЧЕБНИКПаскаль(100217)

Error 26: Type mismatch. ( Тип не определен)
Почему это произошло? Дело в том, что при делении одного числа на другое, даже если они целые числа, результат может быть числом нецелым. Например: разделите единицу на число три. Какой результат Вы получите? Поэтому отладчик и сообщил нам о том, что тип переменной с именем Resultat, описанный нами, не соответствует значениям, которые мы хотим хранить в нем. Для описания переменных имеющих нецелочисленное значение (имеющих вещественный тип) в Free Pascal введены другие типы описания переменных.

В таблице приведены виды арифметических операций и типы результатов получаемых при различных типах операторов.




Операции

Действие

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

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

Унарная

+

Сохранение знака

Целый

Вещественный



Целый

Вещественный



-

Отрицание знака

Целый

Вещественный



Целый

Вещественный



Бинарная

+

Сложение

Целый

Вещественный



Целый

Вещественный



-

Вычитание

Целый

Вещественный



Целый

Вещественный



*

Умножение

Целый

Вещественный



Целый

Вещественный



/

Деление

Целый

Вещественный



Вещественный Вещественный

Div

Целочисленное деление

Целый

Целый

Mod

Остаток от деления

Целый

Целый

Как видно из таблицы тип результата операции деления “ / “ всегда будет вещественным.



2.4.2. Переменные вещественного типа

В языке Free Pascal для обозначения вещественных (нецелочисленных) чисел используются следующие описания типов.




Идентификатор

Диапазон представления

Чисел


Размер памяти

Название типа

Количество цифр

Single

от 1,5*10-45 до 3,4*1038

4 байта

Вещественное одинарной точности

7..8

Real

от 2,9*10-39 до 1,7*1038

6 байта

Вещественное

11..12

Double

от 5,0*10-324 до 1,7*10308

8 байта

Вещественное двойной точности

15..16

Extended

от 3,4*10-4932 до 1,1*104932

10 байта

Вещественное повышенной точности

19..20

Если в блоке описания переменных мы опишем переменную с именем resultat как переменную типа Real, то при подстановки знака деления:


resultat:=chislo1/chislo2;
и запуска программы на выполнение сообщений об ошибке не последует. Однако результат будет выглядеть не совсем обычным образом. Если в качестве исходных данных были введены числа 1 и 2, то на экране появится следующий результат:

5.0000000000Е-0001

Это так называемая экспоненциальная запись числа. В левой части записи показано дробное десятичное число, общее количество знаков в котором зависит от выбранного нами типа вещественной переменной. После буквы Е показано целое число со знаком, которое указывает, насколько позиций в право, если число положительное, или влево, если после буквы Е стоит знак «-», следует сдвигать десятичную точку для получения конечного результата.

Конечно, представление числа в экспоненциальном виде несовсем привычно. Можно ли изменить представления вещественных чисел на экране компьютера? Да можно, для этого в процедурах write() и writln() используются дополнительные параметры. Покажем это на примере процедуры Exit, нашей программы:

procedure Exit;

begin


writeln(resultat:3:1);

writeln(resultat:4:2);

writeln(resultat:5:1);

end;


Как вы видите, после имени переменной значение которой выводится на экранстоият два целых числа разделенных знаком ":" (двоеточие). Запустите программу на выполнение. Если в качестве исходных данных были введены числа 1 и 2, то после выполнения программы на экране результат будет выглядеть следующим образом:

0.5


0.50

0.5


Первое число, стоящее после имени переменной, сообщает программе сколько знакомест выделяется на написание значения переменной. При этом учитывается и десятичная точка. В первом случае было выделено - 3 знакоместа, во втором - 4, в третьем - 5. Второе число показывает сколько позиций (знакомест) выделяется для написания дробной части числа. При этом, если количество знако мест, выделенной для дробной части, меньше чем число знаков дробной части числа, произойдет округление.

В этом разделе вы познакомились с двумя стандартными типа представления переменных и написали программу, которая может выполнять одно из арифметических действий. Для выполнения другого действия нам приходилось вносить изменения в программу. Другой путь это иметь отдельную программу для каждого из этих действий. Но не кажется ли это вам несколько расточительным? Может быть лучше иметь программу, которая сам по введенному знаку определяла, что делать и выдавала бы соответствующий результат.





Достарыңызбен бөлісу:
1   ...   39   40   41   42   43   44   45   46   ...   106




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет