====*====*====*====*====*====*====*====*====*====*====*====*====*====*====*= [ 三流プログラマーのプログラム講座 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: #include5: 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)]