C言語 入門 小学生でもわかるC言語

最終日 関数(かんすう)

「わかりやすく!」がテーマです!

HOME/小学生でもわかるC言語 目次/最終日 関数(かんすう)/

広告

↓2016年02月29日発売↓

12歳からはじめる ゼロからのC言語 ゲームプログラミング教室

新品価格
¥2,462から
(2016/5/10 22:16時点)

もっと!C、C++言語本

目次へ戻る

?と思ったら

わからなそうな用語集

関数(かんすう)

いよいよ最終日です!今回は関数(かんすう)について見ていきます!

関数?

「printf」命令や「scanf」命令みたいな「命令」の事を正しくは関数といいます!というのを覚えてますでしょうか?

「命令」の方が覚えやすいと思い今まで呼んできましたが正しくは「関数(かんすう)」といいます。

なので今回から正しく関数と呼びたいと思います。

話を戻します。

そしてこのC言語入門で学んでいるような最初から使える関数の事を標準関数(ひょうじゅんかんすう)といいます。

そしてこの標準関数を組み合わせて「自分だけのオリジナル関数」を作れるというワケです。

そうすれば同じ作業の繰り返しなんかを「自分だけのオリジナル関数」にまとめて好きな時に使えて便利ですよね!

そんなワケで今回は関数を自分で作ってみましょう!

なにやら難しそうですが、やる事はさきほども言いましたが関数(命令)を組み合わせて、一つにまとめるだけです!

さっそく見てみましょう!

/*プログラム48*/
#include <stdio.h>

void func(void);

int main(){
	printf("関数「func」はhello world!と表示します!");

	printf("\n\n");

	func();

	printf("\n\n");

	printf("完了しました!\n");

	return 0;
}

void func(){
	printf("hello world!");
}

■実行結果■

実行結果(b-14-1)

■説明■

「hello world!」とだけ表示する関数「func」を作ってみました。

新しく関数を作る時は2ヶ所その関数の事を書きます。

先頭の部分(プロトタイプ宣言)

void func(void);

「func」っていうのは関数の英語「function」を短くしたものです。ここが関数の名前になるので変数と同じルールで自分で好きに名前をつけて大丈夫です。「void kansu(void);」でも「void hello_world(void)」でも大丈夫です。

そして「void」という謎の言葉を頭とお尻につけます。「void」の意味が気になる所ですがカタチで覚えましょう!

この部分を「プロトタイプ宣言」といいます。

必ず「int main()」の前に書いてください。

関数の内容

次にその関数の内容ですね。

これは「int main()」の後に書きます。

void func(){
	printf("hello world!");
}

さきほどと同じく「void func()」で始めますが今度はお尻の「void」は書かなくて大丈夫です。ここは「void」が省略されているだけです。

そして{}カッコの中に内容を書いていきます。

今回は「printf」命令だけですが、もちろんこの中にもっとたくさんの命令を入れて大丈夫です。

これで関数「func」は完成です。

使うとき

使うときは

func();

これだけでオッケーです!簡単ですね!

「int main()」はみんなのまとめ役

さきほどのプログラムの流れです。

(1)「int main()」から始まります!

(2)途中で関数「func」が呼び出されます!

(3)関数「func」を実行したら、「int main()」の続きに戻ります!

プログラムは必ず「int main()」から始まって「int main()」で終わります。

なのでどんなにすごい関数を作っても「int main()」を書かないとプログラムは始まらないのでご注意ください。

書き方のおさらい

(1)「int main()」の前

void func(void);

でプロトタイプ宣言

(2)「int main()」の後

void func(){   }

{}の中に内容を書く

(3)使うときは

func();

この決められたカタチを覚えましょう!

関わる数(関数)

こんなのでいいの?と思われた方、いると思います。

今回はプログラムのキホンに重点を置いておりますので、関数も「命令をひとまとめにするもの」という説明をさせて頂きますが、もちろんまだ他にもいろいろな使い方があります。もう少し詳しく関数の事を知りたい方は

小学生でもわかるC言語2

こちらをご覧下さい!

グローバル変数とローカル変数

変数の宣言している場所にご注目ください!「int main()」の前で宣言します!

/*プログラム49*/
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

void menseki(void);

int tate = 0;
int yoko = 0;

int main(){
	printf("四角形の面積を計算します!\n");
	printf("縦の長さを入れてください!>");
	scanf("%d",&tate);
	printf("横の長さを入れてください!>");
	scanf("%d",&yoko);
	
	printf("\n");

	menseki();
	
	return 0;
}

void menseki(){
	printf("縦%d、横%dの四角形の面積は\n",tate,yoko);
	printf("%dです!\n",tate * yoko);
}

■実行結果■

実行結果(b-14-2)

■説明■

縦の長さと横の長さを入力してもらい「menseki()」という関数で計算して表示しております。

あらためて変数の宣言した場所にご注目ください!

int tate = 0;
int yoko = 0;

「int main()」の前に宣言していますね!このように宣言した変数の事をグローバル変数といいます。

それに対して今まで使っていた変数をローカル変数といいます!

