プログラミング言語Ⅰ・講義メモ5

p.152 値を返さない関数

・関数は値を返さなくても良い
・その場合は、戻り値型を「void」(無)とすること

p.152 list0607.cpp

//p.152 list0607.cpp 左下直角の直角二等辺三角形を表示(関数版)
#include <stdio.h>
//--- 記号文字'*'をn個連続して表示 ---//
void put_stars(int n) //returnする必要がないので、戻り値型をvoidにする
{
    while (n-- > 0)
        putchar('*');
}
int main(void)
{
    int len;
    printf("左下直角二等辺三角形を作ります。\n");
    printf("短辺:");
    scanf("%d", &len);
    for (int i = 1; i <= len; i++) {
        put_stars(i); //戻り値がないので呼び出すだけ
        putchar('\n');
    }
    return 0;
}

p.152 関数の汎用性

・list0607.cppのput_stars関数は「*」を表示することに特化しているが、表示したい文字も引数で渡すようにすれば、
 同じ意味で表示したい文字だけ違う場合にも使える
・これを関数の汎用性といい、可読性や保守性を損なわない場合は、汎用性を高くすると良い

p.153 list0608.cpp

//p.153 list0608.cpp 右下直角の直角二等辺三角形を表示(関数版)
#include <stdio.h>
//--- 文字chをn個連続して表示 ---//
void put_chars(int ch, int n)
{
    while (n-- > 0)  // nが0超である間、デクリメントしながら繰返す(値渡しなのでOK)
        putchar(ch);
}
int main(void)
{
    int len;
    printf("右下直角二等辺三角形を作ります。\n");
    printf("短辺:");
    scanf("%d", &len);
    for (int i = 1; i <= len; i++) {
        put_chars(' ', len - i); //空白を(len - i)個表示する
        put_chars('*', i); //「*」をi個表示する
        putchar('\n');
    }
    return 0;
}

自由参加課題:値を返さない関数

・p.107 演習4-21から4-24までを関数put_charsを用いるようにして書き換えよう

p.153 演習6-6 ヒント

・警報を鳴らすには、putchar('\a') を用いると良い

作成例

//p.153 演習6-6
#include <stdio.h>
//--- 警告をn個連続 ---//
void alert(int n)
{
    while (n-- > 0)  // nが0超である間、デクリメントしながら繰返す(値渡しなのでOK)
        putchar('\a');
}
int main(void)
{
    alert(3); //警告を3個連続
    return 0;
}

p.154 引数を受け取らない関数

・main関数のように、引数を受け取らない関数は引数にvoidを指定すると良い
・呼び出しにおいてはvoidを指定せず、引数は空にすること

提出:p.153 演習6-6(※次回はフォローなしで進みます)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です