- •Средства визуального программирования
- •090105 «Комплексное обеспечение информационной безопасности
- •Ставрополь, 2010 Содержание
- •Введение
- •Задачи дисциплины – дать основы:
- •В результате изучения дисциплины студенты должны
- •1.1. Версия 1
- •1.2. Версия 2
- •1.3. Версия 3
- •1.4. Версия 4
- •1.5. Версия 5
- •1.6. Версия 6
- •2.1. Главное окно
- •2.2. Окно формы
- •2.3. Окно дерева объектов
- •2.4. Окно инспектора объектов
- •2.5. Окно кода программы
- •3.1. Пустая форма и ее модификация
- •3.2. Размещение нового компонента
- •3.3. Реакция на события
- •3.4. Некоторые итоги
- •4.1. Страница standard
- •4.2. Страница additional
- •4.3. Страница win32
- •4.4. Страница system
- •4.5. Страница dialogs
- •4.6. Страница win31
- •4.7. Страница samples
- •4.8. Компоненты для работы с базами данных
- •4.9. Компоненты для доступа к интернет
- •4.10. Доступ к серверам автоматизации
- •5.1. Учебная программа
- •5.2. Структура программ delphi
- •5.3. Типы
- •5.4. Операторы языка
- •5.5. Массивы
- •5.6. Процедуры и функции
- •6.1. Алфавит
- •6.2. Идентификаторы
- •6.3. Константы
- •6.4. Выражения
- •6.5. Операции
- •7.1. Простые типы
- •7.2. Структурированные типы
- •7.3. Строки
- •7.4. Указатели и динамическая память
- •7.5. Псевдонимы типов
- •8.1. Локализация имен
- •8.2. Описание подпрограммы
- •8.3. Параметры-массивы и параметры-строки
- •8.4. Процедурные типы
- •8.5. Рекурсия и опережающее описание
- •9.1. Основные понятия
- •9.2. Составляющие класса
- •9.3. Объявление класса
- •9.4. Интерфейсы
- •10.1. Основные свойства варианта
- •10.2. Преобразование вариантов к данным других типов
- •10.3. Подпрограммы для работы с вариантами
- •10.4. Вариантные массивы
- •10.5. Пользовательские варианты
- •11.1. Доступ к файлам
- •11.2. Процедуры и функции для работы с файлами
- •11.3. Текстовые файлы
- •11.4. Типизированные файлы
- •11.5. Нетипизированные файлы
- •11.6. Средства windows для работы с файлами
- •11.7. Отображение файлов в память
- •11.7.1. Создание/открытие файла
- •11.8. Объектная модель работы с файлами
- •12.1. Структура модулей
- •12.2. Заголовок модуля и связь модулей друг с другом
- •12.3. Интерфейсная часть
- •12.4. Исполняемая часть
- •12.5. Инициирующая и завершающая части
- •12.6. Доступ к объявленным в модуле объектам
- •12.7. Типы модулей в delphi
- •13.1. Назначение
- •13.2. Реализация
- •13.3. Пример
- •13.4. Использование
- •13.5. Включение в библиотеку форм
- •15.1. Константы простых типов и типа string
- •15.2. Константы-массивы
- •15.3. Константы-записи
- •15.4. Константы-множества
- •15.5. Константы-указатели
- •15.6. Инициация переменных
- •16.1. Класс exception - обработка исключений
- •16.2. Класс tlist - списки
- •16.3. Классы tstrings и tstringlist -наборы строк и объектов
- •16.4. Графический инструментарий
- •Список используемой литературы
6.4. Выражения
Основными элементами, из которых конструируется исполняемая часть программы, являются константы, переменные и обращения к функциям. Каждый из этих элементов характеризуется своим значением и принадлежит к какому-либо типу данных. С помощью знаков операций и скобок из них можно составлять выражения, которые фактически представляют собой правила получения новых значений.
Частным случаем выражения может быть просто одиночный элемент, т. е. константа, переменная или обращение к функции. Значение такого выражения имеет, естественно, тот же тип, что и сам элемент. В более общем случае выражение состоит из нескольких элементов (операндов) и знаков операций, а тип его значения определяется типом операндов и видом примененных к ним операций.
Примеры выражений:
у
21 (а + b) * с
sin(t)
а > 2
not Flag and (a = b)
NIL
[1, 3..7] * setl
6.5. Операции
В Object Pascal определены следующие операции:
унарные not, @ ;
мультипликативные *, /, div, mod, and, shi, shr;
аддитивные +, -, or, xor;
отношения =, <>, <, >, <=, >=, in.
Приоритет операций убывает в указанном порядке, т. е. наивысшим приоритетом обладают унарные операции, низшим - операции отношения. Порядок выполнения нескольких операций равного приоритета устанавливается компилятором из условия оптимизации кода программы и не обязательно слева направо. При исчислении логических выражений операции равного приоритета всегда вычисляются слева направо, причем будут вычисляться все или только достаточные операции в зависимости от установленного в среде
Delphi переключателя Project | Options | Compiler | Complete
Boolean eval: при установленном переключателе вычисляются все операции отношения, при неустановленном - только те, что необходимы для однозначного определения результата исчисления.
Правила использования операций с операндами различного типа приводятся в табл. 6.1.
Таблица 6.1
Операция |
Действие |
Тип операндов |
Тип результата |
not |
Отрицание |
Логический |
Логический |
not |
To же |
Любой целый |
Тип операнда |
@ |
Адрес |
Любой |
Указатель |
* |
Умножение |
Любой целый |
Наименьший целый |
* |
Тоже |
Любой вещественный |
Extended |
* |
Пересечение множеств |
Множественный |
Множественный |
/ |
Деление |
Любой вещественный |
Extended |
div |
Целочисленное деление |
Любой целый |
Наименьший целый |
mod |
Остаток от деления |
Тоже |
- Тоже |
and |
Логическое И |
Логический |
Логический |
and |
То же |
Любой целый |
Наименьший целый |
shl |
Левый сдвиг |
Тоже |
То же |
shr |
Правый сдвиг |
То же |
То же |
+ |
Сложение |
Тоже |
Тоже |
+ |
Тоже |
Любой вещественный |
Extended |
+ |
Объединение множеств |
Множественный |
Множественный |
+ |
Сцепление строк |
Строковый |
Строковый |
- |
Вычитание |
Любой целый |
Наименьший целый |
- |
Тоже |
Любой вещественный |
Extenden |
or |
Логическое или |
Логический |
Логический |
or |
Тоже |
Любой целый |
Наименьший целый |
= |
Равно |
Любой простой или строковый |
Логический |
0 |
Не равно |
Тоже |
Тоже |
< |
Меньше |
Логический |
Логический |
<= |
Меньше или равно |
Тоже |
Тоже |
> |
Больше |
То же |
Тоже |
>= |
Больше или равно |
Тоже |
Тоже |
Унарная операция @ применяется к операнду любого типа и возвращает результат типа pointer (см. гл. 9), в котором содержится адрес операнда. Если операция @ применяется к процедуре, функции или методу в объекте, ее результатом будет адрес точки входа в эту процедуру (функцию, метод). Этот адрес можно использовать только в подпрограмме, написанной на Ассемблере, или во фрагментах
INLINE.
В Object Pascal определены следующие логические операции:
not - логическое НЕ;
and - логическое И;
or - логическое ИЛИ;
xor - исключительное ИЛИ.
Логические операции применимы к операндам целого и логического типов. Если операнды - целые числа, то результат логической операции есть тоже целое число, биты которого (двоичные разряды) формируются из битов операндов по правилам, указанным в табл. 6.2.
Таблица 6.2
Логичеcкие операции над данными целого типа (поразрядно) 5 |
|||||
Операнд 1 |
Операнд 2 |
not |
and |
or |
xor |
1 |
- |
0 |
- |
- |
- |
0 |
- |
1 |
- |
- |
- |
0 |
0 |
- |
0 |
0 |
0 |
0 |
1 |
- |
0 |
1 |
1 |
1 |
0 |
- |
0 |
1 |
1 |
1 |
1 |
- |
1 |
1 |
0 |
К логическим же в Object Pascal обычно относятся и две сдвиговые операции над целыми числами:
i shl j - сдвиг содержимого / на j разрядов влево; освободившиеся младшие разряды заполняются нулями;
i shr j - сдвиг содержимого i на j разрядов вправо; освободившиеся старшие разряды заполняются нулями.
В этих операциях i и у - выражения любого целого типа.
Логические операции над логическими данными дают результат логического типа по правилам, указанным в табл. 6.3.
Таблица 6.3
Логические операции над данными логического типа |
|||||
Операнд 1 |
Операнд 2 |
not |
and |
or |
xor |
True |
- |
False |
- |
- |
- |
False |
- |
True |
- |
- |
- |
False |
False |
- |
False |
False |
False |
False |
True |
- |
False |
True |
True |
True |
False |
- |
False |
True |
True |
True |
True |
- |
True |
True |
False |
Операция отношения in применяется к двум операндам. Первым (левым) операндом должно быть выражение любого порядкового типа, вторым - множество, состоящее из элементов того же типа, или идентификатор множественного типа. Результат операции будет True, если левый операнд принадлежит множеству.
Лекция 7. ТИПЫ ДАННЫХ
ПРОСТЫЕ ТИПЫ
Порядковые типы
Вещественные типы
Тип дата-время
СТРУКТУРИРОВАННЫЕ ТИПЫ
Массивы
Записи
Множества
СТРОКИ
Типы String и ShortString
Нуль-терминальные строки
УКАЗАТЕЛИ И ДИНАМИЧЕСКАЯ ПАМЯТЬ
Динамическая память
Указатели
Выделение и освобождение динамической памяти
Процедуры и функции для работы с динамической памятью
ПСЕВДОНИМЫ ТИПОВ
Любые данные, т. е. константы, переменные, свойства, значения функций или выражения, в Object Pascal характеризуются своими типами. Тип определяет множество допустимых значений, которые может иметь тот или иной объект, а также множество допустимых операций, которые применимы к нему. Кроме того, тип определяет также и формат внутреннего представления данных в памяти ПК.
Object Pascal характеризуется разветвленной структурой типов данных (рис. 7.1). В языке предусмотрен механизм создания новых типов, благодаря чему общее количество используемых в программе типов может быть сколь угодно большим.
В этой и четырех последующих лекциях приводится подробное описание всех типов.