Поиск
Версия для слабовидящих
Календарь
Январь 2019
Пн Вт Ср Чт Пт Сб Вс
 123456
78910111213
14151617181920
21222324252627
28293031  
Полезные ссылки

komobr

 

iuu2

 


Январь 2019

Метод статистических испытаний (Монте-Карло).

Программирование метода статистических испытаний

 (Метод Монте-Карло).

Интерфейс программы решения этой задачи показан на рисунке

1.1

 Чтобы можно было проследить за установлением значения числа пи, испытания разбиваются на серии. В одной серии производится N испытаний, а число таких серий равно К. После завершения работы программы на экран выводится результат. Окно с формой включает в себя следующие элементы интерфейса:

  • Editl,Edit2,Edit3 — поля для ввода значений К , N  и вывода значения Pi;
  • Labell, Label2, Label3 — метки к полям ввода и вывода;
  • Buttonl — командная кнопка для запуска вычислений;
Элемент Свойство Значение
Label1 caption K
Label2 caption N
Label3 caption Pi
Edit1 text 0
Edit2 text 0
Edit3 text  
Button1 caption Вычислить

Обработка события ButtonlClick производится следующей процедурой:

Procedure TForm6.ButtonlClick(Sender: TObject);

Var i,j: integer;

var K,N,M: integer;

var X,Y,Pi: real;

begin

K:=StrToInt(Edit1.Text);

N:=StrToInt(Edit2.Text);

M:=0;

for i:=1 to K do

begin

for j:=1 to N do

begin

X:=2*Random-1;

Y:=2*Random-1;

if X*X+Y*Y<=1 then

M:=M+1;

end;

end;

Pi:=4*M/(i*N);

Edit3.Text:=FloatToStr(Pi);

1.2

Результаты испытаний

Скачать разработку “Метод статистических испытаний” (Docx)

Скачать файлы проекта (RAR)

Проект “Квадратное уравнение”.

Проект  «Решение квадратного уравнения»

В этом задании вы создадите программу, в которой будет решаться квадратное уравнение стандартного вида ax2+bx+c=0. Форма проекта должна иметь следующий вид:

  1. В заголовке Формы запишите: «Решение квадратного уравнения».
  2. Разместите на Форме необходимые объекты (Panel(3 объекта), Edit(6), Label(8), Button(2)).
  3. Сохраните Проект.
  4. В разделе описания переменных varнадо перечислить все переменные, которые будут использоваться в программе, и указать тип.

   В нашем случае все переменные одного типа – вещественные числа. Теперь эти переменные будут «видны» всей программе. Описание переменных можно производить и в каждой процедуре, где они используются.

2.1 2.2

  1. Теперь надо записать процедуру вычисления дискриминанта для кнопки «Вычислить»:

a:=StrToFloat (Edit1.Text);

b:= StrToFloat (Edit2.Text);

c:=StrToFloat (Edit3.Text);

D:=b*b-4*a*c;

При решении необходимо использовать ветвление: если    d>0, то выводится сообщение ‘Квадратное уравнение не имеет корней’ (использовать MessageDlg), а в Edit выводится значение дискриминанта.

Если  d>0 ‘Квадратное уравнение  имеет два корня’.

Вычисляются корни по формулам:

x1:= (-b + Sqrt(d))/(2*a);

x2:= (-b – Sqrt(d))/(2*a);

В Edit выводится дискриминант и значения корней.

Если d=0, ‘Квадратное уравнение  имеет один корень’, в Edit дискриминант и  значение по формуле:

x1:= (-b)/(2*a);

  1. Подсказка для  d<0:

if d<0 then  begin

MessageDlg(‘Квадратное уравнение не имеет корней‘,mtWarning, [mbOk, mbCancel],0);

Edit4.Text:=FloatToStr(D);

end;

Программный код.

unit Unit1;

{$mode objfpc}{$H+}

interface

uses

  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,

StdCtrls;

type

{ TForm1 }

  TForm1 = class(TForm)

    Button1: TButton;

    Button3: TButton;

    Edit1: TEdit;

    Edit2: TEdit;

    Edit3: TEdit;

    Edit4: TEdit;

    Edit5: TEdit;

    Edit6: TEdit;

    Label1: TLabel;

    Label10: TLabel;

    Label2: TLabel;

    Label3: TLabel;

    Label4: TLabel;

    Label5: TLabel;

    Label6: TLabel;

    Label7: TLabel;

    Label8: TLabel;

    Label9: TLabel;

    Panel1: TPanel;

    Panel2: TPanel;

    Panel3: TPanel;

procedure Button1Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

private

{ private declarations }

public

{ public declarations }

end;

var

  Form1: TForm1;

