Перейти к содержимому

Как в паскале обозначается совокупность

  • автор:

Типы данных

Множественный тип данных. Множество. Элемент множества. Способы задания множества. Объединение множеств. Разность множеств. Пересечение множеств

Множественный тип данных напоминает перечислимый тип данных. Вместе с тем, множество — набор элементов, не организованных в порядке следования. В математике множество — любая совокупность элементов произвольной природы. Понятие множества в программировании значительно уже математического понятия. Определение. Под множеством в Паскале понимается конечная совокупность элементов, принадлежащих некоторому базовому типу. В качестве базовых типов могут использоваться: перечислимые типы данных, символьный и байтовый типы или диапазонные типы на их основе. Такие ограничения связаны с формой представления множества в языке и объясняются тем, что функция Ord для элементов используемого базового типа должна быть в пределах от 0 до 255. Множество имеет зарезервированное слово set of и вводится следующим описанием

Type
< имя типа >= set of < имя базового типа >;
Var
< идентификатор. >:< имя типа >;

Рассмотрите примеры описаний множеств:

Type
SetByte = set of byte;
SetChisla = set of 10 .. 20;
Symbol = set of char;
Month = (January, February, March, April, May, June, July, August, September, October, November, December);
Season = set of Month;
Var
Letter, Digits, Sign : Symbol;
Winter, Spring, Summer, Autumn, Vacation, WarmSeason : Season;
Index : SetChisla=[12, 15, 17];
Operation : set of (Plus, Minus, Mult, Divid);
Param : set of 0..9=[0, 2, 4, 6, 8];

Для переменных типа множества в памяти отводится по 1 биту под каждое возможное значение базового типа. Так, под переменные Letter, Digits, Sign будет отведено по 256/8=32 байта. Для переменной Winter, базовый тип которой (Month) имеет 12 элементов, необходимо 2 байта, причем второй используется только наполовину. Если множество содержит какой-то элемент, то связанный с ним бит имеет значение 1, если нет — 0. Для того, чтобы дать переменной множества какое-то значение, используют либо конструктор множества — перечисление элементов множества через запятую в квадратных скобках:

Sign:=[‘+’, ‘-‘];
Spring:=[March, April, May];
b:=[ ‘k’, ‘l’, ‘d’ ]

либо определение через диапазон. В этом случае в множество включены все элементы диапазона.

Digits:=[‘0’..’9′];
WarmSeason := [May .. September];

Обратите внимание, что в определении множества Digits использованы символы в таблице ASCII-кодов, а не целые числа. Обе формы конструирования могут сочетаться:

Vacation:=[January, February, June .. August];

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

Const
YesOrNo = [‘Y’, ‘y’, ‘N’, ‘n’];

Const
Digits : set of char=[‘0’..’9′];
DigitsAndLetter : set of char=[‘0’..’9′, ‘a’..’z’, ‘A’..’Z’];

Const
Yes = [‘Y’, ‘y’];
No = [‘N’, ‘n’];
YesOrNo = Yes+No;

Объединение множеств (+)

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

Type
Symbol = set of char;
Var
SmallLatinLetter, CapitalLatinLetter, LatinLetter : Symbol;
Begin
. . . . . .
SmallLatinLetter :=[‘a’..’z’];
CapitalLatinLetter := [‘A’..’Z’];
LatinLetter := SmallLatinLetter+CapitalLatinLetter;
. . . . . .
End.

В операции объединения множеств могут участвовать и отдельные элементы множества. Например, допустима следующая запись, где два элемента и множество объединяются в новое множество:

WarmSeason := May+Summer+September;

или другая запись

которую можно применить для организации множества в цикле, если заменить множество [‘c’] переменной Sym того же типа, что и множество B, и считывать с клавиатуры данные в переменную Sym, объединяя ее затем с множеством В.

Разность множеств (-)

Определение. Разностью двух множеств является третье множество, которое содержит все элементы 1-го множества, не входящие во 2-е множество.

Если в вычитаемом множестве есть элементы, отсутствующие в уменьшаемом, они не влияют на результат.

