検索
連載

バグ検出ドリル(4)プログラミングの素質を試すのに最適!? FizzBuzz問題に挑戦山浦恒央の“くみこみ”な話(104)(3/3 ページ)

「バグ検出ドリル」の第4回で出題するのは、プログラミングの素質を試すのに最適といわれる伝説の「FizzBuzz問題」。問題文から、どこにバグがありそうか見つけ出してみよう!

Share
Tweet
LINE
Hatena
前のページへ |       

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.

前のページへ |       
ページトップに戻る