No.6
- 回答日時:
えぇと, 「関数の『こと』」と書かれていますが,
・関数の書き方が分からない
・関数に付随する「引数」とか「戻り値」とかの意味が分からない
・なぜ「関数」なんてものがあるのか分からない
など, いろいろなものが考えられます. このうちどれ (あるいは複数) なのかを明確にしないと, それぞれの人が勝手に解釈してしまい結果としてあなたのほしい答えにならないことがあります.
で, どこが分からないのでしょうか?
No.5
- 回答日時:
関数とは、本来ブラックボックスのことです。
何かをいれたら何かが起こる。
ブラックボックスの中に何かを入れたら、入れたものに応じて決まった答えが出てきます。
時間 親父(点数 テストの点数)
{
時間 説教時間;
説教時間=(100ーテストの点数)/50;
return 説教時間;
}
たとえば上の親父関数は、親父にテストの点数を入れたら説教時間が帰ってきます。
引数は親父に渡すテストの点数。
戻り値は説教時間です。
返すのが説教時間という時間の単位なので、関数「親父」の名前の前に「時間」という型を設定しておきます。
年 裁判長(数 罪の数)
{
年 懲役;
懲役 = 罪の数*3;
return 懲役;
}
この関数の引数、戻り値 何をする関数なのか、わかりますよね
No.4ベストアンサー
- 回答日時:
ひょっとして、テキストを読んだだけの勉強スタイルですか?
百聞は一見にしかず。
いくつか、関数を使っているプログラムを書いて動かしてみれば
分かると思うんですけど。
ステップ実行できればなおさら。
抽象的な例えになりますが、
関数は、「○○する人」みたいなものだと思っています。
引数は、材料。○○する人に「渡したいもの」
戻り値は、○○した結果です。
関数が「ミルクティーを作る人」だとして
引数になるのは、「茶葉」と「ミルク」です。
ミルクティーを作る人に「渡したいもの」が引数です。
戻り値は、実際に作ったもの。この場合は「ミルクティー」ですね。
ちょっと抽象的すぎましたかね。
実際のプログラムにありがちな例だと、
関数「利息を計算する人」
引数「入金額」と「利率」と「期間」
戻り値「利息」
で、実際の関数の中に、利息を求める計算式を入れておきます。
利息を計算する人に、入金額と利率と期間を渡せば、
その人が「計算してくれる」ので、ひとつのプログラム内で何回も計算する場面があると、
関数化した方がプログラムがスッキリします。
また、利息を求める計算式に、あとから変更を加えたいと思った場合、
関数化してあれば、この「利息を計算する人」だけを修正すれば済みます。
関数化してないと、利息を計算する式が、ソース内のあちこちに散らばって
直接書かれており、計算式を変更する場合は、そのすべての計算式を直さなければならなくなります。
この場合、一箇所だけ直し忘れた、とかいって不具合を招く恐れがあります。
自作関数は、こういう処理を自分で定義して、自分で書くことです。
標準関数は、言語仕様として、あらかじめ用意されているものです。
おなじみのprintf関数は、「画面に表示する人」と言えます。
書式の文字列と、変数を渡すと、それを画面に表示してくれるでしょ?
戻り値は、「これだけ表示しましたよ」と文字数を返してくれることになっていますが
一般的には使っていません。
この回答へのお礼
お礼日時:2011/01/02 11:36
私の質問の書き方が悪く、大変申し訳なかったです。
聞きたかったことにぴったり答えて下さっていたので、bajutsuさんをBAにします。
皆さんの回答、とても参考になりました。
本当にありがとうございました。
No.3
- 回答日時:
--------------------------------------------------------------------
関数を使わないで作成した場合
--------------------------------------------------------------------
#include <stdio.h>
void main(){
int i;
for ( i=0 ; i<100 ; i++ ){
printf ( "%d回目のHello World\n",i);
}
printf ( "%d回表示しました\n",100-0);
for ( i=20; i<50 ; i++ ){
printf ( "%d回目のHello World\n",i);
}
printf ( "%d回表示しました\n",50-20);
}
--------------------------------------------------------------------
関数を使って作成した場合
--------------------------------------------------------------------
#include <stdio.h>
// プロトタイプ宣言
int roop(int,int);
void main(){
int d;
d = roop(0,100);
printf ( "%d回表示しました\n",d);
d = roop(20,50);
printf ( "%d回表示しました\n",d);
}
int roop(int a,int b)
// 戻したい値の型 関数名(使いたい変数)
{
int m;
int c; //戻したい値の型
for ( m=a ; m<b ; m++ ){
printf ( "%d回目のHello World\n",m);
}
c = b-a;
return c;// 戻したい値
}
--------------------------------------------------------------------
何回も同じ処理をする必要がある時などに便利です。
No.2
- 回答日時:
プログラムの関数は要するにサブルーチンの事です。
同じ処理を何回も記述するのは無駄が大きいので、1ヶ所に記述して色々な所から呼び出せる様にしています。サブルーチンが終わったら呼び出し元に戻るようになっています。
そのサブルーチンへパラメータ(引数)や結果(戻り値)の受け渡しをできる様にしたり、
サブルーチン内に限定した変数(ローカル変数)など設け保守性を良くしたのが、C言語やPASCAL言語などの関数です。
プログラムでの記述や使い方は数学の関数になぞらえていますね。
C言語では文字の表示や入力など標準的な機能は標準関数として決まられています。
No.1
- 回答日時:
数学の関数はわかりますか?実数から実数への写像である
f(x)=x+3
という関数で、f(1) は 4 になりますが、1が実引数で、4が戻り値です。これをCで書くと、
double f(double x) { return x+3; }
これでわからないのであれば、どの当たりでつまずいているのか、書いてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 経済学 「政府支出乗算」の求め方を教えてください。 2 2022/11/20 19:52
- 数学 数学の問題の解き方を教えてください! 3 2022/11/02 17:32
- Ruby 初心者プログラミング 3 2022/10/12 11:31
- C言語・C++・C# C言語 入力した値から0までの数を並べて表示するプログラミングを作りたいんですけど、自分でやってみた 2 2023/05/22 18:18
- C言語・C++・C# C言語について。 3 2022/11/05 20:30
- C言語・C++・C# プログラム内から、MIDIファイルの一部分だけを再生する方法 1 2023/02/15 11:08
- C言語・C++・C# C言語です このプログラムに自分で定義した関数を入れたいです! アドバイスください! 4 2023/02/05 03:20
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
- C言語・C++・C# 関数ポインタの高速化のメリット 7 2023/05/05 20:15
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Vb6.0で三角関数が使えない
-
変化させるセルが変化しない
-
やってみてもわからないので教...
-
C# 計算処理中に実行中ウィン...
-
MATLABの積分について
-
C言語で、漸化式を使ってパスカ...
-
スライムがつぶれていく様子を...
-
絶対ち
-
VBAの再計算が反映されない件に...
-
JavaScriptでSQLiteの値を使いたい
-
Excel VBAの残業時間の合計計算...
-
VBでReplace
-
Java 電卓の連続計算
-
あのコンピュータアーキテクチ...
-
60進数の四則計算
-
バッチファイルでウインドウを...
-
スパイダソリティアの問題
-
MathematicaのNDSolveで連立常...
-
65536は2の何乗なのでしょうか?
-
素数を自動的に作る
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
VBAの再計算が反映されない件に...
-
排他的論理和 BCC(水平パリテ...
-
EXCELなどで「返す」という表現
-
C言語の課題で、1年の秒数を計...
-
バッチファイルでウインドウを...
-
骨折リスク評価のFRAXについて...
-
変化させるセルが変化しない
-
CとFORTRANの計算速度はどちら...
-
なぜオーバーフローになるので...
-
数値計算の高速化 (cos, sin, exp)
-
モジュラス103の計算とは何でし...
-
C# 計算処理中に実行中ウィン...
-
モジュロ
-
引き放し法による除算アルゴリ...
-
60進数の四則計算
-
C言語についてです。 再帰を使...
-
Perlで時間の計算
-
CRC8を教えてください
-
傾いた四角形内の範囲の条件式
おすすめ情報