====*====*====*====*====*====*====*====*====*====*====*====*====*====*====*=
[ 三流プログラマーのプログラム講座 No.002 ] 1999/10/28
=*====*====*====*====*====*====*====*====*====*====*====*====*====*====*====
昔?はC言語、今はVB,Access...そろそろ仕事でDelphiを学習、、、
VCやったら(できたら)カッコいいなぁ...と思っている、
AB型の三流プログラマーKen3が書く、適当なプログラム講座です。
----------------------------------------------------------------------------
目次
1.みなさん、こんにちは
2.C言語 関数の種類?
3.今日は、もうオシマイ
----------------------------------------------------------------------------
/*
* 1.みなさん、こんにちは
*/
こんにちは。なんか読者数が100人いったので、チョット驚いてます。
雨が降っててイヤな日でしたね。
仕事たっぷり残っているんだけど、気分が乗らないので定時で帰る。
-->おいおい、大工じゃないんだから、天気は関係無いでしょ。。。
欲張ってVBA関係を書こうと思ったのですが、進みが悪いので、次回以降にします。
よろしくお願いします。
*今回のC言語関数関係、間違えてた時は、やさしくご指導ください(笑)
/*
* 2.C言語 関数の種類?
*/
関数の種類を説明します。(我流の表現が入っているので、参考程度に)
*いきなりですか、、、
普通はprintfの次はif文for文などの制御文でしょ、、と言われそう。
関数の書式の基本は、
戻り値の型 関数名 (引数名称,引数名称)
引数型 引数名称
引数型 引数名称
{
処理
}
になります、主な例を3種類記述します。
ア.引数(パラメーター)を受け取らず、処理を行う関数
filename : C:\NO2\SUB_01.C
1: /*
2: * 引数を受け取らずに処理を行う関数
3: */
4: #include
5:
6: /* サブルーチン */
7: void sub_01() {
8:
9: printf("sub_01\n"); // <−− 文字をプリントするだけ
10:
11: }
12:
13: /* メイン処理 */
14: void main() { // <ーー プログラムは必ずメインから始まります
15: // (上下どの位置にあっても良い)
16: sub_01(); // <−− 関数コール
17: sub_01();
18:
19: }
実行結果
sub_01
sub_01
解説
値を返さない関数は、void型で宣言します。
関数名は任意の名前を設定できます。ここではsub_01としています。
(標準関数printf等と重複しない名称)
枠外解説・グチ
個人的には、main関数を一番上に書きたいんだけど、
昔の神経がこまかい先輩に、呼ばれる関数の方を上に書け、、、
そのほうがプロトタイプ宣言しなくていいし、ソースの中の関数を探すとき便利
と言われた。
その時は、私もかわいい?新人だったので、
ハイと聞いて変なクセ、、、つきました。
どう考えても、mainを一番上に書いて、
上から下のほうが見やすいと思うし、
ソースをmain.c sub.c に分割すれば、、、と思う。
*私も「てめえの教育がなってない...」...と言ってみたかった。
言えなくても、メールで送ってみたかった。
(今は、無料のメールアドレスあるから、そこから文句を、、送れる)
また、
関数ってのは、値を返すから関数なんで、値を返さないのは手続きだ、、
と注意されたことあったけど、、、でも仕様書は関数仕様書だったような、、
イ.引数(パラメーター)を受け取り、処理を行う関数
filename : C:\NO2\SUB_02.C
1: /*
2: * 引数を受け取り、処理を行う関数
3: */
4: #include
5:
6: /* サブルーチン */
7: void sub_02(kazu, bai)
8: //受け取り変数名称定義
9: int kazu;
10: int bai; //変数の型を定義する。
11:
12: {
13: int work; //計算用変数定義
14:
15: work = kazu * bai;
16: printf("%d の %d 倍は %d です\n", kazu, bai, work);
17:
18: }
19:
20: /* メイン処理 */
21: void main() {
22:
23: sub_02( 2, 4);
24: sub_02(10, 5);
25:
26: }
実行結果
2 の 4 倍は 8 です
10 の 5 倍は 50 です
解説
値を返さない関数は、void型で宣言します。
関数名は任意の名前を設定できます。ここではsub_02としています。
引数をkazu,baiの名称で受け取ります。
kazu,baiの変数の型をその下で定義します。
work変数を定義後、計算します。
計算結果を表示します。
枠外解説・グチ
だから、何が言いたいの?
えっとですね、、、渡された値によって動作をする関数、、と言いたいんです。
サンプルわかりやすく作ったら?
次回から、努力します。
ウ.引数(パラメーター)を受け取り、値を返す関数
filename : C:\NO2\SUB_03.C
1: /*
2: * 引数を受け取り、値を返す関数
3: */
4: #include
5:
6: /* サブルーチン */
7: int sub_03(kazu, bai) // int型の値を返したいので、
8: // int型の関数として宣言します。
9: int kazu;
10: int bai; // 受け取り変数を定義します。
11:
12: {
13: int work;
14:
15: work = kazu * bai;
16: printf("%d の %d 倍は %d です\n", kazu, bai, work);
17:
18: return(work); // workの値をリターン値として返します。
19:
20: }
21:
22: /* メイン処理 */
23: void main() {
24:
25: int a;
26:
27: a = sub_03( 2, 4); // 2,4を引数で渡し、リターン値をaに
28: a = sub_03( a, 5); // 代入します。
29: printf("a = %d\n", a);
30: }
実行結果
2 の 4 倍は 8 です
8 の 5 倍は 40 です
a = 40
解説
int型の値を返すので関数は、int型で宣言します。
関数名は任意の名前を設定できます。ここではsub_03としています。
引数をkazu,baiの名称で受け取ります。
kazu,baiの変数の型をその下で定義します。
work変数を定義後、計算します。
計算結果を表示します。
workの値をreturn文でメインに返します。
メインの変数aを使用し関数のリターン値を受け取っています。
受け取った値をそのまま次の引数に使用しています。
枠外解説・グチ
/*
* 3.今日は、もうオシマイ?
*/
雨も降ってて、天気も悪いので、今日は閉店です。
(天気は関係無いだろ、、、)
なかなか、進み、悪いです。書くペースが上がらないです。
次回は、制御文、if,for関係をやっていこうと思ってますが、
どうなるでしょう?
100人読んでると思うと、緊張します。。。
(半数以上の人がゴミ箱直行だったりして?)
では、また。
ここまで、読んでいただきどうもです。ここから下は、三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、
項目別に本音?それとも建て前?的な記事をまとめました。
|
気になったジャンル↓を選択してください。 |
Blogとリンク:[三流君の作業日記]/ [愚痴(Bookmark)]/ [広告Blog(Bookmark)]