Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Яровой_Информатика.doc
Скачиваний:
49
Добавлен:
13.04.2015
Размер:
3.2 Mб
Скачать

2.2. Оформление окна программы

Окно программы должно быть ‘понятным’ для пользователей и аккуратно оформленным. Исходными данными для программы являются: a – нижний предел интегрирования, b – верхний предел, n – число разбиений отрезка . Результатом вычислений является значение переменной S, вычисленное по формуле (6.4). Поэтому в эскизе окна программы предусмотрим 4 надписи, поясняющие, где вводятся и где отображается результат счета S. Для этого используем 4 компонента Label1,…,Label4. Разместим эти компоненты с одинаковой высотой и шириной в левой части эскиза окна.

Ввод значений а также вывод полученного результата будем осуществлять, используя компоненты Edit1,…,Edit4, являющиеся однострочными редакторами текста. Разместим эти компоненты правее соответствующим им меткам Label1,…,Label4 и установим им одинаковую высоту и ширину.

Вычисления по формуле (6.4) будут производиться при ЩЛК на командной кнопке Button1. Разместим Button1 ниже компонентов Label4 и Edit4 по центру эскиза окна программы.

При необходимости можно изменить положение пар Label1 – Edit1,…, Label4 – Edit4, выравнивая их по горизонтали и располагая симметрично относительно вертикальной оси по центру окна. В результате получим один из вариантов эскиза окна, представленный на рис. 6.2.

Рис. 6.2. Эскиз окна программы.

2.3. Изменение свойств компонентов. Получение заготовки процедуры

В окне ‘Object Inspector’ (пер. ‘Инспектор объекта’) зададим основные свойства каждому компоненту окна. Свойству Caption компонента Form1 зададим значение ‘Метод трапеций’. Свойству Caption каждого компонента Label1, Label2, Label3, Label4 зададим соответственно значения: ‘Введите а =’, ‘Введите b =’, ‘Введите n =’, ‘Результат S =’. Это подсказки пользователю: что вводить в поля редакторов текста Edit1, Edit2, Edit3 перед ЩЛК на кнопке Button1, и что будет выведено в поле редактора Edit4 после ЩЛК на Button1. Свойству Text (пер. Текст) каждого редактора текста зададим пустую строку.

Изменим заголовок командной кнопки Button1. Для этого его свойству Caption зададим новое значение: ‘Вычислить’. После проведенных изменений основных свойств компонентов получим окно программы, приведенное на рис. 6.3.

Рис. 6.3. Окно программы.

Заготовку процедуры-обработчика события OnClick командной кнопки ‘Вычислить’ создадим в такой последовательности: вначале выбираем кнопку “Вычислить” (щелчком левой клавиши), а затем дважды щелкаем левой клавишей мыши на ней.

2.4. Программирование вычислений определенных интегралов

Программирование численного интегрирования по формуле (6.4) проиллюстрируем на конкретных примерах. При этом описания типов переменных и операторы, реализующие необходимые вычисления, будем вводить посредствам клавиатуры в полученную заготовку процедуры-обработчика события OnClick.

Задание 1. Составить программу вычисления определенного интеграла

по формуле (6.4), приняв n=80.

Для улучшения ‘читабельности’ программы, имена переменным будем давать по обозначениям математических величин формулы (6.4). Тип переменных естественным образом определяется этой формулой. Поэтому между заголовком процедуры и операторной скобкой begin введем секцию var, в которой опишем типы переменных:

var

i,n:integer;

a,b,s,h,x:real;

В тело процедуры запишем операторы, реализующие:

1. Ввод исходных данных:

a:=StrToFloat(Edit1.Text);

b:=StrToFloat(Edit2.Text);

n:=StrToInt(Edit3.Text);

В операторах: StrToFloat(Edit1.Text) является стандартной функцией, преобразующей строковый тип поля Edit1 в вещественный тип; StrToInt(Edit3.Text) – стандартная функция, преобразующая строковый тип поля Edit3 в целый тип. Преобразованные значения присваиваются операторами 2-м вещественным переменным a, b и переменной целого типа n. Заметим, что в работающей программе вначале заполняются поля Edit1, Edit2, Edit3 текстами 0,0; 1,0; 80 соответственно, а затем производится ЩЛК на кнопке ‘Вычислить’.

2. Вычисление значений математических величин по формуле (6.4).

Для вычисления шага интегрирования h=(b – a)/n и полусуммы (y0+yn)/2 (см. формулу (6.4)) запишем операторы:

h:=(b-a)/n;

s:=(a*a*sqrt(1-a*a)+b*b*sqrt(1-b*b))/2.0;

Вычисление значения аргумента x1 определим записав оператор:

x:=a+h;

Вычисление частных сумм и окончательно полной суммы ординат (y0+yn)/2+y1+y2+…+yn-1 для соответствующих значений аргумента x1, x2,…,xn-1 зададим в цикле:

for i:=1 to n-1 do

begin

s:=s+x*x*sqrt(1-x*x);

x:=x+h;

end;

Следует понимать, что многократное выполнение оператора x:=x+h; приводит к тому, что переменная x последовательно будет принимать значения x1, x2,…,xn-1.

Умножив полученную сумму на h:

s:=h*s; ,

отобразим полученный результат в поле Edit4:

Edit4.Text:=FloatToStr(s);

В этом операторе, для преобразования вещественного значения переменной s в строковый тип, применяется стандартная функция FloatToStr(s).

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

unit Unit1; // Заголовок модуля

interface // Начало интерфейсного раздела

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,

