Что такое 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. Целочисленные типы данных