![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
No.10ベストアンサー
- 回答日時:
>アセンブラって
聞かれてしまいましたね。 言語です。
C言語以前は一般的に使っていたもので今でもデバイスドライバ等の記述には必要な知識です。
C、C++はコンパイルするとマシン語になりますが
CPUが本来認識できるのは全て16進数で表現される数値の羅列でメモリに置かれるデータです。
アセンブラ言語はそれにもっとも近い言語です。
私もボーランドは20年前から使っていますがそのデバッカで86系アセンブラとともにC言語を理解しました。
現在でもC言語の動作確認にターボデバッカで挙動のチェックに使っています。
デバッカを使うことでバグや効率の良いC言語が書けるようになりますし関数の動作も理解できるようになります。
ポインタや構造体も理解するにはデバッカを使いこなすことが早道と思っています。
判らない言葉は「はてな」サイトで調べるとよいですよ。
http://www.hatena.ne.jp/
回答ありがとうございます
よく理解しました!このサイトは利用させてもらいます!
>>私もボーランドは20年前から使っていますが
ということは20年以上もキャリアがあるのですか。すごいですね!
私はまだ始めてから3ヶ月しか経っていません。
これからもがんばっていきます。
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ではこれを関数として扱います。
オブジェクト指向プログラミングではメンバ関数=メソッドになります。
ここが非常にややこしいところなのですが、
関数=戻り値があるものという概念は従来の構造化プログラミングのもので
プログラミングスタイルが全く変われば、概念も変わるということです。
No.7
- 回答日時:
関数は自動料理マシンと考えてください。
「海苔巻き機」があったとします。
材料を入れる口が3つあります。「海苔」「酢飯」「具」の3つです。
これらの口に各材料を入れれば海苔巻きが出てくる仕組みです。
これが関数です。
ここで「海苔巻き機」が関数名、「海苔」「酢飯」「具」がパラメータです。
この場合、各材料の口が決まっています。
例えば「海苔」「酢飯」を逆に入れてしまうと、「具」が直接「海苔」で巻かれ、それをさらに「酢飯」で巻いたものができあがってしまいます。
また、口が決まっていない関数もあります。「酢飯機」のようなものなら、どの口に何を入れてもOKですね。
さらに、この「酢飯機」の出口を先ほどの「海苔巻き機」の「酢飯」口に接続すれば、もっと自動化、簡易化できますよね。
かえって分からなくなったかな?
回答ありがとうございます
あぁ!・・・
なるほど。わかりました。
この海苔とか酢飯とかは、何の言葉に置き換えれますか?プログラミング用語で?
No.6
- 回答日時:
アセンブラではサブルーチンなどと言っていたかもしれません。
同義ではないのですが書き方によっては同じです。要は何らかの処理をまとめたものです。
規約に反しなければ何でもよいのです。
ただ記述するときや全体の構成を考えたとき処理の内容毎にその機能を分離した方が作るときも後に保守するときもわかりやすくなるはずです。
また逆にわかりやすく作るためです。
プログラムって完成したものを見直すと同じような記述が複数あることに気付くはずです。特に初心者ほど多くなります。
それはバグを含みやすく保守性が低いものです。
大体のものが一部の定数などを分離することにより共通の処理と捉えることができます。
記述の順番や定数を変数とすることで
戻り値=関数(引数)
の形に置き換えられるようになります。
すると全体のプログラムが「ちぢれラーメン」から「ソバ」状に近づき管理しやすくなります。
当然、関数の中に別な機能の関数を記述することもあります。
一度、動作確認が済めば必要なのは機能を記憶するだけでだけで中の記述まで思える必要が無くなります。
また処理の区切りが良い関数であれば特定の機能として再利用の資源になります。
練習する手だてとしては言葉でプログラムを書いていくと慣れてきます。
機能別に何がしたいのかを箇条書きに並べていけばその機能毎が関数になります。 箇条書きに文章化が出来ないのはプログラム以前の機能設計に問題があるからです。
これはアセンブラからC,C++,JAVA,Flash殆どの言語について同じことでクラスの考え方につながるものです。
No.5
- 回答日時:
他の人の言っている通りなんだけど、分かり易くってリクエストなので
関数の呼び出す形は普通、下のような形をしています。
Ret=AAA(X,Y)
引数のパラメータとしてXとYを与えてAAAを呼び出すと、
その結果が返ってきてRETに代入される。
ここまでは理解していることでしょう。
関数っているのは、まず答えが返ってくること。これが重要です。
答えが返ってこない処理はステートメントなんて呼び方をします。
次に大切なのは答えが1つしか返ってこないこと。
つまり、パラメータが同じなら毎回同じ答えが返ってくるという意味です。
毎回、同じ答えが返ってこないと、処理が安定しているか不安になります。
上記はあくまで基本です。
数学の関数の定義も概ねこれに準じます。
基本ということは当然例外もあります。
例えば乱数を求める関数は相手が乱数ですから、
毎回同じ答えを出しては意味がありません。
更にオブジェクト指向でいうところのメンバ関数は
処理対象は全て関数なので、上記の概念は全くあてはまりません。
No.3
- 回答日時:
関数は元々は数学用語で、入力値に対して出力値を写像することを言います。
プログラミング言語における関数は、数学の関数と同様に、入力値(パラメタと呼んだり、引数と呼んだりすることもあります)を受け取って、入力値に基づく計算を行なって、計算結果を出力するものです。
ところで、プログラム言語ですから、関数は、計算を行なうついでに、いろいろな他の作用を生じさせることができます(副作用と呼んだりします)。例えば、メモリを書き換えたり、入出力を行なったりできます。関数の、純粋な関数的側面の他に、このような副作用的側面を目的として関数を書く場合もあります。
こんな感じでわかりますか?
No.2
- 回答日時:
自分も素人なのでそれを前提に読んでください^^;
プログラムを組む上で、いろいろな「命令」が存在します。「画面に表示する」とか、「ファイルから読み込む」とか。
そのような「命令」を「関数」と考えていいと思います(多分)
自分的には、「細かい命令の集りをひとつの命令としたのが関数」なのかなと思ってます。
自分は、C言語を学びましたが、関数なんて最初はまったくわかりませんでした。
こんな風に入力したら、こんな動作をするよ!っていう知識の組み合わせで、プログラムしてました。
スキルアップするうちに、関数という概念を知り、納得できた次第です。
dfkshさんも、どんな言語でプログラムするのかを決めた後、参考書やインターネットで、プログラムをある程度できるようになってから考えればいいと思いますよ。実際、やってみないとわからんと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 【 数Ⅰ 2次関数 】 問題 関数y=mx²+4x+m-3において,yの値が 常に負であるという条件 2 2022/10/01 15:08
- 数学 原始関数の存在性の証明について 数学科の3回生です。院試の勉強でつまづいたので助けてほしいです。 R 6 2022/11/13 19:19
- Excel(エクセル) エクセルでエラーを無視して一番左側のセルの値を返したい 2 2023/07/27 13:06
- 数学 【数学ⅲ】三角関数と合成関数の微分について 4 2022/07/07 21:44
- 数学 僕の理解力がないため、何度も質問すみません。 逆関数についてですが、なぜy=2xの逆関数はx=2yと 2 2023/08/25 17:52
- その他(ビジネス・キャリア) スポット取引とは? 1 2023/04/06 15:23
- 数学 数学の問題の解き方を教えてください! 3 2022/11/02 17:32
- Ruby 初心者プログラミング 3 2022/10/12 11:31
- 副業・複業 『Webライター』になりたいです。 まずブログSNS副業に興味関心がありました。 そして大きな目標と 14 2023/06/16 14:01
- 哲学 なぜ議論の場において言葉遊びをしてしまう人達がいるのでしょうか? 銃社会のアメリカでよく聞かれるのは 9 2023/06/17 22:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAで仕様書は書きますか?
-
C言語(gcc), Linux, FTPプログ...
-
PCの時刻精度
-
COBOLのCALL文がいまいちつかめ...
-
きれいなコード vba vbaを勉強...
-
プログラミングのコード量に関...
-
関数ってなんですか!??
-
日曜プログラマならRubyとPytho...
-
VBAで関数をつくる
-
ホームページのプログラムの見...
-
65536は2の何乗なのでしょうか?
-
階乗のマクロ
-
C++ で、「)」が必要 というエ...
-
アプリのプログラムを見るには...
-
VBAにてメール作成した際、一部...
-
0除算して、落ちるプログラムと...
-
VBAでユーザーフォームが自動的...
-
PICマイコンのコピー(クローン...
-
GPIB制御
-
Excelで4096点以上のFFTの方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAで仕様書は書きますか?
-
C言語(gcc), Linux, FTPプログ...
-
プログラミングのコード量に関...
-
COBOLのCALL文がいまいちつかめ...
-
きれいなコード vba vbaを勉強...
-
空elseの有無
-
例外処理があまり使われない理...
-
C♯の勉強法おしえてください
-
長編プログラミングの設計のコツ
-
逆フーリエ変換のプログラムに...
-
RPG言語の仕様書
-
変数・オブジェクト名に漢字使用
-
テキストの折り返し処理について
-
ノベルゲームを作成中なのですが、
-
プログラミングは難しい?
-
超初心者用プラグラム教えてく...
-
格闘ゲームを作るのは大変なん...
-
MFC,C++/CLI,C#の共存
-
「ルーチン」という言葉の意味
-
ActiveXコントロールの作成(V...
おすすめ情報