русс | укр

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

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

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

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


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

Перечисляемый тип данных


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


 

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

Например,

Var month:(january, february, march,

april, may,june, july, august,

september, october, november,

december);

Порядок элементов перечисляемого типа определяется порядком их следования в описании. Левый имеет минимальное значение (значение функции Ord для него равно 0), а правый − максимальное.

К переменным перечисляемого типа можно применять операции сравнения. Так, например, february<november.

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

 

§26. Описание переменных, констант и типов

Раздел описания констант

 

Константа − это величина, которая не изменяет своего значения в процессе выполнения программы. С константами мы уже встречались, так как в общем случае константой является любое целое или вещественное число, символ, идентификаторы false и true, а также идентификаторы, обозначающие значения переменных перечисляемого типа. Но константа может быть обозначена и именем. В этом случае она должна быть объявлена в разделе описания констант. Раздел описания констант начинается словомConst (от англ. constancy − постоянство).

Например,

Const N=25; K=38; D=(N+K) Div 2;

Letter='f'; M=5E15;



Здесь N, К, D − целочисленные константы, Letter − константа символьного типа, а М − константа вещественного типа. Следует отметить, что константа D принимает свое значение после вычисления выражения. В разделе описания констант можно ис­пользовать лишь некоторые стандартные функции, такие, как Abs, Chr, Pred, Succ, Odd, Ord.

Именование констант делает программу более удобной для понимания и внесения исправлений. При изменении констант достаточно будет изменить соответствующие значения в разделе описания констант.

Наряду с переменными и константами имеются и так называемые типизированные константы. В описании типизированной константы присутствуют описание типа и одно из допустимых значений, например,

Const N: Integer=15; ch: Char=#87;

Типизированные константы являются, собственно говоря, переменными. В частности, они могут изменять свое значение в процессе выполнения программы. От обычных переменных они отличаются лишь тем, что инициализируются при запуске программы.

Раздел описания типов

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

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

• формат представления данных в памяти ЭВМ;

• множество допустимых значений;

• множество допустимых операций.

Примечание. Следует отметить, что все типы данных изучались по этой схеме.

Все простые типы языка Паскаль можно разделить на стандартные и пользовательские. К стандартным типам относятся типы: Integer, Real, Char, Boolean, а также некоторые другие.

Пользовательские типы объявляются в разделе описания типов, который открывается словомType.

Пример

Type

week=(sunday, monday, tuesday,

wednesday, thursday, friday,

saturday);

work_week=monday..friday;

day=l..31;

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

После того, как тип объявлен, в разделе описания переменных можно пользоваться вновь введенным идентификатором.

Разделы описания констант, типов и переменных должны находиться перед основным блоком программы.

 

§27. Преобразование типов.

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

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

Рассмотрим такую ситуацию. Пусть заданы типы Т1 и Т2, а также описаны переменные р1 и р2 следующим образом:

Var p1:T1; p2:T2;

Когда можно присвоить переменной р1 значения р2: р1:=р2? Чтобы ответить на этот вопрос, рассмотрим совместимость простых типов по присваиванию. Операция р1:=р2 является допустимой, если истинно одно из следующих утверждений:

• Т1 и Т2 − тождественные типы.

Типы являются тождественными, если они описаны одним и тем же идентификатором или происходят от одного и того же идентификатора.

Пример

TypeT1=Real; T2=Real; T3=T1;

T4=(red, green, blue, black, white);

T5=(red, green, blue, black,white);

T6=T4;

Здесь T1, Т2 и Т3 − тождественные типы, Т4, Т5 − не тождественные, поскольку (red, green, blue, black, white) не являются идентификаторами типа, Т4 и Т6 являются тождественными.

• Т2 является поддиапазоном типа Т1. Например, Type T1=Real; T2=Integer;

(множество целых чисел входит в диапазон вещественных чисел).

• T1 и Т2 являются отрезками одного и того же типа.

Например:

TypeT1=1..100; T2=-3..20;

week= (dl, d2, d3, d4, d5, d6, d7);

working_week=(d1..d5);

Совместимость по присваиванию станет более понятна, если вспомнить, что переменные в памяти занимают определенное число байт. Так, переменная типа Integer занимает 2 байта, типа Real − 6 байт. Переменной, которая занимает 6 байт, можно присвоить значение, занимающее 2 байта, а наоборот − не всегда.

Совместимость типов необходима также в выражениях и операциях сравнения.

Program Example_66;

Var a: Byte; b: Integer; c: Longint;

Begin

Writeln('Введите 2 числа:

Byte,Integer)');

Readln(a, b);

c:=a+b;

Writeln(c);

End.

Определить тип следующих выражений: a+b; a+b+c; a+b+c+x, если переменные описаны так:

Var a:Byte; b:Integer;

c:Longint; x:Real;

Выражение справа в операторе присваивания вычисляется независимо от размера или типа переменной слева. Число 32867 не входит в диапазон допустимых значений типа Integer, именно вследствие этого мы получаем неправильный результат. Чтобы этого не случилось, нужно преобразовать переменные к более "вместительному" типу.

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

<идентификатор типа>(переменная).

Чтобы получить правильный результат, нужно записать следующий оператор:

c:=Longint(a)+Longint(b);

или:

c:=a+Longint(b);

Для преобразования типов используются также следующие функции:

Round(от англ. round − круглый, округлять) − округление числа до ближайшего целого

Trunc (от англ. truncate − урезать) − отбрасывание дробной части числа.

Int (от англ. integer – целый) − целая часть вещественного числа.

Frac(от англ. fraction − дробь) − дробная часть вещественного числа.

Low (от англ. low − низкий) − наименьшее значение данного порядкового или перечисляемого типа.

High (от англ. high − высокий, верх) − наибольшее значение данного порядкового или перечисляемого типа.

Пример 1

"Вечный календарь". Известно, что если дата лежит в диапазоне от 1582 до 4902 г., номер дня недели (номер воскресенья - 0, понедельника − 1,…, субботы − 6) равен остатку от деления на 7 значения выражения [2.6m-0.2]+d+y+[y/4]+[c/4]-2c

Здесь d − номер дня в месяце (1, 2, ...); m номер месяца в году, нумерация начинается с марта (у марта − номер 1, у апреля − номер 2, ..., у декабря − номер 10, январь и февраль считаются месяцами с номерами 11 и 12 предыдущего года); у− две младшие цифры года; с − две старшие цифры года; [х] обозначает целую часть числа х.

Вычислить количество пятниц, приходящихся на 13−е число в XX столетии.



<== предыдущая лекция | следующая лекция ==>
Решение | Решение


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


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

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

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


 


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

 
 

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

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