Perdido na tradução

A Microsoft disse que vai parar de desenvolver a linguagem Visual Basic . Então, é hora de reescrever o código no Citylink .



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?



All Articles