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

Вниз

О как!   Найти похожие ветки 

 
TUser ©   (2008-08-20 15:20) [0]

Что напечатает программа (чур, в уме)?

{$apptype console}

var i: integer;
begin
 i := 0;
 repeat
   inc (i);
   if i < 10 then continue;
 until i < 20;
 writeln (i);
end.


 
brother ©   (2008-08-20 15:22) [1]

1 ?


 
Ega23 ©   (2008-08-20 15:27) [2]

20


 
Сергей М. ©   (2008-08-20 15:28) [3]


> О как!
>


А что "о как" ?

Не лезь в телах for- и repeat-циклов в содержимое переменной цикла, тогда и "чудес" не приключится)


 
Сергей М. ©   (2008-08-20 15:29) [4]


> until i < 20


О как !
Тут и "чудес"-то вовсе нет)


 
brother ©   (2008-08-20 15:32) [5]

> 20

нифига) 0+1...в конец цикла... там i<20? тогда writeln.... те 1 )))


 
Ega23 ©   (2008-08-20 15:33) [6]


> Ega23 ©   (20.08.08 15:27) [2]
>
> 20
>


Точнее, конечно 1. На until не так посмотрел.


 
Rouse_ ©   (2008-08-20 15:33) [7]

repeat
 ...
until False;

выход произойдет на первой же итерации


 
brother ©   (2008-08-20 15:33) [8]

>   if i < 10 then continue;

в данном коде эта строчка лишина смысла...


 
Игорь Шевченко ©   (2008-08-20 15:41) [9]


> repeat
>  ...
> until False;


почему False ?


 
oldman ©   (2008-08-20 15:42) [10]


> Что напечатает программа (чур, в уме)?


В уме программа ничего не напечатает
:)


 
brother ©   (2008-08-20 15:43) [11]

> В уме программа ничего не напечатает
> :)

у меня явно напечаталось 1 )))))) разные умы?)))))))))


 
Германн ©   (2008-08-20 15:47) [12]


> TUser ©   (20.08.08 15:20)

А в чем прикол то? В continue?


 
Vlad Oshin ©   (2008-08-20 15:49) [13]

:)

Project1.dpr.8: if i < 10 then continue;
004040BD 83FB0A           cmp ebx,$0a  \\ сравнил, а на флаги забил
Project1.dpr.9: until i < 20;
004040C0 83FB14           cmp ebx,$14  \\сравнил
004040C3 7DEE             jnl $004040b3 \\ тут не забил

причем, даже при отключенной оптимизации, не сравнивает первый раз
Хотя, по идее, должен бы был


 
Rouse_ ©   (2008-08-20 16:01) [14]


> почему False ?

Для вечного цикла.
while True do ...
и
repeat ... until False;


 
oldman ©   (2008-08-20 16:03) [15]


> Rouse_ ©   (20.08.08 16:01) [14]
> Для вечного цикла.


Шампунь имеет свойство кончаться?


 
McSimm ©   (2008-08-20 16:05) [16]

у меня в уме 10 получается,
проверить никак не могу.


 
Игорь Шевченко ©   (2008-08-20 16:06) [17]


> Для вечного цикла.


а где в этой программе вечный цикл ?


 
Rouse_ ©   (2008-08-20 16:07) [18]


> Шампунь имеет свойство кончаться?

Да мне так проще было в свое время запомнить по какому условию выход происходит :) Запомнить запомнил - да так на всегда и осталось :)


 
McSimm ©   (2008-08-20 16:08) [19]


> мне так проще было

мне проще было запомнить фразу "пока не".
Помогает и в паскале и в английском :)


 
Rouse_ ©   (2008-08-20 16:09) [20]


> а где в этой программе вечный цикл ?

Не цепляйся :) Я просто показал условие по которому цикл будет работать и для этого указал про выход на первой итерации, бо условие не верно для продолжения работы :)


 
oldman ©   (2008-08-20 16:15) [21]


> Rouse_ ©   (20.08.08 16:09) [20]
> > а где в этой программе вечный цикл ?
> Не цепляйся


Читаем (желательно вслух и с выражением):


> Rouse_ ©   (20.08.08 16:01) [14]
> > почему False ?
> Для вечного цикла.
> while True do ...
> и
> repeat ... until False;


Не шути так больше...
:)


 
McSimm ©   (2008-08-20 16:16) [22]


> указал про выход на первой итерации

А тут у меня с continue проблемы возникли, привык, что в "начало" цикла перебрасывает :)
repeat почти не пользовался, похоже привычка неправильная.


 
Rouse_ ©   (2008-08-20 16:16) [23]


