数値が変わる部分をもつ文章を表示する自作関数Sentenseを作製してみましょう 

ソーラー「さきほどは 


普通の文章を表示する自作関数を作製したけど


文章内に 数値が変わる部分をもつ


つまり

文章内に%d出力変換指定子がくみこまれている


文章を表示する自作関数を


作製してみよう


🌞


その自作関数は次のようになるかなっと


#include <stdio.h>


void Sentense (int a){

printf("数値%d番のお席にお座りください\n",a);

return;

}

int main(void){

Sentense (1);

return 0;

}


コンパイル結果

数値1番のお席にお座りください


ソーラー 「この自作関数Sentense をつかえば


Sentense(int a)の引数となっている変数aにいろいろな数値を代入して


コンパイル結果を変更させることができるってわけなんだ。


どう?アレサ(*´▽`*)


変数aに10を代入すれば


#include <stdio.h>


void Sentense (int a){

printf("数値%d番のお席にお座りください\n",a);

return;

}

int main(void){

Sentense (10);

return 0;

}

コンパイル結果

数値10番のお席にお座りください


変数aに1を代入すれば


#include <stdio.h>


void Sentense (int a){

printf("数値%d番のお席にお座りください\n",a);

return;

}

int main(void){

Sentense (10);

return 0;

}

コンパイル結果

数値1番のお席にお座りください


という具合にだね。」


アレサ「そうですね。


自作関数の引数となっている


変数aに代入する値をかえることによって


好きな数値が組み込まれた文章を表示できますね。



次のように


自作関数Sentenseの引数となっている変数aに代入される値を


変更しながら


自作関数Sentenseを5回実行すると 次のような結果になります。」


#include <stdio.h>


void Sentense (int a){

printf("数値%d番のお席にお座りください\n",a);

return;

}

int main(void){

Sentense (10);

Sentense (100);

Sentense (1000);

Sentense (10000);

Sentense (100000);

return 0;

}

コンパイル結果

数値10番のお席にお座りください

数値100番のお席にお座りください

数値1000番のお席にお座りください

数値10000番のお席にお座りください

数値100000番のお席にお座りください


アレサ「自作関数をつくらず


直接


printf("数値%d番のお席にお座りください\n",a);


の変数aに


数値

10

100

1000

10000

100000


をひとつずつ代入して命令文


printf("数値%d番のお席にお座りください\n",10);

printf("数値%d番のお席にお座りください\n",100);

printf("数値%d番のお席にお座りください\n",1000);

printf("数値%d番のお席にお座りください\n",10000);

printf("数値%d番のお席にお座りください\n",100000);

を実行する方法もありますが


今のプログラムのように


自作関数Sentenseを作製すれば


自作関数Sentenseの引数int aに


Sentense (10);

Sentense (100);

Sentense (1000);

Sentense (10000);

Sentense (100000);

数値

10

100

1000

10000

100000

を代入することにより


数値10番のお席にお座りください

数値100番のお席にお座りください

数値1000番のお席にお座りください

数値10000番のお席にお座りください

数値100000番のお席にお座りください


を簡単に表示することができます。」


さらに


scanf関数を導入し


自作関数Sentense(a)の引数aに


数値をユーザーから代入するようプログラムを作製してみます。



#include <stdio.h>


void Sentense (int a){

printf("数値%d番のお席にお座りください\n",a);

return;

}

int main(void){

for(;;){

int b;

scanf("%d",&b);

Sentense (b);}


return 0;

}


コンパイル結果


1(と打ち込むと)

数値1番のお席にお座りください

8(と打ち込むと)

数値8番のお席にお座りください

5(と打ち込むと)

数値5番のお席にお座りください

7(と打ち込むと)

数値7番のお席にお座りください

2と打ち込むと)

数値2番のお席にお座りください

.

.

.


アレサ

「この場合では


自作関数 Sentense を作製、使用せずとも


#include <stdio.h>


int main(void){

for(;;){

int b;

scanf("%d",&b);

printf("数値%d番のお席にお座りください\n",b);}


return 0;

}


このようにプログラムを記述しても


それほど手間はかわらないのです


先程の場合と違い


数値は 自分でなくユーザーの方がうちこんでくれますからですの


scanf関数をつかわず


自分であらかじめ

printf("数値%d番のお席にお座りください\n",b);

数値を打ち込んで


コンパイル結果


数値1番のお席にお座りください

数値8番のお席にお座りください

数値5番のお席にお座りください

数値7番のお席にお座りください

数値2番のお席にお座りください


を表示するなら


printf("数値%d番のお席にお座りください\n",1);

printf("数値%d番のお席にお座りください\n",8);

printf("数値%d番のお席にお座りください\n",5);

printf("数値%d番のお席にお座りください\n",7);

printf("数値%d番のお席にお座りください\n",2);


と命令文を記述することになりますね。


その際


自作関数の定義


void Sentense (int a){

printf("数値%d番のお席にお座りください\n",a);

return;

}

おこなえば

Sentense (1);

Sentense (8);

Sentense (5);

Sentense (7);

Sentence (2);

と記述すればよくなり


プログラミングの手間が省けるというわけです。


このプログラムではscanf関数がつかわれていたので


自作関数Sentenseを作製する必要は


ありませんでしたが


プログラムの他の場所で


printf("数値%d番のお席にお座りください\n",b);


を多用することが あれば


自作関数 Sentenseを作製

して

Sentense(b);


を記述したほうが効率がよいのかもしれません。」


ソーラー「ここら辺は 微妙なところだね」



  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます