1 00:00:07,010 --> 00:00:09,640 [Powered by Google Translate] 関数は、大規模なプログラムの中で使用されるコードのセクションです 2 00:00:09,640 --> 00:00:11,430 特定のタスクを実行できます。 3 00:00:11,430 --> 00:00:15,060 彼らはまた、プロシージャ、サブルーチン、およびサブプログラムとして知られている 4 00:00:15,060 --> 00:00:18,320 彼らは実際にプログラム内だけでミニプログラムであるからである。 5 00:00:18,320 --> 00:00:20,340 あなたは気づいていない場合でも、 6 00:00:20,340 --> 00:00:24,090 あなたがC言語でプログラムした場合は、ほとんど間違いなく、すでに機能を使用していた 7 00:00:24,090 --> 00:00:26,770 あなたは、printfを使用して画面にものを書くときに、 8 00:00:26,770 --> 00:00:29,380 あなたは実際のprintfという関数を使用しています。 9 00:00:29,380 --> 00:00:33,760 同様に、getIntおよびGetStringメソッドは、CS50があなたのために用意されている関数です。 10 00:00:33,760 --> 00:00:37,750 プログラマーとして、我々はいくつかの理由のための関数を使用します。 11 00:00:37,750 --> 00:00:41,240 >> 画面への書き込みのような一般的なタスクを実行する機能を有する 12 00:00:41,240 --> 00:00:44,480 と、ユーザーに入力を促すこと私達にプログラミング時間を節約できます。 13 00:00:44,480 --> 00:00:47,510 それは、同じことを行うためのコードを記述する必要はありません 14 00:00:47,510 --> 00:00:49,520 彼らはすでに私たちのためにやっているので。 15 00:00:49,520 --> 00:00:54,580 私たちは、これらの関数が内部で作業する方法を正確に理解することが必要さえありません。 16 00:00:54,580 --> 00:00:58,880 その代わりに、私達はちょうど私達のプログラムの中で使用したり、呼び出す方法を知っている必要があります。 17 00:00:58,880 --> 00:01:02,040 これは、大規模なプログラムで関数を記述することも役に立ちます 18 00:01:02,040 --> 00:01:04,330 あなたは、他の人がそれらを使用持つことを計画していない場合でも 19 00:01:04,330 --> 00:01:06,830 ちょうど手元に大きなタスクを分割する。 20 00:01:06,830 --> 00:01:11,910 このように、あなたは、あなたがエッセイに構造を与えると思います多くのように、コードに構造を与える 21 00:01:11,910 --> 00:01:15,180 そして実際に大規模なプロジェクトでは、複数の人々を有効に 22 00:01:15,180 --> 00:01:16,730 同時に異なる部分を同時に作業する 23 00:01:16,730 --> 00:01:20,480 一人の仕事が終わるところ、それは明らかだし、別のが始まりだから。 24 00:01:20,480 --> 00:01:26,530 >> 関数は、通常、引数またはパラメータとして知られている、1つ以上の入力で動作 25 00:01:26,530 --> 00:01:30,520 次に返される出力値にそれらの入力を変換する。 26 00:01:30,520 --> 00:01:34,950 しかし、それは、任意の入力引数を使用していない機能を持たせることも可能です 27 00:01:34,950 --> 00:01:36,400 と出力を返しません。 28 00:01:36,400 --> 00:01:38,790 さて、十分なふわふわのものを持つ。 29 00:01:38,790 --> 00:01:41,790 のは、C言語でいくつかの実際の機能を見てみましょう 30 00:01:41,790 --> 00:01:45,570 >> ここでは、それを信じるかどうか、その正方形と呼ばれる機能を持っている 31 00:01:45,570 --> 00:01:47,570 入力の2乗を計算します。 32 00:01:47,570 --> 00:01:49,490 それの構文を解剖してみましょう。 33 00:01:49,490 --> 00:01:51,860 あなたが関数内で参照してください最初の単語は、int、 34 00:01:51,860 --> 00:01:57,460 関数の戻り値の型を指定する、つまり、機能の出力のCタイプ。 35 00:01:57,460 --> 00:02:00,370 この関数はint型で値を出力します。 36 00:02:00,370 --> 00:02:04,100 あなたが参照してください次の単語は、この場合の乗関数の名前です。 37 00:02:04,100 --> 00:02:07,390 適切な関数を命名することは、特に重要である 38 00:02:07,390 --> 00:02:11,260 それはおそらく、関数が何をするかの最も目に見えるドキュメントだから。 39 00:02:11,260 --> 00:02:14,880 それは、この関数SHAZAMまたはbooyah名前を付けて涼しいかもしれない 40 00:02:14,880 --> 00:02:18,340 それは私たちに、関数が何をするかについては何も言わないだろう。 41 00:02:18,340 --> 00:02:23,470 >> 関数名の後に、関数に引数を入力しています。 42 00:02:23,470 --> 00:02:26,380 彼らは、括弧のセット内にリストされ 43 00:02:26,380 --> 00:02:30,160 その型と関数の本体内で彼らのために使用する名前の両方を持つ。 44 00:02:30,160 --> 00:02:34,030 広場は、広場にちょうど1つの引数は、intを取る 45 00:02:34,030 --> 00:02:36,160 その私が名xを与えることにしました。 46 00:02:36,160 --> 00:02:40,760 これは、関数宣言やプロトタイプを終了します。 47 00:02:40,760 --> 00:02:43,320 関数の残りの部分を囲む中括弧 48 00:02:43,320 --> 00:02:45,870 、関数本体の始まりと終わりを示す 49 00:02:45,870 --> 00:02:48,320 関数自体の定義。 50 00:02:48,320 --> 00:02:50,300 広場はかなり単純な関数です。 51 00:02:50,300 --> 00:02:54,100 我々がしなければならないすべてはそれ自身によってxを掛けているのでそれが唯一の、1行を持っている。 52 00:02:54,100 --> 00:02:59,250 単語returnは、出力値を指定し、関数の終了をトリガします。 53 00:02:59,250 --> 00:03:03,430 正方形の関数を使用するために、我々は適切な入力を供給する必要が 54 00:03:03,430 --> 00:03:05,310 その後、出力をキャプチャします。 55 00:03:05,310 --> 00:03:08,140 ここでは、あなたはそれを行うためのいくつかの方法を参照してください。 56 00:03:08,140 --> 00:03:13,600 我々は6のように、生のintに渡すことができ、あるいは、我々は次のような変数を渡すことができます。 57 00:03:13,600 --> 00:03:15,700 たびに、我々は正方形呼び出すことに注意してください、 58 00:03:15,700 --> 00:03:18,330 我々は、変数内の出力をキャプチャし、それを印刷してください。 59 00:03:18,330 --> 00:03:22,690 しかし、我々は変数に戻り値を格納してから印刷する必要はありません。 60 00:03:22,690 --> 00:03:27,090 我々がそうであるように我々はprintfに直接送ることができるとき、私たち平方10、 61 00:03:27,090 --> 00:03:30,580 しかし、これは我々が正方形10の戻り値へのアクセスを持っていないことを意味します 62 00:03:30,580 --> 00:03:32,230 コー​​ドのどこかほかの場所インチ 63 00:03:32,230 --> 00:03:34,890 別の簡単な例を見てみましょう。 64 00:03:34,890 --> 00:03:38,750 >> 今回は、我々は関数がどのように見えるかを確認できるように、一緒に2山車を合計します 65 00:03:38,750 --> 00:03:41,220 それだけではなく1の2つの入力を持っているとき。 66 00:03:41,220 --> 00:03:43,950 あなたが見ることができるように、それはそれほど変わらないです。 67 00:03:43,950 --> 00:03:47,330 我々が行うすべてが、第二引数にbというフロートを追加するだけです 68 00:03:47,330 --> 00:03:51,820 最初の引数からそれを区切るには、カンマを使用して引数リストに、浮かんでいる。 69 00:03:51,820 --> 00:03:55,550 だから、私たちの広場とSUM関数を理解するのは非常に簡単です 70 00:03:55,550 --> 00:03:58,930 彼らはあなたが数学の授業の前に見てきた機能と同等だから。 71 00:03:58,930 --> 00:04:01,610 さて、若干異なって関数を見てみましょう。 72 00:04:01,610 --> 00:04:04,620 代わりに値を返すのではなく、状態を変更します。 73 00:04:04,620 --> 00:04:07,260 これは、副作用を持つものとして知られています。 74 00:04:07,260 --> 00:04:10,750 このプログラムでは、printf_fudd_style機能 75 00:04:10,750 --> 00:04:13,410 我々は前に見たことがない、戻り値の型は、voidを持っています。 76 00:04:13,410 --> 00:04:16,730 >> Voidは、関数は何も返さないことを言うために使用されます。 77 00:04:16,730 --> 00:04:19,410 void型のない変数がありません 78 00:04:19,410 --> 00:04:22,760 ので、printf_fudd_styleような関数から何かを返そうとした場合、 79 00:04:22,760 --> 00:04:24,290 コンパイラは怒鳴られます。 80 00:04:24,290 --> 00:04:29,390 printf_fudd_styleの内部では、まず、関数がまだタスクを実行している間、あることがわかり 81 00:04:29,390 --> 00:04:31,890 すなわち、すべてのWSにRsを切り替え、 82 00:04:31,890 --> 00:04:36,380 この関数のポイントは、画面上の文字列を変更し、それをプリントアウトすることです 83 00:04:36,380 --> 00:04:39,400 プログラムの状態を変更する代わりに結果を返します。 84 00:04:39,400 --> 00:04:43,700 この機能を使用することにより、私たちの広場とSUM関数を使用して、非常によく似ています 85 00:04:43,700 --> 00:04:46,950 我々は変数に結果を保存するか、別の関数にそれを渡さないを除いて 86 00:04:46,950 --> 00:04:49,520 の話をする結果がありませんので。 87 00:04:49,520 --> 00:04:53,180 だから、我々はエルマーファッドプログラムをコンパイルして実行すると、 88 00:04:53,180 --> 00:04:56,970 あなたはその "あなたは汚いウサギ!"を参照してください。右に変換されます 89 00:04:56,970 --> 00:04:58,730 "あなたはwascally wabbit!" 90 00:04:58,730 --> 00:05:02,250 >> 最後に、議論する価値がある1以上の機能はあり 91 00:05:02,250 --> 00:05:06,810 以来、あなたは、あなたが今まで書いてきたすべてのCプログラムで主にそれを使用してきた。 92 00:05:06,810 --> 00:05:09,450 メインはずっと他のどのような機能です。 93 00:05:09,450 --> 00:05:13,580 これは、戻り値の型、名前、引数のリスト、およびボディを持っている。 94 00:05:13,580 --> 00:05:16,110 mainの戻り値の型は常にintであり、 95 00:05:16,110 --> 00:05:19,120 そしてこのintは、それが終了したときにプログラムの状態を伝えるのに使用されます。 96 00:05:19,120 --> 00:05:23,360 >> それが正常に実行されなかったり、エラーのためにそれを早期終了したのでしょうか? 97 00:05:23,360 --> 00:05:26,390 ゼロに戻すと、正常に実行されたことを示している 98 00:05:26,390 --> 00:05:29,510 ゼロ以外の値を返すことはエラーを示します。 99 00:05:29,510 --> 00:05:31,950 あなたが書いているプログラムの種類に応じて、 100 00:05:31,950 --> 00:05:34,960 別のエラーに対して異なるコードを返すことは役に立ちます 101 00:05:34,960 --> 00:05:37,210 後でプログラムを使用する人々のため。 102 00:05:37,210 --> 00:05:40,220 本管の引数はもう少し複雑です。 103 00:05:40,220 --> 00:05:42,150 >> 引数リストはどちらか、空にすることができます 104 00:05:42,150 --> 00:05:45,330 我々は、括弧の間に空隙を書き込むことによって示している、 105 00:05:45,330 --> 00:05:50,220 intとchar *の配列:またはリストは2つの引数を持つことができます。 106 00:05:50,220 --> 00:05:52,820 あなたのプログラムが使用しようとするときは、これらが使用されている 107 00:05:52,820 --> 00:05:56,490 プログラムが呼び出されたときの引数は、コマンドラインに渡される。 108 00:05:56,490 --> 00:05:59,690 int型の引数は、一般的には、argcと呼ばれ 109 00:05:59,690 --> 00:06:03,300 そしてそれはargvとして知られているchar *配列の等しい長さです。 110 00:06:03,300 --> 00:06:07,080 argvは、プログラムに渡されたコマンドライン引数が含まれています。 111 00:06:07,080 --> 00:06:11,440 別要するに、私たちは、より詳細にこれらの変数を使用する方法についてお話しします。 112 00:06:11,440 --> 00:06:15,220 現時点では、メインのいずれかの方法を宣言して自由に感じることができます。 113 00:06:15,220 --> 00:06:19,410 私は一般的に可能な場合は、引数なしで、短い方法でそれを書き出すことを選択します。 114 00:06:19,410 --> 00:06:22,230 >> さて、関数を記述する方法を知っていること、 115 00:06:22,230 --> 00:06:25,030 あなたは、より大規模で複雑なプログラムを開発することにあなたの方法によくしている。 116 00:06:25,030 --> 00:06:29,740 私の名前はネイトHardisonです。これはCS50です。