РЕЗУЛЬТАТЫ ТЕСТИРОВАНИЯ И ИНСТРУКЦИЯ ПОЛЬЗОВАТЕЛЯ

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ, МОЛОДЕЖИ И СПОРТА УКРАИНЫ

ЧЕРНИГНОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ

Кафедра электрических систем и сетей

 

 

КУРСОВАЯ РАБОТА

По дисциплине «Вычислительная техника, алгоритмические языки и программное обеспечение»

Вариант № 1

 

Выполнил:

Студент группы ЗEM-111 ____________ Шакало С.Н.

 

Проверил:

Ст.преподователь ____________ \ Красножон А.В.

 

 

Чернигов ЧГТУ 2013


СОДЕРЖАНИЕ

1 ВВЕДЕНИЕ. 4

2 АЛГОРИТМ.. 5

3 ПРОГРАММА.. 6

3.1..... Интерфейс программы 6

3.2..... Текст программы 7

3.3..... Описание текста программы 31

4 РЕЗУЛЬТАТЫ ТЕСТИРОВАНИЯ И ИНСТРУКЦИЯ ПОЛЬЗОВАТЕЛЯ.. 33

4.1..... Результаты тестирования 33

4.2..... Инструкция пользователя 34

5 ВЫВОДЫ.. 36

6 ИСПОЛЬЗОВАННАЯ ЛИТЕРАТУРА.. 37

 


ВВЕДЕНИЕ

Программы, работающие на компьютере, можно разделить на три категории:
1. Прикладные программы, непосредственно обеспечивающие выполнение необходимых пользователям работ: редактирование текстов, рисование, обработку информационных массивов и т.д.
2.Системные программы, выполняющие различные вспомогательные функции, например диагностика компьютера или резервное копирование информации.
3.Инструментальные системы (системы программирования), обеспечивающие создание новых программ.

Данные категории программ в свою очередь так – же разделяются на несколько разделов. Например, прикладные программы можно разделить по уровню сложности обработки информации и результатов. Для математических вычислений существует множество различных программных продуктов. Это известные всем пакеты MathCad, MathLab, Mathematika, Axum. Есть и более простые: всевозможные программы – калькуляторы (имитирующие работу обычного калькулятора). В среде Windows есть такая программа (Calc.exe), по аналогии с ней было сделано данное задание[1],[2].


АЛГОРИТМ

На рисунке 2.1 показана блок-схема работы калькулятора, с кратким описанием каждого блока.

 

Рисунок 2.1 – Блок-схема работы калькулятора


ПРОГРАММА

Интерфейс программы

На рисунке 3.1 показан конструктор формы, с компонентами ввода чисел, функций, операций с памятью и меню калькулятора.


Рисунок 3.1 – Интерфейс калькулятора

При нажатии пункта меню калькулятора «Справка» видим окно «About» с названием приложения, вариантом и именем автора – рисунок 3.2

Рисунок 3.2 – О программе

Текст программы

unit Unit1;

interface

uses

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

Dialogs, Menus, StdCtrls, ExtCtrls,Math,clipbrd,UnitAbout;

type

TJournal=record

x,y,z:real;

cod:char;

end;

TForm1 = class(TForm)

bmod: TButton;

open_brace: TButton;

close_brace: TButton;

Button12: TButton;

Button13: TButton;

Button14: TButton;

Button15: TButton;

Button16: TButton;

Button17: TButton;

Button18: TButton;

Button6: TButton;

B7: TButton;

B8: TButton;

B9: TButton;

B4: TButton;

B5: TButton;

B6: TButton;

B3: TButton;

B2: TButton;

B1: TButton;

B0: TButton;

Button24: TButton;

Button25: TButton;

Button26: TButton;

Button27: TButton;

Button28: TButton;

Button_Calculate: TButton;

Button30: TButton;

BSqrt: TButton;

Button1: TButton;

Edit1: TEdit;

RadioGroup1: TRadioGroup;

MainMenu1: TMainMenu;

N2: TMenuItem;

CtrlC1: TMenuItem;

CtrlV1: TMenuItem;

N_Spravka: TMenuItem;

N_invokespravka: TMenuItem;

N7: TMenuItem;

N_aboutprogram: TMenuItem;

N8: TMenuItem;

Button3: TButton;

Button4: TButton;