Summer := WarmSeason-Spring-Autumn;
Summer := WarmSeason-May-September;

Модуль System содержит процедуры для включения элемента в множество

Include(Var S : set of T; Element : T);

и исключения из множества

Exclude(Var S : set of T; Element : T);

где S — множество элементов типа Т, а Element — включаемый (или исключаемый) элемент. Эти функции отличаются от операций объединения и вычитания множеств только тем, что генерируют более эффективный код.

Пересечение множеств

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

Summer := WarmSeason*Vacation;

Программирование. Множества Pascal-Паскаль

Еще одним фундаментальным классом данных являются данные, структурированные в виде множеств.

О перечисляемых типах

Мы уже рассматривали три скалярных типа, которые, в принципе, являются перечисляемыми типами, – это boolean, char и integer. В самом деле, ведь каждый из этих типов можно задать следующим образом:

type
Boolean= (false, true);
char= #0..#255;
integer= -32768..32767;

(Представление #xxx означает, что должен быть взят символ, чей код в таблице ASCII равен xxx).

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

shortint>= -128..127;
longint= -2147483648..247483647;
byte= 0..255;
word= 0..65535;

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

Для работы с перечисляемыми типами существуют следующие функции, которые хранятся в библиотеке системных функций, и программист имеет к ним доступ:

ord(N) – возвращает номер элемента N в множестве;
succ(N) – возвращает следующее значение для N;
pred(N) – возвращает предыдущее значение для N.

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

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

Например, мы можем описать тип данных color и перечислить семь основных цветов:

type
color=(red, orange, yellow, green, blue, magenta);

При этом значения получают номера в порядке их перечисления, начиная с 0. Поэтому для данного типа справедливыми будут отношения элементов:

red < orange< yellow< green< blue< magenta;
ord(red)=0;
succ(blue)= magenta;
pred(green)=yellow;

Множественный тип данных Паскаля

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

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

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

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

В качестве базовых типов могут использоваться:

  • перечислимые типы;
  • символьный;
  • байтовый;
  • диапазонные на основе вышеперечисленных.

Такие ограничения связаны с формой представления множественного типа данных в Паскале и могут быть сведены к тому, чтобы функция ord() для используемого базового типа лежала в пределах от 0 до 255.

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

Описание множественного типа данных Паскаля

Type = set of
Пример множественного типа данных Паскаля
Type symbol= set of char;
Var letter, digits, sign: symbol;

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

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

digits:= [‘0’ .. ‘9’];
letter:= [‘a’ .. ‘z’];

Обе формы конструирования множеств могут сочетаться. Например,

letter:= [‘a’ .. ‘z’, ‘A’ .. ‘Z’];

Конструктор вида [] обозначает пустые множества.

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

Const YesOrNo= [‘Y’, ‘y’, ‘N’, ‘n’];

Можно множественный тип определить как типизированную константу:

Const digits: set of char= [‘0’ .. ‘9’];

При описании множественного тип как констант допускается использование знака “+” (слияние множеств). Например,

Const Yes= [‘Y’, ‘y’]; No= [‘N’, ‘n’];
YesOrNo= Yes+ No;

Операции над множественными типами Паскаля

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

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

Пример множественных типов Паскаля

Возможно объединять множественные типы и отдельные элементы. Например,

small:= [‘c’ .. ‘z’];
small:= small + [‘a’] +[‘b’];

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

Пример исключения множественных типов Паскаля

letter:= [‘a’ .. ‘z’];
glasn:= [‘a’, ‘e’, ‘o’, ‘u’, ‘i’, ‘y’];
soglasn:= letter-glasn;

Пресечение множественных типов– множества, содержащие элементы, одновременно входящие в оба множества. Операция пересечения множеств обозначается знаком ‘*’.

Пример пересечения множественных типов

Type chisla= set of byte;
Var z,x,y: chisla;
………..
x:= [0..150];
y:= [100..255];
z:= x*y

Операции отношения множественных типов Паскаля

Наряду с рассмотренными выше операциями, над значениями множественного типа определены и некоторые операции отношения. Операндами операций над множественными значениями в общем случае являются множественные выражения. Среди операций отношения над значениями множественного типа особое место занимает специальная операция проверки вхождения элемента во множества, обозначаемая служебным словом in. В отличие от остальных операций отношения, в которых значения обоих операндов относятся к одному и тому же множественному типу значений, в операции in первый операнд должен принадлежать базовому типу, а второй – множественному типу значений, построенному на основе этого базового типа. Результатом операции отношения, как обычно, является логическое значение (true или false).

‘a’ in glasn значение операции true;
‘o’ in soglasn значение операции false;

Операция сравнения на равенство множественных типов Паскаля. Множества считаются равными (эквивалентными), если все элементы одного множества присутствуют в другом и наоборот. Для операции сравнения на равенство или неравенство используются символы ‘=’ и ‘<>‘.

A:= [2,1,3];
D:= [1,3,2];

Тогда операция A=D имеет значение true, а операция A<>D имеет значение false.

Проверка включения. Одно множество считается включенным в другое (одно множество является подмножеством другого), если все его элементы содержатся во втором множестве. Обратное утверждение может быть и несправедливым. Операции проверки включения обозначаются ‘=’.

letter >= glasn;
soglan

Программирование

Исходники Pascal (127)

Справочник

Справочник по паскалю: директивы, функции, процедуры, операторы и модули по алфавиту

Как в паскале обозначается совокупность

В этой главе мы познакомимся с основными понятиями языка программирования Free Pascal и структурой консольной программы.

Программа на языке Free Pascal формируется с помощью конечного набора знаков, образующих алфавит языка. Алфавит языка состоит из:

  • Букв. В качестве букв используются прописные и строчные буквы латинского алфавита. A,B,C, … , Z, a,b,c,…,z.
  • Цифр. 0,1,2, …, 9
  • Специальных символов. +, -, *, /, =, , [], (), @, <>. ;’, #, _ , $, ^ (тильда), пробел, точка и запятая.

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

Зарезервированные слова являются составной частью языка, и их нельзя использовать в качестве идентификаторов. В языке Паскаль зарезервированными являются следующие слова: and, array, begin, case, const, div, do, downto, else, end, file, for, forward, function, goto, if, in, lable, mod, nil, not, of, or, packed, procedure, program, record, repeat, set, shl, shr, string, then, to, type, unit, until, uses, var, while, with, xor.

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

Стандартные идентификаторы служат для обозначения заранее определённых разработчиками языка типов данных, констант, процедур и функций.

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

Типы данных в языке программирования Паскаль

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

Тип данных, задаваемый при их описании, однозначно определяет форму внутреннего представления, диапазон допустимых значений и множество возможных операций.

Рассмотрим классификацию типов данных, придерживаясь систематизации, принятой в PascalABC.Net.

Простые типы

К простым типам в PascalABC.Net относят целые и вещественные типы, логический, символьный, перечислимый и диапазонный тип. Все простые типы за исключением вещественного называются порядковыми типами.

Целые типы

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

Таблица 1. Целые типы данных

Целые типы данных в Паскаль

Вещественные типы

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

Таблица 2. Вещественные типы данных

Вещественные типы в Паскаль

Символьный тип

Символьный тип служит для представления элементов из допустимого набора (для реализации PascalABC.Net — кодировка Unicode). Для обозначения типа данных используется ключевое слово char . Под каждый символ в PascalABC.Net отводится 2 байта (в других реализациях языка Паскаль отводится 1 байт, поскольку в качестве элементов набора используется расширенная таблица ASCII).

Логический тип

Для обозначения логического типа используется ключевое слово boolean . Множество значений этого типа включает два значения: false (ложь) и true (истина). Под величину логического типа отводится в памяти 1 байт.

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

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

type typeName = (value1, value2, . valuen);

Диапазонный тип

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

  • var
  • range: -100..100;
  • intCh: ‘a’..’z’;

Тип, на основе которого строится подмножество, называется базовым. Занимаемое место в памяти машины значениями диапазонного типа определяется используемым базовым типом.

Структурированные типы

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

Copyright © 2014-2021, Урок информатики
Все права защищены

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *