А.В. Романов
ОСНОВЫ РАЗРАБОТКИ ПРОГРАММНЫХ СРЕДСТВ
В СРЕДЕ DELPHI
Учебное пособие
Воронеж 2006
ГОУВПО «Воронежский государственный технический университет»
А.В. Романов
ОСНОВЫ РАЗРАБОТКИ ПРОГРАММНЫХ СРЕДСТВ
В СРЕДЕ DELPHI
Утверждено Редакционно-издательским советом университета в качестве учебного пособия
Воронеж 2006
УДК 681.3
Романов А.В. Основы разработки программных средств в среде Delphi: учеб. пособие. / А.В. Романов. – Воронеж: ГОУВПО «Воронежский государственный технический университет, 2006. – 183 с.
В учебном пособии рассматриваются методические и практические вопросы разработки прикладного программного обеспечения в среде Delphi.
Учебное пособие соответствует требованиям Государственного образовательного стандарта высшего профессионального образования по направлению 220200 (651900) "Автоматизация и управление", специальности 220201 (210100) "Управление и информатика в технических системах", дисциплинам "Информационное обеспечение систем управления" "Информатика", "Системное программное обеспечение", "Автоматизированные информационно-управляющие системы".
Издание может быть полезно студентам других специальностей, аспирантам и специалистам, занимающимся вопросами разработки прикладного программного обеспечения.
Учебное пособие подготовлено в электронном виде в текстовом редакторе MS Word XP и содержится в файле РПРиИП.doc.
Табл. 0+0+5+0+1 =6. Ил. 1+4+2+11+2=20. Библиогр.: 12 назв.
Научный редактор д-р техн. наук, проф. В.Л. Бурковский
Рецензенты: кафедра САПР и информационных систем Воронежского государственного технического университета (зав. каф. д-р техн. наук, проф. Я.Е. Львович);
канд. техн. наук, доц. Ю.С. Слепокуров
© Романов А.В., 2006
©
Еще в первой половине XIX в. английский математик Чарльз Бэббидж попытался построить универсальное вычислительное устройство [10]. Именно ему принадлежат идеи использования памяти и управления с помощью программы, которую предполагалось задавать посредством перфокарт. Однако работа оказалась слишком сложной для техники того времени. В 40-годах XX в. сразу несколько групп исследователей повторили попытку разработки универсальной вычислительной машины. Например, немецкий инженер Конрад Цузе в 1941 г. построил небольшой компьютер на основе электромеханических реле, а в 1943 г. на одном из предприятий фирмы IBM американец Говард Эйкен создал более мощный компьютер под названием Марк-1, который позволял проводить вычисления в сотни раз быстрее, чем с помощью арифмометра, и реально использовался для военных расчетов.
Начиная с 1943 г. в США группа специалистов под руководством Джона Мочли и Преспера Экерта начала конструировать компьютер ENIAC на основе электронных ламп. Созданный компьютер работал в тысячу раз быстрее, чем Марк-1, но обнаружилось, что большую часть времени он простаивал по причине того, что для задания метода расчетов (программы) приходилось в течение нескольких часов или дней подсоединять нужным образом провода, хотя сам расчет занимал всего лишь несколько минут или секунд. Очевидной стала необходимость хранения управляющей программы непосредственно в памяти компьютера.
Мочли и Экерт в 1945 г. привлекли к работе над проектом знаменитого математика Джона фон Неймана, и сформулированные им общие принципы функционирования универсальных вычислительных устройств (компьютеров) актуальны и по сей день. Согласно им, компьютер должен иметь следующие устройства:
арифметическо-логическое устройство, выполняющее арифметические и логические операции;
устройство управления, которое организует процесс выполнения программ;
запоминающее устройство, или память для хранения программ и данных, которая должна состоять из некоторого количества одинаково легко доступных для других устройств пронумерованных ячеек, в каждой из которых могут находиться или обрабатываемые данные, или инструкции программ;
внешние устройства для ввода-вывода информации.
Первый компьютер, реализующий принципы фон Неймана, был построен в 1949 г. английским исследователем Морисом Уилксом.
Общеизвестно определение компьютера как универсального устройства для переработки информации [4, 10]. Но сам по себе компьютер является просто ящиком с набором электронных схем. Он не обладает знаниями ни в одной предметной области своего применения. Все эти знания сосредоточены в выполняемых на компьютере программах.
Иными словами, для осуществления определенных действий компьютеру необходима программа, то есть точная и подробная последовательность инструкций обработки данных на понятном компьютеру языке. Часто употребляемое выражение «компьютер сделал» (подсчитал, нарисовал) означает ровно то, что на компьютере была выполнена программа, которая позволила совершить соответствующее действие. Меняя программы для компьютера, можно превратить его в рабочее место инженера, бухгалтера, агронома, редактировать на нем документы или управлять технологическим процессом. Для эффективного использования компьютера необходимо знать назначение и свойства используемых программ.
Программирование или умение разработать понятную компьютеру последовательность инструкций обработки данных (говоря короче – умение написать программу), как следует из истории появления компьютеров, изначально было связано с механикой, затем с электротехникой, и только после появления электронной машины, основанной на принципах фон Неймана, можно говорить о становлении программирования как самостоятельной научной области. Возникнув сравнительно недавно, программирование на данный момент является наукой, способной решить актуальнейшие и важнейшие задачи современного мира.
Первые программы разрабатывались непосредственно на языке процессора в машинных кодах. Стремление ускорить процесс программирования, повысить качество и функциональность разработанного программного обеспечения, адаптировать язык программирования к человеческому мышлению – все это привело к появлению языков программирования высокого уровня. В настоящее время именно они являются наиболее востребованными при общении человека и ЭВМ.
Одному из вопросов теории программирования, а именно – объектно-ориентированному программированию на языке высокого уровня – посвящено данное учебное пособие.
В основу содержательной части были положены требования Государственного образовательного стандарта высшего профессионального образования Российской Федерации по направлению 220200 (651900) "Автоматизация и управление" [11], также была использована примерная программа дисциплины "Программирование на языке высокого уровня", составленная на кафедре "Компьютерные системы и технологии" Московского Государственного Инженерно-физического Университета [12].
Структурно пособие построено следующим образом.
В первой главе в общем виде рассмотрены вопросы функционирования электронно-вычислительных устройств и изложены связанные с этим особенности разработки прикладного и информационного программного обеспечения (ПО) на языке высокого уровня.
Во второй главе рассмотрен жизненный цикл программных продуктов, спиральная и каскадная модели разработки ПО, общие вопросы методологии и технологии, а также инструментальные CASE-средства этого процесса.
Третья глава посвящена описанию языка Object Pascal. Рассмотрены стандартные типы данных, общая структура программ, операторы и обработка исключительных ситуаций.
В четвертой главе приведено описание основных возможностей и настроек интегрированной среды программирования Delphi, в частности, основных команд главного меню, инспектора объектов, редактора кода. Рассмотрены некоторые дополнительные настройки.
Основные элементы построения интерактивного интерфейса прикладных программ рассматриваются в пятой главе. В частности, рассмотрены формы и фреймы, компоненты многостраничного интерфейса, визуальные и невизуальные элементы управления, отображение текста и структурированных данных, элементы построения баз данных и управления конфигурацией проектируемого программного обеспечения, компоненты работы с графикой.
Для понимания специфики программирования, в том числе и на языках высокого уровня, рассмотрим в общих чертах работу компьютера. Вначале с какого-либо внешнего устройства в память компьютера загружается программа. Устройство управления считывает содержимое предопределенной ячейки памяти, в которой находится первая инструкция (команда) программы, и организует ее выполнение. Команды могут задавать выполнение арифметических или логических операций, чтение или запись данных, ввод данных из внешнего устройства в память или вывод данных из памяти на внешнее устройство. Как правило, после выполнения одной команды устройство управления начинает выполнять команду из ячейки памяти, находящейся непосредственно за выполненной командой. Этот порядок может быть изменен с помощью команд перехода (передачи управления), т.е. указания устройству управления продолжить выполнение программы с команды, содержащейся в другой ячейке памяти. Такой скачок может выполняться при определенных условиях, например, при равенстве операндов или если в результате предыдущей арифметической операции получился нуль и т.д. Это позволяет использовать одни и те же последовательности команд в программе много раз (организовывать циклы), выполнять различные последовательности команд в зависимости от выполнения некоторых условий и т.д. – другими словами, разрабатывать сложные программы.
Поясним значения некоторых терминов.
Оператором в языке программирования называют предписание, предназначенное для задания некоторого завершенного действия в процессе переработки информации на ЭВМ.
Операнд – это величина, представляющая собой объект операции, реализуемой ЭВМ в ходе выполнения программы вычислений. Например, операндами арифметических операций обычно являются числа: при сложении – слагаемые, при умножении – сомножители.
Современные компьютеры устроены таким образом, что арифметическо-логическое устройство и устройство управления, как правило, объединены в единое устройство – центральный процессор. Кроме этого, процесс выполнения программ может прерываться для выполнения прерываний – неотложных действий, связанных с поступившими сигналами от внешних устройств. Процессор выполняет инструкции программы автоматически, без вмешательства человека. Он обменивается информацией с оперативной памятью и внешними устройствами, осуществляет ввод-вывод полученных результатов на внешние устройства и может приостанавливать выполнение программы до завершения операции ввода-вывода. По завершению всех необходимых действий компьютер переходит в режим ожидания сигналов от внешних устройств.
Классической архитектуре фон Неймана с точки зрения программирования присущи следующие особенности:
единственная линейная последовательно адресуемая память, программа и данные соответственно хранятся в одной памяти, а адреса областей памяти составляют последовательность типа 0, 1, 2,…, т.е. память является одномерной и имеет вид вектора слов;
отсутствует явное различие между командами и данными, причем назначение данных не является их неотъемлемой составной частью, например, нет никаких средств, позволяющих явно отличить набор битов для числа с плавающей точкой от набора битов, являющихся строкой символов.
В настоящее время различают два типа построения персональных ЭВМ с архитектурами CISC и RISC.
Архитектура CISC (Complete Instruction Set Computer) является практическим стандартом для рынка микрокомпьютеров. Для CISC-процессоров характерно сравнительно небольшое число регистров общего назначения; большое количество машинных команд, некоторые из которых семантически нагружены аналогично операторам высокоуровневых языков программирования и выполняются за много тактов; большое количество методов адресации и форматов команд различной разрядности; преобладание двухадресного формата команд; наличие команд обработки типа регистр-память.
Для современных рабочих станций и серверов основой является архитектура компьютера с сокращенным набором команд (RISC – Reduced Instruction Set Computer). Главная идея разработчиков этих машин – отделение медленной памяти от высокоскоростных регистров. Система команд разрабатывалась таким образом, чтобы выполнение любой команды занимало небольшое количество машинных тактов (предпочтительно один машинный такт). Логика выполнения команд с целью повышения производительности ориентируется на аппаратную, а не на микропрограммную реализацию. Для упрощения логики декодирования команд используются команды фиксированной длины и фиксированного формата.