Помощь в написании студенческих работ
Антистрессовый сервис

Решение вычислительных задач в объективно-ориентированной среде визуального программирования Delph

РефератПомощь в написанииУзнать стоимостьмоей работы

Главным требованием к алгоритму, несомненно, является его работоспособность. Однако создавая алгоритм, необходимо помнить о дальнейшей работе над ним, об отладке программы, которая будет создана по этому алгоритму, а также о вероятных пользователях, которым, возможно, потребуется этот алгоритм. Поэтому одним из важнейших требований к алгоритму является его простота и понятность. Исходя из этих… Читать ещё >

Решение вычислительных задач в объективно-ориентированной среде визуального программирования Delph (реферат, курсовая, диплом, контрольная)

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

Наибольшее распространение находят языки программирования, имеющие высокий уровень формализации и позволяющие создавать хорошо структурированные программы, предназначенные для решения достаточно обширного класса задач из самых разнообразных сфер деятельности. К таким языкам относятся Паскаль, Си, Модула, Ада и т. д.

Одним из простых для первоначального изучения, но в то же время достаточно универсальным языком программирования является Паскаль, лежащий в основе широко распространенных сред программирования, таких как BorlandPascal, Delphi, FreePascalCompiler, Lazarus и т. п.

Главным требованием к алгоритму, несомненно, является его работоспособность. Однако создавая алгоритм, необходимо помнить о дальнейшей работе над ним, об отладке программы, которая будет создана по этому алгоритму, а также о вероятных пользователях, которым, возможно, потребуется этот алгоритм. Поэтому одним из важнейших требований к алгоритму является его простота и понятность.

Исходя из этих требований, особенно удобным представляется при разработке алгоритмов использование основных алгоритмических структур. Их важной особенностью является то, что они имеют один вход и один выход и могут соединяться друг с другом в любой последовательности. Это дает наглядную и простую структуру алгоритма, по которой легче составить программу.

Развитие идей структурного и событийного программирования существенно подняло производительность труда программистов и позволило в разумные сроки создавать приложения объемом в сотни тысяч строк. Однако такой объем уже приблизился к пределу возможностей человека, и потребовались новые технологии разработки программ.

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

Описание нового класса похоже на описание новой структуры данных, только к полям добавляются методы — подпрограммы.

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

Объектно-ориентированное программирование базируется на трех ключевых концепциях — инкапсуляции, наследовании и полиморфизме.

Описание задания

Разработка программы для решения 5-ти задач в интегрированной среде объективно-ориентированного программирования визуальной программы Delphi.

В рамках данного задания необходимо обеспечить решение следующих задач:

Решение вычислительных задач в объективно-ориентированной среде визуального программирования Delph.

Задача 1: Найти y в данном выражении: y = (sinx)+ eln (x+1).

Задача 2: Вычислить выражение y = +.

Решение вычислительных задач в объективно-ориентированной среде визуального программирования Delph.
Решение вычислительных задач в объективно-ориентированной среде визуального программирования Delph.
Решение вычислительных задач в объективно-ориентированной среде визуального программирования Delph.

Задача 3: Вычислить сумму S =c погрешностью E> 0.

Решение вычислительных задач в объективно-ориентированной среде визуального программирования Delph.

Задача 4: Дан одномерный массив [Ai]. Сформировать одномерный [Bi] массив из элементов массива [Ai] по закону B=Ai+j, i =; N = M — i.

Задача 5: Получить квадратную матрицу [Aij], i, j=, элементами побочной диагонали которой будут числа, получающиеся в результате перемножения i*(i+1), где i — номер строки.

Программа состоит из 1-ой формы с 5-тью вкладками из 5-ти задач.

Решение задачи 1

Для решения задачи нужны элементы ввода, вывода и элемент запуска счёта чисел. Для ввода и вывода чисел будет использоваться объект Edit. Для запуска вычисления чисел будет использоваться объект Button.

