Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.20;
Скачать: CL | DM;

Вниз

Скорость работы программы во время выполнения цикла   Найти похожие ветки 

 
ТехникПТО ©   (2005-03-03 19:40) [0]

У меян в программе выполняеться большой цикл... и во время его выполнения.. программа "подвисает"... можно ли этого избежать??? чтобы не происходило подвисание программы...


 
Alex_Petr ©   (2005-03-03 19:41) [1]

Application.ProcessMessages ?


 
ТехникПТО ©   (2005-03-03 19:42) [2]


> Application.ProcessMessages ?

а поподробнее?


 
begin...end ©   (2005-03-03 19:45) [3]

> ТехникПТО ©   (03.03.05 19:42) [2]

Подробнее: вставьте строку Application.ProcessMessages в тело цикла. Желательно, однако, вызывать ProcessMessages не на каждой итерации цикла, а по мере необходимости.


 
Anatoly Podgoretsky ©   (2005-03-03 19:50) [4]

И ответ по вопросу - скорость выполнения программы во время выполнения цикла не меняется.


 
ТехникПТО ©   (2005-03-03 19:58) [5]


> Подробнее: вставьте строку Application.ProcessMessages в
> тело цикла. Желательно, однако, вызывать ProcessMessages
> не на каждой итерации цикла, а по мере необходимости

а в какое место цикла кидать?? в начало или в конец?


 
ТехникПТО ©   (2005-03-03 20:00) [6]


> И ответ по вопросу - скорость выполнения программы во время
> выполнения цикла не меняется

идет чтение списка... обращение в процедуре которая проверяет.. имееться ли на странице такое слово или нет... если да то меняет цвет шрифта... учитывая скорость инета и другие факторы...
порой даже цикл вознобновляеться вновь до его окончания...т.е. он еще не успел обработаться полностью а его уже заного гонят.. дык как быть??


 
default ©   (2005-03-03 20:04) [7]

ТехникПТО ©   (03.03.05 20:00) [6]
откройте исходник Application.ProcessMessages и посмотрите что там делается чтобы не писать [5]
ТехникПТО ©   (03.03.05 20:00) [6]
АП туфту не говорит(по крайней мере я не видел ни разу)
так что прежде чем апелировать его словам думай и ищи ошибку у себя
скорость выполнения цикла изменится, но не программы


 
DiamondShark ©   (2005-03-03 20:06) [8]


> а в какое место цикла кидать?? в начало или в конец?

Так ведь цикла твоего никто в глаза не видел.


 
ТехникПТО ©   (2005-03-03 20:07) [9]


> АП туфту не говорит(по крайней мере я не видел ни разу)
> так что прежде чем апелировать его словам думай и ищи ошибку
> у себя
> скорость выполнения цикла изменится, но не программы

как ускорить скорость выполнения цикла?


 
ТехникПТО ©   (2005-03-03 20:09) [10]


> Так ведь цикла твоего никто в глаза не видел.


procedure TForm1.SearchAndHighlightText(aText: string);
var
 i: Integer;
doc:OleVariant;
begin
If Form8.CheckBox11.Checked=True then begin
try
doc:=Form1.EmbeddedWB1.oleobject.document.frames.item(2).document;
 for i := 0 to Doc.All.Length - 1 do
 begin
 Application.ProcessMessages;
   if (Pos(aText, Doc.All.Item(i).InnerText)<>0)
    and (length(Doc.All.Item(i).InnerText)=length(aText)) then
  begin
If Form8.checkBox1.Checked=true then Doc.All.Item(i).Style.BackGroundColor:=Form8.Edit1.Text;
If Form8.checkBox6.Checked=true then Doc.All.Item(i).Style.Color:=Form8.Edit2.Text;
exit;
   end;
 end;
except
end;
end;

