Программирование на языке Delphi Win32 Language
Покупка
Новинка
Тематика:
Программирование в среде Delphi
Год издания: 2019
Кол-во страниц: 88
Дополнительно
Вид издания:
Учебно-методическая литература
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-7038-5212-5
Артикул: 842339.01.99
Приведены методические указания, необходимые при выполнении лабораторных работ в среде программирования Turbo Delphi. В описании каждой лабораторной работы представлены краткие теоретические сведения, примеры приложений, задания для выполнения работ по вариантам одинакового уровня сложности.
Материал пособия авторы используют при проведении практических занятий в МГТУ им. Н. Э. Баумана.
Для студентов первого курса машино- и приборостроительных специальностей, изучающих дисциплину «Информатика» (второй семестр). Может быть полезно преподавателям при проведении лабораторных работ.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Федеральное государственное бюджетное образовательное учреждение высшего образования «Московский государственный технический университет имени Н.Э. Баумана (национальный исследовательский университет)» С.В. Борисов, О.Б. Пащенко, И.Л. Серебрякова Программирование на языке Delphi Win32 Language Учебно-методическое пособие 1
Б82 УДК 004.43 ББК 32.973 Б82 Издание доступно в электронном виде по адресу ebooks.bmstu.press/catalog/199/book2074.html Факультет «Информатика и системы управления» Кафедра «Программное обеспечение ЭВМ и информационные технологии» Рекомендовано Научно-методическим советом МГТУ им. Н.Э. Баумана в качестве учебно-методического пособия Борисов, С. В. Программирование на языке Delphi Win32 Language : учебно-методическое пособие / С. В. Борисов, О. Б. Пащенко, И. Л. Серебрякова. — Москва : Издательство МГТУ им. Н. Э. Баумана, 2019. — 86, [2] с. : ил. ISBN 978-5-7038-5212-5 Приведены методические указания, необходимые при выполнении лабораторных работ в среде программирования Turbo Delphi. В описании каждой лабораторной работы представлены краткие теоретические сведения, примеры приложений, задания для выполнения работ по вариантам одинакового уровня сложности. Материал пособия авторы используют при проведении практических занятий в МГТУ им. Н.Э. Баумана. Для студентов первого курса машино- и приборостроительных специальностей, изучающих дисциплину «Информатика» (второй семестр). Может быть полезно преподавателям при проведении лабораторных работ. УДК 004.43 ББК 32.973 © МГТУ им. Н.Э. Баумана, 2019 © Оформление. Издательство ISBN 978-5-7038-5212-5 МГТУ им. Н.Э. Баумана, 2019 2
Предисловие Учебно-методическое пособие содержит краткое изложение основ программирования на языке Delphi Win32 Language с примерами и задания для выполнения лабораторных работ студентами первого курса, изучающими дисциплину «Информатика». В пособии представлены следующие темы: процедурный тип данных, разработка интерфейса с использованием оконных форм, работа с динамическими данными (динамические массивы, линейные списки), создание пользовательских объектов и классов, графические возможности среды программирования, включая анимацию. Вся изложенная информация и приведенные примеры ориентированы на применение визуальной среды программирования Turbo Delphi. В описании каждой лабораторной работы представлены задания, имеющие одинаковый уровень сложности. В заданиях указано, что студенты должны выполнить и какие результаты продемонстрировать. Сформулированы вопросы и задания для самоконтроля усвоения проработанного материала и требования к оформлению отчета о выполненной работе. Пособие предназначено для изучения фундаментальных основ программирования и выработки у студентов навыков создания пользовательского интерфейса. Цели и задачи комплекса лабораторных работ соответствуют программе дисциплины «Информатика». После практического освоения дисциплины студент должен приобрести определенные знания, умения и навыки. Студент должен знать: принципы работы технических и программных средств в информационных системах; типовые алгоритмы решения задач; язык программирования Delphi Win32 Language; среду программирования Turbo Delphi. Студент должен уметь: разрабатывать алгоритмы и кодировать их на языке программирования; использовать современные информационные технологии и инструментальные средства для решения различных задач. 3
Студент должен иметь навыки: самостоятельной работы с учебной и справочной литературой; использования программных комплексов и прикладных программ вычисления на компьютере; разработки алгоритмов и кодирования приложений для решения профессиональных задач; тестирования и отладки приложений; представления результатов в удобном для пользователя виде, создания диалоговых и графических приложений; оформления документации в соответствии с требованиями Единой системы программной документации (ЕСПД). 4
ЛАБОРАТОРНАЯ РАБОТА № 1 Процедурные и функциональные типы данных Цели работы — изучение процедурных и функциональных типов данных; разработка алгоритмов и кодирование приложений. В языке Delphi Win32 Language допускается интерпретация процедур и функций как объектов, которые можно присваивать переменным и передавать в качестве параметров в подпрограммы. Такие действия выполняются с помощью процедурных (функциональных) типов. Определение процедурных (функциональных) типов и описание процедурных (функциональных) переменных: type tProc = procedure; tSwapProc = procedure (var x, y: integer); tStrProc = procedure (s : string); tMathFunc = function (x : real) : real; tDeviceFunc = function (var f : text): integer; var p : tSwapProc; f : tMathFunc; Функция может возвращать строковый, числовой, символьный, булевский типы, быть указателем или иметь перечислимый тип, определенный пользователем. Пример 1.1. Этот пример демонстрирует вывод трех таблиц с результатами вычислений посредством различных арифметических действий, выполняемых с помощью соответствующих функций, передаваемых в процедуру через список ее параметров. Фрагмент кода приложения для примера 1.1: program Tables; type tFunc = function (x, y : integer) : integer; function Add (x, y : integer) : integer; begin Add := x + y; end; function Multiply (x, y : integer) : integer; 5
begin Multiply := x * y; end; function Funny (x, y : integer) : integer; begin Funny := (x + y) * (x - y); end; procedure PrintTable (h, w : integer; Operation : tFunc); var x, y : integer; begin for x := 1 to h do begin for y := 1 to w do write (Operation (x, y) : 5); writeln; end; writeln; end; begin PrintTable (10, 10, Add); PrintTable (5, 10, Multiply); PrintTable (15, 20 ,Funny); end. В результате выполнения приложения Tables на экран будут выведены три таблицы, вторая из которых заполнена следующим образом: 1 2 3 4 5 6 7 8 9 10 2 4 6 8 10 12 14 16 18 20 3 6 9 12 15 18 21 24 27 30 4 8 12 16 20 24 28 32 36 40 5 10 15 20 25 30 35 40 45 50 Параметры процедурного типа особенно удобно использовать в том случае, когда над множеством процедур или функций требуется выполнить общие действия. В примере 1.1. процедура PrintTable представляет собой общее действие, выполняемое над функциями Add, Multiply и Funny. 6
Замечания: если процедура или функция передается в качестве параметра, то она должны удовлетворять тем же правилам совместимости типа, что и при присваивании; процедура или функция должна передаваться в подпрограмму как параметр-значение. При разработке алгоритма и создании кода приложения требуется использовать функциональный тип данных для решения следующих задач: 1) приближенное решение алгебраических и трансцендентных уравнений. 2) приближенное интегрирование функций. Приближенное решение алгебраических и трансцендентных уравнений Приближенное вычисление изолированных действительных корней уравнения f (x) = 0 обычно состоит из двух этапов. 1. Отделение корней, т. е. установление промежутков [a, b], в которых содержится один и только один корень уравнения f(x) = 0. 2. Приближенное вычисление изолированных действительных корней уравнения f (x) = 0, т. е. последовательное приближение к истинному значению корня. Независимо от используемого метода определения приближенного значения корня достижение заданной точности вычисления можно оценить двумя способами. 1. Пусть известны два последовательных приближения (два значения корня) — xn–1 и xn. Выполнение неравенства | xn – xn – 1 | < < eps, где eps — малая наперед заданная величина (абсолютная погрешность), означает, что итерационное приближение к истинному значению корня (уточнение) следует завершить. 2. Уточнение значений корня уравнения f (x) = 0 необходимо завершить, как только будет получено такое приближение xn, для которого | f (xn) | < eps. Перечислим некоторые методы приближенного решения уравнений. Метод половинного деления. Если функция f (x) непрерывна на [a, b] и f (a) · f (b) < 0, то для нахождения корня уравнения 7
этот отрезок делят пополам. Если f ((a + b)/2) = 0, то х = (a + b)/2 является корнем уравнения. Если f ((a + b)/2) <> 0, то выбирают ту половину: [a, (a + b)/2] или [(a + b)/2, b], на концах которой функция f (x) имеет противоположные знаки. Новый суженный отрезок [a1, b1 ] снова делят пополам и повторяют перечисленные действия до тех пор, пока корень не будет уточнен. Метод хорд. Если функция f (x) непрерывна на [a, b] и f (a) · f (b) < 0, то для нахождения корня уравнения делят этот отрезок в отношении f (a)/f (b), что дает первое приближенное значение корня x1 = a + h1 , где h1 = –f (a) · (b – a) / [–f (a) + f (b)] = –f (a) · (b – a) / [f (b) – f(a)]. Далее, применяя этот прием к одному из отрезков [a, x1] или [x1, b], на концах которого функция f (x) имеет противоположные знаки, получают второе приближение корня x2 и так далее до тех пор, пока корень не будет уточнен. Метод Ньютона (метод касательных). Если f'(x) и f''(x) непрерывны и сохраняют определенные знаки при a <= x <= b, то, многократно повторяя вычисления xn + 1 = xn – f (xn)/f.′(xn), получают быстро сходящиеся к корню последовательные приближения xn (n = 1, 2, ...). За первое приближение корня можно принять значение x1 = a – f (a)/f ′(a). Метод итераций. Уравнение для функции f (x) переписывают в виде x = g(x). После этого выбирают начальное приближение x1, подставляют его в правую часть уравнения и полученное значение x2 = g(x1) принимают за второе приближение для корня и т. д. Если найдено приближение xn, то следующее приближение xn + 1 определяют по выражению xn + 1 = g (xn) до тех пор, пока корень не будет уточнен. Приближенное интегрирование функций Приближенное вычисление интеграла функции f (x), непрерывной на отрезке [a, b], с точностью eps означает следующее: отрезок интегрирования [a, b] разбивают на ni равных частей, функцию f (x) на рассматриваемом отрезке заменяют интерполирующей или аппроксимирующей функцией g(x) простого типа и вычисляют сумму Sni, которая является приближенным значени8
ем интеграла. Если | Sni + 1 – Sni | < eps, то Sni + 1 считается значением интеграла, вычисленным с заданной точностью eps (здесь ni < ni + 1 (i = 1, 2, ...)). Приведем формулы, которые применяют для приближенного вычисления определенного интеграла. Формула прямоугольников: S = h · (y0 + y1 + ... + yn – 1), где h = (b – a)/n; xj = a + j · h (j = 0, 1, 2, ..., n); yj = f (xj ). Формула трапеций: S = h/2 · (y0 + 2 · (y1 + y2 + ... + y n – 1) + yn), где h = (b – a)/n; xj = a + j · h ( j = 0, 1, 2, ..., n); yj = f(x j). Формула Симпсона: S = h/3 · ((y0 + y2 · k) + 4 · (y1 + y3 + ... + y2 · k – 1) + 2 · (y2 + y4 + ... … + y2· k – 2)), где n — четно (2 · k); h = (b – a)/n; xj = a + j · h (j = 0, 1, 2, ..., n); yj = f (xj). Вопросы и задания для самоконтроля 1. Какие требования предъявляются к параметрам функционального (процедурного) типа при передаче их в подпрограмму? 2. Назовите этапы приближенного нахождения изолированных действительных корней уравнения f (x) = 0. 3. Укажите способы уточнения корней уравнения f (x) = 0. 4. Назовите методы приближенного вычисления определенного интеграла? 5. Какое ограничение наложено на начальное разбиение отрезка интегрирования в формуле Симпсона и почему? 9