Внешний вид вкладки приведён на рисунке 1.

(Внешний вид вкладки для решения первой задачи).

Рис. 1 (Внешний вид вкладки для решения первой задачи)

Процедура, вызываемая при нажатии на кнопку расчета чисел, приведена ниже:

procedure TForm1. ButtonRez1Click (Sender: TObject);

begin.

if EditX1. Text=' '.

thenShowMessage ('Укажите X').

else.

if (StrToFloat (EditX1.Text))>1.

thenShowMessage ('Sin (X)>1').

else.

if (StrToFloat (EditX1.Text))<-1.

thenShowMessage ('Sin (X)<-1').

else.

EditRez1.Text:=FloatToStr ((Sqr (Sin (StrToFloat (EditX1.Text)))+.

Exp (Exp (5*Ln (Abs (Sqr (StrToFloat (EditX1.Text))+1))));

Ln (Sqr (StrToFloat (EditX1.Text))+1))).

end;

На рисунках со 2-ой по 5-ую приведены иллюстрации работы процедуры:

(Результат вычисления при корректных данных).

Рис. 2 (Результат вычисления при корректных данных)

Рис. 3 (Результат вычисления при некорректных данных)

Рис. 4 (Результат вычисления при некорректных данных)

(Результат вычисления при некорректных данных).
Решение вычислительных задач в объективно-ориентированной среде визуального программирования Delph.
Рис. 5 (Результат вычисления при некорректных данных).

Рис. 5 (Результат вычисления при некорректных данных)

Решение задачи 2.

Для решения задачи нужны элементы ввода, вывода и элемент запуска счёта чисел. Для ввода и вывода чисел будет использоваться объект Edit. Для запуска вычисления чисел будет использоваться объект Button.

Внешний вид вкладки приведён на рисунке 6.

(Внешний вид вкладки для решения второй задачи).

Рис. 6 (Внешний вид вкладки для решения второй задачи)

Процедура, вызываемая при нажатии на кнопку расчета чисел, приведена ниже:

procedure TForm1. ButtonRez2Click (Sender: TObject);

begin.

if EditX2. Text=' '.

thenShowMessage ('Укажите X').

else.

if (StrToFloat (EditX2.Text))<-1.

thenShowMessage ('Sin (X) и Cos (X)<-1').

else.

if (StrToFloat (EditX2.Text))<4.

thenShowMessage ('Логарифмическаяошибка').

else.

EditRez2.Text:=FloatToStr (((Sqr (Sin (StrToFloat (EditX2.Text))))/.

(Sqr (Cos (StrToFloat (EditX2.Text))))+5)+Exp ((1/3)*.

Ln (((Ln (StrToFloat (EditX2.Text)-2))))/.

((Sqr (Sin (StrToFloat (EditX2.Text)))).

+Sqr (StrToFloat (EditX2.Text))+1))).

end;

На рисунках с 7-ой по 10-ую приведены иллюстрации работы процедуры:

(Результат вычисления при корректных данных).

Рис. 7 (Результат вычисления при корректных данных)

Рис. 8 (Результат вычисления при некорректных данных)

Рис. 9 (Результат вычисления при некорректных данных)

(Результат вычисления при некорректных данных).
Решение вычислительных задач в объективно-ориентированной среде визуального программирования Delph.
Рис. 10 (Результат вычисления при некорректных данных).

Рис. 10 (Результат вычисления при некорректных данных)

программа задача число некорректный Решение задачи 3.

Для решения задачи нужны элементы ввода, вывода и элемент запуска счёта чисел. Для ввода и вывода чисел будет использоваться объект Edit. Для запуска вычисления чисел будет использоваться объект Button.

Внешний вид вкладки приведён на рисунке 11.

(Внешний вид вкладки для решения третьей задачи).

Рис. 11 (Внешний вид вкладки для решения третьей задачи)

Процедура, вызываемая при нажатии на кнопку расчета чисел, приведена ниже:

procedure TForm1. ButtonRez3Click (Sender: TObject);

varD, S: Real;

i:Integer;

begin.

if EditEps. Text=' '.

thenShowMessage ('УкажитеEps').

else.

if EditX3. Text=' '.

thenShowMessage ('Укажите X').

else.

if EditN. Text=' '.

thenShowMessage ('Укажите N').

else.

begin.

for i:=0 to StrToInt (EditN.Text)-1 do.

begin.

D:=(Exp ((Exp (i*Ln (2)))*Ln (StrToFloat (EditX3.Text))));

while (D).

begin.

S:=(S)+(D);

D:=(Exp ((Exp (i*Ln (2)))*Ln (StrToFloat (EditX3.Text))));

end;

end;

end;

EditRez3.Text:=FloatToStr (s).

end;

На рисунках с 12-ой по 15-ую приведены иллюстрации работы процедуры:

(Результат вычисления при корректных данных).

Рис. 12(Результат вычисления при корректных данных)

Рис. 13 (Результат вычисления при некорректных данных)

Рис. 14 (Результат вычисления при некорректных данных)

(Результат вычисления при некорректных данных).
Решение вычислительных задач в объективно-ориентированной среде визуального программирования Delph.
Рис. 15 (Результат вычисления при некорректных данных).

Рис. 15 (Результат вычисления при некорректных данных)

Решение задачи 4.

Для решения задачи нужны элементы ввода, вывода и элемент запуска обработки массива. Для ввода и вывода чисел будет использоваться объект Memo. Для запуска обработки массива будет использоваться объект Button.

Внешний вид вкладки приведён на рисунке 16.

(Внешний вид вкладки для решения четвертой задачи).

Рис. 16 (Внешний вид вкладки для решения четвертой задачи)

Процедура, вызываемая при нажатии на кнопку обработки массива, приведена ниже:

procedure TForm1. ButtonRez4Click (Sender: TObject);

vari, j: Integer;

begin.

if Memo1.Lines.Count=0.

thenShowMessage ('Укажитемассив').

else.

Memo2.Lines.Clear;

for i:=0 to Memo1.Lines.Count-1 do.

begin.

Memo2.Lines.Add ('0');

for j:=0 to Memo1.Lines.Count-1-i do.

begin.

Memo2.Lines.Strings[i]: =FloatToStr (StrToFloat (Memo2.Lines.Strings[i]).

+StrToFloat (Memo1.Lines.Strings[i+j])).

end;

end;

end;

На рисунках с 17-ой по 18-ую приведены иллюстрации работы процедуры:

(Результат вычисления при корректных данных).

Рис. 17 (Результат вычисления при корректных данных)

(Результат вычисления при некорректных данных).

Рис. 18 (Результат вычисления при некорректных данных)

Решение задачи 5.

Для решения задачи нужны элементы ввода, вывода, отображение строк и столбцов и элемент запуска обработки матрицы. Для ввода и вывода чисел будет использоваться объект Edit. Для отображения строк и столбцов будет использоваться объект StringGrid. Для запуска обработки матрицы будет использоваться объект Button.

Внешний вид вкладки приведён на рисунке 19.

(Внешний вид вкладки для решения пятой задачи).

Рис. 19 (Внешний вид вкладки для решения пятой задачи)

Процедуры, изменения размера матрицы при вводе их значений:

procedure TForm1. EditMChange (Sender: TObject);

begin.

if EditM. Text' '.

then.

begin.

StringGrid1.RowCount:=strtoint (EditM.Text);

StringGrid2.RowCount:=strtoint (EditM.Text).

end;

end;

procedure TForm1. EditWChange (Sender: TObject);

begin.

if EditW. Text' '.

then.

begin.

StringGrid1.ColCount:=strtoint (EditW.Text);

StringGrid2.ColCount:=strtoint (EditW.Text);

end;

end;