If Form8.CheckBox13.Checked=True then begin
try
doc:=Form1.EmbeddedWB1.oleobject.document.frames.item(2).document;
 for i := 0 to Doc.All.Length - 1 do
 begin
 Application.ProcessMessages;
   if (Pos(aText, Doc.All.Item(i).InnerText)<>0)
    and (length(Doc.All.Item(i).InnerText)=length(aText)) then
  begin
If Form8.checkBox2.Checked=true then Doc.All.Item(i).Style.BackGroundColor:=Form8.Edit1.Text;
If Form8.checkBox8.Checked=true then Doc.All.Item(i).Style.Color:=Form8.Edit2.Text;
exit;
   end;
 end;
except
end;
end;

If Form8.CheckBox12.Checked=True then begin
try
doc:=Form1.EmbeddedWB1.oleobject.document.frames.item(2).document;
 for i := 0 to Doc.All.Length - 1 do
 begin
 Application.ProcessMessages;
   if (Pos(aText, Doc.All.Item(i).InnerText)<>0)
    and (length(Doc.All.Item(i).InnerText)=length(aText)) then
  begin
If Form8.checkBox5.Checked=true then Doc.All.Item(i).Style.BackGroundColor:=Form8.Edit1.Text;
If Form8.checkBox7.Checked=true then Doc.All.Item(i).Style.Color:=Form8.Edit2.Text;
exit;
   end;
 end;
except
end;
end;

If Form8.CheckBox14.Checked=True then begin
try
doc:=Form1.EmbeddedWB1.oleobject.document.frames.item(2).document;
 for i := 0 to Doc.All.Length - 1 do
 begin
 Application.ProcessMessages;
   if (Pos(aText, Doc.All.Item(i).InnerText)<>0)
    and (length(Doc.All.Item(i).InnerText)=length(aText)) then
  begin
If Form8.checkBox3.Checked=true then Doc.All.Item(i).Style.BackGroundColor:=Form8.Edit1.Text;
If Form8.checkBox9.Checked=true then Doc.All.Item(i).Style.Color:=Form8.Edit2.Text;
exit;
   end;
 end;
except
end;
end;

If Form8.CheckBox15.Checked=True then begin
try
doc:=Form1.EmbeddedWB1.oleobject.document.frames.item(2).document;
 for i := 0 to Doc.All.Length - 1 do
 begin
 Application.ProcessMessages;
   if (Pos(aText, Doc.All.Item(i).InnerText)<>0)
    and (length(Doc.All.Item(i).InnerText)=length(aText)) then
  begin
If Form8.checkBox4.Checked=true then Doc.All.Item(i).Style.BackGroundColor:=Form8.Edit1.Text;
If Form8.checkBox10.Checked=true then Doc.All.Item(i).Style.Color:=Form8.Edit2.Text;
exit;
   end;
 end;
except
end;
end;

end;


procedure TForm1.EmbeddedWB1DocumentComplete(Sender: TObject;
 const pDisp: IDispatch; var URL: OleVariant);
var i:integer;
ovElements: OleVariant;
k:integer;
s:string;
begin
If Form8.CheckBox11.Checked=True then begin
try
For k:=0 to Form8.ListBox1.Count Do
Begin
Form8.ListBox1.ItemIndex:=k;
s:=Form8.ListBox1.items[Form8.ListBox1.ItemIndex];
SearchAndHighlightText(s);
end;
except
end;
end;

If Form8.CheckBox13.Checked=True then begin
try
For k:=0 to Form8.ListBox5.Count Do
Begin
Form8.ListBox5.ItemIndex:=k;
s:=Form8.ListBox5.items[Form8.ListBox5.ItemIndex];
SearchAndHighlightText(s);
end;
except
end;
end;

If Form8.CheckBox12.Checked=True then begin
try
For k:=0 to Form8.ListBox3.Count Do
Begin
Form8.ListBox3.ItemIndex:=k;
s:=Form8.ListBox3.items[Form8.ListBox3.ItemIndex];
SearchAndHighlightText(s);
end;
except
end;
end;

