2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Помогите пожалуйста разобраться в программе в Pascal.
Сообщение27.12.2013, 19:51 
Аватара пользователя
Задание: Напечатать значения х, при которых выполняется неравенство $0.8xarctgx>ln(1+x^2)$ при изменении x от a до b с шагом h. Значения переменных а, b и h задать самостоятельно.
Моя программа:
Program 1;
Var x,y,a,b,h,f,g,xgr:real;
Begin
WriteLn;
WriteLn('Введите a,b,h,');
ReadLn(a,b,h);
WriteLn;
WriteLn('a=', a:1,' b=',b:1, ' h=', h:1);
WriteLn('x:');
xgr:=b+0.02*h;
x:=a;
repeat f:=0.8*x*arctan(x);
g:=ln(1+x*x);
if f>g then WriteLn(x:1:0);
x:=x+h;
until x>xgr
End.

Что означает строчка выделенная синим цветом? и что лучше там написать, ну всмысле вместо 0.02

 
 
 
 Re: Помогите пожалуйста разобраться в программе в Pascal.
Сообщение27.12.2013, 20:14 
Аватара пользователя
А в каком смысле эта программа "ваша"? Вы ее купили?
Синяя строчка обеспечивает защиту от ошибок округления и гарантирует, что
конечная точка интервала будет обработана. Оставьте эту строчку как есть.

 
 
 
 Re: Помогите пожалуйста разобраться в программе в Pascal.
Сообщение27.12.2013, 22:41 
Аватара пользователя
Конечно, в такой маленькой программе оптимизация не обязательна, но зачем столько переменных? $f$ и $g$ совершенно излишни. А $y$ совсем не используется.

 
 
 
 Re: Помогите пожалуйста разобраться в программе в Pascal.
Сообщение28.12.2013, 08:09 
Кроме того: в WriteLn('a=', a:1,' b=',b:1, ' h=', h:1); и в WriteLn(x:1:0); спецификаторы ":1:0" и уж тем более ":1" выглядят довольно бессмысленно.

 
 
 
 Re: Помогите пожалуйста разобраться в программе в Pascal.
Сообщение28.12.2013, 14:27 
provincialka в сообщении #807023 писал(а):
Конечно, в такой маленькой программе оптимизация не обязательна, но зачем столько переменных?

Вы не поверите, но уже в конце 70-ых любой оптимизирующий компилятор умел распределять регистры под промежуточные результаты наиболее оптимальным образом. Так что для
Код:
f:=0.8*x*arctan(x);
g:=ln(1+x*x);
if f>g

сгенерируется тот же код, что и для
Код:
if 0.8*x*arctan(x) > ln(1+x*x)

 
 
 
 Re: Помогите пожалуйста разобраться в программе в Pascal.
Сообщение28.12.2013, 20:23 
Аватара пользователя
Ну, тогда ладно, может, автору так понятней.

 
 
 
 Re: Помогите пожалуйста разобраться в программе в Pascal.
Сообщение28.12.2013, 20:48 

(Оффтоп)

Joker_vD в сообщении #807140 писал(а):
Вы не поверите, но уже в конце 70-ых любой оптимизирующий

Вы не поверите, но тут дело вовсе не в оптимизирующности компилятора. А в том,что за бессмысленным нагромождением идентификаторов довольно трудно разглядеть существо дела. И, что печальнее всего -- самому же аффтару и трудно.

 
 
 
 Re: Помогите пожалуйста разобраться в программе в Pascal.
Сообщение28.12.2013, 21:18 
Аватара пользователя

(Оффтоп)

ewert в сообщении #807300 писал(а):
за бессмысленным нагромождением идентификаторов довольно трудно разглядеть существо дела

xgr - явно ""граница икс :wink:

 
 
 
 Re: Помогите пожалуйста разобраться в программе в Pascal.
Сообщение28.12.2013, 21:51 

(Оффтоп)

nikvic в сообщении #807320 писал(а):
xgr - явно ""граница икс :wink:

Это да; но остальные-то -- откровенно лишь для запудривания мозгов и моральной подготовки к Новому Году.

 
 
 
 Re: Помогите пожалуйста разобраться в программе в Pascal.
Сообщение18.02.2014, 06:18 
Как минимум надо вычисление функций в подпрограмму(ы) вынести. Привыкать к структурированию кода, особенно своего, лучше сразу.

Может так автору сразу все понятней станет.

 
 
 [ Сообщений: 10 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group