Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
72
Добавлен:
15.06.2014
Размер:
17.1 Кб
Скачать
Разработала: Е.А. Залевская, гр. Ив-218
Лабораторная работа №1

МОДУЛЬНЫЙ ПРИНЦИП ПРОГРАММ DELPHI.
СОЗДАНИЕ ПРОСТЫХ ПРИЛОЖЕНИЙ С ИСПОЛЬЗОВАНИЕМ МАТЕМАТИЧЕСКИХ ФУНКЦИЙ.

Цель работы: Получить представление о принципе модульности программ. Ознакомиться со структурой
файла головной программы приложения Delphi и со структурой модуля. Научиться соз-
давать простые приложения.


Программа, которую строит Delphi в процессе проектирования вами приложения, основана на модуль-
ном принципе. Сама головная программа получается предельно простой и короткой. Она состоит из объ-
явления списка используемых модулей и нескольких операторов, которые создают объекты тех форм, ко-
торые вы задумали, и запускают выполнение приложения.
Принцип модульности очень важен для создания надежных и относительно легко модифицируемых и со-
провождаемых приложений. Четкое соблюдение принципов модульности в сочетании с принципом скрытия
информации позволяет внутри любого модуля проводить какие-либо модификации, не затрагивая при
этом остальных модулей и головную программу.
Все объекты компонентов размещаются в объектах - формах. Для каждой формы, которую вы проекти-
руете в своем приложении, Delphi создает отдельный модуль. Именно в модулях и осуществляется про-
граммирование задачи. В обработчиках событий объектов - форм и компонентов, вы помещаете все свои
алгоритмы. В основном они сводятся к обработке информации, содержащейся в свойствах одних объек-
тов, и задании по результатам обработки свойств других объектов. При этом вы постоянно обращае-
тесь к методам различных объектов.

СТРУКТУРА ФАЙЛА ГОЛОВНОЙ ПРОГРАММЫ

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

program Project1;

uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
unit2 in 'Unit2.pas' {Form2};

{$R *.RES}

{Здесь вы можете поместить описания каких-то констант, переменных,
функций, процедур. Все это будет доступно только в пределах данного файла}

begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.Run;
end.

После ключевого слова programm пишется имя программы. Оно совпадает с именем файла, в котором
сохранен проект. Это же имя присваивается выполняемому файлу приложения.
В строке uses перечисляются модули, загружаемые программой. Первый модуль Forms - системный. А
следующие - модули разработанных вами форм. Помещенные в фигурные скоббки названия форм - это ком-
ментарии. Следующая строка текста - {$R *.RES} представляет собой директиву компилятора. Затем по-
сле ключевого слова begin и до последнего завершающего программу оператора end записано тело прог-
раммы.
Первый оператор в теле программы инициализирует приложение, два следующих - создают объекты
форм Form1 и Form2, последний - начинает выполнение приложения.
Если вам нужно ввести какой-то свой текст в головную программу, вы можете сделать это, введя
описания необходимых констант, переменных, функций и процедур в место программы, отмеченное соот-
ветствующим комментарием в приведенном выше тексте. Кроме того, вы можете добавить или изменить
операторы в теле программы.

СТРУКТУРА МОДУЛЯ

Рассмотрим теперь, как выглядят тексты модулей. Ниже приведен текст модуля с пустой формой. По-
дробные комментарии в этом тексте поясняют, куда и что в этот код вы можете добавлять.

unit Unit1;

interface // Открытый интерфейс модуля

{Список подключаемых модулей}
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls;

{Объявление класса формы}
type
TForm1=class(TForm)
private //Закрытый раздел класса
{ Private declarations }
{Сюда могут помещаться объявления переменных, функций и процедур,
включаемых в класс формы, но не доступных для других модулей}

public //Открытый раздел класса
{ Public declarations }
{Сюда могут помещаться объявления переменных, функций и процедур,
включаемых в класс формы и доступных для других модулей}

end;

var
Form1: TForm;
{Сюда могут помещаться объявления типов, констант, переменных,
функций и процедур, к которым будет доступ из других модулей,
но которые не включаются в класс формы}

implementation //Реализация модуля

{$R *.DFM}

{Сюда могут помещаться предложения uses, объявления типов, констант, переменных,
к которым не будет доступа из других модулей. Тут же должны быть реализации всех
объявленных в разделе interface функций и процедур, а также могут быть
реализации любых дополнительных, не объявленных ранее функций и процедур. }

end.

