Я не сторонник GoTo. Если говорить про ассемблер, то это вообще сплошной GoTo. Вот, например, простейший цикл, который к переменной x прибавляет по единичке до 20. Как видно, в ассемблере переходы завязаны именно на метках:
Код |
---|
mov eax, 10
mov ecx, 20
loop1: inc eax
cmp eax, ecx
jle loop1
dec eax
|
Как видно, инструкци jle (
jump if
less or
equal) и выполняет тот самый безусловный переход. На VBA это выглядит более читабельно:
Код |
---|
Dim x As Integer
Const y As Integer = 20
x = 10
While x <= y
x = x + 1
Wend
|
Да, теперь наш код читабелен и удобоварим. Согласен с котярой, что использование GoTo - дело, конечно, личное. Но вопрос в другом - почему этот оператор до сих пор существует? В исходных кодах библиотек платформы .NET Framework -
1583 строчки, где используется GoTo (см. файл)!!! Однажды я видел код.... Этот оператор использовался везде - и даже циклы были написаны в стиле а-ля ассемблер:
Код |
---|
Dim x As Integer
LOOP1:
x = x + 1
If x < 10 Then GoTo LOOP1
|
Ну и в таком духе. Интересно, а как бы vikktur или Alemox написали цикл тройной вложенности через GoTo?
Код |
---|
Dim x, y, z
While x < 10
x = x + 1
While y <= x * 2
y = y + 10
While z <= y * 2
Wend
Wend
Wend
|