1 00:00:06,650 --> 00:00:09,390 [Powered by Google Translate] JOEマコーミック:だから今我々は、変数の話をするつもりだ。 2 00:00:09,390 --> 00:00:13,270 コンピュータサイエンスの変数は値を格納する方法です。 3 00:00:13,270 --> 00:00:14,980 さて、何をどのように我々はそれを保存する 4 00:00:14,980 --> 00:00:16,210 値があまりにも重要ではありません。 5 00:00:16,210 --> 00:00:19,780 私たちは、言葉である値を持つことができ、その可能性 6 00:00:19,780 --> 00:00:21,170 文字列として格納される。 7 00:00:21,170 --> 00:00:23,160 あるいは、我々は、文字である何かを持っている可能性が 8 00:00:23,160 --> 00:00:24,110 手紙のような。 9 00:00:24,110 --> 00:00:26,420 そして、それはcharとして格納されるでしょう。 10 00:00:26,420 --> 00:00:29,660 我々は次のようになります1または12のような数を、持つことができ 11 00:00:29,660 --> 00:00:32,310 整数型またはint型として格納されます。 12 00:00:32,310 --> 00:00:35,940 そこで、我々は保存することができますフロートのような別のものを持っている 13 00:00:35,940 --> 00:00:41,700 1.01または111.13のようなもの。 14 00:00:41,700 --> 00:00:43,530 これらの値は、常に可変と呼ばれています。 15 00:00:43,530 --> 00:00:46,490 我々は整数でナンバーワンを格納した場合ことを意味 16 00:00:46,490 --> 00:00:49,490 後でプログラムの先頭には、我々はその数を変更することができます 17 00:00:49,490 --> 00:00:51,460 3または7である。 18 00:00:51,460 --> 00:00:53,890 さて、ローカル変数を使用すると、一般的に発生するだろうことです 19 00:00:53,890 --> 00:00:55,250 関数を実行するとき。 20 00:00:55,250 --> 00:00:57,260 それでは、あなたは、main関数内にいるとしましょう​​。 21 00:00:57,260 --> 00:00:59,910 そして、あなたはnumという変数を作成したいと思います。 22 00:00:59,910 --> 00:01:01,240 そして我々はそれに整数を格納します。 23 00:01:01,240 --> 00:01:04,680 だから我々は、int num =の3のような何かを言うことができます。 24 00:01:04,680 --> 00:01:05,319 さて、あなたはそこに行く。 25 00:01:05,319 --> 00:01:06,830 ローカル変数を持っています。 26 00:01:06,830 --> 00:01:09,670 さて、この変数がメインで、後に変更することができます 27 00:01:09,670 --> 00:01:13,700 関数は、numのようなものを言って= 6またはnum = 7。 28 00:01:13,700 --> 00:01:15,940 しかし、あなたの変数内に貼り付けられている 29 00:01:15,940 --> 00:01:18,320 その関数のスコープ。 30 00:01:18,320 --> 00:01:21,690 と範囲は、一般的で中括弧で始まる 31 00:01:21,690 --> 00:01:23,990 中括弧とそのメインと両端の先頭 32 00:01:23,990 --> 00:01:26,230 main関数を終了します。 33 00:01:26,230 --> 00:01:29,610 そして、このローカル変数は、ここではこの範囲内で立ち往生している。 34 00:01:29,610 --> 00:01:32,200 だから、それはもはや、別の関数にアクセスすることはできません 35 00:01:32,200 --> 00:01:33,950 main関数の外。 36 00:01:33,950 --> 00:01:36,230 そして、かつて主な機能は、その実行を終了し、 37 00:01:36,230 --> 00:01:40,460 返ると、このローカル変数と呼ばれるnumがなくなっています。 38 00:01:40,460 --> 00:01:42,760 だからローカル変数とは対照的に、我々は何かを持っている 39 00:01:42,760 --> 00:01:43,970 グローバル変数と呼ばれる。 40 00:01:43,970 --> 00:01:46,890 さて、グローバル変数の先頭で宣言されている 41 00:01:46,890 --> 00:01:49,860 プログラムとは、プログラムのどこにアクセスすることができます。 42 00:01:49,860 --> 00:01:51,805 それでは、あなたがの上部にグローバル変数を宣言したとしましょう 43 00:01:51,805 --> 00:01:53,200 テストと呼ばれるプログラムです。 44 00:01:53,200 --> 00:01:54,990 さて、この変数がアクセスされる可能性 45 00:01:54,990 --> 00:01:56,000 プログラムのどこインチ 46 00:01:56,000 --> 00:01:58,230 あなたのメイン関数または関数でそれにアクセスすることができました 47 00:01:58,230 --> 00:01:59,300 その下。 48 00:01:59,300 --> 00:02:02,210 しかし、あなたはこれまでのいずれかのローカル変数を作成しようとした場合 49 00:02:02,210 --> 00:02:04,170 同じ名前が付いているこれらの関数として、 50 00:02:04,170 --> 00:02:05,880 テストでは、競合が発生します。 51 00:02:05,880 --> 00:02:07,720 あなたが使用したい変数を知らないので。 52 00:02:07,720 --> 00:02:09,039 あなたは、グローバルなテストを使用しますか 53 00:02:09,039 --> 00:02:10,910 一番上のプログラムで宣言された? 54 00:02:10,910 --> 00:02:12,495 または、ローカル変数のテストをすることに使用するか 55 00:02:12,495 --> 00:02:14,920 あなたはこの関数内で作成しようとしている? 56 00:02:14,920 --> 00:02:16,700 さて、これは我々はしたくない理由の一つである 57 00:02:16,700 --> 00:02:18,960 ただ自由にグローバル変数を使用します。 58 00:02:18,960 --> 00:02:21,570 名前空間が乱雑と呼ばれるものがある。 59 00:02:21,570 --> 00:02:23,940 あなたに意味するものではない場合でも、誤って作成することができます 60 00:02:23,940 --> 00:02:26,270 同じ名前の後に、プログラム内のローカル変数、 61 00:02:26,270 --> 00:02:28,140 グローバル変数として名前。 62 00:02:28,140 --> 00:02:30,130 そして、これは作業中の巨大な問題をもたらすことはありません 63 00:02:30,130 --> 00:02:33,120 小型10、20、30行プログラム。 64 00:02:33,120 --> 00:02:35,520 あなたが何千行ものコードまで持ってたら、ではないでしょう 65 00:02:35,520 --> 00:02:38,740 あなたはグローバル変数に格納されているかを正確に覚えています。 66 00:02:38,740 --> 00:02:41,000 ローカルとグローバルの使用を検討するので、一つのこと、 67 00:02:41,000 --> 00:02:43,570 変数は、それらの範囲を考えることです。 68 00:02:43,570 --> 00:02:47,270 さて、スコープは、これらの変数の中で使用できる場所を指す 69 00:02:47,270 --> 00:02:48,500 プログラム。 70 00:02:48,500 --> 00:02:51,080 、グローバルスコープと呼ばれるものを持ってグローバル変数はそう 71 00:02:51,080 --> 00:02:53,820 それはプログラムのどこにでも使用することができることを意味している。 72 00:02:53,820 --> 00:02:56,860 一度その変数を初期化すると、それはで使用することができます 73 00:02:56,860 --> 00:03:00,530 それが主な機能であるかどうか、任意の関数、 74 00:03:00,530 --> 00:03:03,780 ダウン機能10機能は、foo10と呼ばれる。 75 00:03:03,780 --> 00:03:05,160 あなたがそれを使用する場所は問題ではありません。 76 00:03:05,160 --> 00:03:07,490 しかし、ローカル変数は、特定のスコープを持っています。 77 00:03:07,490 --> 00:03:09,800 そして、そのローカル変数のスコープは、によって決定される 78 00:03:09,800 --> 00:03:11,030 どこでそれが初期化されます。 79 00:03:11,030 --> 00:03:13,680 さて、範囲は一般的に開口部によって決定されます 80 00:03:13,680 --> 00:03:16,540 変数が宣言された関数の中括弧まで、 81 00:03:16,540 --> 00:03:18,300 その関数の閉じ括弧。 82 00:03:18,300 --> 00:03:19,730 それでは、あなたが主な機能にしているとしましょう​​。 83 00:03:19,730 --> 00:03:21,410 そして、あなたは、変数を作成します。 84 00:03:21,410 --> 00:03:23,110 しかし、今、このメイン関数内で、我々は別の呼び出し 85 00:03:23,110 --> 00:03:24,640 関数foo。 86 00:03:24,640 --> 00:03:27,070 関数fooでは、変数を我々だけで呼び出すことができません。 87 00:03:27,070 --> 00:03:29,940 それがスコープ内にはないので、main関数で作成された。 88 00:03:29,940 --> 00:03:33,410 その変数は、main関数内でのみ有効範囲内にある。 89 00:03:33,410 --> 00:03:36,540 だから我々は、main関数内で、上に、さらにそれを使うことができますが、 90 00:03:36,540 --> 00:03:40,650 しないmain関数から呼び出される関数内。 91 00:03:40,650 --> 00:03:43,390 だから、スタックとヒープのように、グローバル変数は 92 00:03:43,390 --> 00:03:45,580 メモリの特定の部分に格納されている。 93 00:03:45,580 --> 00:03:47,665 さて、メモリのこの部分は、そのシステムに依存 94 00:03:47,665 --> 00:03:48,490 あなたが使用している。 95 00:03:48,490 --> 00:03:50,840 グローバル変数は、彼らがしていることを2つの別々のスポットを持っている 96 00:03:50,840 --> 00:03:54,570 そのような場合のように初期化されたグローバル変数のために保存され、1 97 00:03:54,570 --> 00:03:58,130 あなたのプログラムの先頭で、int型テスト= 5を宣言した。 98 00:03:58,130 --> 00:04:01,010 そして、他のエリアには、初期化されていないグローバル変数です 99 00:04:01,010 --> 00:04:03,190 あなたが今言った場合、int型とプログラムの最初にテスト、 100 00:04:03,190 --> 00:04:05,040 テスト変数を設定しようとしていた 101 00:04:05,040 --> 00:04:07,626 後でプログラム内で。 102 00:04:07,626 --> 00:04:10,140 だから今は、#defineと呼ばれるものについて話をするつもりですが、 103 00:04:10,140 --> 00:04:13,380 これは、定数にシンボリック名を与えるための方法です。 104 00:04:13,380 --> 00:04:17,420 そしてここで我々は計算するC言語のプログラムの例を持っている 105 00:04:17,420 --> 00:04:19,470 円の面積。 106 00:04:19,470 --> 00:04:21,690 とプログラムの先頭に、我々は言う何かをするつもりだ 107 00:04:21,690 --> 00:04:25,830 #円周率3.14159を定義します。 108 00:04:25,830 --> 00:04:29,330 技術的にはグローバル変数を作成しません#定義されています。 109 00:04:29,330 --> 00:04:31,590 むしろ、それは、コンパイラのプリプロセッサに指示 110 00:04:31,590 --> 00:04:34,350 とπのすべてのインスタンスを検索して置換 111 00:04:34,350 --> 00:04:37,540 コンパイルする前に、3.14159。 112 00:04:37,540 --> 00:04:39,830 それにもかかわらず、それが宣言するための有用な技術となる 113 00:04:39,830 --> 00:04:41,510 プログラム全体で使用するための定数。 114 00:04:41,510 --> 00:04:44,540 さて、面積関数を見て、それはfloatで取り 115 00:04:44,540 --> 00:04:48,150 RADと単にそれで円の面積を返します 116 00:04:48,150 --> 00:04:52,920 半径または乗πr、またはπの時間が時間がラジアンラジアン。 117 00:04:52,920 --> 00:04:56,040 #定義すると、重要な役割を果たしているとこれです。 118 00:04:56,040 --> 00:04:59,270 コンパイラは、基本的にはそのパイを交換しますので、 119 00:04:59,270 --> 00:05:02,780 数3.14159を持つシンボル。 120 00:05:02,780 --> 00:05:05,560 そして私たちは何度も繰り返していることを記述する必要はありません。 121 00:05:05,560 --> 00:05:08,900 我々は、円周率の桁以上の数字を使用することにした場合と後になって、してみましょう 122 00:05:08,900 --> 00:05:12,800 3.1415926を言う、私達はちょうどその上に追加できる 123 00:05:12,800 --> 00:05:14,330 プログラムは、それを変更する必要はありません、 124 00:05:14,330 --> 00:05:16,160 後でプログラム内で。 125 00:05:16,160 --> 00:05:18,240 これは#defineの良い使用方法です。 126 00:05:18,240 --> 00:05:20,520 私たちは、グローバル変数としてpiを保存したくないので、それ 127 00:05:20,520 --> 00:05:21,780 プログラムの後半で変わる可能性があります。 128 00:05:21,780 --> 00:05:23,430 そして、我々はpiが変更されることはありません知っている。 129 00:05:23,430 --> 00:05:25,650 それは一定です。 130 00:05:25,650 --> 00:05:28,120 だから、これはグローバル変数の私たちの話題を締めくくります。 131 00:05:28,120 --> 00:05:29,930 だから、今日私たちは、地元との違いについて話しました 132 00:05:29,930 --> 00:05:32,490 グローバル変数は、それらを使用する際に、それらのに応じて 133 00:05:32,490 --> 00:05:36,660 スコープ、そしてなぜ意志でグローバル変数を使用しない 134 00:05:36,660 --> 00:05:39,360 ためのネーム·スペースの乱雑。 135 00:05:39,360 --> 00:05:40,270 私はジョーマコーミックだ。 136 00:05:40,270 --> 00:05:42,290 そして、これはCS50です。