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

Описание:
Доступные действия
Введите защитный код для скачивания файла и нажмите "Скачать файл"
Защитный код
Введите защитный код

Нажмите на изображение для генерации защитного кода

Текст:

Министерство сельского хозяйства Российской Федерации

КРАСНОЯРСКИЙ ГОСУДАРСТВЕННЫЙ АГРАРНЫЙ УНИВЕРСИТЕТ

Институт менеджмента и информатики

Кафедра «Информационных систем

и технологий в экономике»

Курсовая работа

по дисциплине Объектно-ориентированный анализ и программирование на тему

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

Выполнил(а) студент(ка) направления 080500.62 – «Бизнес-информатика»,

 2 курса, группы БИ-25,

                                      Аксененко Иван Андреевич

 


Руководитель                                               Титовский Сергей Николаевич    

 


Представлена на проверку                         «____» ____________20__г.

Проверена                                                    «____» ____________20__г.

Примечание _______________________________________________

Оценка ___________________________________________________

Красноярск 20__

Содержание

Введение. 3

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

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

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

Решение задачи 3. 11

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

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

Заключение. 22

Список используемой литературы.. 23

Приложение 1. 24

 


Введение

Выполнение курсовой работы является важной составной частью в изучении дисциплины «Объектно-ориентированный анализ и программирование», которая является обязательной дисциплиной базовой части профессионального цикла дисциплин подготовки студентов по направлению подготовки 080500.62 «Бизнес информатика».

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

Задачи курсовой работы – приобретение навыков

-     Постановки задачи разработки

-     Выбора используемых программных средств

-     Разработки программных продуктов

-     Подготовки документации на программы.

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

Таким образом, работа над курсовой работой  позволяет систематизировать знания по дисциплине, учит работать со специальной литературой, расширяет кругозор студента и готовит его к дальнейшей самостоятельной работе.


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

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

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

Задача 1: Найти y в данном выражении:  z = + sin,   a = sinx.

Задача 2:  Вычислить выражение y = ln () - e +  , a = 0,5

Задача 3: Вычислить сумму ряда  S =

Задача 4: Написать программу расчета среднего арифметического (СА) значения положительных элементов в одномерном массиве, имеющих четные индексы.

Задача 5: В квадратной матрице [Aij], i,j= заменить нулями элементы с четной суммой индексов, не превышающие некоторого числа X.

Подход к построению программы заключается  в том, что данная программа будет состоять из 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 (Результат вычисления при некорректных данных)

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


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

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

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

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

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

procedure TForm1.ButtonRez2Click(Sender: TObject);

const e=2.7;

begin

  if EditX2.Text=""

thenShowMessage ("Укажите X")

else

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

thenShowMessage ("Sin(X) и Cos(X)<-1")

else

if (StrToFloat(EditX2.Text))<0

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

