Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Практикум по решению задач на ЭВМ в среде Delphi

Покупка
Основная коллекция
Артикул: 683092.01.01
Доступ онлайн
от 460 ₽
В корзину
Учебное пособие содержит материалы для выполнения практических заданий при изучении объектно-ориентированного программирования в среде Embarcadero Delphi, начиная от разработки и отладки простейших программ и заканчивая созданием собственных классов. В нем представлены работы по технологии визуального проектирования и событийного программирования, решению расчетных задач и задач обработки данных, программирования графики и анимации. Особое внимание уделяется разбору примеров решения, а также самостоятельной работе учащихся, для чего каждая тема сопровождается большим количеством дополнительных заданий. Будет полезно студентам средних специальных учебных заведений, а также школьникам старших классов, интересующимся вопросами прикладного программирования.
Бунаков, П. Ю. Практикум по решению задач на ЭВМ в среде Delphi : учебное пособие / П. Ю. Бунаков, А. К. Лопатин. — Москва : ФОРУМ : ИНФРА-М, 2019. — 304 с. — (Среднее профессиональное образование). - ISBN 978-5-00091-554-7. - Текст : электронный. - URL: https://znanium.com/catalog/product/961647 (дата обращения: 26.04.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
ПРАКТИКУМ ПО РЕШЕНИЮ 
ЗАДАЧ НА ЭВМ В СРЕДЕ 
DELPHI

П.Ю. Бунаков, А.К. Лопатин

УЧЕБНОЕ ПОСОБИЕ

Москва                                        2019

ИНФРА-М

Рекомендовано 
Межрегиональным учебно-методическим советом 
профессионального образования в качестве учебного пособия 
для учебных заведений, реализующих программу 
среднего профессионального образования 
по укрупненной группе специальностей 
09.02.00 «Информатика и вычислительная техника» 
(протокол № 5 от 11.03.2019)

УДК 004(075.32)
ББК 32.81я723
 
Б91

Бунаков П.Ю.
Б91 
 
Практикум по решению задач на ЭВМ в среде Delphi : учеб. пособие / П.Ю. Бунаков, 
А.К. Лопатин. — М. : ФОРУМ : ИНФРА-М, 2019. — 304 с. — (Среднее профессиональное 
образование). 

ISBN 978-5-00091-554-7 (ФОРУМ)
ISBN 978-5-16-013995-1 (ИНФРА-М)

Учебное пособие содержит материалы для выполнения практических заданий при изучении объектно-ориентированного программирования в среде Embarcadero Delphi, начиная 
от разработки и отладки простейших программ и заканчивая созданием собственных классов. В нем представлены работы по технологии визуального проектирования и событийного 
программирования, решению расчетных задач и задач обработки данных, программирования 
графики и анимации. Особое внимание уделяется разбору примеров решения, а также самостоятельной работе учащихся, для чего каждая тема сопровождается большим количеством 
дополнительных заданий.
Будет полезно студентам средних специальных учебных заведений, а также школьникам 
старших классов, интересующимся вопросами прикладного программирования.

УДК 004(075.32)
ББК 32.81я723

Р е ц е н з е н т ы:
Романов П.С. — доктор технических наук, профессор кафедры автоматизации производства и информационных технологий Коломенского института (филиала) Московского политехнического университета;
Белов В.В. — доктор технических наук, профессор кафедры вычислительной и прикладной математики Рязанского государственного радиотехнического университета

ISBN 978-5-00091-554-7 (ФОРУМ)
ISBN 978-5-16-013995-1 (ИНФРА-М)

ООО «Издательство Форум»
127282, Москва, ул. Полярная, д. 31В, стр. 1
E-mail: forum-book@yandex.ru
Тел.: (495) 280-15-96

ООО «Научно-издательский центр ИНФРА-М»
127282, Москва, ул. Полярная, д. 31В, стр. 1
Тел.: (495) 280-15-96, 280-33-86. Факс: (495) 280-36-29
E-mail: books@infra-m.ru        http://www.infra-m.ru

Подписано в печать 12.04.2019. 
Формат 70100/16. Бумага офсетная. Гарнитура Times. 
Печать цифровая. Усл. печ. л. 24,7.
ППТ50. Заказ № 00000
ТК 683092-961647-120419

Отпечатано в типографии ООО «Научно-издательский центр ИНФРА-М»
127282, Москва, ул. Полярная, д. 31В, стр. 1
Тел.: (495) 280-15-96, 280-33-86. Факс: (495) 280-36-29

© Бунаков П.Ю., Лопатин А.К., 2019
© ФОРУМ, 2019

ФЗ 
№ 436-ФЗ
Издание не подлежит маркировке 
в соответствии с п. 1 ч. 4 ст. 11

ОГЛАВЛЕНИЕ

Предисловие
 4

Введение
 5

Основы разработки программ
 7

Основные алгоритмические конструкции
 11

Концепция объектно-ориентированного программирования
 17

Некоторые компоненты Delphi  
 29

Лабораторнаяработа № 1. Работас отладчиком Delphi  
 40

Лабораторная работа № 2. Решение квадратного уравнения
 64

Лабораторная работа № 3. Числовые последовательности
 72

Лабораторная работа № 4. Работа с двумерными матрицами
 85

Лабораторная работа № 5. Работа с файлами
 105

Лабораторная работа № 6. Графические построения
 124

Лабораторная работа № 7. Численное интегрирование
 136

Лабораторная работа № 8. Разработка приложений Microsoft Office  
 156

Лабораторная работа № 9. Создание многомодульного приложения
для построения графиков функций
 181

Лабораторная работа № 10. Анимация объектов
 196

Лабораторная работа № 11. Моделирование броуновского движения
на плоскости
 218

Лабораторная работа № 12. Программирование конечных автоматов  
 235

Лабораторная работа № 13. Сортировка массивов
с использованием класса TList  
 251

Лабораторная работа № 14. Основы фрактальной графики
 271

Список рекомендуемой литературы
 304

ПРЕДИСЛОВИЕ

Для практического обучения студентов навыкам объектно-ориентированно
го программирования большое значение имеет самостоятельная работа по созданию и отладке законченных программных модулей. Настоящее издание посвящено программированию в среде Embarcadero Delphi и содержит набор
практических заданий для самостоятельного написания программ.  При этом
учитывается, что студенты уже знакомы с основами алгоритмизации и основными понятиями объектно-ориентированного программирования, а также
имеют уверенные навыки программирования на языке Pascal. 

Часть 1 содержит краткое описание основных понятий языка программирова
ния Pascal, объектно-ориентированного программирования, особенностей среды Embarcadero Delphi и разработки в ней прикладных программ, включая этапы
проектирования интерфейса, написания программного кода и его отладки. 

Часть 2 посвящена практической работе в среде Embarcadero Delphi. Она вклю
чает в себя ряд практических заданий, построенных в соответствии с единой
методикой. Вначале рассматривается необходимый теоретический материал, 
а затем — пошаговая реализация типового задания в виде законченного программного модуля. После этого предлагается самостоятельно выполнить одно
или несколько заданий для приобретения уверенных навыков программирования задач данного типа.

Авторы выражают особую признательность студентам Государственного со
циально-гуманитарного университета, приложившим свои усилия к созданию
данного пособия: Воробьевой Валерии, Карамышевой Наталье, Климашиной
Юлии, Мужикову Илье, Разыгриной Анастасии, Скворцовой Софье, Фирсовой
Марии. Без их помощи эта книга увидела бы свет гораздо позже.

Авторы

ВВЕДЕНИЕ

Изучение программирования расширяет кругозор, 

помогает улучшить мышление и сформировать образ мыслей о вещах,

