Целочисленные типы данных




Типы данных. Ввод-вывод данных

  • Типы данных
  • Перечень типов данных в языке Pascal
  • Тождественность и совместимость типов
  • Выражения, операции и операнды
  • Ввод-вывод данных

Общие сведения

При решении задач обрабатывается информация различного характера. Это могут быть целые и дробные величины, строки и др. Соответственно, константы и переменные должны быть описаны как целые, дробные, строковые и т. д.

Для описания множества допустимых значений величины и совокупности операций, в которых может участвовать данная величина, используется указание ее типа данных. Тип данных (data type) — это множество величин, объединенных определенной совокупностью допустимых операций.

Каждый тип данных имеет свой диапазон значений и специальное зарезервированное слово для его описания. Например, значения 1 и 2 относятся к целочисленному типу, их можно складывать, умножать и выполнять над ними другие арифметические операции.

В языке Pascal для описания типа в общем случае используется зарезервированное слово type.

Формат:

type

<Имя типа> = <значения типа>;

Синтаксическая диаграмма описания типов может быть представлена следующим образом.

Все типы данных можно разделить на две группы: скалярные и структурированные (составные). Скалярные типы, в свою очередь, делятся на стандартные и пользовательские.

Стандартные типы данных предлагаются пользователям разработчиками системы Turbo Pascal. К ним относятся целочисленные, вещественные, литерные, булевские типы данных и указатели.

Пользовательские типы данных разрабатываются пользователями системы программирования Turbo Pascal.


Перечень типов данных в Turbo Pascal

Перечень типов данных в языке Turbo Pascal можно представить в виде следующей схемы:

1. Простые типы (скалярные типы):

o порядковые;

o целые:

§ byte,

§ shortint,

§ integer,

§ word,

§ longint;

§ логический boolean;

§ символьный char;

§ перечисляемый;

§ интервальный (диапазон);

§ вещественные:

§ real,

§ single,

§ double,

§ extended,

§ comp;

§ ссылочный.

o Структурированные типы:

§ строковый string;

§ регулярный array;

§ комбинированный record;

§ множественный set;

§ файловый file.

o Процедурные типы.

В Delphi список типов данных отличается от приведенного, о чем будет рассказано во второй части книги.

Данные целочисленных типов могут быть представлены как в десятичной, так и в шестнадцатеричной системах счисления. Если число представлено в шестнадцатеричной системе, перед ним без пробела записывается знак $. Диапазон допустимых значений шестнадцатеричных чисел составляет от $0000 до $FFFF.

В десятичной системе числа могут записываться двумя способами: с фиксированной и с плавающей точкой.

Вещественные десятичные числа с фиксированной точкой записываются по обычным правилам арифметики. Целая часть от дробной отделяется десятичной точкой. Если десятичная точка отсутствует, число считается целым. Перед числом может находиться знак «+» или «–». Если знак отсутствует, то по умолчанию число считается положительным.

Примеры:
125 — целое десятичное число;
$1FF — шестнадцатеричное число;
124.674 — вещественное число;
–12.9 — отрицательное вещественное число.

Вещественные десятичные числа в форме с плавающей точкой записываются в экспоненциальном виде: mE+p, где m — мантисса (целое или дробное число с десятичной точкой), E означает десять в степени, p — порядок (целое число).

Пример:
5.18E+02 = 5.18 * 102 = 518
10E–03 = 10 * 10—3 = 0.01

Пользовательские типы — перечисляемый и интервальный — разрабатываются самим программистом.

Структурированные типы в своей основе имеют один или несколько скалярных типов данных. К структурированным типам относятся строки, массивы, множества, записи, файлы и данные совершенно иной природы: процедурного типа и типа object.


Скалярные типы данных

К скалярным (scalar — простые) типам данных относят типы данных таких величин, значения которых не содержат составных частей.

Целочисленные типы данных

Целочисленные типы данных представляют собой значения, которые могут использоваться в арифметических выражениях и занимать в памяти от 1 до 4 байт (табл. 3.1).

