Что такое byte в паскале
Для решения задачи в любой программе выполняется обработка каких-либо данных. Они хранятся в памяти компьютера и могут быть самых различных типов: целыми и вещественными числами, символами, строками, массивами и т.д.
Тип данных определяет:
- возможные значения переменных, констант, функций, выражений, принадлежащих к данному типу;
- внутреннюю форму представления данных в ЭВМ, т.е. способ хранения чисел или символов в памяти компьютера, размер ячейки, в которую будет записано то или иное значение;
- операции и функции, которые могут выполняться над величинами, принадлежащими к данному типу.
Область памяти, в которой хранится значение определенного типа, называется переменной. У переменной есть имя (идентификатор), тип и значение. Имя служит для обращения к области памяти, в которой хранится значение. Во время выполнения программы значение переменной можно изменить. Перед использованием любая переменная должна быть описана. Описание переменных в языке Free Pascal осуществляется в разделе описания переменных.
Обязательное описание типа приводит к избыточности в тексте программ, но такая избыточность является важным вспомогательным средством разработки программ и рассматривается как необходимое свойство современных алгоритмических языков высокого уровня. В языке Паскаль существуют скалярные и структурированные типы данных.
К скалярным типам относятся стандартные типы и типы, определяемые пользователем. Стандартные скалярные типы включают в себя целые, действительные, символьный, логические и адресный типы. Скалярные типы, определяемые пользователем, – это перечисляемый и интервальный типы.
Структурированные типы имеют четыре разновидности: массивы, множества, записи и файлы.
Рассмотрим основные типы данных.
Символьный тип данных
Данные символьного типа в памяти компьютера, как правило, занимают один байт. Это связано с тем, что обычно под величину символьного типа отводят столько памяти, сколько необходимо для хранения одного символа.
Описывают символьный тип с помощью служебного слова char.
В тексте программы значения переменных и константы символьного типа должны быть заключены в апострофы: ‘а’, ‘b’, ‘+’.
Целочисленный тип данных
Целочисленные типы данных могут занимать в памяти компьютера один, два, четыре или восемь байт. Диапазоны значений данных целочисленного типа представлены в табл. 1.
Таблица 1. Целочисленные типы данных
Byte/ru
Тип byte (байт) является беззнаковым integer (целым) типом, представляющим значения в диапазоне 0 .. 255 и занимающим 8 бит. Типы byte и char являются одним и тем же в FPC версии 3.
Contents
- 1 Корректные значения
- 2 Стандартные функции
- 2.1 Преобразование в символ и из него
- 2.2 Строковое представление
Корректные значения
Ключевое отличие состоит в том, что byte может использоваться только в качестве числового type (типа), тогда как char может использоваться как символ или как часть строкового типа и не может использоваться в арифметическом выражении. byte всегда будет иметь тот же размер, что и ansiChar , но в будущем char может считаться синонимом wideChar , а не ansiChar .
var c: byte; ch: char; begin c := 65; ch := 'A'; c := 'A'; ch := 65; end.
Использование типов данных byte или byte обеспечивает лучшую документированность при работе с конкретными переменными.
Стандартные функции
Преобразование в символ и из него
Тип byte может быть приведен к типу char с помощью функции chr . Значения типа chr могут быть приведены к типу byte с помощью функции ord .
Исправленный вариант приведенной выше программы:
program ordChrDemo(input, output, stderr); var foo: byte; bar: char; begin foo := 65; bar := 'A'; foo := ord('A'); // chr(65) это эквивалент #65 bar := chr(65); bar := #65; // альтернатива: приведения типов // приведения типов константных выражений // гарантированно произойдет во время компиляции foo := byte('A'); bar := char(65); end.
Строковое представление
Функцию binStr function из модуля system можно использовать для получения string (строки), показывающей двоичное представление byte :
program binStrDemo(input, output, stderr); var foo: byte; begin foo := 10; writeLn(binStr(foo, 8)); end.
00001010
Более универсальной функцией является intToBin , предоставляемая модулем strUtils .
Типы данных Простые типы Boolean | Byte | Cardinal | Char | Currency | Extended | Int64 | Integer | Longint | Pointer | Real | Shortint | Smallint | Word Сложные типы Array | Class | Record | Set | String | Shortstring Типы данных Pascal
Pascal – язык со строгой типизацией переменных. Это значит, что мы обязательно должны указывать тип каждой переменной, и не можем присвоить переменной одного типа значение другого типа (если только они не эквивалентны).
В качестве примера возьмем часть программы, которая вычисляет площадь круга по заданному радиусу:
Если мы укажем, что у переменной S целочисленный тип, программа будет работать не верно, так как результатом выражения r*r*3.14 будет дробь, и присвоить целочисленной переменной дробное значение мы не можем.
Еще один пример. Программа складывает значение двух переменных:
Если мы укажем, что a, b и c являются числами, то вполне логично предположить, что после выполнения программы значение c станет равно 9-ти. Но что будет, если a и b являются не числами, а простыми символами, а c – строкой?
В этом случае мы не можем сложить математически два значения (ну правда, мы же не можем математически сложить две буквы), и символы просто подставятся друг к другу, то есть значение c будет равно ‘54’.
Кроме этого, после запуска программы для каждой переменной в оперативной памяти выделяется некоторое количество байт, которое зависит от типа этой переменной. И значения, которые может принять переменная, ограничены этим количеством байт. К примеру, переменной с типом данных byte выделяется 1 байт памяти, и она может принимать значения от 0 до 255, всего 256, что является количеством вариантов, которые можно закодировать одним байтом. Если же мы укажем для переменной тип byte, но присвоим ей значение, к примеру, 1000, программа работать не будет.
Целочисленные типы
Переменная целочисленного типа может принимать любое целое значение из диапазона значений этого типа. Также является порядковым типом.
Тип Длина (байт) Диапазон byte 1 0..255 shortint 1 -128..127 integer 2 -32768..32767 word 2 0..65536 longint 4 -2147483648..2147483647 В заданиях ЕГЭ, как правило, достаточно использовать тип данных integer.
Вещественные типы
К вещественному типу относят дробные числа и числа с плавающей запятой. Тем не менее, мы можем присвоить вещественному типу целое значение.
Тип Длина (байт) Диапазон single 4 1.5*10 -45 — 3.4*10 38 real 6 2.9*10 -39 — 1.7*10 38 double 8 5*10 -324 — 1.7*10 308 extended 10 3.4*10 -4932 — 1.1*10 4932 В заданиях ЕГЭ, как правило, достаточно использовать тип данных real.
Символьный тип
Любой одиночный символ.
Тип Длина (байт) Диапазон char 1 Любой символ кодировки ASCII Переменной типа char можно присвоить любую букву, цифру, или любой другой символ стандартной кодировки. Также является порядковым типом.
Строковый тип
Если char — это только один символ, то строка — это набор символов. Строкой может быть, к примеру, слово, состоящее из нескольких букв. Также строки относят к структурным типам.
Тип Длина (байт) Диапазон string 256 255 символов кодировки ASCII Логический тип
Переменная логического типа может принимать только два значения: true или false (истина или ложь). Является порядковым типом.
Тип Длина (байт) Диапазон boolean 1 true, false Интервальный тип данных
Интервальный тип указывает, что переменная может принимать значения от одного значения, до другого. К примеру, мы знаем, что переменная может принимать значения только от 5 до 25. Мы можем объявить её тип так:
Поделиться:
Комментарии ( 0 )Нет комментариев. Ваш будет первым!
Типы данных в Паскале
Любая программа, написанная на любом языке программирования, по большому счету предназначена для обработки данных. В качестве данных могут выступать числа, тексты, графика, звук и др. Одни данные являются исходными, другие – результатом, который получается путем обработки исходных данных программой.
Данные хранятся в памяти компьютера. Программа обращается к ним с помощью имен переменных, связанных с участками памяти, где хранятся данные.
Переменные описываются до основного кода программы. Здесь указываются имена переменных и тип хранимых в них данных.
В языке программирования Паскаль достаточно много типов данных. Кроме того, сам пользователь может определять свои типы.
Тип переменной определяет, какие данные можно хранить в связанной с ней ячейке памяти.
Переменные типа integer могут быть связаны только с целыми значениями обычно в диапазоне от -32768 до 32767. В Pascal есть другие целочисленные типы ( byte , longint ).
Переменные типа real хранят вещественные (дробные) числа.
Переменная булевского (логического) типа ( boolean ) может принимать только два значения — true (1, правда) или false (0, ложь).
Символьный тип ( char ) может принимать значения из определенной упорядоченной последовательности символов.
Интервальный тип определяется пользователем и формируется только из порядковых типов. Представляет собой подмножество значений в конкретном диапазоне.
Можно создать собственный тип данных простым перечислением значений, которые может принимать переменная данного типа. Это так называемый перечисляемый тип данных.
Все вышеописанное – это простые типы данных. Но бывают и сложные, структурированные, которые базируются на простых типах.
Массив – это структура, занимающая в памяти единую область и состоящая из фиксированного числа компонентов одного типа.
Строки представляет собой последовательность символов. Причем количество этих символов не может быть больше 255 включительно. Такое ограничение является характерной чертой Pascal.
Запись – это структура, состоящая из фиксированного числа компонент, называемых полями. В разных полях записи данные могут иметь разный тип.
Множества представляют собой совокупность любого числа элементов, но одного и того же перечисляемого типа.
Файлы для Pascal представляют собой последовательности однотипных данных, которые хранятся на устройствах внешней памяти (например, жестком диске).
Понятие такого типа данных как указатель связано с динамическим хранением данных в памяти компьютера. Часто использование динамических типов данных является более эффективным в программировании, чем статических.
Явное преобразование типов
В ряде случаев в Pascal происходит автоматический переход от одного типа данных к другому (от целого к действительному, от символьного к строковому и т.д.). Существует также ряд функций, осуществляющих преобразование типов ( ord , chr , trunc , round ). Наряду с этим в Паскаль возможно явное преобразование типов (ретипизация данных). Для того, чтобы осуществить явное преобразование типа, необходимо использовать имя типа аналогично тому, как используется имя функции. В качестве параметра в этом случае указывается имя преобразуемой переменной.
Преобразовать можно любой тип к любому другому, однако следует выполнять требование: в операторе присваивания переменная слева должна занимать в памяти столько же или больше байт, сколько занимает преобразуемое значение.
Пример задачи, где используется явное преобразование типов
Вычислить значение функции sign(x) = 1 при x > 0; 0 при x = 0; -1 при x < 0.
var x: real; sign: integer; begin readln(x); sign := byte(x > 0) - byte(x < 0); writeln(sign); end.В программе при положительном значении x выражение x > 0 принимает значение true , а выражение x < 0 — false. В результате получается, что byte(x >0) = 1 , byte(x < 0) = 0 , а sign = 1 . При отрицательном значении x byte(x >0) = 0 , byte(x < 0) = 1 , sign = -1 . При нулевом значении x sign = 0 .