<?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>hey hey heydays* &#187; Learn to Program</title>
	<atom:link href="http://heydays.org/category/learn-to-program/feed" rel="self" type="application/rss+xml" />
	<link>http://heydays.org</link>
	<description>heyday(s) :: The period of greatest popularity, success, or power, prime.</description>
	<lastBuildDate>Tue, 07 Sep 2010 12:56:33 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>犬と人間の年齢換算コード</title>
		<link>http://heydays.org/2008/05/%e7%8a%ac%e3%81%a8%e4%ba%ba%e9%96%93%e3%81%ae%e5%b9%b4%e9%bd%a2%e6%8f%9b%e7%ae%97%e3%82%b3%e3%83%bc%e3%83%89.html</link>
		<comments>http://heydays.org/2008/05/%e7%8a%ac%e3%81%a8%e4%ba%ba%e9%96%93%e3%81%ae%e5%b9%b4%e9%bd%a2%e6%8f%9b%e7%ae%97%e3%82%b3%e3%83%bc%e3%83%89.html#comments</comments>
		<pubDate>Wed, 21 May 2008 00:00:00 +0000</pubDate>
		<dc:creator>masarusuzuki</dc:creator>
				<category><![CDATA[Learn to Program]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://heydays.sakura.ne.jp/?p=967</guid>
		<description><![CDATA[
　Rubyでプログラミング勉強中(参照)のちょっと息抜きに書いてみた。もうちょっとスッキリ書けないかなと思いつつ、現時点ではこれが精一杯。

today = Time.new
thisYear  = today.year
thisMonth = today.month
month = [1, 3, 5, 6, 7, 9, 10, 12, 13, 14, 16]
age_1 = 17
age_2 = 24
dogYear_1 = 7
dogYear   = 4
puts 'あなたのワンちゃんは西暦何年生まれですか？'
birthYear = gets.chomp.to_i
while birthYear &#62; thisYear
puts '今年以前の西暦年を入力してください。'
birthYear = gets.chomp.to_i
end
puts 'あなたのワンちゃんは何月生まれですか？'
birthMonth = gets.chomp.to_i
if (thisYear == birthYear and thisMonth == birthMonth)
puts 'あなたのワンちゃんは生まれたばかりですね。おめでとう！'
exit
end
age_y = thisYear  - birthYear
age_m [...]]]></description>
			<content:encoded><![CDATA[<div class="section">
<p>　Rubyでプログラミング勉強中(<a href="http://d.hatena.ne.jp/heydays/20080430/1209568397" title="Getting Started - hey hey heydays*">参照</a>)のちょっと息抜きに書いてみた。もうちょっとスッキリ書けないかなと思いつつ、現時点ではこれが精一杯。</p>
<pre class="syntax-highlight">
today = <span class="synIdentifier">Time</span>.new
thisYear  = today.year
thisMonth = today.month
month = [<span class="synConstant">1</span>, <span class="synConstant">3</span>, <span class="synConstant">5</span>, <span class="synConstant">6</span>, <span class="synConstant">7</span>, <span class="synConstant">9</span>, <span class="synConstant">10</span>, <span class="synConstant">12</span>, <span class="synConstant">13</span>, <span class="synConstant">14</span>, <span class="synConstant">16</span>]
age_1 = <span class="synConstant">17</span>
age_2 = <span class="synConstant">24</span>
dogYear_1 = <span class="synConstant">7</span>
dogYear   = <span class="synConstant">4</span>
puts <span class="synSpecial">'</span><span class="synConstant">あなたのワンちゃんは西暦何年生まれですか？</span><span class="synSpecial">'</span>
birthYear = gets.chomp.to_i
<span class="synStatement">while</span> birthYear &#62; thisYear
puts <span class="synSpecial">'</span><span class="synConstant">今年以前の西暦年を入力してください。</span><span class="synSpecial">'</span>
birthYear = gets.chomp.to_i
<span class="synStatement">end</span>
puts <span class="synSpecial">'</span><span class="synConstant">あなたのワンちゃんは何月生まれですか？</span><span class="synSpecial">'</span>
birthMonth = gets.chomp.to_i
<span class="synStatement">if</span> (thisYear == birthYear <span class="synStatement">and</span> thisMonth == birthMonth)
puts <span class="synSpecial">'</span><span class="synConstant">あなたのワンちゃんは生まれたばかりですね。おめでとう！</span><span class="synSpecial">'</span>
<span class="synStatement">exit</span>
<span class="synStatement">end</span>
age_y = thisYear  - birthYear
age_m = thisMonth - birthMonth
<span class="synStatement">if</span> age_m &#60; <span class="synConstant">0</span>
age_m = thisMonth + (<span class="synConstant">12</span> - birthMonth)
age_y = age_y - <span class="synConstant">1</span>
<span class="synStatement">end</span>
<span class="synStatement">if</span> age_y == <span class="synConstant">0</span>
puts <span class="synSpecial">'</span><span class="synConstant">あなたのワンちゃんは、月齢</span><span class="synSpecial">'</span> + age_m.to_s + <span class="synSpecial">'</span><span class="synConstant">ヶ月です。</span><span class="synSpecial">'</span>
age = month[age_m - <span class="synConstant">1</span>]
<span class="synStatement">elsif</span> (age_y == <span class="synConstant">1</span> <span class="synStatement">and</span> age_m == <span class="synConstant">0</span>)
puts <span class="synSpecial">'</span><span class="synConstant">あなたのワンちゃんは、</span><span class="synSpecial">'</span> + age_y.to_s + <span class="synSpecial">'</span><span class="synConstant">歳です。</span><span class="synSpecial">'</span>
age = age_1
<span class="synStatement">elsif</span> (age_y == <span class="synConstant">1</span> <span class="synStatement">and</span> age_m &#62;  <span class="synConstant">0</span>)
puts <span class="synSpecial">'</span><span class="synConstant">あなたのワンちゃんは、</span><span class="synSpecial">'</span> + age_y.to_s + <span class="synSpecial">'</span><span class="synConstant">歳と</span><span class="synSpecial">'</span> + age_m.to_s + <span class="synSpecial">'</span><span class="synConstant">ヶ月です。</span><span class="synSpecial">'</span>
age = age_1 + (dogYear_1 * age_m / <span class="synConstant">12</span>)
<span class="synStatement">elsif</span> (age_y &#62;= <span class="synConstant">2</span> <span class="synStatement">and</span> age_m == <span class="synConstant">0</span>)
puts <span class="synSpecial">'</span><span class="synConstant">あなたのワンちゃんは、</span><span class="synSpecial">'</span> + age_y.to_s + <span class="synSpecial">'</span><span class="synConstant">歳です。</span><span class="synSpecial">'</span>
age = age_2 + ((age_y - <span class="synConstant">2</span>) * dogYear)
<span class="synStatement">elsif</span> (age_y  &#62; <span class="synConstant">1</span> <span class="synStatement">and</span> age_m &#62;  <span class="synConstant">0</span>)
puts <span class="synSpecial">'</span><span class="synConstant">あなたのワンちゃんは、</span><span class="synSpecial">'</span> + age_y.to_s + <span class="synSpecial">'</span><span class="synConstant">歳と</span><span class="synSpecial">'</span> + age_m.to_s + <span class="synSpecial">'</span><span class="synConstant">ヶ月です。</span><span class="synSpecial">'</span>
age = (age_2 + ((age_y - <span class="synConstant">2</span>) * dogYear)) + (dogYear * age_m / <span class="synConstant">12</span>)
<span class="synStatement">end</span>
puts <span class="synSpecial">'</span><span class="synConstant">人間でいうと、概ね</span><span class="synSpecial">'</span> + age.to_s + <span class="synSpecial">'</span><span class="synConstant">歳です。</span><span class="synSpecial">'</span>
</pre>
<h4>メモ</h4>
<ul>
<li>換算表参照 ⇒ <a href="http://www.e-petfood.com/nenrei1.html" title="犬＆猫　年齢換算表 e-Petfood">犬＆猫　年齢換算表 e-Petfood</a>
<ul>
<li>月齢1ヶ月→1歳までは規則性がないみたい。</li>
<li>1歳→2歳は7歳、2歳以降は4歳/年。</li>
</ul>
</li>
<li>誕生年(西暦)と誕生月を入力してもらい、取得する現在の年月と比較して、年齢(月齢)を計算・表示。</li>
<li>月齢1ヶ月→1歳までの換算は規則性がないので、換算年齢を配列(month[])に入れこむ。</li>
<li>きっかりn歳にならない場合(例: 1歳9ヶ月とか)もあるので、大体で換算年齢を計算。</li>
</ul>
<h4>See also</h4>
<ul>
<li><a target="_blank" href="http://pine.fm/LearnToProgram/">Learn to Program, by Chris Pine</a></li>
<li><a target="_blank" href="http://www1.tf.chiba-u.jp/~shin/tutorial/">プログラミング入門　- Rubyを使って -</a></li>
<li><a target="_blank" href="http://d.hatena.ne.jp/heydays/archive?word=*%5BLearn+to+Program%5D&#038;.submit=%B0%DC%C6%B0">[Learn to Program]記事一覧</a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://heydays.org/2008/05/%e7%8a%ac%e3%81%a8%e4%ba%ba%e9%96%93%e3%81%ae%e5%b9%b4%e9%bd%a2%e6%8f%9b%e7%ae%97%e3%82%b3%e3%83%bc%e3%83%89.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Few Things to Try on 7. Arrays and Iterators</title>
		<link>http://heydays.org/2008/05/a-few-things-to-try-on-7-arrays-and-iterators.html</link>
		<comments>http://heydays.org/2008/05/a-few-things-to-try-on-7-arrays-and-iterators.html#comments</comments>
		<pubDate>Wed, 14 May 2008 16:05:02 +0000</pubDate>
		<dc:creator>masarusuzuki</dc:creator>
				<category><![CDATA[Learn to Program]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://heydays.sakura.ne.jp/?p=963</guid>
		<description><![CDATA[
　Rubyでプログラミング勉強中(参照)。
　Arrays(配列)とIterators(イテレータ)について学ぶ。
A Few Things to Try on 7. Arrays and Iterators
一問目


Write the program we talked about at the very beginning of this chapter. 
Hint: There&#8217;s a lovely array method which will give you a sorted version of an array: sort. Use it!
7.  Arrays and Iterators
『Write the program we talked about at the very beginning of [...]]]></description>
			<content:encoded><![CDATA[<div class="section">
<p>　Rubyでプログラミング勉強中(<a target="_blank" href="http://d.hatena.ne.jp/heydays/20080430/1209568397">参照</a>)。</p>
<p>　Arrays(配列)とIterators(イテレータ)について学ぶ。</p>
<h4>A Few Things to Try on 7. Arrays and Iterators</h4>
<h5>一問目</h5>
<p>
<blockquote title="7.  Arrays and Iterators" cite="http://pine.fm/LearnToProgram/?Chapter=07">
<p>Write the program we talked about at the very beginning of this chapter. </p>
<p><span style="font-style:italic;"><span style="font-weight:bold;">Hint:</span> There&#8217;s a lovely array method which will give you a sorted version of an array: sort. Use it!</span></p>
<p><cite><a href="http://pine.fm/LearnToProgram/?Chapter=07" target="_blank">7.  Arrays and Iterators</a></cite></p></blockquote>
<p>『Write the program we talked about at the very beginning of this chapter』っていうのは、以下。</p>
<p>
<blockquote title="7.  Arrays and Iterators" cite="http://pine.fm/LearnToProgram/?Chapter=07">
<p>Let&#8217;s write a program which asks us to type in as many words as we want (one word per line, continuing until we just press Enter on an empty line), and which then repeats the words back to us in alphabetical order.</p>
<p><cite><a href="http://pine.fm/LearnToProgram/?Chapter=07" target="_blank">7.  Arrays and Iterators</a></cite></p></blockquote>
<p>これは簡単。</p>
<pre class="syntax-highlight">
word = gets.chomp
ary = []
<span class="synStatement">while</span> word != <span class="synSpecial">''</span>
ary &#60;&#60; word
word = gets.chomp
<span class="synStatement">end</span>
puts <span class="synSpecial">'</span><span class="synConstant">Sorted by Alphabet</span><span class="synSpecial">'</span>
puts <span class="synSpecial">'</span><span class="synConstant">==================</span><span class="synSpecial">'</span>
puts ary.sort
</pre>
<p></p>
<h5>二問目</h5>
<p>
<blockquote title="7.  Arrays and Iterators" cite="http://pine.fm/LearnToProgram/?Chapter=07">
<p>Try writing the above program <span style="font-style:italic;">without </span>using the sort method. A large part of programming is solving problems, so get all the practice you can!</p>
<p><cite><a href="http://pine.fm/LearnToProgram/?Chapter=07" target="_blank">7.  Arrays and Iterators</a></cite></p></blockquote>
<p>これは難しかった・・・。ウンウンと唸って唸ってやっとできた。</p>
<pre class="syntax-highlight">
word = gets.chomp
ary = []
<span class="synStatement">while</span> word != <span class="synSpecial">''</span>
ary &#60;&#60; word
word = gets.chomp
<span class="synStatement">end</span>
i = <span class="synConstant">0</span>
<span class="synStatement">while</span> i &#60; ary.length
j = i + <span class="synConstant">1</span>
<span class="synStatement">while</span> j &#60; ary.length
<span class="synStatement">if</span> ( ary[i].to_s &#62; ary[j].to_s )
tmp = ary[i]
ary[i] = ary[j]
ary[j] = tmp
<span class="synStatement">end</span>
j = j + <span class="synConstant">1</span>
<span class="synStatement">end</span>
i = i + <span class="synConstant">1</span>
<span class="synStatement">end</span>
puts
puts <span class="synSpecial">'</span><span class="synConstant">Sorted by Alphabet</span><span class="synSpecial">'</span>
puts <span class="synSpecial">'</span><span class="synConstant">==================</span><span class="synSpecial">'</span>
puts ary
</pre>
<p></p>
<h5>三問目</h5>
<p>
<blockquote title="7.  Arrays and Iterators" cite="http://pine.fm/LearnToProgram/?Chapter=07">
<p>Rewrite your Table of Contents program (from the chapter on <a href="http://pine.fm/LearnToProgram/?Chapter=05" target="_blank">methods</a>). Start the program with an array holding all of the information for your Table of Contents (chapter names, page numbers, etc.). Then print out the information from the array in a beautifully formatted Table of Contents.</p>
<p><cite><a href="http://pine.fm/LearnToProgram/?Chapter=07" target="_blank">7.  Arrays and Iterators</a></cite></p></blockquote>
<p>こんな感じでよいのかな。</p>
<pre class="syntax-highlight">
toc = [<span class="synSpecial">'</span><span class="synConstant">Chapter 1:  Numbers  </span><span class="synSpecial">'</span>, <span class="synSpecial">'</span><span class="synConstant">  page 1</span><span class="synSpecial">'</span>,
<span class="synSpecial">'</span><span class="synConstant">Chapter 2:  Letters  </span><span class="synSpecial">'</span>, <span class="synSpecial">'</span><span class="synConstant"> page 72</span><span class="synSpecial">'</span>,
<span class="synSpecial">'</span><span class="synConstant">Chapter 3:  Variables</span><span class="synSpecial">'</span>, <span class="synSpecial">'</span><span class="synConstant">page 181</span><span class="synSpecial">'</span>]
lineWidth = <span class="synConstant">50</span>
puts <span class="synSpecial">'</span><span class="synConstant">Table of Contents</span><span class="synSpecial">'</span>.center(lineWidth)
puts <span class="synSpecial">''</span>
i = <span class="synConstant">0</span>
j = <span class="synConstant">1</span>
<span class="synStatement">while</span> i &#60; toc.length
puts (toc[i].ljust(lineWidth/<span class="synConstant">2</span>) + toc[j].rjust(lineWidth/<span class="synConstant">2</span>))
i += <span class="synConstant">2</span>
j += <span class="synConstant">2</span>
<span class="synStatement">end</span>
</pre>
<h4>雑感</h4>
<p>　練習問題二問目が手強かったけど、勉強になった。次チャプター以降から、さらに深く(そして難しく)なっていく。ついていけるかな・・・。</p>
<h4>See also</h4>
<ul>
<li><a target="_blank" href="http://pine.fm/LearnToProgram/">Learn to Program, by Chris Pine</a></li>
<li><a target="_blank" href="http://www1.tf.chiba-u.jp/~shin/tutorial/">プログラミング入門　- Rubyを使って -</a></li>
<li><a target="_blank" href="http://d.hatena.ne.jp/heydays/archive?word=*%5BLearn+to+Program%5D&#038;.submit=%B0%DC%C6%B0">[Learn to Program]記事一覧</a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://heydays.org/2008/05/a-few-things-to-try-on-7-arrays-and-iterators.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>閏年(Leap Year)判別コード</title>
		<link>http://heydays.org/2008/05/%e9%96%8f%e5%b9%b4leap-year%e5%88%a4%e5%88%a5%e3%82%b3%e3%83%bc%e3%83%89.html</link>
		<comments>http://heydays.org/2008/05/%e9%96%8f%e5%b9%b4leap-year%e5%88%a4%e5%88%a5%e3%82%b3%e3%83%bc%e3%83%89.html#comments</comments>
		<pubDate>Thu, 08 May 2008 18:07:04 +0000</pubDate>
		<dc:creator>masarusuzuki</dc:creator>
				<category><![CDATA[Learn to Program]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://heydays.sakura.ne.jp/?p=955</guid>
		<description><![CDATA[
　というわけで(id:heydays:20080508:1210235785)、模範解答を参考に閏年(Leap Year)判別コードを見直してみる。こうして見直してみると、プログラム初心者丸出しで恥ずかしいことこの上ないけど、そこら辺は気にしない気にしない。


Leap Years. Write a program which will ask for a starting year and an ending year, and then puts all of the leap years between them (and including them, if they are also leap years). Leap years are years divisible by four (like 1984 and 2004). However, years divisible by 100 are not leap [...]]]></description>
			<content:encoded><![CDATA[<div class="section">
<p>　というわけで(<a href="http://d.hatena.ne.jp/heydays/20080508/1210235785">id:heydays:20080508:1210235785</a>)、模範解答を参考に閏年(Leap Year)判別コードを見直してみる。こうして見直してみると、プログラム初心者丸出しで恥ずかしいことこの上ないけど、そこら辺は気にしない気にしない。</p>
<p>
<blockquote title="6.  Flow Control" cite="http://pine.fm/LearnToProgram/?Chapter=06">
<p>Leap Years. Write a program which will ask for a starting year and an ending year, and then puts all of the leap years between them (and including them, if they are also leap years). Leap years are years divisible by four (like 1984 and 2004). However, years divisible by 100 are not leap years (such as 1800 and 1900) unless they are divisible by 400 (like 1600 and 2000, which were in fact leap years). <span style="font-style:italic;">(Yes, it&#8217;s all pretty confusing, but not as confusing has having July in the middle of the winter, which is what would eventually happen.)</span></p>
<p><cite><a href="http://pine.fm/LearnToProgram/?Chapter=06" target="_blank">6.  Flow Control</a></cite></p></blockquote>
<p>　この練習問題の僕の解答は以下だった。</p>
<pre class="syntax-highlight">
puts <span class="synSpecial">'</span><span class="synConstant">Enter a start year.</span><span class="synSpecial">'</span>
sYear = gets.chomp
puts <span class="synSpecial">''</span>
puts <span class="synSpecial">'</span><span class="synConstant">Enter an end year.</span><span class="synSpecial">'</span>
eYear = gets.chomp
puts <span class="synSpecial">''</span>
<span class="synStatement">if</span> sYear &#62; eYear
puts <span class="synSpecial">'</span><span class="synConstant">An end year must be equal to or greater than a start year.</span><span class="synSpecial">'</span>
<span class="synStatement">else</span>
puts <span class="synSpecial">'</span><span class="synConstant">The leap years between </span><span class="synSpecial">'</span> + sYear.to_s + <span class="synSpecial">'</span><span class="synConstant"> and </span><span class="synSpecial">'</span> + eYear.to_s + <span class="synSpecial">'</span><span class="synConstant"> are listed below.</span><span class="synSpecial">'</span>
puts <span class="synSpecial">''</span>
<span class="synStatement">while</span> sYear.to_i != (eYear.to_i + <span class="synConstant">1</span>)
aYear = sYear.to_i % <span class="synConstant">4</span>
bYear = sYear.to_i % <span class="synConstant">100</span>
cYear = sYear.to_i % <span class="synConstant">400</span>
<span class="synStatement">if</span> aYear == <span class="synConstant">0</span>
<span class="synStatement">if</span> bYear != <span class="synConstant">0</span>
puts sYear.to_s
<span class="synStatement">else</span>
<span class="synStatement">if</span> cYear == <span class="synConstant">0</span>
puts sYear.to_s
<span class="synStatement">end</span>
<span class="synStatement">end</span>
<span class="synStatement">end</span>
sYear = sYear.to_i + <span class="synConstant">1</span>
<span class="synStatement">end</span>
<span class="synStatement">end</span>
</pre>
<p>　そして、<a href="http://d.hatena.ne.jp/Kiske/">id:Kiske</a>さんの模範解答(<a href="http://d.hatena.ne.jp/Kiske/20070705/1183627478">id:Kiske:20070705:1183627478</a>)は以下。</p>
<blockquote title="rubyチュートリアルを試してみる　その2 - note-phper" cite="http://d.hatena.ne.jp/Kiske/20070705/1183627478"><p><pre class="syntax-highlight">
puts <span class="synSpecial">'</span><span class="synConstant">開始年を入力.</span><span class="synSpecial">'</span>
from = gets.chomp.to_i
puts <span class="synSpecial">'</span><span class="synConstant">終了年を入力.</span><span class="synSpecial">'</span>
to = gets.chomp.to_i
puts <span class="synSpecial">&#34;#{from}</span><span class="synConstant">年～</span><span class="synSpecial">#{to}</span><span class="synConstant">年のうるう年一覧</span><span class="synSpecial">&#34;</span>
<span class="synStatement">while</span> from &#60;= to
<span class="synStatement">if</span> (from % <span class="synConstant">4</span> == <span class="synConstant">0</span> <span class="synStatement">and</span> from % <span class="synConstant">100</span> != <span class="synConstant">0</span> <span class="synStatement">or</span> from % <span class="synConstant">400</span> == <span class="synConstant">0</span>)
puts from.to_s + <span class="synSpecial">'</span><span class="synConstant">年</span><span class="synSpecial">'</span>
<span class="synStatement">end</span> from = from + <span class="synConstant">1</span>
<span class="synStatement">end</span>
</pre>
</p>
<p><cite><a href="http://d.hatena.ne.jp/Kiske/20070705/1183627478" target="_blank">rubyチュートリアルを試してみる　その2 &#8211; note-phper</a></cite></p></blockquote>
<p>なるほどー。</p>
<p>こうして見ると、もう全然だめですな、僕のコードは。この練習問題のキーである閏年をいかに判別するか、っていうところが僕の書いたコードだと何かしつこい。</p>
<p>閏年は以下のルールから判別する。</p>
<ul>
<li>4で割り切れる </li>
<li>かつ、100で割り切れない</li>
<li>100で割り切れる場合、400で割り切れれば、閏年</li>
</ul>
<p>これを、if文一行で書けるってことに気付かなかった。勉強になりました。</p>
<p>あと、『gets.chomp』を『gets.chomp.to_i』とすることで、変数に入力した文字列を数(Integer)として扱うことができる、っていうのも気付かなかったなあ。なるほど。</p>
<p>　というわけで、僕の書いたコードを上記模範解答を参考にして、書き換えてみる。</p>
<pre class="syntax-highlight">
puts <span class="synSpecial">'</span><span class="synConstant">Enter a start year.</span><span class="synSpecial">'</span>
sYear = gets.chomp.to_i
puts <span class="synSpecial">''</span>
puts <span class="synSpecial">'</span><span class="synConstant">Enter an end year.</span><span class="synSpecial">'</span>
eYear = gets.chomp.to_i
puts <span class="synSpecial">''</span>
<span class="synStatement">if</span> sYear &#62; eYear
puts <span class="synSpecial">'</span><span class="synConstant">An end year must be equal to or greater than a start year.</span><span class="synSpecial">'</span>
<span class="synStatement">else</span>
puts <span class="synSpecial">'</span><span class="synConstant">The leap years between </span><span class="synSpecial">'</span> + sYear.to_s + <span class="synSpecial">'</span><span class="synConstant"> and </span><span class="synSpecial">'</span> + eYear.to_s + <span class="synSpecial">'</span><span class="synConstant"> are listed below.</span><span class="synSpecial">'</span>
puts <span class="synSpecial">''</span>
<span class="synStatement">while</span> sYear &#60;= eYear
<span class="synStatement">if</span> (sYear % <span class="synConstant">4</span> == <span class="synConstant">0</span> <span class="synStatement">and</span> sYear % <span class="synConstant">100</span> != <span class="synConstant">0</span> <span class="synStatement">or</span> sYear % <span class="synConstant">400</span> == <span class="synConstant">0</span>)
puts sYear.to_s
<span class="synStatement">end</span>
sYear = sYear + <span class="synConstant">1</span>
<span class="synStatement">end</span>
<span class="synStatement">end</span>
</pre>
<p>んー、シンプル。</p>
<p>Many thanks to <a href="http://d.hatena.ne.jp/Kiske/">id:Kiske</a></p>
<h4>See also</h4>
<ul>
<li><a href="http://d.hatena.ne.jp/Kiske/archive?word=ruby%a5%c1%a5%e5%a1%bc%a5%c8%a5%ea%a5%a2%a5%eb%a4%f2%bb%ee%a4%b7%a4%c6%a4%df%a4%eb" title="「rubyチュートリアルを試してみる」の検索結果一覧 - note-phper">「rubyチュートリアルを試してみる」の検索結果一覧 &#8211; note-phper</a></li>
<li><a target="_blank" href="http://pine.fm/LearnToProgram/">Learn to Program, by Chris Pine</a></li>
<li><a target="_blank" href="http://www1.tf.chiba-u.jp/~shin/tutorial/">プログラミング入門　- Rubyを使って -</a></li>
<li><a target="_blank" href="http://d.hatena.ne.jp/heydays/archive?word=*%5BLearn+to+Program%5D&#038;.submit=%B0%DC%C6%B0">[Learn to Program]記事一覧</a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://heydays.org/2008/05/%e9%96%8f%e5%b9%b4leap-year%e5%88%a4%e5%88%a5%e3%82%b3%e3%83%bc%e3%83%89.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>模範解答発見！</title>
		<link>http://heydays.org/2008/05/%e6%a8%a1%e7%af%84%e8%a7%a3%e7%ad%94%e7%99%ba%e8%a6%8b%ef%bc%81.html</link>
		<comments>http://heydays.org/2008/05/%e6%a8%a1%e7%af%84%e8%a7%a3%e7%ad%94%e7%99%ba%e8%a6%8b%ef%bc%81.html#comments</comments>
		<pubDate>Thu, 08 May 2008 17:36:25 +0000</pubDate>
		<dc:creator>masarusuzuki</dc:creator>
				<category><![CDATA[Learn to Program]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://heydays.sakura.ne.jp/?p=956</guid>
		<description><![CDATA[
　id:Kiskeさんという方が、僕と同じようにダイアリーに練習問題の解答を記録しているのを見つけました。

「rubyチュートリアルを試してみる」の検索結果一覧 &#8211; note-phper

　コードがシンプルで素敵です。特に、閏年(Leap Year)判別コードを見たときは、自分の書いたコード(id:heydays:20080508:1210225720)が随分と鼻タレだったということに気付き、泣き笑いしました。自分の頭で悶々と考えるのも大事だけど、ちゃんとしたコードを参考にするっていうのも同じくらい大事なんだなと、思い知る次第です。
僕は今、7. Arrays and Iteratorsに取り掛かっているところ。これからどんどん練習問題が複雑化していくなあと感じていたので、模範解答を見つけることができて、ラッキーです。とはいえ、自分の頭で練習問題コードを書ききってから、模範解答を参考にしていかねば、です。
　id:Kiskeさん、勝手に模範解答として参考にさせていただきますので、宜しくお願いします。
See also

「rubyチュートリアルを試してみる」の検索結果一覧 &#8211; note-phper
Learn to Program, by Chris Pine
プログラミング入門　- Rubyを使って -
[Learn to Program]記事一覧


]]></description>
			<content:encoded><![CDATA[<div class="section">
<p>　<a href="http://d.hatena.ne.jp/Kiske/">id:Kiske</a>さんという方が、僕と同じようにダイアリーに練習問題の解答を記録しているのを見つけました。</p>
<ul>
<li><a href="http://d.hatena.ne.jp/Kiske/archive?word=ruby%a5%c1%a5%e5%a1%bc%a5%c8%a5%ea%a5%a2%a5%eb%a4%f2%bb%ee%a4%b7%a4%c6%a4%df%a4%eb" title="「rubyチュートリアルを試してみる」の検索結果一覧 - note-phper">「rubyチュートリアルを試してみる」の検索結果一覧 &#8211; note-phper</a></li>
</ul>
<p>　コードがシンプルで素敵です。特に、閏年(Leap Year)判別コードを見たときは、自分の書いたコード(<a href="http://d.hatena.ne.jp/heydays/20080508/1210225720">id:heydays:20080508:1210225720</a>)が随分と鼻タレだったということに気付き、泣き笑いしました。自分の頭で悶々と考えるのも大事だけど、ちゃんとしたコードを参考にするっていうのも同じくらい大事なんだなと、思い知る次第です。</p>
<p>僕は今、<a href="http://pine.fm/LearnToProgram/?Chapter=07" title="7. Arrays and Iterators">7. Arrays and Iterators</a>に取り掛かっているところ。これからどんどん練習問題が複雑化していくなあと感じていたので、模範解答を見つけることができて、ラッキーです。とはいえ、自分の頭で練習問題コードを書ききってから、模範解答を参考にしていかねば、です。</p>
<p>　<a href="http://d.hatena.ne.jp/Kiske/">id:Kiske</a>さん、勝手に模範解答として参考にさせていただきますので、宜しくお願いします。</p>
<h4>See also</h4>
<ul>
<li><a href="http://d.hatena.ne.jp/Kiske/archive?word=ruby%a5%c1%a5%e5%a1%bc%a5%c8%a5%ea%a5%a2%a5%eb%a4%f2%bb%ee%a4%b7%a4%c6%a4%df%a4%eb" title="「rubyチュートリアルを試してみる」の検索結果一覧 - note-phper">「rubyチュートリアルを試してみる」の検索結果一覧 &#8211; note-phper</a></li>
<li><a target="_blank" href="http://pine.fm/LearnToProgram/">Learn to Program, by Chris Pine</a></li>
<li><a target="_blank" href="http://www1.tf.chiba-u.jp/~shin/tutorial/">プログラミング入門　- Rubyを使って -</a></li>
<li><a target="_blank" href="http://d.hatena.ne.jp/heydays/archive?word=*%5BLearn+to+Program%5D&#038;.submit=%B0%DC%C6%B0">[Learn to Program]記事一覧</a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://heydays.org/2008/05/%e6%a8%a1%e7%af%84%e8%a7%a3%e7%ad%94%e7%99%ba%e8%a6%8b%ef%bc%81.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Few Things to Try on 6. Flow Control</title>
		<link>http://heydays.org/2008/05/a-few-things-to-try-on-6-flow-control.html</link>
		<comments>http://heydays.org/2008/05/a-few-things-to-try-on-6-flow-control.html#comments</comments>
		<pubDate>Thu, 08 May 2008 14:48:40 +0000</pubDate>
		<dc:creator>masarusuzuki</dc:creator>
				<category><![CDATA[Learn to Program]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://heydays.sakura.ne.jp/?p=957</guid>
		<description><![CDATA[
　Rubyでプログラミング勉強中(参照)。
　本当は毎日ちょっとずつでもプログラムを書いて勉強していこうなんて意気込んでいたんだけど、日々のアレコレに紛れて、なかなか・・・。ま、いっか。のんびりいきましょ。
　というわけで、今日は、Chapter 6. Flow Control(参照)。BRANCHING(if文)やらLOOPING(while)が登場。これまでのChapterに比べると、ぐっと難しく、そんでもって楽しくなってきた。

A Few Things to Try on 6. Flow Control

一問目


&#8220;99 bottles of beer on the wall&#8230;&#8221; Write a program which prints out the lyrics to that beloved classic, that field-trip favorite: &#8220;99 Bottles of Beer on the Wall.&#8221;
6.  Flow Control
※&#8221;99 bottles of beer on the wall&#8221;っていうのは、マザーグースの歌らしい。日本語訳(参照)に出力例が出ている。
ちょっと考えたけど、以下な感じで落ち着いた。出力例通りに出力されたので、OKかな。

beer = 99
while beer != 0
puts beer.to_s [...]]]></description>
			<content:encoded><![CDATA[<div class="section">
<p>　Rubyでプログラミング勉強中(<a target="_blank" href="http://d.hatena.ne.jp/heydays/20080430/1209568397">参照</a>)。</p>
<p>　本当は毎日ちょっとずつでもプログラムを書いて勉強していこうなんて意気込んでいたんだけど、日々のアレコレに紛れて、なかなか・・・。ま、いっか。のんびりいきましょ。</p>
<p>　というわけで、今日は、Chapter 6. Flow Control(<a target="_blank" href="http://pine.fm/LearnToProgram/?Chapter=06">参照</a>)。BRANCHING(if文)やらLOOPING(while)が登場。これまでのChapterに比べると、ぐっと難しく、そんでもって楽しくなってきた。</p>
<p></p>
<h4>A Few Things to Try on 6. Flow Control</h4>
<p></p>
<h5>一問目</h5>
<p>
<blockquote title="6.  Flow Control" cite="http://pine.fm/LearnToProgram/?Chapter=06">
<p>&#8220;99 bottles of beer on the wall&#8230;&#8221; Write a program which prints out the lyrics to that beloved classic, that field-trip favorite: &#8220;99 Bottles of Beer on the Wall.&#8221;</p>
<p><cite><a href="http://pine.fm/LearnToProgram/?Chapter=06" target="_blank">6.  Flow Control</a></cite></p></blockquote>
<p>※&#8221;99 bottles of beer on the wall&#8221;っていうのは、マザーグースの歌らしい。日本語訳(<a href="http://www1.tf.chiba-u.jp/~shin/tutorial/index.rb?Chapter=06" title="プログラミング入門　- Rubyを使って -, by Chris Pine, 日本語ver. by S. Nishiyama">参照</a>)に出力例が出ている。</p>
<p>ちょっと考えたけど、以下な感じで落ち着いた。出力例通りに出力されたので、OKかな。</p>
<pre class="syntax-highlight">
beer = <span class="synConstant">99</span>
<span class="synStatement">while</span> beer != <span class="synConstant">0</span>
puts beer.to_s + <span class="synSpecial">'</span><span class="synConstant"> Bottles of beer on the wall</span><span class="synSpecial">'</span>
puts beer.to_s + <span class="synSpecial">'</span><span class="synConstant"> Bottles of beer</span><span class="synSpecial">'</span>
puts <span class="synSpecial">'</span><span class="synConstant">Take on down and pass it around</span><span class="synSpecial">'</span>
beer = beer - <span class="synConstant">1</span>
puts beer.to_s + <span class="synSpecial">'</span><span class="synConstant"> Bottles of beer on the wall</span><span class="synSpecial">'</span>
puts <span class="synSpecial">''</span>
<span class="synStatement">end</span>
</pre>
<p></p>
<h5>二問目</h5>
<p>
<blockquote title="6.  Flow Control" cite="http://pine.fm/LearnToProgram/?Chapter=06">
<p>Write a Deaf Grandma program. Whatever you say to grandma (whatever you type in), she should respond with <span style="font-weight:bold;">HUH?!  SPEAK UP, SONNY!</span>, unless you shout it (type in all capitals). If you shout, she can hear you (or at least she thinks so) and yells back, <span style="font-weight:bold;">NO, NOT SINCE 1938!</span> To make your program really believable, have grandma shout a different year each time; maybe any year at random between 1930 and 1950. (This part is optional, and would be much easier if you read the section on Ruby&#8217;s random number generator at the end of the methods  chapter.) You can&#8217;t stop talking to grandma until you shout <span style="font-weight:bold;">BYE</span>.</p>
<ul>
<li>Hint: Don&#8217;t forget about chomp! &#8216;BYE&#8217;with an Enter is not the same as &#8216;BYE&#8217; without one!</li>
<li>Hint 2: Try to think about what parts of your program should happen over and over again. All of those should be in your while loop.</p>
<p><cite><a href="http://pine.fm/LearnToProgram/?Chapter=06" target="_blank">6.  Flow Control</a></cite></p></blockquote>
</li>
</ul>
<p>耳が遠いおばあちゃんとの会話プログラム。Hintにもあるとおり、while loopがKeyですな。『any year at random between 1930 and 1950』っていうのをどう書いたらいいのか迷ったけど、結局ここでもwhile文を使った。他に書き方あるのかな・・・。</p>
<pre class="syntax-highlight">
puts <span class="synSpecial">'</span><span class="synConstant">Hi, Granma.</span><span class="synSpecial">'</span>
iSay = gets.chomp
<span class="synStatement">while</span> iSay != iSay.upcase
puts <span class="synSpecial">'</span><span class="synConstant">HUH? SPEAK UP, SUNNY!</span><span class="synSpecial">'</span>
iSay = gets.chomp
<span class="synStatement">end</span>
<span class="synStatement">while</span> iSay != <span class="synSpecial">'</span><span class="synConstant">BYE</span><span class="synSpecial">'</span>
rYear = <span class="synConstant">1</span>
<span class="synStatement">while</span> rYear &#60;= <span class="synConstant">1930</span>
rYear = (rand(<span class="synConstant">1951</span>))
<span class="synStatement">end</span>
puts <span class="synSpecial">'</span><span class="synConstant">NO, NOT SINCE </span><span class="synSpecial">'</span> + rYear.to_s + <span class="synSpecial">'</span><span class="synConstant">!</span><span class="synSpecial">'</span>
iSay = gets.chomp
<span class="synStatement">end</span>
puts <span class="synSpecial">'</span><span class="synConstant">Okay.... bye for now...</span><span class="synSpecial">'</span>
</pre>
<p></p>
<h5>三問目</h5>
<p>
<blockquote title="6.  Flow Control" cite="http://pine.fm/LearnToProgram/?Chapter=06">
<p>Extend your Deaf Grandma program: What if grandma doesn&#8217;t want you to leave? When you shout <span style="font-weight:bold;">BYE</span>, she could pretend not to hear you. Change your previous program so that you have to shout <span style="font-weight:bold;">BYE</span> three times in a row. Make sure to test your program: if you shout <span style="font-weight:bold;">BYE</span> three times, but not in a row, you should still be talking to grandma.</p>
<p><cite><a href="http://pine.fm/LearnToProgram/?Chapter=06" target="_blank">6.  Flow Control</a></cite></p></blockquote>
<p>BYEを三回連続で叫ばないと耳の遠いおばあちゃんとの会話が終わらないように二問目のコードを変更する。この『三回連続』っていうとこで、ちょっとはまった。二回連続で言った後に、BYE以外の言葉を言ったら、カウントがリセットされるっていうのが漏れてて、悩んだ。で、結局以下のようなコードに。</p>
<pre class="syntax-highlight">
puts <span class="synSpecial">'</span><span class="synConstant">Hi, Granma.</span><span class="synSpecial">'</span>
iSay = gets.chomp
<span class="synStatement">while</span> iSay != iSay.upcase
puts <span class="synSpecial">'</span><span class="synConstant">HUH? SPEAK UP, SUNNY!</span><span class="synSpecial">'</span>
iSay = gets.chomp
<span class="synStatement">end</span>
<span class="synStatement">while</span> iSay != <span class="synSpecial">'</span><span class="synConstant">BYE</span><span class="synSpecial">'</span>
rYear = <span class="synConstant">1</span>
<span class="synStatement">while</span> (rYear &#60;= <span class="synConstant">1930</span>)
rYear = (rand(<span class="synConstant">1951</span>))
<span class="synStatement">end</span>
puts <span class="synSpecial">'</span><span class="synConstant">NO, NOT SINCE </span><span class="synSpecial">'</span> + rYear.to_s + <span class="synSpecial">'</span><span class="synConstant">!</span><span class="synSpecial">'</span>
iSay = gets.chomp
<span class="synStatement">end</span>
iBye = <span class="synConstant">1</span>
<span class="synStatement">while</span> iBye != <span class="synConstant">3</span>
puts <span class="synSpecial">'</span><span class="synConstant">HUH? WHAT DID YOU SAY?</span><span class="synSpecial">'</span>
iSay = gets.chomp
<span class="synStatement">if</span> iSay == <span class="synSpecial">'</span><span class="synConstant">BYE</span><span class="synSpecial">'</span>
iBye = iBye + <span class="synConstant">1</span>
<span class="synStatement">else</span>
iBye = <span class="synConstant">0</span>
<span class="synStatement">end</span>
<span class="synStatement">end</span>
puts <span class="synSpecial">'</span><span class="synConstant">Okay.... bye for now...</span><span class="synSpecial">'</span>
</pre>
<p></p>
<h5>四問目</h5>
<p>
<blockquote title="6.  Flow Control" cite="http://pine.fm/LearnToProgram/?Chapter=06">
<p>Leap Years. Write a program which will ask for a starting year and an ending year, and then puts all of the leap years between them (and including them, if they are also leap years). Leap years are years divisible by four (like 1984 and 2004). However, years divisible by 100 are not leap years (such as 1800 and 1900) unless they are divisible by 400 (like 1600 and 2000, which were in fact leap years). <span style="font-style:italic;">(Yes, it&#8217;s all pretty confusing, but not as confusing has having July in the middle of the winter, which is what would eventually happen.)</span></p>
<p><cite><a href="http://pine.fm/LearnToProgram/?Chapter=06" target="_blank">6.  Flow Control</a></cite></p></blockquote>
<p>入力した年と年の間の閏年を一覧出力するプログラム。閏年の算出って結構ややこしいってことは知ってたけど、これをプログラムに落とすっていうのはなかなか頭を使った。まずは、『入力した年と年の間のう閏年を一覧出力』を考える前に、閏年判別プログラムを書いてみる。</p>
<p>(注: 以下の回答はかなりへタレ。模範解答を参考に書き直した ⇒ <a href="http://d.hatena.ne.jp/heydays/20080508/1210237624">id:heydays:20080508:1210237624</a>)</p>
<pre class="syntax-highlight">
puts <span class="synSpecial">'</span><span class="synConstant">Enter a year.</span><span class="synSpecial">'</span>
iYear = gets.chomp
aYear = iYear.to_i % <span class="synConstant">4</span>
bYear = iYear.to_i % <span class="synConstant">100</span>
cYear = iYear.to_i % <span class="synConstant">400</span>
<span class="synStatement">if</span> aYear == <span class="synConstant">0</span>
<span class="synStatement">if</span> bYear != <span class="synConstant">0</span>
puts iYear.to_s + <span class="synSpecial">'</span><span class="synConstant"> is the leap year.</span><span class="synSpecial">'</span>
<span class="synStatement">else</span>
<span class="synStatement">if</span> cYear == <span class="synConstant">0</span>
puts iYear.to_s + <span class="synSpecial">'</span><span class="synConstant"> is the leap year.</span><span class="synSpecial">'</span>
<span class="synStatement">else</span>
puts iYear.to_s + <span class="synSpecial">'</span><span class="synConstant"> is NOT the leap year.</span><span class="synSpecial">'</span>
<span class="synStatement">end</span>
<span class="synStatement">end</span>
<span class="synStatement">else</span>
puts iYear.to_s + <span class="synSpecial">'</span><span class="synConstant"> is NOT the leap year.</span><span class="synSpecial">'</span>
<span class="synStatement">end</span>
</pre>
<p></p>
<p>うむ、いい感じ。で、『入力した年と年の間のう閏年を一覧出力』するプログラムは、以下な感じで。一応、『start year &#60;= end year』チェックを入れてみた。</p>
<pre class="syntax-highlight">
puts <span class="synSpecial">'</span><span class="synConstant">Enter a start year.</span><span class="synSpecial">'</span>
sYear = gets.chomp
puts <span class="synSpecial">''</span>
puts <span class="synSpecial">'</span><span class="synConstant">Enter an end year.</span><span class="synSpecial">'</span>
eYear = gets.chomp
puts <span class="synSpecial">''</span>
<span class="synStatement">if</span> sYear &#62; eYear
puts <span class="synSpecial">'</span><span class="synConstant">An end year must be equal to or greater than a start year.</span><span class="synSpecial">'</span>
<span class="synStatement">else</span>
puts <span class="synSpecial">'</span><span class="synConstant">The leap years between </span><span class="synSpecial">'</span> + sYear.to_s + <span class="synSpecial">'</span><span class="synConstant"> and </span><span class="synSpecial">'</span> + eYear.to_s + <span class="synSpecial">'</span><span class="synConstant"> are listed below.</span><span class="synSpecial">'</span>
puts <span class="synSpecial">''</span>
<span class="synStatement">while</span> sYear.to_i != (eYear.to_i + <span class="synConstant">1</span>)
aYear = sYear.to_i % <span class="synConstant">4</span>
bYear = sYear.to_i % <span class="synConstant">100</span>
cYear = sYear.to_i % <span class="synConstant">400</span>
<span class="synStatement">if</span> aYear == <span class="synConstant">0</span>
<span class="synStatement">if</span> bYear != <span class="synConstant">0</span>
puts sYear.to_s
<span class="synStatement">else</span>
<span class="synStatement">if</span> cYear == <span class="synConstant">0</span>
puts sYear.to_s
<span class="synStatement">end</span>
<span class="synStatement">end</span>
<span class="synStatement">end</span>
sYear = sYear.to_i + <span class="synConstant">1</span>
<span class="synStatement">end</span>
<span class="synStatement">end</span>
</pre>
<p></p>
<h4>雑感</h4>
<p>　ふー。今回は、前回までのそれと比べて、随分と頭を使った。おかげで随分と理解が深まった。四問目で書いた『閏年判定プログラム』は、実際に意外と役立つプログラムだったりするので、何だか小さな達成感。けど、もっと上手に書くことが出来るような気がしないでもない。慣れてきてから振り返ってみるか。</p>
<h4>See also</h4>
<ul>
<li><a target="_blank" href="http://pine.fm/LearnToProgram/">Learn to Program, by Chris Pine</a></li>
<li><a target="_blank" href="http://www1.tf.chiba-u.jp/~shin/tutorial/">プログラミング入門　- Rubyを使って -</a></li>
<li><a target="_blank" href="http://d.hatena.ne.jp/heydays/archive?word=*%5BLearn+to+Program%5D&#038;.submit=%B0%DC%C6%B0">[Learn to Program]記事一覧</a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://heydays.org/2008/05/a-few-things-to-try-on-6-flow-control.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Few Things to Try on 5. More About Methods</title>
		<link>http://heydays.org/2008/05/a-few-things-to-try-on-5-more-about-methods.html</link>
		<comments>http://heydays.org/2008/05/a-few-things-to-try-on-5-more-about-methods.html#comments</comments>
		<pubDate>Sat, 03 May 2008 17:14:41 +0000</pubDate>
		<dc:creator>masarusuzuki</dc:creator>
				<category><![CDATA[Learn to Program]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://heydays.sakura.ne.jp/?p=950</guid>
		<description><![CDATA[
　Rubyでプログラミング勉強中(参照)。
　今日は、Chapter 5. More About Methods(参照)でMethodの基礎を学ぶ。ObjectとMethodについての理解がちょっとだけ深まった。以下のくだりが個人的には非常に分かりやすかったかな。

So far we&#8217;ve seen a number of different methods, puts and gets and so on (Pop Quiz: List all of the methods we have seen so far! There are ten of them; the answer is below.), but we haven&#8217;t really talked about what methods are. We know what they do, but [...]]]></description>
			<content:encoded><![CDATA[<div class="section">
<p>　Rubyでプログラミング勉強中(<a target="_blank" href="http://d.hatena.ne.jp/heydays/20080430/1209568397">参照</a>)。</p>
<p>　今日は、Chapter 5. More About Methods(<a target="_blank" href="http://pine.fm/LearnToProgram/?Chapter=05">参照</a>)でMethodの基礎を学ぶ。ObjectとMethodについての理解がちょっとだけ深まった。以下のくだりが個人的には非常に分かりやすかったかな。</p>
<blockquote title="5.  More About Methods" cite="http://pine.fm/LearnToProgram/?Chapter=05">
<p>So far we&#8217;ve seen a number of different methods, puts and gets and so on (Pop Quiz: List all of the methods we have seen so far! There are ten of them; the answer is below.), but we haven&#8217;t really talked about what methods are. We know what they do, but we don&#8217;t know what they are.</p>
<p></p>
<p>But really, that is what they are: things that do stuff. If objects (like strings, integers, and floats) are the nouns in the Ruby language, then methods are like the verbs. And, just like in English, you can&#8217;t have a verb without a noun to do the verb. For example, ticking isn&#8217;t something that just happens; a clock (or a watch or something) has to do it. In English we would say, &#8220;The clock ticks.&#8221; In Ruby we would say clock.tick (assuming that clock was a Ruby object, of course). Programmers might say we were &#8220;calling clock&#8217;s tick method,&#8221; or that we &#8220;called tick on clock.&#8221;</p>
<p><cite><a href="http://pine.fm/LearnToProgram/?Chapter=05" target="_blank">5.  More About Methods</a></cite></p></blockquote>
<p>　というわけで、以下、このChapterの練習問題記録。</p>
<p></p>
<h4>A Few Things to Try on 5. More About Methods</h4>
<p></p>
<h5>一問目</h5>
<p>
<blockquote title="5.  More About Methods" cite="http://pine.fm/LearnToProgram/?Chapter=05">
<p>&#8226; Write an Angry Boss program. It should rudely ask what you want. Whatever you answer, the Angry Boss should yell it back to you, and then fire you. For example, if you type in <span style="font-weight:bold;">I want a raise.</span>, it should yell back <span style="font-weight:bold;">WHADDAYA MEAN &#8220;I WANT A RAISE.&#8221;?!? YOU&#8217;RE FIRED!!</span></p>
<p><cite><a href="http://pine.fm/LearnToProgram/?Chapter=05" target="_blank">5.  More About Methods</a></cite></p></blockquote>
<p>これは、簡単やね。別にupcase methodを使う必要もないのだけど、ObjectとMethodの理解を深めるために蛇足と知りつつ、使ってみた。</p>
<pre class="syntax-highlight">
puts <span class="synSpecial">'</span><span class="synConstant">I said..</span><span class="synSpecial">'</span>
iSay = gets.chomp
puts <span class="synSpecial">'</span><span class="synConstant">Whaddaya mean </span><span class="synSpecial">'</span>.upcase + <span class="synSpecial">'</span><span class="synConstant">&#34;</span><span class="synSpecial">'</span> + iSay.upcase + <span class="synSpecial">'</span><span class="synConstant">&#34;?!? </span><span class="synSpecial">'</span> + <span class="synSpecial">'</span><span class="synConstant">You\'re fired!!</span><span class="synSpecial">'</span>.upcase
</pre>
<p></p>
<h5>二問目</h5>
<p>
<blockquote title="5.  More About Methods" cite="http://pine.fm/LearnToProgram/?Chapter=05">
<p>&#8226; So here&#8217;s something for you to do in order to play around more with center, ljust, and rjust: Write a program which will display a Table of Contents so that it looks like this:</p>
<p><cite><a href="http://pine.fm/LearnToProgram/?Chapter=05" target="_blank">5.  More About Methods</a></cite></p></blockquote>
<pre>
Table of Contents
Chapter 1:  Numbers                        page 1
Chapter 2:  Letters                       page 72
Chapter 3:  Variables                    page 118
</pre>
<p>これも、このChapterをきちんと読めば楽勝。</p>
<pre class="syntax-highlight">
lineWidth = <span class="synConstant">50</span>
puts <span class="synSpecial">''</span>
puts <span class="synSpecial">'</span><span class="synConstant">Table of Contents</span><span class="synSpecial">'</span>.center (lineWidth)
puts <span class="synSpecial">''</span>
puts <span class="synSpecial">'</span><span class="synConstant">Chapter 1:  Numbers  </span><span class="synSpecial">'</span>.ljust (lineWidth/<span class="synConstant">2</span>) + <span class="synSpecial">'</span><span class="synConstant">  page 1</span><span class="synSpecial">'</span>.rjust (lineWidth/<span class="synConstant">2</span>)
puts <span class="synSpecial">'</span><span class="synConstant">Chapter 2:  Letters  </span><span class="synSpecial">'</span>.ljust (lineWidth/<span class="synConstant">2</span>) + <span class="synSpecial">'</span><span class="synConstant"> page 72</span><span class="synSpecial">'</span>.rjust (lineWidth/<span class="synConstant">2</span>)
puts <span class="synSpecial">'</span><span class="synConstant">Chapter 3:  Variables</span><span class="synSpecial">'</span>.ljust (lineWidth/<span class="synConstant">2</span>) + <span class="synSpecial">'</span><span class="synConstant">page 181</span><span class="synSpecial">'</span>.rjust (lineWidth/<span class="synConstant">2</span>)
</pre>
<p></p>
<h4>雑感</h4>
<p>　このChapter 5. More About Methodsまでで、基本の基本の基本部分を終えたという感じ。次回は、Flow Control(制御構造)。if文とかwhile文が登場して、さらに楽しくなっていきそう。</p>
<h4>See also</h4>
<ul>
<li><a target="_blank" href="http://pine.fm/LearnToProgram/">Learn to Program, by Chris Pine</a></li>
<li><a target="_blank" href="http://www1.tf.chiba-u.jp/~shin/tutorial/">プログラミング入門　- Rubyを使って -</a></li>
<li><a target="_blank" href="http://d.hatena.ne.jp/heydays/archive?word=*%5BLearn+to+Program%5D&#038;.submit=%B0%DC%C6%B0">[Learn to Program]記事一覧</a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://heydays.org/2008/05/a-few-things-to-try-on-5-more-about-methods.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Few Things to Try on 4. Mixing It Up</title>
		<link>http://heydays.org/2008/05/a-few-things-to-try-on-4-mixing-it-up.html</link>
		<comments>http://heydays.org/2008/05/a-few-things-to-try-on-4-mixing-it-up.html#comments</comments>
		<pubDate>Thu, 01 May 2008 19:57:41 +0000</pubDate>
		<dc:creator>masarusuzuki</dc:creator>
				<category><![CDATA[Learn to Program]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://heydays.sakura.ne.jp/?p=947</guid>
		<description><![CDATA[
　Rubyでプログラミング勉強中(参照)。
　Numbers、Letters、Variables and Assignmentと学び、それらをMix Upした内容が、Chapter 4. Mixing It Up。まだまだ基本中の基本中の基本の段階です。以下、この章の練習問題記録。

A Few Things to Try on 4. Mixing It Up

一問目

Write a program which asks for a person&#8217;s first name, then middle, then last. Finally, it should greet the person using their full name.
4.  Mixing It Up
小細工せず、素直に書く。

puts 'What\'s your first name?'
fName = gets.chomp
puts 'My first name is ' [...]]]></description>
			<content:encoded><![CDATA[<div class="section">
<p>　Rubyでプログラミング勉強中(<a target="_blank" href="http://d.hatena.ne.jp/heydays/20080430/1209568397">参照</a>)。</p>
<p>　<a target="_blank" href="http://pine.fm/LearnToProgram/?Chapter=01">Numbers</a>、<a target="_blank" href="http://pine.fm/LearnToProgram/?Chapter=02">Letters</a>、<a target="_blank" href="http://pine.fm/LearnToProgram/?Chapter=03">Variables and Assignment</a>と学び、それらをMix Upした内容が、<a target="_blank" href="http://pine.fm/LearnToProgram/?Chapter=04">Chapter 4. Mixing It Up</a>。まだまだ基本中の基本中の基本の段階です。以下、この章の練習問題記録。</p>
<p></p>
<h4>A Few Things to Try on 4. Mixing It Up</h4>
<p></p>
<h5>一問目</h5>
<blockquote title="4.  Mixing It Up" cite="http://pine.fm/LearnToProgram/?Chapter=04">
<p>Write a program which asks for a person&#8217;s first name, then middle, then last. Finally, it should greet the person using their full name.</p>
<p><cite><a href="http://pine.fm/LearnToProgram/?Chapter=04" target="_blank">4.  Mixing It Up</a></cite></p></blockquote>
<p>小細工せず、素直に書く。</p>
<pre class="syntax-highlight">
puts <span class="synSpecial">'</span><span class="synConstant">What\'s your first name?</span><span class="synSpecial">'</span>
fName = gets.chomp
puts <span class="synSpecial">'</span><span class="synConstant">My first name is </span><span class="synSpecial">'</span> + fName + <span class="synSpecial">'</span><span class="synConstant">.</span><span class="synSpecial">'</span>
puts <span class="synSpecial">''</span>
puts <span class="synSpecial">'</span><span class="synConstant">What\'s your middle name?</span><span class="synSpecial">'</span>
mName = gets.chomp
puts <span class="synSpecial">'</span><span class="synConstant">My middle name is </span><span class="synSpecial">'</span> + mName + <span class="synSpecial">'</span><span class="synConstant">.</span><span class="synSpecial">'</span>
puts <span class="synSpecial">''</span>
puts <span class="synSpecial">'</span><span class="synConstant">And what\'s your last name?</span><span class="synSpecial">'</span>
lName = gets.chomp
puts <span class="synSpecial">'</span><span class="synConstant">My last name is </span><span class="synSpecial">'</span> + lName + <span class="synSpecial">'</span><span class="synConstant">.</span><span class="synSpecial">'</span>
puts <span class="synSpecial">''</span>
puts <span class="synSpecial">'</span><span class="synConstant">Thank you, nice to meet you, </span><span class="synSpecial">'</span> + <span class="synSpecial">'</span><span class="synConstant">Mr./Ms. </span><span class="synSpecial">'</span> + fName + <span class="synSpecial">'</span><span class="synConstant"> </span><span class="synSpecial">'</span> + mName + <span class="synSpecial">'</span><span class="synConstant"> </span><span class="synSpecial">'</span> + lName + <span class="synSpecial">'</span><span class="synConstant">.</span><span class="synSpecial">'</span>
</pre>
<p></p>
<h5>二問目</h5>
<blockquote title="4.  Mixing It Up" cite="http://pine.fm/LearnToProgram/?Chapter=04">
<p>Write a program which asks for a person&#8217;s favorite number. Have your program add one to the number, then suggest the result as a bigger and better favorite number. (Do be tactful about it, though.)</p>
<p><cite><a href="http://pine.fm/LearnToProgram/?Chapter=04" target="_blank">4.  Mixing It Up</a></cite></p></blockquote>
<p>これも素直に書く。</p>
<pre class="syntax-highlight">
puts <span class="synSpecial">'</span><span class="synConstant">What is your faivorite number?</span><span class="synSpecial">'</span>
fNum = gets.chomp
puts <span class="synSpecial">'</span><span class="synConstant">My faivorite number is </span><span class="synSpecial">'</span> + fNum + <span class="synSpecial">'</span><span class="synConstant">.</span><span class="synSpecial">'</span>
puts <span class="synSpecial">''</span>
puts <span class="synSpecial">'</span><span class="synConstant">Hmmm, I think that </span><span class="synSpecial">'</span> + (fNum.to_i + <span class="synConstant">1</span>).to_s + <span class="synSpecial">'</span><span class="synConstant"> is more suitable number for you.</span><span class="synSpecial">'</span>
</pre>
<p></p>
<h4>雑感</h4>
<p>　先にも書いたけど、まだまだ基本中の基本中の基本の段階。つまずく要素も全くなし。それでも結構楽しい。</p>
<h4>See also</h4>
<ul>
<li><a target="_blank" href="http://pine.fm/LearnToProgram/">Learn to Program, by Chris Pine</a></li>
<li><a target="_blank" href="http://www1.tf.chiba-u.jp/~shin/tutorial/">プログラミング入門　- Rubyを使って -</a></li>
<li><a target="_blank" href="http://d.hatena.ne.jp/heydays/archive?word=*%5BLearn+to+Program%5D&#038;.submit=%B0%DC%C6%B0">[Learn to Program]記事一覧</a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://heydays.org/2008/05/a-few-things-to-try-on-4-mixing-it-up.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Few Things to Try on 1. Numbers</title>
		<link>http://heydays.org/2008/05/a-few-things-to-try-on-1-numbers.html</link>
		<comments>http://heydays.org/2008/05/a-few-things-to-try-on-1-numbers.html#comments</comments>
		<pubDate>Thu, 01 May 2008 00:00:00 +0000</pubDate>
		<dc:creator>masarusuzuki</dc:creator>
				<category><![CDATA[Learn to Program]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://heydays.sakura.ne.jp/?p=948</guid>
		<description><![CDATA[
　30過ぎて始めたプログラムの勉強(参照)の先生&#038;テキストであるLearn to Programには、いくつかのチャプターの最後に『A Few Things to Try』(練習問題)が用意されている。ただチュートリアルを読むだけではなく、実際に頭を使ってコードを書くのは、それが身につくだけではなく、なかなかに楽しい。
　ただ、その『A Few Things to Try』(練習問題)には回答が用意されていない。コードを書いて実行した結果を見て、その結果が合っていることは分かるとしても、そのコードがシンプルに正しく、言い換えれば美しく書かれているのか、というのは正直分からない。なので、ここに晒してみることにした。もしかしたら、誰かの突込みをもらえるかもしれないし、後になって自分で見て、恥ずかしくも微笑ましい気持ちになれるかもしれない。
　というわけで、Chapter 1.  Numbersの『A Few Things to Try』のMy回答。

A Few Things to Try on 1. Numbers

Write a program which tells you:

how many hours are in a year?
how many minutes are in a decade?
how many seconds old are you?
how many chocolates do you hope to eat in [...]]]></description>
			<content:encoded><![CDATA[<div class="section">
<p>　30過ぎて始めたプログラムの勉強(<a target="_blank" href="http://d.hatena.ne.jp/heydays/20080430/1209568397">参照</a>)の先生&#038;テキストである<a target="_blank" href="http://pine.fm/LearnToProgram/">Learn to Program</a>には、いくつかのチャプターの最後に『A Few Things to Try』(練習問題)が用意されている。ただチュートリアルを読むだけではなく、実際に頭を使ってコードを書くのは、それが身につくだけではなく、なかなかに楽しい。</p>
<p>　ただ、その『A Few Things to Try』(練習問題)には回答が用意されていない。コードを書いて実行した結果を見て、その結果が合っていることは分かるとしても、そのコードがシンプルに正しく、言い換えれば美しく書かれているのか、というのは正直分からない。なので、ここに晒してみることにした。もしかしたら、誰かの突込みをもらえるかもしれないし、後になって自分で見て、恥ずかしくも微笑ましい気持ちになれるかもしれない。</p>
<p>　というわけで、<a target="_blank" href="http://pine.fm/LearnToProgram/?Chapter=01">Chapter 1.  Numbers</a>の『A Few Things to Try』のMy回答。</p>
<p></p>
<h4>A Few Things to Try on 1. Numbers</h4>
<blockquote title="1.  Numbers" cite="http://pine.fm/LearnToProgram/?Chapter=01">
<p>Write a program which tells you:</p>
<ul>
<li>how many hours are in a year?</li>
<li>how many minutes are in a decade?</li>
<li>how many seconds old are you?</li>
<li>how many chocolates do you hope to eat in your life?<br />Warning: This part of the program could take a while to compute!</li>
</ul>
<p>Here&#8217;s a tougher question:</p>
<ul>
<li>If I am 1001 million seconds old, how old am I?</li>
</ul>
<p><cite><a href="http://pine.fm/LearnToProgram/?Chapter=01" target="_blank">1.  Numbers</a></cite></p></blockquote>
<p></p>
<h5>How many hours are in a year?</h5>
<p>簡単簡単。</p>
<pre class="syntax-highlight">
puts <span class="synConstant">24</span> * <span class="synConstant">365</span>
</pre>
<p></p>
<h5>How many minutes are in a decade?</h5>
<p>これも簡単。</p>
<pre class="syntax-highlight">
puts <span class="synConstant">60</span> * <span class="synConstant">24</span> * <span class="synConstant">365</span> * <span class="synConstant">10</span>
</pre>
<p></p>
<h5>How many seconds old are you?</h5>
<p>こんな感じで。</p>
<pre class="syntax-highlight">
puts <span class="synConstant">60</span> * <span class="synConstant">60</span> * <span class="synConstant">24</span> * <span class="synConstant">365</span> * <span class="synConstant">32</span>
</pre>
<p></p>
<h5>If I am 1001 million seconds old, how old am I?</h5>
<p>むむむ。こんな感じか。</p>
<pre class="syntax-highlight">
puts <span class="synConstant">1001000000</span> / (<span class="synConstant">60</span> * <span class="synConstant">60</span> * <span class="synConstant">24</span> * <span class="synConstant">365</span>)
</pre>
<p></p>
<h4>See also</h4>
<ul>
<li><a target="_blank" href="http://pine.fm/LearnToProgram/">Learn to Program, by Chris Pine</a></li>
<li><a target="_blank" href="http://www1.tf.chiba-u.jp/~shin/tutorial/">プログラミング入門　- Rubyを使って -</a></li>
<li><a target="_blank" href="http://d.hatena.ne.jp/heydays/archive?word=*%5BLearn+to+Program%5D&#038;.submit=%B0%DC%C6%B0">[Learn to Program]記事一覧</a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://heydays.org/2008/05/a-few-things-to-try-on-1-numbers.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting Started</title>
		<link>http://heydays.org/2008/04/getting-started.html</link>
		<comments>http://heydays.org/2008/04/getting-started.html#comments</comments>
		<pubDate>Wed, 30 Apr 2008 00:00:00 +0000</pubDate>
		<dc:creator>masarusuzuki</dc:creator>
				<category><![CDATA[Learn to Program]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://heydays.sakura.ne.jp/?p=946</guid>
		<description><![CDATA[
　『何事も始めるのに遅すぎるということはない』と誰かが言っている通り、プログラミングを30歳超えて始めるのも遅すぎるなんてことはない、ということだ。
　というわけで、Rubyの勉強を始めた。プログラミングは、もう8年近く前にほんのちょっとかじった程度なので、ほとんど素人・初心者である。そんな30過ぎ男に最適なテキストはないか、と検索してみると、Learn to Program, by Chris Pineが見つかった。簡単な英語で書かれているので、原文のままでも十分勉強できるけど、とても良質な日本語訳(参照)もあるので、原文をベースに、ちょっと理解しづらいような部分を日本語訳と照らし合わせながら勉強している。このGW休みは、ちょっとしたハプニングがあり出かけることができないので、家で読書かDVDかプログラム。そんな休日も悪くない。というか、プログラミング、楽しい。
　とはいえ、ただ勉強していても続かない。なので、何かアプリを作る、というのを一応ゴールにしている。勉強した先に作りたいアプリのアイデアがいくつかある(プチアプリばかりだけど)ので、それらを作るまでは続けていく。というよりも、そのアイデアのいくつかを思いついたから、プログラムを書きたくなった、という感じ。
　ま、いずれにしても、飽きるまでプログラム楽しんでいこうと思う。
See also

Learn to Program, by Chris Pine
プログラミング入門　- Rubyを使って -
[Learn to Program]記事一覧


]]></description>
			<content:encoded><![CDATA[<div class="section">
<p>　『何事も始めるのに遅すぎるということはない』と誰かが言っている通り、プログラミングを30歳超えて始めるのも遅すぎるなんてことはない、ということだ。</p>
<p>　というわけで、Rubyの勉強を始めた。プログラミングは、もう8年近く前にほんのちょっとかじった程度なので、ほとんど素人・初心者である。そんな30過ぎ男に最適なテキストはないか、と検索してみると、<a target="_blank" href="http://pine.fm/LearnToProgram/">Learn to Program, by Chris Pine</a>が見つかった。簡単な英語で書かれているので、原文のままでも十分勉強できるけど、とても良質な日本語訳(<a target="_blank" href="http://www1.tf.chiba-u.jp/~shin/tutorial/">参照</a>)もあるので、原文をベースに、ちょっと理解しづらいような部分を日本語訳と照らし合わせながら勉強している。このGW休みは、ちょっとしたハプニングがあり出かけることができないので、家で読書かDVDかプログラム。そんな休日も悪くない。というか、プログラミング、楽しい。</p>
<p>　とはいえ、ただ勉強していても続かない。なので、何かアプリを作る、というのを一応ゴールにしている。勉強した先に作りたいアプリのアイデアがいくつかある(プチアプリばかりだけど)ので、それらを作るまでは続けていく。というよりも、そのアイデアのいくつかを思いついたから、プログラムを書きたくなった、という感じ。</p>
<p>　ま、いずれにしても、飽きるまでプログラム楽しんでいこうと思う。</p>
<h4>See also</h4>
<ul>
<li><a target="_blank" href="http://pine.fm/LearnToProgram/">Learn to Program, by Chris Pine</a></li>
<li><a target="_blank" href="http://www1.tf.chiba-u.jp/~shin/tutorial/">プログラミング入門　- Rubyを使って -</a></li>
<li><a target="_blank" href="http://d.hatena.ne.jp/heydays/archive?word=*%5BLearn+to+Program%5D&#038;.submit=%B0%DC%C6%B0">[Learn to Program]記事一覧</a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://heydays.org/2008/04/getting-started.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