Процедура, вызываемая при нажатии на кнопку обработки матрицы, приведена ниже:

procedure TForm1. ButtonRez5Click (Sender: TObject);

vari, j, z:Integer;

begin.

if EditM. Text=' '.

thenShowMessage ('Укажите количество строк').

else.

if EditW. Text=' '.

thenShowMessage ('Укажите количество столбцов').

else.

if stringgrid1. RowCountstringgrid1.ColCount.

thenshowmessage ('Матрица не квадратная!!!').

else.

begin.

z:=0;

for i:=0 to stringgrid1. RowCount-1 do.

begin.

for j:=0 to stringgrid1. ColCount-1 do.

begin.

if StringGrid1. Cells[i, j]=' '.

then z:=1.

end;

end;

end;

if z=1 then ShowMessage ('Введитечисламассива').

else.

for i:=0 to stringgrid1. RowCount-1 do.

begin.

for j:=0 to StringGrid1. ColCount-1 do.

begin.

if j=StringGrid1.ColCount-1-i.

then.

StringGrid2.Cells[i, j]: =FloatToStr ((i+1)*(i+2)).

else.

StringGrid2.Cells[i, j]: =FloatToStr (0).

end;

end.

end;

На рисунках с 20-ой по 24-ую приведены иллюстрации работы процедуры:

(Результат вычисления при корректных данных).

Рис. 20 (Результат вычисления при корректных данных)

Рис. 21 (Результат вычисления при некорректных данных)

Рис. 22 (Результат вычисления при некорректных данных)

Рис. 23 (Результат вычисления при некорректных данных)

(Результат вычисления при некорректных данных).
Решение вычислительных задач в объективно-ориентированной среде визуального программирования Delph.
Решение вычислительных задач в объективно-ориентированной среде визуального программирования Delph.
Рис. 24 (Результат вычисления при некорректных данных).

Рис. 24 (Результат вычисления при некорректных данных)

Заключение

В результате выполнения курсовой работы по дисциплине «Объектно-ориентированный анализ и программирование», я освоила язык программирования Delphi, в виде составления и написания программ. Приобрела навыки решения прикладных задач, а так же навыки разработки и отладки программ в современных системах программирования. Пользуясь литературой, я углубленно изучила материал по программированию. Я узнала такие объекты как: «Edit" — объект ввода и вывода данных, «Button» — объект для реализации в программе команд, «StringGrid"-объект для отображения различных данных в табличной форме, «Label"-объект для отображения надписей и меток на форме, которые не меняются в течение всего времени работы программы и «Memo"-текстовый редактор. В итоге всего мной изученного, я могу сказать что дисциплина «Объектно-ориентированный анализ и программирование» не легка, но очень интересна и пригодиться, для дальнейшей работы по направлению «Бизнес-инфоматика».

Список используемой литературы В. В. Фаронов «Турбо Паскаль Начальный курс Учебное пособие"// Издательство «ОМД Групп» 2003, 579 стр.

Брантд З. «Анализ данных. Статистические и вычислительные методы для научных работников и инженеров» // АСТ МИР, 2008, 688стр.

Кулаичев А.П. «Методы и средства комплексного анализа данных» // Инфра-М, 2011. 512стр.

Владимир Попов. «Паскаль и Дельфи. Самоучитель.» // Питер, 2003 г., 544 с.

Потопахин В.В. «TurboPascal: решение сложных задач.» // Издательство «БХВ-Петербург», 2006, 208 с.

Шпак Ю.А. «Turbo Pascal 7.0 на примерах» // Издательство «Юниор», 2003, 498 с.

Рапаков Г. Г., Ржеуцкая С. Ю. «Turbo Pascal для студентов и школьников.» // СПб.: БХВ-Петербург, 2004.

Каплан В.Е. и др. «Статистическая обработка и анализ экономических данных» // Феникс, 2007. 336стр.

Тюрин Ю.Н. «Анализ данных на компьютере» // Форум, 2010. 368стр.

