タグ付けされた質問 「loops」

**ループ**は、一度指定されたステートメントのシーケンスですが、連続して複数回実行される場合があります。

3
テストのロジックを回避しながらコレクションを返すメソッドを単体テストする方法
データオブジェクトのコレクションを生成する方法をテスト駆動しています。オブジェクトのプロパティが正しく設定されていることを確認したい。一部のプロパティは同じものに設定されます。その他は、コレクション内での位置に依存する値に設定されます。これを行う自然な方法は、ループを使用するようです。ただし、Roy Osheroveは単体テストでロジックを使用しないことを強くお勧めします(Art of Unit Testing、178)。彼は言い​​ます: ロジックを含むテストは、通常、一度に複数のテストを行いますが、テストは読みにくく、壊れやすいため、お勧めできません。しかし、テストロジックは、隠れたバグを含む可能性のある複雑さも追加します。 テストは、一般的なルールとして、でなく、制御フローのない一連のメソッド呼び出しtry-catch、およびアサート呼び出しである必要があります。 ただし、デザインに問題はありません(データオブジェクトのリストを生成する方法はありますが、値の一部はシーケンスのどこに依存しますか?-個別に生成してテストすることはできません)。私のデザインにはテストに適さないものがありますか?または、オセロベの教えにあまりにも厳格に専念していますか?または、この問題を回避することについて私が知らない秘密のユニットテストマジックがありますか?(私はC#/ VS2010 / NUnitで書いていますが、可能であれば言語に依存しない答えを探しています。)

3
Javaのループの内側または外側で変数を宣言すると、違いが生じますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 2年前に閉店。 可能な重複: どこで変数を宣言しますか?メソッドのトップまたはそれが必要なとき? Javaのループの内側または外側で変数を宣言すると、違いが生じますか? これは for(int i = 0; i < 1000; i++) { int temp = doSomething(); someMethod(temp); } これに等しい(メモリ使用量に関して)? int temp = 0; for(int i = 0; i < 1000; i++) { temp = doSomething(); someMethod(temp); } また、一時変数がArrayListなどの場合はどうなりますか? for(int i = …
13 java  variables  loops 

2
スレッドがwhileループ内でタスクを待機すると、正確にはどうなりますか?
しばらくC#の非同期/待機パターンを処理した後、次のコードで何が発生するかを説明する方法が本当にわからないことに突然気づきました。 async void MyThread() { while (!_quit) { await GetWorkAsync(); } } GetWorkAsync()Task継続が実行されたときにスレッド切り替えを引き起こす場合とそうでない場合があるawaitableを返すと想定されます。 待機がループ内になかったとしても、混乱することはありません。私は当然、メソッドの残りの部分(つまり、継続)が別のスレッドで実行される可能性があることを期待しています。 ただし、ループ内では、「メソッドの残りの部分」の概念が少し曖昧になります。 スレッドが継続で切り替えられた場合と切り替えられなかった場合の「ループの残りの部分」はどうなりますか?ループの次の反復はどのスレッドで実行されますか? 私の観察では、各反復が同じスレッド(元のスレッド)で開始され、継続が別のスレッドで実行されていることが(最終的に検証されていません)示されています。これは本当にあり得ますか?はいの場合、これは、GetWorkAsyncメソッドのスレッドセーフティに対して考慮される必要があるある程度の予期しない並列処理ですか? 更新:一部の人が示唆したように、私の質問は重複ではありません。while (!_quit) { ... }コードパターンは単に私の実際のコードを簡略化したものです。実際には、私のスレッドは、定期的に(デフォルトでは5秒おきに)作業項目の入力キューを処理する長期ループです。実際の終了条件チェックも、サンプルコードで提案されている単純なフィールドチェックではなく、イベントハンドルチェックです。
10 c#  loops  async 


8
C#foreachの改善?
foreach内にループカウントインデックスを設定し、整数を作成し、それを使用し、インクリメントする必要がある場合、プログラミング中にこれに頻繁に出くわします。 foreach内のループ数?他のループでも使用できます。 これは、コンパイラーがこのキーワードをループ構造内以外のどこで使用することをどのように許可しないかというキーワードの使用に反しますか?
9 c#  loops 

7
ネストされたループ内から「続行」するためのベストプラクティスは?
これは簡略化されたサンプルです。基本的に、文字列リストから文字列をチェックします。チェックにパスすると、その文字列(filterStringOut(i);)が削除され、他のチェックを続行する必要がなくなります。したがってcontinue、次の文字列に。 void ParsingTools::filterStrings(QStringList &sl) { /* Filter string list */ QString s; for (int i=0; i<sl.length(); i++) { s = sl.at(i); // Improper length, remove if (s.length() != m_Length) { filterStringOut(i); continue; // Once removed, can move on to the next string } // Lacks a substring, remove for (int …

7
whileループとforループの証明可能性
私にはこの先生がいます、彼はとても賢いです(時々、ハハ)彼は良いプログラマーがwhileループの代わりにforループを使用しようとすると言いました。彼がこの理由を挙げたのは、whileループは証明できるためです。たとえば、whileループで何が起こるかを完全に説明できるのに、ループではそれを行うことができないからですfor。彼はまた、NASAプログラマーがwhileループのみを使用していforて、これが原因でループを実行できないことについても述べています。 私はこれを理解するのにかなり苦労しています。両方のループについて、それらがどのように機能するかを詳細に説明できますか?両方のためにあなたはいつも何が起こるかを知っていますか? 誰かがwhileループを証明できる理由を私に説明できますか(そのため、for少なくとも場合によってはループよりも優れている可能性があります)。 編集: 多分彼は次のように言っていました: 2:すべてのループには上限が固定されている必要があります。チェックツールが、ループの反復回数の事前設定された上限を超えてはならないことを静的に証明することは、自明である必要があります。ループ境界が静的に証明できない場合、ルールは違反していると見なされます。 ただし、これでも、whileループとforループの違いについては何も言われていません。
8 loops 

1
ループ副作用の関数型プログラミング
関数内にローカル変数またはforループがあることが純粋な関数型プログラミングと見なされないのはなぜか、頭を回そうとしています。 この関数を考えると: int as_int(char *str) { int acc; /* accumulate the partial result */ for (acc = 0; isdigit(*str); str++) { acc = acc * 10 + (*str - '0'); } return acc; } 変数accはどのような状況で副作用になりますか?並行環境でも、関数の呼び出しごとに独自のaccのコピーがあります。そのため、関数型プログラミングで許可されていない理由がよくわかりません。

5
成功するまで繰り返し、失敗を処理するループを構築する方法
私は独学のプログラマーです。私は約1.5年前にプログラミングを始めました。今、私は学校でプログラミングクラスを始めました。プログラミングクラスは1/2年間ありましたが、今はもう半分あります。 クラスでは、C ++でプログラミングする方法を学びます(これは、始める前に、私がすでにかなりよく使用することを知っていた言語です)。 このクラスでは何の問題もありませんでしたが、明確な解決策を見つけることができなかった問題が繰り返し発生しています。 問題は次のようになります(疑似コード): do something if something failed: handle the error try something (line 1) again else: we are done! これはC ++の例です このコードはユーザーに数値の入力を求め、入力が有効になるまで入力を続けます。cin.fail()入力が無効かどうかを確認するために使用します。ときcin.fail()であるtrue私が呼び出す必要がありますcin.clear()し、cin.ignore()ストリームからの入力を取得し続けることができるように。 このコードはをチェックしないことを知っていますEOF。私たちが書いたプログラムは、そうすることを期待されていません。 これが私が学校での課題の1つでコードを書いた方法です。 for (;;) { cout << ": "; cin >> input; if (cin.fail()) { cin.clear(); cin.ignore(512, '\n'); continue; } break; } 私の先生は、私はこれを使うべきではないbreakとcontinue言っていました。彼は代わりにレギュラーwhileかdo ... whileループを使うべきだと提案しました。 …

4
物事をチェックするためにたくさんループするスレッドを作成することはパフォーマンスへの影響ですか?
これは私がいつも疑問に思っている一般的な質問です。 一般に、CPUが「while not true ...」ループなどを実行するスレッドを作成することは集中的ですか? たとえば、次のようにするとします。 // pseudo-code new Thread(function() { while (!useHasDoneSomething) { // do nothing... } alert("you did something!"); } つまり、何かが発生するのを待つスレッドで実行されるコードの一部です。 何らかの理由で、これがCPUに圧力をかけると想像します。結局のところ、それは1つの小さなループですが、サイクルが行われた瞬間にループを再実行しています。これは、1ミリ秒に何回もサイクルを繰り返すことを意味しませんか?...ナノ秒あたり!? オペレーティングシステムはプログラムとスレッドを「処理」しますよね?しかし、それでもループの実行にはかなりの注意が必要です。CPUが他に何もすることができない場合、CPUはそのループに集中し、それによってすべてのアイドル時間を消費しませんか? すべて同じループを行うスレッドを1000個作成するとどうなりますか?それはパフォーマンス/ CPUサイクルにどのように影響しますか? さらに、これはイベントが内部でどのように機能するのですか?Java、.NET、Javascriptなどのイベント(ボタンを押す、ウィンドウのサイズ変更など)を「聞いている」とき、ループするスレッドが作成されていますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.