BBB » 27 сен 2007, 17:37
somewhere писал(а):Может, так?
1) for
2) while () do begin end;
3) repeat until ();
А какой из них наиболее рациональный? )))))) тут надо дисассемблировать, авось из них будет какой-то, на пару десятков тактов быстрее ))))))
Ну, это ж учеьная задача. Так что,
обосновывать выбор (c), возможно, также надо исходя именно из теории (красоты получаеммого исходного текста), а не быстродействия
Например. Если перед выполнением цикла ясно, сколько именно раз его нужно выплонить, то выбираем
for.
Если алгоритм таков, что по крайней мере один раз тело цикла надо выполнить, а после этого смотреть (по какому-либо условию), продолжать цикл дальше или прерывать, то берем
repeat until () (Пример: делаем что-то, затем запрашиваем пользователя, хочет ли он повторить операцию)
Ну а если алгоритм таков, что, возможно, цикл будет не выполнен вообще ни разу, то берем
while () do begin end;. (Классический пример будет чтение из файла:
while (not EOF ()) do begin end;)
[quote="somewhere"][quote]Может, так?
1) for
2) while () do begin end;
3) repeat until ();[/quote]А какой из них наиболее рациональный? )))))) тут надо дисассемблировать, авось из них будет какой-то, на пару десятков тактов быстрее ))))))[/quote] Ну, это ж учеьная задача. Так что, [i]обосновывать выбор[/i] (c), возможно, также надо исходя именно из теории (красоты получаеммого исходного текста), а не быстродействия :)
Например. Если перед выполнением цикла ясно, сколько именно раз его нужно выплонить, то выбираем [b]for[/b].
Если алгоритм таков, что по крайней мере один раз тело цикла надо выполнить, а после этого смотреть (по какому-либо условию), продолжать цикл дальше или прерывать, то берем [b]repeat until ()[/b] (Пример: делаем что-то, затем запрашиваем пользователя, хочет ли он повторить операцию)
Ну а если алгоритм таков, что, возможно, цикл будет не выполнен вообще ни разу, то берем [b]while () do begin end;[/b]. (Классический пример будет чтение из файла:
[b]while (not EOF ()) do begin end;[/b])