Гмурман В.Е. «Теория вероятностей и математическая статистика» // М.: Высшая школа, 2009. 479стр.

Павловская Т.А. «Паскаль. Программирование на языке высокого уровня: Учебник для вузов.» // СПб.: Питер, 2007. — 293 с.

Бугров Я.С., Никольский С. М. Высшая математика: В 3-х т. М: Дрофа, 2005.

Алексеев Е.Р., Чеснокова О. В., Кучер Т. В. Free Pascal и Lazarus. Учебник по программированию. — М.: ALT Linux: Издательский дом ДМК-пресс, 2010. — 440 с.

Мельников С.В. Delphi и Turbo Pascal на занимательных примерах. — СПб.: БХВ-Петербург, 2006. — 448 с.

Алексеев Е.Р., Чеснокова О. В., Кучер Т. В. Самоучитель по программированию на Free Pascal и Lazarus. — М.: ALT Linux: Издательский дом ДМК-пресс, 2011. — 503 с.

Рубанцев В. Большой самоучитель Delphi XE3. — 2013.

Приложение.

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

programZadaniaDoma;

uses.

Forms,.

MainUnit in 'MainUnit.pas' {Form1};

{$R *.res}.

begin.

Application.Initialize;

Application.CreateForm (TForm1, Form1);

Application.Run;

end.

unitMainUnit;

interface.

uses.

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

Dialogs, StdCtrls, ComCtrls, Grids;

type.

TForm1 = class (TForm).

PageControl1: TPageControl;

Zadanie1: TTabSheet;

Zadanie2: TTabSheet;

Zadanie3: TTabSheet;

Zadanie4: TTabSheet;

Zadanie5: TTabSheet;

LabelX1: TLabel;

LabelRez1: TLabel;

EditX1: TEdit;

EditRez1: TEdit;

ButtonRez1: TButton;

LabelX2: TLabel;

LabelRez2: TLabel;

EditX2: TEdit;

EditRez2: TEdit;

ButtonRez2: TButton;

LabelEps: TLabel;

LabelX3: TLabel;

LabelN: TLabel;

LabelRez3: TLabel;

EditEps: TEdit;

EditX3: TEdit;

EditN: TEdit;

EditRez3: TEdit;

ButtonRez3: TButton;

ButtonRez4: TButton;

Memo1: TMemo;

Memo2: TMemo;

EditM: TEdit;

LabelStrok: TLabel;

LabelStolb: TLabel;

EditW: TEdit;

StringGrid1: TStringGrid;

StringGrid2: TStringGrid;

ButtonRez5: TButton;

procedure ButtonRez1Click (Sender: TObject);

procedure ButtonRez2Click (Sender: TObject);

procedure ButtonRez3Click (Sender: TObject);

procedure ButtonRez4Click (Sender: TObject);

procedureEditMChange (Sender: TObject);

procedureEditWChange (Sender: TObject);

procedure ButtonRez5Click (Sender: TObject);

private.

{ Private declarations }.

public.

{ Public declarations }.

end;

var.

Form1: TForm1;

implementation.

{$R *.dfm}.

procedure TForm1. ButtonRez1Click (Sender: TObject);

begin.

if EditX1. Text=' '.

thenShowMessage ('Укажите X').

else.

if (StrToFloat (EditX1.Text))>1.

thenShowMessage ('Sin (X)>1').

else.

if (StrToFloat (EditX1.Text))<-1.

thenShowMessage ('Sin (X)<-1').

else.

EditRez1.Text:=FloatToStr ((Sqr (Sin (StrToFloat (EditX1.Text)))+.

Exp (Exp (5*Ln (Abs (Sqr (StrToFloat (EditX1.Text))+1))));

Ln (Sqr (StrToFloat (EditX1.Text))+1))).

end;

procedure TForm1. ButtonRez2Click (Sender: TObject);

begin.

