- •ЛР 1. Операторы и выражения Delphi
- •Оператор присваивания
- •Арифметические операторы
- •Оператор конкатенации строк
- •Логические операторы
- •Операторы поразрядного сдвига
- •Операторы отношения
- •Операторы множеств
- •Составной оператор begin..end
- •Условный оператор if..then..else
- •Оператор-селектор case
- •Оператор перехода goto
- •Оператор with..do
- •Организация циклов
- •Цикл с параметром for..do
- •Инструкция in в цикле for..do
- •Цикл с предусловием while..do
- •Цикл с постусловием repeat..until
- •Вложенные циклы
- •Операторы break и continue
- •ЗАДАНИЕ
- •Вариант 1.
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Вариант 11
- •Вариант 12
- •ЛР 2. Структурные типы
- •Множества
- •Записи
- •Вариантные поля
- •Усовершенствованная запись
- •Массивы
- •Объявление массива
- •Обращение к ячейкам массива
- •Динамический массив
- •ЗАДАНИЕ
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Вариант 11
- •Вариант 12
- •ЛР 3. Объекты и классы
- •Проектирование класса
- •Управление жизненным циклом объекта
- •Опережающее объявление класса
- •Ограничение видимости членов класса
- •Свойства объекта
- •Особенности объявления методов
- •Поля класса и методы класса
- •Иерархия наследования
- •Полиморфизм
- •ЗАДАНИЕ
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •ЛР4. Опорные классы VCL
- •Класс TObject
- •Класс TPersistent
- •Основа компонента, класс TComponent
- •Владение компонентом
- •Класс TControl
- •Принадлежность к родительскому контейнеру
- •Размещение и размеры элемента управления
- •События, связанные с изменением размеров
- •Выравнивание элемента управления в контейнере
- •Видимость и активность элемента управления
- •Задание
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант5
- •Совет
- •ЛР5. Обработка клавиатурных событий и событий мышки
- •Щелчки кнопками мыши
- •Перемещение указателя мыши
- •Вращение колесика мыши
- •Операция перетаскивания drag and drop
- •Обработка событий клавиатуры
- •Задание
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •ЛР 6. Классы потоков данных
- •Прототип потоков данных, класс TStream
- •Потоки с дескриптором, класс THandleStream
- •Файловый поток данных, класс TFileStream
- •Пример работы с файловым потоком данных
- •Задание
- •Вариант 1.
- •Вариант 2.
- •Вариант 3.
- •Вариант 4.
- •Вариант 5.
Языки программирования
ЛР 2. Структурные типы
Для хранения и обработки данных каждой из программ требуются помощники: в простейшем случае — переменные и константы, а при проектировании сложных приложений — структуры. От умения программиста подобрать наиболее подходящую структуру зависит половина успеха.
Различают следующие основные разновидности структурных типов:
множества;
записи;
массивы;
файлы;
классы;
указатели на классы.
Множества
Множество представляет собой коллекцию однотипных значений, в состав которой могут одновременно входить все значения, часть значений или ни одного значения (пустое множество). Язык Delphi предлагает несколько способов объявления множеств (листинг 2.1).
Листинг 2.1. Способы объявления множеств
type TWeekDaysSet = set of (Mo, Tu, We, Th, Fr, St, Su); type TByteSet = set of Byte; //множество от 0 до 255 type TTeenSet= set of 1..10; //множество от 1 до 10
type TMyRange=60..100; //пока это не множество, а диапазон type TMyRangeSet= set of TMyRange; //множество от 60 до 100
Внимание!
Элементы множества представляют собой целые числа и не могут принимать значения меньше нуля.
Если множество содержит всего три элемента, то общее количество возможных комбинаций составляет 23 = 8. Зарезервированное слово Set способно определять множество размером до 256
элементов. Возведите 2 в степень 256 и получите 1,1579208923731619542357098500869 × 1077
вариантов. На практике такое количества вариаций вряд ли когда понадобится, поэтому старайтесь объявлять множества разумного размера.
А теперь предложим несколько строк кода (листинг 2.2), демонстрирующих работу с множествами.
Листинг 2.2. Управление элементами множества
type TFlagsSet = set of (Flag1, Flag2, Flag3);
...
var Flags : TFlagsSet; begin
Flags:=[]; //[0,0,0] - полностью очистили множество
Flags:=[TFlagsSet.Flag1]; //[1,0,0] - включили 1-й элемент Flags:=Flags+[TFlagsSet.Flag3]; //[1,0,1]- добавили 3-й элемент Flags:=Flags-[TFlagsSet.Flag1]; //[0,0,1]- отключили 1-й элемент
17
СКФУ Кафедра компьютерной безопасности