
- •Основы программирования
- •Введение
- •Основы delphi
- •Общая технология программирования
- •Язык программирования
- •Объектно-ориентированное программирование
- •Визуальное программирование
- •Событийно управляемое программирование
- •Windows-приложение
- •Среда программирования
- •Первоначальные сведения о проекте приложения
- •Встроенный отладчик
- •Использование встроенных классов
- •Иерархия классов
- •Использование палитры компонентов и инспектора объектов
- •Использование графики
- •Основные инструменты
- •Основные характеристики шрифтов
- •Графические данные и палитра
- •Некоторые общие свойства компонентов
- •Сохранение проекта
- •Построение простейшего проекта
- •Понятие исключительной ситуации
- •Введение в object pascal
- •Структура приложения
- •Структура программы-проекта
- •Структура модуля
- •Пример 1
- •Описания программных элементов
- •Программные элементы и адреса памяти
- •Области видимости
- •Правила записи имен
- •Время жизни идентификаторов
- •Использование локальных переменных в примере 1
- •Использование глобальных переменных в примере 1
- •Простые типы
- •Целые типы
- •Целые типы
- •Некоторые операции с целым типом
- •Символьные типы
- •Логические типы
- •Тип перечень
- •Интервальный тип
- •Вещественный тип
- •Вещественные типы
- •Некоторые операции с вещественным типом
- •Тип дата-время
- •Выражения
- •Константы
- •Типизированные константы.
- •Переменные
- •Операции
- •Унарная операция not (отрицание)
- •Логические операции and, or, xor
- •Функции
- •Порядок вычисления выражений
- •Виды операторов
- •Простые операторы
- •Составной оператор
- •Операторы условного перехода
- •Оператор if
- •Пример 2
- •Оператор case
- •Пример 3
- •Использование enter в примере 3
- •Операторы цикла
- •Оператор цикла for
- •Пример 4
- •Оператор цикла while
- •Пример 5
- •Оператор цикла repeat
- •Пример 6
- •Использование процедур break и continue
- •Пример 7
- •Массивы
- •Статические массивы
- •Динамические массивы
- •Пример 8
- •Пример 9
- •Записи (объединения)
- •Оператор with
- •Пример 10
- •Совместимость и преобразование типов данных
- •Идентичность типов
- •Совместимость типов
- •Совместимость по присваиванию
- •Преобразование типов
- •Операторы обработки исключительных ситуаций
- •Пример 11
- •Множества
- •Операции над множествами
- •Пример 12
- •Вариантный тип данных
- •Процедуры и функции
- •Процедура
- •Функция
- •Рекурсия
- •Формальные и фактические параметры
- •Параметры-значения
- •Параметры-переменные
- •Параметры-константы
- •Параметры без типа
- •Массивы открытого типа
- •Парамеры по умолчанию
- •Процедура exit
- •Директивы подпрограммы
- •Соглашения по передаче данных
- •Директива forward
- •Директива external
- •Директива assembler
- •Перегруженные подпрограммы
- •Пример 13
- •Инкапсуляция
- •Класс как объектный тип
- •Наследование
- •Области видимости
- •Операции is и as
- •Виды методов
- •Методы virtual и полиморфизм
- •Методы dynamic
- •Методы message
- •Методы abstract
- •Методы override
- •Методы class
- •Пример 14
- •Динамическое создание компонентов
- •Использование класса со счетчиком объектов
- •Отслеживание разрушения объектов
- •События
- •Указатели на методы
- •Пример 15
- •Типы ссылки на класс
- •Свойства
- •Свойства simple
- •Свойства enumerated
- •Свойства set
- •Свойства object
- •Свойства array
- •Задание начальных значений свойствам
- •Пример 16
- •Файловые типы
- •Текстовые файлы
- •Типизированные файлы
- •Файлы без типа
- •Дополнительные процедуры и функции
- •Пример 17
- •Компонент tmainmenu
- •Указатели
- •Пример 18
- •Динамические структуры данных
- •Однонаправленные списки
- •Двунаправленные списки
- •Стеки, очереди
- •Бинарные деревья
- •Пример 19
- •Процедурный тип
- •Программные единицы dll
- •Пример 20
- •Технологии программирования
- •Потоки данных
- •Пример 21
- •Пример 22
- •Интерфейс drag and drop
- •Пример 23
- •Технология drag and dock
- •Пример 24
- •Использование функций windows api при работе с файлами
- •Пример 25
- •Использование отображаемых файлов
- •Пример 26
- •Программные потоки
- •Приоритеты потоков
- •Класс tthread
- •Пример 27
- •Использование блокировки в примере 27
- •Многопоточное приложение в примере 28
- •Проблемы синхронизации потоков
- •Список используемых в примерах компонентов
- •Список используемых компонентов и других классов
- •Библиографический список
- •Оглавление
Описания программных элементов
Любая программа состоит из программных элементов и операторов управления этими элементами. К программным элементам относятся константы, типы, переменные, процедуры, функции, объекты и некоторые другие. К операторам управления относятся следующие операторы: присваивания, построения разветвлений в расчетах, построения циклических вычислений и др.
С помощью объявления в программу вводится какой-либо программный элемент. Ему присваивается имя и, возможно, начальное значение. Object Pascal является строго типизированным языком. Это означает, что каждому программному элементу до первого применения необходимо задать его тип, чтобы сообщить компилятору, к какого вида сущностям относится объявленный программный элемент. Эта сущность определяет, какие операции можно применить и как эти операции должны интерпретироваться.
Программные элементы и адреса памяти
Каждый программный элемент занимает какую-либо область памяти. Компилятор неявно заменяет каждое имя определенным адресом в памяти. Иногда имя определяет не сам элемент, а “нечто в памяти” – в этом случае имя представляет собой явно указываемый адрес размещения некоторого программного элемента. Такое программный элемент называется ссылкой или указателем. Таким образом, имена могут представлять или программные элементы или адреса размещения этих элементов.
Области видимости
Объявление вводит имя в области видимости, т. е. имя может использоваться только в определенной части программы. Для имени, описанного, например, в процедуре кого-либо обработчика событий (такое имя часто называют локальным – Sender в примере 1), область видимости простирается только в блоке процедуры. Имя, описанное, например, в интерфейсной секции модуля (такое имя называют глобальным - TForm, Form1 в примере 1, имена в подключаемых модулях, например в Forms) имеет область видимости, простирающуюся на весь модуль. Области видимости иногда задают с помощью ключевых слов Private, Public, Protected.
Правила записи имен
Имя (идентификатор) состоит из последовательности букв и цифр. Первый символ должен быть буквой. Символ подчеркивания “_” считается буквой. Количество символов в имени может быть достаточно большим, но значимыми являются первые 63 символа. Буквы в верхнем и нижнем регистре неразличимы в имени, однако, для удобочитаемости программ следует использовать прописные и строчные буквы.
Время жизни идентификаторов
Если программист не указал иного, то программный элемент, например локальный, создается, когда встречается его объявление, и уничтожается, когда его имя выходит из области видимости. Элементы с глобальными именами создаются и инициализируются автоматически при объявлении или с помощью инспектора объектов. Иногда они создаются не автоматически, а явно в программе (очень часто один раз) и “живут” до завершения программы. Если элемент создан явно программистом, то при выходе из области видимости его явно необходимо уничтожить, иначе можно непроизводительно занять всю память.
Использование локальных переменных в примере 1
Рассмотрим другие варианты решения примера 1. Вначале исследуем понятие локальных переменных, введенное выше. Использование локальных переменных, в данном случае, повышает “наглядность” программного кода. Для реализации этой идеи достаточно изменить один обработчик - нажатие на кнопку Button1 (рис. 13).
procedure TForm1.Button1Click(Sender: TObject);
{объявление локальных переменных}
var a,b,s:integer;
begin
a:=StrToInt(Edit1.Text);
b:=StrToInt(Edit2.Text);
s:=a+b;
Edit3.Text:=IntToStr(s);
end;