- •1. Структура (состав) языка
- •2. Алфавит
- •3. Лексическая структура языка
- •4. Структура программной единицы
- •5. Стиль записи программ на языке Паскаль
- •6. Типы данных в Паскале
- •6.3 Классификация типов данных в Турбо Паскале
- •6.4 Порядковые типы
- •6.4.2 Булевский (логический) тип
- •Repeat тело_цикла until (логическое_выражение);
- •6.4.3 Целые типы Выделяют целые типы ------------- со знаком – shortint, integer, longint)
- •1 Группа функций:
- •2 Группа функций:
- •3 Группа функций:
- •6.4.4 Перечисляемый тип.
- •6.4.6 Символьный тип
- •6.5 Вещественные типы.
- •7. Выражения в языке Паскаль.
- •10. Вычисление по формулам.
- •10.1 Оператор присваивания .
- •10.2 Характер использования переменных в математике и в программах.
- •10.3 Бесконечности
- •10.4 Нестандартные операции
- •6.6 Строки
- •1) Операции присваивания и сравнения.
- •3) Заполнение строки одним символом
- •4) Стандартные функции и процедуры для работы со строками:
- •5) Подпрограммы преобразования из строкового представления в числовое и наоборот:
- •8. Совместимость и преобразование типов.
- •Совместимость типов
- •8.2 Тип результата арифметических выражений.
- •8.3 Преобразование (приведение) типов и значений.
- •8.3.1 Явное преобразование (приведение) типов.
- •8.3.2 Неявное преобразование или приведение типов.
- •9. Простейший ввод-вывод на Паскале
- •Стандартные файлы Input и Output
- •9.2 Процедуры ввода информации (с клавиатуры.
- •9.3 Процедуры вывода в тр.
- •10. Вычисление по формулам (продолжение)
- •10.6. Уточнение многоместных (n - арных) операций
- •11. Средства языка Паскаль для циклов с известным числом повторений.
- •12. Табулирование функций
- •13. Разветвляющиеся алгоритмы
- •13.1 Таблица ситуаций и команда выбора.
- •13.2 Средства языка Паскаль для программирования разветствляющихся алгоритмов
- •13.4 Описание ситуаций
- •13.5 Запись команды выбора (case) (уточнение таблицы ситуаций) с помощью набора команд ветвления
- •13.6 Запись последовательных команд ветвления в случае, когда соседние зависимые ситуации имеют общие признаки.
- •13.6.1 Восходящий подход
- •13.6.2 Нисходящий подход
- •14. Циклы с неизвестным числом повторений
- •15. Структурированные типы данных. Массивы
- •15.1 Классификация (особенности) структурированных типов данных
- •15. 2. Определение массива
- •15.3 Объявление массива на Турбо Паскале
- •15.4 Хранение элементов массива. Доступ к элементам и частям массива
- •15.5 Уточнение команд обработки массива
- •16. Правила разработки цикла
- •15. 6 Действия над массивами
- •17. Множества.
- •17.1 Множества в Паскале и в математике. Сходства и различия между ними.
- •17.2 Объявление множества на Паскале
- •17.3 Присваивание значений множествам. Конструктор множества
- •17.4 Операции над множествами.
- •17.5 Сравнение множеств.
- •17.6 Применение множеств.
- •18. Вспомогательные алгоритмы (подпрограммы).
- •18.1 Три способа записи повторяющихся команд
- •18.2 Понятие блока
- •18.3 Объекты подпрограммы (то, над чем выполняются действия).
- •18.4 Свойства локальных и глобальных объектов
- •Свойства глобальных объектов:
- •18.5 Выделение памяти под локальные и глобальные переменные
- •18.6 Передача параметров в подпрограммы.
- •Фактические параметры
- •18.7 Подпрограммы, возвращающие значение (функции)
- •18.8 Особенности использования процедур и функций в Турбо Паскале
- •18.9. Побочный эффект (side effect)
- •18.10 Опережающее определение процедур и функций.
- •18.11 Рекурсия и итерация.
- •18.12 Процедуры и функции как параметры.
- •18.13 Директивы подпрограмм
- •Директива forward
- •Директивы far и near
- •Директива external
- •Директива assembler
- •Директива inline
- •Директива interrupt
- •Отладка и тестирование программ, содержащих подпрограммы
- •18.14.1 Нисходящее тестирование и подпрограммы-заглушки
- •18.14.2 Восходящее тестирование и программы-тестеры
- •18.14.3 Рекомендации по отладке программ, содержащих подпрограммы
- •18.14.4 Использование отладчика для трассировки процедур
- •18.14.5 Область действия идентификаторов и переменные в окне Watch
- •18.15. Получение доступа а параметрам командной строки, запуск внешних программ.
- •19. Записи.
- •19.1 Понятие записи. Объявление записи в программе.
- •19.2 Доступ к полям записи.
- •19.3 Оператор with
- •19.4 Действия над записями
- •19.5 Записи с вариантами
- •Замечание1:Порядок частей – именно такой, как показано: фиксированная часть всегда первая (или единственная)
- •19.6 Типизированные константы - записи
- •20. Модули (Unit)
- •20.1 Что такое модуль?
- •20.2 Зачем нужны модули и какие есть средства, аналогтчные (в какой-то мере) модулям
- •Интерфейсная секция
- •Секция реализации
- •Секция инициализации
- •Подключение других модулей к данному (модулю)
- •20.4 Ссылки на описания модуля
- •Пример создания модуля
- •Использование модулей. Режимы Compile, Build и Make при компиляции модулей
- •Косвенные и перекрестные ссылки на модули
- •Пример модуля (стек)
- •Модули и большие программы
17.3 Присваивание значений множествам. Конструктор множества
Присваивание значений множественной переменной производится с помощью т.н. конструктора множеств и происходит в исполняемой части программы.
Конструктор множества
s := [1,3] ;
В общем случае конструктор множества представляет из себя заключенный в квадратные скобки список констант, переменных или выражений определенного типа - базового типа множества. Вместо отдельных констант в этом списке могут использоваться диапазоны.
ПРИМЕР.
Одно и то же
Это сокращенная запись следующего
списка букв латинского алфавита: 'a',
'b', 'c',
'd', 'e',…..'z',
'A' ,'B',
'C', 'D',
'E',……..,'Z'
s := ['a'.. 'Z'] ; -
неправильная запись
var
s: set of char;
begin
s := ['a'..'z', 'A'..'Z'] ; S := ‘a’..’z’; -- неправильно (нет квадратных скобок)
17.4 Операции над множествами.
Над множествами возможны три операции. Все операции двухместные.
Операндами в этих операциях могут быть как переменные типа множеств, так и конструкторы множеств. Операнды должны принадлежать к одному и тому же множественному типу.
Var
a, b: set of char;
c: set of char;
a, b, c - множественные переменные. Set of char - множественный тип.
А В
Таблица операций над множествами.
-
А В
Операция
Математика
Паскаль
Пересечение
a b
a * b
А В
Объединение
A b
a + b
Разность
a \ b
a - b
Определение 1. Пересечение множеств - новое множество, состоящее из элементов, принадлежащих одновременно множествам A и B.
Определение 2. Объединение множеств - новое множество, в которое входят элементы или из элементов множества А или из элементов множества В или из элементов, принадлежащих тому и другому одновременно.
Определение 3. Разность множеств - новое множество, в которое входят элементы уменьшаемого множества (A), не входящие в число элементов вычитаемого множества (B).
Примечание. Если при выполнении операции объединения (А + В) включаемые в А из В элементы уже присутствуют в множестве А и, если при выполнении операции разности (А - В) вычитаемые из А элементы отсутствуют в множестве А, то сообщения об ошибке не будет. Операции просто не будут выполняться.
Последние две операции используются для выполнения следующих действий:
1). (А+В) используются для включения в множество отдельных элементов.
2). (А-В) используется для исключения отдельных элементов из множества.
Var
s :set of [‘a’..’z’];
begin Пустое
множество
s := [];
Ошибка: а не является ни конструктором,
ни переменной множественного типа.
s := s+['a']; //- верно, включает элемент 'a' в множество s ≡ include(s, ‘a’).
s := s-['a']; //- верно, исключает элемент 'a' из множества s ≡ exclude(s, ‘a’).
Для ввода значения множества и вывода содержимого множества нельзя использовать операторы read и write.
ПРИМЕР. Рассмотрим программу, которая заполняет множество поэлементно.
Примечание. Пусть признаком завершения ввода является '.' (точка) во входном потоке:
Цикл с постусловием
var
s : set of char; {множество}
c : char; {символ , вводимый с клавиатуры}
Подготовка цикла
s := [];
c := #0;
repeat
read (c);
if (c <> ’.’) then s := s+[c];
until (c=’.’);
end.
Цикл с предусловием
var
s : set of char; {множество}
Правильный
вариант: ....... read(c); while
c<> ‘.’ do begin s
:= s + [c]; read(c); end; .......
Подготовка цикла
s := [];
c := #0;
Здесь проверяется предыдущее,
а не текущее значение с
while c <> '.' do
begin
Вставка
s := s+[c]; надо
вставить
end;
s := s - ['.'];
end.
В данной программе не хватает одной строчки. Последним действием в цикле будет включение в число символов множества разделителя ('.'). Эту точку'.' из множества надо исключить (смотри вставку).
ПРИМЕР. Сформировать множество четных чисел в диапазоне от 1 до 100.
Схема решения:
Сначала надо сформировать множество чисел от 1 до 100, которое включает все четные и нечетные числа.
Исключить все нечетные числа.
Const
n = 100;
var
s : set of 1 .. n;
k : 1 .. n;
begin
В множество s включается
совокупность чисел от 1 до 100
s := [1 .. n];
{исключение нечетных чисел}
for k
:= 1 to n
do {odd
- возвращает "истина", если число
- нечетное}
if odd(k) then
s := s - [k];
end.