Forms, Dialogs, StdCtrls;

type

TForm1 = class(TForm) // Начало описания класса

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

Button1: TButton;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end; // Конец описания класса

var

Form1: TForm1;

implementation // Начало раздела реализации

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject); // Заголовок процедуры

var

i,n:integer;

a,b,s,h,x:real;

begin

a:=StrToFloat(Edit1.Text);

b:=StrToFloat(Edit2.Text);

n:=StrToInt(Edit3.Text);

h:=(b-a)/n;

s:=(a*a*sqrt(1-a*a)+b*b*sqrt(1-b*b))/2.0;

x:=a+h;

for i:=1 to n-1 do

begin

s:=s+x*x*sqrt(1-x*x);

x:=x+h;

end;

s:=h*s;

Edit4.Text:=FloatToStr(s);

end; // Конец описания процедуры

end. // Конец модуля

Задание 2. Составить программу вычисления определенного интеграла

по формуле (4), приняв n=350.

При выполнении этого задания оформление окна программы, изменение свойств компонентов и получение заготовки процедуры-обработчика события OnClick проведем согласно описанному в п.п. 2.2, 2.3. Программирование вычисления этого интеграла по формуле (6.4) сведем к вводу с клавиатуры в полученную заготовку описаний типов переменных и операторов по аналогии с выполнением задания 1. При этом в тексте процедуры необходимо изменить только два оператора:

- оператор, реализующий вычисление полусуммы (y0+yn)/2:

s:=(1.0/(sqrt(a+9) - sqrt(a))+1.0/(sqrt(b+9)-sqrt(b)))/2.0;

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

s:=s+1.0/(sqrt(x+9)-sqrt(x));

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

procedure TForm1.Button1Click(Sender: TObject); // Заголовок процедуры

var

i,n:integer;

a,b,s,h,x:real;

begin

a:=StrToFloat(Edit1.Text);

b:=StrToFloat(Edit2.Text);

n:=StrToInt(Edit3.Text);

h:=(b-a)/n;

s:=(1.0/(sqrt(a+9) - sqrt(a))+1.0/(sqrt(b+9)-sqrt(b)))/2.0;

x:=a+h;

for i:=1 to n-1 do

begin

s:= s+1.0/(sqrt(x+9)-sqrt(x));

x:=x+h;

end;

3. Выполнение работы

1. Включите ПК, создайте две папки для хранения двух проектов.

2. Запустите систему Delphi.

3. Выполните каждый пункт задания 1 и сохраните проект в 1-й папке. Откомпилируйте и запустите на выполнение составленную программу ЩЛК на командах:

<Run>→<Run>.

При необходимости, проведите отладку программы.

3.4. Повторите перечисленное в п.3.3 для задания 2.

4. Форма отчета

Отчет должен содержать:

- основные положения по пунктам 2.1 - 2.4;

- для первого задания: условие задания; окно проекта и модуль с комментариями;

- для второго задания: условие задания; окно проекта и текст процедуры - обработчика события с комментариями.

5. Контрольные вопросы

1. Поясните геометрический смысл определенного интеграла.

2. Приведите вывод формулы трапеции.

3. Какие преобразования реализуют стандартные функции с именами StrToFload, StrToInt, FloatToStr, IntToStr?

4. Поясните текст модуля задания 1.

5. Вычисление каких математических величин реализует каждый оператор в процедуре-обработчике события второго задания?

6. Литература

1. Фаронов В.В. Delphi. Программирование на языке высокого уровня. Учебник для вузов. – СПб.: Питер, 2007. – 640 с.

Лабораторная работа №7

Составление, ввод, трансляция, отладка и исполнение программ, реализующих основные матричные операции

1. Цель работы: изучить приемы объектно-ориентированного программирования для реализации основных матричных операций; закрепить полученные знания на конкретных примерах.

2. Основные положения

2.1.Матрицы и основные операции над ними

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

2.1.1. Типы матриц

Матрица – это совокупность таблично упорядоченных чисел или объектов другой природы, расположенных в виде прямоугольной таблицы:

а11

а12

а13

а14

а21

а22

а23

а24

а31

а32

а33

а34

а41

а42

а43

а44


А=

Такая таблица, состоящая из m строк и n столбцов, имеет размер m*n. Числа или любые другие объекты, расположенные на пересечении i-ой строки и j-ого столбца, называют элементами матрицы и обозначают aij. Часто матрица формально обозначается так:

A={aij}, i=1,2,…, m; j=1,2,…,n.

При этом первый индекс i всегда указывает номер строки, а второй j – номер столбца.

Матрицы, элементами которых являются целые или вещественные числа, называют соответственно целыми или вещественными.

Если матрица состоит из одного столбца или одной строки, то она соответственно называется матрицей-столбцом (вектором-столбцом) или матрицей-строкой (вектором-строкой) и сокращенно обозначается: x(x1,x2,…,xm) и a(a1,a2,…,an).

Матрица, количество строк и столбцов которой одинаково и равно n, называется квадратной матрицей порядка n. Совокупность элементов aii(i=1,2,3,…,n) образует главную диагональ квадратной матрицы.

Матрица, все элементы которой вне главной диагонали равны 0, называется диагональной и кратко записывается:

D=diag{d1, d2,…,dn).

Если в диагональной матрице все элементы равны 1, то имеем единичную матрицу n-го порядка, она часто обозначается En.

Квадратная матрица называется верхней (нижней) треугольной, если равны нулю все элементы, расположенные под (над) главной диагональю.