Перечислимый тип данных паскаль - Мир ПК
Fruitsekta.ru

Мир ПК
35 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

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

Урок 17. Перечисляемый и интервальный типы данных

Урок из серии: «Язык программирования Паскаль»

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

Кроме стандартных типов данных Паскаль поддерживает типы данных, определяемые самим пользователем — пользовательские типы. Программист (как пользователем языка) сам определяет идентификатор для типа данных и набор допустимых значений. Из простых типов к пользовательским относятся перечисляемый и интервальный типы данных. Рассмотрим их подробнее.

Перечисляемый тип

Перечисляемый тип — тип данных, заданный списком принадлежащих ему значений.

Идентификатор типа и набор допустимых значений для перечисляемого типа определяются программистом. Для этого используется специальный оператор Type.

type = (значение 1, значение2, …, значениеN);var

В определении перечисляемого типа значения от значение1 до значениеN являются константами типа имя_типа.

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

typeGaz = (Ge,C,O,N);Metall = (Na, K, Li, Cb, Zn);

Met1, Met2: Metall ;

В данном примере приведены два пользовательских типа данных — Gaz и Metall, определены их значения — обозначения некоторых газов и металлов периодической таблицы Д.И. Мендилеева. Переменные G1, G2, G3 и Met1, Met2 могут принимать только одно из перечисленных значений.

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

Набор операций

Для значений перечисления одного и того же типа определены операции отношения. Упорядочение осуществляется по номеру элемента в описании типа. Например, будет истинно выражение Winter = ( .. );var

typeDays = 1 .. 31;var

RabDay, BolnDay: Days

В данном примере переменные RabDay BolnDay имеют тип Days и могут принимать любые значения из диапазона 1 .. 31. Выход из диапазона вызывает программное прерывание.

Интервальный и перечисляемый типы относятся к порядковым типам. Значит, для интервального типа определены операции отношения, и функции для определения порядкового номера, предыдущего и последующего элементов, т. е финкции Succ(), Pred() и Ord().

На этом уроке мы описали простые (скалярные), пользовательские типы данных: перечисляемый и интервальный.

Из простых типов данных остался еще один — вещественный. Рассмотрим его на следующем уроке.

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

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

Язык Pascal включает следующие структурированные типы: строки, массивы, записи, множества, файлы. Но перед тем, как приступить к изучению этих типов, рассмотрим два порядковых типа данных — перечисляемый и интервальный.

Перечисляемый тип Паскаль:

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

В процессе создания программы у нас может появиться необходимость объединить в одну группу по какому-либу признаку совокупность значений перечисляемого типа. К примеру, перечисляемый тип ZnakZodiaka (Знак зодиака) включает скалярные значения Oven, Strelec, Kozerog, Bliznecy, Vesy (Овен, Стрелец, Козерог, Близнецы, Весы); перечисляемый тип Planeta (Планета) объединяет скалярные значения Mercury, Venera, Earth, Mars (Меркурий, Венера, Земля, Марс). Описание перечисляемого типа происходит в разделе описания типов:

Описание переменных скалярного типа, объявленные в разделе type, производится при помощи имен типов:

Planeta = (Mercury,Venera,Earth,Mars); var Solnsystem: Planeta;

Таким образом, переменная Solnsystem может принимать следующие значения: Mercury, Venera, Earth или Mars. Также переменные, имеющие перечисляемый тип, могут быть объявлены в разделе var:

Solnsystem: Mercury,Venera,Earth,Mars;

Как мы видим, имена типов здесь уже не присутствуют, и переменные представляют собой совокупность значений перечисляемого типа. К переменным рассматриваемого типа можно применить оператор присваивания «:=»

Последовательность значений перечисляемого типа нумеруется автоматически, начиная с нуля:

Planeta = (Mercury,Venera,Earth,Mars);

В этом примере Mercury имеет значение 0, Venera — значение 1, Earth — значение 2, Mars — значение 3.

