連載
バグ検出ドリル(4)プログラミングの素質を試すのに最適!? FizzBuzz問題に挑戦:山浦恒央の“くみこみ”な話(104)(3/3 ページ)
「バグ検出ドリル」の第4回で出題するのは、プログラミングの素質を試すのに最適といわれる伝説の「FizzBuzz問題」。問題文から、どこにバグがありそうか見つけ出してみよう!
4.解答
バグは、「3だけで割り切れた」時と、「5だけで割り切れた」時に表示するメッセージが入れ替わっていることです。ソースコードを抜粋すると、次のようになります。
} else if ((i % 3) == 0) { printf("Buzz\n"); } else if ((i % 5) == 0) { printf("Fizz\n");
リスト2 リスト1のソースコードの一部抜粋
仕様には、「3の倍数の場合は、1〜100でなくFizzと表示する」「5の倍数の場合は、1〜100でなくBuzzと表示する」とあります。プログラムの抜粋箇所を見ると、3で割り切れた場合は、「Buzz」を、5で割り切れる場合、「Fizz」を表示し、仕様とは逆ですね。従って、print文を入れ替えれば、仕様通りになります。
5.自己採点シート
今回の自己採点シートを下記に示します。
問題 | 内容 | 配点(点) |
---|---|---|
FizzBuzz問題 | 5分以上考えた | 40 |
メッセージのエラーに気がついた | 40 | |
上記以外のバグを見つけた | 20 | |
リスト3 自己採点シート |
6.終わりに
今回は、伝説の「FizzBuzz問題」を取り上げました。みなさんはバグを見つけられたでしょうか。バグが起きると不可解な事象に当惑しますが、原因が分かると、案外、単純なミスだと気付きます。本コラムをきっかけにして、より高いレベルのエンジニアを目指していただければ幸いです。
【 筆者紹介 】
山浦 恒央(やまうら つねお)
東海大学 大学院 組込み技術研究科 非常勤講師(工学博士)
1977年、日立ソフトウェアエンジニアリングに入社、2006年より、東海大学情報理工学部ソフトウェア開発工学科助教授、2007年より、同大学大学院組込み技術研究科准教授、2016年より非常勤講師。
主な著書・訳書は、「Advances in Computers」 (Academic Press社、共著)、「ピープルウエア 第2版」「ソフトウェアテスト技法」「実践的プログラムテスト入門」「デスマーチ 第2版」「ソフトウエア開発プロフェッショナル」(以上、日経BP社、共訳)、「ソフトウエア開発 55の真実と10のウソ」「初めて学ぶソフトウエアメトリクス」(以上、日経BP社、翻訳)。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- ≫連載「山浦恒央の“くみこみ”な話」バックナンバー
- バグ検出ドリル(3)それでもプログラマーは数学を知っておくべきだ
「バグ検出ドリル」の第3回で出題するのは、前回に引き続き数学に関係する問題。理系とはいえ必ずしも数学が得意ではないプログラマーですが、やはり数学を知るメリットは絶大。これまでと比べてかなり歯ごたえ十分な問題を用意したので、じっくり取り組んで数学に対する免疫力をつけてみよう! - バグ検出ドリル(1)「さあ、バグを見つけよう」
記念すべき連載第100回を突破した「山浦恒央の“くみこみ”な話」。今回の第101回からは、新シリーズ「バグ検出ドリル」が始まります。山浦氏が出題する問題に取り組んで、バグを見つけ出す力を養おう! - 組み込みソフトがこの10年で変わったこと、変わらないこと
MONOist開設10周年に合わせて、MONOistで記事を執筆していただいている方々からの特別寄稿を掲載していきます。第1弾は、間もなく連載100回を迎える「“くみこみ”な話」を執筆していただいている山浦恒央氏の寄稿です。 - タダでソフト開発の生産性と品質を上げる方法(10):プログラムの実行速度を瞬時に測定する「gprof」
ついに連載第100回を迎えた「山浦恒央の“くみこみ”な話」。今回の「タダでソフト開発の生産性と品質を上げる方法」の第10回では、プログラムの実行速度を瞬時に測定する「gprof」を紹介します。