Upgrade to Pro — share decks privately, control downloads, hide ads and more …

基礎情報処理演習 (8)関数

7.9k

基礎情報処理演習 (8)関数

自然言語処理研究室

November 07, 2013
Tweet

Transcript

  1. 関数の作り方 (例:2整数を入力して加算する関数) int addnum(int a, int b){ int x; x

    = a + b; return x; } 2つの整数を入力してaとbに 代入する(aとbはここで 作った変数なので 他の関数からは見えない) 5
  2. 実数を1つ入力する場合 int myfunc(double p){ … } int myfunc(int x, int

    y, int z){ … } int myfunc(void){ … } 無入力の場合 整数を3つ入力する場合 6
  3. 関数の作り方 (例:2整数を入力して加算する関数) int addnum(int a, int b){ int x; x

    = a + b; return x; } この関数は intを 返しますよ という宣言 7
  4. 関数の作り方 (例:2整数を入力して加算する関数) int addnum(int a, int b){ int x; x

    = a + b; return x; } 値の返し方 (値を返すとこの 関数は終了) 8
  5. 実数を1つ返す場合 double myfunc(...){ … } void myfunc(...){ … } では、値を2つ以上返したい時は?

    そんなの無理。あきらめよう。 XXXXXXXXXXXXXXXXXXXXXXXXX グローバル変数(p.14)かポインタを使おう。 値を何も返さない場合 9
  6. 関数の使い方 int main(void){   …   a = addnum(p, q);   … }

    addnum関数は整数を二つ要求 しているので、整数を二つ渡す (pとqの値は変化しない) 10
  7. 変数を3つ渡して値が戻る場合 p = myfunc(x, y, z); w = myfunc(); myfunc();

    何も渡さず、何も戻ってこない場合 何も渡さず値が戻る場合 値が何も戻ってこないので、 代入も必要ない。 11
  8. 関数はどこに書くか? int addnum(...){   ... } int main (...){   ...   k

    = addnum(...); } addnum を 先に定義 addnum がすでに定義されているので 問題なく使える。 16
  9. main関数を先に書くとエラーが出る int main(...){   k = addnum(...);   ... } int addnum

    (...){   ... } addnum なんていう 関数は知らないぞ! と怒られる。 (プログラムは上から読んで いくので、下に書いてあっても コンパイラは気付かない) 17
  10. そこでコンパイラに存在を教えてあげる (プロトタイプ宣言) int addnum (int, int); int main(...){   k =

    addnum(...);   ... } int addnum (...){   ... } addnum 関数は intとintを入力して、 intを返す関数ですよ。 詳しくは下のほうの定義を 見てね。という意味 18