- •Часть 2
- •Лабораторная работа № 6. Программирование циклических вычислительных процессов. Итерационные циклы
- •Отладка модулей проекта
- •Отладка синтаксических ошибок
- •Отладка логических ошибок
- •Итерационные циклы
- •Пример создания приложения
- •Сохранение проекта
- •Размещение компонентов на Форме
- •Текст модуля UnIterate
- •6.4. Выполнение индивидуального задания
- •Лабораторная работа № 7. Программирование с использованием строк
- •Краткие теоретические сведения
- •7.1.1. Символьные типы
- •7.1.2. Строковые типы
- •7.1.3. Процедуры и функции для работы со строками
- •Применение компонентов ListBox и ComboBox для работы со строками
- •7.3. Пример создания приложения
- •7.3.1. Сохранение проекта
- •7.3.2. Размещение компонентов на Форме
- •7.3.3. Создание процедуры-обработчика события активизации Формы FormActivate.
- •7.3.4. Создание процедуры-обработчики события ComboBox1KeyPress
- •7.3.5. Создание процедуры-обработчики события нажатия клавиши «мыши» ComboBox1Click
- •7.3.6. Работа с приложением
- •7.4. Текст модуля UnStr
- •7.5. Выполнение индивидуального задания
- •С использованием записей
- •8.1. Краткие теоретические сведения
- •8.2. Пример создания приложения
- •8.2.1. Указания по созданию приложения
- •8.2.2. Размещение компонентов по Форме
- •8.2.3.Создание процедур обработки событий FormCreate и ButtonClick
- •8.2.4. Работа с приложением
- •8.2.5. Текст модуля UnZap
- •8.3. Выполнение индивидуального задания
- •Лабораторная работа № 9. Програмирование с использованием файлов
- •9.1. Краткие теоретические сведения
- •9.2. Пример создания приложения
- •9.2.1. Указания по созданию приложения
- •9.2.2.Размещение компонентов по Форме.
- •9.2.3.Создание процедур обработки событий
- •9.2.4. Текст модуля UnFile
- •9.2.5. Работа с приложением
- •9.3. Выполнение индивидуального задания
- •Лабораторная работа № 10. Программирование с использованием функций и процедур. Процедурные типы. Создание модулей
- •10.1. Краткие теоретические сведения
- •10.1.1. Объявление и описание функций и процедур
- •10.1.2. Различные варианты передачи параметров в функции и процедуры
- •10.1.3. Процедурные типы
- •Текст модуля UnFancProc
- •Текст модуля UnModul
- •Выполнение индивидуального задания
- •Лабораторная работа № 11. Программирование с использованием динамических структур данных
- •11.1. Краткие теоретические сведения
- •11.1.1. Указатели
- •11.2. Использование динамических переменных
- •Пример создания приложения
- •11.3.1. Сохранение проекта
- •Размещение компонентов на Форме
- •11.3.3. Создание процедуры обработки событий FormCreate
- •Текст модуля UnDinMas
- •11.5. Выполнение индивидуального задания
- •Лабораторная работа № 12. Программирование с использованием средств для построения и отображения графиков
- •12.1. Методика построения графиков с помощью компонента tChart
- •12.2. Пример написания программы
- •12.2.1. Настройка формы
- •12.2.2. Работа с компонентом tChart
- •12.2.3. Написание программы обработчика события создания формы
- •12.2.4. Написание программ обработчика событий нажатия на кнопки
- •12.3. Модуль программы построения и отображения графиков
- •12.4. Выполнение индивидуального задания
- •Приложение 1 п1. Свойства и методы компонентов п1.1. Общие свойства компонентов
- •2. Компоненты страницы standard
- •3. Компоненты страницы additional
- •4. Компоненты страницы dialogs
- •П2. Простые типы данных языка object pascal
- •П3. Процедуры и функции для работы со строками
- •Литература
Пример создания приложения
Задание.
Создать Windows-приложение,
которое выводит таблицу значений функции
и ее разложения в ряд в виде суммы
с погрешностью ε=10-4,
для значений x
от xn
до xk
с шагом h=(xk–xn)/8.
На панели интерфейса предусмотреть
возможность управления выводом исходных
данных и погрешности вычислений.
Сохранение проекта
Для нового проекта создайте новую папку, например, X: \ 35эи \ LAB6.
Сохраните проект File | Save Project As…(Файл | Сохранить Проект как…). Сначала сохраните модуль под именем UnIterate, затем файл проекта под именем PrIterate.
Размещение компонентов на Форме
Один из возможных вариантов панели интерфейса создаваемого приложения показан на рисунке 6.1.
Вместо компонента Edit используем компонент SpinEdit, который обеспечивает отображение и редактирование целого числа с возможностью его изменения посредством двойной кнопки.
Установите для компонента SpinEdit1 значения свойств: MinValue = 1, MaxValue = 20.
В тех случаях, когда объем выводимой информации превышает размер поля компонента Memo, целесообразно снабдить его линейками прокрутки. В свойстве ScrollBars компонента Memo1 установим значение ssVertical – появится вертикальная линейка прокрутки.
Рис.6.1. Размещение компонентов на форме
Текст модуля UnIterate
unit UnIterate;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, Spin;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
SpinEdit1: TSpinEdit;
Edit1: TEdit;
Edit2: TEdit;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
CheckBox3: TCheckBox;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Memo1: TMemo;
Label4: TLabel;
Edit3: TEdit;
procedure FormCreate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
SpinEdit1.Text:='8';
Edit1.Text:='0,1';
Edit2.Text:='1';
Edit3.Text:='0,0001';
Memo1.Clear;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
var
eps,xn,xk,x,h,y,s,p,ab,ot:real;
n,i:byte;
begin
n: = StrToInt(SpinEdit1.Text);
xn: = StrToFloat(Edit1.Text);
xk: = StrToFloat(Edit2.Text);
eps: = StrToFloat(Edit3.Text);
h: = (xk–xn)/n;
Memo1.Clear;
if CheckBox1.Checked then
Memo1.Lines.Add('Исходные данные: n= '+SpinEdit1.Text+
' Xn = '+Edit1.Text+' Xk= '+Edit2.Text+
' Eps = '+Edit3.Text);
Memo1.Lines.Add('');
x:=xn;
repeat
y:=2*(sqr(cos(x))-1);
s:=0; p:=1; i:=1;
while abs(p)>eps do
begin
p:=p*(-sqr(2*x))/((2*i-1)*2*i);
s:=s+p;
i:=i+1;
end;
ab:=s-y;
ot:=abs(ab/y)*100;
if CheckBox2.Checked then
if CheckBox3.Checked then
Memo1.Lines.Add('x='+FloatToStrF(x,ffFixed,4,2)+
' S='+FloatToStrF(s,ffFixed,6,3)+
' Y='+FloatToStrF(y,ffFixed,6,3)+
' A='+FloatToStrF(ab,ffFixed,6,3)+
' D='+FloatToStrF(ot,ffFixed,6,3)+'%')
else
Memo1.Lines.Add('x='+FloatToStrF(x,ffFixed,4,2)+
' S='+FloatToStrF(s,ffFixed,6,3)+
' Y='+FloatToStrF(y,ffFixed,6,3)+
' A='+FloatToStrF(ab,ffFixed,6,3))
else
if CheckBox3.Checked then
Memo1.Lines.Add('x='+FloatToStrF(x,ffFixed,4,2)+
' S='+FloatToStrF(s,ffFixed,6,3)+
' Y='+FloatToStrF(y,ffFixed,6,3)+
' D='+FloatToStrF(ot,ffFixed,6,3)+'%')
else
Memo1.Lines.Add('x='+FloatToStrF(x,ffFixed,4,2)+
' S='+FloatToStrF(s,ffFixed,6,3)+
' Y='+FloatToStrF(y,ffFixed,6,3));
x:=x+h;
until x>xk;
end;
end.
