Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Пример 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.

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.