Таблица 3.1. Целочисленные типы данных
Тип Диапазон Требуемая память, байт
byte 0…255  
shortint –128…127  
integer –32768…32767  
word 0…65 535  
longint 2 147 483 648…2 147 483 647  

Значения целых типов могут изображаться в программе двумя способами: в десятичном виде (традиционно, в виде последовательности цифр) и в шестнадцатеричном виде (в этом случае число предваряется знаком $, а цифры старше 9 обозначаются латинскими буквами от A до F).

Синтаксическая диаграмма для целых чисел выглядит следующим образом.

Пример:

var

X1, X2: byte;

Y1: word;

 

Для данных целого типа определены следующие арифметические операции: +, –, *, /, div, mod. Результат выполнения этих операций над целыми операндами также имеет целый тип.

Для данных целого типа определены следующие операции отношения: =, <>, <, >, <=, =>, вырабатывающие результат логического типа.

Для целых чисел определены следующие стандартные функции:

  • odd(x) — возвращает результат логического типа: для четного аргумента — false; для нечетного — true;
  • succ(x) — возвращает следующее целое число (х + 1);
  • pred(x) — возвращает предыдущее целое число (х – 1);
  • ord(x) — возвращает аргумент х;
  • abs(x) — возвращает модуль х;
  • chr(x) — возвращает символ, ASCII-код которого равен х;
  • sqr(x) — возвращает квадрат числа х;
  • sqrt(x) — возвращает значение корня квадратного из х;
  • exp(x) — возвращает е в степени х (экспоненту), результат вещественного типа;
  • sin(x) — возвращает синус х, результат вещественного типа;
  • cos(x) — возвращает косинус х, результат вещественного типа;
  • ln(x) — возвращает натуральный логарифм х, результат вещественного типа;
  • arctan(x) — возвращает арктангенс х, результат вещественного типа.

Для целых чисел определены следующие стандартные процедуры:

  • dec(x,i) — уменьшает значение х на i, если i не задано, то на 1;
  • inc(x,i) — увеличивает значение х на i, если i не задано, то на 1.

Вещественные типы данных

Вещественные типы данных представляют собой вещественные значения, которые используются в арифметических выражениях и занимают в памяти от 4 до 6 байт. Pascal допускает представление вещественных значений и с плавающей, и с фиксированной точкой (табл. 3.2).

Таблица 3.2. Вещественные типы данных
Тип Диапазон Мантисса Требуемая память, байт
real 2,9 • 10E – 39…1,7 • 10E + 38 11–12  
single 1,5 • 10E – 45…3,4 • 10E + 38 7–8  
double 5,0 • 10E – 324…1,7 • 10E + 308 15–16  
extended 1,9 • 10E – 4951…1.1 • 10E + 4932 19–20  
comp –2E + 63 + 1…2E+63 – 1 10–20  

Вещественные значения могут изображаться в форме с фиксированной точкой, например 7,32, 456,721 или 0,015, а также в форме с плавающей точкой, то есть парой чисел вида <мантисса>E<порядок>.

Числа из предыдущего примера в форме с плавающей точкой будут записаны так: 7,32E + 00, 4,56 721E + 02, 1,5E – 02.

Синтаксические диаграммы для записи вещественного числа будут выглядеть следующим образом.

Для данных вещественного типа определены следующие арифметические операции: +, –, *, /. Результат выполнения этих операций также имеет вещественный тип.

Для данных вещественного типа определены следующие операции отношения: =, <>, <, >, <=, =>, — вырабатывающие результат логического типа.

