1. プログラムの字下げスタイルを確認しよう
2. プログラムを「声に出して」読もう(朗読しよう)

例題 : 簡略BMI (Body Mass Index) 問題

身長(cm)と体重(kg)を入力すると「太りぎみか、普通か、やせぎみか」を 教えてくれるプログラムを作れ。

3種類の字下げスタイルを確認

  1. K & R スタイル (カーニハンリッチースタイル)
    • C言語のバイブル「プログラミング言語C」内のプログラムスタイル
    • 著者2名の名前から、こう呼ばれる
    • 字下げ (インデント) 4。
    • ブロック開始の { を改行しない。ただし関数は { を改行。
    • その他、空白のある部分/ない部分に注意。
  2. BSD/オールマンスタイル ( { と } の対応を付けやすいスタイル)
    • ブロックの { と }を全て改行する。
  3. 教科書スタイル (たとえば、「あるごりずむ」)
    • K&Rスタイルのうち、関数定義の最初の { を改行しないで、1行節約する。
    • この授業のプログラムもそうします。(インデントを3にしている場合もあります)
    • 教科書はインデント数、改行、空白を節約します。細かいところに統一がないことも多い。

/* K&R Style */
#include <stdio.h>

int main(void)
{
    float h, w, sw;   /* height, weight, standard w */
    printf("身長と体重をcmおよびkg単位で入力してください\n");
    printf("値はコンマで区切ってください:");
    scanf("%f,%f", &h, &w);
    h /= 100.0;
    sw = h * h * 22.0;

    if (w >= sw * 1.15) {
        printf("肥満気味です!\n");
        printf("注意しましょう!\n");
    } else if (w <= sw * 0.85) {
        printf("やせ気味です!\n");
        printf("注意しましょう!\n");
    } else
        printf("標準です.\n");

    return 0;
}

/* Allman Style */
#include <stdio.h>

int main(void)
{
    float h, w, sw;   /* height, weight, standard w */
    printf("身長と体重をcmおよびkg単位で入力してください\n");
    printf("値はコンマで区切ってください:");
    scanf("%f,%f", &h, &w);
    h /= 100.0;
    sw = h * h * 22.0;

    if (w >= sw * 1.15) 
    {
        printf("肥満気味です!\n");
        printf("注意しましょう!\n");
    }
    else if (w <= sw * 0.85) 
    {
        printf("やせ気味です!\n");
        printf("注意しましょう!\n");
    }
    else
        printf("標準です.\n");

    return 0;
}

/* Text Style */
#include <stdio.h>

int main(void) {
    float h, w, sw;   /* height, weight, standard w */
    printf("身長と体重をcmおよびkg単位で入力してください\n");
    printf("値はコンマで区切ってください:");
    scanf("%f,%f", &h, &w);
    h /= 100.0;
    sw = h * h * 22.0;

    if (w >= sw * 1.15)
        printf("肥満気味です!\n");
    else if (w <= sw * 0.85)
        printf("やせ気味です!\n");
    else
        printf("標準です.\n");

    return 0;
}

プログラムを声に出して読んでみよう

[読みの例]

#include <stdio.h> 
「シャープ インクルード 小なり スタンダードアイオー ドット エイチ 大なり」

int main(void)
「イント メイン カッコ ボイド カッコ閉じ」
{
「中かっこ」
    float h, w, sw;   /* height, weight, standard w */
    「フロート h カンマ w カンマ sw カンマ セミコロン スラ アスタ   アスタ スラ」

    printf("身長と体重をcmおよびkg単位で入力してください\n");
    「プリントエフ カッコ ダブルクォート いろいろ イェン エヌ ダブルクォート カッコ閉じ セミコロン」

    printf("値はコンマで区切ってください:");

    scanf("%f,%f", &h, &w);
    「スキャンエフ カッコ ダブルクォート パーセント エフ カンマ パーセント エフ ダブルクォート カンマ アンパサンド h」

    h /= 100.0;  /* h = h /100.0 */
    「h スラ イコール ヒャク テン ゼロ」

    sw = h * h * 22.0;
    「sw イコール h アスタ h アスタ 22テンゼロ」

    if (w >= sw * 1.15)
    「イフ カッコ w 大なりイコール sw アスタ 1.15 カッコ閉じ」
        printf("肥満気味です!\n");
    else if (w <= sw * 0.85)
     「エルスイフ」
        printf("やせ気味です!\n");
    else
        printf("標準です.\n");

    return 0;
    「リターン ゼロ」
}
「中カッコ閉じ」