Javaにちょっと飽きてきたかも・・・
ず〜っと同じ言語を勉強していると、流石に飽きてきた。ということで退屈しのぎにC言語の人気教科書の問題を解いていくことにしよう。
教科書というのはこれ
新版 明解C言語 入門編
この本はAmazonでC言語を検索すると1番に出てくる本で人気はあるようなんですけど、レビューによると少々とっつきにくいところがあるようです。以下はレビューのひとつの引用
レビュアー: めいかい (千葉県) - レビューをすべて見る
私は他のプログラミング言語の経験者ですので、この参考書が入門者にわかりやすいかどうかは判断しかねますが、個人的にはまぁまぁわかりやすかったかなと思います。
気になった点が二つほど。
一つ目は、学習後のリファレンスとしては使いづらいということ。
一度に与える情報量を制限するためか、その場その場で必要なことだけを記述している印象を受けます。同じ関数の説明があっちこっちに飛んでいたりするので探しづらいです。
ただこれは、理解のしやすさと天秤にかけた結果かもしれないので好みの問題ともいえます。
二つ目は、演習問題に解答がないこと。
きっと気になってる人はたくさんいると思います。問題が簡単だから必要ないといわれればそれまでですが、解答がないと自分の書いたプログラムの出来がいまいちわかりません。
プログラムはコンパイルして動けばいいというものではないので、解答がないのは大きなマイナス要因だと思います。特に入門者の方は、自分の書いたものよりも簡潔なプログラムがあるのではないかと悩むことになるかもしれません。少なくとも僕は悩みました。
どうやらこの本の演習問題と解答の書いてある演習本が売っているらしいのですが、買う気にはなれません。というのも、基礎の確認程度の演習問題なので、これが再録されている本を買うなら他のものを買ったほうがいいと思うからです。
演習問題の解答がないのは、学習していく上でも相当なストレスになりました。神経質な方は購入を控えたほうがいいと思います。
今手元にこの本があるのですが、確かに解答がついてない!が、そんなに難しい演習問題じゃあない。大半はサンプルコードの改造程度の難易度だし、中にはちょっとひねった問題もあるけど、これもサンプルコードを見たり、説明を読んだりすれば簡単に分かる。
上のレビューの人が言うように、初心者はもっと簡潔なプログラムがあるかもしれないと悩むかもしれないし、実際悩んでもいい。でも最初から簡潔なプログラム、綺麗なプログラムができるようになろうと必死になる必要はない。そういうことは有る程度経験をつめば自ずとできること。初心者のうちは、変な癖(たとえば、独りよがりの読みづらいコードとか、綺麗にかけないと次に進めないとか)を付けないようにとにかく動くプログラムを書けばいいと思う。
それじゃ演習問題を解いていこう。今日は第1章の初めの5問!
・演習1-1
15から37を引いた値を計算して「15から37引いた値は-22です。」と表示するプログラムを作成せよ。
・演習1-2
下に示すような表示を行うプログラムを作成せよ。ただし、プログラム中、printf関数の呼び出しは、1回限りとする。
風
林
火
山
・演習1-3
問題内容は演習1-2と同じ。下のような表示を行うプログラムを作成せよ。
もしもし。
こんにちは。
それでは。
・演習1-4
下に示すように、読み込んだ整数値に10を加えた値を表示するプログラムを作成せよ。
整数を入力してください:57
その数に10を加えると67です。
・演習1-5
問題ない用は演習1-4と同じ。下のように表示する。
整数を入力してください:57
その数から10を減じると47です。
<解答>
・演習1-1
#include<stdio.h> int main(){ printf("%dから%dを引いた値は%dです。\n",15,37,15-37); return(0); }
・演習1-2
#include<stdio.h> int main(void) { printf("風\n林\n火\n山\n"); return(0); }
・演習1-3
#include<stdio.h> int main() { printf("もしもし。\nこんにちは。\n\nそれでは。\n"); return(0); }
・演習1-4
#include<stdio.h> int main(){ int no; printf("整数値を入力してください:"); scanf("%d",&no); printf("その数に10を加えると%dです。\n",no+10); return(0); }
・演習1-5
#include<stdio.h> int main(){ int no; printf("整数値を入力してください:"); scanf("%d",&no); printf("その数から10を減じると%dです。\n",no-10); return(0); }
このあたりは簡単すぎるかな。