If Form8.CheckBox14.Checked=True then begin
try
For k:=0 to Form8.ListBox4.Count Do
Begin
Form8.ListBox4.ItemIndex:=k;
s:=Form8.ListBox4.items[Form8.ListBox4.ItemIndex];
SearchAndHighlightText(s);
end;
except
end;
end;

If Form8.CheckBox15.Checked=True then begin
try
For k:=0 to Form8.ListBox2.Count Do
Begin
Form8.ListBox2.ItemIndex:=k;
s:=Form8.ListBox2.items[Form8.ListBox2.ItemIndex];
SearchAndHighlightText(s);
end;
except
end;
end;

try
If Form3.CheckBox6.Checked=True then Form1.EmbeddedWB1.OleObject.Document.frames.Item(2).Document.Body.bgcolor:=Form3.Edit7.Text;
If Form3.CheckBox7.Checked=True then Form1.EmbeddedWB1.OleObject.Document.frames.Item(3).Document.Body.bgcolor:=Form3.Edit8.Text;
If Form3.CheckBox8.Checked=True then Form1.EmbeddedWB1.OleObject.Document.frames.Item(4).Document.Body.bgcolor:=Form3.Edit11.Text;
If Form3.CheckBox9.Checked=True then Form1.EmbeddedWB1.OleObject.Document.frames.Item(2).Document.Body.background:=Form3.edit13.Text;
If Form3.CheckBox10.Checked=True then Form1.EmbeddedWB1.OleObject.Document.frames.Item(3).Document.Body.background:=Form3.Edit13.Text;
If Form3.CheckBox11.Checked=True then Form1.EmbeddedWB1.OleObject.Document.frames.Item(4).Document.Body.background:=Form3.Edit14.Text;
except
end;

try
If mag=1 then begin
MagTime("Не удалось прочесть заклятие");
MagTime("Удачно использовано заклинание.");
end;
except
end;


 
TUser ©   (2005-03-03 20:20) [11]


>  for i := 0 to Doc.All.Length - 1 do
>  begin
>  Application.ProcessMessages;

if i mod 100 = 0 then
 Application.ProcessMessages;


 
Anatoly Podgoretsky ©   (2005-03-03 20:24) [12]

ТехникПТО ©   (03.03.05 20:07) [9]
Application.MessageProcesses замедлит выполнение любого цикла, даже если он будет выполнен только один раз.
Его назначение не ускорять, а позволить обработать обработку поступивших сообщений. Сам Application.MessageProcesses в состоянии выполниться несколько миллионов раз в секунду, проверено полевыми измерениями.


 
Anatoly Podgoretsky ©   (2005-03-03 20:27) [13]

ТехникПТО ©   (03.03.05 20:09) [10]

Сам Application.ProcessMessages вставлен правильно, только я предпочитаю в конце цикла, что бы изменения пришли в действие.
А вот как понимать этл
except
end;

Верной дорогой идете товарищи, только это путь на кладбище.


 
ТехникПТО ©   (2005-03-03 20:29) [14]


> Application.MessageProcesses замедлит выполнение любого
> цикла, даже если он будет выполнен только один раз.
> Его назначение не ускорять, а позволить обработать обработку
> поступивших сообщений. Сам Application.MessageProcesses
> в состоянии выполниться несколько миллионов раз в секунду,
> проверено полевыми измерениями.

а как нибудь можно УСКОРИТЬ выполнение цикла?


 
ТехникПТО ©   (2005-03-03 20:32) [15]


> А вот как понимать этл
> except
> end;
> Верной дорогой идете товарищи, только это путь на кладбище

а как нужно праввильно?


 
Anatoly Podgoretsky ©   (2005-03-03 20:32) [16]

Отказаться от POS внутри цикла, ты его вызываешь бесчисленное множество раз и каждый раз оно находит одно и тоже вложение.


 
ТехникПТО ©   (2005-03-03 20:38) [17]