я считаю, оно полезно во всех областях.

Билл Гейтс, сооснователь Microsoft

Я думаю, что в будущем все, а не только программисты, 

будут связаны с элементами программирования.

Марк Цукерберг, основатель Facebook

Умение программировать стало четвертой

составляющей грамотности. Каждый должен знать,

как наш цифровой мир работает, не только инженеры.

Марк Сурман, исполнительный директор Mozilla Foundation

Широкое применение вычислительной техники во всех без исключения об
ластях человеческой деятельности — отличительная черта современного этапа
развития общества. В таких условиях изучить хотя бы основы программирования полезно каждому, независимо от того, чем он будет заниматься в будущем. 
Сформированные при этом образ мышления и практические навыки, без сомнения, окажутся полезными в различных профессиях. 

Безусловно, далеко не все изучающие программирование станут профессио
нальными программистами. Для этого нужны призвание, определенный склад
ума, даже, в какой-то мере, талант. Необходимо постоянно совершенствовать
свои навыки, быть в курсе самых современных разработок в области программного обеспечения, уметь быстро изучить специфику конкретной предметной
области, для которой пишется программа. Это профессия, которой невозможно
научиться раз и навсегда. Программирование — это достаточно сложная дисциплина, которая требует постоянного совершенствования. 

Однако умение программировать никому не навредит, более того, будет

очень полезным. Значимость изучения программирования определяется, в частности, тем, что большинство творческих профессий связано с обработкой массивов данных, объем которых постоянно увеличивается, а структура — усложняется. Возможностей универсальных программ во многих случаях просто не будет
хватать, поэтому придется задуматься о создании собственной программы для
решения той или иной конкретной задачи. Не важно, что это будет: небольшой
макрос в Microsoft Excel или система моделирования некоторого научного эксперимента. Главное, что, умея программировать, вы сможете создать программу,
которая поможет Вам в решении профессиональных задач. В дальнейшем вы будете использовать ее многократно, экономя свое рабочее время и становясь более эффективным специалистом. Даже если Вы не будете создавать программный код самостоятельно, знание программирования поможет вам грамотно и
корректно объяснить постановку задачи профессиональному программисту.

Практикум по решению задач на ЭВМ в среде Delphi

По сути, процесс написания программы представляет собой объяснение «не
разумной» машине, что и как она должна делать. При этом необходимо пользоваться только четкими и однозначными понятиями, излагая свои мысли логично и последовательно. Согласитесь, что такая привычка в общении будет
полезна не только при «разговорах» с машиной. Ведь все мы, сами того не замечая, разрабатываем алгоритмы и программируем практически ежедневно. Готовясь к собеседованию с будущим работодателем, вы в деталях продумываете
алгоритм своего поведения. Объясняя ребенку, «что такое хорошо и что такое
плохо», вы программируете его будущее поведение. Столкнувшись со сложной
жизненной проблемой, которую не решить одним махом, вы разбиваете ее на
части, которые можно решать постепенно. Это тоже элемент программирования — декомпозиция сложной задачи. Множество подобных примеров из своей
жизни может привести каждый.

Помимо логичности мышления и четкости изложения мыслей программи
рование учит доводить любое начатое дело до конца. Программа будет работать
только в том случае, если вы изучите глубоко проблему, найдете способы ее решения, формализуете их, напишете и отладите программный код. Другими словами, сделаете всю работу от начала до конца. Если же вашей программой будут
пользоваться коллеги по работе, то вам придется постоянно дорабатывать ее, 
учитывая их замечания и предложения. Другими словами, бросить начатое дело
на середине вы уже не сможете, а будете стремиться создать удобный и практичный программный модуль. Такое отношение к работе, прививаемое практическим программированием, поможет добиться больших успехов и в своей
профессиональной области. 

Программирование является самым эффективным способом добиваться по
ставленной цели, используя имеющиеся ресурсы: при написании программ – 
это возможности среды программирования, а в жизни — финансы, материальные ресурсы, связи, коллеги по работе. И совсем не важно, кто выполняет
разработанную вами программу — «неразумная» машина или разумные люди, 
правильно разработанный алгоритм позволит всегда достичь цели независимо
от обстоятельств.

Что же касается языков программирования,то это просто средство изложения

мыслей программиста. В этом они ничуть не сложнее любого «человеческого» 
языка. Все языки программирования различаются синтаксисом, т.е. правилами
построения связной речи. Только главное не в этом, а в умении алгоритмически
мыслить. Если есть алгоритмическое мышление, то вопрос, на каком языке написать программу, не столь важен, а переход с одного языка программирования
на другой не станет проблемой. Учитесь программировать и будьте успешными.

При анализе и выполнении лабораторных работ обратите внимание на сле
дующие обозначения в тексте:

— материал для повторения, в котором напоминаются некоторые сведения, 
известные из теоретической части книги или ранее изученных курсов.

— задания для самостоятельной работы, которые рекомендуется выполнить для закрепления материала. В конце каждой работы приводится 30 

вариантов заданий. Это сделано для преподавателей, чтобы они могли выдавать
студентам индивидуальные варианты работ. При самостоятельном изучении
достаточно выполнить 2–3 задания.

— вопросы для повторения.

ОСНОВЫ РАЗРАБОТКИ ПРОГРАММ 

Язык программирования Pascal 

Первый вариант языка программирования Pascal появился в 1970 году. Его

автором является Никлаус Вирт — профессор Швейцарского института информатики. Сам язык получил такое имя в честь французского ученого XVII века Блеза
Паскаля — изобретателя автоматического устройства для суммирования чисел.

Благодаря интуитивной понятности его конструкций и простоте изучения, 

логичности, структурированности программ и другим достоинствам Pascal стал
очень популярным языком как для обучения программированию, так и для разработки серьезных программ. Он позволял выражать сложные алгоритмы в доступной и удобной форме. К его достоинствам можно также отнести:

• поддержку структурного программирования и структур данных;
• достаточный набор типов: переменные, массивы, файлы, множества, за
писи, указатели;

• возможность генерации новых типов данных на основе уже существую
щих;

• структурированность языка: в отличие от другого популярного среди раз
работчиков языка С в нем любые программы строятся по одинаковой схеме и, к примеру, новые переменные нельзя объявлять внутри операторов;

• высокий уровень языка, увеличивающий производительность работы

программиста, что дает ему возможность полностью сосредоточиться на
алгоритме решения задачи;

• универсальность, т.е. возможность решать прикладные задачи и разраба
тывать системные программы;

• поддержка концепции объектно-ориентированного программирования

(ООП).

Эти и другие плюсы привели к тому, что язык стал развиваться уже независи
мо от своего создателя, и в 1983 году американская фирма Borland International
выпустила TurboPascal 1.0.

В последующих версиях TurboPascal был совмещен с быстрым компилятором

и редактором кода, что, по существу, и открыло возможность для его использования в школах и институтах в качестве первого изучаемого языка программирования.

Последняя версия TurboPascal 7.0 была выпущена в 1992 году, причем она до

сих пор используется во многих школах для обучения программированию. В
данной версии присутствуют многооконный редактор, обширная система помощи, полихроматический текстовый редактор, поддержка вставок на языке ассемблера и целый ряд других возможностей.

Практикум по решению задач на ЭВМ в среде Delphi

«Наследником» языка Turbo Pascal стало его объектно-ориентированное рас
ширение Object Pascal, при этом среда визуальной разработки программ получила название Delphi. В нем появились, в частности, следующие возможности: 

• визуальное программирование, позволяющее собирать интерфейс пользо
вателя из готовых компонентов и сразу оценивать результат;

• интерфейсы для поддержки COM-технологии фирмы Microsoft.
• перегрузка процедур и функций с помощью директивы overload.
Современная версия Delphi 10 Seattle (2015) разработана фирмой Embarcadero и

содержит как классический инструментарий, так и инструментарий, предназначенный для создания мобильных приложений. Таким образом, Delphi, оставаясь
современным и мощным инструментом для многих программистов, по-прежнему является достойным преемником языка Паскаль, позволяя создавать как
сложнейшие приложения, так и небольшие учебные проекты.

Основные принципы императивного программирования

Object Pascal относится к группе языков императивной парадигмы програм
мирования, т.е. он описывает процесс вычислений в виде инструкций, изменяющих состояние данных. Императивная программа содержит своеобразные приказы, которые должен выполнить компьютер. По этой причине к программе на
языке Object Pascal предъявляется целый набор требований, выполнение которых необходимо для работы программы. 

В декларативной парадигме программирования, в отличие от императивной, 

описывается не алгоритм решения задачи, а требуемый результат. Это позволяет создавать короткие и понятные программы, однако их недостатком является низкая эффективность, поскольку структура декларативных языков далека
от устройства существующих компьютеров, основанных на принципах Дж. Фон
Неймана. В настоящее время сфера декларативного программирования весьма
узкая, однако она неуклонно расширяется.

Перед началом знакомства с принципами работы в среде Delphi необходимо

вспомнить основные сведения о языке Pascal и о программировании в целом.

Типы данных

В среде программирования Delphi доступна работа со всеми типами данных, 

применяемых в языке Паскаль. Перечислим их:

• простые типы данных:

➢
порядковые:
 целые (Byte, Word, LongWord, ShortInt, SmallInt, Cardinal, Integer, 

LongInt, Int64);

 логические (Boolean, WordBool, LongBool);
 символьные (Char);
 перечисляемые;
 интервальные;
 вещественные (Real, Float, Double);

➢
структурированные:

Основы разработки программ  
9

 массивы:

• одномерные (Array […] of…);
• многомерные;
• динамические;

 строки (String, AnsiString);
 множества (Setof …);
 записи (Record);
 файлы (File,TextFile);

➢
указатели:
• нетипизированные (Pointers);
• типизированные;

➢
процедурные:
• тип Variant;
• вариантные значения;
• процедуры обработки вариантных массивов;
• OLE Automation.

В последующих лабораторных работах в основном будут использоваться пе
ременные целого, вещественного, логического и строкового типов. Первые три
типа дополнительных пояснений не требуют, а работу со строками рассмотрим
более подробно. В переменных типа String длина строки записывается в начале
строки, т.е. перед самым первым символом. Это означает, что номер первого
символа строки — единица

Единственной непосредственной операцией для работы со строками явля
ется операция конкатенации (присоединения), которая обозначается символом
плюс, например:

var

S1, S2: String;

begin

S1 := S1 + S2;

end;

Для работы со строками в Delphi используется множество стандартных про
цедур и функций, некоторые из которых приведены в таблице 1.

Таблица 1. Процедуры и функции работы со строками

Процедура или функция
Назначение

Length(S: String): Integer;
Определение количества символов в строке S.

IntToStr(N: Integer): String;
Преобразование целого числа N в строку.

StrToInt(S: String): Integer;
Преобразование строки S в целое число.

FloatToStr(X: Extended): String;
Преобразование вещественного числа X в строку.

StrToFloat(S: String): Extended;
Преобразование строки S в вещественное число.

AnsiUpperCase(const S:String): String;

Преобразование всех символов строки S к верхнему регистру (заглавные буквы).

Практикум по решению задач на ЭВМ в среде Delphi

Процедура или функция
Назначение

Trim(const S: String): String;
Удаление из строки S начальных и завершающих пробелов
и управляющих символов.

Pos(Substr: String; Str: String): Integer;

Вычисление номера первого вхождения строки Substr в
строку Str. Если строка Substr не содержится в Str, то функция возвращает нуль.

Insert(Source: String; 

var S: String; Index: Integer): Integer;

Вставка строки Source в строку S, начиная с номера символа, задаваемого значением параметра Index.

Delete(var S: String; 

Index, Count: Integer);

Удаление из строки S символов в количестве Count, начиная с символа с номером Index.

Copy(S: String;

Index, Count: Integer): String;

Получение строки путем копирования из строки S символов, начиная с номера Index, в количестве Count символов.

ОСНОВНЫЕ 
АЛГОРИТМИЧЕСКИЕ КОНСТРУКЦИИ

Вычислительные процессы, используемые для решения различного рода за
дач на ЭВМ, в общем виде могут быть разделены на три большие группы: линейные, разветвляющиеся и циклические.

Линейные операторы

Линейным принято называть вычислительный процесс, в котором этапы вы
числений выполняются в линейной последовательности, причем каждый этап
выполняется один раз. Визуально его можно представить в виде последовательности команд, которые размещаются сверху вниз в порядке их выполнения. Для
таких процессов характерно, что направление вычислений не зависит от исходных данных или промежуточных результатов.

Линейные процессы имеют место, например, при вычислении арифмети
ческих выражений. Ниже приведен листинг функции, позволяющей вычислить
сумму двух целых чисел, вводимых с клавиатуры.

Function Summa(a, b: integer): integer;
Begin

Readln(a);
Readln(b);
Summa := a + b;
Writeln(Summa);

End;

Условные операторы

Разветвляющийся вычислительный процесс реализуется по одному из не
скольких заранее предусмотренных направлений в зависимости от выполнения
некоторого условия. Каждое направление вычислений называется ветвью. В любом конкретном случае процесс реализуется только по одной ветви, а выполнение остальных исключается. Ветвящийся процесс, включающий в себя две ветви, 
называется простым, более двух ветвей — сложным. Сложный ветвящийся процесс можно представить с помощью простых ветвящихся процессов.

Примером реализации простого условия является вычисление значения сле
дующей функции:

Практикум по решению задач на ЭВМ в среде Delphi

f x

x

x
x

x

( )

sin
,

,











0

1
0

Function F (x: float): float;
Begin

if x <> 0 then

F := sin(x) / x

else x := 1;

End;

Циклические операторы

Циклический вычислительный процесс включает в себя участки, на которых

вычисления выполняются многократно по одним и тем же математическим
формулам, но при разных значениях исходных данных. Такой многократно повторяющийся участок вычислений называется циклом, а само множество повторяемых команд — телом цикла.

Для организации цикла необходимо предусмотреть:
 задание начального значения параметра цикла — переменной, которая

будет изменяться при его повторении;

 изменение значения этой переменной перед каждым новым повторени
ем цикла;

 проверку условия окончания цикла по значению его параметра и порядок

перехода к началу цикла, если он не окончен.

Цикл называется детерминированным или циклом с параметром, если число

повторений тела цикла заранее известно или определено. Цикл называется итерационным, если число повторений тела цикла заранее неизвестно, а зависит от
значений параметров (некоторых переменных), участвующих в вычислениях. 
Итерационные циклы бывают двух видов: с предусловием и с постусловием.

Примером цикла с параметром является цикл, позволяющий вычислить сум
му первых n подряд идущих целых чисел: 

Summa:= 0;
For i := 1 to N do

Summa := Summa + i;

В цикле с предусловием условие окончания цикла проверяется перед началом

выполнения очередного повторения тела цикла. Это означает, что такой цикл
может не выполниться вообще ни разу, если условие изначально будет ложным. 
Проиллюстрируем применение цикла с предусловием на примере полной реализации алгоритма Евклида для нахождения наибольшего общего делителя двух
целых чисел M и N. Схема алгоритма показана на рисунке 1.

Доступ онлайн
от 460 ₽
В корзину