Вычисление определённого интеграла
Способы приближенных вычислений определенных интегралов на ЭВМ. Понятие множества в языке Паскаль, построение конкретного множественного типа. Вычисление таблицы значений функции одной переменной в среде Delphi. Особенности создания справочных систем.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 27.07.2016 |
Размер файла | 407,2 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru
Министерство образования Республики Беларусь
Учреждение образования «Гомельский государственный университет имени Франциска Скорины»
Факультет заочный
Кафедра вычислительной математики и программирования
ОСНОВЫ АЛГОРИТМИЗАЦИИ И ПРОГРАМММИРОВАНИЯ
Курсовая работа
Исполнитель:
студентка группы ПОСз-11
Саманчук Е.Д.
Гомель 2016
ВВЕДЕНИЕ
На практике часто возникает необходимость вычислить определённый интеграл. Если интеграл берётся в алгебраических функциях, то всё в порядке и взять его вручную не представляет труда. А если интеграл не берётся в алгебраических функциях или просто их очень много, то приходится прибегать к помощи компьютерной техники.
Существуют несколько способов вычисления определённых интегралов на ЭВМ, причем абсолютно все эти способы получают лишь приближённые значения:
1 формулы левых прямоугольников;
2 формулы правых прямоугольников;
3 формулы центральных прямоугольников;
4 формулы трапеций;
5 формулы Симпсона (формула парабол);
6 формулы Ньютона.
В курсовом проекте используется данные типа множества.
Понятие множества в языке Паскаль основывается на математическом представлении о конечных множествах: это ограниченная совокупность различных элементов. Для построения конкретного множественного типа используется перечисляемый или интервальный тип данных. Тип элементов, составляющих множество, называется базовым типом.
Также в курсовой работе необходимо создать файл справки. Основу справочной системы составляют темы с пояснительным текстом.
Содержание справочной системы включает список тем, доступных в системе. Каждая тема имеет заголовок и уникальный символьный идентификатор. Дополнительно каждой теме можно поставить в соответствие уникальный индекс темы, который должен быть целым числом.
Для поиска темы в справочной системе служат ключи, содержащие название темы и ссылку на нее. Каждая тема может иметь более одного ключа поиска. Кроме того, один ключ может содержать ссылку на несколько тем. интеграл множество паскаль переменная справочный
Для организации контекстного вызова темы из справочной системы вы можете использовать числовые значения индексов или значения ключа. Употребление идентификаторов тем для контекстного вывода справочной информации не допускается.
Чтобы связать между собой отдельные темы, применяются перекрестные ссылки.
При этом текст, используемый для организации перекрестной ссылки, выделяется зеленым цветом и подчеркиванием.
1. ПРИБЛИЖЕННЫЕ ВЫЧИСЛЕНИЯ ОПРЕДЕЛЕННЫХ ИНТЕГРАЛОВ
1.1 Основные формулы вычисления определенных интегралов
При приближённом нахождении значения определённого интеграла:
1 формула левых прямоугольников:
где yi=f(xi) - значение подынтегральной функции;
xi=a+ih - значение точки;
2 формула правых прямоугольников:
где yi=f(xi) - значение подынтегральной функции;
xi=a+ih - значение точки;
3 формула центральных прямоугольников:
где yi=f(xi) - значение подынтегральной функции;
- значение точки;
4 формула трапеций:
где yi=f(xi) - значение подынтегральной функции;
xi=a+ih - значение точки;
5 формула Симпсона (формула парабол):
где yi=f(xi) - значение подынтегральной функции;
xi=a+ih - значение точки;
- шаг;
6 формула Ньютона (правило ):
где yi=f(xi) - значение подынтегральной функции;
xi=a+ih - значение точки;
- шаг.
1.2 Индивидуальное задание
Написать программу на языке Паскаль (можно и в среде Delphi), реализующую нахождение приближенного значения интеграла (согласно варианту) указанным методом.
Для проверки полученного результата необходимо найти точное значение интеграла (первообразной) и сравнить его с приближенным.
С помощью формулы центральных прямоугольников вычислить интеграл:
с точностью е=0.01.
Текст программы:
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
{ поинтегральная функция }
function F(x: real): real;
var
r: real;
begin
r:=25-x*x;
F:=1/sqrt(r*r*r);
end;
{ первообразная }
function F1(x: real): real;
begin
F1:=x/25/sqrt(25-x*x);
end;
{ процедура вычисления интеграла }
procedure IntegPryam(xn,xk,eps: real; kol: longint; var tk: real);
var
S,tn,h: real;
i: integer;
begin
tn:=F(xn)-F(xk);
{ tn - предыдущие значения интеграла }
{ tk - последующие значения интеграла }
while true do
begin
h:=(xk-xn)/kol;
S:=0;
for i:=0 to kol do
S:=S+F(xn+(i+0.5)*h);
tk:=h*S;
if abs(tk-tn)<eps then exit;
kol:=kol*2; { удваиваем количество разбиений }
tn:=tk;
end;
end;
var
a,b,eps,integrl: real;
n: integer;
begin
write('a, b = ');
readln(a, b);
write('eps = ');
readln(eps);
n:=6; { начальное значение количества разбиений }
IntegPryam(a,b,eps,n,integrl);
writeln('Integral = ', integrl:6:5);
writeln('Tochnoe Znachenie = ', abs(f1(a)-f1(b)):6:5);
readln;
end.
Рисунок 1.1 - Исполнение программы
2. РАБОТА С МНОЖЕСТВАМИ В ЯЗЫКЕ ПАСКАЛЬ
2.1 Тип множество в языке Паскаль
Понятие множества в языке Паскаль основывается на математическом представлении о конечных множествах: это ограниченная совокупность различных элементов. Для построения конкретного множественного типа используется перечисляемый или интервальный тип данных. Тип элементов, составляющих множество, называется базовым типом.
Множественный тип описывается с помощью служебных слов Set of, например:
type M = Set of B;
Здесь М - множественный тип, В - базовый тип.
Пример описания переменной множественного типа:
type
M = Set of 'A'..'D';
var
MS: M;
Принадлежность переменных к множественному типу может быть определена прямо в разделе описания переменных:
var C: Set of 0..7;
Константы множественного типа записываются в виде заключенной в квадратные скобки последовательности элементов или интервалов базового типа, разделенных запятыми, например:
['A', 'C'] [0, 2, 7] [3, 7, 11..14]
Константа вида [ ] означает пустое подмножество. Количество базовых элементов не должно превышать 256. Инициализация величин множественного типа может производиться с помощью типизированных констант:
const seLit: Set of 'A'..'D'= [];
Порядок перечисления элементов базового типа в константах безразличен.
Значение переменной множественного типа может быть задано конструкцией вида [T], где T - переменная базового типа. Например, вполне допустима конструкция:
type T = set of char;
Множество включает в себя набор элементов базового типа, все подмножества данного множества, а также пустое подмножество. Так, переменная Т множественного типа
var T: Set of 1..3;
может принимать восемь различных значений:
[ ] [1] [2] [3] [1,2] [1,3] [2,3] [1,2,3]
К переменным и константам множественного типа применимы операции присваивания(:=), объединения(+), пересечения(*) и вычитания(-):
['A','B'] + ['A','D'] даст ['A','B','D']
['A','D'] * ['A','B','C'] даст ['A']
['A','B','C'] - ['A','B'] даст ['C'].
Результат выполнения этих операций есть величина множественного типа.
К множественным величинам применимы операции: тождественность (=), нетождественность (<>), содержится в (<=), содержит (>=). Результат выполнения этих операций имеет логический тип, например:
['A','B'] = ['A','C'] даст FALSE
['A','B'] <> ['A','C'] даст TRUE
['B'] <= ['B','C'] даст TRUE
['C','D'] >= ['A'] даст FALSE.
Кроме этих операций для работы с величинами множественного типа в языке ПАСКАЛЬ используется операция in, проверяющая принадлежность элемента базового типа, стоящего слева от знака операции, множеству, стоящему справа от знака операции. Результат выполнения этой операции - булевский. Операция проверки принадлежности элемента множеству часто используется вместо операций отношения, например:
'A' in ['A', 'B'] даст TRUE,
2 in [1, 3, 6] даст FALSE.
2.2 Индивидуальное задание
Разработать программу, которая во введенном тексте удваивает все прописные гласные буквы, удваивает все цифры и подсчитывает количество пробелов.
На печать выдать исходный текст, количество пробелов и преобразованный текст.
Текст программы:
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
const
resul='result_';
simvol=['A'..'Z','А'..'Я','0'..'9']; { прописные гласные буквы и цифры }
var
f,g: text;
fn,stroka: string;
ch: char;
i,len,np: integer;
begin
write('FileName = ');
readln(fn);
if not FileExists(fn) then
begin
{ если файл с именем fn не найден }
writeln('''', fn, ''' - NET FILE.');
readln;
exit;
end;
{ вывод исходного текста }
writeln;
writeln('Isxodnii text:');
writeln('------------------------------------------------------------------');
assignfile(f, fn);
reset(f);
while not Eof(f) do
begin
readln(f, stroka);
writeln(''''+stroka+'''');
end;
writeln('------------------------------------------------------------------');
closefile(f);
{ изменение текста }
assignfile(g, resul+fn);
rewrite(g);
reset(f);
np:=0;
while not Eof(f) do
begin
readln(f, stroka);
len:=length(stroka);
i:=1;
while i<=len do
begin
ch:=stroka[i];
if ch=' ' then
Inc(np)
else
if ch in simvol then
begin
insert(ch, stroka, i);
Inc(i);
len:=length(stroka);
end;
Inc(i);
end;
writeln(g, stroka);
end;
closefile(f);
closefile(g);
{ вывод количества пробелов }
writeln;
writeln('Kolichestvo probelov = ', np);
{ вывод измененного текста }
writeln;
writeln('Izmenennii text:');
writeln('------------------------------------------------------------------');
assignfile(g, resul+fn);
reset(g);
while not Eof(g) do
begin
readln(g, stroka);
writeln('''', stroka, '''');
end;
writeln('------------------------------------------------------------------');
closefile(g);
readln;
end.
Рисунок 2.1 - Исполнение программы
3. ВЫЧИСЛЕНИЕ ТАБЛИЦЫ ЗНАЧЕНИЙ ФУНКЦИИ ОДНОЙ ПЕРЕМЕННОЙ В СРЕДЕ DELPHI
3.1 Компоненты TLabel, TEdit, TButton, TMemo, TComboBox, TStringGrid
Компонент метка (TLabel). Он используется для отображения текста, который играет роль метки и не изменяется пользователем. Текст метки задаётся в свойстве Caption. Размер меток TLabel определяется свойством AutoSize, если оно установлено в True, то вертикальные и горизонтальные размеры компонента определяются размером надписи. Если Autosize = false то выравнивание текста внутри компонента определяется свойством Alignment, и позволяет выравнивать текст по левому краю, по правому краю или по центу клиентской области метки.
Свойство WordWrap определяет допустимость переноса слов длинной надписи, превышающей длину компонента, на новую строку. Для осуществления такого переноса необходимо установить свойство WordWrap в True, свойство Autosize в false и сделать высоту компонента такой, чтобы в нем могло разместиться несколько строк. Если WordWrap= false и Autosize= false, то длинный текст, не помещающийся в рамке, просто обрезается.
Компонент окно редактирования (TEdit). Вводимый и выводимый текст содержится в свойстве Text. Выравнивание текста и перенос строк невозможны.
Свойство AutoSize позволяет автоматически подстраивать высоту окна под размер текста. Свойство AutoSelect определяет, будет ли автоматически выделяться весь текст при передаче фокуса в окно редактирования
Свойства SelLength, SelStart, SelText, определяют длину выделенного текста, позицию перед первым символом выделенного текста и сам выделенный текст. Если выделенного текста нет, свойство SelStart определяет текущее положение курсора.
Свойство MaxLength определяет максимальную длину вводимого текста.
Свойство Modified, доступное только во время работы программы, показывает производилось ли редактирование текста в окне.
Свойство passwordchar позволяет превратить окно редактирования в окно ввода пароля. Если в этом свойстве вместо #0 указать другой символ, например, символ *, то при вводе пользователем текста в окне будут появляться именно эти символы, а не те, что вводит пользователь.
Свойство ReadOnly указывает может ли пользователь изменять текст в окне.
Компонент кнопка (TButton). Он представляет собой стандартную кнопку Windows, инициализирующую какое либо действие. Основное с точки зрения внешнего вида свойства кнопки - свойство Caption. Основное событие кнопки - ONClick, возникающее при щелчке на ней. В обработчике этого события записываются операторы, которые должны выполнятся при щелчке пользователя на ней.
Свойство Cancel, если его установить в True, определяет, что нажатие пользователем клавиши Esc будет эквивалентно нажатию на данную кнопку.
Свойство Default определяет, что нажатие клавиши Enter будет эквивалентно нажатию на данную кнопку, даже если она в данный момент не находится в фокусе. Если в момент нажатия клавиши ввода в фокусе находится другая кнопка, то сработает кнопка именно в фокусе.
Свойство ModalResult используется в модальных формах, в обычных формах его значение должно быть равно None. Выполнение метода Click эквивалентно щелчку по кнопке, т.е. вызывает свойство Onclick.
Компонент Текстовая область (TMemo). Главное свойство данного компонента - Lines. В нем хранится список строк, введенных пользователем. Программно заносить строки в это свойство можно так: Memo1.Lines.Add(`строка').
Наличие у текстовой области полос прокрутки задается в свойстве ScrollBars (ssNone, ssHorizontal, ssVertical, ssBoth). При выделении фрагмента текста в текстовой области в свойство SelStart заносится позиция первого выделенного символа, а в свойство SelLength - число выделяемых символов.
Выделенный текст доступен через свойство SelText (тип string). Чтобы очистить содержимое текстовой области, используется метод Clear, чтобы отменить последние изменения - метод Undo.
Компонент поле со списком (TComboBox). Этот компонент представляет собой список с присоединяемым полем, в котором отображается выбранный элемент списка. Это же поле может использоваться для ввода новых элементов. Режим работы данного компонента определяется значением свойства Style.
Максимальное число элементов, одновременно отображаемых в видимой части списка, задаётся в свойстве DropDownCount. Номер текущей выбранной строки хранится в свойстве ItemIndex. В свойстве Text хранится содержимое текущего выбранного элемента.
При работе ComboBox наиболее важными являются 2 события:
1) OnChange - пользователь изменил текст в присоединенном поле;
2) OnDropDown - список раскрывается. Это событие необходимо обрабатывать, если содержимое списка может меняться во время работы программы, в обработчике этого события можно, используя свойство Items, заново сформировать содержимое списка.
Компонент таблица строк (TStringGrid). Этот компонент позволяет работать с текстовой информацией в двумерной таблице, имеющей строки и столбцы. Количество столбцов задаётся в свойстве ColCount, а количество столбцов - в свойстве RowCount.
Основное свойство данного компонента - двумерный массив Cells, позволяющий обращаться к значению ячеек и изменять его. 1-е измерение - номер столбца, а 2-е - номер строки. Нумерация элементов таблицы строк начинается с нуля. Число строк и столбцов, имеющих характер заголовка задается свойствами FixedRows и FixedCols.
Чтобы установить для просмотра нужную область таблицы, необходимо задать номер начальной строки в свойстве TopRow, а номер начального столбца - в свойстве LeftCol.
Чтобы текущая ячейка таблицы выделялась отдельным цветом необходимо подсвойству goDrawFocusSelected свойства Options задать значение True.
Другие подсвойства свойства Options:
1. goEditing - позволяет редактировать текст в ячейках;
2. goTabs - позволяет перемещать между ячейками с помощью клавиши Tab.
Экранные координаты конкретной ячейки задаются с помощью метода CellRect, который, получая в качестве параметров номер столбца и номер строки, возвращает структуру типа Trect с координатами прямоугольника, охватывающего заданную ячейку.
3.2 Индивидуальное задание
Разработать проект вычисления таблицы значений функций одной переменной. Вычисление функции оформить в виде отдельной пользовательской функции.
Предусмотреть обработку возможных ошибок приложения. При делении на ноль, в ячейку StringGrid или в строку Memo должно выводиться соответствующее сообщение. Вывод результатов организовать с помощью компонент StringGrid, Memo.
Для организации правильной работы реализовать сценарий работы с использованием свойств visible и (или) enabled компонент, размещенных на форме.
Для управления работой приложением использовать компоненту КНОПКА (Button или BitBtn).
Функция:
Текст программы:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, StdCtrls, XPMan, Grids, ExtCtrls, Vcl.Imaging.jpeg;
type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
Edit1: TEdit;
XPManifest1: TXPManifest;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Edit2: TEdit;
Edit3: TEdit;
GroupBox2: TGroupBox;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
GroupBox3: TGroupBox;
StringGrid1: TStringGrid;
SpeedButton3: TSpeedButton;
Image1: TImage;
ComboBox1: TComboBox;
Memo1: TMemo;
Label1: TLabel;
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function f1(x:real):real;
begin
f1:=(14*x+5)/(x*x+1);
end;
function f2(x:real):real;
begin
f2:=12+x;
end;
function f3(x:real):real;
begin
f3:=(x*x*x+1)/(4*x+2);
end;
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
code_a,code_b,code_n:integer;
a,b,h:real;
n,i:integer;
x,y1,y2,y3:real;
begin
Val(Edit1.Text, a, code_a);
Val(Edit2.Text, b, code_b);
Val(Edit3.Text, n, code_n);
If (code_a<>0) then
begin
Showmessage('Неправильно введен A');
Edit1.SetFocus;
end
else
If (code_b<>0) then
begin
Showmessage('Неправильно введен B');
Edit2.SetFocus;
end
else
If (code_n<>0) then
begin
Showmessage('Неправильно введен N');
Edit3.SetFocus;
end;
if (code_a=0)and(code_b=0)and(code_n=0) then
begin
GroupBox3.Visible:=true;
if ComboBox1.Text='Memo' then
begin
StringGrid1.Visible:=false;
Memo1.Visible:=true;
end
else if ComboBox1.Text='StringGrid' then
begin
StringGrid1.Visible:=true;
Memo1.Visible:=false;
end
else
begin
ShowMessage('Выберите один из пунктов!!!');
exit;
end;
StringGrid1.Cells[0,0]:='№';
StringGrid1.Cells[1,0]:=' X=';
StringGrid1.Cells[2,0]:=' Y1=';
StringGrid1.Cells[3,0]:=' Y2=';
StringGrid1.Cells[4,0]:=' Y3=';
StringGrid1.RowCount:=n+1;
for i:=1 to n do
StringGrid1.Cells[0,i]:=IntToStr(i);
x:=a;
i:=1;
h:=(b-a)/n;
Memo1.Clear;
Memo1.Lines.Add('Номер Значение X Функция Y1 Функция Y2 Функция Y3');
while x<=b do
begin
StringGrid1.Cells[1,i]:=FloatToStrF(x,ffFixed,5,1);
// Функции
if x=-2 then
begin
y1:=f1(x);
y2:=f2(x);
StringGrid1.Cells[4,i]:='Деление на 0';
StringGrid1.Cells[3,i]:=FloatToStrF(y2,ffFixed,5,5);
StringGrid1.Cells[2,i]:=FloatToStrF(y1,ffFixed,5,5);
Memo1.Lines.Add(IntToStr(i)+' '+FloatToStrF(x,ffExponent,5,2)+ ' '+
FloatToStrF(y1,ffExponent,5,2)+
' '+FloatToStrF(y2,ffExponent,5,2)+
' Деление на ноль ');
end
else
if x=0 then
begin
StringGrid1.Cells[2,i]:='Деление на 0';
y2:=f2(x);
y3:=f3(x);
StringGrid1.Cells[3,i]:=FloatToStrF(y2,ffFixed,5,5);
StringGrid1.Cells[4,i]:=FloatToStrF(y3,ffFixed,5,5);
Memo1.Lines.Add(IntToStr(i)+' '+FloatToStrF(x,ffExponent,5,2)+
' Деление на ноль '+
' '+FloatToStrF(y2,ffExponent,5,2)+' '+
FloatToStrF(y3,ffExponent,5,2));
end
else
begin
y1:=f1(x);
y2:=f2(x);
y3:=f3(x);
StringGrid1.Cells[2,i]:=FloatToStrF(y1,ffFixed,5,5);
StringGrid1.Cells[3,i]:=FloatToStrF(y2,ffFixed,5,5);
StringGrid1.Cells[4,i]:=FloatToStrF(y3,ffFixed,5,5);
Memo1.Lines.Add(IntToStr(i)+' '+FloatToStrF(x,ffExponent,4,2)+
' '+FloatToStrF(y1,ffExponent,4,2)+
' '+FloatToStrF(y2,ffExponent,4,2)+
' '+FloatToStrF(y3,ffExponent,4,2));
end;
x:=x+h;
inc(i);
end;
end;
end;
procedure TForm1.SpeedButton3Click(Sender: TObject);
begin
Edit1.Clear;
Edit2.Clear;
Edit3.Clear;
GroupBox3.Visible:=false;
end;
end.
Рисунок 3.1 - Исполнение программы (Вывод значения в StringGrid)
Рисунок 3.2 - Исполнение программы (Вывод значения в Memo)
4. СОЗДАНИЕ СПРАВОЧНОЙ СИСТЕМЫ
Справочная система по принципу создания напоминает составление программы на паскале. Сначала готовится исходный текст, который содержит специальные управляющие символы.
Затем этот текст включается в проект, который компилируется (переводится) в файл в формате .CHM.
Данный файл можно просматривать в Windows XP и включать в свои программы.
Задание: Создать справочный файл о своей предметной области, содержащий: как минимум 5-6 разделов, различного уровня вложенности; несколько заголовков, ключевых слов.
В разделах должны присутствовать ссылки на другие разделы, комментарии во всплывающих окнах.
Разработать небольшое приложение, использующее подготовленный файл справки.
Файл справки должен содержать сведения об общежитии.
5. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
1) Операторы цикла While, Repeat
Оператор цикла While с предусловием выполняет действия заранее неизвестное число раз. Выход из цикла осуществляется, если некоторое логическое выражение или его результат окажется ложным. Так как верность логического выражения проверяется в начале, тело цикла может не выполнится ни одного разу.
Структура цикла с предусловием:
WHILE <условие> DO
begin
<тело цикла>
end;
- логическое выражение, истинность которого проверяется вначале выполнения циклического оператора;
- любые выполняемые операторы языка.
Порядок выполнения цикла:
Пока условие истинно выполняется тело цикла. Как только условие становится ложно выполнение цикла прекращается.
Рисунок 5.1.1 - Блок - схема цикла с предусловием
Примечание: в прямоугольных блоках показано любое действие, которое выполняется в цикле или после него (шаг цикла), в овалах - начало или конец всей программы или её части. Главную роль в данной блок - схеме играет её центральная часть.
Пример:
Задача: вычислить сумму ряда 1+1.5+2+2.5+3+3.5+ .. + 30
program example-while;
var
sum:real;
n:real;
BEGIN
sum:=0;
n:=1;
while n <= 30 do
begin
sum:=sum+n;
n:=n+0.5;
end;
writeln('Сумма равна: ',sum);
END.
Оператор Repeat аналогичен оператору цикла с предусловием, но отличается от него тем, что проверка условия производится после выполнения тела (действий) цикла. Это обеспечивает его выполнение хотя бы один раз в отличие от ранее разобранных циклов.
Следует обратить внимание на то, что данный оператор цикла предполагает наличие нескольких операторов в теле цикла, то есть можно выполнять несколько действий, поэтому служебные слова Begin и End не нужны.
Последовательность операторов, входящих в тело цикла выполняется один раз, после чего проверяется соблюдение условия, записанного следом за служебным словом Until. Если условие не соблюдается, цикл завершается. В противном случае - тело цикла повторяется ещё раз, после чего снова проверяется соблюдение условия.
Рисунок 5.1.2 - Блок - схема цикла с постусловием
Формат записи, структура цикла:
REPEAT
<тело цикла>
UNTIL <условие>;
Пример:
Program test2;
Var b:Real;
Begin
b:=100;
Repeat b:=b/2;
Until b<10;
Writeln(b:0:2);
End.
2) Форма. Добавление новой формы. Программы с многими формами
В Windows основной элемент пользовательского интерфейса - форма. В Delphi почти каждый проект имеет по крайней мере одно окно - главное окно приложения. Все окна в Delphi основаны на объекте TForm.
Формы имеют свои свойства, события и методы, при помощи которых Вы можете управлять видом и поведением формы. Форма, это обычный компонент Delphi, но в отличие от других, её нет на панели компонентов. Обычно форма создаётся при создании нового проекта (File | New Application). Вновь созданная форма будет главной формой приложения.
Рисунок 5.2.1 - Создание новой формы
Рисунок 5.2.2 - Удаление формы
Рисунок 5.2.3 - Автосоздаваемые и доступные формы, выбор главной формы
Свойство |
Описание |
|
Active |
Boolean, возвращает true,если форма активна. Свойство только для чтения. |
|
ActiveControl |
Показывает или задает компонент, который находится в фокусе на данной форме. |
|
AlphaBlend |
Boolean, при значении true использует прозрачность формы. |
|
AlphaBlendValue |
Измеряет степень прозрачности формы от 0 до 255. |
|
AutoScroll |
Boolean, значение true по умолчанию, задает будут ли появляться полосы прокрутки. |
|
BorderIcons |
Определяет кнопки в заголовке окна формы. |
|
BorderStyle |
Определяет стиль бордюра формы и возможность пользователя изменять размер формы. |
|
Canvas |
Канва формы, позволяющая рисовать на ней изображения. Используется для OnPaint формы. |
|
ClientHeight |
Высота клиентской области формы в пикселях. |
|
ClientRect |
Определяет клиентскую область формы. |
|
ClientWidth |
Горизонтальный размер клиентской области формы в пикселях. |
|
FormStyle |
Стиль формы. |
|
HelpFile |
Файл справки, связанный с данной формой. |
|
HorzScrollBar |
Горизонтальная полоса прокрутки, появляется автоматически при значении true. |
|
Menu |
Определяет объект главного меню формы. |
|
Position |
Определяет размер и положение окна при запуске. |
|
PrintScale |
Определяет опции масштабирования изображения при печати |
|
VertScrollBar |
Вертикальная полоса прокрутки, появляется автоматически при значении true. |
|
Visible |
Определяет видимость формы, по умолчанию равно false. |
|
WindowState |
Определяет состояние окна (нормальное, свернутое, развернутое). |
Таблица 5.2.1 - Основные свойства класса TCustomForm
Дополнительные формы в проекте создаются через File | New Form.
Как и любой другой компонент (объект) форма имеет свои методы и реагирует на события.
OnCreate событие возникает при создании TForm и только один раз. При создании формы (у каторой свойство Visible установлено в True), события произойдут в следующем порядке: OnCreate, OnShow, OnActivate, OnPaint. В обработчике события OnCreate можно сделать какие-либо инициализационные действия, однако, любые объекты, созданные в OnCreate будут уничтожены в событии OnDestroy.
OnShow событие генерируется, когда форма станет видимой. OnShow вызывается сразу перед тем, как форма станет видимой. Это событие случается, если установить свойство формы Visible в True, либо при вызове методов Show или ShowModal.
OnActivate событие генерируется, когда форма становится активной, тоесть когда форма получает фокус ввода. Это событие можно использовать для того, чтобы сменить элемент формы, который должен получить фокус.
OnPaint, OnResize события вызываются каждый раз, когда форма изначально создаётся. При этом OnPaint вызывается каждый раз, когда какому-нибудь элементу формы необходимо перерисоваться (это событие можно использовать, если необходимо при этом рисовать на форме что-то особенное).
Когда форма создана и все её элементы ждут своих событий, чтобы обрабатывать их, жизнь формы продолжается до тех пор, пока кто-нибудь не нажмёт крестик в верхнем правом углу формы!
При уничтожении формы, события генерируются в следующем порядке:
... OnCloseQuery -> OnClose -> OnDeactivate -> OnHide -> OnDestroy
OnCloseQuery если попытаться закрыть форму при помощи метода Close либо другим доступным способом (Alt+F4 либо через системное меню), то сгенерируется событие OnCloseQuery. Таким образом, это событие можно использовать, чтобы предотвратить закрытие формы. Обычно, событие OnCloseQuery используется для того, чтобы спросить пользователя - уверен ли он (возможно в приложении остались несохранённые данные).
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if MessageDlg('Really close this window?', mtConfirmation, [mbOk, mbCancel], 0) = mrCancel then
CanClose := False;
end;
Обработчик события OnCloseQuery содержит переменную CanClose, которая определяет, можно ли форме закрыться. Изначальное значение этой переменной True. Однако в обработчике OnCloseQuery можно установить возвращаемое значение CloseQuery в False, чтобы прервать выполнение метода Close.
OnClose Если OnCloseQuery вернул CanClose=True (что указывает на то, что форма должна быть закрыта), то будет будет сгенерировано событие OnClose. Событие OnClose даёт последний шанс, чтобы предотвратить закрытие формы. Обработчик OnClose имеет параметр Action со следующими четырьмя возможными значениями:
*caNone. Форме не разрешено закрыться. Всё равно, что мы установим CanClose в False в OnCloseQuery.
*caHide. Вместо закрытия, форма будет скрыта.
*caFree. Форма будет закрыта, и занятые ей ресурсы будут освобождены.
*caMinimize. Вместо закрытия, форма будет минимизирована. Это значение устанавливается поумолчанию у дочерних форм MDI.
Замечание: Когда пользователь выключает Windows, то будет вызвано OnCloseQuery, а не OnClose. Если мы не хотим, чтобы Windows завершила свою работу, то поместите свой код в обработчик события OnCloseQuery, хотя CanClose=False не сделает, того, что сделано здесь.
OnDestroy После того, как метод OnClose будет обработан и форма будет закрыта, то будет вызвано событие OnDestroy. В OnCreate обычно делаются действия, противоположные тем, которые проделывались в OnCreate, то есть уничтожение созданных объектов и освобождение выделенной памяти.
Естественно, что когда главная форма проекта будет закрыта, то и приложение будет завершено.
Событие |
Описание |
|
OnActivate |
Cобытие наступает, когда форма становится активной, т.е. получает фокус, например при щелчке на ней. |
|
OnClose |
Событие наступает при закрытии формы после события OnCloseQuery. |
|
OnCloseQuery |
Первое событие при закрытии формы. В его обработчике можно прервать закрытие. |
|
OnCreate |
Первое событие при создании формы. В его обработчике можно настроить форму и ее компоненты. |
|
OnDiactivate |
Событие наступает когда форма перестает быть активной. |
|
OnDestroy |
Последнее событие при закрывании формы и удалении ее из памяти. |
|
OnHelp |
Событие наступает при запросе пользователем помощи. |
|
OnHide |
Событие наступает перед тем, как форма становится невидимой. |
|
OnPaint |
Событие наступает перед прорисовкой формы. |
|
OnShortCut |
Событие наступает при нажатии клавиши пользователем |
|
OnShow |
Наступает перед тем, как форма становится видимой. |
Таблица 5.2.2 - Основные свойства класса TCustomForm
ЗАКЛЮЧЕНИЕ
В ходе выполнения курсовой работы были изучены основные алгоритмы программирования квадратурных формул вычисления определенных интегралов, изучены основные алгоритмы работы со структурированным типом данных: множества, знакомство с основными свойствами формы, разработка в среде Delphi приложения для вычисления таблицы значений функций одной переменной, создание простейшей справочной системы, применение на практике полученных знаний и умений.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1 Сурков, К. Программирование в среде Delphi 2.0 / К. Сурков, Д. Сурков, А. Вальвачев. - Мн.: ООО «Попурри», 1997. - 640 с.
2 Сухарев, М. В. Основы Delphi. Профессиональный подход / М. В. Сухарев. - СПб.: Наука и техника, 2004. - 614 с.
3 Фаронов, В. В. Delphi 5. Учебный курс / В.В. Фаронов - М.: «Нолидж», 2000. - 608 с.
4 Бородич, Ю.С. Паскаль для персональных компьютеров: справ. пособие / Ю.С. Бородич, А.Н. Вальвачев, А.И. Кузьмич - Мн.: Выш. шк.: БФ ГИТМП “НИКА”, 1991. - 365 с.
5 Зуев, Е.А. Программирование на языке TURBO PASCAL 6.0, 7.0 / Е.А. Зуев. - М.: Радио и связь, 1993. - 384 с.
6 Программирование на языке Pascal: практическое пособие для студентов математических специальностей университета: В 2ч. Ч.2./ Е.А.
7 Ружицкая [и др.]. - Гомель: ГГУ им. Ф.Скорины, 2005. - 92 с.
8 Бобровский, С. И. Delphi7: учебный курс / С. И. Бобровский. - СПб.: Питер, 2008. - 736 с;
9 Культин, Н. Б. Основы программирования в Delphi7 / Н. Б. Культин. - СПб.: БХВ-Петербург, 2003. - 638 с.
Размещено на Allbest.ru
...Подобные документы
Методы и алгоритмы вычисления определенных интегралов: метод трапеций и метод Симпсона (метод парабол). Оформление функции вычисления заданного определённого интеграла на Visual Basic 6.0. Программный код функции. Создание приложения для вычисления.
курсовая работа [483,6 K], добавлен 25.06.2014Вычисление значения интеграла функции, заданной графически. Постановка задач. Составление таблицы значений функции, заданной в виде разложения в ряд. Математическая формулировка. Численный метод решения. Схемы алгоритмов. Инструкции пользователям.
курсовая работа [56,3 K], добавлен 05.07.2008История развития программы Паскаль. Типы переменных. Значение переменной для прекращения вычислений. Использование операторов цикла, процедур и функций. Ввод значений М-конца цикла и произведение вычислений по расчётной формуле. Форматированный вывод.
контрольная работа [45,9 K], добавлен 13.07.2013Определение возможностей математического пакета и изучение методов вычисления выражений в Mathcad. Возможности построения графиков функций одной переменной. Просмотр и способы построения графика функции одного аргумента и участков двухмерных графиков.
контрольная работа [384,8 K], добавлен 06.03.2011Решение задач с помощью языка программирования Delphi: вычисление значения функции Y от X; систем двух уравнений; прогрессий; последовательностей; вычисление числа с определенной точностью; перевод числа из десятичной в восьмеричную систему счисления.
отчет по практике [83,8 K], добавлен 08.06.2010Особенности среды визуального проектирования Borland Delphi 7.0. Этапы разработки программы и составления блок-схемы алгоритмов. Способы вычисления кусочно-заданной функции одной переменной. Рассмотрение компонентов среды Delphi, ее предназначение.
контрольная работа [703,8 K], добавлен 24.09.2012Формулирование и создание программы по вычислению определенного интеграла по формуле трапеций с тремя десятичными знаками и по формуле Симпсона. Выбор Delphi как программного средства разработки программы. Создание алгоритма и листинг программы.
курсовая работа [990,9 K], добавлен 15.06.2009MPI - библиотека передачи сообщений на языке программирования C/C++, ее переносимость, стандартизация, эффективная работа, функциональность. Форматы фактических вызовов MPI. Метод прямоугольников для приближенного вычисления определенного интеграла.
курсовая работа [286,0 K], добавлен 20.06.2012Сравнение центрального и графического процессора компьютера в параллельных расчётах. Пример применения технологии CUDA для неграфических вычислений. Вычисление интеграла и сложение векторов. Технические характеристики ПК, применяемого для вычислений.
курсовая работа [735,9 K], добавлен 12.07.2015Особенности применения компьютерных программ Pascal, Excel, MathCAD и Delphi для вычисления значения функции y(x) с заданным промежутком и шагом. Виды результатов вычислений, их сравнение и вывод. Изображение блок-схемы алгоритма решения задания.
контрольная работа [760,0 K], добавлен 08.03.2011Математические возможности Mathcad и Microsoft Excel. Преобразование алгебраических выражений. Вычисление значения функции. Решение уравнений и систем. Вычисление значения интеграла, производных и пределов. Построение графиков функций. Работа с матрицами.
курсовая работа [559,5 K], добавлен 15.07.2012Особенности программирования на языке Паскаль в среде Турбо Паскаль. Линейные алгоритмы, процедуры и функции. Структура данных: массивы, строки, записи. Модульное программирование, прямая и косвенная рекурсия. Бинарный поиск, организация списков.
отчет по практике [913,8 K], добавлен 21.07.2012Разработка различных программ для вычисления X и Y по формуле, для вычисления интеграла, для вычисления таблицы значений функции и для вычисления элементов вектора. Составление блок-схемы программы. Ввод значений, описание переменных и условия расчета.
контрольная работа [148,1 K], добавлен 08.11.2013Особенности метода численного интегрирования функции одной переменной. Замена на каждом элементарном отрезке подынтегральной функции на многочлен первой степени (линейную функцию). Разработка алгоритма программы, ее листинг. Пример работы программы.
контрольная работа [217,9 K], добавлен 14.07.2012Перевод числа из десятичной системы счисления в двоичную. Результат выполнения в TURBO PASKAL заданных функций и операций. Программа вычисления значений функции на языке PASKAL, блок-схема. Вычисление суммы и произведения всех элементов массива.
контрольная работа [66,6 K], добавлен 15.02.2013Математическое описание, алгоритм и программа вычисления определенного интеграла методом трапеций. Расчет n-значений исследуемой функции и вывод их в виде таблицы. Технические и программные средства. Входные и выходные данные, функциональное назначение.
курсовая работа [21,0 K], добавлен 03.01.2010Способы и методы нахождения значения определённого интеграла. Программные средства языка C. Программные средства языка Pascal (версия 7.0). Алгоритм программы вычисления определённого интеграла. Тестирование программы. Обработка результатов измерений.
курсовая работа [2,5 M], добавлен 01.06.2010Метод хорд решения нелинейных уравнений. Вычисление интеграла методом Симпсона. Процесс численного решения уравнения. Окно программы расчета корней уравнения методом хорд. Алгоритм вычисления интеграла в виде блок-схемы. Выбор алгоритма для вычислений.
курсовая работа [832,6 K], добавлен 24.07.2012Вычисление определенных интегралов методом Симпсона. Функциональная схема программного комплекса. Реализация функции разбора произвольно заданных математических функций. Методика сохранения графика в графический файл. Интерфейс программного комплекса.
курсовая работа [1,7 M], добавлен 15.06.2009Понятие и свойства лингвистической переменной, ее разновидности. Основы теории приближенных рассуждений. Нечеткие системы логического вывода с одной и несколькими входными переменными. Принципы нечеткого моделирования, вычисление уровней истинности.
презентация [152,7 K], добавлен 29.10.2013