PR

 プログラムの学習はどうすれば続けられるのでしょう? 会社で仕事としてプログラムを作らなくてはいけないとか,学校でプログラムを作成してレポートとして提出しなければならないとか――このようなせっぱ詰まった動機があれば,誰もが結果を出すために熱心に勉強することでしょう。書籍やWebページのサンプルを参考にして,なんとかして動作するプログラムを作りあげるはずです。その時点では,コードの内容すべてを理解できていなくても,実践の繰り返しの中で,理解を深めていくことができますね。

 本連載の方針は,このような学習の方法とは正反対です。本連載には即効性がありませんし,切実なニーズにおこたえすることもできません。プログラミングのベースとなる知識や知恵を,C言語を題材にじわじわーとお送りすることを目的としています。

 結果がすぐに形にならない学習を続けるためには,取るに足らないような小さな成功を楽しむことや,「こうしたら,どうなるのか?」とプログラムをいじり,結果をみて「へぇー,そうなるのか」と興味を持ち続けられることが大切でしょう。本連載のサンプル・プログラムは,見て「こういう風に書けばいいんだ」と感じるのではなく,「こうじゃなくて,こう書いたらどうなるのか」と実際に手を動かしてもらう題材です。題材に触れながらプログラミングの基礎を学習していただきたいと思います。

C言語は関数型言語です

 早いもので本連載も今回で6回目です。これまで変数のアドレスや配列の使い方,制御文を使って繰り返しと条件分岐を行う方法を説明してきました。今回は,再度C言語の基本に立ち返ります。

 連載の初回でC言語は“関数型の言語”であると書きました。しかし,これまで紹介したサンプル・プログラムでは,リスト1のようにmain関数の中にすべての処理を記述していました。この書き方はダメとは言わないまでも,あまり良くない方法です。複雑な処理を実現するために多くのコードをすべてmain関数の中に書くとプログラムがわかりにくくなります。同じようなコードを何度も繰り返し記述することになりますから無駄が多いです。タイプミスやうっかりによるバグ*1も出やすくなります。

#include <stdio.h>

int main()
{
    int a,b,c;
    printf("一つ目の整数を入力してください\n");
    scanf("%d",&a);
    printf("二つ目の整数を入力してください\n");
    scanf("%d",&b);
    c = a * b;
    printf("%d X %d = %d \n",a,b,c);
    return 0;
}
リスト1●これまではmain関数の中にすべての処理を書いていた

 C言語では,プログラムを「関数」の集合として作成することができます。それぞれの関数で,処理を機能単位に分割すれば,わかりやすく,ミスの少ないプログラミングができるようになります。さらに,C言語の特徴がより鮮明になるとともに,これまで触れずにいたmainの前にある「int」の意味や,main関数の最後に「return 0」と書いていた理由も今回で明らかになります。プリプロセサ命令*2の「#include」で 「stdio.h」というファイルを取り込む意味もはっきりするでしょう。

この記事は会員登録で続きをご覧いただけます

日経クロステック登録会員になると…

新着が分かるメールマガジンが届く
キーワード登録、連載フォローが便利

さらに、有料会員に申し込むとすべての記事が読み放題に!
日経電子版セット今なら2カ月無料