Модуль начинается с ключевого слова unit, после которого пишется имя модуля. Оно совпадает с именем файла, в котором вы сохранили свой модуль.
Текст модуля состоит из двух основных разделов: interface - открытый интерфейс модуля, и implementation - реализация модуля. Все, что помещается непосредственно в раздел interface, может быть использовано другими модулями программы. Все, что помещается в раздел implementation - внут- реннее дело модуля. Внешние модули не могут видеть типы, переменные, константы, функции и процедуры, размещенные в разделе реализации.
В разделе interface после предложения uses находится заготовка объявления класса вашей формы, подготовленная Delphi. Класс содержит два раздела: private - закрытый раздел класса, и public - открытый раздел класса. То, что вы или Delphi объявите в разделе public, будет доступно для других классов и модулей. То, что объявлено в разделе private, доступно только в пределах данного модуля.
В модуль вы можете ввести еще два раздела: initialization и finalization.


МАТЕМАТИЧЕСКИЕ ФУНКЦИИ

|---------------|---------------------------------|-------------------------|
| Функция | Описание | Аргумент |
|---------------|---------------------------------|-------------------------|
|Abs(X) |абсолютное значение |целое или действительное |
| | |выражение |
|---------------|---------------------------------|-------------------------|
|ArcTan(X) |арктангенс |выражение Extended |
|---------------|-------------------------------- |-------------------------|
|Ceil(X) |округление до наименьшего целого,|выражение Extended |
| |превышающего или равного аргумен-| |
| |ту | |
|---------------|---------------------------------|-------------------------|
|Cos(X) |косинус |выражение Extended - угол|
| | |в радианах |
|---------------|---------------------------------|-------------------------|
|Exp(X) |экспонента |действительное выражение |
|---------------|---------------------------------|-------------------------|
|Floor(X) |округление до наибольшего целого,|выражение Extended |
| |меньшего или равного аргументу | |
|---------------|---------------------------------|-------------------------|
|Frac(X) |дробная часть аргумента: X-Int(X)|выражение Extended |
|---------------|---------------------------------|-------------------------|
|Int(X) |целая часть аргумента |действительное выражение |
|---------------|---------------------------------|-------------------------|
|IntPower(X,E) |возведение X в целую степень Е |выражения Extended и |
| | |Integer |
|---------------|---------------------------------|-------------------------|
|Ln(X) |натуральный логарифм от Х |действительное выражение |
|---------------|---------------------------------|-------------------------|
|Log10(X) |десятичный логарифм от X |выражение Extended |
|---------------|---------------------------------|-------------------------|
|LogN(N,X) |логарифм от X по основанию N |выражение Extended |
|---------------|---------------------------------|-------------------------|
|Max(A,B) |максимум двух чисел |выражения Integer, Int64,|
| | |Single, Double, Extended |
|---------------|---------------------------------|-------------------------|
|Min(A,B) |минимум двух чисел |выражения Integer, Int64,|
| | |Single, Double, Extended |
|---------------|---------------------------------|-------------------------|
|Pi |число Пи: 3.1415926535897932385 |-- |
|---------------|---------------------------------|-------------------------|
|Power(X,E) |возведение Х в произвольную |выражения Extended |
| |степень Е | |
|---------------|---------------------------------|-------------------------|
|Round(X) |ближайшее целое аргумента |выражение Extended |
|---------------|---------------------------------|-------------------------|
|Sin(X) |синус |выражение Extended - угол|
| | |в радианах |
|---------------|---------------------------------|-------------------------|
|Sqr(X) |квадрат аргумента: X*X |выражение Extended |
|---------------|---------------------------------|-------------------------|
|Sqrt(X) |квадратный корень |выражение Extended |
|---------------|---------------------------------|-------------------------|
|Trunc(X) |возвращает целую часть действите-|выражение Extended |
| |льного выражения | |
|_______________|_________________________________|_________________________|

Математические функции описаны в модуле Math. Этот модуль должен быть подключен к приложению оператором uses.

Пример создания приложения
Создадим новое приложение, вычисляющее, например, произведение двух чисел при нажатии кнопки.
Для построения этого приложения используем новые типы компонентов - окна редактирования Edit. Результат будем выводить в панель Panel.
Откройте новое приложение. Перенесите на него со страницы библиотеки Standard два окна редактирования Edit, одну панель Panel, одну кнопку Button и три метки Label для надписей.Размес-
тите все это как в Primer1_1 папки Primers. Измените надписи в метках на что-то осмысленное. Например, "Число 1", "Число 2", "Результат". Замените свойство Caption вашей кнопки, например, на "Расчет". Очистите свойство Caption у панели. В свойстве Text окон редактирования задайте "1" - начальное значение текста.
Напишем обработчик щелчка кнопки. Его единственный оператор может иметь вид:

Panel1.Caption:=Edit.Text+'*'+Edit2.Text+'='
+FloatToStr(StrToFloat(Edit1.Text)*StrToFloat(Edit2.Text));

