Внастоящее время в компьютерном мире существует множество языков программирования
Вид материала | Документы |
- Календарный план учебных занятий по дисциплине «Языки и технология программирования», 43.35kb.
- Лекция №3. Состав и работа системы программирования Турбо Паскаль Язык программирования, 84.43kb.
- Лекция 3 Инструментальное по. Классификация языков программирования, 90.16kb.
- Внастоящее время существует большой социальный заказ на психологические методы профилактики, 117.85kb.
- Методические указания для выполнения лабораторных работ и курсовой работы содержание, 1317.09kb.
- Программа дисциплины Языки и технологии программирования Семестры, 20.19kb.
- Теория автоматов и формальных языков составил доцент А. А. Мальцев, 38.01kb.
- Внастоящее время в мире повсеместно и во все более разрастающихся масштабах происходит, 373.75kb.
- Вмире существует множество замечательных повестей, романов, рассказов и стихов, главными, 21kb.
- Пояснительная записка, 185.11kb.
6.3. Индивидуальное задание
Модифицировать созданную программу для выполнения операции с текстом в зависимости от номера варианта:
- В считанном тексте подсчитать количество гласных символов;
- В считанном тексте подсчитать количество согласных символов;
- Заменить все гласные буквы в тексте на порядковые номера – «а»-1, «е»-2 и т.д.;
- Добавить после каждого слова текста запятую;
- Подсчитать количество слов в тексте;
- Найти слово с максимальным соотношением согласные/гласные;
- Найти в тексте самое длинное слово;
- Подсчитать все знаки препинания в тексте;
- Найти в тексте самое длинное предложение;
- Выводить каждую строчку в обратном порядке;
- Выводить только нечетные слова текста;
- Выводить только четные слова текста;
- Подсчитать количество предложений в тексте;
- Выводить только те слова, длина которых больше введенного числа;
- Выводить только те строки, которые содержат введенную подстроку;
- Каждый символ, считываемый из файла, закодировать его кодом, после кода ставить знак «;»;
- Выводить каждое считанное предложение с новой строки;
- Найти предложение с максимальным количеством слов;
- Удалить из текста введенный фрагмент строки;
- Заменить в тексте один введенный фрагмент на другой введенный фрагмент.
6.4. Итоги
В шестой теме были изучены: функции для работы со строками; функции для работы с текстовыми файлами; стандартные диалоговые окна.
При построении демонстрационной программы получены навыки использования новых компонентов: панели; кнопки быстрого доступа - «горячие кнопки»; главного меню окна; диалоговых окон – открытие файла и сохранение файла; элемента независимого выбора.
7. Работа с базами данных
Цель: Создание составных типов данных; изучение оператора присоединения; работа с базами данных.
7.1. Теоретические сведения
Составные типы данных. В практике программирования довольно часто приходиться иметь дело с данными, которые естественным образом состоят из других данных. Например, сведения о студентах могут содержать фамилию, имя, отчество, число, месяц и год рождения, домашний адрес и другие данные.
Для представления подобной информации в языке Паскаль используется структура, которая носит название record (запись). С одной стороны, запись можно рассматривать как единую структуру, а с другой – как набор отдельных элементов, компонентов. Характерной особенностью записи является то, что составляющие её компоненты могут быть разного типа. Другая особенность состоит в том, что каждый компонент записи имеет имя. Итак, запись – это структура данных, состоящая из отдельных именованных компонентов разного типа, называемых полями. Объявление записи может быть двух типов: как новый тип данных для описания переменных этого типа, так и непосредственное описание переменной, как запись. В общем виде описание выглядит так:
Имя = record
поле1 : тип1;
поле2 : тип2;
……
полеN : типN;
end;
где
Имя - имя переменной или типа запись;
поле1, …, полеN - поля записи – имена переменных с указанием типов этих переменных (тип1,…,типN).
record - зарезервированное слово, указывающее на описание записи. Описание записи должно оканчиваться словом end.
Пример:
type
date = record
day : integer;
month : string[8];
year : integer;
end;
var
D : date;
C : record
hour : integer;
minute: integer;
end;
В примере объявлен тип date для описания даты и описаны две переменные D, описанного типа date и C – переменная типа запись для описания времени.
При описании типов полей, некоторые поля также могут быть записью.
Пример:
student :record
name : string[15];
born : record
date : integer;
month : string [8];
year : integer;
end;
end;
В примере поле записи born является записью.
Для обращения к полю переменной типа записи, необходимо указывать имя переменной и через точку указать имя поля.
Примеры:
s.name := ‘Петров’;
s.born.day := 15;
Если при работе происходит обращение к нескольким полям, то можно не указывать каждый раз при описании полей имя переменной, а воспользоваться оператором присоединения:
with имя do операция,
где
имя – имя переменной типа запись;
операция - операции с полями записи.
Пример:
Пусть есть переменная d типа date для описания даты, и требуется заполнить значения полей этой переменной:
with d do
begin
day := 15;
month := ‘Сентябрь’;
year := 2002;
end;
Для хранения данных на диске можно использовать файлы типа запись.
Пример:
Пусть в разделе переменных описаны переменная d типа запись date для описания даты и переменная F : file of date – файл типа запись date. Требуется записать значение даты в файл и считать его (записать сразу всю запись, а считать только значение месяца):
with d do
begin
day := 15;
month := ‘Сентябрь’;
year := 2002;
end;
write(F,d); //запись сразу всех полей записи
…
read(F,d.mounts); //чтение значения месяца переменной d
Используя переменные типа запись и переменную типа файл записи можно строить базы данных. Но в Delphi есть более удобный способ для построения баз данных – поддержка стандартных типов баз данных и операций для работы с ними.
Базы данных. В состав Delphi входят средства и компоненты для создания и работы с базами данных различных систем: от dBase до Informix и Oracle.
База данных (БД) – это набор однородной, как правило, упорядоченной по некоторому критерию информации. БД представляют собой файл (или набор файлов) содержащих информацию. БД состоит из записей. Каждая запись содержит информацию об одном экземпляре данных. Например, запись из базы данных «студенты» содержит информацию только об одном экземпляре – студенте. Записи состоят из полей. Каждое поле содержит информацию об одной характеристике экземпляра. Например, база данных «студенты» состоит из следующих полей: «Идентификационный номер», «Имя», «Дата рождения», «Пол», «Номер группы», «Признак иногороднего», «Стипендия», «Средний балл сессии», «Средний балл аттестата» – это имена полей. Содержание этих полей идентифицирует конкретного студента.
Замечание: все записи содержат одинаковые поля. Некоторые поля могут быть не заполнены, но они все равно должны присутствовать в записи.
БД легко представить в виде таблицы. Каждая строка – запись, а ячейка таблицы – поле. Поэтому файл данных БД принято называть «Таблица».
В Delphi можно предложить следующий порядок создания БД: создание папки; создание псевдонима; создание таблиц.
БД может представлять собой несколько таблиц, при работе с БД могут создаваться вспомогательные файлы. Поэтому при работе с БД удобно хранить все файлы (таблицы и вспомогательные файлы БД) в одной папке. Таким образом, при разработке программы, использующей БД необходимо создать папку для хранения файлов БД. Для обозначения местонахождения файлов БД в Delphi принято понятие псевдонима – каждая БД имеет псевдоним, содержащий имя папки, где хранятся файлы БД. Такая структура позволяет при перенесении программы в другую папку только изменить псевдоним.
С

