
すみません。「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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語の関数と配列に関する質問 8 2024/02/27 15:45
- その他(プログラミング・Web制作) pythonのプログラムについての質問です。 1 2023/05/26 10:31
- Java Javaの問題なのですが、 永久ループを使って以下に従って数値を出力するプログラムを作成する。 ・1 3 2023/06/06 18:43
- 数学 『[無限ホテル]』 5 2023/09/18 16:23
- 数学 『無限回の計算』 4 2023/06/07 17:49
- 高校 なぜ∃がそのまま外れるのか、おしえて下さい 1 2025/03/10 15:43
- その他(セキュリティ) ハッシュ関数の一方向性とチャレンジレスポンス認証について 1 2024/03/23 10:34
- Excel(エクセル) エクセル関数に詳しい方、教えてください(テキスト関数と条件付書式) 1 2024/04/11 02:44
- 数学 「自然数は無限」としてよいのか? 4 2023/11/26 13:10
- その他(プログラミング・Web制作) PythonのTkinter詳しい方へ。画像や言葉の意味を答える3択クイズを作るのに手間取っています 1 2023/12/04 17:10
このQ&Aを見た人はこんなQ&Aも見ています
-
Ruby require ライブラリー
Ruby
-
ruby OpenURI::Meta
Ruby
-
ruby loopメソッド 変数(再喝)
Ruby
-
-
4
Ruby 引数
Ruby
-
5
Ruby newメソッド
Ruby
-
6
ruby loopメソッド 変数
Ruby
-
7
ルビー言語 ライブラリー
Ruby
-
8
ruby begin句
Ruby
-
9
ruby 配列
Ruby
-
10
HTML &CSSとHTML5&CSS3 違い
HTML・CSS
-
11
Ruby 格納
Ruby
-
12
ルビー言語 csvファイル part2
Ruby
-
13
ruby raise句
Ruby
-
14
ruby クラス・オブジェクト・インスタンス
Ruby
-
15
アセンブリ言語について。
その他(プログラミング・Web制作)
-
16
ファイルとフォルダの移動について。
Excel(エクセル)
-
17
実務の処理について。
Excel(エクセル)
-
18
ファイルパスについて。
Excel(エクセル)
-
19
Ruby 変数 用途と違い
Ruby
-
20
プログラミング言語のバージョン確認について。
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
1、Rstudioで回帰直線を求める...
-
ruby loopメソッド 変数(再喝)
-
パソコンのスクリーンセーバー...
-
ルビー言語 csvファイル 続き
-
Ruby require ライブラリー
-
Ruby newメソッド
-
英数字を含む文字列(0-9,A-Z)...
-
ruby ensure句
-
C言語の入力した文字を反転させ...
-
(再質問)エクセルのマクロボ...
-
ruby OpenURI::Meta
-
ruby while式
-
ruby raise句
-
ルビー言語 csvファイル 続き(...
-
WIN11にオフイスを複数入れるこ...
-
pythonエラー
-
ルビー言語 ライブラリー 追記
-
WinSCPで画像のように puttyを...
-
プログラミングについてです。...
-
初心者 パイソンプログラム
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Ruby require ライブラリー
-
(再質問)エクセルのマクロボ...
-
ruby loopメソッド 変数(再喝)
-
ruby loopメソッド 変数
-
ルビー言語 ライブラリー(再々...
-
ruby while式
-
ルビー言語 ライブラリー 追記
-
ビーリアルのユーザー名を変え...
-
ruby OpenURI::Meta
-
ruby クラス・オブジェクト・イ...
-
ruby begin句
-
ruby raise句
-
ruby ensure句
-
ruby 配列
-
ルビー言語 csvファイル part2
-
ルビー言語 csvファイル 続き(...
-
ルビー言語 csvファイル 続き
-
ルビー言語 ライブラリー
-
パソコンのスクリーンセーバー...
-
ルビー言語 ライブラリー
おすすめ情報
No.2です。
迅速な回答ありがとうございます。
No.3です。
迅速な回答ありがとうございます。