
すみません。「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 OpenURI::Meta
Ruby
-
ruby loopメソッド 変数(再喝)
Ruby
-
-
4
Ruby 引数
Ruby
-
5
Ruby newメソッド
Ruby
-
6
ルビー言語 ライブラリー
Ruby
-
7
ruby loopメソッド 変数
Ruby
-
8
ruby 配列
Ruby
-
9
ruby begin句
Ruby
-
10
アセンブリ言語について。
その他(プログラミング・Web制作)
-
11
HTML &CSSとHTML5&CSS3 違い
HTML・CSS
-
12
Ruby 格納
Ruby
-
13
ルビー言語 csvファイル part2
Ruby
-
14
プログラミング言語のバージョン確認について。
その他(プログラミング・Web制作)
-
15
ruby クラス・オブジェクト・インスタンス
Ruby
-
16
ruby raise句
Ruby
-
17
Python 3.12.2 か一番最新のパイソンでしょうか? 2025年4月3日現在。 ChatGP
その他(プログラミング・Web制作)
-
18
CSVファイルの複数行削除
その他(プログラミング・Web制作)
-
19
タモリさんを信じられますか?
XML
-
20
c++の勉強方法を教えてくださいプログラミングをやった事がなく1から勉強を始めようと思います1日1時
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ruby while式
-
ruby loopメソッド 変数
-
ruby loopメソッド 変数(再喝)
-
Ruby require ライブラリー
-
(再質問)エクセルのマクロボ...
-
ruby OpenURI::Meta
-
ruby クラス・オブジェクト・イ...
-
ruby raise句
-
ruby ensure句
-
ルビー言語 csvファイル 続き(...
-
ルビー言語 csvファイル 続き
-
ルビー言語 csvファイル part2
-
ルビー言語 ライブラリー 追記
-
ルビー言語 ライブラリー(再々...
-
ルビー言語 ライブラリー
-
パソコンのスクリーンセーバー...
-
100万件越えCSVから条件を満た...
-
ruby begin句
-
1、Rstudioで回帰直線を求める...
-
プログラミングの課題で1万円か...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ルビー言語 csvファイル part2
-
ruby loopメソッド 変数
-
Ruby require ライブラリー
-
ruby loopメソッド 変数(再喝)
-
ルビー言語 ライブラリー(再々...
-
ルビー言語 csvファイル 続き
-
ルビー言語 ライブラリー
-
ruby クラス・オブジェクト・イ...
-
ビーリアルのユーザー名を変え...
-
ルビー言語 ライブラリー
-
ruby raise句
-
ruby begin句
-
ruby while式
-
ruby 配列
-
ルビー言語 ライブラリー 追記
-
ルビー言語 csvファイル 続き(...
-
(再質問)エクセルのマクロボ...
-
ruby OpenURI::Meta
-
pandasでsqlite3にテーブル作成...
-
ruby ensure句
おすすめ情報
No.2です。
迅速な回答ありがとうございます。
No.3です。
迅速な回答ありがとうございます。