> Anatoly Podgoretsky

а что с except end; делать??


 
Anatoly Podgoretsky ©   (2005-03-03 20:40) [18]

Убрать как врага народа или возбуждать там специфическое исключение.
Немного офтопика, меня терзает любопытство. Что такое ПТУ я знаю, а что такое ПТО?


 
ТехникПТО ©   (2005-03-03 20:42) [19]


> Убрать как врага народа или возбуждать там специфическое
> исключение.
> Немного офтопика, меня терзает любопытство. Что такое ПТУ
> я знаю, а что такое ПТО?

Производственно технический отдел :)


> специфическое исключение.

ето еще что за зверь??
P.S. я самоучка :) так что прошу не судить строго :)


 
Anatoly Podgoretsky ©   (2005-03-03 20:44) [20]

Тогда вам наверно надо принять программиста.

Или серьезно заняться самообучение по хорошим книгам, решать в них примеры.


 
ТехникПТО ©   (2005-03-03 20:48) [21]


> Тогда вам наверно надо принять программиста.
>
> Или серьезно заняться самообучение по хорошим книгам, решать
> в них примеры.

программист у нас есть:) тока он по 1С.. точнее ОНА :)ъ
а на литературу денег не дают :( вот и лазю по форумам


 
ТехникПТО ©   (2005-03-03 20:50) [22]

а что мне с try except end делать?? после ошибки у меня аогоритм дальше не идет :(


 
Anatoly Podgoretsky ©   (2005-03-03 20:52) [23]

Подсказываю несколько источников знаний, по степени важности
1. Встроеная справка
2. Исходники Дельфи
3. Мой сайт, проект DDP, если силы хватит скачать эту уйму книг.
4. FAQ, базы знаний, советы
5. Чужие сайты


 
ТехникПТО ©   (2005-03-03 20:54) [24]


> 3. Мой сайт, проект DDP, если силы хватит скачать эту уйму
> книг.

ето где??


 
Anatoly Podgoretsky ©   (2005-03-03 21:12) [25]

Если не умеешь пользоваться анкета, то хотя бы научись пользоваться поисковыми системы и Google и Yandex меня знают.


 
ТехникПТО ©   (2005-03-03 21:13) [26]


> Если не умеешь пользоваться анкета, то хотя бы научись пользоваться
> поисковыми системы и Google и Yandex меня знают.

уже нашел :) может подскажете чем try except end заменить?


 
Kolan ©   (2005-03-03 21:46) [27]

Здравствуйте,
 Мне тоже интересно, как правильно делать. Я тоже так бывает делаю. Напр
try
 Result := A/B;
except
end;
Мне это подходит. Если B=0 то пользователь ничего не узнает об этом. Что тут неправильно?


 
DiamondShark ©   (2005-03-03 21:48) [28]


> а как нибудь можно УСКОРИТЬ выполнение цикла?

Можно.
Во-первых, вынести из цикла инвариант.

for i := 0 to Doc.All.Length - 1 do
 begin
   Application.ProcessMessages;
   if (Pos(aText, Doc.All.Item(i).InnerText)<>0) and
      (length(Doc.All.Item(i).InnerText)=length(aText)) then
     begin
       If Form8.checkBox1.Checked=true then Doc.All.Item(i).Style.BackGroundColor:=Form8.Edit1.Text;
       If Form8.checkBox6.Checked=true then Doc.All.Item(i).Style.Color:=Form8.Edit2.Text;
       exit;
    end;
 end;

Здесь Doc.All -- явный инвариант. Кроме того, это обращение очень "тяжёлое".
Так будет  уже лучше:

var
 elts: Variant;
...
elts := Doc.All;
for i := 0 to Doc.All.Length - 1 do
 begin
   Application.ProcessMessages;
   if (Pos(aText, elts.Item(i).InnerText)<>0) and
      (length(elts.Item(i).InnerText)=length(aText)) then
     begin
       If Form8.checkBox1.Checked=true then elts.Item(i).Style.BackGroundColor:=Form8.Edit1.Text;
       If Form8.checkBox6.Checked=true then elts.Item(i).Style.Color:=Form8.Edit2.Text;
       exit;
    end;
 end;

Во-вторых, кэшировать "тяжёлые" вычисления в цикле.
elts.Item(i) вычисляется много раз внутри цикла. Но это метод объекта. И вызывается он с использованием позднего связывания, а это тяжёлая операция.
Несколько раз вызывается и свойство style. Тоже затраты на вызов с поздним связыванием.
Ну и наконец условие
(Pos(aText, elt.InnerText)<>0) and (length(elt.InnerText)=length(aText))
логически эквивалентно просто
aText = elt.innerText
(+ X=true эквмвалентно просто X)
Так будет лучше:

var
 elts: Variant;
 elt: Variant;
 style: Variant;
...
elts := Doc.All;
for i := 0 to Doc.All.Length - 1 do
 begin
   Application.ProcessMessages;
   elt := elts.Item(i);
   if aText = elt.InnerText then
     begin
       If Form8.checkBox1.Checked then elt.Style.BackGroundColor:=Form8.Edit1.Text;
       If Form8.checkBox6.Checked then elt.Style.Color:=Form8.Edit2.Text;
       exit;
    end;
 end;


Ещё более радикальное ускорение даст отказ от использования позднего связывания и использовать интерфейсы.


> а что с except end; делать??

Как ни странно, не допускать возникновения исключений.
Они ведь отчего появляются? От того, что в Doc.all попадают все тэги, у некоторых из которых нету тех свойств, к которым идёт обращение (например, innerText, или style). Так ведь?
Это и к скорости, кстати, имеет отношение. Может быть, что проверка элемента, или уточнение условия отбора (скажем, использовать не all, а all.tags(...)) окажется менее затратным, чем возбуждение и удавление исключения.

ЗЫ
А вообще-то, алкогоритм просто ужасный...


 
ТехникПТО ©   (2005-03-03 21:53) [29]


> А вообще-то, алкогоритм просто ужасный...

знаю... :( не умею я писать рационально.. меня все учителя и преподы гоняют за это :)


 
jack128 ©   (2005-03-03 21:58) [30]

Kolan ©   (03.03.05 21:46) [27]
Что тут неправильно?

то, что результат функции в случае если B = 0 неопределен.


 
Kolan ©   (2005-03-03 22:01) [31]

Ну
Result := 0;
try
Result := A/B;
except
end;
так правильно?
Try
except"ом я просто не даю появится окну ошибки и прервать вычисления.


 
Anatoly Podgoretsky ©   (2005-03-03 22:02) [32]

jack128 ©   (03.03.05 21:58) [30]
Kolan ©   (03.03.05 21:46) [27]

Как справедливо замтил Джек, неопределенный результат, такого даже врагу не пожелаешь.
А правильно так:

try
Result := A/B;
except
Result := бесконечность; // или скажем значение по договоренности, но лучше исключение, там будет однозначность.
end;

Мне это подходит. Если B=0 то пользователь ничего не узнает об этом. Что тут неправильно?
Хуже он получить черт знает что.


 
DiamondShark ©   (2005-03-03 22:06) [33]


> except"ом я просто не даю появится окну ошибки и прервать
> вычисления.

А понту от твоих непрерванных вычислений на некорректных данных?


 
GuAV ©   (2005-03-03 23:14) [34]

Anatoly Podgoretsky ©   (03.03.05 22:02) [32]
Kolan ©   (03.03.05 21:46) [27]


IMHO правильно так:

Result := A/B;

В случае ошибки пользователь увидит сообщение об ошибке.

или так:

SetExceptionMask([exInvalidOp, exDenormalized, exZeroDivide, exOverflow, exUnderflow, exPrecision]);
Result := A/B;

Если B = 0 исключения не будет, результат будет бесконечность (или NAN если A тоже 0).


 
Anatoly Podgoretsky ©   (2005-03-03 23:30) [35]

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

Result := бесконечность; // или скажем значение по договоренности, но лучше исключение, там будет однозначность.


 
Anatoly Podgoretsky ©   (2005-03-03 23:31) [36]

Для исключения защищенный блок не требуется.


 
Eraser ©   (2005-03-03 23:54) [37]

ТехникПТО ©

Как уже говорили- алогоритм не очень...
Попробуй применить многопоточность...


 
GuAV ©   (2005-03-04 00:24) [38]

ТехникПТО ©   (03.03.05 20:09) [10]
  if (Pos(aText, Doc.All.Item(i).InnerText)<>0)
   and (length(Doc.All.Item(i).InnerText)=length(aText)) then


э.. это что ?

(Pos(aText, Doc.All.Item(i).InnerText)<>0) текст aText содержится в InnerText"е элемента.

(length(Doc.All.Item(i).InnerText)=length(aText)) длины текста aText InnerText"а элемента совпадают.

Если оба условия выполняются, то эти строки равны.

Т.е. может просто CompareStr (или другую ф-цию сравнения) ?


 
GuAV ©   (2005-03-04 00:25) [39]

упс... было уже..


 
Kolan ©   (2005-03-04 01:03) [40]


> DiamondShark ©   (03.03.05 22:06) [33]
>А понту от твоих непрерванных вычислений на некорректных данных?

А такой понт, что допустим у меня устройсво по сложному мереет изделия определенного вида где есть Мах и Min значение причем
Max всегда преред Min. А пользователь допустим не то изделее засунул или диапазон не тот взял. А у меня в обработки Sqrt(Min - Max) получаю под корнем -, а пользователь ошибки и нервничает. Нафиг они ему нужны он и по графику видит, что ошибся. А может и не ошибся прости график хотел построить а на вычисления ему пох.

> SetExceptionMask([exInvalidOp, exDenormalized, exZeroDivide,
> exOverflow, exUnderflow, exPrecision]);

OK Приму к сведению.


 
default ©   (2005-03-04 01:31) [41]

Anatoly Podgoretsky ©   (03.03.05 23:30) [35]
"соответствие законам математики, деление на ноль не ошибка, а бесконечность, при А не равном нулю."
деление на ноль даёт неопределённость, а не бесконечность
a/b=c,a=bc
a/0=k(a<>0), a=0k=0 получаем противоречие, вот поэтому и делить нельзя:)
вы путаете деление на ноль и предел дроби при знаменателе стремящемся к нулю
в случае 1/x предел может существовать в то время как ф-ия неопределена в данной точке
тут тоже самое


 
default ©   (2005-03-04 01:40) [42]

