Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Если программа выполняет расчеты методом Монте-Карло, то известно, что чем больше количество экспериментов (статистика расчета), тем точнее результат моделирования. Пользователь может задать значение статистики в поле ввода, после чего это значение используется как количество итераций при расчете. Можно в программе объявить переменную, ответственную за статистику, как var Stat: integer; В этом случае максимальное значение статистики = 2147483647. Это легко проверить, используя следующий код:
var stat:integer;
begin
ShowMessage(IntToStr(High(stat)));
end;
В этом случае при разработке кода можно использовать оператор цикла:
for counter:= initialValue to finalValue do statement
Оператор цикла-счетчика for использует в качестве переменной цикла counter переменную Ordinal type (порядковый тип), к которому относится integer. Но в этом случае перед использованием значения статистики в программе необходимо проверить введенное пользователем значение, чтобы оно было меньше максимально допустимого для типа integer.
Можно использовать другой подход: объявить переменную статистики как
var stat:int64;
В этом случае максимальное значение переменной 9223372036854775807 удовлетворит даже самые смелые надежды пользователя, хотя проверка введенного значения, видимо, тоже необходима, поскольку никто не запрещает пользователю ввести в поле ввода что угодно. При работе со статистикой, объявленной как int64, нужно иметь в виду несколько моментов. Функция конвертирования строкового значения одинаково хорошо работает как с integer, так и с int64, но для обратного преобразования существуют две разные функции: StrToInt (const S: string): Integer; и StrToInt64 (const S: string): Int64;. В случае использования int64 невозможно использование цикла-счетчика for. Применение этого цикла приведет к ошибке. В старших версиях компилятор Delphi указывает на ошибку. Чтобы этого не произошло, при разработке кода расчетного блока программы цикл for целесообразно заменить на цикл while с инкрементированием счетчика в коде программы. Например:
var
i,Stat: int64;//i – счетчик, Stat - статистика
Begin
i:= 0; //обнуляем счетчик цикла
Stat:= StrToInt64(Form1.Edit1.Text);//Значение статистики
while(i < Stat)
Begin
... {тело цикла}...
inc(i);
End; End;
Дата публикования: 2014-11-03; Прочитано: 342 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!