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(※次回はフォローなしで進みます)