"в случае 1/x предел может существовать в то время как ф-ия неопределена в данной точке"
вот это не читать, малость не туда ушёл...


 
Fedia ©   (2005-03-04 01:50) [43]

Anatoly Podgoretsky ©   (03.03.05 23:30) [35]
>деление на ноль не ошибка, а бесконечность
На сколько я помню математику, бесконечность получается при делении на бесконечно малое число, больше нуля.

>default ©   (04.03.05 01:31) [41]
>деление на ноль даёт неопределённость, а не бесконечность
а неопределенность получается при:
1. делении и  друг на друга бесконечно малых чисел;
2. умножении бесконечно больших чисел на бесконечно малые.


 
GuAV ©   (2005-03-04 02:04) [44]

Fedia ©   (04.03.05 1:50) [44]
а неопределенность получается при:
1. делении и  друг на друга бесконечно малых чисел;
2. умножении бесконечно больших чисел на бесконечно малые.

3. 0^0
4. ещё что-то было, не помню.

Fedia ©   (04.03.05 1:50) [44]
Anatoly Podgoretsky ©   (03.03.05 23:30) [35]
>деление на ноль не ошибка, а бесконечность
На сколько я помню математику, бесконечность получается при делении на бесконечно малое число, больше нуля.

AFAIR eсть плюс бесконечность и минус бесконечность, а есть просто бескоечность, когда знак не определён, и  кстати именно она должна получатся в пределе 1/х х->0, т.к. 1/х х->+0 = + беск 1/х х->-0 = - беск.


 
GuAV ©   (2005-03-04 02:06) [45]