Этим оператором мы присваиваем свойству Caption компонента Panel1 значение выражения, указанного в правой части оператора. Это выражение должно иметь вид строки текста. Начинается эта строка с текста, введенного пользователем в окно редактирования Edit1 - этот текст хранится в свойстве Text. Затем вы прибавляете к этому тексту символ "*". Знак "+" в выражениях для строк означает конкатенацию - сцепление двух строк символов. Затем аналогичным способом к строке добавляется текст второго окна редактирования и символ "=". После этого нужно вставить в строку результат перемножения. Этот результат будет числом и, чтобы вставить его в текст, надо сначала преобразовать его в строку. Эту операцию выполняет функция FloatToStr, которая преобразует заданный ей параметр типа действительного числа в строку символов. Осталось получить само произведение двух чисел. Но числа заданы пользователем в виде текстов - строк символов в окнах редактирования. Прежде, чем перемножать, эти строки надо перевести в числа. Эту операцию выполня- ют вызовы функции StrToFloat, преобразующие символьное изображение числа в его значение типа дей-
ствительного числа.
В целом, ваше приложение готово. Можете добавить в его форму кнопку "Выход", а в обработчике щелчка этой кнопки написать Close. Тогда при нажатии на эту кнопку приложение будет закрываться.
Чтобы сохранить приложение можно выполнить команду File/Save All. Проще эту команду выполнять с помощью соответствующей быстрой кнопки.

Порядок выполнения лабораторной работы:
1. Ознакомиться со структурой головной программы и модуля.
2. По приведенному примеру создать приложение для сложения или вычитания. (см. пример Primer1_1)
3. Выполнить свой вариант задания с использованием математических функций, оформив его аналогичным образом, используя компоненты Edit и Panel. (см. Primer1_2)

Задания:
1. Задать четыре числа a, b, c, d. Определить площади треугольника со сторонами a, b, c; a, b, d; a, c, d и b, c, d. (Для изображения результатов можно использовать 4 панели Panel)
2. Задать три действительных числа. Найти их сумму, сpеднее аpифметическое и сpеднее геометpическое значения.
3. Даны действительные числа Х1, Х2, Х3, У1, У2, У3. Определить расстояние между точками с координатами (Х1,У1), (Х2,У2), (Х3,У3).
4. Найти действительные корни квадратного уравнения ax^2+bx+c=0. Коэффициенты ввести самостоятельно в окнах Edit.
5. Определить площадь равностороннего треугольника, периметр которого равен Р.
6. Найти периметр квадрата, площадь которого равна S.
7. Дана длина ребра куба. Вычислить площадь грани, площадь полной поверхности и объем куба.
8. Даны четыре действительных числа. Найти сpеднее аpифметическое кубов этих чисел и сpеднее геометpическое модулей этих чисел.
9. Вычислить периметр и площадь треугольника, заданного координатами своих вершин (x1,y1), (x2,y2), (x3,y3). (Каждую из координат вводить в отдельном окне редактирования.)
10. Ввести числа: a, b, c, d. Определить площадь четырехугольника, если a, b, c, d считать его сторонами.
11. Идет k секунда суток. Определить, сколько полных часов (h) и полных минут (m) прошло к этому моменту.
12. Присвоить целой переменной k третью от конца цифру в записи положительного целого числа А (например, при A=4783 k=7).
13. Присвоить целой переменной d первую цифру из дробной части положительного вещественного числа Х (так, если Х=4.34, то d=3).
14. Найти работу силы тяжести при перемещении тела массой m на расстояние s. Угол между вектором силы тяжести и направлением перемещения равен alfa.
15. По двум заданным катетам найти гипотенузу и площадь прямоугольного треугольника.
16. Пусть k (0<k<366) - целое число. Присвоить целой переменной N значение 1,2,3,4,5,6 или 7 в зависимости от того на какой день недели (понедельник, вторник,...,субботу или воскресенье приходится k-й день високосного года, в котором 1 января - понедельник).
17. Даны числа A, B и gamma. Найти площадь треугольника, две стороны которого равны А и В, а угол между этими сторонами равен gamma. Считать, что gamma - радианная или градусная мера угла.
18. Определить h - полное число часов и m - полное количество минут, прошедших от начала суток до того момента (в первой половине дня), когда часовая стрелка повернулась на f градусов (0<f<360, f - вещественное число).
19. Определить угол (в градусах) между положением часовой стрелки в начале суток и ее положением в h часов, m минут и s секунд.
20. Вычислить какая идет секунда суток при положении стрелок в h часов, m минут и s секунд, а также угол (в градусах) между положением часовой стрелки в начале суток и ее положением в указанный момент.
Соседние файлы в папке DELPHI