1 00:00:00,000 --> 00:00:03,353 >> [音楽再生] 2 00:00:03,353 --> 00:00:04,842 3 00:00:04,842 --> 00:00:06,050 DAVIDマラン:みなさん、こんにちは。 4 00:00:06,050 --> 00:00:07,777 これは、CS50のスーパーセクションです。 5 00:00:07,777 --> 00:00:09,860 割り当てられたセクションはしません 別の週に開始します。 6 00:00:09,860 --> 00:00:11,580 だから、今日、私はここにいますよwith-- 7 00:00:11,580 --> 00:00:12,122 >> MARIA:マリア。 8 00:00:12,122 --> 00:00:14,163 DAVIDマラン:実際--to 問題を見てみましょう 9 00:00:14,163 --> 00:00:16,110 1、コースの設定 材料の最初の数週間、 10 00:00:16,110 --> 00:00:19,780 あなたはCS50のIDEに慣れる、ビット Linuxでは、のオペレーティングシステムの 11 00:00:19,780 --> 00:00:22,290 IDE上で実行されているだけでなく、 移行のいくつかを見て 12 00:00:22,290 --> 00:00:25,730 スクラッチからCのリーディングへ 問題まで1を設定します。 13 00:00:25,730 --> 00:00:28,340 >> だから、難しい話は抜きにして、 問題で、次のいずれかを設定します 14 00:00:28,340 --> 00:00:30,520 あなたがすることになるだろう CS50 IDEに導入します 15 00:00:30,520 --> 00:00:33,230 このWebベースのプログラミングで 私たちは順番に使用する環境 16 00:00:33,230 --> 00:00:34,280 プログラムを作成します。 17 00:00:34,280 --> 00:00:37,280 それは非常に見えるように設計されています 典型的なコンピュータを思わせます 18 00:00:37,280 --> 00:00:39,430 オペレーティングシステムを実行しています Linuxのと呼ばれるシステム。 19 00:00:39,430 --> 00:00:42,440 しかし、それは、いわゆるクラウドでです、 どのクラスの全員を意味 20 00:00:42,440 --> 00:00:45,100 実際に彼または彼女を持つことができます 自分のアカウントと同様に、それを使用しています。 21 00:00:45,100 --> 00:00:48,950 >> だから、あなたのほとんどは、おそらく使用したことがありません 前またはおそらくLinux環境 22 00:00:48,950 --> 00:00:50,447 でもコマンドライン環境。 23 00:00:50,447 --> 00:00:52,280 また、コマンドライン 環境が異なっています。 24 00:00:52,280 --> 00:00:53,200 これは、すべてのテキストです。 25 00:00:53,200 --> 00:00:54,730 これは、すべてのキーボードコマンドです。 26 00:00:54,730 --> 00:00:59,480 そして、それはマウス操作、アイコンなしません、 何の対話の窓なし、メニュー。 27 00:00:59,480 --> 00:01:00,212 それは純粋にテキストです。 28 00:01:00,212 --> 00:01:01,920 したがって、最初に、それ種類 ステップのように感じています 29 00:01:01,920 --> 00:01:04,434 後方洗練の点から好ましいです。 30 00:01:04,434 --> 00:01:06,600 しかし、それは多くなってしまいます より強力な、確かに、 31 00:01:06,600 --> 00:01:08,510 最終的には、コンピュータ科学者のために。 32 00:01:08,510 --> 00:01:09,540 >> それでは、見てみましょう。 33 00:01:09,540 --> 00:01:13,850 ここで私はこれを介して、CS50.ioで午前 あなたはCS50 IDEにログインすることができます。 34 00:01:13,850 --> 00:01:17,414 そして、多くのスクラッチのように、あります この画面には3つの主要分野。 35 00:01:17,414 --> 00:01:20,080 そのように左側に、我々は 何がファイルブラウザになります。 36 00:01:20,080 --> 00:01:22,413 そして、このフォルダはであります 今空である上、 37 00:01:22,413 --> 00:01:24,690 私はすべてを処分したので、私の スーパーセクションの前にファイル。 38 00:01:24,690 --> 00:01:27,599 そしてそれはどこに私たちがよです 私たちが書くCファイルを保存します。 39 00:01:27,599 --> 00:01:30,890 右上に、私たちはどこの場所を持っています 私たちのすべてのコードが書かれた取得するつもりです。 40 00:01:30,890 --> 00:01:34,610 そして実際、私はこのプラスをクリックすると、この 私は新しいファイルを選択できるようになるだろう。 41 00:01:34,610 --> 00:01:38,310 そして、ここで私は、またはCのコードを書き始めることができ、 本当に、他の言語の任意の数。 42 00:01:38,310 --> 00:01:42,670 >> そして、一番下にある場合は、それ jharvard @ ide50--とあなたと言っています 43 00:01:42,670 --> 00:01:45,080 少し何かを言います different--これは何と呼ばれていましたか? 44 00:01:45,080 --> 00:01:48,644 45 00:01:48,644 --> 00:01:49,310 ターミナルウィンドウを開きます。 46 00:01:49,310 --> 00:01:49,570 うん。 47 00:01:49,570 --> 00:01:51,810 だから、ターミナルウィンドウがあります いわゆるコマンドライン 48 00:01:51,810 --> 00:01:55,540 あなたが対話できるするためのインタフェース 基盤となるオペレーティングシステムと。 49 00:01:55,540 --> 00:01:58,220 そして今のところ、我々はするつもりです this--はほとんど利用して 50 00:01:58,220 --> 00:02:01,170 ただで見て、コンパイルします 私たちが見るのエラーメッセージ、 51 00:02:01,170 --> 00:02:02,347 私たちのプログラムを実行します。 52 00:02:02,347 --> 00:02:04,680 しかし、最終的に、我々はつもりです 同様に、そんなに多くすることができません。 53 00:02:04,680 --> 00:02:07,490 そしてあなたも、ソフトウェアをインストールすることができます そして、ワークスペースの管理 54 00:02:07,490 --> 00:02:09,066 CS50 IDE内で、同様に。 55 00:02:09,066 --> 00:02:10,440 しかし、いくつかの他の時間の詳細。 56 00:02:10,440 --> 00:02:12,689 >> それでは、先に行くと書いてみましょう ちょうど非常に簡単なプログラム 57 00:02:12,689 --> 00:02:15,064 のウォームアップを通過します おそらくあるのhello.c、 58 00:02:15,064 --> 00:02:16,480 私たちが書くことができる最も簡単なプログラム。 59 00:02:16,480 --> 00:02:18,330 私はすでに新しいタブを開きました。 60 00:02:18,330 --> 00:02:24,310 私は先に行くつもりだと 標準io.h.含ま言います 61 00:02:24,310 --> 00:02:25,325 そして、メイン(ボイド)int型。 62 00:02:25,325 --> 00:02:28,930 63 00:02:28,930 --> 00:02:35,200 そして、printfの( "こんにちは、世界" バックスラッシュnは、近くの引用、 64 00:02:35,200 --> 00:02:39,480 近い括弧、セミコロン。 65 00:02:39,480 --> 00:02:39,990 >> 大丈夫。 66 00:02:39,990 --> 00:02:41,700 だから今、私のウィンドウが無題で気づきます。 67 00:02:41,700 --> 00:02:44,840 だから私は非常に迅速に行きますよ ファイルに上がるために、保存してください。 68 00:02:44,840 --> 00:02:46,910 そして、それはすることが重要です 私は「こんにちは。」これを呼び出していません 69 00:02:46,910 --> 00:02:49,243 だから、非常によくある間違い、 特に問題には、次のいずれかを設定します 70 00:02:49,243 --> 00:02:52,530 誤ってちょうどあなたを呼び出すことです プログラム「水」や「貪欲」や「マリオ」 71 00:02:52,530 --> 00:02:53,890 または「クレジット」など。 72 00:02:53,890 --> 00:02:55,970 しかし、あなたが実際にしたいです あなたはファイル拡張子を持っていることを確認 73 00:02:55,970 --> 00:02:58,928 これは、唯一の方法であるため、 コンパイラと、コードエディタ 74 00:02:58,928 --> 00:03:00,710 あなたがいることを知っています 実際にはCのコードを書きます。 75 00:03:00,710 --> 00:03:02,280 だから私は先に行くし、[保存]をクリックしてみましょう。 76 00:03:02,280 --> 00:03:05,710 >> そして今、あまりにも、何CS50 IDE 私たちのために行っていることもあるのです 77 00:03:05,710 --> 00:03:07,120 構文はすべてを強調しました。 78 00:03:07,120 --> 00:03:08,822 だから、すべてが非常にカラフル作られています。 79 00:03:08,822 --> 00:03:10,780 との全体の目的 それが機能していません。 80 00:03:10,780 --> 00:03:14,290 それはに私の目を描画するだけです 概念的に異なる部分 81 00:03:14,290 --> 00:03:15,310 このプログラムの。 82 00:03:15,310 --> 00:03:17,570 それでは、先に行くと、これをコンパイルしてみましょう。 83 00:03:17,570 --> 00:03:19,490 そして、私はこれをコンパイルすることができます いくつかの方法です。 84 00:03:19,490 --> 00:03:22,010 そして、1週間で、 私たちがやった古い学校の道 85 00:03:22,010 --> 00:03:26,250 それは文字通りでした コマンドline--「打ち鳴らすのhello.cの。」 86 00:03:26,250 --> 00:03:27,596 そして私は、Enterキーを押します。 87 00:03:27,596 --> 00:03:29,720 そして、何も起こらないようで ターミナルウィンドウに表示されます。 88 00:03:29,720 --> 00:03:32,654 しかし、どのようなIDEで変化したのか? 89 00:03:32,654 --> 00:03:35,320 ここで、再び、IDEはちょうど意味 統合開発環境。 90 00:03:35,320 --> 00:03:38,360 これは、というのがファンシーな方法です この統合開発 91 00:03:38,360 --> 00:03:40,620 ソフトウェアを開発するための環境を提供します。 92 00:03:40,620 --> 00:03:42,477 それでは、UIに変更しましたか? 93 00:03:42,477 --> 00:03:44,310 あなたは何に気づきました それは、マリア違いますの? 94 00:03:44,310 --> 00:03:47,100 >> マリア:私は何かに気づきました ここまでIDE50フォルダの下に。 95 00:03:47,100 --> 00:03:47,850 >> DAVIDマラン:うん。 96 00:03:47,850 --> 00:03:50,230 だからここまでだけではなく、 我々が持っている "のhello.cを。」 97 00:03:50,230 --> 00:03:53,120 また、ある "、a.outの"を持っています プログラムのダムの名前のようなもの。 98 00:03:53,120 --> 00:03:56,430 しかし、確かに、それはのデフォルト名です あなたは自分のコードをコンパイルするプログラム 99 00:03:56,430 --> 00:03:59,110 コンパイラを教えていません 出力にどのファイル。 100 00:03:59,110 --> 00:04:01,790 だから私はこれを実行したい場合、私は compiler--に伝える必要があります 101 00:04:01,790 --> 00:04:05,340 か、私のようにする必要があり 私のワークスペースを伝えます 102 00:04:05,340 --> 00:04:09,780 呼ばれるプログラムを実行したい」のa.outを。」 103 00:04:09,780 --> 00:04:10,550 入力します。 104 00:04:10,550 --> 00:04:12,474 そして、こんにちは」あり 世界。 "今" ./ "。 105 00:04:12,474 --> 00:04:13,390 実際に重要です。 106 00:04:13,390 --> 00:04:16,050 いっても普通は我々 コマンドの名前を書き、 107 00:04:16,050 --> 00:04:19,060 とき、それはあなたがしたプログラムです 書かれて、あなたは "./"を言いたいん 108 00:04:19,060 --> 00:04:22,460 それが明示的にLinuxを伝えるため、 あなたはと呼ばれるプログラムを実行すること 109 00:04:22,460 --> 00:04:26,930 この中の「のa.out」、ドット 私は現在よこのディレクトリを意味 110 00:04:26,930 --> 00:04:31,600 であることを起こるで、 「a.outの、ワークスペースと呼ばれます。 111 00:04:31,600 --> 00:04:35,410 私が今言っている場合ので、「a.outの、」と入力し、 私は、コマンドa.outを「ない取得するつもりです 112 00:04:35,410 --> 00:04:38,035 「なぜならcomputer--発見 私が発明したため、「a.outの。」 113 00:04:38,035 --> 00:04:40,910 それはcomputer--が付属していませんでした どこにあるかを知ることはありません、 114 00:04:40,910 --> 00:04:43,590 それが正しいのにもかかわらず、 私の鼻の下で、いわば。 115 00:04:43,590 --> 00:04:44,090 OK。 116 00:04:44,090 --> 00:04:49,910 だから我々は、これを変更することができます 「こんにちは-o打ち鳴らすのhello.c。」であります 117 00:04:49,910 --> 00:04:53,030 そして、私は入力してヒットした場合、どのようなプログラム これは私のために出力するように起こっていますか? 118 00:04:53,030 --> 00:04:55,710 ファイルの名前は何ですか? 119 00:04:55,710 --> 00:04:57,500 うん、戻りました。 120 00:04:57,500 --> 00:04:58,479 そのとおり。 "こんにちは。" 121 00:04:58,479 --> 00:05:00,520 だから、「こんにちは」になるだろう プログラムの名前 122 00:05:00,520 --> 00:05:04,610 我々が使用してきたので、いわゆる ちょうどであるコマンドライン引数、 123 00:05:04,610 --> 00:05:08,120 の動作を変更する方法 実際に出力するコンパイラ 124 00:05:08,120 --> 00:05:09,450 特定のファイル名。 125 00:05:09,450 --> 00:05:12,400 そして実際、私がズームインするとき、 うち、ここまで見て、 126 00:05:12,400 --> 00:05:17,430 今私は、 "a.outの"だけでなく、を持っており、 同様に「hello.cの "だけでなく、「こんにちは」。 127 00:05:17,430 --> 00:05:22,410 だから今私は、 "./hello、「入力を行うことができます。 128 00:05:22,410 --> 00:05:23,640 そして、 "こんにちは、世界。」あります 129 00:05:23,640 --> 00:05:25,640 しかしlastly--この 今大会になります 130 00:05:25,640 --> 00:05:27,590 我々は全体で使用します 学期、typically-- 131 00:05:27,590 --> 00:05:30,070 あなたも、単に言うことができるである「ハローを作ります。」 132 00:05:30,070 --> 00:05:33,370 そして実際、それはアップだと言っています 日付にはすでに存在しているため。 133 00:05:33,370 --> 00:05:37,860 私が先に行くとして、削除してみましょう rmコマンドは、両方の "a.outの」 - 134 00:05:37,860 --> 00:05:39,644 そして、言う「通常のファイルa.outを削除? " 135 00:05:39,644 --> 00:05:41,810 そのちょうどあなたが、していることを意味 あなたはそれを削除してもよろしいですか? 136 00:05:41,810 --> 00:05:42,880 私はそう言うつもりです。 137 00:05:42,880 --> 00:05:46,690 そして私は削除するつもりです 「こんにちは」ではなく「hello.cの。」 138 00:05:46,690 --> 00:05:49,920 私は、明示的に "はい"と言うつもりです しかし、「Y」は同様に、十分なものです。 139 00:05:49,920 --> 00:05:52,140 >> 私ならばそして今気付きます 、ls--れ、リコールを入力 140 00:05:52,140 --> 00:05:55,540 それがすべて一覧表示されますlist--意味 私のフォルダ内のファイルの。 141 00:05:55,540 --> 00:05:57,850 そして実際、私がズームインするとき、 アウトと左上を見て、 142 00:05:57,850 --> 00:05:59,730 それは何だことを確認します このフォルダ内に、偶数 143 00:05:59,730 --> 00:06:04,990 それがここまでIDE50と名付けていても そして、ではないワークスペースは、それだけで「hello.cの。」です 144 00:06:04,990 --> 00:06:09,152 だから今ダウンここで、私の場合 入力して「こんにちは、作る「ん、 145 00:06:09,152 --> 00:06:12,360 今、私ははるかに長いコマンドを参照してくださいが、 起こっているのより洗練されたコマンド 146 00:06:12,360 --> 00:06:13,940 来て週に有用であること。 147 00:06:13,940 --> 00:06:16,720 そして今、私は「./hello。」と言うことができます 148 00:06:16,720 --> 00:06:19,257 >> それでは、クイックツアーを見てみましょう いくつかの他のLinuxコマンド。 149 00:06:19,257 --> 00:06:21,840 なぜ私たちはステップを取ることはありません 背中と実際にそれ以上のCを見て 150 00:06:21,840 --> 00:06:25,020 一般的に、スクラッチからの移行 Cに、その後表情で結論 151 00:06:25,020 --> 00:06:27,305 最初の問題で Cに設定したすべての権利。 152 00:06:27,305 --> 00:06:30,430 だから私は先に行くつもりだし、ちょうどきれいな コントロール-Lだけで自分のワークスペースアップ 153 00:06:30,430 --> 00:06:31,429 きちんとした画面を維持します。 154 00:06:31,429 --> 00:06:33,520 しかし、それは何の機能を持っていません そうでなければ影響。 155 00:06:33,520 --> 00:06:35,820 >> 私たちが見てきたことを思い出してください 今いくつかのコマンド。 156 00:06:35,820 --> 00:06:39,900 だから我々は、一般的にあなた打ち鳴らすを、見てきました もう手動で実行する必要はありません。 157 00:06:39,900 --> 00:06:41,650 我々は、代わりにメイクを使用します。 158 00:06:41,650 --> 00:06:45,290 しかし、我々はまた示している、LSを見ました 私のディレクトリ内のファイルのリスト。 159 00:06:45,290 --> 00:06:48,750 そして今、なぜthere-- 2がありますされています 今ファイル、「こんにちは」と「hello.cの。」 160 00:06:48,750 --> 00:06:52,240 なぜスターやがあります 「こんにちは」の後にアスタリスク? 161 00:06:52,240 --> 00:06:54,900 それがベースの、何を意味しました 私たちは週1で見たものに? 162 00:06:54,900 --> 00:06:58,852 163 00:06:58,852 --> 00:07:00,400 どう思いますか? 164 00:07:00,400 --> 00:07:02,742 星は何を意味するのでしょうか? 165 00:07:02,742 --> 00:07:04,614 >> マリア:「こんにちは」プログラムFor--? 166 00:07:04,614 --> 00:07:05,530 DAVIDマラン:「こんにちは*」。 167 00:07:05,530 --> 00:07:06,330 うん。 168 00:07:06,330 --> 00:07:07,760 そうそう? 169 00:07:07,760 --> 00:07:08,639 ああ、実行可能。 170 00:07:08,639 --> 00:07:09,180 そのとおり。 171 00:07:09,180 --> 00:07:10,890 だから、ということを意味 「こんにちは」の実行可能です。 172 00:07:10,890 --> 00:07:13,430 だから確かに、それが理由です 私は「./hello」を行うことができます 173 00:07:13,430 --> 00:07:13,930 大丈夫。 174 00:07:13,930 --> 00:07:15,179 だから私はここで他に何ができますか? 175 00:07:15,179 --> 00:07:17,290 まあ、それは私ができる判明します また、ディレクトリを作成します。 176 00:07:17,290 --> 00:07:20,924 だから私は先に行くと作成することができ、 例えば、「PSET1 "ディレクトリ。 177 00:07:20,924 --> 00:07:23,590 そして、問題セットの仕様 あなたは正確にこれを行う必要があります、 178 00:07:23,590 --> 00:07:25,260 だから、今日は覚えておく必要はありません。 179 00:07:25,260 --> 00:07:27,340 しかし、 "は、mkdir PSET1は「そうです 影響はありませんします。 180 00:07:27,340 --> 00:07:30,540 しかし、再び、エラーメッセージありません 一般的には良いことです。 181 00:07:30,540 --> 00:07:34,060 だから私は、ああnow--今の "ls"と入力した場合 私はと呼ばれる実行可能ファイルを持っています 182 00:07:34,060 --> 00:07:36,570 いわゆる「ハロー、「Cファイル」のhello.c。」 183 00:07:36,570 --> 00:07:40,860 そして、最後のスラッシュにそう 話す、これがディレクトリであることを意味します。 184 00:07:40,860 --> 00:07:42,510 >> だから確かに、今私はそれを開きたいです。 185 00:07:42,510 --> 00:07:45,730 そして、私は次のようにそれをダブルクリックしないでください GUI、グラフィカルな環境インチ 186 00:07:45,730 --> 00:07:48,550 私の代わりに「CDのPSET1を。」と言います 187 00:07:48,550 --> 00:07:49,640 入力します。 188 00:07:49,640 --> 00:07:53,100 面白いものは何も持っていないようにみえ 私の小さなプロンプトを除いて起こりました 189 00:07:53,100 --> 00:07:57,300 here--これは思い出させるのリナックスの方法です 私はどこに私は、だから何のフォルダは、開かれています。 190 00:07:57,300 --> 00:08:00,080 それはちょうど、明示的に私に言っています グラフィカルとは対照的です。 191 00:08:00,080 --> 00:08:05,100 私が入力した場合と、「lsと、「なぜ私は別のものを見ています すぐにプロンプ​​ト、あなたは思いますか、 192 00:08:05,100 --> 00:08:07,269 私はPSET1の内容を一覧表示するとき? 193 00:08:07,269 --> 00:08:09,310 MARIA:あなたはおそらくありません そこには何も持っています。 194 00:08:09,310 --> 00:08:09,630 DAVIDマラン:うん。 195 00:08:09,630 --> 00:08:11,510 それでは、私たちは明らかに持っていません そこには何も作成 196 00:08:11,510 --> 00:08:13,150 私はディレクトリを作成したので。 197 00:08:13,150 --> 00:08:17,690 今、私はのためのfile--を作成したい場合 例えば、私は、新しいファイルを作成することができます。 198 00:08:17,690 --> 00:08:20,190 そして私は、に行くことができます 保存してとして保存し、 199 00:08:20,190 --> 00:08:23,090 以下のように、「mario.c "あなたがやっている場合 PSET 1の標準版。 200 00:08:23,090 --> 00:08:27,610 そして、すべてのMacまたはPCのような、ちょうど フォルダ "PSET1を選択し、保存します。 201 00:08:27,610 --> 00:08:28,740 そして今、ファイルは空です。 202 00:08:28,740 --> 00:08:31,160 しかし、ここでは第二のために再度ズームインしてみましょう。 203 00:08:31,160 --> 00:08:32,470 のがここでのlsを実行してみましょう。 204 00:08:32,470 --> 00:08:34,470 今、私たちは「mario.c」を参照してください。 205 00:08:34,470 --> 00:08:37,850 >> だから、他のいくつかのコマンドがあります time--上で念頭に置いて価値があります 206 00:08:37,850 --> 00:08:41,200 明確な、またはControl-Lは、私がきたものです 打撃されました。 MKDIR我々は見てきました。 207 00:08:41,200 --> 00:08:45,240 RM我々があるだけでなく、見てきました 削除するか、ファイルを削除します。 208 00:08:45,240 --> 00:08:49,310 あなたがalso--でき用心、あなたが見れば オンラインチュートリアルでは、あなたは-rf RMます 209 00:08:49,310 --> 00:08:52,630 のが非常に一般的な方法です それで何かを持っているフォルダを削除します。 210 00:08:52,630 --> 00:08:54,280 ただ、超慎重に、スーパーです。 211 00:08:54,280 --> 00:08:58,780 -rfを再帰的意味します それが何であれ、削除 212 00:08:58,780 --> 00:09:01,150 あなたは、削除しようとしています そして、強制的に削除します。 213 00:09:01,150 --> 00:09:04,630 それが付いたフォルダだのであれば、再帰的な手段 フォルダのフォルダのフォルダ、 214 00:09:04,630 --> 00:09:05,690 それらのすべてを削除します。 215 00:09:05,690 --> 00:09:08,680 そして、強制的にいなくても行うことを意味 はい私に尋ねるか、いや、私は確信していますか? 216 00:09:08,680 --> 00:09:11,960 だから、の超危険な方法です 迅速なものの多くを削除します。 217 00:09:11,960 --> 00:09:17,210 しかしbeware--あまりにも頻繁に勇敢を行います 学生誤って言う、削除、PSET 218 00:09:17,210 --> 00:09:18,000 例えば1、。 219 00:09:18,000 --> 00:09:19,833 >> MARIA:そして、ちょうど彼らの場合 -r行う、彼らが行っています 220 00:09:19,833 --> 00:09:21,870 すべての単一のファイルについて、それらを依頼します。 221 00:09:21,870 --> 00:09:22,790 >> DAVIDマラン:あり 適度に迷惑。 222 00:09:22,790 --> 00:09:23,480 >> マリア:ええ。 223 00:09:23,480 --> 00:09:25,813 >> DAVIDマラン:だからそれが理由です 私たちの多く、自己が含まれ、 224 00:09:25,813 --> 00:09:27,070 -rf使用しての習慣にしています。 225 00:09:27,070 --> 00:09:27,861 しかし、それは危険です。 226 00:09:27,861 --> 00:09:29,010 だから、買い手はご用心します。 227 00:09:29,010 --> 00:09:31,050 そして、MVは一種のです 興味深いことに命名。 228 00:09:31,050 --> 00:09:33,600 だから、これは移動コマンドです、 これは少し奇妙な感じ 229 00:09:33,600 --> 00:09:37,260 あなたは確かにそれを使用することができますので、 ある場所から別の場所にファイルを移動します。 230 00:09:37,260 --> 00:09:39,970 例えば、私が台無しにしたとします。 231 00:09:39,970 --> 00:09:43,660 私が作成したとし PSET用の新しいファイル。 232 00:09:43,660 --> 00:09:46,320 そして、私はとしてそれを保存」greedy.c。」 233 00:09:46,320 --> 00:09:49,970 しかし、私は誤ってそれを保存するとし IDE50--で非常に私のワークスペース自体に 234 00:09:49,970 --> 00:09:51,580 そして、ではないPSET1インチ 235 00:09:51,580 --> 00:09:53,960 >> あなたは、左上の多くを見ることができます。 236 00:09:53,960 --> 00:09:55,284 「greedy.cは。」あります 237 00:09:55,284 --> 00:09:56,450 そして、いくつかのソリューションがあります。 238 00:09:56,450 --> 00:09:58,324 そこで一つは、私が使用することができます スーパーユーザーフレンドリーな方法 239 00:09:58,324 --> 00:09:59,740 ちょうどドラッグしてドロップします。 240 00:09:59,740 --> 00:10:01,910 そして、それは実際に希望 この問題を解決します。 241 00:10:01,910 --> 00:10:04,967 しかし、今日、私たちは見しようとしています もっと難解だが強力な方法 242 00:10:04,967 --> 00:10:05,550 これを行います。 243 00:10:05,550 --> 00:10:07,880 だから、私はPSET1に「LS」を見てみましょう。 244 00:10:07,880 --> 00:10:09,690 そして、私は唯一の "mario.c」を参照してください。 245 00:10:09,690 --> 00:10:13,450 私が先に行くと、やってみましょう "CD .."。 246 00:10:13,450 --> 00:10:15,320 だからCDは再び変更ディレクトリです。 247 00:10:15,320 --> 00:10:18,130 ".."しかし、何を意味しますか? 248 00:10:18,130 --> 00:10:21,100 前回私が言った「CD PSET1に入るPSET1」。 249 00:10:21,100 --> 00:10:24,360 私は "CD .."と言うときに、私は何をやっていますか? 250 00:10:24,360 --> 00:10:24,910 後方。 251 00:10:24,910 --> 00:10:25,150 うん。 252 00:10:25,150 --> 00:10:26,750 >> だから、いわゆる親になるだろう。 253 00:10:26,750 --> 00:10:29,730 同様に、1レベル上を行きます フォルダの外に出ました。 254 00:10:29,730 --> 00:10:30,500 だから入力してください。 255 00:10:30,500 --> 00:10:31,900 そして実際、それが何をしたかに見えます。 256 00:10:31,900 --> 00:10:37,070 それだけではなく、ワークスペースに私を移動しました ワークスペースにあるPSET1、へ。 257 00:10:37,070 --> 00:10:39,710 そして今、私は「LS」と入力した場合、 ものの全体の束があります。 258 00:10:39,710 --> 00:10:41,650 「greedy.c」があるで。 259 00:10:41,650 --> 00:10:48,720 だから今私は、文字通りにMVを使用してみましょう PSET1に "greedy.c」に移動。 260 00:10:48,720 --> 00:10:51,120 だからLinuxの多くのコマンド まさにこのように動作します。 261 00:10:51,120 --> 00:10:54,470 彼らは、引数を取りませんまたはそれらは1を取ります 引数またはそれらは2つのコマンドラインを取ります 262 00:10:54,470 --> 00:10:55,449 引数など。 263 00:10:55,449 --> 00:10:57,240 この場合には、です 文字通り何をしています 264 00:10:57,240 --> 00:11:01,670 それはsuccinctly--いえ、言います PSET1にgreedy.c移動。 265 00:11:01,670 --> 00:11:02,310 入力します。 266 00:11:02,310 --> 00:11:03,310 何も起こらないようで。 267 00:11:03,310 --> 00:11:06,180 私は再びlsコマンドを実行した場合でも、貪欲がなくなっています。 268 00:11:06,180 --> 00:11:12,437 そして、私は「CDのPSET1」を行うと、入力し、 LSは再び、今では適切な場所にあります。 269 00:11:12,437 --> 00:11:14,270 さておき、のためかのように いくつかは、特にreason-- 270 00:11:14,270 --> 00:11:16,194 あなたが断続している場合 ネットワークの接続性 271 00:11:16,194 --> 00:11:18,360 またはあなたの周り歩いています あなたのラップトップの蓋付きのキャンパス 272 00:11:18,360 --> 00:11:20,180 閉じられた後、それを開きます もう一度とワークスペース 273 00:11:20,180 --> 00:11:21,730 やや同期、大したことないからと思われます。 274 00:11:21,730 --> 00:11:23,646 ちょうどあなたのブラウザをリロード 窓、それはする必要があります 275 00:11:23,646 --> 00:11:26,339 再同期するように左側 ファイルブラウザが正確に見えます 276 00:11:26,339 --> 00:11:27,380 ターミナルウィンドウのように。 277 00:11:27,380 --> 00:11:27,921 心配しません。 278 00:11:27,921 --> 00:11:31,460 疑わしい場合には、そのように、ページをリロード 限り、あなたはすでにファイルを保存してきたように。 279 00:11:31,460 --> 00:11:31,960 OK。 280 00:11:31,960 --> 00:11:34,710 だから、mvはまた、ファイルの名前を変更するために使用することができます。 281 00:11:34,710 --> 00:11:36,760 そしてのは、見てみましょう ここで、この最後のコマンド。 282 00:11:36,760 --> 00:11:39,950 だからsuppose--これがあります スーパー共通の、あまりにも、早い段階で。 283 00:11:39,950 --> 00:11:46,400 一部の学生は時々ファイルを作成します 呼ばれる、のは、別の何say--てみましょうか? 284 00:11:46,400 --> 00:11:47,730 「WATER.C。」のように 285 00:11:47,730 --> 00:11:51,080 だから私はちょうどのために、叫びますよ すべて大文字でない理由はなく、。 286 00:11:51,080 --> 00:11:53,190 しかし、これではありません ファイルの正しい名前 287 00:11:53,190 --> 00:11:56,660 私たちの問題は、設定だけの理由であれば 仕様は言いませんでした 288 00:11:56,660 --> 00:11:59,430 すべて大文字のファイルを保存し、「WATER.C。」 289 00:11:59,430 --> 00:12:01,320 その代わりに、私たちは期待して 小文字で「water.c」。 290 00:12:01,320 --> 00:12:03,140 そして、実際には、これは 問題check50ため、 291 00:12:03,140 --> 00:12:04,370 あなたが行っているプログラム 問題での出会いを求めています 292 00:12:04,370 --> 00:12:07,350 自動テスト1を設定 あなたのコードの正しさ 293 00:12:07,350 --> 00:12:11,615 それができない場合は大声で叫ぶために起こっています すべて小文字で「water.c "を見つけます。 294 00:12:11,615 --> 00:12:12,712 >> だから私はこの問題を解決する必要があります。 295 00:12:12,712 --> 00:12:14,920 するので、多くの異なる方法 この、そのうちの最初の操作を行います 296 00:12:14,920 --> 00:12:18,330 Controlキーを押しながらクリックまたは右クリックすることであろう ファイル名だけ名前の変更]を変更します。 297 00:12:18,330 --> 00:12:19,740 それを行うには全く罰金。 298 00:12:19,740 --> 00:12:21,820 しかし、再び、今日、してみましょう それは少し手の込んだ行います。 299 00:12:21,820 --> 00:12:26,680 のが変更にMVを使用してみましょう 「WATER.C "" water.c。」 300 00:12:26,680 --> 00:12:30,690 だから、また、最初の引数を使用することができます 第二引数に名前を変更します 301 00:12:30,690 --> 00:12:34,455 二番目の引数はでない、ある場合 事実、フォルダまたはディレクトリ名。 302 00:12:34,455 --> 00:12:35,120 >> 大丈夫。 303 00:12:35,120 --> 00:12:39,560 そして最後に、私はではほとんどtrick--です 現時点では私のワークスペースディレクトリ。 304 00:12:39,560 --> 00:12:43,660 私はPSET一つに取得したい場合は、 私は確かに「CDのPSET1」を入力することができます 305 00:12:43,660 --> 00:12:47,260 しかし、それは「PSET1」を入力するので、面倒ですか 長いファイル名やディレクトリ名 306 00:12:47,260 --> 00:12:47,980 まだ。 307 00:12:47,980 --> 00:12:51,960 だから、非常に多くの場合、Linuxでは、どのような あなたが行うことができ、「PSE」を入力し始めるです 308 00:12:51,960 --> 00:12:56,100 ちょうど、Tabを押し、退屈としましょう コンピュータがあなたのためにそれを把握します。 309 00:12:56,100 --> 00:12:58,190 その習慣を身に取得するスーパー便利。 310 00:12:58,190 --> 00:13:01,079 あなたが持っている場合にのみキャッチです 複数のファイルやフォルダを開始 311 00:13:01,079 --> 00:13:02,870 文字 "P"を持ちますか 「PS、 "あなたが持っている可能性があります 312 00:13:02,870 --> 00:13:05,525 前に数より多くを入力します コンピュータが何をすべきかを知っています。 313 00:13:05,525 --> 00:13:06,820 >> マリア:私たちはショートカットが好き。 314 00:13:06,820 --> 00:13:08,695 >> DAVIDマラン:この意志 あなたに多くの時間を節約できます。 315 00:13:08,695 --> 00:13:11,930 そしてまた、私たちは、講義であなたを言ったように 上下、歴史の中で上にスクロールすることができ、 316 00:13:11,930 --> 00:13:15,461 最近実行された見つけるために、 コマンド、および。 317 00:13:15,461 --> 00:13:15,960 大丈夫。 318 00:13:15,960 --> 00:13:20,904 だから今、私たちの注意を元に戻すましょう 簡単なプログラム、こんにちは世界へ。 319 00:13:20,904 --> 00:13:22,195 だから我々は、まさにこのことをまとめました。 320 00:13:22,195 --> 00:13:24,050 そして今、なぜ私たちが取ることはありません データ型を見て 321 00:13:24,050 --> 00:13:26,776 そして、し、いくつかの移行 Cにスクラッチ対応するブロック 322 00:13:26,776 --> 00:13:27,400 MARIA:素晴らしいです。 323 00:13:27,400 --> 00:13:30,031 だから今、あなたが開始したこと C言語でプログラムを書いて、 324 00:13:30,031 --> 00:13:32,530 我々は話を開始するつもりです データ型と変数について。 325 00:13:32,530 --> 00:13:37,570 そのあなたので、いくつかのデータ型 今始まる知りたいでしょう 326 00:13:37,570 --> 00:13:39,400 あるものです 青色で強調しました。 327 00:13:39,400 --> 00:13:42,420 だから我々は、最初にint型を持っています これは整数を示します。 328 00:13:42,420 --> 00:13:46,075 そして、それはあなたのように、整数を保持しています 場合がありますのでguessed-- 1、2、3、 329 00:13:46,075 --> 00:13:47,950 任意の他の整数 あなたが考えることができます。 330 00:13:47,950 --> 00:13:48,730 >> DAVIDマラン:そして、陰性。 331 00:13:48,730 --> 00:13:50,220 >> MARIA:そしてまたネガティブなもの、うん。 332 00:13:50,220 --> 00:13:51,450 そして0。 333 00:13:51,450 --> 00:13:54,250 その後、我々は、フロートを持っています 浮動小数点数です。 334 00:13:54,250 --> 00:13:58,360 だから、すべての実数です それは、小数点を持っています。 335 00:13:58,360 --> 00:14:03,960 だから5.0、5.2、さらにより 小数点以下の桁、 336 00:14:03,960 --> 00:14:05,620 同様に、また、ネガティブなもの。 337 00:14:05,620 --> 00:14:07,530 その後、我々は文字で文字を持っています。 338 00:14:07,530 --> 00:14:10,240 だから私たちはについて話だと思います この講演で、今日。 339 00:14:10,240 --> 00:14:15,682 しかし、我々は、example-- Aの文字を、持っています charとして保存することができ、B、C--。 340 00:14:15,682 --> 00:14:18,390 しかし、その後、私たちはより多くのシンボルを持っています それは、charとして格納することができます。 341 00:14:18,390 --> 00:14:22,380 そして、それらは、ASCIIとして保存されます。 342 00:14:22,380 --> 00:14:25,280 >> そして、我々は、ブール値を持っています、 これはブール値です。 343 00:14:25,280 --> 00:14:29,067 そして、それらがTrueに評価したり、 それぞれFalseまたは1と0。 344 00:14:29,067 --> 00:14:31,650 DAVIDマラン:そしてそのリコール ブール値CS50ライブラリから来ています。 345 00:14:31,650 --> 00:14:33,300 だから、それがに組み込まれていません Cが、それは超便利です 346 00:14:33,300 --> 00:14:34,850 真と偽の概念を持っています。 347 00:14:34,850 --> 00:14:36,990 とにもかかわらず、あなた 楽しい事実をthink--可能性があります。 348 00:14:36,990 --> 00:14:43,700 ブール値は、技術的にどのように多くのビットを必要とし、 本当に、偽対真表現しますか? 349 00:14:43,700 --> 00:14:47,910 あなたはどのように多くのビットだと思います あなたが最大限に、必要でしょうか? 350 00:14:47,910 --> 00:14:48,790 うん、ただ一つ。 351 00:14:48,790 --> 00:14:52,077 だから、Cことが判明 あなただけの1ビットを与えることはできません。 352 00:14:52,077 --> 00:14:54,160 測定の最小単位 あなたは8です得ることができます。 353 00:14:54,160 --> 00:14:57,090 だから、彼らはあなたがしている少し無駄です 全体バイト、または8ビットを使用して、 354 00:14:57,090 --> 00:14:58,340 TrueまたはFalseを表します。 355 00:14:58,340 --> 00:15:01,807 しかし、それは、それはちょうど方法です CS50ライブラリでC言語で実装されています。 356 00:15:01,807 --> 00:15:04,890 マリア:私たちはしていて、その後のもの 広くについて話をするつもりはありません 357 00:15:04,890 --> 00:15:08,060 右ダブルnow--、 それは大きなフロートのためです。 358 00:15:08,060 --> 00:15:09,811 ロングロングとショート 整数のもあります。 359 00:15:09,811 --> 00:15:10,643 DAVIDマラン:確かに。 360 00:15:10,643 --> 00:15:13,190 PSET 1のハッカー版では、 私たちは実際に長い、長い使用しています。 361 00:15:13,190 --> 00:15:15,801 しかし、標準版のために、 それは必要ありません。 362 00:15:15,801 --> 00:15:16,300 MARIA:クール。 363 00:15:16,300 --> 00:15:17,361 OK。 364 00:15:17,361 --> 00:15:20,110 だから、あるべきですoperators-- これらのほとんどは、おそらくお馴染み。 365 00:15:20,110 --> 00:15:22,620 加えて、+。減算、 - 。 366 00:15:22,620 --> 00:15:24,070 乗算のために、我々は*を持っています。 367 00:15:24,070 --> 00:15:25,900 そうではない私たちが通常使用し、X。 368 00:15:25,900 --> 00:15:27,840 部門は、我々は、バックスラッシュを持っています。 369 00:15:27,840 --> 00:15:31,380 そして、モジュロは、私たちの最後のオペレータであります 私たちは今の話をしようとしています。 370 00:15:31,380 --> 00:15:35,610 それは私たちがすることができ、オペレータの 除算の余りをとります。 371 00:15:35,610 --> 00:15:40,630 我々は4%を持っている場合は2、4分割されたので 2で0の残りと2です。 372 00:15:40,630 --> 00:15:41,740 だから、4%2が0です。 373 00:15:41,740 --> 00:15:42,950 4%3は1です。 374 00:15:42,950 --> 00:15:44,870 あなたが推測している可能性として4〜5%は、4です。 375 00:15:44,870 --> 00:15:48,860 これらの全てを使用する場合に覚え PEMDAS規則を使用する事業者。 376 00:15:48,860 --> 00:15:54,060 >> DAVIDマラン:あなたのであれば、明確にするために 4%2の操作を行い、なぜ正確に、その0のですか? 377 00:15:54,060 --> 00:15:57,480 >> MARIA:4で割ったので 2 0 2で、余り。 378 00:15:57,480 --> 00:16:00,752 だから、剰余は私たちのように、その残りを与えます 除算の結果に反対しました。 379 00:16:00,752 --> 00:16:02,960 DAVIDマラン:そして実際、 私たちは、この便利を見つけることができますどのような 380 00:16:02,960 --> 00:16:05,640 以下のためのいくつかの問題で、それはあります それは、必ずしも1ではありません 381 00:16:05,640 --> 00:16:08,040 あなたが持っているしたい場合 自分自身を制限する効果 382 00:16:08,040 --> 00:16:10,720 番号の範囲に 何かを通じ0のような、 383 00:16:10,720 --> 00:16:13,904 あなたの周りラップする剰余を使用することができます 以前の20億様より 384 00:16:13,904 --> 00:16:16,320 または40億価値こと 私たちは、講義での話をしました。 385 00:16:16,320 --> 00:16:16,870 >> マリア:ええ。 386 00:16:16,870 --> 00:16:19,429 とにも私達はかもしれない「貪欲」です。 387 00:16:19,429 --> 00:16:21,345 DAVIDマラン:はい、で 問題は、同様に、1を設定します。 388 00:16:21,345 --> 00:16:22,520 マリア:ええ、素晴らしいです。 389 00:16:22,520 --> 00:16:24,340 DAVIDマラン:良いヒント。 390 00:16:24,340 --> 00:16:25,750 MARIA:申し訳ありません。 391 00:16:25,750 --> 00:16:28,590 ブールはそうexpressions-- ブール演算子の場合、 392 00:16:28,590 --> 00:16:31,770 我々はについてのすべての話をしようとしています これらのことから、あなたはここを参照してください。 393 00:16:31,770 --> 00:16:35,310 だから今、私たちは2を持っています 等号はイコールにリストされています。 394 00:16:35,310 --> 00:16:38,650 だから、それらは、比較のためのものです。 395 00:16:38,650 --> 00:16:40,830 これまでのところ、私たちは、1つは等号を見てきました。 396 00:16:40,830 --> 00:16:44,870 我々が割り当てたときです 変数に値。 397 00:16:44,870 --> 00:16:50,160 だから我々は、その後、int型のn = 5見てきた場合 私たちは、変数nに5を割り当てました。 398 00:16:50,160 --> 00:16:55,600 しかし、我々はのために==を使用する場合 比較は、我々があれば、n個の== 5を確認することができます。 399 00:16:55,600 --> 00:16:58,310 N == 5あれば、それは本当です。 400 00:16:58,310 --> 00:17:01,950 >> だからブール演算子 基本的に、私たちを許可し、 401 00:17:01,950 --> 00:17:04,670 ブールを評価します TrueまたはFalseに表現。 402 00:17:04,670 --> 00:17:07,819 だから私たちが持っているequals--ありません 感嘆符とequals。 403 00:17:07,819 --> 00:17:14,240 だから我々はまた、Nかどうかを確認できました 等しくない5--のでN!= 5。 404 00:17:14,240 --> 00:17:17,640 より小さいか等しい、より少ないです、 より大きいか等しい、より大きい、 405 00:17:17,640 --> 00:17:20,720 し、我々は論理を持っています ANDと論理OR。 406 00:17:20,720 --> 00:17:24,060 そして、それらは、私たちを評価することを可能にします 一緒に複数のブール式 407 00:17:24,060 --> 00:17:27,930 基本的には一緒に来て 1全体のブール式。 408 00:17:27,930 --> 00:17:34,970 私たちは番号を検索したいのであれば、言います それは、5よりも大きいが、15未満 409 00:17:34,970 --> 00:17:39,810 同時に、我々が使用します nがあるかどうかを確認するために、論理AND演算子 410 00:17:39,810 --> 00:17:42,937 5より大きい&& nは15未満です。 411 00:17:42,937 --> 00:17:44,770 DAVIDマラン:そしてここで、 あまりにも、それは本当に簡単です 412 00:17:44,770 --> 00:17:47,290 早い段階での偶然 単に1つのアンパサンドを使用します 413 00:17:47,290 --> 00:17:48,572 または単一の垂直バー。 414 00:17:48,572 --> 00:17:51,280 そして、うまくいけば、コンパイラは、意志 なぜなら、彼らは実際にあなたに叫びます 415 00:17:51,280 --> 00:17:52,530 非常に異なった意味を持ちます。 416 00:17:52,530 --> 00:17:55,660 好奇心旺盛な人のために、彼らがしています ビット単位の演算のために使用さ 417 00:17:55,660 --> 00:17:57,197 個々のビットで動作します。 418 00:17:57,197 --> 00:17:58,780 しかし、あなたはここではそれらのペアをしたいです。 419 00:17:58,780 --> 00:18:01,560 そして、超重要なことです 最初の1、等号、 420 00:18:01,560 --> 00:18:05,270 等価演算子としては、これは 代入演算子に反対しました。 421 00:18:05,270 --> 00:18:08,552 >> MARIA:そして垂直バーがあります 削除と復帰の間に位置します。 422 00:18:08,552 --> 00:18:09,260 DAVIDマラン:はい。 423 00:18:09,260 --> 00:18:11,420 典型的なUSキーボードで。 424 00:18:11,420 --> 00:18:13,190 >> MARIA:うん。 425 00:18:13,190 --> 00:18:15,890 それでは、右にジャンプしましょう 条件文。 426 00:18:15,890 --> 00:18:18,300 スクラッチでは、あなたがきました すでに見た、おそらく、 427 00:18:18,300 --> 00:18:22,730 あなたができるようにするif文 何かが真であるならば、チェック 428 00:18:22,730 --> 00:18:23,660 何か他のことをします。 429 00:18:23,660 --> 00:18:28,410 だから、と思っているかもしれません あなたのスプライトがあるかどうかを確認してください 430 00:18:28,410 --> 00:18:31,410 他のいくつかのスプライトに触れます または画面の境界線。 431 00:18:31,410 --> 00:18:35,520 それから、あなたがしたかったかもしれません ゲームを終了するか、他の何かをします。 432 00:18:35,520 --> 00:18:40,000 そのための構文そう 「IF(条件)」です。 433 00:18:40,000 --> 00:18:46,820 だからあなたのスプライトが何かに触れている場合、 その後、中括弧の中にあるん。 434 00:18:46,820 --> 00:18:48,980 >> その後、我々は、if-else文を持っています。 435 00:18:48,980 --> 00:18:54,080 そうでなければ、私たちが何かを行うことができます 私たちの条件の場合 436 00:18:54,080 --> 00:18:55,870 冒頭でチェックすることは真実ではありません。 437 00:18:55,870 --> 00:19:01,530 スプライトが触れているのであれば ボーダー何かを行う他、これを行います。 438 00:19:01,530 --> 00:19:04,030 だから、そうでない場合は、他の何かをします。 439 00:19:04,030 --> 00:19:07,530 その後、我々は、このために、短い例があります。 440 00:19:07,530 --> 00:19:11,551 もしそうであれば(military_time <12)、我々 printfのしたい "おはよう!" 441 00:19:11,551 --> 00:19:13,300 それ以外の我々はするつもりです printfの "こんばんは!" 442 00:19:13,300 --> 00:19:14,860 基本的な例。 443 00:19:14,860 --> 00:19:15,680 >> DAVIDマラン:良いです。 444 00:19:15,680 --> 00:19:16,760 >> MARIA:クール。 445 00:19:16,760 --> 00:19:18,560 だから今、私たちはswitch文を持っています。 446 00:19:18,560 --> 00:19:21,960 一般缶内のステートメントを切り替えます 私たちは同じことの多くを行うことができ 447 00:19:21,960 --> 00:19:25,070 私たちは話をしたこと if文で約。 448 00:19:25,070 --> 00:19:29,440 例えば、今私たちが持っています switch文の一般的な形式 449 00:19:29,440 --> 00:19:33,870 それは、私たちが取ることができます Nと呼ばれる変数 450 00:19:33,870 --> 00:19:37,670 そして、多くのと比較 ここで異なる値、 451 00:19:37,670 --> 00:19:40,010 constant1、constant2と呼ばれています。 452 00:19:40,010 --> 00:19:41,150 我々はより多くを有することができます。 453 00:19:41,150 --> 00:19:42,930 そして、それらのケースと呼ばれます。 454 00:19:42,930 --> 00:19:46,280 >> だから我々は、スイッチを持っている場合 statement--この作品 455 00:19:46,280 --> 00:19:50,580 のみintegers--のために我々が持っています Nです。この場合の変数。 456 00:19:50,580 --> 00:19:53,840 変数nがある場合 私たちは、constant1に等しいです 457 00:19:53,840 --> 00:19:59,720 コー​​ドのいくつかのスニペットを実行します または私たちがやりたい何か。 458 00:19:59,720 --> 00:20:01,280 そして、我々は壊れます。 459 00:20:01,280 --> 00:20:04,820 だから、ブレークがあることを意味 switchステートメント 460 00:20:04,820 --> 00:20:08,120 場合実行を停止します nが、constant1に等しいです。 461 00:20:08,120 --> 00:20:09,752 して、あなたのプログラムは続行されます。 462 00:20:09,752 --> 00:20:11,835 それは外に終了します switch文とそれ'LL 463 00:20:11,835 --> 00:20:13,520 何かをし続けます。 464 00:20:13,520 --> 00:20:17,204 >> しかし、nが等しくない場合 その後constant1、constant2用ケース 465 00:20:17,204 --> 00:20:17,870 チェックされます。 466 00:20:17,870 --> 00:20:21,750 だから、nが、その他のconstant2に等しい場合 コー​​ドのスニペットが実行されます。 467 00:20:21,750 --> 00:20:23,850 そして、それは破りますよ それはそれと等しい場合。 468 00:20:23,850 --> 00:20:27,580 そして、我々はないalso--持つことができます 必ず、デフォルトのケースをthough--、 469 00:20:27,580 --> 00:20:32,290 nが等しくない場合に起こるであろう あなたがリストされているのいずれかの場合。 470 00:20:32,290 --> 00:20:35,400 そして、デフォルトの場合には、我々も 必ずしもブレークを必要としません 471 00:20:35,400 --> 00:20:39,271 switch文は知ってますので、 それはデフォルトの後に終了する必要があること 472 00:20:39,271 --> 00:20:40,270 その場合はケース。 473 00:20:40,270 --> 00:20:42,140 >> DAVIDマラン:しかし文体、 私たちは常にそこにそれを置きます。 474 00:20:42,140 --> 00:20:42,540 >> マリア:ええ。 475 00:20:42,540 --> 00:20:42,710 >> DAVIDマラン:うん。 476 00:20:42,710 --> 00:20:44,750 だから始め場合は特に、 特にうち少ない場合 477 00:20:44,750 --> 00:20:47,458 快適な、私は個人的でしょう ちょうどIFSにこだわるお勧めします 478 00:20:47,458 --> 00:20:51,564 およびIFS-よそとのif-else-IF-よそ などの場合のみ 479 00:20:51,564 --> 00:20:53,480 彼らは少しだから より簡単。 480 00:20:53,480 --> 00:20:56,142 これは素敵な最適化である、または 時には審美的にそれ 481 00:20:56,142 --> 00:20:57,350 コー​​ドをより読みやすくなります。 482 00:20:57,350 --> 00:20:59,599 そして、実際には、おそらく 我々は問題を参照してくださいよ半ば学期 483 00:20:59,599 --> 00:21:02,504 それだけで良く見える場所を設定 そして、簡単に人間が読むには 484 00:21:02,504 --> 00:21:03,670 switchステートメントを使用します。 485 00:21:03,670 --> 00:21:05,460 しかし、心配しないでください あまりにも早くこれにしがみつきます。 486 00:21:05,460 --> 00:21:05,680 >> マリア:ええ。 487 00:21:05,680 --> 00:21:08,840 あなたは、if文がたくさんある場合は、 それだけで非常に読みやすいではないかもしれません。 488 00:21:08,840 --> 00:21:10,965 それは非常に高速ではないかもしれません あなたはそれを通過するため。 489 00:21:10,965 --> 00:21:13,230 そうすることができますステートメントを切り替えます 同様に、非常に便利です。 490 00:21:13,230 --> 00:21:17,900 そしてまた、ないremember--ません そこにブレークを置くことを忘れています。 491 00:21:17,900 --> 00:21:20,330 >> DAVIDマラン:これを覚えていません。 492 00:21:20,330 --> 00:21:24,890 >> MARIA:あなたが落ちる可能性があるため 別のケースから。 493 00:21:24,890 --> 00:21:27,930 それでは、そのような場合を言わせconstant1 その中にbreak文がありませんでした。 494 00:21:27,930 --> 00:21:31,920 その後、我々はを通じて落ちる可能性があります 内側ケースconstant2。 495 00:21:31,920 --> 00:21:35,070 そして、我々は場合に行うにはしたくありません 我々はすでにケースに達したconstant1 496 00:21:35,070 --> 00:21:37,830 それは、nに等しいです。 497 00:21:37,830 --> 00:21:45,100 >> 従って、例えば、我々は変数を持っている場合 クラス番号が含まれているN、 498 00:21:45,100 --> 00:21:48,990 私たちはどのようなことを見てみたいです nが50に等しい場合、クラスは、is-- 499 00:21:48,990 --> 00:21:51,957 我々は、CS50は「印刷するつもりです コンピュータサイエンスI.の概要」 500 00:21:51,957 --> 00:21:53,040 その後、我々は破るつもりです。 501 00:21:53,040 --> 00:21:53,920 以上です。 502 00:21:53,920 --> 00:21:55,950 しかし、nが等しい場合 51に、我々が行っています 503 00:21:55,950 --> 00:21:58,494 CS51は、はじめにある「印刷します コンピュータサイエンスIIへ。 " 504 00:21:58,494 --> 00:21:59,910 その後、再び、我々は破るつもりです。 505 00:21:59,910 --> 00:22:05,080 しかし、その後、我々はすべて、61、124を置きます あなたが考えるかもしれない他の数、 506 00:22:05,080 --> 00:22:06,890 またはプログラムは行っていません それを認識する。 507 00:22:06,890 --> 00:22:09,010 だから、申し訳ありませんが、私は "、と言うだろう そのクラスに精通していません。」 508 00:22:09,010 --> 00:22:10,009 そして、それは破るために起こっています。 509 00:22:10,009 --> 00:22:12,847 DAVIDマラン:だから、本当に見ることができます ここならば、もしそうでなければ、他のアイデア。 510 00:22:12,847 --> 00:22:15,430 それはのためだけ別の構文です まったく同じ考えを表現します。 511 00:22:15,430 --> 00:22:17,690 >> マリア:その通り。 512 00:22:17,690 --> 00:22:19,480 今、私たちは私たちの三元の演算子を持っています。 513 00:22:19,480 --> 00:22:24,900 だから三項演算子は持っています 3人は、条件をparts-- 514 00:22:24,900 --> 00:22:27,220 場合何か その条件が真です、 515 00:22:27,220 --> 00:22:29,730 して、何かを行うには その条件がfalseである場合。 516 00:22:29,730 --> 00:22:33,400 だから、基本的には、参照してください。 ここではその構文。 517 00:22:33,400 --> 00:22:37,792 私たちは、疑問符を持っており、 その後the--私たちはこれを呼ぶのですか? 518 00:22:37,792 --> 00:22:38,750 DAVIDマラン:コロン。 519 00:22:38,750 --> 00:22:39,100 MARIA:コロン。 520 00:22:39,100 --> 00:22:39,599 ありがとう。 521 00:22:39,599 --> 00:22:41,880 ごめんなさい。 522 00:22:41,880 --> 00:22:45,800 それでは、私たちの例を見てみましょう 我々はthis--感を作ることができるかどうかを確認 523 00:22:45,800 --> 00:22:47,840 class_numの== 50。 524 00:22:47,840 --> 00:22:52,580 そこでここでは==私たちのブール演算子を参照してください それは変数class_numを比較 525 00:22:52,580 --> 00:22:53,100 50。 526 00:22:53,100 --> 00:22:55,150 だからclass_num店整数。 527 00:22:55,150 --> 00:22:58,180 そして、その整数の場合 その後、我々はしている、50に等しいです 528 00:22:58,180 --> 00:23:02,810 保存しようとして「デビッド・マラン」 文字列の教授の内部。 529 00:23:02,810 --> 00:23:05,912 クラス番号がない場合 同じ50、「ないデビッド・マラン」 530 00:23:05,912 --> 00:23:07,120 教授になるだろう。 531 00:23:07,120 --> 00:23:08,630 >> DAVIDマラン:ありがとうございます。 532 00:23:08,630 --> 00:23:12,110 そして、これはと等価と思われます あなたは一目見ただけで、何を、と思いますか? 533 00:23:12,110 --> 00:23:17,930 534 00:23:17,930 --> 00:23:19,960 >> マリア:私にはそれはそう if-elseステートメントのような。 535 00:23:19,960 --> 00:23:20,709 >> DAVIDマラン:うん。 536 00:23:20,709 --> 00:23:24,020 実際に、これが一種であります きれいな1ライナーの、 537 00:23:24,020 --> 00:23:27,520 そう実現するために、話すこと 正確ロジックのif-else 538 00:23:27,520 --> 00:23:29,010 しかし、1つのステップですべてをやっ。 539 00:23:29,010 --> 00:23:29,860 >> マリア:その通り。 540 00:23:29,860 --> 00:23:30,360 うん。 541 00:23:30,360 --> 00:23:33,520 その場合-else文かもしれません 多くのスペースを取ります。 542 00:23:33,520 --> 00:23:36,283 彼らはあまりにも長いかもしれません このような単純なもの。 543 00:23:36,283 --> 00:23:38,350 だから、これは非常にすることができます 簡潔で非常に素晴らしいです。 544 00:23:38,350 --> 00:23:40,880 545 00:23:40,880 --> 00:23:46,820 だから今、私たちは見に行っています 何度も何度も何かを実行し、 546 00:23:46,820 --> 00:23:50,060 そうするためにチェック 複数回の調整 547 00:23:50,060 --> 00:23:53,510 して、何かをし続けます その条件が真である間。 548 00:23:53,510 --> 00:23:56,740 だから、これは私たちをもたらします うまくしばらくループへ。 549 00:23:56,740 --> 00:23:59,270 >> 左側には、我々が持っています 私たちの最初のwhileループ。 550 00:23:59,270 --> 00:24:03,840 何かが真である間そこで、 何度も何度も何かをします。 551 00:24:03,840 --> 00:24:08,850 だから、私たちのことに気づくようにしてください 条件は、ここで一番上に検証されます。 552 00:24:08,850 --> 00:24:14,150 我々は呼んで私たちの第二loop--と一方 DO-しばらくは、私たちが何かをloop--こと、 553 00:24:14,150 --> 00:24:15,890 その後、我々は条件をチェック。 554 00:24:15,890 --> 00:24:17,980 そして、その状態であれば 真であり続け、 555 00:24:17,980 --> 00:24:20,150 我々は戻って、再びことを行います。 556 00:24:20,150 --> 00:24:23,360 だから、主な違いはどこにあります 条件がチェックされます。 557 00:24:23,360 --> 00:24:29,260 そしてコードはなることはありませんあり 条件がない場合に実行 558 00:24:29,260 --> 00:24:30,430 whileループと真。 559 00:24:30,430 --> 00:24:33,050 DO-一方で一方 ループ、我々はコードを持って 560 00:24:33,050 --> 00:24:35,380 それは、常に少なくとも1回実行されます。 561 00:24:35,380 --> 00:24:37,470 そして、しばらく条件 真であり続け、 562 00:24:37,470 --> 00:24:39,960 我々は戻って、内側に再び繰り返すことができます。 563 00:24:39,960 --> 00:24:43,625 では、なぜあなたは私たちが使用することになると思います whileループオーバーDO-whil​​eループ? 564 00:24:43,625 --> 00:24:48,221 565 00:24:48,221 --> 00:24:48,720 右。 566 00:24:48,720 --> 00:24:52,600 だから我々は、プロンプトを表示したい場合 入力のいくつかの並べ替えのためのユーザ、 567 00:24:52,600 --> 00:24:55,400 私たちはそれらを聞いてみたい場合 自分の名前を入力し、 568 00:24:55,400 --> 00:24:57,342 我々は、少なくとも一回、それらをお願いしたいと思います。 569 00:24:57,342 --> 00:24:59,050 そして彼らは、入力しない場合 その名前、私たちではありません 570 00:24:59,050 --> 00:25:00,740 再びそれらを求めるつもり 我々はすでにそれを知っているので。 571 00:25:00,740 --> 00:25:02,656 しかし、彼らは入力しない場合 その名前、またはそれらは、もし 572 00:25:02,656 --> 00:25:05,787 何かを入力します。 明らかではない名前、 573 00:25:05,787 --> 00:25:08,120 我々はまだ続けたいです 自分の名前のためにそれらを求めます。 574 00:25:08,120 --> 00:25:10,710 >> DAVIDマラン:そして講演で、私たちはいずれかを持っていました 取得正の整数で、このような 575 00:25:10,710 --> 00:25:13,550 たとえば、には何もありません あなたも持っていないので、最初に確認してください 576 00:25:13,550 --> 00:25:14,190 int型を頂いております。 577 00:25:14,190 --> 00:25:16,680 だから我々はthis--をしたいです user--からint型を取得します 578 00:25:16,680 --> 00:25:18,860 おそらく、それをチェックし、 何度も何度も何度も。 579 00:25:18,860 --> 00:25:21,030 >> マリア:その通り。 580 00:25:21,030 --> 00:25:22,060 loops-- OKの場合。 581 00:25:22,060 --> 00:25:25,842 ループのために私たちはほとんど行うことができことができます まったく同じこと、同様に。 582 00:25:25,842 --> 00:25:27,300 それは実際にまったく同じことです。 583 00:25:27,300 --> 00:25:30,190 だから、何もありません あなたは、forループを使ってできること 584 00:25:30,190 --> 00:25:32,840 あなたがことができないであろうこと 一方、ループを実行します。 585 00:25:32,840 --> 00:25:36,900 しかし、ループに少し見えるかもしれません もう少し構文的に複雑 586 00:25:36,900 --> 00:25:39,730 彼らが持っているので、 三つの部分内部のもの 587 00:25:39,730 --> 00:25:42,990 直前でした 一方、ループと条件。 588 00:25:42,990 --> 00:25:48,260 そのあなたの海だから最初の部分、 左端、我々が持っている "int型ドワーフ= 0" 589 00:25:48,260 --> 00:25:51,490 だから、これはどこにある我々 私たちの変数を初期化します。 590 00:25:51,490 --> 00:25:55,210 >> その後、我々は、セミコロンを持っています "ドワーフ<7" 591 00:25:55,210 --> 00:25:57,100 だから、これはどこに出ています 状態は実際にあります。 592 00:25:57,100 --> 00:26:00,170 だから、我々が持っているであろうものです しばらくだけ入れloop-- 593 00:26:00,170 --> 00:26:01,880 「ドワーフが7. <ながら " 594 00:26:01,880 --> 00:26:05,380 ここでは、それはに行きます 私たちのforループの真ん中。 595 00:26:05,380 --> 00:26:07,190 だから「dwaves <7 " 596 00:26:07,190 --> 00:26:11,350 そして、私たちの最後の部分は「ドワーフ++」であります これは私達が私達の変数を更新場所です。 597 00:26:11,350 --> 00:26:15,470 だから、重要なこと 実現するためには、このことです 598 00:26:15,470 --> 00:26:22,010 ループのためにこれを通過しようとしています 7回と7回実行。 599 00:26:22,010 --> 00:26:24,020 だから我々は7を持っています ドワーフは、彼らがすべてです 600 00:26:24,020 --> 00:26:26,020 私はここにいるよ」、と言うつもり あなたを助けるために、白雪姫 " 601 00:26:26,020 --> 00:26:28,860 彼らは準備ができているので、 白雪姫を支援します。 602 00:26:28,860 --> 00:26:33,600 >> ループは、我々が行っているだろうがと 初期化と更新 603 00:26:33,600 --> 00:26:37,490 ない状態の内部には、再び、しかし、 前またはwhileループ内のいずれか 604 00:26:37,490 --> 00:26:40,210 ていることを確認するためにwe--理由 私たちは常にそれらの部品が必要です。 605 00:26:40,210 --> 00:26:42,835 だから我々は持っていることを確認します 彼らは、我々はまだそれらを追加しましたでしょう 606 00:26:42,835 --> 00:26:44,580 だけでは括弧の中、上。 607 00:26:44,580 --> 00:26:47,288 >> DAVIDマラン:だから、それはlike--見えます 講義では、例えば、 608 00:26:47,288 --> 00:26:50,250 私はほとんど常に、のように、私を使用して、 nと、かなり退屈な変数。 609 00:26:50,250 --> 00:26:53,050 あなたがより多くを使用することができますように見えます 巧みあまりにも、変数の命名。 610 00:26:53,050 --> 00:26:56,300 >> マリア:ええ、それは実際には非常にうれしいです もう少し説明的な変数を使用します 611 00:26:56,300 --> 00:26:59,400 他の誰かがいる場合は特に理由 あなたのcode--を読ん多分あなたはしている年生 612 00:26:59,400 --> 00:27:00,940 またはあなたが協力している場合 somebody--と 613 00:27:00,940 --> 00:27:03,481 あなたは、ことを確認する彼ら 何をやっている理解しています。 614 00:27:03,481 --> 00:27:05,750 615 00:27:05,750 --> 00:27:06,400 >> OK。 616 00:27:06,400 --> 00:27:11,435 だから、これは非常にfunky--ものです ループの内側のforループ。 617 00:27:11,435 --> 00:27:13,060 我々は前にこれを見てきた場合、私は知りません。 618 00:27:13,060 --> 00:27:13,830 おそらくありません。 619 00:27:13,830 --> 00:27:17,750 しかし、我々は実際にthis--を持つことができます だからではなく、ループのループ。 620 00:27:17,750 --> 00:27:25,130 だから、誰もが多分歩くことをしたいん 私ここで何が起こっているのかを介して? 621 00:27:25,130 --> 00:27:28,240 622 00:27:28,240 --> 00:27:29,490 DAVIDマラン:私は刺しを取りますよ。 623 00:27:29,490 --> 00:27:29,970 MARIA:クール。 624 00:27:29,970 --> 00:27:30,636 DAVIDマラン:OK。 625 00:27:30,636 --> 00:27:34,690 だから、私たちはものを印刷したいですspoiler-- それは、右下の隅にです 626 00:27:34,690 --> 00:27:35,190 そこ。 627 00:27:35,190 --> 00:27:35,450 >> MARIA:右。 628 00:27:35,450 --> 00:27:35,710 ええ、ええ。 629 00:27:35,710 --> 00:27:38,043 >> DAVIDマラン:だから我々はちょうどました そこのサンプル出力を置きます。 630 00:27:38,043 --> 00:27:42,590 だから私はから推測することができます あなたがしている最上位のループ 631 00:27:42,590 --> 00:27:45,680 行を反復処理 最も外側のループ、いわば。 632 00:27:45,680 --> 00:27:48,107 そして、あなたは反復処理しています 最も内側のループの列。 633 00:27:48,107 --> 00:27:50,190 そして直感的に、この うまくいけば、理にかなっている必要があります 634 00:27:50,190 --> 00:27:52,070 理由の性質によって、 私たちが見てきたすべてのプログラム 635 00:27:52,070 --> 00:27:55,570 である前に、printfの、 私たちが使用している機能、最終的には、 636 00:27:55,570 --> 00:27:58,190 ものを印刷する機能を持っています ラインによって、本質的に行。 637 00:27:58,190 --> 00:27:59,960 同様に、一度あなたが出力されました 新しい行は、あります 638 00:27:59,960 --> 00:28:02,876 何も戻って倍増しないし、何かを印刷 少なくとも、画面の方が高いです 639 00:28:02,876 --> 00:28:04,530 このようなprintf関数を使用していません。 640 00:28:04,530 --> 00:28:07,750 >> だからその点で、それはなります 意味、その最も外側のループ 641 00:28:07,750 --> 00:28:10,930 行を参照する必要があります 各指定した行のため、 642 00:28:10,930 --> 00:28:13,650 あなたがしたいとしています その後、XXXXXをプリントアウトし、 643 00:28:13,650 --> 00:28:15,520 次の行、XXXXXに移動します。 644 00:28:15,520 --> 00:28:17,317 だから、行が最初に来ます。 645 00:28:17,317 --> 00:28:19,150 そして、それぞれの中 行は、あなたが列を印刷します。 646 00:28:19,150 --> 00:28:21,160 あなたはそれを行うにしようとした場合 反対、それはおそらくないだろう 647 00:28:21,160 --> 00:28:21,690 あなたが意図したとおり出てきます。 648 00:28:21,690 --> 00:28:22,190 >> マリア:ええ。 649 00:28:22,190 --> 00:28:24,950 私達はちょうどに戻ることができませんでした printf関数と前の行。 650 00:28:24,950 --> 00:28:27,658 >> DAVIDマラン:そして、何が面白いです スコープについて今日のチャットあたり、 651 00:28:27,658 --> 00:28:31,600 実際に、行がint型であるということです それは、一番上のループ内で宣言です。 652 00:28:31,600 --> 00:28:34,030 しかし、それはまだであることがわかり 内側に、いわば、 653 00:28:34,030 --> 00:28:35,982 その中括弧 直後、 654 00:28:35,982 --> 00:28:38,440 それは技術的にはないにもかかわらず、 それらの中括弧内。 655 00:28:38,440 --> 00:28:41,750 だから行がためにスコープ内にあります コー​​ドのスニペットの全体、 656 00:28:41,750 --> 00:28:44,690 ループの外側の内側の両方 そして、ループの内側の内部。 657 00:28:44,690 --> 00:28:48,050 しかし、対照的に、ここで 列は、スコープ内にありますか? 658 00:28:48,050 --> 00:28:49,810 変数の列? 659 00:28:49,810 --> 00:28:51,310 うん、内部のみのループインチ 660 00:28:51,310 --> 00:28:54,280 我々はアクセスしないので、それは大丈夫です それにその中括弧の外。 661 00:28:54,280 --> 00:28:57,280 私たちはすべてが新しいプリントアウトです そこに非常に最後の行。 662 00:28:57,280 --> 00:28:58,670 実際にはOKであるように。 663 00:28:58,670 --> 00:29:03,740 >> だから、これは効果があり、それは、のように見えます 3行4列をしています。 664 00:29:03,740 --> 00:29:04,370 >> MARIA:右。 665 00:29:04,370 --> 00:29:06,270 したがって、最初の我々の最初の行を通過します。 666 00:29:06,270 --> 00:29:10,520 そして、ちょうど私たちの最初の行に、我々が行います 最初の行の内側の4つの列。 667 00:29:10,520 --> 00:29:11,980 だから我々は、4つのXのをプリントアウト。 668 00:29:11,980 --> 00:29:15,800 そして、我々は、以来、forループを抜けることができます 我々はすでに4のXのをプリントアウトしてきました。 669 00:29:15,800 --> 00:29:17,100 そして、私たちは新しい行を印刷します。 670 00:29:17,100 --> 00:29:19,920 そして、我々が通過します さらに2つの行の同じプロセス 671 00:29:19,920 --> 00:29:21,170 3の合計を行います。 672 00:29:21,170 --> 00:29:23,530 >> DAVIDマラン:そしてそれはです注目に値します フォントのちょうどアーティファクト、事実 673 00:29:23,530 --> 00:29:25,680 そのサンプル出力 そんなに背が高いようで、 674 00:29:25,680 --> 00:29:27,520 より多くのがありますかのように 列よりも行。 675 00:29:27,520 --> 00:29:29,824 しかし、それは単にXためです それは幅よりも背が高いです。 676 00:29:29,824 --> 00:29:32,740 つまり、そこに起こっているものすべてです プラス線の間の空白。 677 00:29:32,740 --> 00:29:33,281 >> MARIA:右。 678 00:29:33,281 --> 00:29:34,792 クール。 679 00:29:34,792 --> 00:29:35,750 DAVIDマラン:すべての権利。 680 00:29:35,750 --> 00:29:39,830 だから、問題を簡単に見ると、1を設定し、 任意の質問をお受けしてから、休会? 681 00:29:39,830 --> 00:29:40,330 大丈夫。 682 00:29:40,330 --> 00:29:43,164 そこで問題に3つがあり、いずれかを設定します 主要な課題、最終的に。 683 00:29:43,164 --> 00:29:44,955 しかし、最初に、あなたが見つけることができます 問題が設定されていること 684 00:29:44,955 --> 00:29:47,900 多くのと同様の仕様、 psetこの秋には、あなたを歩くしようとしています 685 00:29:47,900 --> 00:29:50,691 いくつかのウォームアップ演習を通じて、 いくつかのリソースをあなたに指摘 686 00:29:50,691 --> 00:29:52,440 あなたがよく、または可能性があること すでに見ていません。 687 00:29:52,440 --> 00:29:54,440 例えば、CS50 ショートパンツのスイートを持っています、 688 00:29:54,440 --> 00:29:56,481 短いビデオこれは、 ないこのとは異なりますが、その 689 00:29:56,481 --> 00:29:58,460 非常に話題ですspecific-- 多分5分、 690 00:29:58,460 --> 00:30:02,360 ループの長さは10分以上 条件にまたはアルゴリズムに 691 00:30:02,360 --> 00:30:04,125 以降の詳細 高度なトピックだけでなく。 692 00:30:04,125 --> 00:30:06,000 そして、我々は一般的に埋め込みます 問題にそれら 693 00:30:06,000 --> 00:30:07,950 セットの学生ように 持つリソースを持っています 694 00:30:07,950 --> 00:30:10,840 持っているかもしれない材料を確認します すでに講義やセクションに出てきます。 695 00:30:10,840 --> 00:30:13,220 しかし、この方法は、それはより集中です 自分の指先で、より。 696 00:30:13,220 --> 00:30:15,928 >> また、問題に埋め込む傾向があります ウォークスルーと呼ばれるものを設定します。 697 00:30:15,928 --> 00:30:20,790 だから、ほとんどすべて私が行う例 講義では、ここではステージ上で、私たちも 698 00:30:20,790 --> 00:30:24,565 カメラで撮影しました より遅いを進め、 699 00:30:24,565 --> 00:30:28,760 私がより親密なウォークスルーについて そのコードの私のラップトップ、行ごと 700 00:30:28,760 --> 00:30:31,427 クラスでは、私たちはしばしばだろうとそう 何かまたは誰か流し読み 701 00:30:31,427 --> 00:30:33,260 と差し挟むます 質問に答えます。 702 00:30:33,260 --> 00:30:35,820 しかし、それは必ずしもシンクしません。 聴衆の中に皆のためです。 703 00:30:35,820 --> 00:30:38,230 だから、コードのウォークスルーを見つけることができます 例のほとんどのために 704 00:30:38,230 --> 00:30:40,950 あなたように、私たちは講義でここで行うこと 自分のペースでそれを介して歩くことができます 705 00:30:40,950 --> 00:30:43,580 巻き戻しや早送りまたは あなたが好きな場合は、完全にスキップ。 706 00:30:43,580 --> 00:30:45,356 >> 多くの場合、いくつかあります ウォームアップの質問こと 707 00:30:45,356 --> 00:30:47,105 の並べ替えをお願いします この材料を強化 708 00:30:47,105 --> 00:30:50,250 あなたが前に快適だということを確認してください あなたはPSETの残りの部分を続行します。 709 00:30:50,250 --> 00:30:51,700 そして、もちろん、 PSET自体があります。 710 00:30:51,700 --> 00:30:53,450 そして、ものの一つ 我々は非常に慎重に 711 00:30:53,450 --> 00:30:57,202 CS50に行うには、ほとんどすべてのつまらないです または知的つまらないです 712 00:30:57,202 --> 00:30:58,910 機械的なステップその あなたは何をする必要がある場合があり 713 00:30:58,910 --> 00:31:00,519 ほとんどの場合、非常によく文書化されています。 714 00:31:00,519 --> 00:31:03,560 用語の過程で、我々はよ より多くの修辞的な質問をし始めます 715 00:31:03,560 --> 00:31:06,187 以下のように、このまたはそれを行う方法を覚えていますか? 716 00:31:06,187 --> 00:31:08,520 しかし、一般的に、あなたは見つけることができます 問題セットはあなたを得ること 717 00:31:08,520 --> 00:31:10,269 力学を通じ 何かのように 718 00:31:10,269 --> 00:31:14,160 面白い、知的挑戦 最終的にあなたに生徒を残しています。 719 00:31:14,160 --> 00:31:17,390 >> ことで、Zamyla、我々へ 講演で、今日を参照し続け、 720 00:31:17,390 --> 00:31:20,190 私たちの長年のスタッフのひとつです また、ウォークスルーを保持しているメンバー 721 00:31:20,190 --> 00:31:24,520 マリオのよう​​な特定のpsetの問題に 今年水ではないものの、貪欲。 722 00:31:24,520 --> 00:31:26,540 そして、それは、それらの中です ウォークスルーその彼女は、多くの場合、 723 00:31:26,540 --> 00:31:29,450 ためのヒントやコツを提供しています あなたに言って、決して進まないようにする方法 724 00:31:29,450 --> 00:31:31,810 正確に何をすべきかが、 条件のようrather--、 725 00:31:31,810 --> 00:31:35,200 あなたが与えwill--場合、少なくとも そのようなアイデアのカップルはそれは、あなた次第です 726 00:31:35,200 --> 00:31:37,830 最終的に、決定します どのようにそれらにアプローチします。 727 00:31:37,830 --> 00:31:41,200 >> MARIA:ソートの高レベルのような 何のロジックの理解 728 00:31:41,200 --> 00:31:42,220 私たちは何をするあなたを求めています。 729 00:31:42,220 --> 00:31:42,485 >> DAVIDマラン:その通り。 730 00:31:42,485 --> 00:31:44,190 そして、実際には、Zamylaの ウォークスルーを意味しています 731 00:31:44,190 --> 00:31:46,190 頻繁に答えるために 質問を 732 00:31:46,190 --> 00:31:48,610 私は場合は特に、始めたん これらの長い仕様は、 733 00:31:48,610 --> 00:31:51,960 すべてのテキストを指定して、少し手ごわいです そして彼らはそれらを持っているイメージ。 734 00:31:51,960 --> 00:31:54,890 >> あなたが見つけることができます、だからwater.c あなたはそれを完了した後、 735 00:31:54,890 --> 00:31:56,920 実際に比較的簡単です。 736 00:31:56,920 --> 00:31:58,882 絶対にたくさんあり​​ます あなたが強打に行くの 737 00:31:58,882 --> 00:32:01,840 しようと壁にあなたの頭 それはコンパイルていない理由を把握します 738 00:32:01,840 --> 00:32:03,450 または、なぜそれが正しく実行されていません。 739 00:32:03,450 --> 00:32:05,040 しかし、あなたが終わったら、 それにしたら 740 00:32:05,040 --> 00:32:07,620 任意のと格闘いくつかの時間を費やし あなたが持っている可能性があるバグの、 741 00:32:07,620 --> 00:32:09,490 あなたはそれがだことがわかります 非常に短いプログラムです。 742 00:32:09,490 --> 00:32:11,770 それはほんの数で行うことができます コー​​ドの行は、ほとんどの 743 00:32:11,770 --> 00:32:15,030 我々は、次の場合、すでに講義でここに見てきました あなたは右のビルディングブロックを組み立てます。 744 00:32:15,030 --> 00:32:16,810 >> そして、私たちが示唆するように ここで、それは頼むために起こっています 745 00:32:16,810 --> 00:32:22,250 あなたはどのように多くの分を指定します 誰かがキャンパス内にシャワーを浴びています。 746 00:32:22,250 --> 00:32:24,779 我々は問題で指定 水の流量を設定します 747 00:32:24,779 --> 00:32:27,320 以下のような、中、低流量シャワー 多くのとなりのサインフェルドクリップのような頭、 748 00:32:27,320 --> 00:32:29,180 昨日見ましたか その反対。 749 00:32:29,180 --> 00:32:30,971 そしてあなただけの持っています 数学のビットを行うには、 750 00:32:30,971 --> 00:32:34,710 伝えるためにCを用いた演算をreally-- 私たちの水をどのように多くの、おおよそ、ボトル 751 00:32:34,710 --> 00:32:37,720 私たちがしている場合には同等です n個分のシャワーを浴びています。 752 00:32:37,720 --> 00:32:41,389 >> さて、mario.cでは、これが起こっています 少し長めのプログラムとすることができます。 753 00:32:41,389 --> 00:32:42,930 それはまだ、この長くなることはないだろう。 754 00:32:42,930 --> 00:32:45,130 わずか数行water.cよりも長いです。 755 00:32:45,130 --> 00:32:48,230 しかし、それはチャンスになるだろう 古い学校マリオを再現します 756 00:32:48,230 --> 00:32:50,670 スーパーマリオのピラミッド 兄弟またはいくつかの後続の。 757 00:32:50,670 --> 00:32:53,510 それはきれいに見えるようにするつもりはないです またはそこにそれと同じくらいカラフル。 758 00:32:53,510 --> 00:32:56,468 私たちはほんの少しハッシュタグを使用するつもりです 私たちは、画面上にここに持っているように 759 00:32:56,468 --> 00:32:58,120 ASCIIテキストを使用。 760 00:32:58,120 --> 00:33:00,362 しかし、それは同じ考えを近似します。 761 00:33:00,362 --> 00:33:02,570 そして、それはなるだろう 一目見ただけでそれを行使 762 00:33:02,570 --> 00:33:04,720 ただかなりsimple--ようです 簡単なピラミッドを印刷します。 763 00:33:04,720 --> 00:33:07,345 しかし、カップルの特徴があります ここで興味深いこと。 764 00:33:07,345 --> 00:33:12,400 の右端ことに注意してください ピラミッドは、実際には幅2を持っています。 765 00:33:12,400 --> 00:33:14,570 だから、同じ2があります 高列、その 766 00:33:14,570 --> 00:33:16,804 それが少し必要になります 作るために思考のビット 767 00:33:16,804 --> 00:33:19,720 あなたは正確に正しいことを得ることを確認 ただ完全に傾斜したに反対 768 00:33:19,720 --> 00:33:20,220 ライン。 769 00:33:20,220 --> 00:33:23,340 だから、コーナーケースのビットです しかし、実際のゲームと一致します。 770 00:33:23,340 --> 00:33:27,610 >> そしてそれはまた、最初は非自明です ホワイトスペースを印刷する方法を一目。 771 00:33:27,610 --> 00:33:29,430 だから私は見たとき サンプル出力here-- 772 00:33:29,430 --> 00:33:32,440 それはspec--でもこれだけです 長方形のようなルックスの種類、 773 00:33:32,440 --> 00:33:35,120 しかし、対角 矩形は、切り落とされ​​ています 774 00:33:35,120 --> 00:33:37,320 そして、それはちょうど空白は、いわばです。 775 00:33:37,320 --> 00:33:40,100 そしてそう頻繁に尋ね 質問はここにも、常に、 776 00:33:40,100 --> 00:33:43,302 どのように私は、ハッシュタグを移動します 右にオーバー? 777 00:33:43,302 --> 00:33:44,760 またはどのように私は空白を印刷できますか? 778 00:33:44,760 --> 00:33:46,860 そして、それは実際に簡単です ほとんどの学生が考えるより。 779 00:33:46,860 --> 00:33:47,360 右? 780 00:33:47,360 --> 00:33:51,620 あなただけのことで、視覚的にそれを近似することができます 一度か二度、スペースバーを打ちます 781 00:33:51,620 --> 00:33:52,700 3回。 782 00:33:52,700 --> 00:33:56,260 >> だからにもかかわらず、printf関数とほぼたち 常に文字列または整数を印刷 783 00:33:56,260 --> 00:33:59,950 またはhello "のような単語、 世界 "や単語の一連の、 784 00:33:59,950 --> 00:34:03,560 あなたはまた、単に印刷することができます 引用符、スペース、引用終わり。 785 00:34:03,560 --> 00:34:06,320 そして、それは実際に得られます あなたそこにホワイトスペース。 786 00:34:06,320 --> 00:34:08,330 だから、心の中でそれを維持し、 これを考え過ぎるしないでください。 787 00:34:08,330 --> 00:34:10,570 あなたは本当にする必要があります 行によって行毎に決め、 788 00:34:10,570 --> 00:34:14,280 ないあなたの例とは異なり、 それらの前に、どのように多くの瞬間 789 00:34:14,280 --> 00:34:18,420 列が空白であるべきであり、 どのようにそれらの多くは、ハッシュタグでなければなりません。 790 00:34:18,420 --> 00:34:21,560 それは少し時間がかかりますが、それはです ある種の最終的な論理パズル。 791 00:34:21,560 --> 00:34:22,060 >> マリア:ええ。 792 00:34:22,060 --> 00:34:25,060 しかし、行ごとに行くのロジック ここで非常に有用であることが起こっています。 793 00:34:25,060 --> 00:34:25,810 DAVIDマラン:うん。 794 00:34:25,810 --> 00:34:28,976 私は、サンプルコードでは、あなたもgave--思います それは完全なプログラムではありませんでしたが。 795 00:34:28,976 --> 00:34:34,247 あなたはまだint型とメイン必要 ボイドとの#include stdio.hに、 796 00:34:34,247 --> 00:34:35,580 講義から多くのもの。 797 00:34:35,580 --> 00:34:37,629 しかし、ビルディングブロック そこにあるように見えます。 798 00:34:37,629 --> 00:34:39,920 そして、最後に何かあり もう少しのアルゴリズム。 799 00:34:39,920 --> 00:34:43,210 だから、いつでもあなたのことが判明 CVSや任意のコンビニエンスストアに行きます 800 00:34:43,210 --> 00:34:47,810 そして、誰かがあなたを手で 変化としてレジ法案やコイン、 801 00:34:47,810 --> 00:34:50,620 それは彼ら、人間ことが判明し、 彼らはそれを知っているか否かを問わず、 802 00:34:50,620 --> 00:34:53,300 おそらく何を使用しています 貪欲アルゴリズムと呼ばれます、 803 00:34:53,300 --> 00:34:58,170 それによってあなたが負っている場合、たとえば、$ 21 変化何らかの理由理由 804 00:34:58,170 --> 00:35:01,580 あなたは非常に安価なものを買って CVSでの非常に大きな手形で、 805 00:35:01,580 --> 00:35:05,910 かどうかは本当に迷惑になります レジ係はあなたに21枚のシングルを与えたか、悪化 806 00:35:05,910 --> 00:35:07,629 まだ、硬貨の全体の多く。 807 00:35:07,629 --> 00:35:10,670 むしろ、合理的な人は何ですか おそらく何をするつもりは、彼らがつもりです 808 00:35:10,670 --> 00:35:14,224 $ 20-、次に$ 1札などをつかむために その場合の手あなただけの2法案。 809 00:35:14,224 --> 00:35:17,390 MARIA:だから彼らは最小限にするために探しています 彼らはあなたに戻って与える変更。 810 00:35:17,390 --> 00:35:17,850 DAVIDマラン:その通り。 811 00:35:17,850 --> 00:35:19,540 そして、同様にコインと同じ契約。 812 00:35:19,540 --> 00:35:23,040 あなたが負っている場合は、$ 0.50と言います うまくいけば、あなたは50ペニーを望んでいません。 813 00:35:23,040 --> 00:35:25,500 代わりに2たい たとえば四半期、。 814 00:35:25,500 --> 00:35:27,540 さて、これは仮定しません レジ係があることを 815 00:35:27,540 --> 00:35:29,940 そのすべての宗派の十分な 彼または彼女はあなたを与えたいと思うかもしれません。 816 00:35:29,940 --> 00:35:32,148 しかし、我々はあなたが負うことになります 問題のように多くの。 817 00:35:32,148 --> 00:35:35,590 そして目標は、最終的にあります Cコードで貪欲なアルゴリズムを実装します。 818 00:35:35,590 --> 00:35:37,344 したがって、ユーザーが許可され どのくらいで入力します 819 00:35:37,344 --> 00:35:40,510 変更は、彼または彼女は、ドルを負っています セント、浮動小数点のいくつかの種類 820 00:35:40,510 --> 00:35:41,590 おそらく値。 821 00:35:41,590 --> 00:35:45,530 そして、あなたが数学を行うことがあり、 よく、アルゴリズムを見つけ出します、 822 00:35:45,530 --> 00:35:49,020 私はどのように多くのコインを与えることができます あなたはあなたを与えるために、最小限 823 00:35:49,020 --> 00:35:50,270 変化の正確な量。 824 00:35:50,270 --> 00:35:53,470 しかしがあるように起こっています ここではいくつかのトリッキーな部分は、右? 825 00:35:53,470 --> 00:35:56,236 全体があります同様に 不正確の問題。 826 00:35:56,236 --> 00:35:56,860 マリア:その通り。 827 00:35:56,860 --> 00:35:59,114 だから、浮動小数点 値が不正確を持っています。 828 00:35:59,114 --> 00:36:00,780 我々は、今日の講義でこのことについて話しましたか? 829 00:36:00,780 --> 00:36:02,340 >> DAVIDマラン:私たちはやりました 講義の最後の時間。 830 00:36:02,340 --> 00:36:03,506 私たちは、不正確について話しました。 831 00:36:03,506 --> 00:36:08,840 そして、あなたはユーザーをだますする必要はありません 彼または彼女が負っているどのくらいの変化。 832 00:36:08,840 --> 00:36:11,290 だからウォークスルーで 問題は、仕様を設定し、 833 00:36:11,290 --> 00:36:15,990 のように、最終的には、いくつかの考えを与えます あなたはそれらの不正確さを軽減する方法 834 00:36:15,990 --> 00:36:17,280 エラー、潜在的に。 835 00:36:17,280 --> 00:36:21,050 それはのために、確かに、回避可能です 私たちが話している入力。 836 00:36:21,050 --> 00:36:23,590 そして、実際には、pennies-- 多分私達はZamylaに延期しますよ、 837 00:36:23,590 --> 00:36:25,136 私はそこのトリックのために、と思います。 838 00:36:25,136 --> 00:36:27,760 だから最終的に、あなたが見つけることができます 問題の進行今週、 839 00:36:27,760 --> 00:36:30,700 かなり小さいの最初、 次いで中、少し大きいです。 840 00:36:30,700 --> 00:36:33,200 それらのすべては、建物を使用 先週からのブロック、 841 00:36:33,200 --> 00:36:35,280 このスーパーセクションから、 問題セットの仕様 842 00:36:35,280 --> 00:36:36,710 無数のリソースであなたを置きます。 843 00:36:36,710 --> 00:36:41,000 しかし、まだ、すべての苦労であれば、 特に少ない快適なものの中 844 00:36:41,000 --> 00:36:42,917 事前の背景と、 営業時間に来て 845 00:36:42,917 --> 00:36:44,958 月曜日と火曜日にと 水曜日と木曜日。 846 00:36:44,958 --> 00:36:46,950 経由で議論CS50に行きます もちろんのウェブサイト、 847 00:36:46,950 --> 00:36:49,080 これを介して、あなたはチャットすることができます スタッフやクラスメートと。 848 00:36:49,080 --> 00:36:51,670 >> しかし、最終的に、私は思います 最高のアドバイスはただ早期開始されます。 849 00:36:51,670 --> 00:36:54,711 それはあなたのクラスのようなものではありません 水曜日にのpsetを開始する必要があります 850 00:36:54,711 --> 00:36:56,640 夜、または悪化木曜日の夜。 851 00:36:56,640 --> 00:36:59,067 >> マリア:私の最高のアドバイスがあります 月曜日までに開始されているします。 852 00:36:59,067 --> 00:36:59,900 DAVIDマラン:月曜日。 853 00:36:59,900 --> 00:37:02,490 だから、無already--開始していない場合。 854 00:37:02,490 --> 00:37:04,732 しかし、たとえそうでない場合は月曜日、その後火曜日。 855 00:37:04,732 --> 00:37:05,690 より良い早く。 856 00:37:05,690 --> 00:37:08,605 そして、それは理由です コー​​スは、非常に多くの後半の日を持っています 857 00:37:08,605 --> 00:37:10,535 あなたのビットを与えるために 心理的な圧力 858 00:37:10,535 --> 00:37:13,684 以前の開始が、まだできるようにします 物事は時間がかかるときのものが滑ります 859 00:37:13,684 --> 00:37:14,350 あなたが予想よりも。 860 00:37:14,350 --> 00:37:17,950 >> MARIA:そして、あなたはを利用したいです あなたができる限りの営業時間は、あまりにも。 861 00:37:17,950 --> 00:37:20,291 >> DAVIDマラン:ご質問? 862 00:37:20,291 --> 00:37:20,790 大丈夫。 863 00:37:20,790 --> 00:37:22,930 さて、なぜ私たちはここに延期ませんか? 864 00:37:22,930 --> 00:37:23,487