• ベストアンサー

関数と引数の関係とは?

只今ゼロからプログラミングの勉強をしています。 言語はC言語を習得したいと思ってます。 (将来的にはJavaも!) す~っごく初歩的な質問で申し訳ないんですが 関数とは何でしょうか? 引数とは何でしょうか? またその関係について、非常にわかりやすく 簡単に教えていただけないでしょうか? よろしくお願いします。

  • COZI
  • お礼率100% (5/5)

質問者が選んだベストアンサー

  • ベストアンサー
  • kokucho81
  • ベストアンサー率61% (157/255)
回答No.3

関数=電子レンジ 引数=レンジに入れる「弁当」 や 電子レンジの「設定」(例えば3分あたためるの「3」など」 電子レンジ(弁当, 3)   ↓    ↓  ↓  関数   引数1 引数2 これを実行した結果としてふさわしい結果は普通は「あったか弁当」の誕生でしょう。 であるとすれば、次のようになります。 電子レンジ(弁当, 3) ───────────      ↓ この(関数+引数)全体で「あったか弁当」という「値」を返してくれる。

COZI
質問者

お礼

回答ありがとうございました。 とてもわかり易くて理解できました。 更なる飛躍を目指したいと思います!

その他の回答 (4)

  • brogie
  • ベストアンサー率33% (131/392)
回答No.5

C言語では、関数が基本になります。 その関数へ渡す値が引数です。 C言語はmain関数から始まります。 そのmain関数の中に長々と処理を書いている人もいますが、プログラムの可読性が悪くなります。そこで、纏まった処理は下請けに出します、その下請けが関数です。そのとき必要な部品数を伝えるのが引数です。 簡単な例 /*プロトタイプ宣言*/ int wa(int , int); int seki(int, int); /*main関数*/ void main() {    int a, b ,c ,d;    a = 10;    b = 20;    c = wa( a , b );    d = seki( a, b ); } /*関数*/ int wa(int x, int y) {    return x + y; } int seki(int x, int y) {    return x*y); } 関数int wa(int x, int y),int seki(a ,b) 実引数 a,b.........実際この引数に値が入って渡される。 仮引数x,y..........こちらは引き受ける引数で、仮にx,yとなっているだけです。 (このソースをコピー&ペーストで使用できません。理由:可読性をよくするために、全角スペースを入れています) 以上、簡単な説明ですが、ご参考まで(^^;

COZI
質問者

お礼

回答ありがとうございました。 参考ソースまで付けていただいて よくわかりました。

  • dell_kun
  • ベストアンサー率20% (1/5)
回答No.4

ゼロからプログラムを勉強しているとのことですが、Cプログラミングではmain関数という関数を使います。 プログラムの動作はこのmain関数の中に記述された一連の処理を行うことによって実現します C言語で最初に作るプログラムの定番はHello.cです。 具体的に記述すると以下のようになります。 #include <stdio.h> void main(){ printf("Hello World!"); } このプログラムは画面にHello World と表示するだけの処理をします。 このように、処理が短いときはmain関数だけ使ってプログラムが書けるので、関数や引数を気にする必要はありません。 しかし、処理が長くなったり、複数の人間で分担して作業を行うようになるとmain関数のなかに全部の処理をダラダラっと記述するのは効率上よくありません。 そこで、main以外に関数をつくり、処理の分担を行うのです。 たとえばプログラムで電卓を作りたい場合、電卓の処理を考えると、足し算、引き算、掛け算.....といくつかの処理が考えられます。 そこで、足し算の処理をする関数、引き算の処理をする関数.....といくつかの処理を関数としてまとめておくのです。 足し算関数の例を以下に示します。 int tasizan(int suji1,int suji2){ int ans; //加算の答えを格納 ans=suji1+suji2; //与えられた引数を足した答えをansの中に入れる return ans; //加算の答えを返す } tasizan は関数名で、関数の処理をあらわすような名前を任意で決定できます。(好みで付けてください) tasizan関数の次の( )内に記述されたsuji1、suji2を引数といいます。 これは、関数のパラメータです.... といってもなんのことかわからないと思うので、もう少し我慢してよんでください。 プログラムの全ての動作はmain内で実行されます。つまり、分けて作ったtasizan関数をmain関数のなかに組み込まなければなりません。 main関数にtasizan関数を組み込むと以下のようになります。 #include <stdio.h> void main(){ int kaitou; kaitou = tasizan(3,8); //足し算関数の答えをkaitouの中に格納 printf("3+8=",%d); } 足し算の処理がtasozan(3,8)の一行で済みました(^^) 足し算関数ではtasizan(引数1、引数2)では引数1と引数2の足し算を返します。 この返される数値を戻り値と言い、tasizan関数内のreturan ...で指定された値を返します。 このように、関数には引数と戻り値があります。(引数も戻り値もない関数もあり処理内容によってさまざまです) また、プログラム内で同じ処理を頻繁に利用する場合も記述が短くなり、プログラムが整理されます。 以上です。 質問者のプログラミング理解度がわからないので、長々と書いてしまいました。ひまだったし... 厳密に言うと上記の内容で正しくないこともありますが、単純に説明するため難しいことは省いています。 では、がんばって勉強してください。

COZI
質問者

お礼

回答ありがとうございました。 もっともっと理解を深めていきたいと思います。

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.2

> 関数とは何でしょうか? C言語では、処理の単位が関数になります。一連の処理・操作をひとくくりに まとめて、名前をつけたものが関数です。 関数には、予め用意されているものもありますが、自分で作ることもできます。 > 引数とは何でしょうか? 引数とは、関数に与えるパラメータ、つまり条件になります。 関数は、何か処理をやってくれるものなので、誰か(これも関数です)が 「処理をよろしく」と、その関数の名前で呼んであげます。そのときに、 その関数次第では 仕事の条件を指定できて、それを引数(ひきすう)と 呼びます。 条件を指定する必要が無い、もしくは、できないという関数を作ることも できます。そういった関数には、引数がありません。 # 分かり難ければ、補足をしてください

COZI
質問者

お礼

回答ありがとうございました! よぉ~くわかりました! どの本を参考にしてもその辺のところの 説明ってあまりされてなくてボヤ~っと しか理解していなかったので・・・。 ありがとうございました。

  • doroteasu
  • ベストアンサー率11% (4/34)
回答No.1

関数はなにかを コンピュータにしてもらいときに使うコマンドです。 引数は例えば数学で出てくる“x” のようなもので、代数ですかね。 あとで、xに1を代入したり2を代入したりと使います。 ところで、ここらへんの事から 聞いているようだと、大変な時間が掛かると思われます。 できれば、もっとよくわかる本などを、買ったほうがいいと思います。

COZI
質問者

お礼

早速の回答ありがとうございます! どの本を参考にしてもその辺のところの 説明ってあまりされてなくてボヤ~っと しか理解していなかったので・・・。 関数と引数の関係ってところが まだイマイチよくわかりません・・・。 教えて下さい。

関連するQ&A

  • 関数の実引数と仮引数の扱いがわかりません

    プログラミング初学のものです。 関数の実引数と仮引数の扱いが、 今一つわかりません。 どっちにどう表記するのか、はっきり理解しておりません。 どうやって理解すればよいのでしょうか。 ちなみに、扱っているはC言語です。 ご経験者の方、どうぞよろしくお願いします。

  • 皆さんの回答のおかげでプログラミングの目的が決まってきたのですが、何言語から入ったほうがいいでしょうか?

    以前質問させていただき、たくさんの回答をいただきました。 本当にありがとうございます。 皆様の詳しい回答のおかげで、プログラミングを学ぶ目的が決まりました。 そこでまた質問なのですが、 ・携帯のゲームを作りたい(携帯用のソフトってありますか?・・・) ・パソコンのソフトを作りたい というのに目標が決まりました。 このことから考えるとjavaということになるらしいのですが、 私は一度javaを少しかじっており、まったくわからなかったわけではないですが、難しいと感じました。 そこでまず、javaを学ぶ前にもっと簡単な言語を完全に習得してからにしたいのですがそんな言語はありますでしょうか? つまりjavaよりも簡単な言語?で、その言語を習得すれば、javaの習得が早くなるというような言語を探しています。 いろいろ調べたところ、C#を習得していると、javaが習得しやすいとか、Cを先にやったほうがいいとかいろいろな意見があり正直混乱しているところです。 また、今のところ将来プログラミング関係のお仕事に就くことは考えていないわけでもないです。 そして、なるべく将来どんな仕事(パソコンを少しでも使う仕事)でも役に立つ言語がいいなぁとおもっています。そうなるとエクセルなどを使うときに役に立つVBAも・・・と思ってしまいます。。。 いちお、高校3年間で2つくらいの言語をしゅうとくできたらなぁーと思っています。そのうちのひとつのはjavaです。 回答よろしくお願いします。

  • 引数のある関数と引数のない関数の設定

     お世話になっております。 PHPのプログラミングで関数をつくる際に、引数を渡す関数と引数がない関数がありますが、すでに定義済みの関数のように、引数がある場合と引数がない場合の両方を取り扱うにはどうしたらよいでしょうか? function example ($a) { if ($a == 0 || $a == '') { print '引数なし'; } else { print $a; } } のような関数で、 example(); という感じで引数を入れないと、 Warning: Missing argument … というエラーがでてしまいます。関数を example(''); と呼び出すと大丈夫なのですが。。。 プログラマーにとって基本的なことだと思うのですが、調べてもなかなか出てこないので質問させて頂きました。どなたかわかる方がいたらしたらおしえてください。 よろしくお願いします! }

    • ベストアンサー
    • PHP
  • 関数、変数、引数について

    現在、ActionScriptを勉強をしていて、よく関数、変数、引数などがでてきます。 しかし、これらをただ漠然とは分かっていたつもりではいたのですが、最近今後のことを考え改めてしっかりと理解したいと考えているのですが、サイトや書籍などでこれらに関する記述を読んでも、いまいち理解しきれず戸惑っております。 これらは分かりやすく説明するとどういうことなのでしょうか? 大変初歩的な質問で申し訳ございませんが、どうか皆様の助言をお願い致します。

  • C言語の関数の実引数と仮引数の名前について

     C言語で関数を使う場合、実引数と仮引数の名前(変数名)は、変えなければならないのでしょうか、同じでもいいのでしょうか。C言語のルールでは、どうなっているのでしょうか。よろしくお願い致します。

  • C言語において、関数とその役割、また、引数とその役割、仮引数、実引数とは?

    C言語初心者です。 そもそもPC使うのも苦手ですがよろしくお願いします。 C言語において、関数とその役割、また、引数とその役割、仮引数、実引数の役割を、実例を用いて簡潔に説明していただけると助かります。お願いします。

  • MAIN関数の引数について

     今日は、Cを勉強中です、宜しくお願いします。  MAIN()関数の引数について、実際の使い方、()の中の引数のとり方、考え方について初心者用に説明して いるようなサイトはあるでしょうか。  色々とググってはみたのですが、なかなかヒットしません、よろしくお願いします。

  • EXEへの引数渡しについて

    VC++でプログラミングしています。 MFCを使ってダイアログベースのEXEを造っています。 このEXEは別のプロセスから CreateProcess関数で起動され、 引数も渡されます。 で、質問です。 ダイアログのEXEでは、渡された引数を解析するために、何処で、 どのようにしたらよいのでしょうか? C言語での (argc, argv) のような仕組みがあるのでしょうか? 識者の方、ご教授願います。

  • 関数型言語の普及について

    関数型言語の普及について 趣味でプログラミングを勉強しているものです。今までにJavaやRuby等、オブジェクト指向言語を中心に勉強してきました。 今日、あるきっかけで関数型言語のHaskellを勉強し始めました。 そして、実際にプログラミングをしてみたり、関数型言語について調べてみると、まだ大きなアプリは書けないものの、今までのやり方(手続き指向、オブジェクト指向)が不要なのではないかと危惧する程の斬新さ、強力さが感じられました。 しかし、そんな関数型言語も未だに普及しているとは到底言えません。Haskellは関数型言語の中でも新しいもののようですが、それでもJava、Rubyよりも昔に発表されている言語です。 どうしてHaskell等の関数型言語は主流になっていないのか、関数型言語が従来の言語に劣っている点を中心に、皆さんの意見を聞かせてください。

  • 関数の引数

    こんにちわ。 ご存知の方、ご教授してもらえないでしょうか? VB.net2005を使っているのですが 関数の引数に変数をセットして、別関数で 引数に対してデータをセットすることは可能でしょうか? C言語でいうところのポインタを引数に渡し ポインタアドレスに書き込むような処理はVB.netでは 可能なんでしょうか? 下記のような事は試したのですが、うまく出来ませんでした(。。; public sub test1() dim mojiretu as string test2( mojiretu ) msgbox(mojiretu) end sub public sub test2( str as string) str = "文字列" end sub