a, b, c, D, X1, X2:Real;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);

begin

a:=StrToFloat (Edit1.Text);

b:= StrToFloat (Edit2.Text);

c:=StrToFloat (Edit3.Text);

D:=b*b-4*a*c;

ifd<0 thenbegin

//если d<0 выводится сообщение, а иначе вычисляются корни

MessageDlg(‘Квадратное уравнение не имеет корней’,mtWarning, [mbOk, mbCancel],0);

Edit4.Text:=FloatToStr(D);

end;

if d>0 then begin    MessageDlg(‘Квадратноеуравнениеимеетдвакорня‘,mtWarning, [mbOk, mbCancel],0);

X1:= (-b + Sqrt(d))/(2*a);

x2:= (-b – Sqrt(d))/(2*a);

Edit5.Text:=FloatToStr(x1);

Edit6.Text:=FloatToStr(x2);

Edit4.Text:=FloatToStr(D);

end;

if d=0 then begin

MessageDlg(‘Квадратноеуравнениеимеетодинкорень‘,mtWarning, [mbOk, mbCancel],0);

 X1:= (-b)/(2*a); Edit5.Text:=FloatToStr(x1);  Edit4.Text:=FloatToStr(D);

end;

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

 Edit1.Clear;

 Edit2.Clear;

 Edit3.Clear;

 Edit4.Clear;

 Edit5.Clear;

Edit6.Clear;

end;

end.                                 

Скачать проект “Квадратное уравнение”.

Lazarus. Первый проект

Проект “Простейший калькулятор”.

Создадим приложение «Калькулятор», которое может складывать, вычитать, умножать и делить два числа. В этой работе мы познакомимся с тем, как выбирать компоненты (объекты) с панели инструментов, а также научимся преобразовывать типы данных.

Порядок действий:

1. Запустим среду Lazarus и сохраним файлы нашего проекта в отдельной папке. Сам проект можно сохранить под именем ‘calc’.

2. Разместим на форме три метки класса TLabel, три текстовых поля класса TEdit и четыре кнопки класса TButton. Все эти объекты можно брать с закладки Standart:

1.1

Выбор объектов на панели стандартная

3. С помощью окна Инспектор объектов выделяем объекты и меняем их свойства согласно нижеприведенной таблице:

Объект Свойство Значение свойства
форма Form1 Надпись caption Калькулятор
метка Label1 Надпись caption A
метка Label2 Надпись caption B
метка Label3 Надпись caption Результат
Кнопка Button1 Надпись caption +
Кнопка Button2 Надпись caption
Кнопка Button3 Надпись caption *
Кнопка Button4 Надпись caption /
Текстовое поле Edit1 text 0
Текстовое поле Edit2 text 1
Текстовое поле Edit3 text Пустая строка

 

4. В результате наша форма вместе с другими объектами на ней принимает следующий вид:

1.2

 

 

 

 

 

 

 

 

 

 

 

Измененная форма

5. Напишем процедуру-обработчик нажатия по кнопке сложения (Button1). Для этого в окне инспектора объектов выбираем закладку События и находим событие OnClick (это и есть нажатие по кнопке).

1.3

 

 

 

 

 

 

 

 

 

Выбор события

6. Наберем  следующий текст внутри процедуры-обработчика:

procedure TForm1.Button1Click(Sender: TObject);

var a,b,result:real; // Объявление локальных переменных вещественного типа

begin

a:=StrToFloat(edit1.Text);{Переводим текст, находящийся в поле ввода edit1 в вещественное число. Если необходимо работать с целыми числами, то используется функция StrToInt}

b:=StrToFloat(edit2.Text);

result:=a+b;

edit3.Text:=FloatToStr(result); {В текстовое поде ввода edit3 выводим полученную сумму, не забыв при этом сделать обратное преобразование вещественного числа result в строку. Если необходимо работать с целыми числами, то используется функция IntToStr}

end;

7. Аналогично напишем процедуры-обработчики нажатий по кнопкам вычитания, умножения и деления, не забыв при этом изменить знак операции на соответствующий. Например, для деления процедура выглядит так:

procedure TForm1.Button4Click(Sender: TObject);

var a,b,result:real;

begin

a:=StrToFloat(edit1.Text);

b:=StrToFloat(edit2.Text);

result:=a/b;

edit3.Text:=FloatToStr(result);

end;

8. Сохраним все файлы проекта (Файл→Сохранить всё)

9. Выполним программу (F9 или меню Запуск→Запуск)

1.4

 

 

 

 

 

 

 

 

 

 

 

 

Скачать проект “Простейший калькулятор” (в формате  docx)

Скачать файлы проекта (RAR).