оздание псевдонима. Для создания псевдонимов (Alias) вместе с Delphi поставляется утилита BDE Administrator (значок программы

Слева представлены псевдонимы установленных на компьютере таблиц. Для создания нового псевдонима необходимо выбрать пункт «Object/New». В появившемся окне необходимо выбрать драйвер доступа к данным создаваемой таблицы. Драйвер STANDARD обеспечивает доступ к данным таблиц в формате Paradox. После выбора драйвера необходимо изменить имя псевдонима созданного по умолчанию (Standard) и указать путь нахождения файлов таблицы. Замечание: в Delphi 2.0 необходимо вписать путь в строку ввода, более поздние версии Delphi позволяют воспользоваться мастером для выбора папки нахождения файлов таблицы. После создания псевдонима необходимо выбрать команду «Object/Apply» и подтвердить необходимость сохранения конфигурации.
С


рис. 7.2.
Д

Необходимо указать имя поля таблицы в ячейке «FieldName», затем в поле «Type» указать тип поля. Получить список доступных значений поля можно, нажав правую кнопку мыши. В демонстрационной программе будут использоваться следующие типы: Alpha (A) – символьные значения длиной до 255 символов (в скобках указано принятое сокращение); Number (N) – числовые значения с плавающей точкой в диапазоне –10307…+10308, точность до 15 значащих цифр; Money ($) - тип предназначен для хранения денежных сумм, число знаков после запятой по умолчанию – 2, при показе значения выводится знак денежной единицы; Date (D) – значения даты (в диапазоне от 01.01.9999 до н.э. до 31.12.9999). Автоматически изменяемое поле Autoincrement (+) – значения этого поля изменяются автоматически, поле удобно для создания первичного ключа (см. ниже). При использовании типа Alpha в ячейке Size необходимо указать максимально допустимый размер. Для полей можно указать на обязательную необходимость заполнения значения (поле ввода «Required Field»), минимально допустимое значение («Minimum Value»), максимально допустимое значение («Maximum Value»), значение по умолчанию («Default Value»), шаблон ввода значения (Picture) – для построения которого можно воспользоваться мастером («Assist»).
Д

ля получения однозначности данных в таблице одно из полей (или набор полей) должно носить уникальный характер. Такое поле (поля) называется первичным ключом таблицы (должно располагаться в начале списка полей) и обозначается символом «*» в поле «Key» (для назначения поля первичным ключом достаточно в поле Key нажать любую клавишу).
Заполнив значение всех ячеек для вводимого поля можно перейти к вводу нового поля. Для этого достаточно нажать клавишу «стрелка вниз». Для ввода поля выше введенного – нажать <Insert>. Для удаления ошибочного поля – <Ctrl><Del>.
При выполнении сортировки значений таблицы по какому-то из полей или фильтрации поля по какому-то значению необходимо, чтобы БД по этому полю была проиндексирована, т.е. построить вторичный индекс таблицы. Для этих целей в поле « Table Properties» выбрать свойство «Secondary Indexes» и запустить мастера настройки, щелкнув на кнопку «Define». При этом будет выведено окно построения «вторичного индекса» (Рис.7.5.).
В

Список всех построенных вторичных индексов будет показан в окне под кнопкой « Define». При необходимости индекс можно изменить – кнопка «Modify» или удалить – «Erase».
После создания таблицы её нужно сохранить на диске (кнопка «Save as») в папке определенной псевдонимом для этой БД.
Доступ к данным таблицы.

При программировании доступа к данным БД в Delphi используется такая структура:
Элемент Table указывает на файл БД и содержит все настройки таблицы (индексные файлы, активность и т.д.). На элемент Table указывает элемент DataSource, который является связкой между элементом Table и всеми видимыми элементами, служащими для отображения полей таблицы.
При работе с таблицей часто может потребоваться отсортировать данные таблицы по какому-то из полей, или отфильтровать значения по какому-то полю, или найти запись с каким-то значением. Рассмотрим, какие команды можно использовать для решения этих задач.
Для того чтобы данные в таблице были отсортированы по определенному полю, нужно указать в качестве индекса имя вторичного индекса поля, по которому надо отсортировать данные. Эта команда в общем виде записывается так:
Таблица.IndexName := Имя_индекса;
где
Таблица – имя таблицы БД;
Имя_индекса – имя требуемого для сортировки индекса;
Если требуется отфильтровать данные в таблице, необходимо отсортировать данные по тем полям, по которым будет осуществлена фильтрация и выполнить команду фильтрации. В общем виде команда пишется так:
Таблица.IndexName := Имя_индекса;
Таблица.SetRange([нзн1,нзнN],[кзн1,кзнN]);
где
в квадратных скобках указываются начальные допустимые значения фильтрации по всем необходимым полям через запятую, во вторых квадратных скобках соответственно допустимые конечные значения фильтрации по всем полям фильтрации (показан случай для поиска по двум значениям нзн1,нзнN и кзн1,кзнN).
Для отмены фильтрации необходимо выполнить команду:
Таблица.CancelRange;
Если требуется найти запись с определенным содержимым можно воспользоваться командой неполного поиска (поиска по неполному значению искомого значения). При удачном поиске указатель таблице будет установлен на найденной записи, иначе указатель будет установлен на запись, ближайшей к искомой записи. Перед выполнением этой команды также необходимо, чтобы таблица была отсортирована по искомым полям. В общем виде команда записывается так:
Таблица.IndexName := Имя_индекса;
FindNearest([зн1,знN]);
где
в квадратных скобках указываются через запятую искомые значения по полям поиска (показан случай для поиска по двум значениям зн1,знN).
Использование этих команд станет понятным при построении демонстрационной программы.