1/х х->+0 и 1/х х->-0 пределы  справа и слева соответственно.


 
default ©   (2005-03-04 02:06) [46]

Fedia ©   (04.03.05 01:50) [43]
"На сколько я помню математику, бесконечность получается при делении на бесконечно малое число, больше нуля."
не обязательно
вот примитивный пример...
Lim(x-->oo, x+1)=oo
неформально говоря получаетcя она там где числитель растёт быстрее знаменателя
не всегда же знаменатель есть?
ну это формалистика
a=a/1 вот и знаменатель появился...
"а неопределенность получается при:
1. делении и  друг на друга бесконечно малых чисел;
2. умножении бесконечно больших чисел на бесконечно малые"
второе избыточно поскольку оно выраж-ся через первое
a, b - бес-но малые
a/b=a*(1/b)


 
default ©   (2005-03-04 02:15) [47]

default ©   (04.03.05 02:06) [46]
"неформально говоря получаетcя она там где числитель растёт быстрее знаменателя"
не просто быстрее, а так что скорость роста числителя(производная) удаляется от скорости роста знаменателя(произвадная, вспомните правило Лапиталя, его можно было изобрести интуитивно:)потом формально доказать:))


 
Fedia ©   (2005-03-04 02:31) [48]

Любая недосказанность ведет к возникновению множества уточняющих постов. Это большой плюс форума :)

