【ノンビン塾:第5回】フローチャートから処理を起こそう!
※「ノンビンとは?」となった方へ
前回はいよいよ
シーケンス図とフローチャートの
集大成みを感じました。
今までは、「シーケンス図だけ」「フローチャートだけ」
書くことがメインでした。
それを、第4回ではコラボして実践しました🐒
宿題の提出
全体の説明が終わったら、ノンビンが処理について
色々と質問をしてくれます。
この質問は、実際にわたしが宿題を作っているときに
悩んでいたところでした。
前回の宿題では、自分でも「トンチンカンだなぁ…」
と思いながら提出してしまったので、
今回の宿題は芯が通ったものにしようと
時間をかけて書き込んでいきました。
ただ、今回の宿題は塾の期間が空いたこともあり
ある日突然思いついて書き足したりすることが多かったです。
思いつくときは、きっかけが絶対にあるはず。
とノンビンは言いました。
自販機の処理を思いついたときは、
自分が自販機で(実際に)ジュースを買ったときに
「あ、売り切れランプ出てるなぁ」
「…売り切れランプの処理書かなきゃ!!」
と気付いたりとか、
朝ハミガキしてるときに突然思い出したように
思いついたりしてたと思います。
突然思いついたときほど
唐突に忘れてしまう傾向があるので
その場で書き足したり、メモを残してました。
本日のお題
今回はフローチャートを書く でも
新しいところに進む でもありません。
ないならばやってみよう!ということで
自分が作ったフローチャートを元に プログラムを書いていきます!
使うフローチャートは、前回の宿題で書いた
うるう年のヤツです。
フローチャートを構成するパーツの数 = 処理の数だよ
とノンビンは言います。
戻ってきたノンビンは言います。
// 4で割り切れる場合
// 4で割り切れない場合
// 4で割り切れる場合
// 100で割り切れる場合
// 4で割り切れない場合
// 4で割り切れる場合
// 100で割り切れる場合
// 4で割り切れない場合
100で割り切れるヤツの条件分岐は、ネスト(段落)が必要です。
// 4で割り切れる場合
// 100で割り切れる場合
// 400で割り切れる場合
// うるう年です。
// 400で割り切れない場合
// 平年です。
// 100で割り切れない場合
// うるう年です。
// 4で割り切れない場合
// 平年です。
余計なことはせず、フローチャートに忠実に書いていきます。
※ちょっと割り算にてまどったなんて言えない
let year = 2000;
let res = '';
// 4で割り切れる場合
if(year%4 === 0) {
// 100で割り切れる場合
if(year%100 === 0) {
// 400で割り切れる場合
if(year%400 === 0) {
// うるう年です。
res = 'うるう年です。';
}
// 400で割り切れない場合
else {
// 平年です。
res = '平年です。';
}
}
// 100で割り切れない場合
else {
// うるう年です。
res = 'うるう年です。';
}
}
// 4で割り切れない場合
else {
// 平年です。
res = '平年です。';
}
設計書がある意味 っていうのはこういうところ
だと、ノンビンは言います。
設計書がきちんとしていれば、作り手が意識せずとも
その通りにプログラムを組むことができるからです。
同じ処理をいっぱいする = 冗長化しています。
処理を書いて、はじめて冗長化している箇所を認識して修正します。
リファクタリングですね!
↑コラボスタイルのふくちゃんです
冗長化しているところを直していきます。
let year = 2000;
let res = '';
// 4で割り切れる場合
if(year%4 === 0) {
// 100で割り切れない場合
if(year%100 !== 0) {
// うるう年です。
res = 'うるう年です。';
}
// 100で割り切れる場合
else if(year%400 === 0) {
// 400で割り切れる場合
// うるう年です。
res = 'うるう年です。';
}
// 400で割り切れない場合
else {
// 平年です。
res = '平年です。';
}
}
// 4で割り切れない場合
else {
// 平年です。
res = '平年です。';
}
そして修正した内容がこちら。
if else elseif をふんだんに使いました。
let year = 2000;
let res = '平年です。';
// 4で割り切れる場合
if(!year%4) {
// 100で割り切れる場合
if(!year%100) {
// 400で割り切れる場合
if(!year%400 === 0) {
// うるう年です。
res = 'うるう年です。';
}
} else {
// うるう年です。
res = 'うるう年です。';
}
}
ノンビンがなおした内容がこちら。
これを見たときに はっっ( ;゚д゚) となりました。
let res = '平年です。';
最初に宣言しているココですね。
平年の方がうるう年より多いんだから、デフォルト値にしてしまえば
早い話でした、、、
最初にこうやって聞いたから、
いかにふんだんに条件分岐を活用するか に気を取られてしまいました。
いかん、いかん
またシンプルに物事を考えることができなかったです😰
処理が1つでも多くなると、不具合が発生する可能性も増える。
余計な不具合を出さないためには、余計な処理を書かないようにする。
この心が大切だよ とノンビンは言いました。
何も検索せずに イチから自分で考えること
最近ないので、良い経験になりました。
ノンビン塾の宿題
みんなもやってみてね😙✨
自分で出した答えは第6回に書きます🙆
(暗に次回に続くということを伝える)
ノンビン塾が気になるコラボスタイルのみんなは、
宿題を持って受講してみてくださいね🔥