No Image

Типы данных паскаль int64

СОДЕРЖАНИЕ
2 просмотров
11 марта 2020
Основы программирования
Каждый профессионал когда-то был чайником. Наверняка вам знакомо состояние, когда “не знаешь как начать думать, чтобы до такого додуматься”. Наверняка вы сталкивались с ситуацией, когда вы просто не знаете, с чего начать. Эта книга ориентирована как раз на таких людей, кто хотел бы стать программистом, но совершенно не знает, как начать этот путь. Подробнее.

Почти все целочисленные типы данных относятся к порядковым типам. Эти типы данных представляют целые числа в определённом диапазоне. Конкретные наименования целочисленных типов и диапазоны значений зависят от конкретного языка программирования, от компилятора и от режима компиляции. Подробнее об этом надо узнавать в документации на компилятор.

Например, тип данных Integer в Delphi имеет диапазон -2147483648…2147483647, в то время как в Turbo Pascal тип данных Integer представляет числа в диапазоне -35768…32767. В Free Pascal диапазон значений типа Integer определяется выбранным режимом.

Так как Lazarus использует компилятор Free Pascal, то всё сказанное о типах данных по отношению к Free Pascal справедливо и для Lazarus.

Итак, целочисленные типы данных Free Pascal перечислены в таблице 13.1.

Таблица 13.1. Целочисленные типы данных Free Pascal (Lazarus).

Тип Размер, байт Диапазон значений
Byte 1 0…255
Shortint 1 -128…127
Smallint 2 -35768…32767
Word 2 0…65535
Integer 2 или 4 Зависит от режима компиляции
Cardinal 4 0…4294967295
Longint 4 -2147483648…2147483647
Longword 4 0. 4294967295
Int64 8 -9223372036854775808. 9223372036854775807
QWord 8 0. 18446744073709551615

ПРИМЕЧАНИЕ
В Free Pascal типы Int64 и QWord не являются порядковыми! Это означает, что вы не можете использовать их, например, для индексных переменных в циклах. Однако я привёл их здесь, чтобы отдельно не описывать в будущем и собрать в одном месте все целочисленные типы Free Pascal. Если какие-то слова вам не понятны – не пугайтесь. В своё время я обо всём расскажу подробнее.

А теперь несколько пояснений к таблице.

В колонке ТИП приведены идентификаторы типов данных (ключевые слова, которые указывают компилятору, к какому типу относятся те или иные данные). Как использовать эти идентификаторы, вы узнаете в следующих уроках.

В колонке РАЗМЕР указан размер, который занимает тип данных в памяти компьютера. Например, целое положительное число можно представить разными типами: Byte, Word, Cardinal и др. Однако число типа Cardinal будет занимать в памяти 4 байта, в то время как число типа Byte – всего лишь 1 байт. Поэтому, если вы точно знаете, что число, с которым вы работаете, никогда не примет значение больше 255, то лучше определять его как тип Byte, так как это позволит сэкономить место в памяти компьютера. Хотя здесь не всё так однозначно (нюансы распределения памяти и других ресурсов компьютера выходят за рамки данного курса).

В колонке ДИАПАЗОН указан диапазон значений, которым оперирует тип данных. Например, число типа Byte может принимать значения от 0 до 255.

А теперь практика. Напишем программу, которая выводит на экран диапазоны значений всех целочисленных типов данных. Исходный код этой программы приведён ниже:

Стандартная функция Low определяет минимальное значение типа данных. Фунцкия High определяет максимальное значение. С функциями WriteLn и ReadLn вы уже немного знакомы. Более подробно о подпрограммах (процедурах и функциях) мы будем говорить в соответствующем разделе курса.

Напоследок скажу, как записываются целочисленные данные в программе. Да также как и везде – просто пишите число, без кавычек и каких-либо дополнительных символов. Например, так

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

Free Pascal поддерживает четыре формата записи целого числа:

  1. Десятичная запись. Просто число, например 10.
  2. Шестнадцатеричная запись. Число с префиксом $. Например, шестнадцатеричное число $10 равно десятичному 16.
  3. Восьмеричная запись. Число с префиксом &. Например, восьмеричное число &10 равно десятичному 8.
  4. Двоичная запись. Число с префиксом %. Например, двоичное число %10 равно десятичному 2.
Читайте также:  Скайрим лорд вампир плюсы и минусы