Интервальный тип данных Паскаль:

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

Примеры диапазонов:

diap=0..255;

type

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

С переменными данного типа можно выполнять все операции и применять к ним стандартные функции, которые являются допустимыми для используемого базового типа. Данная публикация поможет Вам хорошенько изучить перечисляемый и интервальный тип данных Паскаль. Увидимся.

лабы по информатике, егэ

лабораторные работы и задачи по программированию и информатике, егэ по информатике

Pascal: Занятие № 9. Типы данных пользователя Паскаль Type

Создание типов данных пользователя в Pascal

Типы данных в Pascal делятся на простые и сложные.

К простым типам относятся стандартные, перечисляемые и ограниченные.

К сложным типам – массивы, множества, записи, файлы. Элементами сложных типов могут быть простые и сложные типы. Мы познакомимся со сложными типами данных позже.

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

Новые (пользовательские) типы данных нужны в первую очередь для наглядности и удобства:

const n = 10; m = 50; type matr = array [1..n, 1..m] of integer; var a : matr;

Но другой причиной является то, что в Паскале в определенных конструкциях разрешено записывать лишь имена типов, а не их определения.

Например, при описании процедур с параметрами считается неверным писать:

procedure p(a: array[1..10] of Integer);

Зато следует создать тип данных и записать так:

type vector = array[1..10] of integer; var procedure p(a: vector);

Примеры описания массивов при помощи новых типов

type vector = array[1..10] of integer; matritsa = array[1..8] of vector; var .

Три варианта описаний матрицы эквивалентны:

type vector = array[1..10] of integer; matritsa = array[1..8] of vector;

type matritsa = array[1..8] of array[1..10] of integer;

type matritsa = array[1..8,1..10] of integer;

В следующем примере переменные c и d описаны одинаково:

type vector = array[1..10] of integer; matritsa = array[1..8] of vector; var a,b: vector; c:matritsa; d:array[1..8] of vector;

Пример результата:

Перечисляемый тип и интервальный тип в Паскаль

Перечисляемый тип

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

Эти значения не могут являться строками, их нельзя вывести на печать и нельзя ввести в компьютер при помощи операторов Read и Write .

Рассмотрим пример создания перечисляемого типа в Паскаль:

