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

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

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

страницы: 1 2 3

Совместимость типов данных

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

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

Правила, по которым различные типы данных считаются взаимозаменяемыми, мы приводим ниже.

Эквивалентность

Эквивалентность — это наиболее высокий уровень соответствия типов. Она требуется при действиях с указателями (см. лекцию 10 ), а также при вызовах подпрограмм. «А как же тогда быть с оговоркой, сделанной двумя абзацами выше?» — спросите вы. Мы не станем сейчас описывать механизм передачи аргументов процедурам и функциям , поясним лишь, что эквивалентность типов требуется только для параметров–переменных (см. лекцию 8 ).

Итак, два типа — Т1 и Т2 — будут эквивалентными, если верен хотя бы один вариант из перечисленных ниже:

  • Т1 и Т2 совпадают;
  • Т1 и Т2 определены в одном объявлении типа ;
  • Т1 эквивалентен некоторому типу Т3, который эквивалентен типу Т2.

Поясним это на примере:

type T2 = T1 ;
T3 = T1 ;
T4 , T5 = T2 ;

Здесь эквивалентными будут Т1 и Т2; Т1 и Т3; Т1 и Т4; Т1 и Т5; Т4 и Т5. А вот Т2 и Т3 — не эквивалентны!

Совместимость

Совместимость типов требуется при конструировании выражений, а также при вызовах подпрограмм (для параметров–значений). Совместимость означает, что для переменных этих типов возможна операция присваивания — хотя во время этой операции присваиваемое значение может измениться: произойдёт неявное приведение типов данных (см. п. « Приведение типов данных » ниже).

Два типа Т1 и Т2 будут совместимыми, если верен хотя бы один вариант из перечисленных ниже:

  • Т1 и Т2 эквивалентны (в том числе совпадают);
  • Т1 и Т2 — оба целочисленные или оба вещественные ;
  • Т1 и Т2 являются подмножествами одного типа;
  • Т1 является некоторым подмножеством Т2;
  • Т1 — строка , а Т2 — символ (см. лекцию 5 );
  • Т1 — это тип Pointer , а Т2 — типизированный указатель (см. лекцию 10 );
  • Т1 и Т2 — оба процедурные , с одинаковым количеством попарно эквивалентных параметров , а для функций — с эквивалентными типами результатов (см. лекцию 8 ).
Совместимость по присваиванию

В отличие от простой совместимости, совместимость по присваиванию гарантирует, что в тех случаях, когда производится какое–либо присваивание (используется запись вида a := b; или происходит передача значений в подпрограмму 1 или из неё и т. п.), не произойдёт никаких изменений присваиваемого значения.

Два типа данных Т1 и Т2 называются совместимыми по присваиванию, если выполняется хотя бы один вариант из перечисленных ниже:

  • Т1 и Т2 эквивалентны, но не файлы2 ;
  • Т1 и Т2 совместимы, причём, Т2 — некоторое подмножество в Т1;
  • Т1 — вещественный тип, а Т2 — целый .
Приведение типов данных
Неявное приведение типов данных

Как мы упомянули в п. « Арифметические операции » выше, тип результата арифметических операций (а следовательно, и выражений) может отличаться от типов исходных операндов. Например, при «дробном» делении ( / ) одного целого числа на другое целое в ответе всё равно получается вещественное. Такое изменение типа данных называется неявным приведением типов.

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

то на экране мы увидим не -10, а 246 (246 = 256 — 10).

Неявным образом осуществляется и приведение при несоответствии типов переменной–счётчика и границ в циклах for (см. лекцию 3 ).

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

Явное приведение типов данных

Тип значения можно изменить и явным способом: просто указав новый тип выражения, например: a := Byte (b). В этом случае переменной а будет присвоено значение, полученное новой интерпретацией значения переменной b. Скажем, если b имеет тип ShortInt и значение -23, то в a запишется 233 (= 256 — 23).

Приводить явным образом можно и типы, различающиеся по длине. Тогда значение может измениться в соответствии с новым типом. Скажем, если преобразовать тип LongInt в тип Integer , то возможны потери из–за отсечения первых двух байтов исходного числа. Например, результатом попытки преобразовать число 100 000 к типу Integer станет число -31 072, а к типу Word — число 34 464.

Функции, изменяющие тип данных

В заключение мы приведём список стандартных функций, аргумент и результат которых принадлежат к совершенно различным типам данных:

страницы: 1 2 3

Типы данных 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 .

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

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

Тип данных определяет:

  • возможные значения переменных, констант, функций, выражений, принадлежащих к данному типу;
  • внутреннюю форму представления данных в ЭВМ, т.е. способ хранения чисел или символов в памяти компьютера, размер ячейки, в которую будет записано то или иное значение;
  • операции и функции, которые могут выполняться над величинами, принадлежащими к данному типу.

Область памяти, в которой хранится значение определенного типа, называется переменной. У переменной есть имя (идентификатор), тип и значение. Имя служит для обращения к области памяти, в которой хранится значение. Во время выполнения программы значение переменной можно изменить. Перед использованием любая переменная должна быть описана. Описание переменных в языке Free Pascal осуществляется в разделе описания переменных.

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

К скалярным типам относятся стандартные типы и типы, определяемые пользователем. Стандартные скалярные типы включают в себя целые, действительные, символьный, логические и адресный типы. Скалярные типы, определяемые пользователем, – это перечисляемый и интервальный типы.

Структурированные типы имеют четыре разновидности: массивы, множества, записи и файлы.

Рассмотрим основные типы данных.

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

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

Описывают символьный тип с помощью служебного слова char.

В тексте программы значения переменных и константы символьного типа должны быть заключены в апострофы: 'а', 'b', '+'.

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

Целочисленные типы данных могут занимать в памяти компьютера один, два, четыре или восемь байт. Диапазоны значений данных целочисленного типа представлены в табл. 1.

Таблица 1. Целочисленные типы данных

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

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