Если для вас это пока слишком сложно, то пропустите эту часть. Просто добавьте страницу в закладки и вернётесь к ней когда будет нужно. Наиболее любопытным рекомендую прочитать статью Системы счисления.

Создайте программу, которая выводит на экран диапазоны значений целых чисел (листинг 13.1). Откомпилируйте программу и запустите её. Убедитесь, что эти значения соответствуют указанным в таблице 13.1.

В исходном коде программы найдите строку, которая задаёт режим компиляции:

В этой строке вместо слова objfpc напишите слово tp. То есть итоговая строка должна выглядеть так:

Запустите программу. Посмотрите диапазон значений типа Integer. Сделайте выводы.

Учитесь думать как программист, то есть логически. Никто вам до пенсии не будет всё разжёвывать, как это делаю сейчас я. Надо привыкать думать самостоятельно. Иначе вы скатитесь к “обезьяньему принципу обучения”, и тогда ваши шансы стать классным программистом приблизятся к нулю. Чтобы помочь вам не скатиться на уровень “зубрёжки”, я буду периодически оставлять пробелы в вашем обучении, чтобы вы постарались сами додуматься до каких-то вещей.

Намного лучше, если вы сами додумаетесь до неправильного решения, сами найдёте ошибку и сами её исправите, чем будете всегда использовать чужие правильные решения и тупо их копировать.

Приветствуем тебя, юный (или не очень юный) читатель нашего сайта! Сегодня мы с вами поговорим про типы в PascalABC.NET: числовые, символьные и логические. Они немного отличаются от стандартных типов Turbo Pascal.

Давайте вспомним какими могут быть величины? Об этом говорилось в отдельной статье. Сейчас мы быстренько все впомним. Любая величина может быть трех типов: числовой, символьной и логическй. Раньше мы использовали всего несколько типов (integer, real, boolean ), но пришло время расширить знания.

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

Важно! Все диапазоны и типы действительны только для PascalABC.NET, во Free Pascal и Turbo Pascal у этих типов будут другие значения. Например, в PascalABC.NET тип integer имеет диапазон от -2147483648 до 2147483647, а в Turbo Pascal у этого типа диапазон от -32768 до 32767.

Принято разделять числовые типы на две большие подгруппы: целые и вещественные.

Целые типы

Тип Размер в байтах Диапазон значений
shortint 1 -128..127
smallint 2 -32768..32767
integer, longint 4 -2147483648..2147483647
int64 8 -9223372036854775808..9223372036854775807
byte 1 0..250
word 2 0..65535
longword, cardinal 4 0..4294967295
uint64 8 0..18446744073709551615

Вещественные типы

Тип Размер в байтах Диапазон значений Количесвто значащих цифр
real 8 -1.8∙10 308 .. 1.8∙10 308 15-16
double 8 -1.8∙10 308 .. 1.8∙10 308 15-16
single 4 -3.4∙10 38 .. 3.4∙10 38 7-8

Для удобства в Паскале заведены специальные константы, которые возвращают на свое место минимальное или максимальное значение разных типов. Ниже вы можете посмотреть таблицу, в которую занесены все константы.

Константа(1) Константа(2) Значение
MaxShortInt shortint.MaxValue Максимальное значение типа shortint
MaxByte byte.MaxValue Максимальное значение типа byte
MaxSmallInt smallint.MaxValue Максимальное значение типа smallint
MaxWord word.MaxValue Максимальное значение типа word
MaxInt integer.MaxValue Максимальное значение типа integer
MaxLongWord longword.MaxValue Максимальное значение типа longword
MaxInt64 int64.MaxValue Максимальное значение типа int64
MaxUint64 uint64.MaxValue Максимальное значение типа uint64
MaxDouble double.MaxValue Максимальное значение типа double
MinDouble real.Epsilon Минимальное значение типа double
MaxReal real.MaxValue Максимальное значение типа real
MinReal real.Epsilon Минимальное значение типа real
MaxSingle single.MaxValue Максимальное значение типа single
MinSingle single.Epsilon Минимальное значение типа single

Логический тип

В PascalABC.NET только один логический тип — boolean. Про него была написана целая статья. Тип Boolean принимает значение true или false, и его размер — 1 байт.

Символьный тип и строки

Символьный тип

Символьный тип char занимает 2 байта и хранит Unicode-символ.