Для вещественных чисел определены следующие стандартные функции:

  • abs(x) — возвращает модуль х, результат вещественного типа;
  • chr(x) — возвращает символ, ASCII-код которого равен х;
  • sqr(x) — возвращает квадрат числа х, результат вещественного типа;
  • sqrt(x) — возвращает значение корня квадратного из х, результат вещественного типа;
  • exp(x) — возвращает е в степени х (экспоненту), результат вещественного типа;
  • sin(x) — возвращает синус х, результат вещественного типа;
  • cos(x) — возвращает косинус х, результат вещественного типа;
  • ln(x) — возвращает натуральный логарифм х, результат вещественного типа;
  • arctan(x) — возвращает арктангенс х, результат вещественного типа;
  • trunc(x) — преобразует вещественный аргумент х в целое число путем отбрасывания дробной части;
  • round(x) — преобразует вещественный аргумент х в целое число путем округления до ближайшего целого.

Выражение, составленное из переменных целого и вещественного типа, имеет вещественный тип. Допускается присваивание переменной вещественного типа значения выражения целого типа, но не наоборот.

Эффективное использование типов single, double, extended, comp возможно только при включенной директиве {$N+}. По умолчанию она находится в выключенном состоянии {$N–}.

Пример:

var

Summa: single;

Root1, Root2: double;

Упражнение 3.1. Измените программу Tutor3 таким образом, чтобы в результате ее выполнения вычислялось и выводилось на экран значение частного двух целых чисел. Так как результат деления будет иметь вещественный тип, в раздел описания переменных данной программы должно быть добавлено его описание. Например, если идентификатор результата деления обозначить как Ratio, то раздел описания переменных в программе будет выглядеть следующим образом:var

A,B: Integer;

Ratio: real;

Определение частного чисел A и B запишется операцией вещественного деления

Ratio:= A / B;

а вывод на экран результата можно задать следующим образом:

Writeln('Частное двух чисел равно ',Ratio);

Загрузите интегрированную среду программирования, считайте программу Tutor3 с диска, отредактируйте и проверьте ее работу. При проверке работы программы попробуйте задать переменным следующие значения: A = 33 000, B = 33.

Обратите внимание на то, что в результате вычислений получается не 1000, как вы ожидали, а –9,8593939394Е+02, то есть программа неправильно вычисляет результат арифметической операции. Причина ошибки в том, что мы, указав в разделе описания переменных для величин A и B тип integer, зарезервировали в памяти место только для хранения целого числа, принимающего значения из интервала [–32 768…32 767], а задали для величины A значение 33 000.

Внесите изменения в программу, указав в разделе описания для величин A, B тип word или longint, проверьте работу программы на примере больших значений чисел A и B. Сохраните программу на диске под именем Tutor4.

Этот пример наглядно демонстрирует необходимость правильного описания типов величин, обрабатываемых в программе.


Литерный (символьный) тип

Литерный (символьный) тип char определяется множеством значений кодовой таблицы компьютера. Каждому символу приписывается целое число в диапазоне от 0 до 255. Для кодировки используется код ASCII.

Для размещения в памяти переменной литерного типа требуется один байт.

Пример:

var

Ch: char;

Letter, Symbol: char;

В программе значения переменных и констант типа char должны быть заключены в апострофы. Например, 'А' обозначает букву А, ' ' – пробел, ';' — точку с запятой.

Для данных символьного типа определены следующие операции отношения: =, <>, <, >, <=, =>, вырабатывающие результат логического типа.

Для данных символьного типа определены следующие стандартные функции:

  • chr(x) — преобразует выражение х типа byte в символ и возвращает значение символа;
  • ord(ch) — преобразует символ ch в его код типа byte и возвращает значение кода;
  • pred(ch) — возвращает предыдущий символ;
  • succ(ch) — возвращает следующий символ.

Примеры:ord(':') = 58

ord('A') = 65

chr(128) = Б

pred('Б') = А

succ('Г') = Д


Булевский тип

Булевским типом называют тип данных, представляемый двумя значениями: True (истина) и False (ложь). Он широко применяется в логических выражениях и выражениях отношения. При описании величин этого типа указывают слово boolean. Для размещения в памяти переменной булевского типа требуется 1 байт.

Пример:

var

Flag, Rezult: boolean;

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: