• ベストアンサー

関数ってなんですか!??

先ほど質問させていただいたのですが、そのとき気づいたことがあります。 関数って何!?いままで関数と言う言葉しか覚えていませんでした。 今検索してみたところ、ぜんぜん意味がわかりませんでした。 だれかわかりやすく説明してください。 よろしくお願いします!!

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

  • ベストアンサー
  • caceres
  • ベストアンサー率43% (61/140)
回答No.10

>アセンブラって 聞かれてしまいましたね。 言語です。 C言語以前は一般的に使っていたもので今でもデバイスドライバ等の記述には必要な知識です。 C、C++はコンパイルするとマシン語になりますが CPUが本来認識できるのは全て16進数で表現される数値の羅列でメモリに置かれるデータです。 アセンブラ言語はそれにもっとも近い言語です。 私もボーランドは20年前から使っていますがそのデバッカで86系アセンブラとともにC言語を理解しました。 現在でもC言語の動作確認にターボデバッカで挙動のチェックに使っています。 デバッカを使うことでバグや効率の良いC言語が書けるようになりますし関数の動作も理解できるようになります。 ポインタや構造体も理解するにはデバッカを使いこなすことが早道と思っています。 判らない言葉は「はてな」サイトで調べるとよいですよ。 http://www.hatena.ne.jp/

dfksh
質問者

お礼

回答ありがとうございます よく理解しました!このサイトは利用させてもらいます! >>私もボーランドは20年前から使っていますが ということは20年以上もキャリアがあるのですか。すごいですね! 私はまだ始めてから3ヶ月しか経っていません。 これからもがんばっていきます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (9)

noname#79209
noname#79209
回答No.9

#7です. > この海苔とか酢飯とかは、何の言葉に置き換えれますか?プログラミング用語で? 「パラメータ」あるいは「引数」と言います。

dfksh
質問者

お礼

なるほど。すっきりしました。 ありがとうございます

全文を見る
すると、全ての回答が全文表示されます。
  • gungnir7
  • ベストアンサー率43% (1124/2579)
回答No.8

昨日のことに補足します。 これだけ回答が色々集まるとなると、結構奥の深い問題かなとも思います。 私の前日の解説ではy=axのような関数を想定に入れていました。 ところが Windows の API 関数には線を引くとか、 画像を表示するなんて命令もあります。 これではとても数学でいうところのy=axなんていうのはかやの外です。 上記に挙げたAPI関数はただ処理を行っているだけなんですね。 だから戻り値がなくてもいいのですが、関数なので戻り値があります。 Visual Basicの例を出します。 Visual Basic では戻り値がないものをサブルーチン(sub)、 戻り値のあるものを関数(Function)とよんで区別しています。 ここでも戻り値があるかどうかが1つの焦点になっています。 とここまで書いておいて、話がややこしくなりますが・・・ VB6にはメソッドというものがあります。 例えばラインメソッドは pic1.line(1,1)-(100,100)とすると この座標間で線を引きます。戻り値もないので関数でありません。 VBではこれを関数とは扱っていません。 しかし、MFCではこれを関数として扱います。 オブジェクト指向プログラミングではメンバ関数=メソッドになります。 ここが非常にややこしいところなのですが、 関数=戻り値があるものという概念は従来の構造化プログラミングのもので プログラミングスタイルが全く変われば、概念も変わるということです。

dfksh
質問者

お礼

またまた回答ありがとうございます! 私はボーランドを使っていますが・・・よくわかりません。 でもなんとなくわかりました。

全文を見る
すると、全ての回答が全文表示されます。
noname#79209
noname#79209
回答No.7

関数は自動料理マシンと考えてください。 「海苔巻き機」があったとします。 材料を入れる口が3つあります。「海苔」「酢飯」「具」の3つです。 これらの口に各材料を入れれば海苔巻きが出てくる仕組みです。 これが関数です。 ここで「海苔巻き機」が関数名、「海苔」「酢飯」「具」がパラメータです。 この場合、各材料の口が決まっています。 例えば「海苔」「酢飯」を逆に入れてしまうと、「具」が直接「海苔」で巻かれ、それをさらに「酢飯」で巻いたものができあがってしまいます。 また、口が決まっていない関数もあります。「酢飯機」のようなものなら、どの口に何を入れてもOKですね。 さらに、この「酢飯機」の出口を先ほどの「海苔巻き機」の「酢飯」口に接続すれば、もっと自動化、簡易化できますよね。 かえって分からなくなったかな?

dfksh
質問者

お礼

回答ありがとうございます あぁ!・・・ なるほど。わかりました。 この海苔とか酢飯とかは、何の言葉に置き換えれますか?プログラミング用語で?

全文を見る
すると、全ての回答が全文表示されます。
  • caceres
  • ベストアンサー率43% (61/140)
回答No.6

アセンブラではサブルーチンなどと言っていたかもしれません。同義ではないのですが書き方によっては同じです。 要は何らかの処理をまとめたものです。 規約に反しなければ何でもよいのです。 ただ記述するときや全体の構成を考えたとき処理の内容毎にその機能を分離した方が作るときも後に保守するときもわかりやすくなるはずです。 また逆にわかりやすく作るためです。 プログラムって完成したものを見直すと同じような記述が複数あることに気付くはずです。特に初心者ほど多くなります。 それはバグを含みやすく保守性が低いものです。 大体のものが一部の定数などを分離することにより共通の処理と捉えることができます。 記述の順番や定数を変数とすることで 戻り値=関数(引数) の形に置き換えられるようになります。 すると全体のプログラムが「ちぢれラーメン」から「ソバ」状に近づき管理しやすくなります。 当然、関数の中に別な機能の関数を記述することもあります。 一度、動作確認が済めば必要なのは機能を記憶するだけでだけで中の記述まで思える必要が無くなります。 また処理の区切りが良い関数であれば特定の機能として再利用の資源になります。 練習する手だてとしては言葉でプログラムを書いていくと慣れてきます。  機能別に何がしたいのかを箇条書きに並べていけばその機能毎が関数になります。 箇条書きに文章化が出来ないのはプログラム以前の機能設計に問題があるからです。 これはアセンブラからC,C++,JAVA,Flash殆どの言語について同じことでクラスの考え方につながるものです。

dfksh
質問者

お礼

回答ありがとうございます いろんな使い方があるのですね。 アセンブラってなんですか?

全文を見る
すると、全ての回答が全文表示されます。
  • gungnir7
  • ベストアンサー率43% (1124/2579)
回答No.5

他の人の言っている通りなんだけど、分かり易くってリクエストなので 関数の呼び出す形は普通、下のような形をしています。 Ret=AAA(X,Y) 引数のパラメータとしてXとYを与えてAAAを呼び出すと、 その結果が返ってきてRETに代入される。 ここまでは理解していることでしょう。 関数っているのは、まず答えが返ってくること。これが重要です。 答えが返ってこない処理はステートメントなんて呼び方をします。 次に大切なのは答えが1つしか返ってこないこと。 つまり、パラメータが同じなら毎回同じ答えが返ってくるという意味です。 毎回、同じ答えが返ってこないと、処理が安定しているか不安になります。 上記はあくまで基本です。 数学の関数の定義も概ねこれに準じます。 基本ということは当然例外もあります。 例えば乱数を求める関数は相手が乱数ですから、 毎回同じ答えを出しては意味がありません。 更にオブジェクト指向でいうところのメンバ関数は 処理対象は全て関数なので、上記の概念は全くあてはまりません。

dfksh
質問者

お礼

なるほど。いろんなプログラムを見て経験することが大事なんですね。 いろんな関数の答えがあるから。 ありがとうございました!

全文を見る
すると、全ての回答が全文表示されます。
回答No.4

考え方は数学の関数と大差ないです。 ある値を放り込むと解がでるって感じで xに数字を放り込むとそれにあうyが導き出せるという風に それとプログラミングの関数は同じよう宇名物です。 引数を入れると返値が返ってくるような ただし、引数や返値がなしの場合もあります。

dfksh
質問者

お礼

あ~そんな感じなんですね。 ありがとうございます プログラムによって変わるのですね

全文を見る
すると、全ての回答が全文表示されます。
  • elmclose
  • ベストアンサー率31% (353/1104)
回答No.3

関数は元々は数学用語で、入力値に対して出力値を写像することを言います。 プログラミング言語における関数は、数学の関数と同様に、入力値(パラメタと呼んだり、引数と呼んだりすることもあります)を受け取って、入力値に基づく計算を行なって、計算結果を出力するものです。 ところで、プログラム言語ですから、関数は、計算を行なうついでに、いろいろな他の作用を生じさせることができます(副作用と呼んだりします)。例えば、メモリを書き換えたり、入出力を行なったりできます。関数の、純粋な関数的側面の他に、このような副作用的側面を目的として関数を書く場合もあります。 こんな感じでわかりますか?

dfksh
質問者

お礼

なるほど・・・ 命令を形にすることなんですね。

全文を見る
すると、全ての回答が全文表示されます。
  • beatman
  • ベストアンサー率43% (16/37)
回答No.2

自分も素人なのでそれを前提に読んでください^^; プログラムを組む上で、いろいろな「命令」が存在します。「画面に表示する」とか、「ファイルから読み込む」とか。 そのような「命令」を「関数」と考えていいと思います(多分) 自分的には、「細かい命令の集りをひとつの命令としたのが関数」なのかなと思ってます。 自分は、C言語を学びましたが、関数なんて最初はまったくわかりませんでした。 こんな風に入力したら、こんな動作をするよ!っていう知識の組み合わせで、プログラムしてました。 スキルアップするうちに、関数という概念を知り、納得できた次第です。 dfkshさんも、どんな言語でプログラムするのかを決めた後、参考書やインターネットで、プログラムをある程度できるようになってから考えればいいと思いますよ。実際、やってみないとわからんと思います。

dfksh
質問者

お礼

回答ありがとうございます う~ん・・・なんとなくわかりました。 要するに命令なんですね。

全文を見る
すると、全ての回答が全文表示されます。
  • ikepan
  • ベストアンサー率27% (13/47)
