- •Оглавление
- •Часть 1. Краткое описание Delphi 8
- •Часть 2. Технология ado для баз данных access 186
- •9.1. Общие сведения 289
- •Введение
- •Часть 1. Краткое описание Delphi
- •1. Работа со средой delphi
- •1.1. Ознакомление с delphi
- •1.2. Вкладка дизайнера формы (design)
- •1.3. Вкладка редактора кода программы
- •1.4. Окно object inspector
- •1.5. Окно project manager
- •1.6. Окно палитры инструментов
- •1.7. Создание первого проекта приложения
- •1.8. Сохранение проекта
- •1.8. Сохранение проекта
- •1.9. Компиляция
- •2. Основа языка delphi
- •2.1. Основные понятия языка
- •2.1.1. Элементы языка
- •2.1.2. Пример простой программы
- •2.1.3. Типы данных
- •2.1.4. Операции и выражения
- •2.1.5. Стандартные функции
- •2.1.6. Ввод и вывод на дисплей
- •2.1.7. Оператор присваивания
- •2.2. Операторы языка паскаль
- •2.2.1. Составной оператор
- •2.2.2. Условный оператор
- •2.2.3. Сложные условия
- •2.2.4. Оператор выбора case
- •2.2.5. Оператор цикла for
- •2.2.6. Оператор цикла while
- •2.2.7. Оператор цикла repeat
- •2.2.8. Вложенные циклы
- •2.2.9. Прочие операторы
- •2.3. Общая структура программы
- •2.3.1. Перечень разделов программы
- •2.4. Массивы
- •2.4.1. Одномерные массивы
- •2.4.2. Сортировка массивов и поиск элемента в массиве
- •2.4.3. Многомерные массивы
- •2.5. Функции и процедуры
- •2.5.1. Описание функций
- •2.5.2. Обращение к функции
- •2.5.3. Процедуры
- •2.5.4. Параметры-значения и параметры-переменные
- •2.5.5. Локальные и глобальные переменные
- •2.5.6. Pекурсия
- •2.6. Строки символов
- •2.6.1. Задание строк
- •Var имя: string[длина];
- •2.6.2. Функции и процедуры для обработки строк
- •2.7. Порядковые типы данных
- •2.7.1. Перечисляемый тип данных
- •2.7.2. Интервальный тип данных
- •2.7.3. Порядковые типы данных
- •2.7.4. Дополнение:тип данных tDateTime (дата-время)
- •2.8. Множества
- •2.8.1. Значения типа множество
- •2.8.2. Операции на множествах
- •2.9. Записи
- •2.9.1. Поля записи
- •2.9.2. Оператор with
- •2.9.3. Последовательный поиск в массиве записей
- •2.9.4. Двоичный поиск в массиве записей
- •2.10. Файлы
- •2.10.1. Основные свойства файлов
- •2.10.2. Типизированные файлы
- •2.10.3. Текстовые файлы
- •2.10.4. Поиск файлов
- •2.11. Динамическая память
- •2.11.1. Динамические переменные и указатели
- •2.11.2. Динамические списки
- •2.11.3. Деревья
- •2.12. Программные модули
- •2.12.1. Модули, формируемые пользователем
- •2.12.2. Стандартные модули
- •2.12.3. Примеры программ
- •3. Главная форма
- •3.1. Свойства главной формы
- •3.2. События главной формы
- •4. Описание некоторых компонентов
- •4.1. Компонент tpanel (панели)
- •4.2. Компонент tbutton (кнопка)
- •4.3. Дополнительные кнопки
- •4.4. Компонент tlabel (надписи)
- •4.5. Компонент tedit (Строки ввода)
- •4.6. Компонент тМето (многостроч. Поле ввода)
- •4.7. Свойства и методы класса tstrings
- •4.8. Компонент checkbox (флажок)
- •4.9. Компонент tradiobutton (кнопки выбора)
- •4.10. Компонент MainMenu (главное меню программы)
- •4.11. Компонент timage
- •4.12. Компонент tstringgrid (сетка)
- •4.13. Компонент ttimer(таймер)
- •5. Отладка программ
- •5.1. Типы ошибок
- •5.2. Отладка программы
- •5.2.1. Трассировка программы
- •5.2.2. Точки останова программы
- •5.2.3. Наблюдение значений переменных
- •Часть 2. Технология ado для баз данных access
- •6. Создание баз данных access
- •6.1. Определение понятия баз данных
- •6.2. Интерфейс программы access
- •6.3. Создание базы данных в access 2007
- •6.3.1. Создание двухтабличной базы данных
- •6.3.2. Создание базы данных с вычисляемыми полями
- •6.4. Выбop формата для новой базы данных
- •6.5. Создание пустой базы данных
- •6.6. Открытие и закрытие базы данных
- •6.7. Создание таблиц в режиме конструктора
- •6.7.1. Выбор первичного ключа
- •6.7.2. Изменение полей и таблиц
- •6.7.3. Копирование полей
- •6.7.4. Перемещение полей
- •6.7.5. Удаление полей
- •6.7.6. Операции с таблицами
- •6.8. Создание базы данных в access 2003
- •6.9. Установление связей между таблицами
- •6.10. Обеспечение целостности записей в базе данных
- •6.11. Редактирование и удаление связей
- •7. Система доступа к данным ado
- •7.1. Общие сведения
- •7.2. Компонент adoConnection
- •7.2.1. Свойства компонента adoConnection.
- •7.2.2. Методы компонента adoConnection
- •7.3.Компонент аdоТable
- •7.3.1. Свойства компонента tadoTable
- •7.3.2. Методы компонента tadoTable
- •7.4. Компонент adoQuery
- •7.5. Компонент adoDataSet
- •7.5.1.Свойства компонента adoDataSet
- •7.5.2. Методы компонента adoDataSet
- •7.5.3. Cобытия компонента adoDataSet
- •7.6. Компонент DataSource
- •7.7.Комнонент DataGrid
- •7.7.1 Cвойства компонента DataGrid
- •7.7.2. Методы и события компонента DataGrid
- •7.8. Компонент adocommand
- •8. Управление базами данных
- •8.1. Приложение для управления базами данных
- •8.2. Свойства полей базы данных
- •8.3. Редактирование базы данных
- •8.4. Сортировка данных
- •8.5. Поиск данных в базе
- •8.5.1. Фильтрация данных в базе
- •8.5.2. Нахождения информации методом Locate
- •9.1. Общие сведения
- •9.2. Основные операторы запроса
- •9.2.1. Агрегатные функции
- •9.2.2. Подзапросы
- •9.3. Операторы наполнения баз данных sql
- •9.3.1. Ввод значений
- •9.3.2. Удаление значений
- •9.3.3. Изменение значений
- •9.4. Операторы создания баз данных sql
- •9.4.1. Команда создания таблицы.
- •9.4.2. Первичные ключи таблицы
- •9.4.3. Индексы таблицы
- •9.4.4. Добавление в таблицу новых столбцов
- •10. Реализация sql- запросов
- •10.1. Компонент tadoQuery для sql- запросов
- •10.2. Форма для реализация sql-запроса
- •11. Генератор отчетов Quick Reports
- •11.1.Описание Quick Reports
- •11.2. Печать записи с помощью Quick Reports
- •11.3. Печать таблиц с помощью Quick Reports
- •394026 Воронеж, Московский просп., 14
2.1.7. Оператор присваивания
Оператор присваивания придаёт переменной конкретное значение, например:
Х:=2; В:=4; С:=-1;
Присваивать можно значение другой переменной или результат вычисления арифметического выражения
А:=В;
Y:=5+3*X;
Z:=B+C;
X:=Y+2-SQR(Z);
Х:=Х+1;
Можно преобразовать целое значение в вещественное, присвоив вещественной переменной целое выражение. Например (если А является вещественной переменной):
А:= 3+5;
Общая форма оператора присваивания такова:
имя переменной := выражение
Оператор присваивания вычисляет значение выражения справа и присваивает его переменной слева. Старое значение переменной теряется.
2.2. Операторы языка паскаль
Оператор - конструкция языка Паскаль, задающая определенные действия над выражениями и другими операторами.
С самим оператором не связывается никакое значение. Разделителем операторов служит точка с запятой (;).
С простейшим и в то же время самым важным оператором присваивания мы уже познакомились. Кроме него в Паскале имеются следующие операторы:
• составной оператор;
условный оператор;
оператор выбора;
три оператора цикла;
оператор перехода;
пустой оператор;
оператор вызова процедуры.
2.2.1. Составной оператор
Составной оператор объединяет несколько операторов в один.
Его схема:
BEGIN
оператор_1;
оператор_2;
оператор_3;
оператор_М;
END
Составной оператор позволяет объединить несколько операторов и рассматривать их как единый оператор. Операторы выполняются последовательно в том порядке, в каком они записаны в тексте программы. Например:
begin
R:=A;
А:=В;
B:=R;
end
Следует отметить, что правила языка Паскаль не накладывают ограничений на величину отступа символов и слов от края страницы. Поэтому записи вида
begin R:=A; A:=B; B:=R; end
и
begin
R=A. A:=B;
B:=R
end
эквивалентны между собой, а также эквивалентны первой записи.
Вместе с тем для удобства чтения рекомендуетcя то, что располагается внутри слов begin и end, размещать с отступом относительно этих слов - так называемой "лесенкой".
Например
begin R=A;
A:=B+R;
begin
C:=SQRT(A); A:=2*B+SIN(R); R:=R+C;
end;
X:=R/A;
end;
Это существенно упростит чтение и понимание программ, особенно больших размеров.
2.2.2. Условный оператор
Обычно операторы выполняются в том порядке, в каком они расположены. Чтобы изменять последовательность выполнения различных частей программы, применяют условный оператор.
Условный оператор позволяет выполнять или пропускать операторы программы в зависимости от некоторого условия, которое представляет собой выражение логического типа. Схема условного оператора такова:
IF условие (* проверяется истинность ложность этого условия*)
THEN
оператор_1 (*этот оператор выполняется, если условие истинно*)
ELSE (* перед else точка с запятой никогда не ставится *)
оператор_2; (*этот оператор выполняется, если условие ложно*)
Если условие истинно, выполняется оператор_1, иначе выполняется оператор_2.
Типичный пример условия - выражения с операцией сравнения:
=,<>,<=, >=, >,<.
Слева и справа от знака сравнения записывают арифметические выражения. Например, оператор
ifX<>0
then
Z:=Y/X
else
write('Ошибка ! Деление на О');
присвоит переменной Z значение частного Y/X, если Х<>0, в противном случае высветит на экране слово «Ошибка. Деление на О».
В качестве операторов оператор_1 и оператор_2 может выступать составной оператор.
Это дает возможность делать выбор между двумя сколь угодно сложными последовательностями операторов.
IF условие (* проверяется истинность или ложность этого условия*)
THEN
BEGIN
Оператор1; (*эти операторы выполняются, если условие истинно*)
оператор2;
операторN. END
ELSE (* перед else точка с запятой никогда не ставится *) BEGIN
Оператор1; (*эти операторы выполняются, если выражение ложно*)
Оператор2;
ОператорN; END;
Условный оператор может быть записан в односторонней форме:
IF условие
THEN
оператор;
оператор выполняется, если условие истинно, иначе - пропускается. Например
if Х+2 >= Y-3
then
Z :=Y+X;
При записи условия скобки не нужны, так как приоритет арифметических операций выше, чем приоритет операций сравнения.
В качестве операторов оператор_1 и оператор_2 может выступать другой логический оператор. Это позволяет получать вложенные логические операторы
IF условие_1 THEN
IF условие_2 THEN
оператор_1 (*оператор_1 выполняется. если условие_1 и условие_2 истинны*)
ELSE
оператор_2 (*оператор_2 выполняется, если условие_1 истинно, а условие_2 ложно*)
ELSE
IF условие_3 THEN
оператор_3 (*оператор_3 выполняется, если условие_1 ложно, а условие_3 истинно *)
ELSE
оператор_4; (*оператор_4 выполняется, если условие_1 и условие_3 ложны *)
Следует избегать такой записи вложенных условных операторов, при которой возможно неоднозначное понимание смысла записи. Например,
IF условие_1 THEN
IF условие_2 THEN
оператор_1 (*оператор_1 выполняется, если условие_1 и условие_2 истинны*)
ELSE
оператор_2 (* когда должен выполняется оператор_2, непонятно *)
При такой записи непонятно, к чему относится ключевое слово ELSE - к первому IF или ко второму.
Для устранения неоднозначности следует использовать составной оператор
IF условие_1 THEN BEGIN
IF условие_2 THEN
оператор_1; (*оператор_1 выполняется, если условие_1 и условие_2 истинны*)
END
ELSE
оператор_2; (*оператор_2 выполняется, если условие_1 ложно*)
или
IF условие_1
THEN
BEGIN
IF условие_2
THEN
оператор_1 (*оператор_1 выполняется, если условие_1 и условие_2 истинны*)
ELSE
оператор_2; (*оператор_1 выполняется, если условие_1 истинно и условие_2 ложно*)
END;
Пример применения условного оператора.
Задача - ввести три действительных числа и вывести их в порядке возрастания значений. Это реализуется следующей программой:
program rearrangement; (* программа перестановки чисел*) var
x,xl,x2,x3:real;
begin
Write ('Введите три числа ');
read(xl,x2,x3); (* ввод чисел*)
if xl > х2
then
begin (* обмениваем значения x1 и х2*)
x:=x1;
xl:=x2;
х2:=х;
end;
if x2 > x3
then
begin (* обмениваем значения х2 и х3*)
x:=x2; х2:=хЗ; x3:=x; end;
if xl >x2 then
begin (* обмениваем значения xl и х2*)
x:=xl;
xl:=x2;
x2:=x;
end;
writeln(xl,x2,x3); (* вывод чисел по возрастанию*)
end.