質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

2回答

636閲覧

Rubyのuntilの意味を教えて下さい

Jun1971

総合スコア9

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2021/05/11 18:22

◆ Rubyのwhile文に対してのuntilの意味と使い方が分かりません。

sum = 0 i = 1 until sum >= 50 sum += i i += 1 end puts sum

Rubyのuntilの意味はwhileの条件の反対になります。でも、この文章が意味が解らないのですが、iの
初期値が1でsumが50以上を満たしてない時ってどういう状態ですか?ソースコードを実行したら、
55になります。until sum >= 50の意味を教えて下さい。それが理解できません。until
について教えて下さい。HPじゃなくてオリジナルの答えを下さい。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/05/11 20:26

プログラムは書いたとおりにしか動かないですし、「文章」としての理解ではなく「文法」として理解すべきではないでしょうか。 無理に日本語に訳そうとすると言語仕様の本質から離れるだけです。 結局その言語を作った人が決めた仕様通りに動くわけですから、実行結果が全てです。実行結果から「そういうものだ」と理解しましょう。
guest

回答2

0

ベストアンサー

whileの英単語での意味は「~である間」であり、これをRubyの文法で言い直すと「条件が真(true)である間」です。
対してuntilの英単語での意味は「~まで」であり、これをRubyの文法で言い直すと「条件が真(true)になるまで」、つまり「条件が偽(false)である間」とのように、言うなればwhileの反対の意味になります。

until sum >= 50は、「sumが50以上になるまで」と読むと若干理解し易いかもしれません。50以上で真(true)、50未満は偽(false)なので、sumの値が50以上になるまでループします。

until sum >= 50のループをwhile文で書き直すと、sumの取り得る値の反対、while sum < 50 になります。
実際にRubyスクリプトとして書いてみましょうか。sumの値の途中経過表示も追加しています。

Ruby

1sum = 0 2i = 1 3#until sum >= 50 4while sum < 50 5 sum += i 6 i += 1 7 puts "sum: " + sum.to_s 8end 9puts sum

これを実行するともとのuntil版と同じ結果となります。

terminal

1$ ruby r2.rb 2sum: 1 3sum: 3 4sum: 6 5sum: 10 6sum: 15 7sum: 21 8sum: 28 9sum: 36 10sum: 45 11sum: 55 1255

投稿2021/05/11 19:54

dodox86

総合スコア9267

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Jun1971

2021/05/12 01:37

回答がわかりやすくて良かったです。sumに着目して考えたら意味がわかりました。untilはwhileの逆の意味で、until sum >= 50 は, sumが50以上になるまで繰り返す。条件が成立するまで繰り返すとわかりました。
guest

0

iの初期値が1でsumが50以上を満たしてない時ってどういう状態ですか?

初期値は関係なく、ループ条件は「sumが50以上を満たしてない時」だけです。

ループを回れば、sumに値が足されて50を超え、その時点でループが終了します。

投稿2021/05/11 22:27

maisumakun

総合スコア146063

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問