else

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

           5*(StrToFloat(EditX2.Text))+4))-Exp((0.5/(StrToFloat(EditX2.Text)))*

Ln(e))+Sqrt(Sin((StrToFloat(EditX2.Text))/

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

end;

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

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

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

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

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


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

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

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

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

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

procedure TForm1.ButtonRez3Click(Sender: TObject);

varS,y:Real;

i:Integer;

begin

  S:=0;

y:=0;

  if EditX3.Text=""

thenShowMessage ("Укажите X")

else

     if EditN.Text=""

thenShowMessage ("Укажите N")

else

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

begin

y:=(1/Exp(i*Ln(StrToFloat(EditX3.Text))));

S:=(S)+(y);

end;

   EditRez3.Text:=FloatToStr(S)

end;

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

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

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

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


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

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

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

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

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

procedure TForm1.ButtonRez4Click(Sender: TObject);

var i:Integer;

k,s:Real;

begin

if Memo1.Lines.Count=0

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

else

s:=0;

k:=0;

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

ifStrToFloat(Memo1.Lines.Strings[i])>0 then

begin

k:=k+StrToFloat(Memo1.Lines.Strings[i])

end;

i:=i+2;

s:=k/2;

    EditRez4.Text:=FloatToStr(s)

end;

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

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

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


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

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

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

Рис. 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 EditX5.Text=""

then  ShowMessage ("Укажите X")

else

if StringGrid1.RowCount<>StringGrid1.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 StringGrid1.Cells[i,j]>=EditX5.Text

then

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

else

StringGrid2.Cells[i,j]:=StringGrid1.Cells[i,j]

end;

end;

end;

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

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

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

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

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

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

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

 


Заключение

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


Список используемой литературы

1.            http://www.tadviser.ru/index.php/  - TAdviser – портал выбора технологий и поставщиков

2.            http://nad-vasiluk.narod.ru/met_prog.htm - Методы и технологии программирования

3.            http://pas1.ru/ - Язык Pascal. Программирование для начинающих

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


Приложение 1

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

programProjectZadania;

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, Grids, StdCtrls, ComCtrls;

type

  TForm1 = class(TForm)

    PageControl1: TPageControl;

    Zadanie1: TTabSheet;

    LabelX1: TLabel;

    LabelRez1: TLabel;

    EditX1: TEdit;

    EditRez1: TEdit;

    ButtonRez1: TButton;

    Zadanie2: TTabSheet;

    LabelX2: TLabel;

    LabelRez2: TLabel;

    EditX2: TEdit;

    EditRez2: TEdit;

    ButtonRez2: TButton;

    Zadanie3: TTabSheet;

    LabelX3: TLabel;

LabelN: TLabel;

    LabelRez3: TLabel;

    EditX3: TEdit;

EditN: TEdit;

    EditRez3: TEdit;

    ButtonRez3: TButton;

    Zadanie4: TTabSheet;

    ButtonRez4: TButton;

    Memo1: TMemo;

    Zadanie5: TTabSheet;

LabelStrok: TLabel;

LabelStolb: TLabel;

EditM: TEdit;

EditW: TEdit;

    StringGrid1: TStringGrid;

    StringGrid2: TStringGrid;

    ButtonRez5: TButton;

    LabelX5: TLabel;

    EditX5: TEdit;

    EditRez4: TEdit;

procedure ButtonRez1Click(Sender: TObject);

procedure ButtonRez2Click(Sender: TObject);

procedure ButtonRez3Click(Sender: TObject);

procedure ButtonRez4Click(Sender: TObject);

procedure ButtonRez5Click(Sender: TObject);

procedureEditMChange(Sender: TObject);

procedureEditWChange(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);

const e=2.7;

begin

  if EditX2.Text=""

thenShowMessage ("Укажите X")

else

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

thenShowMessage ("Sin(X) и Cos(X)<-1")

else

if (StrToFloat(EditX2.Text))<0

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

else

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

           5*(StrToFloat(EditX2.Text))+4))-Exp((0.5/(StrToFloat(EditX2.Text)))*

Ln(e))+Sqrt(Sin((StrToFloat(EditX2.Text))/

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

end;

procedure TForm1.ButtonRez3Click(Sender: TObject);

varS,y:Real;

i:Integer;

begin

  S:=0;

y:=0;

  if EditX3.Text=""

thenShowMessage ("Укажите X")

else

     if EditN.Text=""

thenShowMessage ("Укажите N")

else

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

begin

y:=(1/Exp(i*Ln(StrToFloat(EditX3.Text))));

S:=(S)+(y);

end;

   EditRez3.Text:=FloatToStr(S)

end;

procedure TForm1.ButtonRez4Click(Sender: TObject);

var i:Integer;

k,s:Real;

begin

if Memo1.Lines.Count=0

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

else

s:=0;

k:=0;

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

ifStrToFloat(Memo1.Lines.Strings[i])>0 then

begin

k:=k+StrToFloat(Memo1.Lines.Strings[i])

end;

i:=i+2;

s:=k/2;

    EditRez4.Text:=FloatToStr(s)

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=""

then  ShowMessage ("Укажитеколичествострок")

else

    if EditW.Text=""

then  ShowMessage ("Укажитеколичествостолбцов")

else

     if EditX5.Text=""

then  ShowMessage ("Укажите X")

else

if StringGrid1.RowCount<>StringGrid1.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 StringGrid1.Cells[i,j]>=EditX5.Text

then

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

else

StringGrid2.Cells[i,j]:=StringGrid1.Cells[i,j]

end;

end;

end;

end.

Информация о файле
Название файла Решение вычислительных задач в объективно-ориентированной среде визуального программирования от пользователя Гость
Дата добавления 5.5.2020, 18:17
Дата обновления 5.5.2020, 18:17
Тип файла Тип файла (zip - application/zip)
Скриншот Не доступно
Статистика
Размер файла 417.96 килобайт (Примерное время скачивания)
Просмотров 364
Скачиваний 81
Оценить файл