русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Диапазоны


Дата добавления: 2013-12-23; просмотров: 961; Нарушение авторских прав


Операции

Машинное представление

Для переменной перечислимого типа выделяется один байт (ограничение ­- 256), в который записывается порядковый номер присваиваемого значения. Порядковый номер определяется из описанного типа, причём нумерация начинается с 0. Имена из списка перечислимого типа являются константами, например,

var

B,С: color;

begin

B:=bluе; // B=1

C:=green; // С=2

Write(ord(B):4,ord(C):4);

end.

После выполнения данного фрагмента программы на экран будут выданы цифры 1 и 2. Содержимое памяти для переменных B и C при этом следующее: В - 00000001; С - 00000010.

На физическом уровне над переменными перечислимого типа определены операции создания, уничтожения, выбора, обновления. При этом выполняется определение порядкового номера идентификатора по его значению и, наоборот, по номеру идентификатора его значение.

На логическом уровне переменные перечислимого типа могут быть использованы только:

· в выражениях булевского типа;

· в операциях сравнения;

При этом сравниваются порядковые номера значений.

 

Тип диапазон представляет собой подмножество величин порядкового типа (называемого базовым типом). Любая конструкция Low..High, где Low и High - постоянные выражения того же самого порядкового типа и Low меньше чем High, обозначает тип диапазон, который включает все величины между Low и High. Например, если

 

type

TColors = (Red, Blue, Green, Yellow, White, Black);

 

можно определить диапазон

 

type

TMyColors = Green..White;

 

Другие примеры:

type

SomeNumbers = -128..127;

Caps = 'A'..'Z';

Если для определения диапазона используются числовые или символьные константы, то этот тип можно указывать при описании переменной:



 

var

SomeNum: 1..500;

 

Порядковый номер каждой величины диапазона берется из базового типа.

Следующий пример вызовет ошибку:

 

type

Percentile = 0..99;

var

I: Percentile;

...

I := 100;

 

Использование постоянных выражений в определении диапазона приводит к синтаксическим проблемам. В любой декларации типа, когда первый значимый символ после «=» - левая скобка, компилятор считает, что определяется перечислимый тип. Следовательно, код

const X = 50; Y = 10;

type Scale = (X - Y) * 2..(X + Y) * 2;

Приведет к ошибке. Необходимо определить тип несколько иначе:

type Scale = 2 * (X - Y)..(X + Y) * 2;

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

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

var

A: 220..250; // Занимает 1 байт

В: 2221..2226; // Занимает 2 байта

C: 'A'..'K'; // Занимает 1 байт

begin

A:=240; C:='C'; B:=2222;

end.

После выполнения данной программы содержимое памяти будет следующим:

A - 11110000; C - 01000011; B - 10101110 00001000.



<== предыдущая лекция | следующая лекция ==>
Перечислимый тип | Символьный тип


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.003 сек.