![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Пример 3
Рассмотрим программу, которая вычисляет значение числа p с точностью, задаваемой пользователем во время работы программы. В основе алгоритма вычисления лежит тот факт, что сумма ряда 1 - 1/3 + 1/5 -1/7 + 1/9 +... приближается к значению p/4 при достаточно большом количестве членов ряда. Каждый член ряда с номером n вычисляется по формуле: 1/(2*n - 1) и умножается на минус один, если n четное (определить, является ли п четным, можно проверкой остатка от деления п на 2). Вычисление заканчивается тогда, когда значение очередного члена ряда становится меньше, чем заданная точность вычисления. Вид диалогового окна программы во время ее работы приведен на рис. 2.15. Пользователь вводит точность вычисления в поле ввода (Editi). После щелчка на командной кнопке Вычислить (Buttonl) программа вычисляет значение числа л и выводит результат в поле метки (Labeii). Текст программы приведен в листинге 2.6. Как и в предыдущих примерах, основную работу выполняет процедура обработки события OnClick. Рис. 2.15. Диалоговое окно программы Вычисление ПИ Листинг 2. 6. Вычисление числа p unit pi_; interface Uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; Type TForm1 = class(TForm) Edit1: TEdit; // точность вычисления Button1: TButton; // кнопка Вычислить Label1: TLabel; Label2: TLabel; // поле вывода результата procedure ButtonlClick(Sender: TObject); private { Private declarations } Public { Public declarations) End; Var Form1: TForm1; Implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); Var pi: real; // вычисляемое значение ПИ t: real; // точность вычисления n: integer; // номер члена ряда elem: real; // значение члена ряда Begin pi: = 0; n: = 1; t: = StrToFloat(editl.text); elem: = 1; // чтобы начать цикл while elem > = t do Begin elem: = 1 / (2*n - 1); if n MOD 2=0 then pi: = pi — elem else pi: = pi + elem; n: = n + 1; End; pi: = pi * 4; labell.caption: = 'ПИ равно '+ FloatToStr(pi) + #13 + 'Просуммировано '+IntTostr(n)+' членов ряда.'; end; End.
|