Читайте также:  Как подключиться по блютузу к компьютеру

Чтобы не писать отдельную статью про символьный тип, вкратце расскажу про него здесь. В PascalABC.NET помимо стандартных функций chr и ord, добавлены новые функции — ChrUnicode и OrdUnicode.

Chr(n) — функция, возвращающая символ с кодом n в кодировке Windows;
Ord(с) — функция, возвращающая значение типа byte, представляющее собой код символа c в кодировке Windows.

ChrUnicode(w) — возвращает символ с кодом w в кодировке Unicode;
OrdUnicode(с) — возвращает значение типа word, представляющее собой код символа c в кодировке Unicode.

Давайте поэкспериментируем, составим вот такую небольшую программку.

Этой программой я хочу проверить накладываются ли друг на друга кодировка Windows и Unicode. Ниже, на скриншоте вы можете посмотреть результат работы программы.

Накладываются. Просто Unicode длиннее, чем кодировка Windows.

Строковой тип

Строки имеют тип string, состоят из набора последовательно расположенных символов char и используются для представления текста.

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

Наверное, сейчас вы сомневаетесь в том, что в PascalABC.NET строки могут быть произвольной длины. Давайте проверим это с помощью небольшой программы.

Кроме того, в PascalABC.NET реализованы размерные строки. Для их описания используется тип string[n], где n — константа целого типа, указывающая длину строки.

Перечислимый и диапазонный типы

Перечислимый тип

Перечислимый тип определяется упорядоченным набором идентификаторов. Чтобы объявить новый тип, используется специальное слово — type. Его необходимо ставить перед var.

Значения перечислимого типа занимают 4 байта. Каждое значение value представляет собой константу типа typeName, попадающую в текущее пространство имен.

К константе перечислимого типа можно обращаться непосредственно по имени, а можно использовать запись typeName.value, в которой имя константы уточняется именем перечислимого типа, к которому она принадлежит:

Для значений перечислимого типа можно использовать функции Ord, Pred и Succ, а также процедуры Inc и Dec (Подробнее про эти функции и процедуры). Функция Ord возвращает порядковый номер значения в списке констант соответствующего перечислимого типа, нумерация при этом начинается с нуля.

Результат работы программы

Диапазонный тип

Диапазонный тип представляет собой подмножество значений целого, символьного или перечислимого типа и описывается в виде a..b, где a — нижняя, b — верхняя граница интервального типа, a Результат работы программы

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

На сегодня все! Урок получился объемным, но, надеюсь, понятным. Если же у вас возникли вопросы, напишите нам.

Реклама на сайте

Опрос

Рубрики

Подписка

Тип – конструкция языка, используемая как образец для создания других элементов программы. Тип определяет для элемента программы:

  • Объем памяти для размещения. По типу компилятор определяет размер памяти для размещения значений элемента.
  • Допустимое множество операций над ними.

Типы могут быть:

  • Стандартные, не требуют объявления.
  • Пользователя. Тип пользователя должен быть объявлен в разделе типов type.

Все переменные имеют тип. FPC поддерживает такой же набор типов, как и Turbo Pascal, и еще некоторые типы из Delphi. Программист может объявлять свои собственные типы, что в основном определяет идентификатор, который можно использовать, чтобы обозначить этот пользовательский тип при объявлении переменных далее в исходном тексте.

Вот главные классы типов:

  • Простой.
  • Строковый.
  • Структурированный.
  • Указатель.
  • Процедурный.
  • Шаблон (или Дженерик).
  • Специализированный.
  • Идентификатор типа.

Последний класс – идентификатор типа – просто означает присвоение другого имени типу. Это способ сделать типы независимыми от платформы: использовать только эти типы, а потом объявить эти типы индивидуально для каждой платформы. Программист, использующий эти модули, не должен волноваться о размерах типа и т.п.

Базовые (простые) типы

Простые типы во FPC такие же, как типы из Delphi. Различают простые типы:

Порядковые типы

За исключением типов int64, QWord и типов Real, все базовые типы являются порядковыми. Порядковые типы имеют следующие характеристики:

  • Они счётные и упорядоченные. Это свойство делает возможным операции Inc (от англ. increment – увеличение), Ord (от англ. order – порядок), Dec (от англ. decrement – уменьшение) над ними.
  • Они имеют минимальный и минимальный диапазон/значение.
