Что такое byte в паскале
Перейти к содержимому

Что такое byte в паскале

  • автор:

Что такое 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 .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *