Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Углубленный курс информатики. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
Реализация методом Рунге–Кутта:
Построение Модуля SISE DIFUR
Unit SISTEMDIFUR;
Interface
Label 1,2; Type a=array[1..2] of real; Var k:integer; x,xk,h:real;y,k1,k2,k3,k4,f:a; Procedure P(x:real; var y,f:a); Procedure Eylersistem(x,xk,h:real;y,f:a; k:integer); Procedure RUNGsistem(x,xk,h:real;y,f:a; k:integer);
Implementation
Procedure P(x:real; var y,f:a); Begin f[1]:= y[2];f[2]:=exp(-x*y[1]);end; Procedure Eylersistem(x,xk,h:real;y,f:a;k:integer); Label1,2; Begin 1:write (x:5:2,y[1]:5:2,y[2]:5:2,k:5);k:=k+1; If x>xk then goto 2; P(x,y,f);
51
Y[1]:=Y[1]+h*f[1]; y[2]:= y[2]+h*f[2]; x:=x+h; goto 1; 2:end; Procedure RUNGsistem(x,xk,h:real;y,f:a;k:integer); Label 1,2; type a=array[1..2]; k1,k2,k3,k4,Y1:a; Begin 1:write (x:5:2,y[1]:5:2,y[2]:5:2,k:5);k:=k+1; If x>xk then goto 2; P(x,y,f); K1[1]:=h*f[1];k1[2]:=h*f[2];
y1[1]:=y[1]+0.5*k1[1];Y1[2]:=y[2]+0.5*k1[2]; P(x+0.5*h,y1,f);
K2[1]:=h*f[1]; k2[2]:=h*f[2]; Y1[1]:=y[1]+0.5*k2[1]; y1[2]:=y[2]+0.5*k2[2]; P(x,y1,f);K3[1]:=h*f[1];k3[2]:=h*f[2]; y1[1]:= y[1]+k3[1]; y1[2]:= y[2]+k3[2]; P(x,y1,f); K4[1]:=h*f[1];k4[2]:=h*f[2]; Y[1]:=Y[1]+(1/6)*(K1[1]+2*K2[1]+2*K3[1]+K4[1]);
Y[2]:=Y[2]+(1/6)*(K1[2]+2*K2[2]+2*K3[2]+K4[2]); x:=x+h; goto 1;
2:end;end.
Вопросы для самоконтроля
1. В чем заключается суть метода Эйлера?
2.
В чем заключается суть метода Рунге-Кутта?
3.
Какими преимуществами обладает модульный принцип програм-
мирования решения нелинейных уравнений?
Какими преимуществами обладает модульный принцип програм-
4. мирования решения дифференциальных уравнений?
Какими преимуществами обладает модульный принцип програм-
5. мирования решения систем дифференциальных уравнений?
52
5. ОСНОВЫ РАБОТЫ В СРЕДЕ ОБЪЕКТНО-
ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ DELHI
5.1. Знакомство со средой Delphi
Delphi – это система визуального объектно-ориентированного
программирования на языке Object Pascal для операционной системы
Windows.
Delphi объединяет в себе редактор кода и средства визуальной
разработки
Object Pascal и других языков (создание функций, процедур, модулей), но и ряд дополнительных средств для максимального ускорения и упрощения разработки программ.
Так, например, Delphi содержит большое количество стандартных
объектов, что значительно упрощает процесс программирования (тексто­вые надписи, кнопки, переключатели, текстовые поля, панели и иные по­всеместно используемые элементы пользовательского интерфейса). При помощи стандартных объектов за считанные минуты и без лишних уси­лий можно создать полноценно выглядящую программу, а также прочие составные части визуальной составляющей разработки программ.
Наряду с этим, в паскале нет готовых объектов, их можно создать
своими руками путем просчитывания вручную расположения каждого элемента пользовательского интерфейса, но это очень сложно, неудобно и значительно увеличивает время разработки программы.
Программирование в Delphi состоит из двух основных этапов:
1. Визуальное построение программы.
Написание программного кода.
2. Программа в Delphi состоит как минимум из четырех типов файлов:
1. *.dpr – файл-проект (например, Project1.dpr) связывает осталь-
ные файлы в единую программу. Опции проекта (настройки компилято­ра, имена служебных каталогов…) хранятся в файле *.dof (редактор
схемы расположения).
2. *.pas – файлы модулей (например, Unit1.pas) содержат описа-
ния и операторы, подготовленные программистом для либо частей программируемой задачи. Откомпилированный модуль – это файл *.dcu (скомпилированный модуль, который можно использо-
вать в других программах).
3. *.res – двоичный файл ресурсов (например, Project1.res) хранит
используемые в программе ресурсы Delphi – пиктограммы, изображение курсора мыши и т. п. Создается автоматически при создании проекта.
, содержит не только все средства для работы с языком
решения каких-
53
4. *.dfm – аналогичен *.res, хранит свойства настройки интерфей-
са (формы) программы.
После компиляции мы получаем один исполнимый *.exe файл,
например, Project1.exe, который содержит в себе файлы *.res и *.dfm.
После запуска Delphi автоматически создается текст проекта
на языке Object Pascal (файл Project1.dpr) и заготовка для основного модуля (файл Unit1.pas) с макетом интерфейса, называемым формой –
(Form1).
Рис. 3. Главное окно Delphi
После запуска программы на экране появляются стандартные ок-
на для программирования в среде Delphi:
1.
Стандартные кнопки (поле Project1), с помощью которых можно со-
здавать различные визуальные объекты (кнопки, поля, подписи и др.), запускать программу на расчет, сохранять, копировать и т. д.
2. Дерево объектов (поле Object TreeView) – предназначено для наглядного отображения связей между отдельными компонента­ми, размещенными на активной форме или в активном модуле данных. Щелчок по любому компоненту в этом окне активизирует соответствующий компонент в окне формы и отображает свой­ства этого компонента в окне Инспектора объектов.
3.
Поле формы (Form1) – это заготовка окна, на котором будут
отображаться визуальные объекты (кнопки, поля, подписи и др.).
Инспектор объектов (поле Object Inspector) описывает парамет-
4.
ры и свойства визуальных объектов (названия кнопок, шрифты подписей, цвет, размер и др.).
54
5. Код программы (поле Unit1.pas) строится на модульном принци-
пе, где имеется блок описания ствия (блок процедур)
implementation.
interface и блок выполнения дей-
По умолчанию программа создаётся в папке C:\Program
Files\Borland\Delphi7\Projects.
Визуальное программирование заключается в следующем:
1) необходимо щелчком мыши выбрать желаемый компонент (тип
объекта) из палитры компонент, например кнопку, окошко ввода, об­ласть размещения рисунка и т. п.;
2) указать вторым щелчком мыши место на форме где сразу же
будет создан визуальный объект в виде рабочей копии компонента;
3) в инспекторе объектов необходимо выбрать требуемые свой-
ства (properties) выделенного объекта и настроить их значения, напри­мер изменить заголовок объекта, тип шрифта, цвет фона и т. д.;
4) там же можно выбрать события (events), например, нажатие
кнопки мыши, операция Drag&Drop и т. д., на которые должен реагиро­вать выбранный объект на Вашей форме. При этом автоматически гене­рируется Pascal-текст программы и заносится
в указанные ранее файлы.
Текст программы доступен в окнах редактора кодов.
Свойства объектов в среде Delphi
Основные свойства разных объектов Delphi (рис. 4).
Рис. 4. Свойства объекта в Delphi
Align – выбор выравнивания компонента относительно окна формы;
alBottom – по нижнему краю; alClient – вся пользовательская (клиентская) область; alCustom – выравнивание определяется вызовом методом
объекта-родителя;
alLeft – по левому краю;
55
alNone – без выравнивания; alRight – по правому краю; alTop – по верхнему краю.
Border…– настройка границ объекта. Borderlcons
– определяет, какие оконные кнопки появляются в
области заголовка формы.
BorderStyle – определяет поведение границ окна и общий тип окна:
bsDialog – диалоговое окно (из кнопок – только «Закрыть», иконки в заголовке окна нет); bsNone – «чистый лист» (отсутствие у окна границ и заго-
ловка) – применяется обычно для создания заставок во вре­мя запуска программы;
bsSingle – обычное окно, но с запретом изменения размеров; bsSizeable – обычное окно (по
умолчанию) – размеры формы
можно изменять;
bsSizeToolWin – упрощённое окно с уменьшенным заголовком; bsToolWindow – упрощённое окно с уменьшенным заголов­ком без возможности изменения размеров.
BorderWidth – ширина границы окна в пикселах. Граница являет-
ся невидимой и расположена в пользовательской части формы.
Caption – заголовок объекта. Color – цвет объекта и его элементов. Enable – доступность объекта, т. е. он должен/нет (значения дан-
ного свойства – True/False) реагировать на мышь, клавиатуру, время.
+Font –шрифт (название, размер, цвет). Двойной щелчок мыши на
знаке «+» раскрывает детальные характеристики свойства.
Height – высота объекта в пикселях. Hint – текст всплывающей подсказки. Left – координата левой границы объекта в пикселях. Name – идентификатор, т. е. программное имя объекта. Parent… – взять свойство… или не брать из родительского объекта. ShowHint
– показывать или нет подсказку Hint.
Top – позиция формы (левого верхнего угла) на экране в пикселах. Visible – объект видимый или невидимый. Width – ширина объекта в пикселях. ComboBox – объединяет функции компонентов ListBox – списка,
и Edit – окно редактирования, дает возможность пользователю сделать выбор необходимой строки или реализовать свою строку текста в каче­стве выбора.
Label1 – метка подпись к объекту.
Items – элементы объекта, если они есть.
56
LabelEdit – объединяет свойства Label и Edit, т. е. надпись привя-
зана к полю ввода.
Checkbox – для обозначения включения или отключения какой
либо опции.
Style – стиль шрифта; fsBold
– True – полужирный шрифт.
Edit – однострочное текстовое поле, служащее для ввода данных
пользователем.
T:=
StrToFloat (Edit6.Text); – переводит строковые данные в
число
Ср:=… – расчет теплоемкости Edit7.Text:=FloatToStr(Cp); – переводит число в строковые
данные
Для чисел типа integer: StrToInt, IntToStr.
Button – командная кнопка. Объект Таблица – StringGrid (Вкладка «Additional»)
Каждая ячейка таблицы имеет свои координаты [i, j], где i – номер
столбца; j – номер строки. Нумерация столбцов и строк начинается с нуля. Рассмотрим пример:
Данная таблица имеет 5 столбцов и 5 строк.
Свойства: RowCount ColCount – число столбцов таблицы
Заполнение ячейки таблицы: StringGrid1.Cells[i,j]:=’Текст’;
Если в ячейку таблицы вносится число, его нужно перевести в
формат строки:
StringGrid1.Cells[i,j]:= FloatToStr(Cp);
действий с таблицей f:=StrToFloat(Cells[1, 1])+StrToFloat(Cells[1, 2])*x + StrToFloat(Cells[1, 3])*sqr(x) + StrToFloat(Cells[1, 4])*sqr(x)*x + StrToFloat(Cells[1, 5])*sqr(x)*sqr(x)
– число строк таблицы
with StringGrid1 do // оператор обеспечивает выполнение
57
Присваивание числу значения из ячейки таблицы: Cp:=StrToFloat(StringGrid1.Cells[i,j]);
5.2. Структура проекта в среде Delphi
program
<Заголовок программы (совпадает с именем файла про-
екта)>;
(* Раздел объявлений (до первого
begin): *)
Uses <Перечень используемых модулей>;
[Объявления меток; констант; типов; переменных; процедур и
функций]
begin
(* Раздел операторов: *) <оператор1>; <оператор2>; <…> <операторN>;
end.
// Конец проекта
Здесь использованы следующие обозначения: [...] – необязатель-
ная часть программы; – часть программы, представленная в форме ре­дакционных разъяснений; (*…*) – блок комментариев программиста; // – однострочные комментарии.
Комментарии:
1.
Следует отметить, что каждый визуальный объект имеет такую
характеристику, как имя (
Name) и название (Caption). В коде
программы обращение к объекту осуществляется по имени, поэтому, изменив имя объекта в
Object Inspector, следует так-
же проверить, чтобы в программе были внесены соответству­ющие изменения.
2. Поскольку название проекта совпадает с именем файла проек-
та, то не следует изменять их названия «вручную», используй­те для этого команды главного меню: File → Save All (сохра­няются файлы Unit1 (оставить название Unit1), Project1, а мож­но поменять название).
Каждый новый проект следует располагать в отдельной папке,
3.
чтобы избежать путаницы с файлами от разных проектов.
Оператор Uses указывает на необходимость подключения к
4.
программе различных модулей – внешних программ-блоков. Всегда автоматически подключается стандартный модуль Forms, при помощи которого создается форма и главный мо­дуль – Unit1.pas.
5.
Первый Begin означает конец объявлений и начало алгоритми-
ческой части программы, которая состоит из операторов, раз-
58
делённых символом “;”. Заканчивается программа словом end. (с точкой).
Операторы состоят из идентификаторов и операций над ними.
Идентификаторы:
Идентификаторы – это символические имена констант, перемен-
ных, функций и т. п. Они могут состоять из латинских букв (прописные и строчные буквы не различаются), цифр и символа подчёркивания “_”.
Рекомендуется начинать идентификатор и каждую его отдельную
смысловую часть с большой буквы, например ThisIdentificatorIsRight.
Когда открывается новый проект, его текст (код) создается авто-
матически и выглядит следующим образом:
Подключает модуль Forms, Unit1, файл ресурсов – $R должен иметь расширение res
Подключает модуль Unit1 из файла
Unit1.pas
В фигурных скобках – блок комментария компилятора Object Pascal
Тело проекта
Application.Initialize; //инициализация приложения Application.CreateForm(TForm1, Form1); //создание формы Application.Run; //запуск приложения
Рис. 5. Код проекта в Delphi
5.3. Структура модуля в среде Delphi
Все модули можно разбить на две группы:
•
стандартные (созданные разработчиками языка Object Pascal);
•
модули созданные пользователем.
На основе главной формы – объект Form1, принадлежащий классу TForm1, пользователь создает главный модуль Unit1, который сохраня­ется в файле Unit1.pas. Модуль имеет следующую структуру (рис. 6).
59
Конец модуля
Заголовок модуля (совпадает с именем модуля)
Интерфейсный раздел объявлений и опи­саний
(объявления модулей; меток; констант; типов данных; переменных; процедур и функ­ций, все объявления доступны для других модулей)
Раздел реализации алгоритмов данного мо­дуля
(объявления модулей; меток; констант; типов данных; переменных; процедур и функций, все объявления доступны только для в этом мо­дуле)
Рис. 6. Структура модуля в Delphi
Блок Implementation может включать <Обработчики событий. Объявления в них – локальные> [initialization] // Раздел инициализации данных [операторы, которые необходимо выполнить первыми при запуске
приложения (открыть файлы, задать начальные значения переменным из раздела Implementation..)]
[finalization] // Раздел завершения модуля [операторы, которые необходимо выполнить перед завершением
программы (
Закрыть файлы, сохранить данные и др.)] Используется только с
секцией initialization, возможно и пустой
end. // Конец модуля
60
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]