グローバル変数にする事で「int main()」の中でも他に作った関数の中でも全ての場所でこの変数が使えるようになります!

という事は「int main()」の中で宣言した変数は他の関数では使えないという事ですね!

プログラムで確認してみましょう!

/*プログラム50*/
#include <stdio.h>

void func(void);

int main(){
	int suji = 10;
	printf("%d",suji);

	printf("\n\n");

	func();

	return 0;
}

void func(){
	printf("%d\n",suji);
}

■実行結果■

実行結果(b-14-3)

■説明■

エラーになったかと思います。「int main()」の中で宣言された変数「suji」を関数「func」の中で使おうとしたのでエラーになりました。

全体で使いたい変数は必ず「int main()」の前で宣言するグローバル変数にしましょう!

では別々の場所で同じ名前の変数を宣言した時はどうでしょう?

こちらも確認してみましょう!

/*プログラム51*/
#include <stdio.h>

void func(void);

int main(){
	int suji = 100;

	printf("[main]suji = %d",suji);

	printf("\n");

	func();

	printf("\n");

	printf("[main]suji = %d\n",suji);

	return 0;
}

void func(){
	int suji = 50;
	printf("[func]suji = %d",suji);
}

■実行結果■

実行結果(b-14-4)

■説明■

変数「suji」を「int main()」と関数「func」2ヶ所で宣言してます。

変数「suji」の値に注目です。最初「100」から始まり、途中で「50」になって、また「100」に戻りました。

これは「int main()」と関数「func」の中のそれぞれの変数「suji」は

「別のもの」

という事です!

くり返しますが

「グローバル変数」・・・全ての場所で使えます。

「ローカル変数」・・・宣言した関数の中でだけ使えます。

ローカル変数の注意

関数「func」の中で宣言した変数「suji」にご注目ください!

/*プログラム52*/
#include <stdio.h>

void func(void);

int main(){
	printf("変数「suji」に注目!\n\n");

	printf("func「一回目」");
	func();
	
	printf("\n");

	printf("func「二回目」");
	func();

	return 0;
}

void func(){
	int suji = 10;

	suji++;

	printf("suji = %d\n",suji);
}	

■実行結果■

実行結果(b-14-5)

■説明■

関数「func」を2回呼び出してます。変数「suji」は2回とも「11」を表示しました。

「int main()」以外の関数で宣言されたローカル変数は

「呼び出すたびに初期化」

されます!

これは言い換えると今回の場合では関数「func」が終わった時点で変数「suji」はなくなってしまうという事です。

「int main()」内のローカル変数

関数を実行したあと「int main()」に戻る時のプログラムの流れは、その関数を実行した続きからになります。

なので「int main()」内のローカル変数が初期化されるワケではないので注意しましょう!

グローバル変数とローカル変数の名前が同じ

/*プログラム53*/
#include <stdio.h>

void func(void);

int suji = 100;

int main(){
	func();

	printf("グローバル変数の「suji」 = %d\n",suji);

	func();

	return 0;
}

void func(){
	int suji = 10;

	printf("func内の「suji」 = %d\n",suji);
}	

■実行結果■

実行結果(b-14-6)

この場合もそれぞれの変数は別のものになり、使う時はローカル変数が優先されます。

グローバル変数でいいじゃん!

もうめんどくさいので全てグローバル変数にすればいいじゃん!と思った方、いると思います。

少しマトモ?なプログラムを組み始めればわかるかと思いますが、変数を甘くみてはいけません。

あまりの変数の多さに絶望します。

早いウチからローカル変数とグローバル変数にきちんと分けるクセをつけておく事をオススメします。

お疲れさまでした!

これでひとまず

「小学生でもわかるC言語」

を終了させて頂きます!

ここまで学んだ内容とゲームプログラミングなどで使えそうなミニプログラム集を集めた、

付録 困った時の部品集

こちらを組み合わせれば簡単なゲームなどは作れますのでよかったら挑戦してみてください。

C言語入門 ミニゲーム集

C言語入門 STGの作り方

C言語入門 ブロック崩しの作り方

もう少しC言語を学びたいという方はぜひ

「小学生でもわかるC言語2」

「小学生でもわかるC言語3」

こちらに挑戦してみてください。

今までお付き合いしていただいた方には感謝です!

このサイトを通して少しでもプログラミングの楽しさを感じていただけたら幸いです!

□ページの先頭へ□

□目次へ戻る□

広告

↓2014年06月20日発売↓

14歳からはじめるC言語わくわくゲームプログラミング教室 Visual Studio 2013編

新品価格
¥2,500から
(2016/5/10 22:17時点)

↓2014年10月25日発売↓

超本格! サンプルで覚えるC言語 3Dゲームプログラミング教室

新品価格
¥3,110から
(2016/5/10 22:18時点)

↓2013年07月25日発売↓

小学生からはじめるわくわくプログラミング

新品価格
¥2,052から
(2016/5/10 22:21時点)

↓2016年05月13日発売↓

小学生からはじめるわくわくプログラミング2

新品価格
¥2,052から
(2016/5/10 22:22時点)

もっと!C、C++言語本

□ページの先頭へ□

□HOME□