[MUSICのPLAYING] これはCS50--ハーバードあります 大学の紹介 知的に コンピュータサイエンスの企業 そして、プログラミングの芸術。 そして、私の名前はデビッド・マランであり、 私はちょうど今朝考えていました、 驚くほど、今日20年、それをされています 君たちが今どこにいるので、私は最後に座っていました。 それは1996年でした。 私は二年生だった、と私は取っていました 非常に初めてCS50。 そして、私も神経を得ていませんでした 年生、それを自分自身を取るために、 一部のための時間。 私にコンピュータサイエンス 種類のMEH、のようでした。 私は成長しているオタクのビットでした アップが、私は本当にしませんでした いかなる知的を持っています 見えるものに興味 ただの全体の束であることを すべての時間をプログラミングする人。 そして、私は正直に言うと怖がっていました。 もちろん、コンピュータサイエンスより 一般的に持っていたし、ある程度、 まだフィールドのこの評判を持っています 私たちのためだけで非常に多くの場合、注意してください それに慣れていないし、それがわかりません。 私が買い物をするまで、それは本当にありませんでした このクラスその年生fall-- その後も、私は入学します professor--理由 私の最初の指導者の1、ブライアン 今Princeton--でカーニハン 私は失敗し、クラスパスを取ることができました。 そして実際、それが理由です 今日我々ができるようにと奨励します このクラスを取るために学生がUNSAT /座っていました。 だけにして、によって 学期末 私はこれ、すごい、のように実現しませんでした このようななじみのないフィールドではありませんでした。 実際、これがありました 非常にフィールドに権限を与えます、 そしてより多くのエキサイティングな、 特に後に、 私は中にコースを取ったとして、 演劇芸術101とラテンA そしてその後、最終的に 大学院の考古学、 私は本当に見始めました このフィールドの交点、コンピュータ 科学、人文科学と、 自然科学、芸術、医学、 等が挙げられます。 そして、そのためには、これだけ何です コンピュータサイエンスに関するきちんとしました 最終的には、として私たちは、あなたがいただければ幸いです see--その適用であります これらの他の分野、そしてどのようにすることができますへ 今日のいくつかを取り、学期の アイデアや実践的なスキル バック独自のドメインに、 そして実際にこの交差点を探ります リベラルアーツと科学の。 あなたのだから73%、最後の場合 今年は、任意の指標です、 前のCSのコースを取ったことがありません。 だから私のように、あなたが、場合 少し感じ 怖い、または率直に言って、あなたがないです あなたもここにいる理由を本当に確認してください。 おそらく、あなたはいくつかの続き 今サンダースに渡って友人。 それは完全に罰金です。 ここでの目標は、フックすることです あなたとあなたを安心させるために そのあなたが見なければ 左と右に、 あなたがクラスメートを参照してくださいするつもりです ほとんど、あるいは同じくらいの経験など あなた自身が持っているかもしれません。 そして実際、私たちは共有します いくつかの統計以降の今日 どのような人口統計についての クラスは、通常、のように見えます。 コメントを追加しましたreassurance--この私たちのような 私はもちろん引き継いだので意味ですか 何年かago--で コー​​スのシラバス そのthis--が何であるかを最終的に このコースで事項 そんなにあなたが終わるところではありません あなたのクラスメートからの相対まで、 11週ではなく、どこの終わり 学期は、自分自身に対して終わります 週0で、あります 私たちは今日ここにある場所。 そして、これは私が実現するものです すべてのそれらの年前。 そして、私は多くのを知っています クラスはこれを言うが、それはです コンピュータサイエンスは特にそう。 一日の終わりに、このフィールド それが私にあったように不慣れです そしてあなたにかもしれないが、実際にあります ただ問題解決について。 そのようなものとして、これを持っています 他のフィールドを取得するために適用可能。 そして実際に、私たちがしようとした場合 これが何を意味するのか蒸留するために、 これは問題解決であります その本質的に、私はあえて。 何でもそれはとてもinput--あります あなたが解決しようとしているということです。 うまくいけば、ある出力は、あります その問題の解決策。 そして、私たちと同じように コンピュータサイエンスで言います、 このブラックボックスがあります あなたは必ずしもない真ん中 それがどのように動作するかを気にする必要があります。 あなた自身は、最終的にかもしれません その箱の中に何を実装。 しかし、今日の目的のために、より 一般的に生活の中で、あなたが気にすべての これらの問題を解決してしまうことがあります。 そして、このコースは何ですか 最終的には約模索しています の交差点 これらの入力および出力、 これらは、いわゆる アルゴリズム、我々はすぐにわかりますように、 それが何であるかを実装します 下にあり、フード。 しかし、これらの入力およびこれらoutputs-- ことは、実際に何を意味するのでしょうか? まあ、一日の終わりに、我々は必要 情報を表すいくつかの方法。 これは、コンピュータでは特に真実であります それのように空想と複合体として 見えるかもしれませんが、かなりダムデバイスです。 それはからかどうかelectricity--取り ケーブルまたはinput--としてバッテリー そしてそれは、いくつかを生成します 画面上preprogramed回答。 しかし、どのように我々は、から入手できますか そこに最初から最後まで? まあ、解決すべき問題は何ですか? まあ、多分私達は、AT、かもしれません いずれの学期の開始、 出席を取るしよう このような部屋インチ だから私は1、2、3のように行う可能性があります。 それとも、私はそれをしなかった場合 並べ替えを追跡するために myself--のthings--を追跡するために 私はすぐに指を使い果たす可能性があります。 だから、僕はハッシュmarks-- 1になるかもしれません 人、2つ、3つ、4つ、5、6、 7つ、8つ。 そして、私たちのすべては、おそらく持っています かどうかをあなたの手で、これを行って または紙の上に。 そして、これはちょうど、実際にあります 単項notation--と呼ばれるもの どこに一つだけの手紙を持っている場合 あなたのアルファベットの、1またはハッシュ マークこの場合は、すべてのための あなたがカウントする入力、 あなたはこれらのいずれかを下に置く必要があります これらのマークのいずれかをletters--。 大丈夫。 それはすべての罰金と良いことだと すべてが複雑ではありません。 しかし、コンピュータは、すべてではありません そのはるかに複雑。 確かに、あなたのほとんどは、おそらく あなたが本当にいませんでした場合でも知っています 、これが何を意味するのかと考えています コンピュータはゼロのみを理解します いわゆる二元系ones--。 私たち人間は、対照的に、そのようにしています はるかに洗練されたものであれば 私たちは、ナインを通じてゼロを理解するように。 しかし、バイナリは最初に、であっても 一見、すべてではないというおなじみの、 それはそれだけのシステムのようなものだが判明します そして、我々はすでに知っているアイデア。 だから例えば、これを考慮してください。 これは、シンボルのちょうどシーケンスです。 そして、あなたのすべて、時 おそらく、それをちらっと見 123--何も考えていません そこに本当に面白いです。 しかし、なぜそれがこの数、123ですか? これらは、ちょうど上のグリフです screen--だけパターン その誰かが描かれたか、入力した可能性があります。 しかし、あなたは私に似ている場合、あなた おそらく小学校から覚えています ソートのがあることを ここでは、列または場所。 1の場所とあります 10の位と百の位。 これは123であることを理由に 3つの記号だけではなく、パターン である、なぜならもちろん、私たちの場合 、百の位に1を持っています あなたは、100倍の1の計算を行います そしてその後、10の代わりに2。 だから、10回2だし、その後で3 1の場所、それが1回3です。 そして、あなたはの、それらのすべてを追加するとき もちろん、あなたが100プラス20プラス3を​​得ます。 だから我々は単にパターンで開始しました symbols-- alphabet--の しかし、我々は上に意味がマッピングされました それこれらの列を介​​して。 まあ、それはことが判明します コンピュータは本当にありません あなたと私からすべてが異なります。 しかし、その代わりに10の累乗を使用するのではなく、 そう1、10、100、1000、speak--します 万場所とそう 実際に彼らforth-- ただの力を使用2-- そのように一2,4、および 我々はより多くの数字を入れた場合、8、16、 32、64、128、等。 だから、これはどのようにコンピュータであり、 番号0を表すことになり、 ちょうど私たち人間のように。 0、0、0--とあなたはおそらく推測することができます 0と1のどのようなパターン、 コンピュータできる場合にのみ 0話したり1--何 パターンが表現するために起こっています 数私たち人間は、1として知っていますか? 0、0、1 Yeah--。 大丈夫。 だから、0、0、1、我々が表す方法です 1、あなたはその後、傾斜する可能性があります あなたが持っている場合は、数2を表現します 4の場所と2の場所 1場所として、あなたも、言うかもしれないが、 我々は1の位に1を持っている場合、 そして今、私たちがしたいです あなたがかもしれない、2までカウント これを行うと、ゼロになるこのままにしておきます。 しかし、もちろん、これはどのようにではありません 十進法はどちらか動作します。 あなたはに数字を置く場合 これらの列の両方、 あなたは、算術演算を行うようになってきました。 それでは、数は私がやりました 偶然だけで表現しますか? だからそれは、3です2回1プラス1理由 回1は、もちろん、私たち3を与えます。 だから、これは2になります。 ビットは一種の0をとして、いわば、フリップ はるかに超える9役割のように、1になります あなたは1を運ぶときには0になります。 そして、これは当然の3になります。 別の興味深いですFour-- ものはロールオーバーところ、たまたま あなたはいわば、1を運びます。 これは、もちろん、4です。 しかし、今早送りであれば、 行く最大の番号は何ですか コンピュータが表すことができることは? だから、このケースでちょうど7は、右ですか? あなたは4人に1人を持っているので、 2で1、1で1。 だから、4プラス2プラス1です。 だからそれはあなたに7を与えます。 そして実際、それは希望 一見すると思われます コンピュータが数えることができること このよりも高くありません。 しかし、もちろん、これは真実ではありません。 私たちが望むときに私たち人間は何をしますか 999のようなより高いカウントしますか? ちょうど1を運ぶだけ 左に4桁目を追加します。 だから確かに、我々は可能性があります。 私たちは、8のを持つことができます 場所と16の位、 そして32の場所、64、128--とあなた ただ無限大までに続けることができます。 したがって、これらの零点とones-- いわゆるバイナリsystem-- どのようなコンピュータ科学者が希望しています 一般的にビット、または二進数字を呼び出します。 しかし、今、どのように我々は、から入手できますか コンセプトやこれらの事のグラフィックス 実際のコンピュータに? ここではステップをスキップしているように見えます。 最後にさて、入力のみ その日の、ここで私のラップトップへ 電力のこの流れです。 それは長い間されていたとしても あなたがについて考えてからの時間 または考えたことはありません どのように電気の作品、 中を流れる電子はありますか アウト、それは入力の私のようなものです。 だから、私たちがしていることすべてだ場合 ここで入力として取得し、 私たちは、その情報で何ができるのでしょうか? まあ、我々はゼロとして考えるかもしれません 電気のちょうど不在。 何もflowinwされていない、何もありません 移動、何も起こりません。 それはゼロstate--単にデフォルトです。 しかし、電気が流れるがある場合は、なぜ 私達はちょうど任意ませんが、全体的に 一貫して、1ことを呼び出します。 だから、単純にパワーを持たないことで、 我々は、ゼロ、はい力を持っています 我々は電力なし選ぶ - はい、力を持っています。 そして、そのように、何かを使用して、 より多くの物理的または電子的 私たちは、この概念を実現するために開始します 何かが1または0のいずれかです。 確かに、私たちはここの上でそれを行うことができます。 だからここに、私は持っていない3が、 8電球、その各々 独自のスイッチがあります。 そして、私が表現したかったそうである場合 数7ここでは、 私は、これらの3つの電球をオンにする可能性があります。 そして実際、内部 私のコンピュータは、何百万人であり、 ちょうどある物事の十億 より小さいと呼ばれるトランジスタ スイッチ、あなただけのオンとオフにすること。 したがって、これらは比較的big--されています 私laptop--内部big--スイッチ 多くの、多くの、多くのであり、 より多くのスイッチ。 しかし、彼らはすべてが正確ですthat-- 何かを入れ、何かをオフにします。 そのようなものとして、コンピュータを表すことができ、 それらの何百万または数十億と トランジスタ、たくさんのと 0と1のたくさん。 そして、他のハードウェアは、それがまだあります あなたは情報の長期保存でき、 そのため、あなたが引くとき プラグ、あなたはそれを失うことはありません。 しかし、それは別の日の話です。 だから我々は、これらのビットで何ができるのでしょうか? 私達はちょうど取るかもしれません me--のオフ圧力 誰かが来てほしいことがあります ここまでとデモを提供していますか? 私が最初にこの手を見ました。 あなたの名前は何ですか? メイディ:メイディ。 DAVIDマラン:メイディは、アップに来ます。 はじめまして。 メイディ:はじめまして。 DAVIDマラン:この方法で来ます。 私はあなたをリップする必要はありません。 大丈夫。 だからここに、私たちは、1 notice--、two-- 我々はout--それを編集します1、2、4、 8、16、32、64、128。 これは意図的なものです。 8ビットがありますhere-- digits-- 0と1のバイナリ。 そして、ビットはmeasure--の便利な単位であります 測定単位として有用ではありません それ自体の上に。 通常は、少なくともたい これらの事の8、別名 バイト。 だから我々は、ここでのビットのバイトを持っています。 だから、私たちがあなたに挑戦したい場合は、 例えば、バイナリで、綴ります、 この値が42をhere--。 その時に刺しを取るしたいですか? メイディ:[聞こえません]。 DAVIDマラン:ええ、ちょうどプッシュ 正面に小さな白いスイッチ。 そして、あなたはスペルたいです 42アウト、容易に手に入ります このCS50ストレスがあります ボールあなたはこれを取得する場合。 大丈夫。 だからあなたは32を持っています。 私たちは42が必要になるだろう。 だから、8ですので、それは40です。 そしてexcellent--非常にうまく行って。 ありがとうございました。 [拍手] 大丈夫。 だから我々は、1以上のストレスボールを持っています。 我々は可能性がある場合の、このもう一度やってみましょう。 もう一つのボランティア? 無料のストレスボール、無料のストレスボール。 OK。 こちらに途中で、 あなたがダウンして来てほしいですか? 大丈夫。 知っている。 そうしよう。 だから数字はhere--ダウンに来ます。 お名前は何ですか? DAVEY:デイビー。 DAVIDマラン:デイビー。 OK。 、アップデイビーさあ。 はじめまして。 そして、私たちはあなたを持ってしようとしているもの あなたがそこに残ることができればspell-- ちょうど1 moment--の番号50です。 しかし、しかし、しかし、しかし、しかし、これらは、 理由のための小学校磁石。 ただ、すべての権利、少し難しくなりましたか? 8はまだあります。 大丈夫。 それでは、我々はそこにありますか? 私たちは32を持っています。 ニース。 32プラス16は、私たちを与える48--とても近いです。 そして素晴らしいです。 デイビーにおめでとうと同様。 [拍手] 大丈夫。 だから私たちは一日中、これを行うことができ、 それはすべてがはるかに取得していません 興味深く、より挑戦。 しかし、それは本当にpoint--です どのように比較的簡単です それは、一日の終わりに、何aは コンピュータは、情報を記憶するようにし、 最終的に入力とを格納します 保存したり、それらの出力を表します。 しかし、数字だけではありません すべてのことは興味深いです。 人間だから、何年か前に、 決めた、あなたは何を知っていますか? これは、ifいいだろう コンピュータはただではなかったです 算術演算のための計算機 操作が、実際にできました ワープロのようなものを行う、または 電子メール、またはより近代的な化身 技術のこれらの種類の。 それで世界が決めました 任意に、しかし、普遍的、 あなたが資本を保存したい場合は、その コンピュータ内の文字A、あなたは何を知っていますか? ちょうどすべてを保存することに同意してみましょう いくつかのゼロのパターンとones-- bits--その最終的に 進数65を表します。 私達はちょうどすべてのことに同意します。 66 Bを表すことになり、 67 Cを表すことになり、 との他のパタ​​ーンの房があります 0と1、または基礎となる数字、 それが表すことになります まだ他の文字。 もしそうなら、あなたの種類の精神 一瞬のためにこれを吸収し、 私は意図的に通ってAを設置します I、H 72、私は73です。 コンピュータであれば、その後の文脈で ワープロソフトや電子メール、 持っているフードの下に明らかにしました bits--パターンのこれらのパターン 表すビットの 次いで72、73、33-- これは、そのプログラムの中で何を綴るかもしれませんか? だからこんにちは、次に何か。 私たちは、必ずしも実際に知らないが、 33--ないチャート上earlier-- 単に感嘆符でした。 だから72はH、73 33が起こるIであり、ました まだ感嘆符があることにします。 しかし、それはすべての罰金と良いことです、 そして実際には、今日ではなく、 ちょうど7か8を使用 ビット、何かに感謝 対照的に、ユニコードと呼ばれます 一日で戻ってASCIIに、 私たちは、実際にはさらに多くを表すことができ、 ちょうどより興味深い文字 これらのオリジナルの英語の手紙をバイアスされています。 しかし、我々はまたしても表すことができます 色のような滑らかな印象のもの。 あなたは頭字語を聞いた場合 赤、緑、青のRGB、その 単にコンピュータということを意味 典型的にbits-- 3組を使用して 表すビットのいくつかの数 あなたが望むどのくらいの赤の番号、 以下のためのビットの別のセット どのくらいの緑したいです、 そして、のための別のセット番号 どのくらいの青いしたいです。 だから、大きな数は、たくさんのことを意味します 赤、小さな数が赤いことを意味しません。 それで、これらは親切です ここの中央値。 だから、私にいくつかの赤を与え、私にいくつかを与えます 緑、私は青の少しを与えます。 そして、あなたはこれらの3つの色合いを混ぜた場合 この場合、色の一緒に、 あなたはこの暗い陰を取得します 黄色や茶色の。 しかし、8のパターンプラス 8プラスeight--ので2​​4 bits-- 左から右へ、どのようにコンピュータであり、 その特定の色を表すことになります。 さて、これは画面上だけのドットです。 あなたがお使いのテレビで本当に近い見てみると、あなたの コンピュータには、ドットまたはピクセルが表示されます。 そして、あなたは全体のグリッドを持っている場合 画素、水平方向および垂直方向に、 あなたがイメージを持っています。 そして、あなたが取る場合 画像とその後の洗浄 自分で別の画像を表示し、別の 画像、別の画像、別の画像、 本当に速く、もちろんあなたが映画を持っています。 だから、我々はスタート地点に気づきます。 我々は、これらの0と1を始めています。 私たちは、小数にそこから働いていました 数字は、我々は彼らをどのように表現します。 今、私たちは、アルファベットの文字を持っています。 しかし、他のコンテキストでは、我々が使用することができ、待ちます いくつかのより多くのビットと色を表します。 すぐにあなたが持っているように 色を表現する能力 あなたが表現する能力を持っています 写真、アニメーションGIF 画面上および他のそのような文字。 そして、あなたはの全体の束を持っている場合 画像は、一度に人間が飛びます それは、映画のように見えます ので、あなたにもビデオを取得します。 だから、非常にこれらを使用して、 単純なプリミティブは、我々を行います 表現の方法を持っています 最終的にはすべてのメディアのこれらの形態の。 そして、我々は再び抽象化してきました そして、何度も何度も、私たちまで 最低レベルから取得 この最高レベルに。 だから、これは私たちに与えます 抽象化の一般的な考え方。 しかし、我々はここに始まりました。 ここで今、私たちはかもしれません コンピュータで表現します 0と1との入力、 0と1で私たちの出力は、 しかし、何がボックスの内部に入りますか? それはどこにコンピュータです 科学は面白いです。 あなたが実際にあなたをもたらすところです 問題を解決するために負担する自身の心。 私たちは今のところ、規定することができます 学期の残りの部分、はい。 私はどのようにバイナリ作品を知っています。 私はどのようにアスキーまたはUnicode--を覚えています 作品をletters--へのマッピング。 そして、それは確かに立っています その私たちを理由に 赤と緑表すことができ、および ブルー、同様にマルチメディアを表します。 しかし、これは面白いです。 これは、誰かが作るものです 問題を解決することができます。 そしてそのような問題 私たちは、確かに、やりたいです 出席を取って、またはされています アルゴリズムこれを行います。 そして再び、私はこれを行う可能性があります。 私は、1つ、2つ、3つ、4つを行うかもしれません 5、6、7、8 9。 そして、私はそれを書くことができます それを追跡するためにダウン。 しかし、それはどれだけ私が希望です 情報を表します。 または私は、このfaster-- 2、4を行うことができ 6は、8、10、12、14、16、18、20、 22--それは二回のように感じています 早くそれはまだです 時間の全体の多くを取るつもり。 我々はまだ活用している場合しかし、それは、判明します 別のresource--、実際のコンピュータ これらの日は、複数のCPUや脳を持っています。 これは、コンピュータをすることができ判明します 一度に多くのものを行い、 実際、私たちは、この部屋で、 正確にこれを表すことができます。 だから、社会的に少しです 厄介な、しかし、あなたはユーモア私を希望する場合 わずか3ステップのプロセスのために、みましょう 私はそこだけの場所で皆を頼みます 一瞬のために立ち上がるします。 立ち上がる。 だから、自分自身に考えて、数 、この部屋に誰も選びます - なかった人を除きます 義務付ける、ナンバーワンを考えています。 だから、今、あなたの番号です。 それは、第1のステップである、または コンピューター科学者やプログラマ 通常、我々はつもりだ、だろう ゼロからカウントを開始します。 我々はできる最小数の場合 これらの電球で表します ちょうどそれらを残すことによって、ゼロであります すべてのオフ、私は同様かもしれないだけ からカウントを開始 ゼロではなく1です。 そしてそうそれは何です コンピュータ科学者が行います。 だから、ゼロステップ立ち上がって ナンバーワンを考えます。 次のステップはthis--ペアです 立って誰かとオフ そして、一緒にあなたの番号を追加。 素晴らしい。 だから、この時点で時間内に、 文字通り誰もが参加します 除いて、数2の考えています 1奇数人のために我々が持っている場合 部屋の人々の奇数。 そして今、ここに第3のステップはに起こっています 座るべきであるあなたのthis--一つです。 あなたの一つは座ってする必要があり、 そしてあなたはまだ立っている場合には、 ステップ1に戻ります。 大丈夫。 大丈夫。 だから、より多くの人々 座ってする必要があります。 これが誘導されていることに注意してください サイクルのloop--いくつかの種類。 あなたのいくつかは、ぎこちなくスタックであるべき ステップ1の間で前後に行きます そして2、1と2、1と2。 それで大丈夫です。 私たちの最初のバグ。 我々はそれに対処します。 大丈夫。 私は物事に沿って拍車をかけるしてみましょう。 理論的には、一人だけが立っています 誰もがオフにペアリングし続けています。 しかし、私は物事をスピードアップしましょう 人々はまだ立っています。 何番あなたが考えていますか? 46。 OK。 先に行くと座ります。 君たちはまだ立っています。 誰がまだ立っていますか? 何番あなたが考えていますか? OK。 だから我々はあなたに戻ってきます。 後ろに? それは何ですか? 22。 [OK]を他の誰かアップtop--ええ? 34。 OK。 ここに私のright--アップにこっち? 132、非常に素晴らしいです。 22? OK。 そして、誰がまだ立って? こっち? 46、非常に素晴らしいです。 72。 私ははるかに長いス​​トールすることはできません。 ええ? 30、素敵。 こっち? 23? 23。 そして、私はそれが誰だと思います 皆さん、無加圧除きます。 あ、ちょっと待って。 28? ちょうど8。 OK。 ちょうど8。 ここでダウン? 30。 23。 24。 18。 これは最悪の実装です このアルゴリズムの今まで。 OK。 だから誰? 他の誰? OK。 もう一つ。 16? OK。 16。 大丈夫。 だから私は誰を逃していない場合 ここでまぶし、私はEnterキーを押したときに、 我々は、アルゴリズム、表示されます サンダースの人々の合計数。 再び、それは誰かのようなので あなたがダウンして座って、あなたの番号をオフに合格 他の誰かに、他の誰かに、 他の誰かに、理論的にはそのように、 最後に、一つだけぎこちないです 人は放置されるべきです。 しかし、それは大丈夫です。 私たちは、手動で物事をスピードアップ。 これは、参照することが特に難しいです この特定の空間インチ そして、人々の総数 我々はここにありますが546だと思います。 私は左利きだった総数 指導員により、 誰がそれを古いをしました 学校遅い方法は、820でした。 [笑い] [拍手] それで大丈夫です。 だからきっと、その後、これらのバグがあります。 そして、それは大丈夫です。 ので、この上に戻って考えます 初めて何か あなたは必ずしも動作しません書きます。 これは、ここにも私に起こっています。 しかし、それでは、どのように我々はかもしれない考えてみましょう 何かにこれと同じ考え方を適用 あなたは、前に見たかもしれません この古い学校の技術がありますhere-- 本当に大きな電話帳。 そして、この電話帳を考えます 1,000ページ1,000名を持っています そして、数字アルファベットそれの内部。 さて、私たちは種類の類似を適用することができます この非常に物理的な問題への考え方、 私だけを使用しました。 私はちょうど種類のだまさ あなたのすべてを活用することにより、 異なるCPUの多くとたくさんの または脳は、いくつかのアルゴリズムを実行します。 しかし、それはほんの少しだ場合 古い私、私はまだすることができます アイデアと同じ本質を活用 その問題を分割し、征服の 何度も何度も、それによってあなたの半分、 あなたの半分、あなたの半分、あなたの半分、 理論的には、座っ保た 我々が残っていたまでは、理論的には、 ただ一人で。 この古い学校でだから technology--我々にはありません これはこれをmap--必要 古い学校の技術、 我々は誰かを探し始めるかもしれません マイク・スミス、一度に1ページのような。 そして、私はありません、マイクはここではないことがわかります。 私はAセクションにまだです。 結局、私が見つけます 自分Bセクションインチ そして、これはalgorithm--です ステップバイステップの命令。 先頭と1ページで開始 一度、マイク・スミスを探します。 これは、これをcorrect--されます アルゴリズム又はアプローチ? ええ、それは正しいです。 マイクはここにある場合は、最終的に 私は彼に取得します。 しかし、それは効率的ではありません。 これは明らかに非常に遅いです。 だから私は、活用することができます 同じtw​​osiesが近づきます。 私は2つの並べ替えを行うことができ、 4個、6個、8個、10、12。 それは二倍の速さです。 私はマイクを取得するつもりです 彼がそこにいた場合より速いです。 それが正しいか? はい、私はlittle--なしを聞きました。 今、私はノーを聞きました。 うん。 潜在的なバグがあります。 多分マイクは単に誤って取得します 2つのページの間に挟まれ、 私が通って飛んでいますので、 当時のこの2。 だから、少なくとも我々はいくつかを必要とします 条件修正の一種。 私は、ちょっと、言う必要があります 私はその人をヒットした場合 名前は、Tの代わりにSで始まります 私はより良い戻って少なくとも1ページを倍増します。 だから、最初はバグが多いが、固定可能。 しかし、私たちのどれものために見に行くされていません 千ページ電話を通じてマイク・スミス 一度に1ページを予約。 やろうとして普通の人は何ですか? あなたは、Sさんに行くつもりです、 あなたはここで、Sさんを知っていた場合。 あなたは真ん中にほぼ行くかもしれません またはわずかに最後に偏っ。 そして、私はここでダウンして見て、 私は、M個のセクションにいますよ。 しかし、あなたは何を知っていますか 今、この問題について、 私たちは、必ずしも前に知らなかったこと 私たちのすべてにちょうど自分自身を数えます 等価的に? まあ、マイクは明らかに起こっています 本のこの半分になるように 彼は全然ここにある場合には、並べ替えているため。 だからあなたは非常にdramatically--することができます 【あえぎ] 知っている。 [拍手] これは、実際にあれば本当に簡単です あなたはそこに背骨をそれを行います。 しかし、あなたは、次に投げることができます 離れて、問題の半分。 今、私は同じproblem--が残っています 電話でマイク・スミスを見つけますbook-- しかし、今の電話帳は、Mで始まります 及びZに行くが、それは半分に大きいです。 しかし、これは印象的だものです。 ただ、理論的には、皆さんのような あなたのすべては、一度に半分しか座っ この問題は、大きなとして半分得 何度も何度も、大きなとして半分。 したがって、この問題になっています 同じ問題が、同じ大きさの半分。 今では、250ページの問題です。 できるだけ早く私は、私は、ああ、実現するとして Tセクションで偶然。 私はあまりにも遠くに行ってきました。 私はその半分を投げることができます 離れて電話帳の。 今、私はダウンによ 問題の四半期。 そして、あなたは繰り返す、繰り返すことができ、 理論的には、あなたがしている、まで繰り返します 1ページだけを残し。 そして、マイクはそのページ上にある場合、 私は今、この問題を解決することができます。 しかし、どのようにすぐに私はそれを解決しましたか? 最初のケースでは、それはのように私を取りました マイク・スミスを見つける多分千手順。 これは、撮影している可能性がありますme-- 私は電話帳をピックアップ そして、私は探し始めました 一度に1ページ、 そして、マイクは1,000ページ以降である可能性があります。 第二のアプローチかもしれません 500ステップに私をとり、 私は飛んでいますので、 一度に2つの貫通。 そして、しかし第三のアプローチ、 それは特に強力です。 しかし、それでは、実際にどのような我々考えてみましょう この第三の方法で行いました。 私はちょうどこれらを呼ぶものを持っています ここに文を1つずつ。 電話帳をピックアップ。 電話帳の真ん中に開きます。 名前を見てください。 そして、物事が少しを取得 より知的に興味深いです、 まだ簡単な場合。 スミスは、間にある場合 その現在のページ上の名前、 その後、条件付きで何かをします。 これは、道路の分岐点のようなものです。 マイクを呼び出します。 マイクは、名前の中にある場合 そのページで、マイクと呼ばれます。 しかし、唯一の行ならば行4を行います ツリーは、あなたがする場合は、trueです。 その質問への答えはイエスです。 他にスミスは以前book--である場合 言い換えれば、私はMセクションにいる場合 そして私は誰かのを探しています 左は、私は何をすべきか 非常に類似したものです。 それから私は、真ん中に開く必要があります 本の左半分の。 それでは、左に行くと、 ステップ2に戻ります。 そこに名前を見てください。 だから、他の言葉で、同じことを行います、 しかし、問題に半減しているなら。 あなたは他に何を知っていますか? スミスは本の中で、後にある場合 私は見ていますページに基づいて、 の真ん中にオープン 本の右半分 そして再び戻って 2つelse--に進みます ここで第四可能性があります。 マイクのいずれかここか左に またはそこに右またはしないように。 そして、ここで私たちはより良いこのことを検討してください。 そして実際に、あなたは今まで持っていた場合 お使いのコンピュータはあなたにクラッシュし、 それは時々ですが、常にではないが、 ちょうど人間のプログラマの結果ではありません 実現する、あああり、撃ちます 実際にこの第四シナリオ。 そして、あなたはコードを記述していない場合 そのシナリオを処理するため、 時々、あなたは知りません コンピュータは何を行う可能性があります。 そして実際のプログラムがクラッシュすることがあります。 しかしこの場合、私は思いました それについて、私は言った、他に終了し、 それは、第四のだから 論理の可能なシナリオ。 今、ちょうど追加してみましょう 我々ので、いくつかの語彙 用語の周りに投げるために始めることができます そうでなければ、かなり直感的です。 私はきたすべてのものだけ ここでは黄色で強調表示され、 私はちょうどに行きますよ ファンクションまたはプロシージャ。 彼らは、アクションのちょうど一種です。 だから、見て開いて、拾います で、コール、オープン、オープン、 これらは単なるアクションですquit--、または私達はよ 、より正式な機能をそれらを呼び出します。 一方、今黄色で、 私は物事を強調してきました that--ちょうど呼び出しを開始しましょう それらの条件または分岐します。 これらは、決定ポイントどこにあります あなたはこの道を行くかもしれないが、このようにして、 または他のいくつかの方向はまだ。 だから、それらが条件となります。 そして今、この1は少し手の込んだです。 それでは、これらの質問を呼ぶことにしましょう ブール式、 姓ブールを持つ人の後。 そして、ブール式 ちょうど何かであります それは、真または偽ません、yesまたはno。 だから、その答えはあなたの質問です そう状態でのように、気に 答えを取り戻すdecision--行い、 そして、左または右、または何かを行きます 完全に他の。 そして最後に、これらの ラインはhere--戻って ステップ2に、戻って 我々は可能性がtwo--進みます さまざまな方法でこのアイデアを実装しています。 それから、あなたのものと プログラミング経験が行っている可能性があります または異なってこれをやって想像することができます。 しかし、今日の目的のために、それはです 重要ちょうど考え。 これは、誘導されたもの 我々は、一般的に呼ぶことにします なぜならサイクルのloop--いくつかの種類、 私が再び何かを作っています。 だから今、ちょうど考えてみましょう このアルゴリズムは、どのように良いです。 あたりです。 マイクの本の中でなら、それはの一つです 何度も何度もこれらの4 scenarios-- そして再び、我々は彼を見つけることができます。 しかし、それはどのように良いのですか? まあ、我々は持っていません ここでは、あまりにも形式的でします。 しかし、単にプロットしてみましょう 取得するには何か、xとy、 この問題の形状の感覚。 ここではX軸上にあります 私の問題の大きさ。 ここで彼らは、y軸 解決するための時間になります。 だから、多分これはページ数です。 多分これは秒ですか どんなturns--ページ。 しかし、あなたがカウントしたいです この絵は何を表します。 そして、その最初のアルゴリズムは、私が行きますよ ちょうど直線として記述します。 中のnページがある場合は 電話帳、それは 多くのように私を取る可能性があります nステップとしてマイクを検索します。 ベライゾンまたは電話会社の場合 来年1より多くのページを追加し、 それは私に1以上かかることがありますstep-- マイクを見つけるために時間の1以上の単位。 だから1の比率にこの1つだけあります。 これは、直線の傾きです。 一方、その第二 私は場合algorithm-- time-- 2で2を行きます、 4個、6個、8個、またはdouble-- 二回ページを経由 一度に、一度に2、 それはまだ直線です。 二から一は今あります 比率が、ちょうど少し低いです。 したがって、この多くのページがあるかどうか ここでは、黄色のチャート上で、 それは私にこれを取ることがあります 多くのステップまたは秒、 それ以外の場合は、私を取るために起こっています 赤のライン上の二倍の。 しかし、緑色の線は本当のお持ち帰りです。 これは、一般的に私たちです logorithm--ログを呼び出します nは、nはページ数です。 しかし、それは重要な形状です 今日、私たちは持っていないので、 でも、ポイントをプロットについて考えます。 極端なシナリオについて考えてみよう。 Verizonは明日が2倍と仮定 その電話帳のページ数、 1000〜2000まで。 最初のアルゴリズムでは、I 余分千を無駄かもしれません 手順は、という理由だけで、マイクを探して Verizonは本のサイズを倍増しました。 それalgorithm--第かもしれません 私に余分な500の手順を実行します。 千以上​​のページでは、私は2つを行きます マイクを見つけるために500以上のステップtime--。 しかし、第3のアルゴリズム 一種の魔法です。 Verizonは数を倍増します 1000〜2000頁の、 しかし、どのように、より多くのステップがありません それはマイクを探すために私を取りますか? 私はちょうどすることができますので、それは、ただ一つです 電話帳をもう一度涙 2000ページの問題からへ 千ページの問題、出来上がり。 私はそれのうち大規模な一口を取りました。 そして、あなたは本当に極端に行く場合は、 電話帳と仮定する 同社は、のようなクレイジーなものを持っていました 40億ページの電話帳。 まあそれはどのように多くのステップかかる場合があります 40億にマイク・スミスを見つけるために ページの電話帳? これは大きな数だが、わずか4億円 20億5億に億1に、 まだ250 million-- 大きな数字のように聞こえます、 しかし、私は非常に迅速によ 小さい値になって。 そして実際に、私は数学を行う場合 右、私は分割することができ40億 およそ32倍の前に 私はちょうど1に取り掛かります。 だから、電話帳が4であれば 億ページの長さ、大したことありません。 数秒以内に、多分32 秒は、私は半分に分割することができ そして最終的にはマイクまたはを見つけます 彼はそこではないと結論しています。 そして、それはの本質です 良いアルゴリズムをalgo​​rithm--。 そして、それはの一つです このようなクラスの目標、 私はどのように行う把握しようとしています だけではなく、正しく問題を解決するため、 私はいつもそれを1つずつ実行する方法を知っていたように time--でページが、正しく、よく。 どうすれば良い設計ん 問題の解決策? それでは、ここで少し時間をとってみましょう そして今、あなたの感覚を与えます CS50 itself--が紹介コースの いくつかのコースのスタッフ。 ちょうど二時前に、我々はよ ひと休みします あなたのようにそれら 誰がすることができます買い物をしています ダックアウトと取ります 他のいくつかのクラスを見て このオンラインの残りの部分を見て。 しかし、今のところ、私が紹介しましょう CS50、クラス自体、 特に新しいものです。 だから過去の春、私たち time--のかなりを費やし コー​​スのスタッフとI--思考 それが何であるかについて、我々はCS50になりたいです、 そして最初に戻ります いわば原則、 それは私たちが望むであるかを検討します このコースは、次のようになりとされるように その学生のためのように。 そして、あなたは問題に表示されます 、同様に招待をゼロに設定 その見を取ります 要約するURL 背後にある動機の一部 秋2016の次のような特徴。 あなたが収集している可能性がありように、 TLから:DRの配布資料、 シラバス今日だけでなく、から コー​​スカタログ、CS50で今年、 あなただけ出席するために期待しています だから仕事もdone-- today-- 11月21日の最後の講義。 そして、あなたは歓迎しているが、予想されません 途中でこれらの講義に出席し、 私たちがやっているので、 今年は、撮影されています リアルタイムコースの材料インチ だから、すべてはとどまります 現在および組み込ま 最良として、私たちは現在のイベントをcan-- その人々がかもしれないとの会話 業界で持つこと 世界が、その材料を製造します 結果として、利用可能な、でもearlier-- 全文転写物との完全な そして、検索性と 他のリソースへのリンク。 そして実際、我々がしてきました いくつかの時間を主張 私たちは今、これを信じています 私たちが作成することができ、デジタルで、 より魅力的な、より没入 対照的に、教育経験、 ここではいくつかの23倍を収集します 個人的に、私のような誰かを聞い 単にコンピュータサイエンスの話を、 より積極的に従事するとは対照的です。 だから、コースのシラバスに表示されます ここ学期のスケッチ、 時講義意志と一緒に これはあなたがしているために、撮影さ 歓迎するが期待できません、 そして、するとき、彼らは意志 コー​​スのウェブサイト上でリリースされます。 そして、我々は上のここでやるもの 来週から毎週水曜日、 多くのだけで、より密接です 参加したいものを人々、 いわゆるウォークスルーであり、 ここで、Iとコースの頭 実際に物事を行います もう少し親密 ここではオーケストラでダウン セクション、まだいくつかの技術を持っています とを歩きます 現在の週の問題のセット、 そして、の間であれば、あなたがparticularly--提供しています 小さいものcomfortable--すべての詳細 あなたが望むかもしれない指導や 今週の挑戦のために必要。 同様に、誰ができない人のため 人のもの、大したことないに出席。 同様でそこに主導されます コー​​スの上級スタッフの1、 Zamalya、埋め込まれた同じ機会 問題で自分自身を設定します。 問題は、今年設定します 金曜日に発売されます もはや、7日後に行いません しかし、10日later--故意 それぞれの問題と重複 より良い収容するように、設定され、 我々願って、干満 学生のスケジュールで、 場合は特に中間試験や陸上競技 あるいは学者やextracurriculars 行ったり来たりする傾向があります 特に半ば学期。 それはあなたにもう少しを与える必要があります あなたかどうかを前面にとして裁量 CS50または背面負荷であなたの週をロード それの代わりに、次の週末に。 だから、コースのシラバスに見えます ここではそのスケジュールの。 そして、あなたはあまりにも間でわかります 変更は今年、 に慣れています 過去のプログラミング、 我々は、学期を開始します 我々は、スクラッチで、今日意志 言語に特に焦点を当てます Cと呼ばれ、その後はない移行 PHPに、しかしと呼ばれる言語へ 学期の終わりに向かってのPython ウェブプログラミングの文脈において、 SQLおよびJavaScriptと共に、 HTML、CSS、およびさらにより。 そして、FAQへの答えで、 それは確かにケースです CSはかつて私と同じくらい怖いではないこと それはと思ったが、それは、多くの仕事であります 私は聞いていたようである可能性があります。 しかし、これは、ここでいくつかはあると言うです 秋2015生徒の体からの統計情報、 これにより、水平の青い線 時間の平均数を表します 報告。 そして、あなたは、平均が表示されます 多分16を12--する10の6 かそこらなどが、と 明確にするために、高分散。 そして、そうではないだけがあることを実感 より快適に、より少ない学生 コー​​スで快適、 しかし、対応するサポート これらの学生を取得するための構造 首尾よく学期。 確かに、よくある質問への答えでは、すべきです あなたが最初の年としてCS50を取りますか? 絶対に。 そして実際に、私は後悔しません 私の方法を見つけたではありません または新しいフィールドを見つけました 同様にその最初の年。 そして、あなたはでCS50を取る必要があります 確かに他のコース、well-- そして、我々は可能性のある一般的なアドバイス 、そのCS50はおそらくだ学生を与えます ないクラスの種類やイントロクラス あなたは3と取るべきであること 他のまたは他の4つのp-設定したクラス。 しかし、あなたは他の二つのp型セットを取っている場合 クラス、何か他のもの、およびCS50、 絶対に扱いやすいです。 私は、多くの学生を持っていました 過去にはかなり正常に行って。 そして、それに向かってあなたを取得します 正常にフィニッシュライン、 コー​​スは持っているんsections-- 学生のための別々のトラック より快適に、より少ない快適な、 そして、どこかの間で、 それによりコースの中 第一の問題点セット、 あなたは自分自身を記述するように求められます。 そして、あなたは少ないものの中にある場合 快適な、それは事のようなものです あなただけではなく知っています。 そして実際、それがされています CS50で成長している人口統計学的 かなりの数年間。 最後の秋のように 例えば、クラスの58% 自分自身を説明し 少ない快適なものの中で、 より多くのもののうち、9%と 快適、そしてその後 そこに他の学生で 自分自身を記述した赤 間でどこかのように。 そして、あなたは全体のここでのトピックを参照してくださいよ スケジュールセクションの、その全ての で、人に提供されています コー​​スの持つリアルタイム、 指導員の素晴らしいスタッフ 誰のいくつかのコースのアシスタント、 あなただけの瞬間に会うでしょう。 セクション自体、あなたがわかるように、意志 月曜日と火曜日と水曜日であること、 あなたがダイビングすることを可能にするように だから場合は、従事した後で コー​​スの中で、選択しました 講義早くその週。 そして、営業時間、どの 確かに、年を追うごとに、 の劣ら行われていません コー​​スに挑戦。 そして今年、我々はない計画しています オフィスhours-- 1を保持するだけ ヘルプのための1つの機会に 水曜木曜学生 そして日曜日、それらの最後の 設計によって午後にいます その応力の一部を減少させます 常に深夜に発生します 締め切りとp型settting looming-- しかし、営業時間も提供されます 月曜日と火曜日と 水曜日、金曜日と土曜日、 HSAで私達の友人に感謝。 CS50は現在、独自のスペースがあります 学生とCS50のスタッフのために、 67マウントオーバーン・ストリートの上、 右がハーバードスクエアインチ CS50のことであるためのビジョン 週を通してのTFとのCA、 最もを通してかなり 日は、サポートのためにあるでしょう。 だから、あなたには、いくつかを持っている場合 p型セットに質問 またはあなたは少しを感じています ブロックまたは少し混乱し、 そして一体、あなたは時間を持っていますか、 クラス間の半時間、 特に次のことができsquare--で でポップとその質問に答える必要があり 混乱を持ってclarified-- 精神で非常に多く、 あなたは数学の、精通しています 部門の独自の数学の質問センター、 しかし、クロック当たり約かなり [? Googleカレンダー?]我々はオンラインで掲載する予定という。 家庭教師はまた、それらのために利用可能です 自由にコースの学生、 ご希望の場合は自分のスタッフ 1上のより親密な1、 または二、三のクラスメートだけ、ワーキング コー​​スのスタッフのメンバーの一人で。 そして実際、ここでこれらは単なるです コー​​スのスタッフの一部、 いくつかのあなたはよ 一瞬で会います。 実際には、CS50自身 ヘッドティーチング・フェロー、 ヘッドコース アシスタント、および教師、 アップ時に来ることができ、許可 それらは挨拶します。 [拍手] SPEAKER 1:[聞こえません]。 [拍手] SPEAKER 2:[聞こえません]。 [拍手] SPEAKER 3:[聞こえません]。 [拍手] DAVIDマラン:そして、私たちができるようにします CS50の最ものボード2に持ち込みます シニアスタッフ、ならびにロブとZamayla。 [拍手] 実際、両方のロブと Zamaylaは私たちとされています あまりにも長い間、私ができたこと CS50のアーカイブに移動するには これは非常にSD見つけます それらの映像参加 何年か前にステージ上で自分自身。 ROB:[聞こえません]。 [拍手] ZAMAYLA:[聞こえません] [拍手] DAVIDマラン:ありがとう。 したがって、これらに加えて、 ここでは、チームメンバー、 CS50は、ほぼ100のチームを持ってい 人のスタッフ全員、 セクションのために利用可能になります そして、営業時間およびそんなに多く。 ロブがあまりにも言うように、これは 最も重要なオーバーホール その10年間でCS50の 私は[聞こえない]にしてきました。 [聞こえない]特に焦点を当てました 支持構造を提供します、 の多くを離れてトリミング されていますバルク 10年間に蓄積されました 反復開発の コー​​スの問題セットに。 だから今年だけでなく、クラスではなく また、当然の問題の形で セットは、あなたがするものを見つける必要があります より合理化され、トリマー、はるかに より管理しやすいです 我々として、過去数年間で だ荷物の一部を流します 進化年の性質によって開発されました 年と反復後。 だから、新しく改良され、今日から始まります。 あなたは、いくつかのより多くを満たしています [聞き取れない]でアウトコースのスタッフ 我々はサーブ2時30分、で、 伝統として、ケーキ。 もう少しケーキがあります それよりも、しかし、あなたはよ まだエリンとトビアスなどを満たしています。 そして、私はあなたを与えてみましょう ツアー我々は聞く前に 他のスタッフの一部から クラス内だけでなく待って何の。 実際には、我々は常にCS50のを開始します 学期は、今週の土曜日来て、 CS50パズルの日と呼ばれるものです。 これは、とは何の関係もありません コンピュータ科学それ自体が、 しかし、約問題で より一般的に解きます。 そして、あなたはそのように分かち合うことを選択した場合、 招待状の一部につき、 あなたがドアを見ている可能性があります 落としたり、ここでステージ上で、 それは、チーム内の機会です 2つまたは3つまたは​​4つの、 パズルやピザのために参加します そして、賞品とmore--今週の土曜日、 もっと用にチューニング滞在。 あなたはそのすべてのあまりにも見つけることができます 金曜日、火と氷で、 CS50は持参ん 学生の全体の束 昼食に、大きなを作るために クラスは、より親密な感じ そして一般的にまとめます 産業界からの卒業生や友人 彼らがしてきたことについて話をします 卒業以来最大となって。 同様に、今年、我々はなります 発足初CS50 50 contest--半ば学期をコーディング 皆を許可する機会 基礎オプトインで、持っています クラスメートに対する知恵の挑戦、 再び2または3つのチームで それだけでプログラミングを使用して4、 あなたは下の持っている精通しました わずか6または7の後にあなたのベルト クラスの週、および参加 競争のこの種で あなたがあなた自身を磨くしたい場合はonline-- その挑戦でスキルなおさら。 学期の終わりにあります いわゆるCS50 Hackathon-- 午前7時から始まり、機会 PM 7:00 AMに終了し、道に沿って ダイビングに12夜の時間はあります コー​​スの最後のproject--へ 設計する機会と 関心のほとんど何かを実装します ご教示にあなたに 仲間の指導。 9:00の周りに一般的に我々を行います 、ピザ、午前1:00にサービスを提供 フィリップさん、そして私たちの数 午前5時にまだ起きている人、 シャトルはダウンしてバス接続されています 朝食のためのIHOPへの道。 そして数日後 いわゆるCS50ですfare-- 学期の展覧会の最後に どれだけ遠くにそう多くの祭典 CS50の学生はから来ています 0週目の週のすべての方法、 そのうちの73パーセントということを念頭において クラスメートとあなたが今年持っています 前のCSのクラスを取ったことがありません。 実際には、ここでは、できるだけ多く再び強調します CS50のスタッフから数以上の顔です。 SPEAKER 4:[聞こえません]。 SPEAKER 5:[聞こえません]。 SPEAKER 6:[聞こえません]。 SPEAKER 7:[聞こえません]。 SPEAKER 8:[聞こえません] SPEAKER 9:[聞こえません]。 SPEAKER 4:[聞こえません]。 SPEAKER 10:[聞こえません]。 SPEAKER 11:[聞こえません]。 SPEAKER 12:[聞こえません]。 SPEAKER 13:[聞こえません] SPEAKER 14:[聞こえません]。 SPEAKER 13:[聞こえません]。 SPEAKER 15:[聞こえません] SPEAKER 16:[聞こえません]。 SPEAKER 11:[聞こえません] SPEAKER 5:[聞こえません]。 DAVIDマラン:チームの一部 自身がクラスを買い物をしています。 しかし、もしそれらのメンバー CS50スタッフのここにあります、 ちょっとアップに来ることができました。 CS50ののTFとCAと[?スタッフは?] メンバーは、これらはほんの一部に過ぎませんhere-- ちょうどあなたのfaces-- 1の 見て、いくつかのother--といくつかの他 まだ。 なぜ我々は先に行くと、許可されていません。 君たち5分間の休憩を。 あなたはに出カモに必要がある場合 店のクラスは、それは大丈夫です。 そして、5分で、我々は、再開します Scratch--最初のを見てみ 私たちのプログラミング言語、大会の コー​​スのスタッフここにいくつかのより多くの、 そして最終的に焦点を合わせます 問題にゼロを設定します。 だから我々は5分で戻ってきます。 [拍手] 大丈夫。 だから我々は戻ってきました。 そして、私たちの残りで 時間の今日、ゴール 活躍の場を平準化することです いくつかの用語の観点から、 いくつかのアイデアの観点インチ 確かに、あたりなどのため、 以前のチャートの一部、 の範囲があるように起こっています クラスでの経験のレベル、 いくつかのその学生が持っています 前にいくつかのプログラミングを取られ、 誰のいくつかはそうではありません。 ので、この最初の問題で 設定し、この第一言語と 我々が開始する機会を持っています 今日の後に付与するために取ります いくつかの一般的な語彙やアイデア。 そして、我々はの方法によりこれをやります もちろん初languages​​-- CとPythonとに加えて、 JavaScriptとSQLとHTMLとCSS、 我々は最初に注力することがあります そして、だけの問題ではゼロを設定 このグラフィカル言語で、呼ばれます MITのメディアラボが開発したスクラッチ、 道の下、支援します 特に学生や子供たち 自分自身を表現algorithmically-- 何とより一貫性のある方法で 我々は、計算の考え方を呼ぶかもしれません。 ので、それは便利な言語です 非常に迅速に来週1週間で、 私たちは、よりに移行ん 呼ばれる伝統的な難解な言語 純粋なテキストであるC、。 あなただけであなたのキーボードを使用します 命令を記述するために 画面上でこれらのような。 しかし、あなたは見たことがない場合でも、 前のプログラミング言語 ただ一瞥で これは、すべてのそれは不可解なこと、 あなたはおそらくことを推測することができます おそらくのHello Worldを出力します。 しかし、多くのがあります そこに構文上のオーバーヘッド。 奇妙なハッシュがあります トップアップ記号またはハッシュタグ。 角カッコはいくつかあります 括弧、中括弧、半colon-- 視覚だけでそんなにがあります 邪魔になる構文。 私たちは、コースを開始します スクラッチを取得するように それらのすべての過去の知的 つまらない気晴らし、 そして、アイデアに代わりに焦点を当てます。 実際には、これは前にあるかもしれません。 これは、これのために、週後でなければなりません。 これは、このグラフィカルで 言語スクラッチ、 あなたはその同じを実装する方法です 、実行プログラムをprogram-- 単に世界が挨拶します。 そして、何スクラッチの良いのはあります それがこのグラフィカルなプログラミングだこと パズルのピースを使用する環境や のみ一緒に連動することをブロック、 それはそうするように論理的な意味がある場合。 そして、スクラッチであなたが開発することができます アニメーションやインタラクティブなゲーム アート、物事の任意の数およびその あなたは、あなた自身の心の中で想像するかもしれません 単にによってそれらを実装します ドラッグ&パズルのピースを落とします。 そして実際、私たちは能力を持っています 同じアイデアのいくつかを表現します 私はちょうど瞬間を述べていること 前マイク・スミスとの関連で 電話book--物事を検索 関数のように、ただのアクション、 実行ループのようなもの 何度も何度も物事、 ある変数、 私たちが紹介何か、 それから、おそらくおなじみです プレースホルダのほんのいくつかの種類algebra-- あなたがかもしれないいくつかの値を格納します later--ブール式を必要とします、 ここで、それらはいいいえまたは真 前から偽の質問。 条件は、中のものフォークです road--それらの枝はいわば。 そして、いくつかの愛好家があります 私たちは今日も表示されます機能、 呼ばれるアレイおよびスレッドと イベントは、我々はその後、オーバー再訪だろうと 異なる言語での時間。 しかし、スクラッチたちを可能にします これらのすべてを探索します。 そこでここではスクラッチで、この紫 ブロックは、関数は、一般的には何かということです 以下のように見えるだろう。 いくつかを持って、この紫色のパズルのピース 単語と言うように、アクションあり、 そしてそれが持っているかもしれません いくつかの方法引数またはparameter-- カスタマイズの種類 何そのブロックがありません それにより予め決めていないよう MITこの紫のブロックは言います。 実際には、あなたがに表示されます 私は入力することができるよ瞬間 ハローワールドのような言葉、または こんにちはデビッド、またはハローZamayla、 またはものは何でも私は引数で、したいです そのパズルに白いボックスをpiece-- そこ。 私はループをしたい場合一方、我々はよ そのパズルのピースがあることを参照してください。 このような小さなオレンジ色に見えます。 そして、彼らの形状は、この種のことを示唆しています 何かが何度も何度も起こります サイクルインチ だから私は挨拶世界のブロックをラップする場合 永遠にスクラッチでブロックすると、 ちょうどこんにちは言い続けるだろう 世界永遠に、文字通り。 一方、別のがあります スクラッチのループの種類 我々は繰り返しをsee--だろうと block--どこに、あなたの場合 事前に知って何回 あなたはループを実行したいです fact--あなたの中に有限回 番号を入力してそれを指定することができます あるいは、変数に差し込みます 私たちが見るようxまたはyのような。 実際には、変数のよう この場合は私、これ 一般的な名前はのためにあります 整数変数こと ちょうどnumber--を保存します 整数があるかもしれません、 にここでこのオレンジ色のブロックを使用するには ゼロに私のような変数を設定します。 ここでの緑の中の例です。 スクラッチでブール式。 これは数学のように見えるにもかかわらず このような式、数学不等式 本当にブール式です。 これはtrueまたはfalseのいずれかです。 私は50未満です。 それは、イエスかノーの答えのどちらかです または真または偽の答え。 そして、我々は一般的に呼ぶことにします これらのブール式。 そして、それは50である必要はありません。 これは、yよりも小さいxをすることができます -Y-に等しく、yよりも大きいです 他の任意の数の 質問が求められる場合があります。 さて、一見、これは見えるかもしれません 突然非常に大胆ここで、それがあります。 しかし、コンセプト賢明な、それはです 前からかなりおなじみ。 xがyよりも小さい場合には、できるだけ多く言うより。 xが大きい場合にさもなければ Yよりも、その後同じくらい言います。 そうでなければxがyに等しいと言います。 だから我々は、例を持っています そこに第三scenario--の 唯一の第三possibility-- xはいずれかであります より小さい、より大きい、または等しいです。 だから我々は道路の3ウェイフォークを持っています。 そして、クールhere--スクラッチ何に気付きます それはちょうど1パズルを持っている、と思われます ピース、この場合、elseブロックインチ そして、まだそれはあなたを暗示することができますように思われます 唯一の道で2ウェイフォークを持っています。 あなたは左または右に行くことができますが、 何その第3のシナリオは? どのようなxがyに等しい場合は? 大きな問題ではない。 1パズルのピースを取り、置きます それの別の1内側 意味的等価物を作成します 他の場合は、今すぐあなたをelse--と、場合 道路での3ウェイフォークを持っています。 そして、我々が表示されますよう、 スクラッチパズルのピース 延伸し、成長することができますので、 その中より多くのものを詰め込むするように。 あなたがフィットする必要はありません デフォルトのサイズですべてのもの。 これは、我々がよものです 間もなく配列と呼ばれる参照してください。 それはlist--いくつかの方法のようなものです 複数の情報を保存します 変数だけでなく、数インチ これらの我々はの代表が表示されます マルチスレッドと呼ばれるもの。 実際には、すべてのあなたの MacとPCのこれらの日 マルチスレッドをサポートし、 これは文字通り、あなたができることを意味します 一度に複数のことを行います。 あなたにはMicrosoft Wordをアップすることができます 前景、いくつかのエッセイに取り組んでいます。 あなたは、ブラウザを持っている可能性があります 背景開口部に GメールやFacebookなど。 お使いのコンピュータには、複数のことを行うことができます 今日ではマルチスレッドであるため、 そして、プログラムが彼らが中にいます 特に、マルチスレッド化されています。 物事と呼ばれるイベントなどがあります よくスクラッチの世界では、 そして、その後の方法は作るために、あまりにもあります 私たち自身のカスタムパズルのピースのものであれば 実際には、事前に存在しません。 だから、次のようにのは、このことを動機付けしてみましょう。 何年か前、ときに私が 最初のスクラッチを発見し、 私は実際にあったとき MITの大学院生、我々 自分自身は宿題をするために仕事を課されました。 そして、私はimplemented-- これは、振り返ってみると、 それはだから非常に悪い決断でした 世界で最も腹立たしいの歌 8時間に耳を傾けます あなたのhomework--に取り組んでいる間 私はオスカー時間と呼んでいたものを、 これはおそらく、おなじみの曲です。 CS50s所有ヨルダン林の1 私たちのより多くのシニアスタッフ、 2015年のためにそれをアップグレードしましたし、 今2016年、戻って一日で以来、 私は行くすべてのものを持っていました オスカーのごみ箱へ。 今、私たちは、リサイクルや堆肥をサポートしています。 しかし、絵をペイントします 我々はここで何ができるかの との一部をやる気にします 下位レベルの例、 我々は他のものを得ることができます ちょうど上で来てボランティア そして、私の最初のを再生 これまでの宿題? アップさあ。 あなたの名前は何ですか? HENRY:ヘンリー。 DAVIDマラン:ヘンリーは、アップに来ます。 アップさあ。 どちらの方法でもヘッド、 あなたは、一瞬で表示されます 私は先に行くとヒットするつもりです 右上の緑色のフラグ 行く意味コーナー、。 小さな停止標識のアイコン ストップを言うために起こっています、 あなたが起動したとき、それはです そして、プログラムを停止します。 はじめまして。 大丈夫。 だから我々は、手順を参照してくださいするつもりです 一瞬で画面上に。 そして、ちょうどこのゲームをプレイすることにより、 私を信頼しseconds--ためのいくつかの、 我々がプレーしたいするつもりはありません あなたは意志end--のすべての方法 プログラムが何をするかの感覚を得ます。 ちょうどヘンリーに焦点を当てるよりも、より このゲーム、焦点で良いか悪いかであること そして、どのようにそれは私によって実装されました もともと、その後ヨルダンによります。 言い換えれば、どこに変数がありますか? ループはどこにいますか? 機能はどこにありますか? 我々が表示されていない場合、私たちは表示されます ボンネットの下にそれら。 クリックするだけでゴミをドラッグ 適切なビンに。 [MUSICのPLAYING] 大丈夫。 それは非常に良いことです。 なぜ我々はそこに停止しないでください。 ありがとうございました。 ヘンリーおめでとう。 ありがとうございました。 [拍手] ちょうどそのプログラムのデバッグを想像してみてください。 問題2がある場合 song--しかしそうに分 ここでは実際に何が起こっているのですか? それがかもしれないような複雑なよう 時間をかけて取得するように見えるを開始し、 確かに、より多くの ものは落下開始しました、 何についての興味深いです example--この種の 私たちはいくつかが表示されます others--であるあなたの場合 複雑過ぎて見ますか ゲームの高度化、 非常にシンプルな建物があります それらのすべてをplay--ブロック、 あなたがそれらにそれらを蒸留場合 ビルディングブロックは、非常にアクセス可能です そして自分自身かれ実装可能。 例えば、それはです いくつかの時間がかかったが、私はよ 私が最初にときに何をしたかかなり確信して 初めてこのゲームを作ります 私は完全にprocrastinatedのようでした。 私が上で、すべての焦点を当てていませんでした ロジックやパズルのピース、 私はグラフィックや発見に焦点を当てました ストリートポストとゴミ箱 そしてそのすべて。 しかし、これらは、必要でした 最初は食材。 そして、私は先延ばし終わったらと 包括的なフレームワークをレイアウト、 私は私が1つだけにしましょう​​、決めました 空からゴミの秋の作品。 そして、我々はスクラッチが表示されます 呼ばれるものをサポートしています そのことができますsprites--文字 ので、彼らのさまざまな衣装を持っています 異なって見えます。 そして、私はゴミを置きます そのようなスプライト上の衣装。 そして、私はそれを必要と 空から落下します。 そしてそれは結局のところ、スクラッチ、 ほとんどのプログラミング言語のように、 乱数をサポートしていますか 技術的には擬似コード乱数、 そのドラッグすることなど 特定のパズルのピースをドロップ、 私はゴミを持っていることができました 最初は左から来ます。 そして次回は、それから、落ちました 途中から右と。 そして、すべてのゲームがわずかだったんでした ゴミ箱空から落下しています。 あなたはそれを指し示すか、それをクリックしませんでした。 あなたはゴミ箱を開くことができませんでした。 あなたは何もできませんでした。 しかし、それは赤ん坊のステップでした 私の究極のビジョンに向かって。 そしてその後、私は実際に いくつかの種類を実装 あなたがクリックしなかった場合ように、センシングの ゴミ箱の作品にドラッグします ゴミ箱、オスカーのオーバー ふたが開閉だろう。 何もゴミ箱に起こらないだろうが 少なくとも蓋が開いたり閉じでしょう。 それでは、2のステップ2を確認してください。 そして、これはあることを行っているものであり、 ゼロを設定し、両方の問題で鍵 より一般的なプログラミングににあります これらの非常に意図的な赤ちゃんの手順を実行します。 そのためだけでなく、それはあなたがすることを可能にしてい はるかに正直に熟達した感じ それはですquickly-- 世界で最悪のこと オスカー時間のすべてを実装しようとします、 その後、時間後に緑の旗を打ちます、 そして期待通りに何も動作 どこにも、あなたを行うため、 デバッグするかに始めます そのプログラムのトラブルシューティング? それはちょうど圧倒的です。 だから本当にこのアイデアを採用 再びsteps--赤ちゃんのステップを取ります そして、again--構築 最後に、何か、 本当に印象的で複雑であるが、 最初は、ほぼ同じくらいそうではありません。 実際には、はこのやろう。 私は先に行ってみようand--スクラッチ自体 Scratch.MIT.eduでウェブ上に存在し、 あなたは次のように言われるでしょう ずっと再び問題で ゼロ、仕様のセット これはCS50のウェブサイトにすでにあります。 しかし、これは、それ自体があるスクラッチものです。 そして、本当にあります 3主要なエリア。 そこに残さ上部には いわゆるステージがあります。 これはスクラッチです。 デフォルトの衣装は猫です。 そして、これは矩形の世界です これはあなたがダウン、アップmove--することができ、左、 右といくつかの他のもの。 中央には、ここで私たちのカテゴリがあります パズルのピースのか、私たちのパレット、 そして、異なる色 異なるものを意味します。 あなたの周り突くなら、あなたが表示されます ループや条件のようなもの 変数と他の成分。 そして、こっちのスクリプトエリアがあります。 私はドラッグアンドドロップすることができる場所です 物事を行うには、これらのパズルのピース。 それでは、そのようなことをやらせます。 私は先に行ってみようand-- それがどこにあると私は知っています。 だから私はすぐにクリックするつもりです 私が知っているところのものは、準備ができています しかし、ポインティングとクリックして、 チャンスをうかがっは避けられません。 だから、グリーンフラッグがクリックされたとき、 私は何をすべきかをしたいですか? 私はこれを行うつもりです。 私はこの紫色のパズルをドラッグするつもりです 作品は、2秒間の挨拶します、 そして、私はズームインしましょう​​。 そして、私はこれを変更するつもりです 私はそれがbe--たいものであることを ハロー2秒間の世界で結構です。 今、私はクリックするつもりです 緑の旗、または私が本当にしたい場合は、 私は完全にそれをスクリーニングしてから戻ってくることができます。 それだけで維持されます 一つのウィンドウ内のすべて。 グリーンflag--ハローワールド。 大丈夫。 すべてが面白くありません。 だから私は先に行くと、これをやらせます。 私は別のものを試してみましょう。 緑色のフラグがしてみましょうclicked--とき 音のような何かをします。 そして外のことに気付きます あなたが得る自由のための箱 猫の音のような、デフォルトのスプライトです。 だから今私が先に行くとしましょう 今緑の旗を打ちます。 【MEOWING] おやおや。 それは愛らしいです。 私はプログラミングです。 だから私は何をしましたか? これは、プログラムと同じです。 これは明らかに超簡単です。 それは本当にすべてがあまりかかりませんでした 努力とMITは、ほとんどの作業を行いました 私は関数と呼ばれています。 私は、関数を使用しています。 私はちょうど使用して、いくつかのアクションを行いました 1紫のパズルのピースという。 まあ、私が何をしたい場合 行の3 meows? 私が先に行くと2と3をやってみましょう。 そして、そのときに気付きます 近くのパズルのピースを置いて、 小さな白いラインが表示されます 磁気の並べ替え、 それがスナップされます 一緒にあなたを手放すとき。 それでは、ここで何が起こるか見てみましょう。 【MEOWING] バグがあります。 私は1鳴き声を聞きます。 それはなぜでしょうか? ええ? うん。 私たちは本当にそれを聞いていません、 それは良い直感です。 彼らはすべて同時に演奏しています。 どうして? さて、コンピュータだけで起こっています あなたがすることを教え何をすべきか。 あなたが言うのであれば、サウンドを再生、 サウンドを再生する、サウンドを再生、 しかし、あなたはまで再生するためにそれを教えていません あなたは、あなたが行っているまで再生すると、完了です 吹き抜けになるだろう プログラム本当に速いです そしてあなたがするそれを言うことだけを行います。 だから私は実際に修正する必要があります いくつかの方法でこの。 私はちょうどこのを取り除く、これを行うことができます。 私は、この他のパズルをしてみましょう 行われるまでpiece--、音鳴き声を再生 そして、その後の3をドラッグ これらおよび[再生]をクリックします。 【MEOWING] それは本当にありませんvery-- 非常に自然なyou--に感謝。 なぜ聞かせI--はありません 私はここに制御するために行きます。 ニース。 1秒を待って、今私は戻ってみましょう サウンド、および再生音に行われるまで、 そしてその後、私は1秒を待ってもらいましょう。 そして、私が行くと1を取得してみましょう 音より、ここで私達は行きます。 【MEOWING] もう少し自然が、 これは非常に効率的ではありません。 私は退屈だったように、すべてのこと それは簡単に、前後にクリック そして本当に私work--を複製 かなりのコピーと貼り付け。 実際、私がコントロールしている場合 、クリックまたは右クリック 私はコピー&ペーストしている可能性があります。 より良い使用するように構築何でしょうか? 前から何のアイデア? うん、そうループ。 そして実際に、私たちは周りつついている場合、 私たちはまさにそれを見つけるかもしれません。 私はイベントや、むしろコントロールへ行こう。 だから私はしないでくださいrepeat-- それは10倍になりたいです。 それはすぐに迷惑取得するつもりです。 しかし、私は3回繰り返します。 私は音に戻りましょうと それが行われるまで、サウンドを再生します。 私がコントロールに戻りましょう そしてちょうど1秒を待ちます。 そして、通知は、あなたがかもしれません それが収まらないと思います、 しかし、再び場合、磁気あなたがそれを聞かせて スナップ場所で、それは埋めるために成長します。 それが今プレイ何ですか? 【MEOWING] OK。 ニース。 そして、これはと呼ばれるものであり、 また、正しいですプログラム。 これは、3回かなりmeowed 当然、それはよりよく設計されています。 私はあまり冗長性を使用しています。 私は何をコピーして貼り付けていませんでした。 私はちょうど良いアイデアを使用しました。 さて、これはまだそのすべてではありません スクラッチで興味深いのはやっていません 何でも。 それでは、代わりに何かをやらせます。 のは永遠に何かをしてみましょう。 そして、あなたは何を知っていますか? 動きが面白いようです。 彼は10を移動させるのは、持ってみましょう ステップと今遊びを打ちます。 OK。 まあ我々はできる、ドラッグの種類 彼に戻って、彼はまだです 彼は永遠にこれをやっているので、実行しています。 だから、ループしています 何をすべきかを言って、 これはすべてのこと興味深いものではありません。 これをやろう。 私は制御ブロックを追加してみましょう、と1を使用します 初めてこれらの条件の。 だから、10 steps--を移動するために起こっています 10ドット、screen--に10ピクセル この質問をするために起こっています。 何かが真であれば、その後の作業 このブロックの中の何か。 だから、それが判明センシングは、全体を持っています ブールexpressions--の束 イエスの質問がないか、真 私はこれをやらせるform--偽。 touching--場合、次にあります メニューダウンこの小さなドロップ。 私はそれをパラメータ化することができます。 触れる場合みましょうedge-- そのような何か。 そうであればedge--触れます 私は運動に戻ってみましょう。 そして、なぜしない私たちだけ 周りに180度回転? 大丈夫。 だから永遠に、10のステップを移動します。 あなたが触れている場合 エッジ、180度回転。 そして、それはプログラムの終わりではありません あなたは永遠にブロックにしているので、 再度行くだろうと 何度も何度も何度も。 それでは、何が起こるか見てみましょう。 OK。 少しバギーはなく、一種のクール。 そして、我々はこれにいくつかの愚かなものを追加することができます すべてが知的ではないこと 面白い。 しかし、我々はこの少しヒットした場合 マイクbutton--痛いです。 私はこれをクリーンアップしてみましょう。 私のようにこれを強化してみましょう 彼らはテレビで言うでしょう。 それをクリーンアップし、保存し、 今すぐスクリプトに上がります。 そして今、私は音に行ってみましょう。 私はそれに名前を付けましょう。 私はこの痛いと呼ぶことにします。 そして今、サウンド痛いを果たしています。 それが表示されます注意してください ダウンメニュー少しドロップ。 どれどれ。 【OUCH] [笑い] しかし、我々はその場で彼のtを変更することができます。 私たちは、二倍のいらいらすることができます。 【OUCH] あるいは我々は次のようにそれを作る場合 time-- 1,000ステップ OK。 だから我々だけでは、その1を残すつもりです。 だからもう一度、私をblocks--構築 超簡単なもので開始し、 そして私は、機能を追加し、 機能を追加し、機能を追加しました。 そして、私はもはや心配する必要はありません どのようにそれらの特徴の第一 私は続けるとして実装されました 上に物事をレイヤに。 だから実際には、私はここで他のいずれかの操作を実行してみましょう。 私が先に行くと、そのファイルを開いてみましょう 私は羊と呼ばれる、事前にもたらしました。 だから、それはわずかに異なるがあります このように見える文字。 そして、私ができないなら、私は見てみましょう カウンタを使用して何かをします この中で、いわゆる変数をcase--。 私は先とEvents--下に行くつもりです 私は緑の旗をクリックもらいましょう。 そして、私は私が知っているデータへ行こう 直前に遊んでから、 変数がどこにあるかです。 そして、私は先に行くと、これをドラッグするつもりです。 カウンターと呼ばれるように可変し、 私はゼロに初期化するつもりです。 私はanything-- xまたはそれを呼び出すことができます Yまたはz--が、プログラミングで、 意味的に何かを呼び出します カウンターのような便利な方法、 それはそれはだ、それが何であるかについて説明します 後にコードを読み取ることが非常に簡単。 私が先に行くと取得してみましょう ここで永遠にブロックします。 そして、私はルックスに行こう ページとセイブロックをください。 しかし、どのような変数についてのクールなのは私です ちょうど何かを入力する必要はありません 我々はすでにきたハローのような世界、 行って、私の代わりにデータに行くことができます そして、さえ私の変数をドラッグし、 形状はなく、かなりんが それが収まるべきのように見えます、 それは埋めるために成長します。 そして、私はちょうど1のカウンターを言いますよ second-- spoiler--彼はカウントになるだろう。 私たちは、1秒間にそれを言いますよ。 それから私は行くつもりだし、 彼は1秒待つ必要があり、 それはあまりにも速くカウントされません。 そして最後に、カウンタを変更 他の言葉で選ぶ - により、 1によってカウンタをインクリメント 付加価値と永遠にこれを行います。 だから羊すぎる、など プログラマは、0からカウントします。 そして、我々は十分に長く待っていれば、 彼は永遠にこれを行います。 しかし、それはので、正確に真実ではありません 実際に、私たちは週1で発見するだろうとして、 より一般的には整数とコンピュータ、 技術的にのみfinite--も持っています、 コンピュータ、むしろ 彼らは整数を表し、 唯一の有限数のビットを持っています。 そこにこれらの電球 唯一の非常に高いカウントすることができます あなたは電球の外出前に。 あまりにも、コンピュータ、 だけなので多くのメモリを持って、 唯一の非常に多くのトランジスタを持って、 それだけで非常に高いカウントすることができます。 だから、羊ことが判明します 私は、20億に数えることができる、と思います またはかなり大きなもの。 だから我々はするつもりはありません これが起こるのを待ちます。 しかし、最終的にいくつかのバグが発生します それはいくつかの非常に現実の世界を持つことができます 波及効果。 しかし、羊を超えて、その 単に変数を導入しています。 それでは、先に行くと開いてみましょう 私は事前に作られたもの ここCat--ペットと呼ばれます こっち猫をペット。 そして、それは少数だここに気付きます ブロックが、ときに緑の旗 永遠に次のことをやって、クリックされました。 あなたはマウスに触れている場合 ので、画面上のカーソルをpointer-- arrow--演奏音ニャー そしてその後2秒待ちます。 そして、ちょうど永久にこれを行います。 ただ、常に待ちます pointer--かどうかを確認します 猫はポインタに触れている場合。 だから私はプレーを打ちます。 何も起こっていないです。 しかし、私は猫の上にカーソルを移動すると、 【MEOWING] そして、私はそれを離れて移動する場合、ありません もう猫を愛撫。 だから、いくつかの条件付きロジック ループの内部にネスト。 どのようにこの例について、故意に 猫をペットしないでくださいと呼ばれますか? これは何を行うに起こっているのですか? 【MEOWING] なぜあなたは猫をペットべきではないのですか? 【MEOWING] OK。 だから、これは他の場合の例です。 これは、決定点だと それはループに座っているので、 彼らは両方にチェックマークが付い取得しています。 これは本当ですか? これは本当ですか? これは本当ですか? これは本当ですか? そして最終的に、のいずれか それらは適用しようとしています そのため、あなたは鳴き声またはいずれかを聞きます その場合のライオンの轟音。 さて、もう少し派手なものをやらせます 私は、スレッドtoo--事前に行われていること。 だからスレッドが一つだけあります コンピュータが行うことができますもの。 だから、マルチスレッドプログラムでは、プログラムであります それは、一度に複数のことを行うことができます。 そして、これらの例の全て これまで持っていました そうspeak--するだけのスクリプト、 ここでこのアップのような一つのプログラム。 しかし、このプログラムは持って気付きます 2スプライト、2つの文字。 一つは鳥です。 一つは猫です。 そして、私はこれらのダウンをクリックしたときに気付きます 左、彼らはそれぞれ独自のスクリプトを持っています またはそれらに関連するプログラム。 そして、それらの両方 プログラム、通知、スタート グリーンフラッグとclicked-- cat--を見てみましょう 緑色のフラグがクリックされたとき。 だから確かに、私は今プレーを打ったとき、 二つのことを一度に起ころうとしています。 猫と鳥は両方とも 同時に動作する予定 この効果を作成することができます。 そして、あなたは何が起こっているのか想像するかもしれません。 ループと鳥があります そして、猫はループです。 鳥は同じようにバウンスされます 私は私が痛い言ったときに前にありました。 しかし、猫は明らかに利点を有しています。 別のセンシングブロックがあります それは意図的に猫を指します ここで、この場合の鳥に。 だから我々は見ることによって、離れていじめることができ これらのブロックを介して、何が起こっています。 しかし、ここで重要な成分は1です。 鳥、このゲームではないように、 完全boring--またはこのanimation-- ランダムな方向で開始します。 そして、コンピュータは、選んでいます 90と180の間の数 基本的に、それは少しだように、 異なるアニメーション毎回。 そして、もしここに気付きます 猫はその後、鳥に触れています 轟音sound--ライオン4をプレイ。 しかし、一方で鳥の中で パレットは、我々はこれを持っています。 いつまでも、猫に触れていない場合は、 わずか3ステップを動かし続けます。 そして、ここでは別のパズルのピースです。 あなたはエッジにしている場合は、バウンス。 だから、鳥はちょうど一種のです 自身のビジネスを気に、 ただ周りに飛んで バウンス、それは本当にです 条件ロジックを持っていた猫 それは鳥を捕まえていたかどうかを判断します。 大丈夫。 それでは、ここでは他のいずれかの操作を実行してみましょう、 この1こんにちはこんにちはこんにちはと呼ばれています。 そして、この1はここだけでありません 永遠にループでこれ。 しかし、我々はどのように停止しますnotice-- この非常に迷惑なプログラム? スペースバーを押してください。 私はそれを行う場合ので、 左手program-- それは常にだ気づきますlistening-- 鍵空間のプレスがあります。 スペースバーを押すと、 もしそうなら、それは何をするのでしょうか? これは非常に一般的な技法を行います。 これは、いくつかの値に等しい変数を設定します。 しかし、それは、その値を切り替えます。 [?だから外観?] 私はshape--に基づいて、 私の変数を持っています 呼ばれる事前に書きました ミュート、これだけでイエスと言うかいいえ。 音をミュートするかしませんか? 正しいか間違っているか? 予告、私は場合this--言っています ミュート、1に変更した後、ゼロであります 他のゼロにミュート設定。 だから、ゼロから1に値を反転させます。 私はそれを変更done--持つことができ 2から3と三から二に または四から五または六から四。 しかし、それは問題ではありません。 私は使用数、 あまりにも長い間、私は保つよう それに反対を変えます。 そして、ほとんどすべてのプログラマは、単に希望 、ゼロを選択し、偽と真選びます - オフとon--これを表現します。 そして、これはまだ実行されています。 私は再びスペースバーをヒットした場合 【SEALはSOUNDS] プログラムがまだ実行されています。 この他のスクリプトがありますので それは永遠には、次の操作を行いますと言います。 ミュート変数が等しい場合 zero--ので、あなたがミュートになっていない場合 それが偽かどうlogic--です またはnoの場合、サウンドを再生、 あなたがミュートされていないので。 その後、サウンドを再生し、する必要があります 2秒間こんにちはこんにちはこんにちは思います そして、次に待って、それを行います 何度も何度も何度も。 だから、このように我々はのための方法を持っています プログラムが対話するために人々がto--。 そして、彼らがする必要はありません 他の人のように日付を記入すること。 実際には、around--突っつい しゃれintended-- 誰かが膨大な量を費やし 実装インターネット上の時間 スクラッチでPokemonGo。 それも、であなたをgeolocates ケンブリッジまたはオールストンこちら。 だから、あなたも何人を見たい場合は 行うことができますthis--非常に凝ったメニューです。 こちらをクリックしてください。 これは、今、私の矢印キーで私です。 私はこの後に行くつもりです。 クリック。 そして今、あなたはPokeBallをクリックします。 私が意味する、私はあなたがいると思います PokeBallをクリックすることになって。 大丈夫。 だから私はそれをしました。 私はこっちに行くことができます。 そして、この人はいくつかの詳細を実装しました here-- 3 PokeBallsオーバーPokeBalls。 我々は、このへのリンクを掲載します オンラインあなたがプレイできるようにします。 しかし、通知がちょうどあります いくつかの基本的なビルディング・ブロック。 これは、多くの愛好家に見えますが、それがあります。 これは印象的な、よりです 我々は通常と比べて 期待して、確かに問題のためにゼロを設定します。 私はどのくらい見当がつかない この人はオンラインで過ごしました。 しかし、それだけでループすべてです。 音の演奏があります。 ループのいくつかの種類があります 私はかどうかのリスニング 上矢印または下を打ちます 矢印または左と右、 そうであれば、次に、それが動いています そのピクセルのいくつかの数。 そして私は、上のクリックした場合 別のスプライトは、あります そこにあれば条件のいくつかの種類。 うん、これはあまりにも強烈なっています。 私たちは停止するつもりです。 これは、これらすべての基本的なビルディング・ブロックです。 他のいかなる他の成分はありません 我々はすでに見てきたものよりも。 そして、まだここでは、させて頂きます 例の一つ最終セット それはあまりにも映像を塗ります あなたがここに何ができるかの。 ここでは非常に単純なプログラムだという ちょうどthis--咳、咳、咳をします。 そして、のみに基づいてどのような 我々はこれまで見てきました、 ここで明らかです 改善の機会。 このプログラムは正しいです。 これは、三回の咳 これは私が意図したものです。 しかし、それはあまり実装です。 これはひどい設計されています。 どうして? うん。 これは、ループではありません。 そして、それはそんなにありません それはループではないことを、 それは多くの冗長性があることです。 そこにコピーされ 貼り付けコード、いわば。 おそらく、およびソリューション 確かにループです。 だから私は先に行ってみましょう その時に改善。 そして、私はこっちこれらをドラッグするつもりです。 私が先に行くとリピートを取得してみましょう ブロックは、3に変更します。 私は捨てるつもりです これらのブロックの一部。 そして、あなたはそれはかなり直感的に気づくでしょう。 あなたはドラッグ&ドロップすると、物事 表示され、最終的には消滅します。 そして、私はちょうどここでこれをドラッグして、することができます 今私はまだクリーンなバージョンがあります。 しかし、あなたは何を知っていますか? この機会があります 今abstraction--用 新しい語彙を定義するために開始します MITは予想していなかったこと。 待って、リピートあります 永遠とあれば、 しかし、私が紹介したい場合はどう ブロックとしてワード咳? 私は、パズルのピースをしたい場合 その目的は生活の中で咳をするのですか? さて、このバージョンを見てみましょう ここでは、次のように私が作っています。 魔法、私が作成しました ここでは、このパズルのピース、 これはスクラッチあなたが行うことができます。 そして、実際にCとPython そして、JavaScriptです あなたにもこれを行うことができるようになるだろう。 独自のカスタムを作成することができます あなたが欲しいものを呼び出すの作品。 この場合、咳は感じています 合理的な定義など。 そして、これらの作品でダウン ここであなたはそれが何を意味するかを定義することができます。 私はドラッグとからドロップ このパレットはhere--より この大きな紫色のblocks-- 私は咳で入力したブロック、 私の新しいパズルのピースの名前として。 そして、私は、ユーザーの任意の時間を言っています この新しい咳パズルのピースを呼び出し、 言うと、待機を行います。 だからここまで私のリピートブロックで、 私はちょうど3回咳をすることができます。 そして、私は特に、主張するだろう 今場合は、この詳細を非表示にします。 誰が咳がどのように実装されるか気に? 私のように気にすべての 私は咳をすることができますプログラマ。 私は言うがどのように実装されるか気にしません。 私はちょうどことを気に 猫は何かを言うことができます。 私はでき抽象化、その詳細と ここでしか画面に何に焦点を当てます。 しかし、私はさらに、この一歩を取ることができます。 ここでは、私が持っていることに注意してください ループ3回実施しました。 しかし、どのような場合には代わりに私はこのバージョンをつかみますか? そして、何の代わり場合 ここでは、このバージョンでは、 私はちょうど取るために私のパズルのピースを変更します それ自体が引数と入力? そして、その入力をすることができます 3のような数。 だから今、私はプログラムを書いていた場合 そして、私は猫が咳をしたいです、 私は実際にパズルを伝えることができます 咳をする回数をつなぎ、 ここでは一番下に、愛好家のため これらのカスタムパズルのピースのバージョン 私はそれを指定することができます 咳は実際にかかります input--は、このような引数を取ります。 そして、あなたは何を知っていますか? たぶん私はちょっと待って、実現しています。 咳はsame--です それは根本的です くしゃみと同じ考え方。 それはちょうど違います 画面上の単語。 私は、抽象離れてすることができます さらに、実施 この最終版 咳、これは一見 探している方法より複雑です。 しかし、私が何をやったかがわかります。 私は今持っているジェネリックgeneralized-- このパズルのピースをreally-- 呼ばれる単語をn回言います。 そして今、私は2つの新しいパズルのピースを持っています ダウンここで咳をn回定義します。 そして、咳機能は何をするのでしょうか? 私のカスタムパズルのピースは何をするのでしょうか? それはちょうど発言ブロックを呼び出し、 私が言いたい言葉を渡し、 番号を渡します 時代の私は言いたいです。 今私が実装することができますので、 単にハクション!と言ってくしゃみ、 この場合は、何回か。 そして私は層化とレイヤーしています。 そして再び、ここで重要ではありません どのように私はそれを実装し、実際 その場合、私だけ文字通り 画面をオフにこれらを移動し、 見てどのように単純ではない場合 かなり私のプログラムは今見えます。 それは何をしているので 私は抽象化しました、と言います そのブラックボックスの内側に離れたものです。 それがここに紫色のボックスであることを起こります、 内部に何が、私は離れて邪魔しました 私はそれがどのように動作するか気にしないので。 私はちょうど今、それが動作することを気に。 そして実際、問題で ゼロを設定する、これは正確です アイデアの階層化の種類ますよ 探求する機会を持っています。 それは、まさにへの機会です 問題解決の手法を適用し、 おそらく何に 不慣れな環境。 そして、あなたがプログラムされていないたかどうか 前または前にプログラムされ、 あなたはそこだことがわかります 少し何か 皆のためのこのような環境インチ そして、問題に​​設定 週の時間で1、 私たちは、フォーカシングに移行されます 呼ばれる、より高いレベルの言語での C--というより低いです 呼ばれるレベルの言語 さらに多くのですC-- それはだにもかかわらず、強力な もう少し、一見不可解。 そして、あなたは、今日のTLごとに実現します:DRを、 設定されたこの問題は、より短いがあることを 将来のものよりも時間の窓は、単に あなたはそれをかなり見つける必要がありますので、 アクセス可能。 そして、ても心配することはありません あなたは遅れてクラスを追加します。 私たちは、その前に長い対処します。 私たちはケーキのため休会前と、してみましょう わずか2分の表情でフィニッシュ CS50ここであなたを待って何で。 [MUSICのPLAYING] 大丈夫。 つまり、CS50のためのそれです。 私たちはすぐに表示されます。 ケーキは現在提供しています。 [MUSICのPLAYING] SPEAKER 17:あなたは聞いたことがあります サバティカル、チーフの? SPEAKER 18:おそらくあります フードの下より。