GuAV ©   (04.03.05 02:04) [44]
>AFAIR eсть плюс бесконечность и минус бесконечность, а есть >просто бескоечность, когда знак не определён, и  кстати именно >она должна получатся в пределе 1/х х->0, т.к. 1/х х->+0 = + беск >1/х х->-0 = - беск.
Обычно, если говорят, что число равно единице, то "по умолчанию" подразумевают положительное значение. Отсюда и:
>бесконечность получается при делении на бесконечно малое число, >больше нуля.
Да, и по моему, термина "просто бесконечность" в математике нет. Терминология +(-) бесконечность вроде бы самодостаточна.

default ©   (04.03.05 02:06) [46]
>не обязательно
>вот примитивный пример...
Я не употребил выражения "только при" :)

>второе избыточно поскольку оно выраж-ся через первое
Об этом и не подумал...


 
Германн ©   (2005-03-04 02:40) [49]

2ТехникПТО ©   (03.03.05 20:38) [17]
> а что с except end; делать?
Этим самым ты "убиваешь в зародыше", то что тебе могут сообщить о твоей ошибке!


 
Defunct ©   (2005-03-04 07:06) [50]

Бесконечность понятие растяжимое ;>

для i8008 число 17 уже было бесконечностью.
для 8088 аж 65536

хехе.

A <> 0
0 - чистый 0 ни +0 и ни -0

порассуждаем

1. (A / 0) = Какое-то D число? - врятли.
2. (A / 0) = Очень большое число?  - возможно.
3. (A / 0) = Отрицательное число?  - врятли.
4. (A / 0) = Нуль? - возможно.    
5. (A / 0) = Множество чисел? - определенно нет.

имеем рез-т, это скорее всего не D число (1), причем конкретное число (что следует из 5), его нельзя посчитать это следует из 2, 3 и 4 .
Значит рез-тат (A / 0) - константа, чаще всего просто flag "OV" :)

Можно ли результат деления на 0 использовать в дальнейших вычислениях? - определенно нет, т.к. flag и data - несовместимые типы.