if EditX2. Text=' '.

thenShowMessage ('Укажите X').

else.

if (StrToFloat (EditX2.Text))<-1.

thenShowMessage ('Sin (X) и Cos (X)<-1').

else.

if (StrToFloat (EditX2.Text))<4.

thenShowMessage ('Логарифмическая ошибка').

else.

EditRez2.Text:=FloatToStr (((Sqr (Sin (StrToFloat (EditX2.Text))))/.

(Sqr (Cos (StrToFloat (EditX2.Text))))+5)+Exp ((1/3)*.

Ln (((Ln (StrToFloat (EditX2.Text)-2))))/.

((Sqr (Sin (StrToFloat (EditX2.Text)))).

+Sqr (StrToFloat (EditX2.Text))+1))).

end;

procedure TForm1. ButtonRez3Click (Sender: TObject);

varD, S: Real;

i:Integer;

begin.

if EditEps. Text=' '.

thenShowMessage ('УкажитеEps').

else.

if EditX3. Text=' '.

thenShowMessage ('Укажите X').

else.

if EditN. Text=' '.

thenShowMessage ('Укажите N').

else.

begin.

for i:=0 to StrToInt (EditN.Text)-1 do.

begin.

D:=(Exp ((Exp (i*Ln (2)))*Ln (StrToFloat (EditX3.Text))));

while (D).

begin.

S:=(S)+(D);

D:=(Exp ((Exp (i*Ln (2)))*Ln (StrToFloat (EditX3.Text))));

end;

end;

end;

EditRez3.Text:=FloatToStr (s).

end;

procedure TForm1. ButtonRez4Click (Sender: TObject);

vari, j: Integer;

begin.

if Memo1.Lines.Count=0.

thenShowMessage ('Укажитемассив').

else.

Memo2.Lines.Clear;

for i:=0 to Memo1.Lines.Count-1 do.

begin.

Memo2.Lines.Add ('0');

for j:=0 to Memo1.Lines.Count-1-i do.

begin.

Memo2.Lines.Strings[i]: =FloatToStr (StrToFloat (Memo2.Lines.Strings[i]).

+StrToFloat (Memo1.Lines.Strings[i+j])).

end;

end;

end;

procedure TForm1. EditMChange (Sender: TObject);

begin.

if EditM. Text' '.

then.

begin.

StringGrid1.RowCount:=strtoint (EditM.Text);

StringGrid2.RowCount:=strtoint (EditM.Text).

end;

end;

procedure TForm1. EditWChange (Sender: TObject);

begin.

if EditW. Text' '.

then.

begin.

StringGrid1.ColCount:=strtoint (EditW.Text);

StringGrid2.ColCount:=strtoint (EditW.Text);

end;

end;

procedure TForm1. ButtonRez5Click (Sender: TObject);

vari, j, z:Integer;

begin.

if EditM. Text=' '.

thenShowMessage ('Укажите количество строк').

else.

if EditW. Text=' '.

thenShowMessage ('Укажите количество столбцов').

else.

if stringgrid1. RowCountstringgrid1.ColCount.

thenshowmessage ('Матрица не квадратная!!!').

else.

begin.

z:=0;

for i:=0 to stringgrid1. RowCount-1 do.

begin.

for j:=0 to stringgrid1. ColCount-1 do.

begin.

if StringGrid1. Cells[i, j]=''.

then z:=1.

end;

end;

end;

if z=1 then ShowMessage ('Введите числа матрицы').

else.

for i:=0 to stringgrid1. RowCount-1 do.

begin.

for j:=0 to StringGrid1. ColCount-1 do.

begin.

if j=StringGrid1.ColCount-1-i.

then.

StringGrid2.Cells[i, j]: =FloatToStr ((i+1)*(i+2)).

else.

StringGrid2.Cells[i, j]: =FloatToStr (0).

end;

end.

end;

end.

Показать весь текст
Заполнить форму текущей работой