Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Вопрос по работе For, While (http://forum.oszone.net/showthread.php?t=297126)

HFShak 18-03-2015 20:09 2484445

Вопрос по работе For, While
 
Народ подскажите, почему в этом простом примере:
Код:

$j = 1

For $i = 1 To 50
        ConsoleWrite("i = " & $i & @CRLF)
        While $j <= 100
                ConsoleWrite("i = " & $i & @TAB & "j = " & $j & @CRLF)
                $j += 1
        WEnd
Next

У меня для i = 1 цикл While работает 100 раз, а потом когда i = 2 он уже пропускается?

Скрытый текст
Код:

i = 1
i = 1        j = 1
i = 1        j = 2
i = 1        j = 3
i = 1        j = 4
i = 1        j = 5
i = 1        j = 6
i = 1        j = 7
i = 1        j = 8
i = 1        j = 9
i = 1        j = 10
i = 1        j = 11
i = 1        j = 12
i = 1        j = 13
i = 1        j = 14
i = 1        j = 15
i = 1        j = 16
i = 1        j = 17
i = 1        j = 18
i = 1        j = 19
i = 1        j = 20
i = 1        j = 21
i = 1        j = 22
i = 1        j = 23
i = 1        j = 24
i = 1        j = 25
i = 1        j = 26
i = 1        j = 27
i = 1        j = 28
i = 1        j = 29
i = 1        j = 30
i = 1        j = 31
i = 1        j = 32
i = 1        j = 33
i = 1        j = 34
i = 1        j = 35
i = 1        j = 36
i = 1        j = 37
i = 1        j = 38
i = 1        j = 39
i = 1        j = 40
i = 1        j = 41
i = 1        j = 42
i = 1        j = 43
i = 1        j = 44
i = 1        j = 45
i = 1        j = 46
i = 1        j = 47
i = 1        j = 48
i = 1        j = 49
i = 1        j = 50
i = 1        j = 51
i = 1        j = 52
i = 1        j = 53
i = 1        j = 54
i = 1        j = 55
i = 1        j = 56
i = 1        j = 57
i = 1        j = 58
i = 1        j = 59
i = 1        j = 60
i = 1        j = 61
i = 1        j = 62
i = 1        j = 63
i = 1        j = 64
i = 1        j = 65
i = 1        j = 66
i = 1        j = 67
i = 1        j = 68
i = 1        j = 69
i = 1        j = 70
i = 1        j = 71
i = 1        j = 72
i = 1        j = 73
i = 1        j = 74
i = 1        j = 75
i = 1        j = 76
i = 1        j = 77
i = 1        j = 78
i = 1        j = 79
i = 1        j = 80
i = 1        j = 81
i = 1        j = 82
i = 1        j = 83
i = 1        j = 84
i = 1        j = 85
i = 1        j = 86
i = 1        j = 87
i = 1        j = 88
i = 1        j = 89
i = 1        j = 90
i = 1        j = 91
i = 1        j = 92
i = 1        j = 93
i = 1        j = 94
i = 1        j = 95
i = 1        j = 96
i = 1        j = 97
i = 1        j = 98
i = 1        j = 99
i = 1        j = 100
i = 2
i = 3
i = 4
i = 5
i = 6
i = 7
i = 8
i = 9
i = 10
i = 11
i = 12
i = 13
i = 14
i = 15
i = 16
i = 17
i = 18
i = 19
i = 20
i = 21
i = 22
i = 23
i = 24
i = 25
i = 26
i = 27
i = 28
i = 29
i = 30
i = 31
i = 32
i = 33
i = 34
i = 35
i = 36
i = 37
i = 38
i = 39
i = 40
i = 41
i = 42
i = 43
i = 44
i = 45
i = 46
i = 47
i = 48
i = 49
i = 50


Iska 18-03-2015 20:40 2484451

Цитата:

Цитата HFShak
а потом когда i = 2 он уже пропускается? »

Потому, что срабатывает условие при «While»:
Код:

While $j <= 100
— оно ложно после первого прохода внешнего цикла, потому внутренний цикл не исполняется больше ни разу.

Я полагаю, Вам надо было нечто такое:
Код:

For $i = 1 To 50
        ConsoleWrite("i = " & $i & @CRLF)
       
        $j = 1
       
        While $j <= 100
                ConsoleWrite("i = " & $i & @TAB & "j = " & $j & @CRLF)
                $j += 1
        WEnd
Next

?!

CyberDaemon 18-03-2015 21:09 2484459

Цитата:

Цитата Iska
оно ложно после первого прохода внешнего цикла »

Разумеется. Т.к. j было однократно инициализировано перед внешним циклом, то после первого прогона внутреннего цикла j становится равно 101 и внутренний цикл больше срабатывать не будет. Добавь в первый ConsoleWrite вывод переменной j и все будет сразу видно.

HFShak 19-03-2015 10:28 2484657

Точно, спасибо!


Время: 16:49.

Время: 16:49.
© OSzone.net 2001-