<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Control Syntax（制御構文） | エンジニアライブログ</title>
	<atom:link href="https://tomoyuki65.com/tag/control-syntax/feed" rel="self" type="application/rss+xml" />
	<link>https://tomoyuki65.com</link>
	<description></description>
	<lastBuildDate>Wed, 29 Jun 2022 22:54:19 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/>
<atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/>
<atom:link rel="hub" href="https://websubhub.com/hub"/>
<atom:link rel="self" href="https://tomoyuki65.com/tag/control-syntax/feed"/>
	<item>
		<title>【Ruby入門】制御構文を使う！if、case、while、times、for【#7】</title>
		<link>https://tomoyuki65.com/introduction-to-ruby-7</link>
					<comments>https://tomoyuki65.com/introduction-to-ruby-7#respond</comments>
		
		<dc:creator><![CDATA[Tomoyuki]]></dc:creator>
		<pubDate>Fri, 18 Aug 2017 11:00:56 +0000</pubDate>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[Control Syntax（制御構文）]]></category>
		<category><![CDATA[Introduction（入門）]]></category>
		<guid isPermaLink="false">https://tomoyuki65.com/?p=709</guid>

					<description><![CDATA[<p>こんにちは。Tomoyuki（@tomoyuki65）です。 制御構文は他のプログラム言語で学んだことがある人も多いのではないでしょうか？ &#160; 一度他の言語で学んだことがある方は、結構簡単に理解することができる...</p>
The post <a href="https://tomoyuki65.com/introduction-to-ruby-7">【Ruby入門】制御構文を使う！if、case、while、times、for【#7】</a> first appeared on <a href="https://tomoyuki65.com">エンジニアライブログ</a>.]]></description>
										<content:encoded><![CDATA[<hr />
<p>こんにちは。Tomoyuki（<a href="https://twitter.com/tomoyuki65" target="_blank" rel="noopener">@tomoyuki65</a>）です。</p>
<p>制御構文は他のプログラム言語で学んだことがある人も多いのではないでしょうか？</p>
<p>&nbsp;</p>
<p>一度他の言語で学んだことがある方は、結構簡単に理解することができると思います。</p>
<p>そうでない方も、難しくはないので安心して下さい。</p>
<p>&nbsp;</p>
<p><span style="font-size: 14pt;"><strong><span style="background-color: #ffc6d1;">プログラムをコントロールして、問題解決ができた時はとても面白んですよ！</span></strong></span></p>
<p>&nbsp;</p>
<p>この記事では、そんな制御構文について解説します。</p>
<p>&nbsp;</p>
<p><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<ins class="adsbygoogle" style="display: block; text-align: center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-9453826382162914" data-ad-slot="5514976097"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>
<h2>if</h2>
<p>まずはifの使い方について説明します。</p>
<p><span style="border-bottom: 2px solid #be3144;"><strong>ifは条件分岐に使用</strong></span>します。</p>
<p>&nbsp;</p>
<p>基本的な書き方は以下の通りです。</p>
<pre>if 条件 then
  処理を記述
end

# thenは省略可能
if 条件
  処理を記述
end</pre>
<p>&nbsp;</p>
<p>条件が当てはまらなかった場合の処理を記述したい場合、以下のように「else」を使います。</p>
<pre>if 条件 then
  処理１
<span style="color: #ff0000;">else # 条件に当てはまらなかった場合</span>
　処理２
end</pre>
<p>&nbsp;</p>
<p>二つ以上の条件を記載したい場合、以下のように「elsif」を使います。</p>
<pre>if 条件１ then
  処理１
<span style="color: #ff0000;">elsif 条件２ then # 2つ目の条件</span>
  処理２
else # 上記以外の場合
　処理３
end</pre>
<p>&nbsp;</p>
<p>ifの条件には、以下のような<span style="border-bottom: 2px solid #be3144;"><strong>比較演算子や論理演算子を使用</strong></span>します。</p>
<pre># 比較演算子
&gt;    # 例：x &gt; 10 （xが10より大きい場合）
&lt;    # 例：x &lt; 11 （xが11より小さい場合）
&gt;=   # 例：x &gt;= 10 （xが10以上の場合）
&lt;=   # 例：x &lt;= 10 （xが10以下の場合）
==   # 例：x == 10 （xが10と等しい場合）
!=   # 例：x != 10 （xが10と等しくない場合）

# 論理演算子
&amp;&amp;   # 例：x &gt; 0 &amp;&amp; x &lt; 10  （xが0より大きいかつ10より小さい場合）
||   # 例：x == 3 || x == 5 （xが3と等しいまたは5と等しい）
!    # 例：!(x == 1)        （xが1でない）</pre>
<p>&nbsp;</p>
<p>ではifの使用例として、以下のプログラムを実行してみて下さい。</p>
<pre style="background-color: #272822;"><code class="Ruby"># 数値が80の場合
num = 80

# 数値が70を超えた場合
if num &gt; 70
  puts "70超過！"
# 数値が50以上の場合
elsif num &gt;= 50
  puts "50以上"
# 上記以外の場合
else
  puts "50未満"
end</code></pre>
<p>&nbsp;</p>
<div class="c_box intitle green_box type_normal"><div class="box_title"><span class="span__box_title">実行結果</span></div>
70超過！<br />
</div>
<p>&nbsp;</p>
<p>実行結果の通り、数値変数numが80なので最初の条件と一致し、「70超過！」が出力されました。</p>
<p>数値変数を変えて色々試してみて下さいね。</p>
<p>&nbsp;</p>
<div class="supplement ">単純な条件の場合は、以下のような書き方もできます。<br />
puts &#8220;80以上&#8221; if num &gt;= 80</p>
</div>
<p>&nbsp;</p>
<h2>case</h2>
<p>次はcaseの使い方について説明します。</p>
<p><strong><span style="border-bottom: 2px solid #be3144;">caseも条件分岐に使用しますが、ifよりも簡潔に書ける場合があります。</span></strong></p>
<p>&nbsp;</p>
<p>caseの書き方は以下の通りです。</p>
<pre>case 変数
when 変数の値１ then # thenは省略可能
  処理１
when 変数の値２　# whenは複数記載可能
  処理２
else # 上記以外の場合
  処理３
end</pre>
<p>&nbsp;</p>
<p>では例として、以下のプログラムを実行してみて下さい。</p>
<pre style="background-color: #272822;"><code class="Ruby">gohan = "ラーメン"

case gohan
when "親子丼"
 puts "丼もの"
# 条件を複数記載する場合はカンマ「,」を使う
when "ラーメン", "そば", "うどん"
 puts "麺類"
else
 puts "それ以外"
end</code></pre>
<p>&nbsp;</p>
<div class="c_box intitle green_box type_normal"><div class="box_title"><span class="span__box_title">実行結果</span></div>
麺類<br />
</div>
<p>&nbsp;</p>
<p><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<ins class="adsbygoogle" style="display: block; text-align: center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-9453826382162914" data-ad-slot="5514976097"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>
<h2>while</h2>
<p>次は繰り返し処理で使用するwhileの使い方について説明します。</p>
<p><span style="border-bottom: 2px solid #be3144;"><strong>whileは</strong><span style="border-bottom: 2px solid #be3144;"><strong>条件に</strong></span></span><span style="border-bottom: 2px solid #be3144;"><strong>よって繰り返し処理をしたい場合に使用</strong></span>します。</p>
<p>&nbsp;</p>
<p>whileの書き方は以下の通りです。</p>
<pre>while 条件 do # doは省略可能
  処理
end</pre>
<p>&nbsp;</p>
<p>では例として以下のプログラムを実行してみて下さい。</p>
<pre style="background-color: #272822;"><code class="Ruby">i = 0  # 繰り返し条件に使う変数

# i が10より小さい場合繰り返し
while i &lt; 10
  puts "#{i}：繰り返し"
   i += 1   # 「i = i + 1」
end</code></pre>
<p>&nbsp;</p>
<div class="c_box intitle green_box type_normal"><div class="box_title"><span class="span__box_title">実行結果</span></div>
<div>0：繰り返し</div>
<div>1：繰り返し</div>
<div>2：繰り返し</div>
<div>3：繰り返し</div>
<div>4：繰り返し</div>
<div>5：繰り返し</div>
<div>6：繰り返し</div>
<div>7：繰り返し</div>
<div>8：繰り返し</div>
<div>9：繰り返し</div>
</div>
<h2>timesメソッド</h2>
<p>次に「timesメソッド」による繰り返し処理について説明します。</p>
<p><span style="border-bottom: 2px solid #be3144;"><strong>「timesメソッド」は繰り返しの回数が決まっている場合に使用</strong></span>します。</p>
<p>&nbsp;</p>
<p>例として以下のプログラムを実行してみて下さい。</p>
<pre style="background-color: #272822;"><code class="Ruby"># 5回繰り返す場合
5.times do
  puts "繰り返し"
end

# 回数を知りたい場合（0から始まる）
5.times do |i|
 puts "#{i}：繰り返し"
end</code></pre>
<p>&nbsp;</p>
<div class="c_box intitle green_box type_normal"><div class="box_title"><span class="span__box_title">実行結果</span></div>
<div>繰り返し</div>
<div>繰り返し</div>
<div>繰り返し</div>
<div>繰り返し</div>
<div>繰り返し</div>
<div>0：繰り返し</div>
<div>1：繰り返し</div>
<div>2：繰り返し</div>
<div>3：繰り返し</div>
<div>4：繰り返し</div>
</div>
<p>&nbsp;</p>
<p>尚、timesメソッドの場合、do〜endを{}に置き換えることができ、1行で書くことが多いです。</p>
<pre># 5回繰り返す場合
5.times {
 puts "繰り返し"
}

<span style="color: #ff0000;"># 1行で書くとスッキリします。
5.times { puts "繰り返し" }
</span></pre>
<p>&nbsp;</p>
<h2>for</h2>
<p>次はforによる繰り返し処理について説明します。</p>
<p>forは何らかの<span style="border-bottom: 2px solid #be3144;"><strong>集合的なオブジェクト（配列、ハッシュ、範囲）の要素数分だけ処理を繰り返す</strong></span>ことが出来ます。</p>
<p><strong><span style="color: #ff0000;">※ただし、Rubyでforはほぼ使われないということを覚えておきましょう</span></strong></p>
<p>&nbsp;</p>
<p>例として以下のプログラムを実行してみて下さい。</p>
<pre style="background-color: #272822;"><code class="Ruby"># 1〜10の要素を一つずつ取り出してiに格納し、
# 要素がなくなるまで繰り返す
<span style="color: #ff0000;"># 1..10は範囲を表すオブジェクト</span>
for i in <span style="color: #ff0000;">1..10</span> do # doは省略可能
  p i
end</code></pre>
<p>&nbsp;</p>
<div class="c_box intitle green_box type_normal"><div class="box_title"><span class="span__box_title">実行結果</span></div>
<div>1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9<br />
10</div>
</div>
<p>&nbsp;</p>
<p>また、配列やハッシュの場合につても確認しましょう。</p>
<p>以下のプログラムを実行してみて下さい。</p>
<pre style="background-color: #272822;"><code class="Ruby"># 配列の場合
for color in ["赤", "青", "黄色"]
  p color
end

# ハッシュの場合
for fruit, price in {ringo: 100, mikan: 50}
 puts "#{fruit}は#{price}円"
end</code></pre>
<p>&nbsp;</p>
<div class="c_box intitle green_box type_normal"><div class="box_title"><span class="span__box_title">実行結果</span></div>
<div>&#8220;赤&#8221;</div>
<div>&#8220;青&#8221;</div>
<div>&#8220;黄色&#8221;</div>
<div>ringoは100円</div>
<div>mikanは50円</div>
</div>
<p>&nbsp;</p>
<h3>eachメソッド</h3>
<p><strong><span style="border-bottom: 2px solid #be3144;">forは内部的にeachメソッドを使用しています。</span></strong></p>
<p>したがって、for文は次のように書き換えることができます。</p>
<pre style="background-color: #272822;"><code class="Ruby"># 配列の場合
["赤", "青", "黄色"].each do |color|
 p color
end

# ハッシュの場合
{ringo: 100, mikan: 50}.each do |fruit, price|
 puts "#{fruit}は#{price}円"
end</code></pre>
<p>&nbsp;</p>
<div class="supplement ">eachメソッドは処理の量によって、1行で書き換えることが多い<br />
{ringo: 100, mikan: 50}.each { |fruit, price| puts &#8220;#{fruit}は#{price}円&#8221; }</p>
</div>
<p>&nbsp;</p>
<p><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<ins class="adsbygoogle" style="display: block; text-align: center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-9453826382162914" data-ad-slot="5514976097"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>
<h2>break、next</h2>
<p>これまで繰り返し処理について学んできましたが、<span style="border-bottom: 2px solid #be3144;"><strong>繰り返しの途中で処理を終了させたい場合は『break』を使用</strong></span>します。</p>
<p>例として以下のプログラムを実行してみて下さい。</p>
<pre style="background-color: #272822;"><code class="Ruby">10.times do |i|
  if i == 6  # iが6の場合、繰り返し処理を終了
    break
  end
  p i
end</code></pre>
<p>&nbsp;</p>
<div class="c_box intitle green_box type_normal"><div class="box_title"><span class="span__box_title">実行結果</span></div>
<div>0<br />
1<br />
2<br />
3<br />
4<br />
5</div>
</div>
<p>&nbsp;</p>
<p>実行結果の通り、iが6になった場合に処理が終了しているのがわかります。</p>
<p>for文やeachでも使えますので試してみて下さいね。</p>
<p>&nbsp;</p>
<p>また、<span style="border-bottom: 2px solid #be3144;"><strong>繰り返しの途中で処理をスキップしたい場合は、『next』を使用</strong></span>します。</p>
<p>例として以下のプログラムを実行してみて下さい。</p>
<pre style="background-color: #272822;"><code class="Ruby">10.times do |i|
  if i == 5  # iが5の場合、処理をスキップ
    next
  end
  p i
end</code></pre>
<p>&nbsp;</p>
<div class="c_box intitle green_box type_normal"><div class="box_title"><span class="span__box_title">実行結果</span></div>
<div>0<br />
1<br />
2<br />
3<br />
4<br />
6<br />
7<br />
8<br />
9</div>
</div>
<p>&nbsp;</p>
<div class="supplement "><b>無限ループをしたい場合、『loop』を使い、終了条件には『break』を使います。</b></p>
<div><span style="letter-spacing: 0.1em;"># iが5になったら処理を終了させる</span></div>
<div>i = 0</div>
<div>loop do</div>
<div>  if i == 5  # loopは終了条件がないと無限に繰り返すので注意</div>
<div>    break</div>
<div>  end</div>
<div>  p i</div>
<div>  i += 1</div>
<div>end<br />
</div></div>
<p>&nbsp;</p>
<h2>まとめ</h2>
<ul>
<li> 条件分岐にはifを使用する。場合によってはcaseを使い処理を簡潔にする</li>
<li> 条件判定には、比較演算子や論理演算子を使用する</li>
<li> 繰り返し処理にはwhileやtimesメソッドを使用する</li>
<li> 集合的なオブジェクトの繰り返し処理にはforやeachメソッドを使用する</li>
<li> 繰り返しの終了は『break』、スキップは『next』を使用する</li>
</ul>
<p>&nbsp;</p>
<ul>
<li> <strong>関連記事</strong></li>
</ul>
<div class="related_article cf labelnone"><a href="https://tomoyuki65.com/ruby-learning-method-summary"><figure class="eyecatch thum"><img fetchpriority="high" decoding="async" width="486" height="290" src="https://tomoyuki65.com/wp-content/uploads/2017/10/ruby190531-8-min-486x290.png" class="attachment-home-thum size-home-thum wp-post-image" alt="" /></figure><div class="meta inbox"><p class="ttl">【無料あり】Ruby入門サイトおすすめ３選！初心者向けの学習方法を解説</p><span class="date gf">2017年10月24日</span></div></a></div>
<p>&nbsp;</p>The post <a href="https://tomoyuki65.com/introduction-to-ruby-7">【Ruby入門】制御構文を使う！if、case、while、times、for【#7】</a> first appeared on <a href="https://tomoyuki65.com">エンジニアライブログ</a>.]]></content:encoded>
					
					<wfw:commentRss>https://tomoyuki65.com/introduction-to-ruby-7/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
