Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Рудник_Э-11_Лабораторная_работа_6

.docx
Скачиваний:
18
Добавлен:
15.04.2015
Размер:
226.04 Кб
Скачать

Учреждение образования

Гомельский государственный технический университет имени П.О. Сухого

Кафедра «Информатика»

Лабораторная работа № 6

по дисциплине: “Информатика”

Программирование циклических алгоритмов на языке Delphi. Табулирование функций.

Дата сдачи отчета Выполнил студент группы Э-11

Рудник Роман

Допуск к защите

Принял преподаватель

Дата защиты Богданова Н.С.

Цель работы: Получить навыки разработки циклических алгоритмов и их реализации в среде Delphi (на примере табулирования функции одной переменной). Научиться использовать в проекте несколько форм, новые визуальные компоненты StringGrid, Chart, RadioGroup и проверять корректность ввода исходных данных.

Задание 1

1. Табулирование функции одной переменной

В соответствии с видом функции, приведенном в таблице 1, вычислить значения функции y=f(x,a,b) для значений аргумента x, изменяющегося в интервале от xнач до xкон с шагом ∆x, и заданных констант a и b.

Исходные данные для отладки программы (xнач, xкон, ∆x, a, b), выбрать самостоятельно из интервала значений, где заданные функции определены. Для ввода исходных данных использовать главную форму. Выполнить проверку корректности ввода исходных данных (можно всех одновременно), используя защищенный блок.

Исходные данные и результаты вывести на второй форме. Значения аргумента x и функции y вывести в текстовую таблицу ВК StringGrid, используя форматный вывод, строки таблицы пронумеровать. Построить график функции y=f(x,a,b), используя компонент Chart.

По желанию можно предусмотреть в программе возможность табулирования трех функций (свой вариант и два соседних), используя для выбора нужной функции ВК RadioGroup.

Вид окна проекта

Таблица используемых ВК

Элемент интерфейса

Компонент

Свойство

Значение свойства

Заголовок окна

Form1

Caption

Лабораторная работа 6 1 задание

Заголовок окна

Form2

Caption

Ответ

x нач

Label1

Caption

x нач

x кон

Label2

Caption

x кон

шаг

Label3

Caption

шаг

a

Label4

Caption

a

b

Label4

Caption

b

Кнопка решить

Button1

Caption

Решить

Поле ввода x нач

Edit1

Text

Поле ввода x кон

Edit2

Text

Поле ввода шага

Edit3

Text

Поле ввода a

Edit4

Text

Поле ввода b

Edit5

Text

Картинка функции

Image

Picture

Снимок.jpg

Таблица с результатом

Stringgrid1

Colcount

Rowcount

Fixsedcols

fixsedrows

3

50

0

1

График функкции

Chart1

Sirieslist

line

Таблица используемых событий

Компонент

Событие

Имя процедуры обработки события

Реализуемый алгоритм

Button1

OnClick

Tform1.Button1Click

Расчёт функции

Таблица используемых переменных

Имя переменной в задаче

Имя переменной в программе

Тип переменной

Комментарий

xn

xn

real

Начальное занчение х

xk

xk

real

Конечное значение х

dx

dx

real

Шаг

x

x

real

переменная

y

y

real

Результат

a

a

real

переменная

b

b

real

переменная

Схема олгаритма

Начало

0

ввод x нач., х кон., dx, a, b

Вывод шапки таблицы с исходными данными

x=xнач

i=1

x<=xкон

Вывод i, x, y

x=x+dx

i=i+1

Конец

1

2

3

4

5

Нет

6

7

8

9

10

Рукописные тесты

Тест1

Исходные данные: x нач.=1, х кон.=70, dx=3, a=4, b=5

Ожидаемый результат :

n/n x y

  1. 1 112,385932:

  2. 4 4732,199222

  3. 7 14078,15487

  4. 10 4145,922266

  5. 13 4781,704840

  6. 16 6655,533260

  7. 19 6282,082651

  8. 22 6504,110513

  9. 25 10139,4393d

  10. 28 18940,45362

  11. 31 25301,20465

  12. 34 39311,18425

  13. 37 214292,7992

  14. 40 583308,5540

  15. 43 73925,45893

  16. 46 55306,69245

  17. 49 59606,85561

  18. 52 46498,09812

  19. 55 39149,49655

  20. 58 50839,13412

  21. 61 84726,06688

  22. 64 104982,613

  23. 67 140994,4965

24 70 577795,2948

Распечатка текста процедуры

procedure TForm1.Button1Click(Sender: TObject);

var

xn,xk,dx,x,y,a,b:real;

i:byte;

begin

xn:=StrToFloat(Edit1.Text);

xk:=StrToFloat(Edit2.Text);

dx:=StrToFloat(Edit3.Text);

a:=StrToFloat(Edit4.Text);

b:=StrToFloat(Edit5.Text);

with form2.stringgrid1 do

begin

Cells[0,0]:='№n/n';

Cells[1,0]:='x';

Cells[2,0]:='y';

end;

form2.show;

form2.Chart1.SeriesList[0].Clear;

x:=xn;

i:=1;

while x<=xk do

begin

y:=(sqr(a+b*x))/(1+power(cos(a*x),3));

Form2.StringGrid1.Cells[0,i]:=IntToStr(i);

Form2.StringGrid1.Cells[1,i]:=FloatToStr(x);

Form2.StringGrid1.Cells[2,i]:=FloatToStr(y);

form2.Chart1.SeriesList[0].AddXY(x,y);

x:=x+dx;

i:=i+1;

end;

end;

end.

Распечатка формы с результатами работы

Вывод: Получил навыки разработки циклических алгоритмов и их реализации в среде Delphi (на примере табулирования функции одной переменной). Научился использовать в проекте несколько форм, новые визуальные компоненты StringGrid, Chart, RadioGroup и проверил корректность ввода исходных данных.