Читайте также:  1С сэд корпоративный документооборот

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

Функция Значение
Ord (x) Порядковый номер для x.
Pred (x) Предшествующее значение для x.
Succ (x) Cледующее значение для x.
High(x) Максимально возможное значение для x.
Low(x) Минимально возможное значение для x..

Следует отметить, что функции Pred и Succ не определены для самого меньшего и самого большего значения.

Целочисленные типы

Применяются для работы с целыми числами. Отличаются друг от друга диапазоном и размером памяти. Имеются две подгруппы таких типов: для чисел без знака, для чисел со знаком.

Тип Диапазон значений Байт в памяти Примечание
Без знака
Byte 0..255 1 Байт, 8 бит
Word 0..65535 2 Слово, 16 бит
LongWord 0..4294967295 4 Двойное слово, 32 бита
QWord 0..18446744073709551615 8 Квадро слово, 64 бита
Со знаком
Shortint -128…127 1 Короткое целое, 8 бит
Smallint -32768..32767 2 Малое целое, 16 бит
Longint -2147483648..

2147483647

4 Длинное целое, 32 бита Int64 -9223372036854775808..

9223372036854775807

8 Целое, 64 бита Указываемые Cardinal Word, LongWord, QWord 2, 4 или 8 Целое без знака Integer Smallint, Longint, Int64 2, 4 или 8 Целое со знаком

Нужно отметить, что типы qword и int64 не являются истинно порядковыми, поэтому некоторые языковые конструкции не будут работать с этими целыми типами.

Тип integer указывает на тип smallint по умолчанию во FPC. Он указывает на longint или int64 in режиме Delphi или Objfpc. Тип cardinal используется на данный момент как тип longword. Определения типов cardinal и integer могут изменяться от одной архитектуры к другой и от одного компилятора к другому. Они обычно имеют тот же размер, что и целевая архитектура.

FPC поддерживает автоматическую конвертацию типов, если используются разные целочисленные типы.

В памяти целочисленные типы занимают 1..8 байт (1..64 бита) и имеют структуру:

Значащая часть Числа без знака
Знак Значащая часть Числа со знаком. Признак отрицательного числа ( 1 ) в бите знака, размещенном в старшем (левом) разряде.

Для 32-разрядного процессора скорость работы максмальная с типами integer (для чисел со знаком) и cardinal (для чисел без знака), имеющие размер в 4 байта (32=8*4).

Логические (Булевые) типы

Имеют два значения: true (истина) и false (ложь).

Тип Перевод Байт Ord(true) Примечание
Boolean Булевый 1 1 Предпочтительно рекомендуется.
ByteBool Байт Буль 1 Не 0 Для совместимости с другими системами программирования.
WordBool Слово Буль 2 Не 0
LongBool Длинный Буль 4 Не 0

Вещественные (действительные) типы

Вещественные (или действительные) числа – это числа с дробной частью. В памяти вещественные типы в зависимости от точности преставления занимают 4..10 байт (32..80 бита) и имеют структуру:

Знак Порядок со знаком Мантисса

Вещественные числа по желанию программиста отображаются двумя способами:

  • С фиксированной точкой: 3.145, – 0.25.
  • С плавающей точкой: 2.8E12, – 1.2E-8

Определены следующие вещественные типы:

Тип Диапазон Знач. цифр Байтs Перевод
Single -45..+38 7..8 4 Ординарный
Double 5.0E-324..1.7E308 15..16 8 Двойной
Real Single, Double . 4 или 8 Вещественный
Extended 1.9E-4951..1.1E4932 19..20 10 Расширенный
Currency ±(16 цифр).(4 цифры) 19..20 8 Валюта
Comp -2E64+1..2E63-1 19..20 8 Композитный

FPC использует математический сопроцессор (или эмуляцию) для всех вычислений с плавающей точкой. Размер стандартного типа Real зависит от процессора и является либо Single, либо Double. Поддерживаются только IEEE типы с плавающей точкой, и они зависят от целевого процессора и параметров эмуляции.

Comp = Int64. Это тип целых чисел, но он не является порядковым и поэтому отнесен к вещественным типам. Соседние числа этого типа имеют нули в младших разрядах. Фактически это целые числа с округлениями. К этому типу не применимы процедуры Inc, Dec. Тип Comp является 64-битным целым и недоступен на всех платформах

Комментировать
2 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
Adblock detector