> Не шути так больше...

Эмнь... а чего не так? :)


 
oldman ©   (2008-08-20 16:19) [24]


> Rouse_ ©   (20.08.08 16:16) [23]
> Эмнь... а чего не так? :)


Все так.
Но не хочется искать еще и выход из цикла твоих мессаг.
:)


 
Rouse_ ©   (2008-08-20 16:20) [25]

:))


 
Игорь Шевченко ©   (2008-08-20 16:27) [26]

цикл, приведенный в программе, вообще-то

repeat
...
until true;


 
Rouse_ ©   (2008-08-20 16:32) [27]

repeat until true бессмысленен сам по себе без манипуляций с итератором :)


 
TUser ©   (2008-08-20 17:11) [28]


> А в чем прикол то? В continue?

угу

у меня были превратные представления о том, как он работает. судя по сообщениям в этой ветке, - не только у меня


 
Ega23 ©   (2008-08-20 17:18) [29]

Так Continue перебрасывает тебя на не в начало цикла, а туда, где проверка очередной итерации.
Для for и while - это начало, для repeat..until - это конец.


 
Anatoly Podgoretsky ©   (2008-08-20 18:26) [30]

> Vlad Oshin  (20.08.2008 15:49:13)  [13]

Все правильно, работает в соответствии со спецификацией на continue

> In Delphi code, the Continue procedure causes the flow of control to proceed to the next iteration of the enclosing for, while, or repeat statement.
> The compiler reports an error if a call to Continue isn"t enclosed by a for, while, or repeat statement.
> Note: Continue does not violate the flow of control dictated by a try..finally construct. If a call to Continue causes control to leave the try clause, the finally clause is entered.

Обрати особое внимение на примечание.


 
DVM ©   (2008-08-20 22:54) [31]


> Vlad Oshin ©   (20.08.08 15:49) [13]


> 004040BD 83FB0A           cmp ebx,$0a  
> 004040C0 83FB14           cmp ebx,$14  
> 004040C3 7DEE             jnl $004040b3

это в уме так у тебя выглядит )


 
Германн ©   (2008-08-21 01:41) [32]


> TUser ©   (20.08.08 17:11) [28]
>
>
> > А в чем прикол то? В continue?
>
> угу
>
> у меня были превратные представления о том, как он работает.
>  судя по сообщениям в этой ветке, - не только у меня
>

Я так и понял.


 
han_malign ©   (2008-08-21 11:15) [33]


> у меня были превратные представления о том, как он работает.

Вот!!! А если придерживаться, изначально закладываемой Виртом в Pascal, концепции Блочного(Структурного) программирования, исключающей явные переходы - никаких сюрпризов не было бы...

Почему-то, религиозное табу на goto не распространется на его предопределенное подмножество continue, break, exit... Raise - это вообще - сатанизм...

(провокация)


 
@!!ex ©   (2008-08-21 11:59) [34]

> [33] han_malign ©   (21.08.08 11:15)

exit никакого отношения к goto не имеет. это return


 
ЛшдлуттнСфе   (2008-08-21 12:57) [35]

6,28 получилось.


 
tesseract ©   (2008-08-21 13:04) [36]


> repeat until true бессмысленен сам по себе без манипуляций
> с итератором :)


А как же циклы ожидания  в потоках ставить ? Только через WaitForMultipleObjects ?


 
{RASkov} ©   (2008-08-21 13:09) [37]

> 6,28 получилось.

Попробуй еще раз перегнать...


 
McSimm ©   (2008-08-21 14:08) [38]


> > 6,28 получилось.

6.283184


 
Skyle ©   (2008-08-21 15:30) [39]


> McSimm ©   (21.08.08 14:08) [38]
>
> > > 6,28 получилось.
>
> 6.283184

Пока 70 не получите - пить не советую. Смысла нет.


 
ЛшдлуттнСфе   (2008-08-21 17:12) [40]


> McSimm ©   (21.08.08 14:08) [38]

ты знал, ты знал!!!
:)



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

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

Наверх




Память: 0.56 MB
Время: 0.024 c
2-1220207979
fog
2008-08-31 22:39
2008.10.12
MD5 и CryptoAPI


2-1220434352
Delphist
2008-09-03 13:32
2008.10.12
SQL-запрос


2-1220869089
krolic
2008-09-08 14:18
2008.10.12
Проблема с условием else


2-1220709929
Витя_1
2008-09-06 18:05
2008.10.12
FindFirstFile


2-1220861648
Nameziz
2008-09-08 12:14
2008.10.12
Поиск