
No.6ベストアンサー
- 回答日時:
> continue文の解説でも、貴方のご指摘の動作(ループの先頭に戻る)はしているようには思えません。
ループの最後へジャンプという感じですね。
VBなら、Nextへ飛ばすのと同じです。
For i = 1 To 5
If i = 3 Then goto Next_i
Debug.Print i
Next_i:
Next i
なんかこのコードはすごくシンプルですね。
これなら記述してみたいなーなどと思いました。
if文ってend ifを書かなくてもいいんですね。
(いろいろな意味で)参考になりました。
ありがとうございました。
No.7
- 回答日時:
おせっかいとは思いながら、書かせてもらいます。
> 私は入れ子はできるだけなくし、入れ子構造の少ないシンプルなプログラムにしたいと思っているのです。
入れ子(ネスティング)が少ない程シンプルと言うのは、誤ったプログラム感です。
ネストは、構造化プログラミングではしょっちゅう出て来ます。
また、gotoやcontinueは、構造化プログラミング(先代的と捉えられるプログラミング技法)ですら使いません。多重ループからの脱出で使うbreak文(C言語)ですら、敬遠されています。
それに、if文のネストってうまく作れば1重で済みます。
VBにはelse if文はありませんでしたっけ?
でもVBは、select case文が強力ですよね。
> 他言語で用意されているcontinueはそのような理念の下に用意されているのだと思っています。(違うかもしれませんが)
全然違います。アセンブリ言語の残骸みたいなものです。
私は、gotoやcontiueを多用しなければならないプログラムは、アルゴリズムから見直した方が好いと感じています。
for文が例になっていますが、0~19, 23~55, 58~77, 85~99を繰り返すとき、
for 0~99
if 20~22 then
continue; // forに飛ぶ。
end if
if 56~57 then
continue; // forに飛ぶ。
end if
if 78~84 then
continue; // forに飛ぶ。
end if
0~19, 23~55, 58~77, 85~99のときしたい処理。
next
よりも、
for 0~19
0~19のときしたい処理。
next
for 23~55
23~55のときしたい処理。
next
for 58~77
58~77のときしたい処理。
next
for 85~99
85~99のときしたい処理。
next
とする方が、速度的にも速くなります。
はじめのプログラムでは、100回の繰り返し×3回のif文がありますが、
あとのプログラムでは、4回の初期化と20+32+19+14=85回の繰り返しになります。
No.5
- 回答日時:
Private Sub CommandButton2_Click()
Dim I As Integer
For I = 1 To 5
Top:
If I <> 3 Then
Debug.Print I
Else
I = I + 1
GoTo Top
End If
Next I
End Sub
Private Sub CommandButton2_Click()
Dim I As Integer
For I = 1 To 5
I = I - (I=3)
Debug.Print I
Next I
End Sub
1
2
4
5
強いて言うならば、やっぱ、Goto文でしょう。
が、上も下も、どちらも、結果は同じです。
「I = I + 1」を自分で行なってしまうのですね…。
これはちょっとという感じがします。
でも参考になりました。
ありがとうございました。
No.4
- 回答日時:
しいて言うならば、GoTo文でしょうかね。
http://www2s.biglobe.ne.jp/~SATSYS/sutatomento.h …
でも、これを多用すると、制御のながれがわかりにくくなります。
if文を駆使して、同様なことができると思いますよ。
ありがとうございます。
GOTO文はBASICの時代に書きました。懐かしいですね。いまだにそんなプログラムを書いていると「スパゲティ」とか言われちゃうんですよね。タブン。
VBのGoTo文ってなんか見難く感じます。慣れないからかもしれませんけど。
参考になりました。ありがとうございました。
No.2
- 回答日時:
VB 6.0の回答ではなくなってしまいますが、アルゴリズム的にマッチすると思いますのでお許し下さい。
continue文を使うと言うことは、ある条件によってその先を実行しないと言うことですね。
例
for文
処理1;
if 条件1 then
continue;
end if
処理2
next文
for文で指定回数繰り返すけど、条件1によっては処理2を飛ばすと言うことを考えると、次のように書き変えられます。
「条件1が成立したら飛ばす」のではなく「条件1が不成立だったら実行する」に発想を切り替えます。
for文
処理1;
if !条件1 then // !は、条件1の逆を示す。
処理2
end if
next文
continue文は、処理の流れを悪くするので、出来るだけ使わない方が良いと思います。
ありがとうございます。
continueを使わない方法の場合、処理2が長い場合に多くの処理をif文の中に入れなければならないということですよね。実は現状がそんな感じです。
私は入れ子はできるだけなくし、入れ子構造の少ないシンプルなプログラムにしたいと思っているのです。
他言語で用意されているcontinueはそのような理念の下に用意されているのだと思っています。(違うかもしれませんが)
No.1
- 回答日時:
>ループ中の後続の処理をやめループの先頭に戻るという命令です。
この仕様では特に無いですね。
「ループを脱出(スキップ)して、次の処理に進む」ならありますが・・・。
continue文の解説でも、貴方のご指摘の動作(ループの先頭に戻る)はしているようには思えません。
http://www9.plala.or.jp/sgwr-t/c/sec06-7.html
無いのですね。ありがとうございます。
continue文についてご存じないようですが、JavaでもCでもC++でもC#でもJavaScriptでもその他の言語でも共通した機能を持つ文ですので、知っておいた方がいいとおもいますよ。
http://www9.plala.or.jp/sgwr-t/c/sec06-7.htmlの説明でも
continueはループのブロック終了の } の直前に処理をスキップしてから、 その後ループの先頭に戻ります。
とありますよ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 哲学 《光あれ》という命令法は どういう実態か 1 2023/01/24 17:57
- その他(悩み相談・人生相談) 「はぁ…」とか言わずに中身教えてくあげればいいのに。 って提案の意味で伝えたら 相手は、命令するなと 2 2022/07/11 15:27
- 哲学 日本語のあたらしい文法を考えよう。 6 2022/06/25 17:41
- 高校 テスト勉強について 中間テストの結果がかえってきたのですがあまりよくありませんでした。 現代の国語と 2 2023/06/05 00:46
- 日本語 警職法の職質規定のところって、日本語おかしくないですか?職質は任意ですが、どうして「停止させて質問す 8 2023/04/30 05:59
- 弁護士・行政書士・司法書士・社会保険労務士 行政書士試験の行政法についての質問になります。 行政法の行政手続法についての質問になります。 問 意 1 2023/08/09 13:35
- 日本語 <代名詞><指示詞>という誤り 4 2022/04/01 11:06
- 大学受験 本気で困ってます! 大学受験/現代文の参考書ルートについて質問です! 現代文の参考書ルートについてで 2 2023/08/13 20:07
- 日本語 <準体助詞>「の」という誤り 25 2022/05/02 13:04
- 教えて!goo 「質問する」って何ですか? 分からない事や知りたい事ですよね? 質問の「質」って誰が決めるの? 2 2022/06/04 20:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
if文を使わずに奇数・偶数を判断
-
ファイルから読み取った「行の...
-
do-while文が禁止される理由
-
入力した数値を倍々するプログラム
-
break文でループを一気に抜ける...
-
階層型ニューラルネットに準ニ...
-
ループを途中で抜けたいのですが。
-
for文while文の無限ループの違...
-
strstr()関数の実装内容について。
-
特定の文字列が出てくるまでの...
-
他言語で言うcontinue文
-
H8/3048マイコンAD/DA変換について
-
「Aに対するBの割合」と「Aに対...
-
複数桁10進数の*桁目だけを抽出...
-
fgetsなどのときのstdinのバッ...
-
#define _CRT_SECURE_NO_WARNIN...
-
信頼区間の1.96や1.65ってどこ...
-
Aの値からBの値を除するとは??
-
「指定されたキャストは有効で...
-
visualstudio C# テキストボッ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
do-while文が禁止される理由
-
ループを途中で抜けたいのですが。
-
Excel VBAで年度をまたぐ期間の...
-
C言語forループが完結した場合...
-
UWSCにてある一定の動作を無限...
-
入力した文字列から母音だけを...
-
excel VBA if文について
-
プログラムで関数は使わない方...
-
C++のvolatileについて
-
入力した数値を倍々するプログラム
-
For文の終了値を関数にしても問...
-
break文でループを一気に抜ける...
-
Delphiで・・・
-
if文の中にfor文なのか、for文...
-
for文while文の無限ループの違...
-
PIC のプログラムについて ど...
-
他言語で言うcontinue文
-
PAD図の書き方
-
C言語、whileループを抜け出す...
-
clock関数を利用した時間計測法...
おすすめ情報