回答No.1

数学でいう関数というのはパラメタに対して値が一意に決まるものです。 Cプログラムの関数というのは、一連の処理をまとめて名前をつけたものです。

dfksh
質問者

お礼

う~ん・・・ 回答ありがとうございます

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 一価の関数とは?

    今、座標変換の勉強をしています。 関数yi=g(x1,x2,x3) のように座標変換をしていますが、 今、 gは、領域Rにおいて、一価の関数であり、連続な一価の偏導関数を持つ という言葉が出てきました。 この、一価の関数とはどのような関数のことを言うのでしょうか? 具体的に、y、xなどの言葉を使って説明して頂けると助かります。 よろしくお願いします。

  • ラップ関数とはどんなものですか?

    プログラミングの際に最近「ラップ関数」というのを良く耳にします。実際の所、あまり良く意味が分かっていません。 ラップ関数とは、分かりやすく言うとどんなものなのでしょうか。 あまりプログラミングの経験が無いので、専門的な言葉はあまり使わずに簡単に説明してもらえると有難いです。よろしくお願いします。

  • 関数x

    「質問」 関数xとはなんですか? 「質問の経緯」 一度学習したことを復習している時にふと疑問に感じたことがありました。下記の画像を見て欲しいです。とくに線を引いた箇所を 見て欲しいです。関数xと書かれていますが、この部分の意味が よく分かりません。下記は関数という言葉の私の解釈です。 私はレストランで牛丼を注文します。日によって注文する数は 違い、牛丼の値段は500円です。したがって y=500xです。 xは変数であり、この変数の値によって定まるのが私が支払う金額です。関数とはこの支払い金額y、もしくは支払う金額を表す式であると私は解釈しています。 上記のような解釈で今まで数学を学習してきましたが そのような解釈の場合、添付した画像の文章の意味が通りません。 lim x→1 x=1という式の場合、左辺のxが変数であり、右辺の結果1が関数だと思うのですが、、、 「質問のまとめ」 私の関数という言葉の解釈だと関数xという言葉の意味が分かりません。正しい意味を教えてほしいです。 ※質問者は馬鹿です。

  • エクセルの関数

    VLOOKUP関数とINDEX+MATCH関数の使い分けが良く分かりません。 VLOOKUP関数が検索値と完全一致するものを検索         検索値と一致する値がない時データを昇順に並べ替えて検索値未満を検索 INDEX+MATCH関数もMATCH関数があるから似た事ができると思うのですがどうでしょうか? この2つがいまひとつ理解ができません。分かりやすい説明をいただければ幸いです。 よろしくお願いします。

  • 「実数値関数」の意味

    ある本に「実数値関数」という言葉がありました。「実数値関数」とは、「変数として実数のみをとる関数」ということでしょうか、それとも「その値が常に実数である関数」という意味でしょうか。それとも、別の意味でしょうか。 言葉の意味が分からなくて先へ進めなくて困っています。よろしくお願いします。

  • 微分係数・導関数

    微分係数と導関数の違いって何ですか? 教科書ではf'(a)のaをxに置き換えて…と説明していますが、文字をひとつ変えるだけで、新しい言葉を出すくらい、そんなにも意味って違ってくるのですか?

  • 重み関数とはどういうものかがわかりません

    重み関数とはどういうもので、どういう使われ方をするのか、高校生レベルでも分かるように教えていただけないでしょうか。 仕事で物体の表面粗さパラメータインター測定について勉強していますが、フィルタ処理の説明にある重み関数という言葉が理解できません。ネットで調べても難しい説明ばかりでさっぱりわかりません。 よろしくお願いします。

  • InStrRev関数について

    InStrRev(abc.name, "\", -1, vbBinaryCompare) - 1という関数があります。InStrRev関数を調べてみると、InstrRev(stringcheck, stringmatch[, start[, compare]])とあり、abc.nameは検索先とわかります。¥を検索するというのもわかります。-1は各検索の開始位置を省略すると-1が使用されるのもわかります。バイナリーモードで検索するのもわかります。しかしその後ろにある-1の意味がわかりません。またこの関数が返す値の意味もわかりません。パスを調べるのに使うと便利と聞いたのですが、どういった意味なのでしょうか?

  • DATEDIF関数について

    先程、エクセルについて質問し、DATEDIF関数というものを教えて頂きました。 問題は解決したのですが、関数の一覧を見ても「DATEDIF」という名前のものは見つかりません。先ほどの問題は、手入力でなんとかなったのですが、この関数を使うには手入力するしかないのでしょうか?宜しくお願いします。

  • エクセルの関数

    エクセルの関数 先程の質問の続きです。 画像を別途載せられなかったので、 再度こちらにて質問させて頂きました。すみません・・・。 関数を使って、以下のような事をしたいので、ご指導頂ければと思います。 画像のように、持ち点20からスタートし、 「○」を入力したら +1  「×」を入力したら -1 数値 例として「0.15」と入力したら その数の分だけポイントをプラスする というような感じにしたいのですが、こんな説明でおわかりいただけますでしょか? お手数おかけしますが、アドバイスよろしくお願いします。