Independentemente dessa decisão histórica, eu mesmo precisava traduzir um projeto de estimação de VBA para C #. Normalmente, faço o protótipo de tudo no MS Access e, em seguida, o código vai para um banco de dados mais sério (leia-se: SQL Server) e outra linguagem de programação.
E aqui estão os ciclos.
Em Basic e Pascal, há um procedimento de loop
para i = Etapa inferior para etapa superior
...
próximo
É universal no sentido de que pode ir de baixo para cima e de cima para baixo. Ele pode ser usado se Etapa> 0 e se Etapa <0.
Como você escreve a mesma coisa em notação C / C ++ / C # / JavaScript? Acontece que a sua para circuito não é de todo equivalente ao básico um:
para (i = inferior; i <Alta + 1; i + = Step) {...}
Como modificar isso para o trabalho para o caso quando Etapa <0 ? A seguinte solução, não a mais elegante, vem à mente:
para(i = Inferior; Sinal (Passo) * i <= Sinal (Passo) * Superior; i + = Passo) {…}
Ele, como o original para… próximo, fará um loop no Passo = 0.
Os colegas sugeriram outra opção:
for (i = Lower; Step> 0? I <= Upper: i> = Upper; i + = Step) {...}
Na verdade, uma vez que precisamos que o último valor da variável de loop seja Superior, além de participar do corpo do loop, pode ser programado como loop com pós-condição:
i = Inferior - Passo;
fazer
i + = Etapa;
...
enquanto (i! = Superior)
mas este código não funcionará se Step não dividir completamente o intervalo Inferior ... Superior
Acontece que o loop usando intervalo em Python também não permite mover de um valor maior para um valor menor, intervalo (b, a) com b> a simplesmente define um intervalo vazio.
Que solução você sugere?