
すみません。「while式の条件にtrueを指定してもbreakを使えば無限ループになるとは限らない」の所で、breakを使っても無限ループが起こる事があるのでしょうか?
という所(サイトから引用)で、
counter = 0
while true
p counter
break if counter < 0
counter += 1
end
というrubyのプログラムに、疑問が2つほどあって、
疑問①プログラムを強制終了するには、ctrl +Cで、いいのでしょうか?
疑問②「関数の戻り値などを受けても同様です。」というのは、どういう意味でしょうか?
以上2点について、教えて頂けると幸いです。よろしくお願いします!
で、例えば、以下のrubyプログラムでは、「関数の戻り値」については、
def test
1
end
puts 0 < test()
では、「関数の戻り値」は、「test()の1」の事でしょうか?教えて頂けると嬉しいです。
追記(説明不足なら参照して下さい。)
「雑ですが、こういうのはbreakがあっても無限ループになりますよね。
counter = 0
while true
p counter
break if counter < 0
counter += 1
end
breakで実質的に終了条件を入れても、その条件を永遠に満たさない可能性があれば、無限ループになります。
今回はcounter < 0にしましたが、関数の戻り値などを受けても同様です。」
という形で書いてありました。質問文を正確に書かなかった事を申し訳なく思います。
で、疑問なのですが、
疑問①の追加質問
一般的に、rubyプログラムを強制終了するためには、どうすればよいのでしょうか?
疑問②の補足
以下の「・・・・」の部分を、補足した上で、改めて「関数の戻り値などを受けても同様です。」というのは、どういう意味でしょうか?という疑問を再度させて頂きます。
No.3
- 回答日時:
>疑問③No.2の回答で、
・・途中省略・・
>という様なRubyプログラムを作成すれば良いという事でしょうか?
回答:はい、そうです。
>疑問④「この場合counterの代わりに関数の戻り値を使用しています。」の所を、分かりやすく教えて頂けると嬉しいです。
回答:
元のプログラムは
counter = 0
while true
p counter
break if counter < 0・・・・①
counter += 1
end
となっています
それを
while true
ret = test・・・②
p ret
break if ret < 0・・・・③
end
と書くと
①のcounter が③ではretで置き換わっています。
retは②で
ret=testとなっており
testの戻り値(関数の戻り値)が設定されています。
つまり、③では
①のcounterの代わりにtestの戻り値(関数の戻り値)を使用しています。
つまり、疑問④の追加質問で、
「testの戻り値(関数の戻り値)」は、「ret」の事で合っていますか?
教えて頂けると幸いです。よろしくお願いします。
No.2
- 回答日時:
>疑問①の追加質問
>一般的に、rubyプログラムを強制終了するためには、どうすればよいのでしょうか?
回答:
①コマンドプロンプトから実行している場合は、Ctrl+Cで強制終了できます。
②もしくは、コマンドプロンプトも含めて、タスクマネージャーで強制終了します。この場合は、コマンドプロンプトが終了します。
>疑問②の補足
>以下の「・・・・」の部分を、補足した上で、改めて「関数の戻り値などを受けても同様です。」というのは、どういう意味でしょうか?
回答:No1の回答で既に述べていますが、以下のような解釈も可能です。
counter = 0
while true
p counter
break if counter < 0
counter += 1
end
の代わりに
①下記のような関数を作成する
def test
何らかの処理を行う
処理の結果が正常なら、0を返す
処理の結果が失敗なら、-1を返す
end
②whileの式は以下のように書き換える
while true
ret = test
p ret
break if ret < 0
end
上記のように書くとtest内の処理が失敗するまで、繰り返しを行うように
なります。
この場合counterの代わりに関数の戻り値を使用しています。
すみません。疑問が、又、新たに2つほど出来て、
疑問③No.2の回答で、
「①下記のような関数を作成する」と、「②whileの式は以下のように書き換える」の所は、
「def test
何らかの処理を行う
処理の結果が正常なら、0を返す
処理の結果が失敗なら、-1を返す
end
while true
ret = test
p ret
break if ret < 0
end」
という様なRubyプログラムを作成すれば良いという事でしょうか?
疑問④「この場合counterの代わりに関数の戻り値を使用しています。」の所を、分かりやすく教えて頂けると嬉しいです。
以上2点について、よろしくお願いします。
No.1
- 回答日時:
以下の質問に関する回答です。
質問開始>>>>
counter = 0
while true
p counter
break if counter < 0
counter += 1
end
というrubyのプログラムに、疑問が2つほどあって、
疑問①プログラムを強制終了するには、ctrl +Cで、いいのでしょうか?
疑問②「関数の戻り値などを受けても同様です。」というのは、どういう意味でしょうか?
以上2点について、教えて頂けると幸いです。よろしくお願いします!
で、例えば、以下のrubyプログラムでは、「関数の戻り値」については、
def test
1
end
puts 0 < test()
では、「関数の戻り値」は、「test()の1」の事でしょうか?教えて頂けると嬉しいです。
<<<<質問終了
>関数の戻り値」は、「test()の1」の事でしょうか?教えて頂けると嬉しいです。
回答:
はい、その通りです。
>疑問①プログラムを強制終了するには、ctrl +Cで、いいのでしょうか?
回答:
はい、それで良いです。
>疑問②「関数の戻り値などを受けても同様です。」というのは、どういう意味でしょうか?
回答:
以下のようなことと考えます。
0の代わりに関数の戻り値を使用する。
def test
0
end
のようになっていた場合
でtest()の結果は、必ず 0になります。
従って
break if counter < 0
と書く代わりに
break if counter < test()
と書いても同じことになります。
又、以下のように書いても同じことになります。
ret = test()
break if counter < ret
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
Ruby require ライブラリー
Ruby
-
ruby loopメソッド 変数(再喝)
Ruby
-
ruby OpenURI::Meta
Ruby
-
-
4
Ruby newメソッド
Ruby
-
5
ruby 配列
Ruby
-
6
ruby loopメソッド 変数
Ruby
-
7
ruby begin句
Ruby
-
8
Ruby 引数
Ruby
-
9
ruby クラス・オブジェクト・インスタンス
Ruby
-
10
ルビー言語 ライブラリー
Ruby
-
11
ruby raise句
Ruby
-
12
HTML &CSSとHTML5&CSS3 違い
HTML・CSS
-
13
Ruby 格納
Ruby
-
14
ルビー言語 ライブラリー 追記
Ruby
-
15
ルビー言語 csvファイル 続き
Ruby
-
16
ルビー言語 csvファイル part2
Ruby
-
17
アセンブリ言語について。
その他(プログラミング・Web制作)
-
18
ファイルとフォルダの移動について。
Excel(エクセル)
-
19
ファイルパスについて。
Excel(エクセル)
-
20
実務の処理について。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
pandasでsqlite3にテーブル作成...
-
Ruby require ライブラリー
-
ruby OpenURI::Meta
-
ruby while式
-
ruby loopメソッド 変数(再喝)
-
Ruby on railsをrails sで立ち...
-
VBA メモ帳の上書き保存がしたい
-
(再質問)エクセルのマクロボ...
-
ruby 配列
-
ruby loopメソッド 変数
-
ruby クラス・オブジェクト・イ...
-
ルビー言語 ライブラリー 追記
-
ruby raise句
-
ruby begin句
-
ruby ensure句
-
ルビー言語 ライブラリー(再々...
-
ルビー言語 csvファイル 続き(...
-
ルビー言語 csvファイル 続き
-
ルビー言語 ライブラリー
-
ルビー言語 csvファイル part2
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Ruby require ライブラリー
-
ruby loopメソッド 変数(再喝)
-
(再質問)エクセルのマクロボ...
-
ruby OpenURI::Meta
-
ruby while式
-
ruby loopメソッド 変数
-
1、Rstudioで回帰直線を求める...
-
パソコンのスクリーンセーバー...
-
ビーリアルのユーザー名を変え...
-
ruby 配列
-
C言語の入力した文字を反転させ...
-
ruby クラス・オブジェクト・イ...
-
ルビー言語 ライブラリー 追記
-
100万件越えCSVから条件を満た...
-
ルビー言語 csvファイル 続き
-
Ruby newメソッド
-
教えてください
-
ruby raise句
-
英数字を含む文字列(0-9,A-Z)...
-
pythonエラー
おすすめ情報
No.2です。
迅速な回答ありがとうございます。
No.3です。
迅速な回答ありがとうございます。