Место Delphi в современном программировании
СОДЕРЖАНИЕ
ВВЕДЕНИЕ 3
1. ТЕОРЕТИЧЕСИЙ РАЗДЕЛ 4
1.1 Основные характеристики языка 4
1.1.1 Общая характеристика Delphi. 4
1.1.2 Место Delphi в современном программировании. 4
1.2 Численное интегрирование 5
1.2.1 Метод прямоугольников 6
1.2.2 Метод трапеций 6
1.2.3 Метод парабол (метод Симпсона) 7
1.2.4 Метод Боде 7
1.2.5 Метод Уэддля 7
2. ПРОЕКТНАЯ ЧАСТЬ 8
2.1. Постановка задачи 8
2.3. Блок-схемы подпрограмм 9
2.3.1. Метод прямоугольников 9
2.3.2. Метод трапеций 10
2.3.3. Метод парабол (Симпсона) 11
2.3.4. Метод Бодэ 12
2.3.5. Метод Уэдлла 12
2.4. Разработка интерфейса 13
3. ЭКСПЕРИМЕНТАЛЬНАЯ ЧАСТЬ 15
3.1. Тестирование программы 15
ЗАКЛЮЧЕНИЕ 18
СПИСОК ЛИТЕРАТУРЫ 19
Приложение 1. Листинг программы. 20
ВВЕДЕНИЕ
Появление
и непрерывное
В настоящее время можно говорить, что появился новый способ теоретического исследования сложных процессов, допускающих математическое описание, - вычислительный эксперимент, т.е. исследование естественнонаучных проблем средствами вычислительной математики. Разработка и исследование вычислительных алгоритмов, и их применение к решению конкретных задач составляет содержание огромного раздела современной математики - вычислительной математики.
Численные методы дают приближенное решение задачи. Это значит, что вместо точного решения и (функции или функционала) некоторой задачи мы находим решение у другой задачи, близкое в некотором смысле (например, по норме) к искомому. Основная идея всех методов - дискретизация или аппроксимация (замена, приближение) исходной задачи другой задачей, более удобной для решения на ЭВМ, причем решение аппроксимирующей задачи зависит от некоторых параметров, управляя которыми, можно определить решение с требуемой точностью. Например, в задаче численного интегрирования такими параметрами являются узлы и веса квадратурной формулы. Далее, решение дискретной задачи является элементом конечномерного пространства.
Численное интегрирование (историческое название: квадратура) - вычисление значения определённого интеграла (как правило, приближённое), основанное на том, что величина интеграла численно равна площади криволинейной трапеции, ограниченной осью абсцисс, графиком интегрируемой функции и отрезками прямых, которые являются пределами интегрирования.
Необходимость
применения численного интегрирования
чаще всего может быть вызвана
отсутствием у первообразной
функции представления в
- ТЕОРЕТИЧЕСИЙ РАЗДЕЛ
- Основные характеристики языка
- Общая характеристика Delphi.
В настоящее время программирование
бурно развивается, как с точки зрения
расширения круга решаемых им задач, так
и с точки зрения существенного усложнения
используемых в программировании технологий
Причем особо необходимо отметить немалые
размеры разрабатываемы программных продуктов.
Все это требует максимального упрощения
и ускорения процесса разработки приложений
и использования ранее реализованных
программных фрагментов.
Такие требования к современному программированию
привели к созданию многочисленных RAD-систем
(от англ. RAD — Rapid Application Development — быстрая
разработка приложений), представляющих
собой интегрированные среды разработчика,
включающие в себя:
- средства быстрого и удобного построения
программ, в том числе визуального;
- встроенные компиляторы и отладчики;
- системы коллективной разработки проектов
и т.д.
Одной из таких RAD-систем является
Delphi. Итак, Delphi — это объектно-ориентированная
среда для визуального проектирования
Windows приложений с развитыми механизмами
повторного использования программного
кода. Основным конкурентом Delphi является
среда разработк Microsoft Visual C++, имеющая свои
преимущества и недостатки, однако являющаяся
более популярной, в основном, в силу того,
что разработана именно фирмой Microsoft Существенной
чертой Delphi является компонентная модель
разработки программных продуктов. Суть
модели заключается в поддержке системой
постоянно расширяемого набора объектных
компонентов, из которых и строится программа.
Компоненты в Delphi просты для использования
и развития, как результат сокрытия значительной
части той структуры программы, которая
близка к взаимодействию с операционной
системой. Таким образом, для создания
в Delphi несложных программных продуктов
совершенно не обязательно понимать внутреннюю
структуру Windows-приложения, получаемого
после разработки в Delphi. Достаточно просто
уметь работать с некоторыми компонентами,
поставляемыми вместе со средой разработчика.
При этом начать работу со средой можно
практически без предварительного ознакомления,
а написание первого приложения не потребует
углубления в особенности системы. Этому
отчасти способствует удобный интерфейс
среды разработчика, не перегруженный
излишними вопросами к разработчику.
Однако такой подход совершенно неприемлем
для серьезного программирования, и, рано
или поздно, придется освоить и основы
программирования под ОС Windows, и серьезно
изучить саму среду разработки Delphi, а также
возможности, которые она предоставляет.
Кроме того, конечно же, для создания качественных
программных продуктов необходимо глубокое
понимание компонентной модели.
- Место Delphi в современном программировании.
Наиболее
существенный отрыв Delphi от ближайших аналогов
состоит в действительно быстрой разработке
приложений, обладающих сложным пользовательским
интерфейсом, особенно имеющим сильные
взаимосвязи между элементами управления,
расположенными в окнах программы. Также
Delphi предлагает довольно мощный набор
компонентов для работы с базами данных.
Причем иерархия компонентов для работы
с БД организована таким образом, что практически
неважно, какой именно базой данных пользуется
приложение — это может быть и локальная
БД и промышленный сервер, типа Oracle или
MS SQL Server. Существенным преимуществом Delphi
в этой области является возможность управления
базами данных на логическом уровне, соответствующем
понятиям самих баз данных, без использования
низкоуровневых запросов к драйверам.
Такие возможности Delphi обусловили ее широкую
применяемость при разработке АСУП —
автоматизированных систем управления
предприя-тиями. Однако это не единственная
область применения, так как возможности
Delphi не ограничиваются вышеперечисленными.
Delphi является языком программирования
широкого назначения и позволяет разработать
программный продукт любой сложности
для любой области. Даже если какие-либо
возможности и не поддерживаются напрямую,
то этот недостаток может быть исправлен
добавлением соответствующих компонентов
в систему. Такой подход касается, например,
технологии DirectX, не поддерживаемой Delphi
в ее исходной комплектации, но существуют
компоненты для использования DirectX, которые
легко интегрируются в среду разработки.
В любом случае, подпрограммы, реализованные
в других Windows языках программирования,
могут быть использованы в Delphi через механизм
динамически компонуемых библиотек (от
англ. Dynamic Link Library — DLL — Динамически компонуемая
библиотека). Заметим, что многие системные
библиотеки Windows изначально подключены
к Delphi, а вызов функций из них ничем не
отличается от использования обычных
библиотек Pascal.
С появлением среды разработки Kylix
под операционную систему Linux, полностью
соответствующую Delphi за исключением некоторых
аспектов, связанных с различиями в технологиях,
используемых в этих операционных системах,
часть приложений, написанных в Delphi, стала
переносимой под Linux, что открывает еще
более широкие возможности этой среды
разработки.
- Численное интегрирование
Задача численного интегрирования состоит в замене исходной подинтегральной функции f(x), для которой трудно или невозможно записать первообразную в аналитике, некоторой аппроксимирующей функцией φ(x). Такой функцией обычно является полином (кусочный полином)
То есть:
, где
– априорная погрешность
метода на интервале интегрирования, а r(x) – априорная погрешность метода на отдельном шаге интегрирования.
Кратко рассмотрим основные методы численного интегрирования.
- Метод прямоугольников
Метод прямоугольников получается при замене подынтегральной функции на константу. В качестве константы можно взять значение функции в любой точке отрезка . Наиболее часто используются значения функции в середине отрезка и на его концах. Соответствующие модификации носят названия методов средних прямоугольников, левых прямоугольников и правых прямоугольников. Формула для приближенного вычисления значения определённого интеграла методом прямоугольников имеет вид
,
где , или , соответственно.
- Метод трапеций
Если функцию на каждом из частичных отрезков аппроксимировать прямой, проходящей через конечные значения, то получим метод трапеций.
Площадь трапеции на каждом отрезке:
.
Погрешность аппроксимации на каждом отрезке:
,
где
.
Полная формула трапеций в случае деления всего промежутка интегрирования на отрезки одинаковой длины h:
, где
Погрешность формулы трапеций:
, где
- Метод парабол (метод Симпсона)
Использовав
три точки отрезка
.
Если разбить интервал интегрирования на 2N равных частей, то имеем
,
где .
- Метод Боде
Пусть значения функции d в точках равномерно распределенных по , так что , , ...,
Составная формула Боде имеет вид:
- Метод Уэддля
Метод Уэддля позволяет значениям функции быть в таблице на точках равномерно распределенных(отделенных) , так что , , ....
Затем метод задан как формула Ньютона-Котеса
- ПРОЕКТНАЯ ЧАСТЬ
- Постановка задачи
Содержательная задача:
Разработать приложение для Windows в среде Delphi для вычисления определенных интегралов с заданной точностью следующими методами:
- Прямоугольников;
- Трапеций;
- Парабол(Симпсона);
- Бодэ;
- Уэдлла;
Специальные требования:
- Исходные данные для тестирования приложения подготовить в текстовых файлах;
- Результаты тестирования представить в элементах диалоговых форм;
- Каждый метод вычисления с заданной точностью оформить в виде подпрограммы. Включить все подпрограммы в модуль, не связанный с формой.
- Описание входных данных
Входные данные предствлены в виде текстовых файлов, содержащих описание подынтегральной функции
- Блок-схемы подпрограмм
- Блок-схемы Метод прямоугольников
- Метод трапеций
- Метод парабол (Симпсона)
- Метод Бодэ
- Метод Уэдлла
- Разработка интерфейса
Рисунок 1 – Главная форма программы
Рисунок 2 – Форма «о программе»
|
№ |
Объект |
Наименование свойств объекта |
Значение свойства объекта |
Главная форма | |||
1 |
Form1 |
Caption |
Вычисление интеграла |
2 |
btn1 |
Caption |
Применить метод |
3 |
btn2 |
Caption |
Очистить значение |
4 |
btn3 |
Caption |
Очистить фоpму |
5 |
cht1 |
Button2 |
Выход |
6 |
digOpen1 |
FilterName |
Текстовые файлы |
7 |
digOpen1 |
Filter |
*txt |
8 |
digSave1 |
FilterName |
Текстовые файлы |
9 |
digSave1 |
Filter |
*txt |
10 |
Lbl1 |
Caption |
Введите верхнюю границу |
11 |
Lbl2 |
Caption |
Введите нижнюю границу |
11 |
Lbl3 |
Caption |
Введите точность |
12 |
Lbl4 |
Caption |
Введите количество шагов |
13 |
Mm1 |
Items |
Файл, Открыть, Сохранить, Выход, о программе |
14 |
Rg1 |
Caption |
Выберите способ решения |
15 |
Rg1 |
Items |
Метод прямоугольников Метод парабол(Симпсона) Метод трапеций Метод Бодэ Метод Уэдлла |
Форма «о программе» | |||
1 |
Form2 |
Caption |
О программе |
2 |
Lbl1 |
Caption |
Курсовая работа по дисциплине "Программирование на ЯВУ" Вариант №9 Тема:"Численное интеграрование" |
3 |
Lbl2 |
Caption |
Выполнила студентка группы ВСМ-2-10 |
Таблица 1 – Свойства объектов
- ЭКСПЕРИМЕНТАЛЬНАЯ ЧАСТЬ
- Тестирование программы
Тестирование оценивает корректность выполнения приложения БД. Программа тестируется с целью обнаружения ошибок, а также с целью проверки соответствия всем требованиям поставленной задачи.
Тест №1
Входные данные 2
Эталон результата =0,33333
Результат программы представлен на рисунке 3.
Рисунок 3– вычисление 2dx
Тест №2
Входные данные dx
Эталон результата =0,0347097
Результат программы представлен на рисунке 4.
Рисунок 4– вычисление dx
Тест №3
Входные данные dx
Эталон результата =0,535017
Результат программы представлен на рисунке 5.
Рисунок 5– вычисление dx
ЗАКЛЮЧЕНИЕ
Проблема
повышения качества вычислений, как
несоответствие между желаемым и
действительным, существует и будет
существовать в дальнейшем. Ее решению
будет содействовать развитие информационных
технологий, которое заключается
как в совершенствовании
Итогом работы можно считать созданную функциональную модель реализации численного интегрирования функции двух переменных. Созданная функциональная модель и ее программная реализация могут служить органической частью решения более сложных задач.
СПИСОК ЛИТЕРАТУРЫ
- Численное интегрирование [Электронный ресурс] - Режим доступа: http://mathworld.wolfram.com/
- Дьяконов В.П. Справочник по расчетам на микрокалькуляторах М.: Наука, Гл. ред. физ-мат литературы, 1985. -224 с.
- Л. Залогова Разработка Паскаль-компилятора М.:Бином. Лаборатория знаний , 2007. -184 с.
- Васильев Ф.П. Численные методы решения экстремальных задач. [Текст] / Ф.П. Васильев - М.: Наука, 2002. - 415с.
Приложение 1. Листинг программы.
program ProjectKurs;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
evalcomp in 'evalcomp.pas',
Integration in 'Integration.pas',
Unit2 in 'Unit2.pas' {Form2};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.Run;
end.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Menus, evalcomp, Integration, TeEngine,
Series, TeeProcs, Chart;
type
TForm1 = class(TForm)
dlgOpen1: TOpenDialog;
rg1: TRadioGroup;
btn1: TButton;
mmo1: TMemo;
mm1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
dlgSave1: TSaveDialog;
N5: TMenuItem;
edt1: TEdit;
edt2: TEdit;
lbl1: TLabel;
lbl2: TLabel;
cht1: TChart;
fstlnsrsSeries1: TFastLineSeries;
lbl3: TLabel;
edt3: TEdit;
lbl4: TLabel;
edt4: TEdit;
btn2: TButton;
btn3: TButton;
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure btn1Click(Sender: TObject);
procedure edt1KeyPress(Sender: TObject; var Key: Char);
procedure edt2KeyPress(Sender: TObject; var Key: Char);
procedure edt3KeyPress(Sender: TObject; var Key: Char);
procedure edt4KeyPress(Sender: TObject; var Key: Char);
procedure changeMetod(Sender: TObject);
procedure btn2Click(Sender: TObject);
procedure btn3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2;
var
formula:string;
{$R *.dfm}
procedure TForm1.changeMetod(Sender: TObject);
begin
case (rg1.ItemIndex)of
4:
begin
edt3.Visible:=False;
lbl3.Visible:=False;
edt4.Visible:=True;
lbl4.Visible:=True;
end
else
begin
edt4.Visible:=False;
lbl4.Visible:=False;
edt3.Visible:=True;
lbl3.Visible:=True;
end;
end;
end;
procedure TForm1.N2Click(Sender: TObject); //загрузка из текстового файла
begin
if dlgOpen1.Execute then
mmo1.Lines.LoadFromFile(
formula:=mmo1.Lines.Text;
end;
procedure TForm1.N3Click(Sender: TObject); //сохранение результатов в текстовой файл
var
ext: String;
begin
ext:='.txt';
if dlgSave1.Execute then
mmo1.Lines.SaveToFile(
end;
procedure TForm1.N4Click(Sender: TObject); //закрытие программы
begin
Form1.Close
end;
procedure TForm1.N5Click(Sender: TObject); //вызов формы “о программе”
begin
if(not Assigned(Form2))then
Form2:=TForm2.Create(Self);
Form2.Show;
end;
Function StringIsEmpty (S :String) :Boolean; //проверка на данные
Var
N :Integer;
Begin
Result:=FALSE;
For N:=1 To Length(S) Do
If S[N]<>' 'Then
Begin
Result:=TRUE;
Break;
End
End;
procedure TForm1.btn1Click(Sender: TObject);
var x, y, g:real;
begin
if(StringIsEmpty(edt2.Text) and StringIsEmpty(edt1.Text) and (StringIsEmpty(edt3.Text) or StringIsEmpty(edt4.Text)) and StringIsEmpty(formula) and StringIsEmpty(mmo1.Text) ) then
begin
mmo1.Lines.Add('--------------
case rg1.ItemIndex of
0:
begin
mmo1.Lines.Add('a='+edt2.Text+
mmo1.Lines.Add('Метод прямоугольников');
mmo1.Lines.Add('int'+formula+(
end;
1:
begin
mmo1.Lines.Add('a='+edt2.
mmo1.Lines.Add('Метод парабол');
mmo1.Lines.Add('int '+formula+('dx')
+'='+ FloatToStr(SimpsonInt(
end;
2:
begin
mmo1.Lines.Add('a='+edt2.
mmo1.Lines.Add('Метод трапеций');
mmo1.Lines.Add('int '+formula+('dx')
+'='+ FloatToStr(TrapezeInt(
end;
3:
begin
mmo1.Lines.Add('a='+edt2.
mmo1.Lines.Add('Метод Бодэ');
mmo1.Lines.Add('int '+formula+('dx')
+'='+ FloatToStr(BodeInt(
end;
4:
begin
mmo1.Lines.Add('a='+edt2.
mmo1.Lines.Add('Метод Уэддля');
mmo1.Lines.Add('int '+formula+('dx')
+'='+ FloatToStr(UeddlsInt(
end;
else
Application.Messagebox('
end;
cht1.SeriesList[0].clear;
g:=0.01;
x:=0;
while (x<=1) do // Начинаем построение графика функции у=ln(х+1).
begin
y:=returnY(x, formula);
x:=x+g;
cht1.SeriesList[0].AddXY(x,y,'
end;
end
else
Application.Messagebox('
end;
procedure TForm1.edt1KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
'0'..'9': ;
#8 : ;
#13 : edt2.SetFocus ;
else
Key :=Chr(0);
end;
end;
procedure TForm1.edt2KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
'0'..'9': ;
#8 : ;
#13 : edt3.SetFocus ;
else
Key :=Chr(0);
end;
end;
procedure TForm1.edt3KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
'0'..'9': ;
',': ;
#8 : ;
#13 : btn1.SetFocus ;
else
Key :=Chr(0);
end;
end;
procedure TForm1.edt4KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
'0'..'9': ;
',': ;
#8 : ;
#13 : btn1.SetFocus ;
else
Key :=Chr(0);
end;
end;
procedure TForm1.btn2Click(Sender: TObject); //очиска полей
begin
edt1.Clear;
edt2.Clear;
edt3.Clear;
edt4.Clear;
end;
procedure TForm1.btn3Click(Sender: TObject);//очистка формы
begin
mmo1.Clear;
end;
end.
unit evalcomp; //модуль парсинга строки в мат формулу
interface
type fun= function(x,y:real):real;
evalvec= ^evalobj;
evalobj= object
f1,f2:evalvec;
f1x,f2y:real;
f3:fun;
function eval:real;
function eval1d(x:real):real;
function eval2d(x,y:real):real;
function eval3d(x,y,z:real):real;
constructor init(st:string);
destructor done;
end;
var evalx,evaly,evalz:real;
implementation
var analysetmp:fun;
function search (text,code:string; var pos:integer):boolean;
var
i,l,count:integer;
flag:boolean;
newtext:string;
begin
if length(text)<length(code) then begin search:=false; exit; end;
flag:=false;
pos:=length(text)-length(code)
repeat
if code=copy(text,pos,length(
then flag:=true
else dec(pos);
if flag then
begin
count:=0;
for i:= pos+1 to length(text) do
begin
If copy(text,i,1) = '(' then inc(count);
if copy(text,i,1) = ')' then dec(count);
end;
if count<>0 then
begin
dec(pos);
flag:=false;
end;
end;
until (flag=true) or (pos=0);
search:=flag;
end;
//далее функции преобразования найденных строк-формул в формулы
function myid(x,y:real):real;
begin
myid:=x;
end;
function myunequal(x,y:real):real;
begin
if x<>y then
myunequal:=1
else
myunequal:=0;
end;
function mylessequal(x,y:real):real;
begin
if x<=y then
mylessequal:=1
else
mylessequal:=0;
end;
function mygreaterequal(x,y:real):real;
begin
if x>=y then
mygreaterequal:=1
else
mygreaterequal:=0;
end;
function mygreater(x,y:real):real;
begin
if x>y then
mygreater:=1
else
mygreater:=0;
end;
function myless(x,y:real):real;
begin
if x<y then
myless:=1
else
myless:=0;
end;
function myequal(x,y:real):real;
begin
if x=y then
myequal:=1
else
myequal:=0;
end;
function myadd(x,y:real):real;
begin
myadd:=x+y;
end;
function mysub(x,y:real):real;
begin
mysub:=x-y;
end;
function myeor(x,y:real):real;
begin
myeor:=trunc(x) xor trunc(y);
end;
function myor(x,y:real):real;
begin
myor:=trunc(x) or trunc(y);
end;
function mymult(x,y:real):real;
begin
mymult:=x*y;
end;
function mydivid(x,y:real):real;
begin
mydivid:=x/y;
end;
function myand(x,y:real):real;
begin
myand:=trunc(x) and trunc(y);
end;
function mymod(x,y:real):real;
begin
mymod:=trunc(x) mod trunc(y);
end;
function mydiv(x,y:real):real;
begin
mydiv:=trunc(x) div trunc(y);
end;
function mypower(x,y:real):real;
begin
if x=0 then
mypower:=0
else
if x>0 then
mypower:=exp(y*ln(x))
else
if trunc(y)<>y then
begin
break;
end
else
if odd(trunc(y))=true then
mypower:=-exp(y*ln(-x))
else
mypower:=exp(y*ln(-x))
end;
function myshl(x,y:real):real;
begin
myshl:=trunc(x) shl trunc(y);
end;
function myshr(x,y:real):real;
begin
myshr:=trunc(x) shr trunc(y);
end;
function mynot(x,y:real):real;
begin
mynot:=not trunc(x);
end;
function mysinc(x,y:real):real;
begin
if x=0 then
mysinc:=1
else
mysinc:=sin(x)/x
end;
function mysinh(x,y:real):real;
begin
mysinh:=0.5*(exp(x)-exp(-x))
end;
function mycosh(x,y:real):real;
begin
mycosh:=0.5*(exp(x)+exp(-x))
end;
function mytanh(x,y:real):real;
begin
mytanh:=mysinh(x,0)/mycosh(x,
end;
function mycoth(x,y:real):real;
begin
mycoth:=mycosh(x,0)/mysinh(x,
end;
function mysin(x,y:real):real;
begin
mysin:=sin(x)
end;
function mycos(x,y:real):real;
begin
mycos:=cos(x)
end;
function mytan(x,y:real):real;
begin
mytan:=sin(x)/cos(x)
end;
function mycot(x,y:real):real;
begin
mycot:=cos(x)/sin(x)
end;
function mysqrt(x,y:real):real;
begin
mysqrt:=sqrt(x)
end;
function mysqr(x,y:real):real;
begin
mysqr:=sqr(x)
end;
function myarcsinh(x,y:real):real;
begin
myarcsinh:=ln(x+sqrt(sqr(x)+1)
end;
function mysgn(x,y:real):real;
begin
if x=0 then
mysgn:=0
else
mysgn:=x/abs(x)
end;
function myarccosh(x,y:real):real;
begin
myarccosh:=ln(x+mysgn(x,0)*
end;
function myarctanh(x,y:real):real;
begin
myarctanh:=ln((1+x)/(1-x))/2
end;
function myarccoth(x,y:real):real;
begin
myarccoth:=ln((1-x)/(1+x))/2
end;
function myarcsin(x,y:real):real;
begin
if x=1 then
myarcsin:=pi/2
else
myarcsin:=arctan(x/sqrt(1-sqr(
end;
function myarccos(x,y:real):real;
begin
myarccos:=pi/2-myarcsin(x,0)
end;
function myarctan(x,y:real):real;
begin
myarctan:=arctan(x);
end;
function myarccot(x,y:real):real;
begin
myarccot:=pi/2-arctan(x)
end;
function myheavy(x,y:real):real;
begin
myheavy:=mygreater(x,0)
end;
function myfrac(x,y:real):real;
begin
myfrac:=frac(x)
end;
function myexp(x,y:real):real;
begin
myexp:=exp(x)
end;
function myabs(x,y:real):real;
begin
myabs:=abs(x)
end;
function mytrunc(x,y:real):real;
begin
mytrunc:=trunc(x)
end;
function myln(x,y:real):real;
begin
myln:=ln(x)
end;
function myodd(x,y:real):real;
begin
if odd(trunc(x)) then
myodd:=1
else
myodd:=0;
end;
function mypred(x,y:real):real;
begin
mypred:=pred(trunc(x));
end;
function mysucc(x,y:real):real;
begin
mysucc:=succ(trunc(x));
end;
function myround(x,y:real):real;
begin
myround:=round(x);
end;
function myint(x,y:real):real;
begin
myint:=int(x);
end;
function myfac(x,y:real):real;
var
n : integer;
r : real;
begin
if x<0 then begin
halt;
end;
If x = 0 then myfac := 1
else
begin
r := 1;
for n := 1 to trunc ( x ) do
r := r * n;
myfac:= r;
end;
end;
function myrnd(x,y:real):real;
begin
myrnd:=random;
end;
function myrandom(x,y:real):real;
begin
myrandom:=random(trunc(x));
end;
function myevalx(x,y:real):real;
begin
myevalx:=evalx;
end;
function myevaly(x,y:real):real;
begin
myevaly:=evaly;
end;
function myevalz(x,y:real):real;
begin
myevalz:=evalz;
end;
//анализ строк
procedure analyse (st:string; var st2,st3:string);
label start;
var pos:integer;
value:real;
newterm,term:string;
begin
term:=st;
start:
if term='' then begin analysetmp:=myid; st2:='0'; st3:=''; exit; end;
newterm:='';
for pos:= 1 to length(term) do
if
copy(term,pos,1)<>' ' then newterm:=newterm+copy(term,
term:=newterm;
if term='' then begin analysetmp:=myid; st2:='0'; st3:=''; exit; end;
val(term,value,pos);
if pos=0 then begin
analysetmp:=myid;
st2:=term;
st3:='';
exit;
end;
if search(term,'<>',pos) then begin
analysetmp:=myunequal;
st2:=copy(term,1,pos-1);
st3:=copy(term,pos+2,length(
exit;
end;
if search(term,'<=',pos) then begin
analysetmp:=mylessequal;
st2:=copy(term,1,pos-1);
st3:=copy(term,pos+2,length(

- Место Австралии в мировой экономике
- Место авторского договора в системе защиты авторских прав
- Место авторского права в системе гражданского права
- Место административного права в правовой системе России
- Место административного права в правовой системе Российской Федерации
- Место административного права в правовой системе Российской Федерации
- Место административного права в российской правовой системе
- Местный бюджет РФ. Его место и роль в бюджетной системе страны
- Местный бюджет: сущность, структура, источники доходов
- Местный бюджет: сущность, структура, источники доходов
- Местный и федеральный розыск лиц
- Местный референдум
- Местный референдум
- Местный референдум: условия и порядок проведения. Результаты местного референдума