Anatoly Podgoretsky ©   (03.03.05 23:30) [35]
По поводу требований Intel, их требования к разработчикам ПО более чем странные. Ведь именно intel в свое время сделал аппаратное немаскируемое прерывание при делении на 0, и дал ему самый высокий приоритет да еще и, расположил вектор по "президентскому" адресу памяти - 0000:0000.

PS: И вообще! Все настоящие программисты делятся на три категории: на тех, кто пишет программы, завершающиеся по нажатию F10, Alt-F4, Alt-X. Все остальные принципы деления надуманны. (С) ASSA


 
Anatoly Podgoretsky ©   (2005-03-04 07:44) [51]

Defunct ©   (04.03.05 07:06) [50]
Они с в состоянии признавать свои ошибки. Конечно некоторые из них меня разочаровали, смешные по отношени к 8080.


 
XP   (2005-03-04 08:12) [52]

Смешно.
Особенно предложение принять на работу программиста для
MagTime("Не удалось прочесть заклятие");
MagTime("Удачно использовано заклинание.");
(С) пост [10]

По теме: уменьшить время выполнения алгоритма можно двумя способами - сократить количество тактов процессора, необходимых для выполнения алгоритма или уменьшить длину такта процессора.
По поводу первого - поможет только оптимизация алгоритма.
По поводу второго - поможет только покупка более производительного процессора (компьютера).

Первое делать за автора вряд ли кто будет. Второе - тем более.


 
TUser ©   (2005-03-04 08:22) [53]


> а на литературу денег не дают :( вот и лазю по форумам

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

> для i8008 число 17 уже было бесконечностью.

Точно?


 
XP   (2005-03-04 08:32) [54]

для i8008 число 17 уже было бесконечностью.
для 8088 аж 65536


i4004 - разрядность регистров 4 - переполнение аккумулятора при 16 (15 + 1)
i8008, i8080, i8085 - 8-ми разрядный - переполнение аккумулятора при 256 (255 + 1)
i8086 - разрядность основных регистров - 16  - переполнение аккумулятора при 65536 (65535 + 1)

хотя, переполнение регистров у процессоров легко нивелируется использованием вспомогательных регистров, путем использования переноса и пр. механизмов. Поэтому, даже для i4004 понятие "бесконечность" явно больше. :)


 
TUser ©   (2005-03-04 08:44) [55]

Вот мне тоже показалось, что маловато, даже для техники прошлого. Хотя не знаю - я в то время еще в жидкости какой-то плавал.


 
ТехникПТО ©   (2005-03-04 09:23) [56]


> Смешно.
> Особенно предложение принять на работу программиста для
>
> MagTime("Не удалось прочесть заклятие");
> MagTime("Удачно использовано заклинание."); (С) пост [10]

А кто сказал что я программист?? :) я Техник(числюсь) а по сути сисадмин... а белфой для души занимаюсь и в данный момент пишу программу Клинет для Бойцовского Клуба(www.combats.ru) воть...


 
BillyJeans   (2005-03-04 09:55) [57]

Близятся последние дни Бойцовского клуба...


 
Defunct ©   (2005-03-04 17:07) [58]

XP   (04.03.05 08:32) [54]

спасибо за поправку ;>
утренняя очепятка.



Страницы: 1 2 вся ветка

Текущий архив: 2005.03.20;
Скачать: CL | DM;

Наверх




Память: 0.65 MB
Время: 0.074 c
14-1109161737
Sleepwalker
2005-02-23 15:28
2005.03.20
Загрузка WinXP


1-1109758349
Jann
2005-03-02 13:12
2005.03.20
Декомпилятор


6-1106157984
Progh
2005-01-19 21:06
2005.03.20
TIdMessage Attach


3-1108553956
Gost
2005-02-16 14:39
2005.03.20
Как просканировать таблицу (парадокс) с последней записи?


14-1109318878
Voffka
2005-02-25 11:07
2005.03.20
Как прочитать картинку?