Button5: TButton;

Button7: TButton;

Button8: TButton;

Button9: TButton;

Button10: TButton;

Button11: TButton;

Button22: TButton;

Button23: TButton;

ListBox1: TListBox;

Button19: TButton;

procedure B9Click(Sender: TObject); //процедуры ввода данных

procedure Button24Click(Sender: TObject);

procedure Button25Click(Sender: TObject);

procedure Button26Click(Sender: TObject);

procedure Button27Click(Sender: TObject);

procedure Button28Click(Sender: TObject);

procedure Button_CalculateClick(Sender: TObject);

procedure Button30Click(Sender: TObject);

procedure BSqrtClick(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure B0Click(Sender: TObject);

procedure Button6Click(Sender: TObject);

procedure Button18Click(Sender: TObject);

procedure Button17Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure open_braceClick(Sender: TObject);

procedure Button13Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

procedure Button7Click(Sender: TObject);

procedure B1Click(Sender: TObject);

procedure Button8Click(Sender: TObject);

procedure Button14Click(Sender: TObject);

procedure Button9Click(Sender: TObject);

procedure Button10Click(Sender: TObject);

procedure Button11Click(Sender: TObject);

procedure Button19Click(Sender: TObject);

procedure Button20Click(Sender: TObject);

procedure close_braceClick(Sender: TObject);

procedure B2Click(Sender: TObject);

procedure Button21Click(Sender: TObject);

procedure Button22Click(Sender: TObject);

procedure Button12Click(Sender: TObject);

procedure Button23Click(Sender: TObject);

procedure B3Click(Sender: TObject);

procedure B4Click(Sender: TObject);

procedure B5Click(Sender: TObject);

procedure B6Click(Sender: TObject);

procedure B7Click(Sender: TObject);

procedure B8Click(Sender: TObject);

procedure CtrlC1Click(Sender: TObject);

procedure CtrlV1Click(Sender: TObject);

procedure N8Click(Sender: TObject);

procedure N_invokespravkaClick(Sender: TObject);

procedure N_aboutprogramClick(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure ListBox1Click(Sender: TObject);

procedure Edit1KeyPress(Sender: TObject; var Key: Char);

private

{ Private declarations }

public

{ Public declarations }

end;

const

journal_max=1000;

var

Form1: TForm1;

code : char;

op1, y, z : real;

x1, y1, z1 : Integer;

mem_str,journal_str:String;

journal_array:array[1..journal_max] of TJournal;

ji:Integer;

implementation

{$R *.dfm}

procedure TForm1.B9Click(Sender: TObject); //ввод данных

begin

Edit1.Text:=Edit1.Text+'9';

end;

procedure TForm1.Button24Click(Sender: TObject); //ввод запятой

begin

Edit1.Text:=Edit1.Text+',';

end;

procedure TForm1.Button25Click(Sender: TObject);

begin

if edit1.Text<>'' then op1:=strtofloat(edit1.text);

code := '+';

Edit1.Clear;

end;

procedure TForm1.Button26Click(Sender: TObject);

begin

if edit1.Text<>'' then op1:=strtofloat(edit1.text);

code := '-';

Edit1.Clear;

end;

procedure TForm1.Button27Click(Sender: TObject);

begin

if edit1.Text<>'' then op1:=strtofloat(edit1.text);

code := '*';

Edit1.Clear;

end;

procedure TForm1.Button28Click(Sender: TObject);

begin

if edit1.Text<>'' then op1:=strtofloat(edit1.text);

code := '/';

Edit1.Clear;

end;

procedure TForm1.Button_CalculateClick(Sender: TObject); //рассчет данных и вывод в журнал событий

begin

if edit1.Text<>'' then y:=strtofloat(edit1.text);

journal_array[ji].x:=op1;

journal_array[ji].y:=y;

journal_array[ji].cod:=code;

journal_str:=FloatToStr(op1);

journal_str:=journal_str+ code + FloatToStr(y);

ListBox1.Items.Add(journal_str);

case code of

'+': z:=op1+y;

'-': z:=op1-y;

'*': z:=op1*y;

'/': z:=op1/y;

'^': z:=Power(op1,y);

'[': z:=Trunc(op1) Mod Trunc(y);

']': z:=Trunc(op1) Div Trunc(y);

'{': z:=Power(op1,1/y);

end;

edit1.Text:=floattostr(z); // вывод в поле Edit1 значение переменной z

journal_array[ji].z:=z;

Inc(ji);

if ji=journal_max then ji:=1;

end;

procedure TForm1.Button30Click(Sender: TObject); //расчет обратного числа

begin

op1:= strtofloat(edit1.text);

z:=1/op1;

edit1.Clear; //очищаем поле

edit1.Text:=floattostr(z);

end;

procedure TForm1.BSqrtClick(Sender: TObject); //вычисление квадратного корня

begin

op1:= strtofloat(edit1.text);

z:=Power(op1,1/2);

edit1.Clear;

edit1.Text:=floattostr(z);

end; //завершение процедуры

procedure TForm1.Button2Click(Sender: TObject); //ввод данных

begin

op1:= strtofloat(edit1.text);

z:=(op1*(-1));

edit1.Clear;

edit1.Text:=floattostr(z);

end;

procedure TForm1.B0Click(Sender: TObject); //ввод данных

begin

Edit1.Text:=Edit1.Text+'0';

end;

procedure TForm1.Button6Click(Sender: TObject); //стирание всех данных,

op1:=0; // не занесенных в память

begin

y:=0;

z:=0;

Edit1.Clear;

end;

procedure TForm1.Button18Click(Sender: TObject); //стирание последнего

begin //введенного числа

Edit1.Text:='';

end;

procedure TForm1.Button17Click(Sender: TObject); //стирание знаков

var

st:string;

begin

st:=Edit1.Text;

delete(st,length(st),1);

Edit1.Text:=st;

if Edit1.Text='' then begin

Edit1.Text:='';

end;

end;

procedure TForm1.Button3Click(Sender: TObject); //вычисление котангенса

begin

if RadioGroup1.ItemIndex=0 then begin

op1:=(strtofloat(edit1.text)*3.141592653589793)/180;

z:=cos(op1)/sin(op1);

edit1.Clear;

edit1.Text:=floattostr(z);

end;

if RadioGroup1.ItemIndex=1 then begin

op1:=strtofloat(edit1.text);

z:=cos(op1)/sin(op1);

edit1.Clear;

edit1.Text:=floattostr(z);

end;

if RadioGroup1.ItemIndex=2 then begin

op1:=strtofloat(edit1.text);

z:=cos(gradtorad(op1))/sin(gradtorad(op1));

edit1.Clear;

edit1.Text:=floattostr(z);

end;

end;

procedure TForm1.Button4Click(Sender: TObject); //возведение в квадрат числа

begin

op1:= strtofloat(edit1.text);

z:=Power(op1,2);

edit1.Clear;

edit1.Text:=floattostr(z);

end;

procedure TForm1.Button1Click(Sender: TObject); //возведение в степень числа

begin

op1:= strtofloat(edit1.text);

code := '^';

edit1.Clear;

end;

procedure TForm1.open_braceClick(Sender: TObject);//открытие скобок

begin

op1:= strtofloat(edit1.text);

code := '{';

edit1.Clear;

end;

procedure TForm1.Button13Click(Sender: TObject); // вызов числа из памяти

begin

mem_str:='';

mem_str:=Edit1.Text;

end;

procedure TForm1.Button5Click(Sender: TObject); //регистр последнего результата

i:Integer; //вычеслений

result:Real;

begin

result:=1;

op1:=strtofloat(edit1.text);

if (Trunc(op1) < 0) then begin

Edit1.Text:='Недопустимый ввод';

end

else if (Trunc(op1) = 0) then begin

Edit1.Text:='1';

end

else begin

for i:= 1 to Trunc(op1) do begin

result:= result * i;

end;

Edit1.Text:=FloatToStr(result);

end;

end;

procedure TForm1.Button7Click(Sender: TObject); //вычисление десятичного

begin //логарифма

op1:= strtofloat(edit1.text);

z:=log10(op1);

edit1.Clear;

edit1.Text:=floattostr(z);

end;

procedure TForm1.B1Click(Sender: TObject);

begin

Edit1.Text:=Edit1.Text+'1';

end;

procedure TForm1.Button8Click(Sender: TObject);//вычисление натурального

begin //логарифма

op1:=strtofloat(edit1.text);

z:=ln(op1);

edit1.Clear;

edit1.Text:=floattostr(z);

end;

procedure TForm1.Button14Click(Sender: TObject); //занести отображаемое

begin //число в память

if (mem_str<>'') then Edit1.Text:=mem_str else Edit1.Text:='';

end;

procedure TForm1.Button9Click(Sender: TObject); // вывод числа Pi

begin

edit1.Text:='3,141592653589793';

end;

procedure TForm1.Button10Click(Sender: TObject); //вычисление синуса

Var

rcs:Real;

begin

if RadioGroup1.ItemIndex=0 then begin

op1:=(strtofloat(edit1.text)*3.141592653589793)/180;

z:=sin(op1);

edit1.Clear;

edit1.Text:=floattostr(z);

end;

if RadioGroup1.ItemIndex=1 then begin

op1:=strtofloat(edit1.text);

z:=sin(op1);

edit1.Clear;

edit1.Text:=floattostr(z);

end;

if RadioGroup1.ItemIndex=2 then begin

op1:=strtofloat(edit1.text);

z:=sin(gradtorad(op1));

edit1.Clear;

edit1.Text:=floattostr(z);

end;

journal_array[ji].x:=op1;

journal_array[ji].y:=0;

journal_array[ji].cod:='0';

journal_array[ji].z:=z;

journal_str:=FloatToStr(op1);

journal_str:='sin('+journal_str+')';

ListBox1.Items.Add(journal_str);

Inc(ji);

if ji=journal_max then ji:=1;

end;

procedure TForm1.Button11Click(Sender: TObject); //вычисление косинуса

begin

if RadioGroup1.ItemIndex=0 then begin

op1:=(strtofloat(edit1.text)*3.141592653589793)/180;

z:=cos(op1);

edit1.Clear;

edit1.Text:=floattostr(z);

end;

if RadioGroup1.ItemIndex=1 then begin

op1:=strtofloat(edit1.text);

z:=cos(op1);

edit1.Clear;

edit1.Text:=floattostr(z);

end;

if RadioGroup1.ItemIndex=2 then begin

op1:=strtofloat(edit1.text);

z:=cos(gradtorad(op1));

edit1.Clear;

edit1.Text:=floattostr(z);

end;

journal_array[ji].x:=op1;

journal_array[ji].y:=0;

journal_array[ji].cod:='0';

journal_array[ji].z:=z;

journal_str:=FloatToStr(op1);

journal_str:='cos('+journal_str+')';

ListBox1.Items.Add(journal_str);

Inc(ji);

if ji=journal_max then ji:=1;

end;

procedure TForm1.Button19Click(Sender: TObject); // вычисление тангенса

begin

if RadioGroup1.ItemIndex=0 then begin

op1:=(strtofloat(edit1.text)*3.141592653589793)/180;

z:=sin(op1)/cos(op1);

edit1.Clear;

edit1.Text:=floattostr(z);

end;

if RadioGroup1.ItemIndex=1 then begin

op1:=strtofloat(edit1.text);

z:=sin(op1)/cos(op1);

edit1.Clear;

edit1.Text:=floattostr(z);

end;

if RadioGroup1.ItemIndex=2 then begin

op1:=strtofloat(edit1.text);

z:=sin(gradtorad(op1))/cos(gradtorad(op1));

edit1.Clear;

edit1.Text:=floattostr(z);

end;

journal_array[ji].x:=op1;

journal_array[ji].y:=0;

journal_array[ji].cod:='0';

journal_array[ji].z:=z;

journal_str:=FloatToStr(op1);

journal_str:='tan('+journal_str+')';

ListBox1.Items.Add(journal_str);

Inc(ji);

if ji=journal_max then ji:=1;

end;

procedure TForm1.close_braceClick(Sender: TObject); //закрытие скобок

begin

op1:= strtofloat(edit1.text);

code := '}';

edit1.Clear;

end;

procedure TForm1.B2Click(Sender: TObject); //ввод числа 2

begin

Edit1.Text:=Edit1.Text+'2';

end;

procedure TForm1.Button21Click(Sender: TObject); //вывод числа Эйлера

Var

e:Real;

begin

e:=2.7182818284;

op1:= strtofloat(edit1.text);

z:=Power(e,op1);

edit1.Clear;

edit1.Text:=floattostr(z);

end;

procedure TForm1.Button22Click(Sender: TObject); //Возведение в степень по основанию 10

begin

op1:= strtofloat(edit1.text);

z:=Power(10,op1);

edit1.Clear;

edit1.Text:=floattostr(z);

end;

procedure TForm1.Button12Click(Sender: TObject); //очистить память

begin

mem_str:='';

end;

procedure TForm1.Button23Click(Sender: TObject); //возвращает дробную часть числа

с плавающей запятой

begin

op1:= strtofloat(edit1.text);

z:=Frac(op1);

edit1.Clear;

edit1.Text:=floattostr(z);

end;

procedure TForm1.B3Click(Sender: TObject); //ввод числа 3

begin

Edit1.Text:=Edit1.Text+'3';

end;

procedure TForm1.B4Click(Sender: TObject); //ввод числа 4

begin

Edit1.Text:=Edit1.Text+'4';

end;

procedure TForm1.B5Click(Sender: TObject); //ввод числа 5

begin

Edit1.Text:=Edit1.Text+'5';

end;

procedure TForm1.B6Click(Sender: TObject);

begin

Edit1.Text:=Edit1.Text+'6';

end;

procedure TForm1.B7Click(Sender: TObject);

begin

Edit1.Text:=Edit1.Text+'7';

end;

procedure TForm1.B8Click(Sender: TObject);

begin

Edit1.Text:=Edit1.Text+'8';

end;

procedure TForm1.CtrlC1Click(Sender: TObject); //копировать

begin

Edit1.SelectAll;

Edit1.CopyToClipboard;

end;

procedure TForm1.CtrlV1Click(Sender: TObject); //вставить

begin

Edit1.SelectAll;

Edit1.PasteFromClipboard;

end;

procedure TForm1.N8Click(Sender: TObject); //выход из приложения

begin

Form1.Close;

end;

procedure TForm1.N_invokespravkaClick(Sender: TObject); //вызов справки

begin

WinExec('hh.exe calc.htm',SW_SHOW);

end;

procedure TForm1.N_aboutprogramClick(Sender: TObject); //вывод окна про

программу

begin

AboutBox.Show;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

ji:=1;

end;

procedure TForm1.ListBox1Click(Sender: TObject); //журнал событий

var

ind:Integer;

begin

ind:=(ListBox1.ItemIndex);

Inc(ind);

z:=journal_array[ind].z;

Edit1.Text:=FloatToStr(z);

end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); //ввод с клавиату

begin

if key='+' then begin Button25Click(Sender);Edit1.Clear; end;

if key='-' then begin Button26Click(Sender);Edit1.Clear; end;

if key='*' then begin Button27Click(Sender);Edit1.Clear; end;

if key='/' then begin Button28Click(Sender);Edit1.Clear; end;

if key='=' then Button_CalculateClick(Sender);

end;

end.

Описание текста программы

Список переменных использованных в программе с кратким описанием:

code : char; Тип операции

op1, y, z : real; Первый и второй операнд, и результат.

type

TJournal=record

x,y,z:real;

cod:char;

end; Тип записи журнала событий

mem_str,journal_str:String; Строка записываемая в журнал событий

journal_array:array[1..journal_max] of TJournal; Массив куда записываются ход

вычислений.

ji:Integer; Индекс в массиве журнала.

Список процедур и функций, использованных в программе с кратким

описанием:Были использованы обработчики событий визуальных компонент и

стандартные функции с модулей Math и clipbrd.

При каждом вычислении результат сохраняется в структуре массива

journal_array и в ListBox появляется новая запись при щелчке на запись в

журнале событий в поле ввода появляется результат предыдущих вычислений.

При нажатии на кнопку MR перезаписывается содержимое переменной m, и

устанавливается M в Panel1. При нажатии на кнопку MC обнуляется

содержимое переменной m и сбрасывается содержимое Panel1.caption.

При нажатии F1 или выбора с меню справка -> вызов справки вызывается

справка в формате chm созданной с помощю программы HTML HELP

Workshop.

На рисунке 3.3 показано окно вызова справки.


Рисунок 3.3 – Справка калькулятора

РЕЗУЛЬТАТЫ ТЕСТИРОВАНИЯ И ИНСТРУКЦИЯ ПОЛЬЗОВАТЕЛЯ

Результаты тестирования

На рисунке 4.1 показано результаты тестирования с показом журнала записей и результатом.

Введем 35, умножим на 50, получаем 1750.

Делим на 105, получаем 16,6

Вычисляем синус в радианах, получаем -0,818.

Вычитаем 100, получаем -100,818447253158

Рисунок 4.1 – Результаты тестирования

Инструкция пользователя

Данная программа предназначена для выполнения тех же действий, что и обычный калькулятор. Она выполняетосновные арифметические действия, такие, как сложение и вычитание, плюс функции научного калькулятора, такие как тригонометрические функции, логарифмы, степени ит. Также есть возможность записи хода вычислений в журнал событий. Нажимая на каждое событие в ListBox, мы получаем результаты предыдущих вычислений.

Можно производить вычисления, нажимая на кнопки калькулятора.Или вводя символы с клавиатуры. Кроме того, доступен ввод цифр и действий с цифровой клавиатуры, когда нажата клавиша NUMLOCK.

Выполнение простых вычислений:

Введите первое число;

Нажмите кнопку + (сложение), - (вычитание), * (умножение) или / (деление);

Введите следующее число;

Введите необходимый оператор;

Введите остальные числа и операторы;

Нажмите кнопку =.

Работа с памятью

Чтобы занести отображаемое число в память, нажмите кнопку MS.

Чтобы вызвать число из памяти, нажмите кнопку MR.

Чтобы очистить память, нажмите кнопку MC.

Чтобы сложить отображаемое число с числом, хранящимся в памяти, нажмите

кнопку M+. Чтобы вызвать результат, нажмите кнопку MR.

После сохранения числа над кнопками памяти на панели калькулятора появится индикатор M. Каждое новое число, занесенное в память, заменяет предыдущее.

Горячие клавиши:

1. F1 – Вызов справки

2. F10 – Выход из программы


ВЫВОДЫ

Был написан калькулятор, выполняющий действия, что и обычный калькулятор только с возможностью записи в журнал событий, была написана справка помощь для калькулятора. Отработаны и закреплены на практике навыки работы в среде программирования Delphi. Простота, скорость и эффективность Delphi объясняют ее популярность. Delphi имеет один из самых быстрых компиляторов, порождающий, тем не менее, весьма и весьма неплохой объектный код. Есть и другие достоинства: простота изучения Object Pascal; облегчающие жизнь нововведения - вроде свойств (properties); программы, написанные на Delphi, не требуется снабжать дополнительными библиотеками (в отличие от связки C++/MFC) [3]. В самом деле, VCL предоставляет удобный, легко расширяемый объектно-ориентированный интерфейс к Windows, что ни в коей мере не мешает программисту опускаться в самые глубины Windows API. Создателям оригинальных компонентов это приходится делать довольно часто, в отличие от "просто программистов". Как было сказано выше, модель программирования в Delphi - компонентная, что позволяет пользоваться компонентами, написанными другими разработчиками, даже не имея их исходного кода и уж подавно не изучая его. В Интернете есть огромное количество компонентов, значительная часть которых распространяется бесплатно. Применение компонентной модели приводит к тому, что довольно многое в поведении объектов программировать не нужно вообще, и многое, на что в других средах ушли бы недели, можно сделать за часы или даже минуты. Оно и понятно - это ведь RAD-среда. К достоинствам можно отнести очень быстрый браузер классов и мгновенный вывод подсказки автозавершения кода (code completion) [4]. Если кратко - может все. Конечно, Object Pascal накладывает определенные ограничения, но для тех вещей, для которых ее писали, Delphi подходит практически оптимально.


ИСПОЛЬЗОВАННАЯ ЛИТЕРАТУРА

1. Культин Н. Delphi 6. Программирование на Object Pascal. – СПб.:БХВ-Петербург,2002., – 356с.

2. Фаранов В.В. Delphi 6. Учебный курс. –М.: «Издательство Молгачева С.В.», 2001., – 150с.

3. Культин Н. Основы программирования в Delphi 7: Самоучитель. - СПб.:БХВ-Петербург,2003., – 231с.

4. Бакнелл Д.М. Фундаментальные алгоритмы и структуры данных в Delphi. СПб.: Диасофт ЮП. 2003., – 566с.