type pt=(word1,word2, . wordN); var w: pt;

  • pt – идентификатор типа (произвольный),
  • word1 , word2 … — конкретные значения, которые может принимать переменная w , принадлежащая типу pt
  • значения данного типа считаются упорядоченными, т.е. описание типа одновременно вводит упорядочение word1 Интервальный тип

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

    Рассмотрим пример объявления интервального типа:

    Совместное использование перечисляемого и интервального типов

    Переменную интервального типа можно задать с основой на базовый перечисляемый тип. Рассмотрим пример:

    type color=(red,yellow,green,blue); var b:red..green; begin b:=red; writeln(b); b:=yellow; writeln(b); b:=green; writeln(b); readln end.

    В данном примере тип color — является базовым. Переменная b интервального типа определена при помощи базового перечисляемого типа.

    Один из вариантов решения данной задачи выглядит так:

    const dni: array[1..12] of byte = (31,28,31,30,31,30,31,31,30,31,30,31); var s,i: integer; begin s:=0; for i:=6 to 8 do s:=s+dni[i]; <летние месяцы - 6, 7, 8>writeln(s) end.

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

    TYPE mes = (january, february, march, april, may, june, july, august, september, october, november, december); CONST dni:array[january..december] of Byte = (31,28,31,30,31,30,31,31,30,31,30,31); VAR s:Integer; i:mes; <переменная счетчика цикла i задана типом mes, а не Integer>BEGIN s:=0; for i:=june to august do s:=s+dni[i]; WriteLn(s) END.

  • Определить перечислимый тип со значениями дней недели (mon, tue, wed, thu, fri, sat, sun).
  • Объявить переменную, относящуюся к этому типу.
  • В программе присвоить значение переменной (из значений типа, например, mon).
  • Проверять переменную: если значение суббота или воскресенье – выдавать сообщение «Выходной!», иначе «Работаем!».
  • Реализовать несколькими способами.

  • Определить перечисляемый тип со значениями названий месяцев года.
  • Объявить переменную, относящуюся к этому типу.
  • В программе присвоить значение переменной (из значений типа).
  • Проверять переменную: если значение относится к зимнему месяцу, — выдавать сообщение «холодно» иначе, — «тепло».
  • Реализовать несколькими способами.

    Использование интервального типа в качестве диапазонного ограничителя

    Следующий пример продемонстрирует неправильное решение данной задачи:

    var otpravlenie,pribitie:byte; begin otpravlenie:=22; pribitie:=otpravlenie+10; writeln(pribitie) end.

    программа вместо ответа «8» напечатает ответ «32».
    Введение ограниченного диапазонного типа позволит избежать неправильного результата, однако компилятор все равно выдаст ошибку:

    var otpravlenie,pribitie:0..24; begin otpravlenie:=22; pribitie:=otpravlenie+10; writeln(pribitie) end.

    Зная об ошибке, теперь можно ее исправить.

  • Огонь (Овен, Лев, Стрелец)
  • Воздух (Весы, Водолей, Близнецы)
  • Вода (Рак, Скорпион, Рыбы)
  • Земля (Козерог, Телец, Дева)

    type znak=(oven,lev,strelets,vesi,vodoley, bliznetsi,rak,skorpion,ribi,kozerog,telets,deva); var a:znak; begin a:=lev; if a =vesi) and (a =rak) and (a =kozerog) and (a

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

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

    В Турбо Паскале пять структуированных типов:

    • массивы;
    • строки;
    • множества;
    • записи;
    • файлы;

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

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

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

    Программист объединяет в одну группу в соответствии с каким-либо признаком всю совокупность значений, составляющих перечисляемый тип. Например, перечисляемый тип Rainbow (РАДУГА) объединяет скалярные значения RED, ORANGE, YELLOW, GREEN, LIGHT_BLUE, BLUE, VIOLET (КРАСНЫЙ, ОРАНЖЕВЫЙ, ЖЕЛТЫЙ, ЗЕЛЕНЫЙ, ГОЛУБОЙ, СИНИЙ, ФИОЛЕТОВЫЙ). Перечисляемый тип Traffic_Light (СВЕТОФОР) объединяет скалярные значения RED, YELLOW, GREEN (КРАСНЫЙ, ЖЕЛТЫЙ, ЗЕЛЕНЫЙ).

    Перечисляемый тип описывается в разделе описания типов, например:

    Каждое значение является константой своего типа и может принадлежать только одному из перечисляемых типов, заданных в программе. Например, перечисляемый тип Traffic_Light не может быть определен в одной программе с типом Rainbow, так как оба типа содержат одинаковые константы.

    Описание переменных, принадлежащих к скалярным типам, которые объявлены в разделе описания типов, производится с помощью имен типов. Например:

    Это означает, что переменная Section может принимать значения RED, YELLOW или GREEN.

    Переменные перечисляемого типа могут быть описаны в разделе описания переменных, например:

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

    К переменным перечисляемого типа может быть применим оператор присваивания:

    Упорядоченная последовательность значений, составляющих перечисляемый тип, автоматически нумеруется, начиная с нуля и далее через единицу. Отсюда следует, что к перечисляемым переменным и константам могут быть применены операции отношения и стандартные функции Pred, Succ, Ord.

    Интервальный тип данных

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

    Минимальное и максимальное значения констант называются нижней и верхней границами отрезка, определяющего интервальный тип. Нижняя граница должна быть меньше верхней.

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

    Волгоградский государственный педагогический университет
    Кафедра алгебры, геометрии и информатики

    Читать еще:  Сортировка массива по возрастанию паскаль
    Ссылка на основную публикацию
    Adblock
    detector