Типы данных 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 )
Нет комментариев. Ваш будет первым!
Что такое byte в паскале
Для решения задачи в любой программе выполняется обработка каких-либо данных. Они хранятся в памяти компьютера и могут быть самых различных типов: целыми и вещественными числами, символами, строками, массивами и т.д.
Тип данных определяет:
- возможные значения переменных, констант, функций, выражений, принадлежащих к данному типу;
- внутреннюю форму представления данных в ЭВМ, т.е. способ хранения чисел или символов в памяти компьютера, размер ячейки, в которую будет записано то или иное значение;
- операции и функции, которые могут выполняться над величинами, принадлежащими к данному типу.
Область памяти, в которой хранится значение определенного типа, называется переменной. У переменной есть имя (идентификатор), тип и значение. Имя служит для обращения к области памяти, в которой хранится значение. Во время выполнения программы значение переменной можно изменить. Перед использованием любая переменная должна быть описана. Описание переменных в языке Free Pascal осуществляется в разделе описания переменных.
Обязательное описание типа приводит к избыточности в тексте программ, но такая избыточность является важным вспомогательным средством разработки программ и рассматривается как необходимое свойство современных алгоритмических языков высокого уровня. В языке Паскаль существуют скалярные и структурированные типы данных.
К скалярным типам относятся стандартные типы и типы, определяемые пользователем. Стандартные скалярные типы включают в себя целые, действительные, символьный, логические и адресный типы. Скалярные типы, определяемые пользователем, – это перечисляемый и интервальный типы.
Структурированные типы имеют четыре разновидности: массивы, множества, записи и файлы.
Рассмотрим основные типы данных.
Символьный тип данных
Данные символьного типа в памяти компьютера, как правило, занимают один байт. Это связано с тем, что обычно под величину символьного типа отводят столько памяти, сколько необходимо для хранения одного символа.
Описывают символьный тип с помощью служебного слова char.
В тексте программы значения переменных и константы символьного типа должны быть заключены в апострофы: ‘а’, ‘b’, ‘+’.
Целочисленный тип данных
Целочисленные типы данных могут занимать в памяти компьютера один, два, четыре или восемь байт. Диапазоны значений данных целочисленного типа представлены в табл. 1.
Таблица 1. Целочисленные типы данных
Типы данных в Паскале
Любая программа, написанная на любом языке программирования, по большому счету предназначена для обработки данных. В качестве данных могут выступать числа, тексты, графика, звук и др. Одни данные являются исходными, другие – результатом, который получается путем обработки исходных данных программой.
Данные хранятся в памяти компьютера. Программа обращается к ним с помощью имен переменных, связанных с участками памяти, где хранятся данные.
Переменные описываются до основного кода программы. Здесь указываются имена переменных и тип хранимых в них данных.
В языке программирования Паскаль достаточно много типов данных. Кроме того, сам пользователь может определять свои типы.
Тип переменной определяет, какие данные можно хранить в связанной с ней ячейке памяти.
Переменные типа 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 .
Pascal. Простые типы данных
При описании переменной необходимо указать ее тип. Тип переменной описывает набор значений, которые она может принимать, и действия, которые могут быть над ней выполнены. Описание типа определяет идентификатор, который обозначает тип.
Простые типы делятся на стандартные (порядковые) и перечисляемые (ограниченные).
Стандартные типы
Турбо-Паскаль имеет четыре встроенных стандартных типа: integer (целое), real (вещественное), boolean (логический) и char (символьный).
Целочисленный тип (integer)
В Турбо-Паскале имеется пять встроенных целочисленных типов: shortint (короткое целое), integer (целое), longint (длинное целое), byte (длиной в байт) и word (длиной в слово). Каждый тип обозначает определенное подмножество целых чисел, как это показано в следующей Таблице.
Встроенные целочисленные типы.
Тип
Диапазон
Формат
8 битов со знаком
16 битов со знаком
32 бита со знаком
8 битов без знака
16 битов без знака
Арифметические действия над операндами целочисленного типа осуществляются в соответствии со следующими правилами:
- Тип целой константы представляет собой встроенный целочисленный тип с наименьшим диапазоном, включающим значение этой целой константы.
- В случае бинарной операции (операции, использующей два операнда), оба операнда преобразуются к их общему типу перед тем, как над ними совершается действие. Общим типом является встроенный целочисленный тип с наименьшим диапазоном, включающим все возможные значения обоих типов. Например, общим типом для целого и целого длиной в байт является целое, а общим типом для целого и целого длиной в слово является длинное целое. Действие выполняется в соответствии с точностью общего типа и типом результата является общий тип.
- Выражение справа в операторе присваивания вычисляется независимо от размера переменной слева.
Операции совершаемые над целыми числами:
SQR - возведение в квадрат
DIV - после деления отбрасывает дробную часть
MOD - получение целого остатка после деления
ABS - модуль числа
RANDOM(X)-получение случайного числа от 0 до Х
а:=100; b:=60; a DIV b результат - 1 а MOD b результат - 40
Описываются переменные целого типа следующим образом:
var список переменных: тип;
Например: var а,р,n:integer;
Вещественный тип(real)
К вещественному типу относится подмножество вещественных чисел, которые могут быть представлены в формате с плавающей запятой с фиксированным числом цифр. Запись значения в формате с плавающей запятой обычно включает три значения - m, b и e - таким образом, что m*b е , где b всегда равен 10, а m и e являются целочисленными значениями в диапазоне вещественного типа. Эти значения m и e далее определяют диапазон и точность вещественного типа.
Имеется пять видов вещественных типов: real, singlе, duble, exnende, comp. Вещественные типы различаются диапазоном и точностью связанных с ними значений
Диапазон и десятичные цифры для вещественных типов
Тип
Диапазон
Цифры
2.9x10Е-39 до 1.7x10Е 38
1.5x10Е-45 до 3.4x10Е 38
5.0x10Е-324 до 1.7x10Е 308
3.4x10Е-493 до 1.1x10Е 403
Операции совершаемые над вещественными числами:
- Все операции допустимые для целых чисел.
- SQRT(x)-корень квадратный из числа х.
- SIN(X), COS(X), ARCTAN(X).
- LN(X)-натуральный логарифм.
- EXP(X)-экспонента Х (е х ).
- EXP(X*LN(A))-возведение в степень (А х ).
- Функции преобразования типов:
- TRUNC(X)-отбрасывает дробную часть;
- ROUND(X)-округление.
- Если в арифметическом действии встречаются числа типа real и integer, то результат будет иметь тип real.
- Все составные части выражения записываются в одну строку.
- Используются только круглые скобки.
- Нельзя подряд ставить два арифметических знака.
Описываются переменные вещественного типа следующим образом:
var список переменных: тип;var d,g,k:real;
Символьный тип(char)
K типу char относится любой символ заключенный в апострофы. Для представления апострофа как символьную переменную, надо заключить его в апостроф:’’’’.
Каждый символ имеет свой код и номер. Порядковые номера цифр 0,1..9 упорядочены по возрастанию. Порядковые номера букв также упорядочены по возрастанию, но не обязательно следуют друг за другом.
К символьным данным применимы знаки сравнения:
Функции, которые применимы к символьным переменным:
-
ORD(X) - определяет порядковый номер символа Х. Пример:
ord(‘a’)=97;
chr(97)=’a’;
pred(‘B’)=’A’;
succ(‘A’)=’B’;
Перечислимый тип
Перечислимый тип данных назван так потому, что задается в виде перечисления констант в строго определенном порядке и в строго определенном количестве. Перечислимый тип состоит из списка констант. Переменные этого типа могут принимать значение любой из этих констант. Описание перечислимого типа имеет вид:
Type =(список констант); Var :;
где - это особый вид констант, задаваемых через запятую и имеющих свой порядковый номер, начиная с 0.
type направление=(север, юг, запад, восток); месяц=(июнь,июль,август,январь); емкость=(ведро,бочка,канистра,бак); var поворот:направление; отъезд:месяц; объем:емкость;
var поворот:(свер, юг, запад, восток); отъезд:(июнь, июль, август, январь); объем:(ведро, бочка, канистра, бак);
Можно выполнить такие операторы присваивания:
поворот:=юг; отъезд:=август; объем:=бак;
но нельзя выполнять смешанные присваивания:
отъезд:=юг; объем:=август;
К переменным перечислимого типа применимы следующие функции:
1. ORD - порядковый номер
2. PRED - предшествующий элемент
3. SUCC - последующий элемент.
PRED(бочка)=ведро; SUCC(юг)=запад; ORD(июль)=1;
Переменные перечислимого типа можно сравнить, так как они упорядочены и пронумерованы. Так выражения: север < юг, июнь < январь имеют значения TRUE, а юг>запад и бак
Ограниченный тип
Если переменная принимает не все значения своего типа, а только в некотором диапазоне, то ее можно рассматривать как переменную ограниченного типа. Каждый ограниченный тип задается путем накладывания ограничения на базовые типы.
TYPE =константа1..константа2
При этом должны выполняться следующие правила:
- Обе ограниченные константы должны быть одного типа.
- В качестве базового типа можно использовать любой простой тип, кроме действительного(real).
- Начальные значение при определении ограниченного типа не должно быть больше конечного значения.
type index=0..63; letter=’a’..’z’; var char1,char2:letter; a,g:index;
Можно описывать сразу в разделе описания переменных:
var a,g:0..63; char1,char2:’a’..’z’.