- •Алфавит языка, имена, числа, строки.
- •Структура программы.
- •3. Тип Integer.
- •4. Тип Real.
- •5. Тип Boolean и Char.
- •6. Описательная часть программного блока.
- •7. Процедуры ввода/вывода
- •8. Оператор присваивания.
- •9. Условный оператор
- •X, y, max: integer;
- •10. Оператор цикла с перечислением
- •11. Циклы с предусловием
- •12. Циклы с постусловием
- •13. Оператор варианта.
- •14. Классификация типов данных.
- •15. Перечислимые типы данных
- •16. Ограниченые типы данных.
- •17. Регулярные типы данных.
- •18. Многомерные массивы.
- •19. Комбинированные типы данных
- •20. Оператор with.
- •21 Записи с вариантами
- •22 Множественные типы данных.
- •23 Операции над данными множесвенного типа
- •24 Файловые типы данных
- •25 Текстовые файлы
- •26 Ссылочные типы данных
- •27 Оператор new
- •28 29 Процедуры и функции
- •30. Параметры процедур и функций.
- •31. Локальные и глобальные объекты в процедуах и функциях
- •32. Рекурсии в процедурах и функциях.
- •33. Структурное представление основных конструкций языка.
- •38. Данные с фиксированной точкой
- •1111111101000111(2)- Инвертируем биты - 0000000010111000(2)
- •39. Внутреннее представление чисел с плавающей точкой.
- •40. Внутреннее представление символьных и строковых данных.
- •41. Реализация алгоритма сортировки с применением метода "часового".
- •42. Сортировка методом "пузырька".
- •43. Сортировка выбором min элемента.
22 Множественные типы данных.
Множественный тип данных напоминает перечислимый тип данных. Вместе с тем, множество - набор элементов, не организованных в порядке следования. В математике множество - любая совокупность элементов произвольной природы. Понятие множества в программировании значительно уже математического понятия.
Определение. Под множеством в Паскале понимается конечная совокупность элементов, принадлежащих некоторому базовому типу.
В качестве базовых типов могут использоваться: перечислимые типы данных, символьный и байтовый типы или диапазонные типы на их основе.
Такие ограничения связаны с формой представления множества в языке и объясняются тем, что функция Ord для элементов используемого базового типа должна быть в пределах от 0 до 255.
Множество имеет зарезервированное слово set of и вводится следующим описанием
Type
< имя типа > = set of < имя базового типа >;
Var
< идентификатор,... >:< имя типа >;
Рассмотрите примеры описаний множеств:
Type
SetByte = set of byte; {множество 1, определённое над типом byte}
SetChisla = set of 10 .. 20; {множество 2, определённое в диапазоне от 10 до 20}
Symbol = set of char; {множество, определённое на множестве символов}
Month = (January, February, March, April, May, June, July, August, September, October, November, December);
Season = set of Month; {тип множества, определённый на базе перечислимого типа Month}
Var
Letter, Digits, Sign : Symbol; {множествa, определённые над символьным типом}
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];
23 Операции над данными множесвенного типа
Данные типа множество позволяют хранить ограниченное число значений определённого типа без определённого порядка. Повторение значений, как правило, недопустимо. За исключением того, что множество в программировании конечно, оно в общем соответствует концепции математического множества. Для этого типа в языках программирования обычно предусмотрены стандартные операции над множествами. В языке Паскаль множество — простой тип данных, хранящий информацию о присутствии в множестве объектов любого счетного типа. Мощность этого типа определяет размер множества — 1 бит на элемент. В Turbo Pascal есть ограничение на 256 элементов, в некоторых других реализациях это ограничение ослаблено.
Пример работы с множествами:
type
{определяем базовые для множеств перечислимый тип и тип-диапазон}
colors = (red,green,blue);
smallnumbers = 0..10;
{определяем множества из наших типов}
colorset = set of colors;
numberset = set of smallmunbers;
{можно и не задавать тип отдельно}
anothernumberset = set of 0..20;
{объявляем переменные типа множеств}
var nset1,nset2,nset3:smallnumbers;
cset:colorset;
begin
nset1 := [0,2,4,6,8,10]; {задаем в виде конструктора множества}
cset := [reb,blue]; {простым перечислением элементов}
nset2 := [1,3,9,7,5]; {порядок перечисления неважен}
nset3 := []; {пустое множество}
nset1 := [0..5]; {возможно задавать элементы диапазоном}
nset3 := nset1 + nset2; {объединение}
nset3 := nset1 * nset2; {пересечение}
nset3 := nset1 - nset2; {разность}
if (5 in set2) or {проверка на вхождение элемента}
(green in cset) then
...
