powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Циукл do loop
10 сообщений из 10, страница 1 из 1
Циукл do loop
    #37413064
`dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Объясните пожалуйста такой момент.

i=1
s=1
do while s <42
s=s*i
i=i+1
Debug.print s
loop

Помимо результата < 42 попадает и большее число. 120.
Вроде цикл в начале должен проверять, а потом выполнять тело цикла. Если Debug расположить до счетчика то напечатает правильно.
i=1
s=1
do while s <42
Debug.print s

s=s*i
i=i+1
loop

Если сделать с пост условием, цикл проходит еще раз.
i=1
s=1
do Debug.print s
s=s*i
i=i+1
loop while s <42
Нормальное это явление? Почему после ключевого слова loop происходит ещё один проход? (vb6 sp5)
...
Рейтинг: 0 / 0
Циукл do loop
    #37413171
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
`dmitry,

всё потому, что
Код: plaintext
1.
2.
3.
4.
5.
6.
i= 1 
s= 1 
do while s < 42 
[color=red]s[/color]=[color=green]s[/color]*i 'если i было = 40, а s = 1, например, то вторая s становится равно 120
i=i+ 1 
Debug.print s
loop
...
Рейтинг: 0 / 0
Циукл do loop
    #37413201
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
`dmitry,

сорь, я неправильно написал... что у тебя должно получиться в итоге? числа 1, 2, 6, 24? какая стоит задача?
...
Рейтинг: 0 / 0
Циукл do loop
    #37413216
`dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извиняюсь.Так и не понял почему цикл не останавливается.
...
Рейтинг: 0 / 0
Циукл do loop
    #37413227
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сложно правильно объяснить. если по-простому:
условие
Код: plaintext
do while s < 42 
относится к строчке
Код: plaintext
Debug.print s
, поэтому не вписывайте между ними ничего и не отделяйте друг от друга. а в вашем случае вы вставили между этими строками код, изменяющий эту самую переменную s
...
Рейтинг: 0 / 0
Циукл do loop
    #37413264
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
`dmitryИзвиняюсь.Так и не понял почему цикл не останавливается.Потому что 120 получается после проверки, а выход из цикла происходит на следующей итерации.
Нужно писать Do ... Loop Until.
...
Рейтинг: 0 / 0
Циукл do loop
    #37413399
`dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy`dmitryИзвиняюсь.Так и не понял почему цикл не останавливается.Потому что 120 получается после проверки, а выход из цикла происходит на следующей итерации.
Нужно писать Do ... Loop Until.
Написали б как.
Я пишу
Loop Until s>=42
Выходит тот же результат :(
...
Рейтинг: 0 / 0
Циукл do loop
    #37413563
`dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero`dmitry,

сорь, я неправильно написал... что у тебя должно получиться в итоге? числа 1, 2, 6, 24? какая стоит задача?
да, задача такая. 1...24 и не больше
...
Рейтинг: 0 / 0
Циукл do loop
    #37413588
`dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я не правильно понял тело цикла. в примере http://msdn.microsoft.com/en-us/library/eked04a7.aspx тсчетчик добавляют после вывода.

EOF
...
Рейтинг: 0 / 0
Циукл do loop
    #37413589
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
`dmitry,

тогда 11183805
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Циукл do loop
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]