Предисловие
Эта книга представляет собой учебник по компьютерным технологиям, программированию и решению алгоритмических задач. Уровень изложения материала рассчитан на студентов компьютерных курсов. Предполагается, что читатель знает операционные системы Windows 9x/МЕ и Windows NT/2000/ХР на уровне пользователя. Никаких предварительных знаний компьютерного программирования от читателя не требуется. Для изложения основ программирования, базовых концепций, примеров программ и методик разработки программных проектов используются среда разработки Delphi, созданная компанией Borland Software Corporation, и язык программирования Object Pascal. Объем изложенного материала рассчитан приблизительно на два последовательных семестра курсов программирования.
Главная цель книги - привить студентам твердые знания основ компьютерного программирования и научить практическому применению этих знаний при программировании на языке Object Pascal в среде разработки Delphi. Хорошо освоив одну среду разработки (Delphi) и один язык (Pascal), студент легко может при необходимости изучить любую другую среду или язык.
Почему именно Delphi
Развитие системы Delphi уходит своими в язык программирования Pascal, созданный в 1971 году Никлаусом Виртом (Niclaus Wirth) в качестве учебного языка компьютерного программирования. Язык Pascal сразу получил широкое распространение и стал использоваться как основа курса программирования во многих университетах. Благодаря легкости программирования и богатым функциональным возможностям, Pascal стал широко использоваться также в коммерческих разработках.
В свое время весьма популярной версией языка Pascal был Turbo Pascal, разработанный компанией Borland. С развитием операционной системы Windows и технологий объектно-ориентированного программирования компания Borland естественным образом расширила Turbo Pascal, создав версии Turbo Pascal for Windows и Object Pascal for Windows. Следующим шагом компании Borland было создание Delphi - визуальной среды разработки программ на Object Pascal под управлением операционной системы Windows. Главное назначение Delphi - быстрая разработка приложений Windows.
В последние годы в качестве учебных языков с Pascal конкурируют Java и C++. Однако Pascal, в свою очередь, составил им сильную конкуренцию в области разработки коммерческих приложений благодаря простому синтаксису, богатым функциональным возможностям и скорости компиляции программ, не уступающей скорости компиляции исходного кода C++. Данная книга призвана заполнить разрыв между учебным и коммерческим применениями языка Pascal и вернуть его на утраченные позиции в сфере компьютерного образования.
Цель книги
В настоящее время существует не так уж много книг, совмещающих введение в про-граммирование с обстоятельным изложением общих методик программирования. Во многих из них внимание сосредоточено не на построении солидного фундамента техники программирования, а на различных тонкостях и специфических отличиях, присущих конкретной среде разработки программ. Кроме того, многие из этих книг слишком длинные и отпугивают студентов, начинающих изучать программирование. В данной книге указанные недостатки в значительной мере преодолены. Для этого управляющие структуры языка сначала вводятся с помощью общих определений, а затем рассматривается их реализация на Object Pascal. По сравнению с другими аналогичными книгами текст этой книги довольно краток, однако в ней представлено полное введение в основы программирования и рассмотрены многие широко распространенные методики составления программ. После представления фундаментальных средств программирования рассматриваются расширенные средства создания программ, специфичные для Delphi.
В Delphi представлены многие замечательные средства разработки программ, однако среди них есть и довольно трудные для студента, начинающего изучать программирование. Во-первых, кроме Object Pascal студенту необходимо освоить интегрированную среду разработки Delphi. Студент не может начать изучение элементов программирования, не ознакомившись предварительно со средой разработки. Изучение среды разработки существенно облегчается тем, что она сама фактически является приложением Windows и обладает всеми характерными для подобных приложений элементами. Во-вторых, начинающие программисты обычно с трудом усваивают принципы взаимодействия элементов управления создаваемого ими пользовательского интерфейса с программами, которые они пишут для этих элементов управления.
Преодолению этих трудностей в книге уделяется много внимания. В главе 2 кратко, но весьма основательно рассматривается среда разработки Delphi. Более сложные средства интегрированной среды разработки описываются в процессе изложения основного материала. Книга построена так, что непосредственно к программированию студент приступает с самого начала - первую свою программу он запускает при чтении главы 2 (в главе 1 приводится обзор теоретических положений). Более того, для прочного усвоения принципов взаимодействия кода с пользовательским интерфейсом этому вопросу уделяется повышенное внимание на протяжении всей книги. И наконец, во всех главах рассматриваются практические аспекты программирования: примеры распространенных ошибок и ловушек, подстерегающих начинающего программиста, а также способы избежания и устранения ошибок.
Достоинства книги
К наиболее важным достоинствам книги можно отнести следующее.
- От студента не требуется никаких знаний в области компьютерного программирования.
- Значительное внимание уделяется фундаментальным основам программирования. Кроме того, студенты получают прочные навыки практических приемов программирования, применимые для любых языков.
- В корпоративных кругах среда программирования Delphi широко используется для создания коммерческих приложений.
- В книгу включены главы и приложения, раскрывающие такие темы, как история развития компьютерных технологий, развитие языков программирования, принцип действия компьютера, системы счисления, объектно-ориентированное программирование, расширенные средства Delphi и программирование приложений баз данных.
- В книге излагаются также более сложные концепции программирования приложений для Windows: OLE (Object Linking and Embedding - связывание и встраивание объектов), DDE (Dynamic Data Exchange - динамический обмен данными) и компоненты ActiveX.
Вспомогательные элементы книги
В тексте книги используются многочисленные вспомогательные элементы и вставки, облегчающие восприятие материала.
Поля определений. В этих прямоугольных вставках определяются наиболее важные термины текущей главы, а также сравниваются и противопоставляются основные ключевые термины.
Практические примеры. В этих вставках рассматривается применение излагаемых в книге концепций на практических примерах, близких к реальной жизни.
Резюме глав. Каждая глава завершается кратким обзором изложенного материала. Резюме каждой главы состоит из трех разделов.
- Ключевые термины. Список введенных в данной главе терминов с их кратким опре-делением.
- Ключевые слова. Введенные в данной главе зарезервированные ключевые слова Delphi, а также имена встроенных подпрограмм, свойств, методов, событий и директивы компилятора, не являющиеся зарезервированными ключевыми словами.
- Ключевые положения. Краткий обзор основных концепций системы Delphi, рассмотренных в этой главе.
Контрольные вопросы. В конце каждой главы приводится список вопросов, с помощью которых студент может проверить, насколько хорошо он понял и запомнил изложенный материал.
Задачи. Предназначены для проверки мастерства программирования, приобретаемого студентами в процессе изучения каждой главы.
Задания. Представляют собой более сложные программные проекты, совмещающие усвоенный ранее материал с новыми концепциями, введенными в данной главе.
CD-ROM. Прилагаемый компакт-диск содержит версию Delphi 5 Standard и коды всех примеров книги. В среде Delphi 6 все примеры книги полностью работоспособны.
Студенту
Добро пожаловать в мир Delphi! Отважившись освоить эту замечательную систему, вы сделали прекрасный выбор! Книга предназначена именно для вас, независимо от того, являетесь ли вы начинающим или опытным программистом. Обстоятельное изложение фундаментальных основ программирования в начальных главах подготовит вас к усвоению самых сложных тем, излагаемых в дальнейшем. Материал книги организован таким образом, что отдельные концепции вводятся по мере ознакомления читателя с положениями, необходимыми для их понимания. Весьма желательно иметь постоянный доступ к компьютеру с установленной средой Delphi 5, в этом случае вы сможете практически прорабатывать представленные в книге примеры. Работа с примерами и получение от компьютера ожидаемых результатов - лучший способ освоения техники программирования и закрепления полученных знаний. От читателя не требуется глубокой математической подготовки; все, что нужно для понимания излагаемого материала, - знание элементарных основ алгебры. Рекомендуем побольше экспериментировать с Delphi: эксперимент и самостоятельные исследования - главный компонент процесса изучения.
Прилагаемый компакт-диск содержит полнофункциональную версию Delphi 5 Standard. Вы можете (и мы настоятельно рекомендуем) установить ее на вашем домашнем компьютере и работать с примерами книги не только в учебном классе, но и дома.
Я вам даже завидую: вы начинаете увлекательное путешествие в мир компьютерного программирования, которое к тому же принесет вам немалую прибыль. Счастливого пути!
Преподавателю
Задумывая эту книгу, я предполагал заполнить довольно большой пробел, существующий в сегодняшней литературе. Сейчас почти нет книг по Delphi, которые служили бы полноценным введением в программирование. Подавляющее большинство из них предназначены для профессиональных программистов. Данная книга призвана вернуть языку Pascal утраченные позиции основного учебного языка уже в новом качестве - в среде Delphi.
В настоящее время в коммерческих и академических кругах существуют серьезные разногласия относительно предпочтительной методологии обучения основам программирования. Фактически можно выделить два направления. Сторонники первого направления считают, что, прежде чем приступать к изложению концепций объектноориенти-рованного программирования, необходимо ввести такие фундаментальные понятия, как константы, переменные, условные операторы и циклы. В то же время сторонники второго направления считают объекты более фундаментальным понятием. Оба подхода потенциально имеют как достоинства, так и недостатки, поэтому при написании этой книги мы старались достичь более гибкого представления материала, сочетающего оба направления. В основном текст книги придерживается первого направления, однако объекты и принципы объектно-ориентированного программирования вводятся довольно рано - в главе 4, причем более развернуто эта тема излагается в главе 15.
В книге содержится материал, достаточный для двух последовательных семестров курса программирования в системе Delphi - вступительного и расширенного. В главах раскрываются следующие темы.
- В главе 1 излагается история развития компьютеров и языков программирования.
- В главе 2 рассматривается среда программирования Delphi. При изучении этой гла-вы студент создает и запускает свою первую программу.
- В главе 3 рассматривается методология решения практических проблем, разработка алгоритмов, использование блок-схем, псевдокодов и весь цикл создания программы.
- В главе 4 представлены основные понятия программирования: типы данных, константы и переменные.
- В главе 5 рассматриваются операторы сравнения, булевы операторы и условные операторы.
- В главе 6 описываются операторы циклов.
- В главе 7 рассматривается ввод-вывод данных в текстовые файлы.
- В главе 8 обсуждаются основные концепции структурного программирования.
- В главе 9 рассматриваются методы защиты от ошибок и отладка исходного кода программы.
- В главе 10 описываются различные структуры данных: массивы, записи, пользовательские типы данных, указатели, связные списки, стеки, очереди (в том числе с двусторонним доступом), очереди приоритетов, кучи и деревья.
- В главе 11 рассматривается ввод и вывод бинарных файлов.
- В главе 12 обсуждаются вопросы сортировки и поиска.
- В главе 13 даются основы баз данных и программирование приложений баз данных.
- В главе 14 вводится концепция рекурсии.
- В главе 15 дается введение в объектно-ориентированное программирование.
- В главе 16 описываются дополнительные компоненты Delphi, не рассмотренные в предыдущих главах.
- В главе 17 излагается материал повышенной сложности: программирование компонентов ActiveX, приложения с несколькими формами, приложения MDI (Multiple Document Interface - многодокументный интерфейс), случайные числа, OLE (Object Linking and Embedding - связывание и встраивание объектов), DDE (Dynamic Data Exchange - динамический обмен данными) и программирование приложений Internet.
- В приложении А рассматриваются основные понятия компьютерной арифметики и описываются различные системы счисления.
- В приложении Б приведена кодовая таблица ASCII.
- В приложении В приведены выдержки из утвержденных стандартов программирования на Object Pascal.
- В приложении Г рассматривается настройка интегрированной среды разработки Delphi.
- В приложении Д обсуждается развертывание приложений, созданных в Delphi.
- В приложении Е приводится список зарезервированных слов языка Object Pascal.
- В приложении Ж, предназначенном для программистов на Visual Basic, обсуждается перенос программ с Visual Basic в Delphi.
- В приложении З приведены ответы на контрольные вопросы и решение задач и заданий, условия которых не требуют составления программ. Решение остальных задач и заданий (т.е. готовые программы) можно найти на прилагаемом компакт-диске.
Рекомендуемая последовательность глав
Рекомендуемая последовательность изучения отдельных глав зависит от длительности курса и специализации студентов. Мы выделяем две категории последовательности изучения. Книга построена таким образом, что материал каждой главы существенно зависит от положений, изложенных в предыдущих главах, поэтому рекомендуем строго придерживаться одной из приведенных последовательностей.
Для студентов, предполагающих разрабатывать приложения в научной и технической областях
Первый семестр: глава 1, приложение А, главы 2-9 и начало главы 10.
Второй семестр: остаток главы 10 и главы 11-17.
Для студентов, предполагающих разрабатывать приложения в коммерческой, банковской и других аналогичных областях
Первый семестр: главы 1-9 и начало главы 10.
Второй семестр: остаток главы 10 и главы 11-17.
Примечание для обеих последовательностей изучения. Преподаватели, предпочитающие вводить объекты как фундаментальные структуры данных, могут совместить главу 15 с главой 4 в первом семестре.
Благодарности
Завершая столь грандиозное предприятие, я с удивлением обнаружил, что его успешному окончанию я обязан довольно многим людям. В первую очередь я хотел бы поблагодарить компании Borland Software Corporation и Addison-Wesley за предоставленную возможность написать эту книгу. Я сердечно благодарен сотрудникам Borland Software Corporation - Джейн Аллен (Jane Allen), Ребекке Каваньяри (Rebecca Cavagnari), Кэри Галлант (Kari Gallant), Карен Джайлз (Karen Giles), Бену Риге (Ben Riga) и Дэнни Торпу (Danny Thorpe), а также сотрудникам Addison-Wesley - Сьюзен Хартман Салливен (Susan Hartman Sullivan), Майклу Хиршу (Michael Hirsch) и Энди Смиту (Andy Smith). Хотелось бы выразить признательность сотрудникам производственного отдела Addison-Wesley, без помощи которых я не смог бы написать эту книгу. Я высоко ценю замечательную работу моего ведущего редактора Пэта Матэни (Pat Mahtani), руководителя проекта Дианы Фрид (Diane Freed), редактора пробного экземпляра (copyeditor) Джилла Хоббза (Jill Hobbs), корректора Джуди Стракалаитис (Judy Strakalaitis), а также дизайнеров, художников и наборщиков PrePress Company, Inc. Я благодарен также Кларе Коллинз (Claire Collins), работавшей ранее в Borland Software Corporation, и Лизе Колнер (Lisa Kalner), оставившей Addison-Wesley.
Замечательные рекомендации моих рецензентов позволили значительно улучшить текст книги. Я выражаю за это мою самую сердечную признательность
- Майрону Бергу (Myron Berg) Dickinson State University;
- дру Гуиллермо А. Франсиа III (Dr. Guillermo A Francia, III) Jacksonville State University;
- Таскину Коукэку (Taskin Kocak) University of Central Florida;
- Томасу Теобальду (Thomas Theobald) Borland Software Corporation;
- дру Джоди Л. Тимз (Jody L. Tims, Ph. D.) St. Francis College;
- Ричарду Б. Уорноку (Richard B. Warnock) Salt Lake City Community College
Однако самое большое спасибо я хочу сказать жене и детям, без которых написание этой книги было бы невозможным.
Митчелл К. Керман (Mitchell C. Kerman)
Апрель, 2001