ロストイントランスレーション

Microsoftは、VisualBasic言語の開発中止すると述べた それでは、Citylinkでコード書き直すとき が来ました



この画期的な決定に関係なく、私自身、1つのペットプロジェクトをVBAからC#に変換する必要がありました。私は通常、MS Accessですべてのプロトタイプを作成します。その後、コードはより本格的なデータベース(SQL Serverと読みます)と別のプログラミング言語に移動します。



そして、ここにサイクルがあります。

基本とPascalではループ手続きがある

 

ため、私は下を= アッパーの ステップステップ

              ...

隣に



それはトップにし、上から下へ下から両方に行くことができるという意味で普遍的です。ステップ> 0とステップ<0の両方で使用できます。



同じことをC / C ++ / C#/ JavaScript表記でどのように記述しますか?それらのforループは基本的なものとまったく同等ではないことわかります



  for(i = Lower; i <Upper + 1; i + = Step){…}



これを変更してStep <0の場合に機能するようにする方法?以下ではなく、最もエレガントな、溶液が頭に浮かぶ:



ため(i =下限; 符号(ステップ)* i <= 符号(ステップ)*上限; i + =ステップ){…}



元のfor…nextと同様に、ステップ= 0でループします。



同僚は別のオプションを提案しました:



for(i = Lower; Step> 0?i <= Upper:i> = Upper; i + = Step){...}



実際、ループ変数の最後の値はアッパーであり、ループの本体にも参加しているため、事後条件付きのループとしてプログラムできます



。i= Lower-Step;

do

i + =ステップ;

...

while(i!= Upper)



ただし、Stepが範囲を完全に分割しない場合、このコードは機能しません。Lower…Upper Pythonでrange



使用するループで 、b>で大きい値から小さい値への範囲(b、a)への移動が許可されないことがわかります。 単に空の範囲を設定します。 どのような解決策を提案しますか?






All Articles