
- •1. Основы работы на компьютере
- •1.1. Операционная система ms dos
- •Работа с каталогами
- •Работа с файлами
- •1.2. Программа-оболочка norton commander
- •Работа с каталогами
- •Работа с файлами
- •Управляющее меню программы
- •2. Основы алгоритмизации
- •Основы программирования на turbo pascal
- •Типы данных
- •Программирование разветвляющихся процессов
- •Программирование циклических процессов
- •Работа со сложными типами данных
- •4.1. Массивы
- •4.2. Строки типа string
- •4.3. Множества
- •4.4. Комбинированный тип данных – записи
- •Тема 1. Операционная система ms dos
- •Варианты задания
- •Тема 2. Программы-оболочки
- •Пример выполнения задания
- •Варианты задания
- •Тема 3. Основы алгоритмизации
- •Пример выполнения задания
- •Варианты задания
- •Тема 4. Программирование линейных и разветвляющихся процессов Пример выполнения задания
- •Варианты задания
- •Пример выполнения задания
- •Варианты задания
- •Тема 6. Работа с массивами Пример выполнения задания
- •Варианты задания
- •Тема 7. Записи Пример выполнения задания
- •Варианты задания
- •Библиографический список
- •Приложения
- •Основная таблица кода ascii
- •Альтернативная таблица (коды со 128 по 255)
- •Оглавление
- •1. Основы работы на компьютере ……………………………………….……. 1
- •1.1. Операционная система ms dos ………………………………………… 1
4.3. Множества
Тип-множество. В отличие от математического понятия множества множество в Turbo Pascal представляет собой совокупность элементов базового типа. Максимальный размер множества - 256 элементов, которые имеют порядковые номера от 0 до 255. Следовательно, в качестве базовых могут выступать стандартные типы данных byte и char, перечисляемые типы и их диапазоны.
Перечисляемый тип задается перечислением имен-значений типа, например так:
type den_nedeli=(poned, vtor, sreda, chet, pt, sub,vsk);
Нумерация значений типа начинается с нуля. Поскольку перечисляемые типы не являются стандартными, их значения нельзя вводить и выводить стандартными процедурами.
Множество
включает в себя все возможные наборы
элементов базового типа, т.е. все
подмножества данного множества, включая
пустое. Если базовый тип состоит из n
элементов, то число всех подмножеств
равно
.
Описание типа-множества имеет вид:
type <имя типа> = set of <базовый тип>;
Приведем примеры правильного и неправильного описания.
type bukva = ‘a’..’z’; {Тип ‘строчная буква латинского алфавита’}
mn_bukv = set of bukva;
mn_byte = set of byte;
godi_ucheniya = set of 2002..2007; {неверное описание}
mn_nat_chisel = set of 1..256; {неверное описание}
Элементы в множестве располагаются произвольно и не повторяются. Задается множество с помощью конструктора множеств - [ ]. В нем через запятую перечисляются допустимые элементы, в том числе и диапазоны, например:
type vremena_goda = set of (vesna, leto, osen, zima); {Перечисляемый тип}
var q, s : vremena_goda; {Множество времен года}
mn : set of 1..100; {Множество целых чисел от 1 до 100}
begin s := [ ]; {Пустое множество}
q := [vesna, leto];
mn := [1, 5..13, 27..33] …
О
перации
над множествами:
объединение множеств A и B - A + B
например,
s
:= [vesna]
+ [leto..zima];
(результат - [vesna..zima])
пересечение множеств A и B - A * B
например, q := [leto] * [vesna..osen]; ([leto])
р
азность множеств A и B - A - B
например, q := [leto..zima] - [osen]; ([leto, zima])
операции отношения:
- тождественность множеств A = B;
- не тождественность множеств A <> B;
- A является подмножеством B A <= B;
- B является подмножеством B A >= B.
Установить принадлежность некоторого элемента e множеству mn можно с помощью операции in: e in mn. Операция возвращает значение true, если элемент e присутствует в множестве mn, и false - в противном случае. Для включения элемента в множество можно использовать процедуру include(mn, e), а для исключения элемента из множества - процедуру exclude(mn, e).
Пример 15. Из строки символов s1 удалить повторно встречающиеся символы. Структурограмма алгоритма и программа приведены ниже.
Ввод (s1) {Исходная строка}
s2 := ‘’ {Результирующая строка}
mn := [ ] {Множество символов}
i := 1 (1) length(s1)
s1[i] mn ДА
s2 := s2 + s1[i]
mn := mn + [s1[i]]
Вывод (s1, s2)
program Symbol_Odin_Raz;
var i byte;
s1, s2 : string;
mn : set of char;
begin writeln(‘Введите строку символов’);
readln(s1); s2 := ‘’; mn := [ ];
for i := 1 to length(s1) do begin
if not s1[i] in mn then s2 := s2 + s1[i];
mn := mn + [s1[i]] end;
writeln(‘Исходная строка: ‘, s1);
writeln(‘Результирующая строка: ‘, s2)
end.