教授:だからの議題 今週、それほどではないもの。 しかし、うまくいけば非常に、非常に有用 そして皆さん、今週に関連します。 しかし、我々は、多分15を過ごすつもりです ちょうどすぐに話を20分 リンクリストについて。 リンクリストがしようとしています クイズに覆われています。 だから、おそらくそれは非常に参考になります それが何であるかについて少し学びます。 私たちは、広大なを過ごすつもりです 今日のセクションの過半数 クイズゼロ練習問題の上に行きます。 そして、我々は多分20、30分を節約できます 任意の余韻の質問のための終わりに 誰もが持っています。 そして、最後に 5分、私は行きますよ クイズのためにスピーチをポンプを放棄します。 君たちはすべてのことのためにここにいたいです。 それは良い時間になるだろうから。 すべての権利なので、いくつかの リンクリストの材料。 どのように彼らは一般的に構造化しているあります あなたは正しい、ノードと呼ばれるものがありますか? あなたはと呼ばれるこれらのものを持っています ノード、構造体です。 私が作成する方法の上に行きますよ 次のスライド内のノード。 しかし、本質的にすべてのリンク データはリストであります ポインタを経由してつなぎ合わせてきました。 そして、私たちが持っている利点 リンクリストの上を使用するのではなく、 おそらく、配列のように、あります その配列内の事実 あなたは、1つの連続ブロックを必要とします すべての同じ場所でのメモリ、1 別の後に、それを持ってできるようにします。 リンクリストのに対し、あなたは可能性 メモリのランダムな小さなビットを持っています すべてのコンピュータの上 ポインタによってつなぎ合わせ。 このようにします 情報にアクセスすることができます それは次々来ます 他の後に、他の だけの巨大な塊を必要とせず どこかお使いのコンピュータのメモリ。 そして、これは主要なの一つであります 我々は、リンクリストを使用する理由。 第二に、それは動的には非常に簡単です なぜなら配列のリンクリストのサイズを変更し、 あなたは配列を宣言するときに、 あなたは、特定の設定値を持っています。 のは、私が作成したいとしましょう 10整数の配列。 私は10の配列を作成 整数、それはそれです。 それは10です。 私はそれの後に何をすべきかわかりません。 私はそれ11作りたい場合は、それを行うことはできません。 私はそれ9を作りたい場合は、それを行うことはできません。 リンクリストのに対して、あなたが追加することができますし、 削除して、必要な場所に挿入します。 あなたは、動的にサイズを変更することができます ここで構造、あなたのデータ構造。 そして、それは私たちに多くのことを与えます より柔軟性 我々は一般的にないこと 配列で持っています。 誰もが基本的に混乱しました リンクリストがいかにの構造 または、なぜ私たちは、アレイ上の1つを使用する必要がありますか? ええ、私たちは詳細に渡って行きますよ どのように実際に1を作成します。 しかし、これは一種のちょうどです 今一般的な意味。 クール。 そしてそうアレイは一緒に張られています これらの素敵なささいなことの ノードと呼ばれます。 すべてのノードは、構造体の型です。 あなたが望んでいた場合は構造体であり、覚えておいてください 変数の特定のタイプを作成します C言語でそれはまだありません あなたがプログラマとして、存在して、 実際に自分で作成することができます。 データのの​​で、このタイプ 構造はノードと呼ばれ、 実際にすることを、私たちが作成しました 独自にC内に存在しません。 そして、あなたの方法に あなたが持っているある1作成 typedefは構造体のヘッダ、 これは私は、コンパイラに指示します 構造体を作成しよう。 我々はそれに名前を付けるつもりだ」ノード。」 そして、内部の私たちはなるだろう で変数を宣言するには、 値を格納しようとしています。 そして、我々はまた、しようとしています 「次の」と呼ばれるポインタを有しています それは次を指します リンクリスト内のノード。 そして、あなたはそれを終えます ちょうどようにノードを再度繰り返すことにより、 コンパイラは、[OK]を、知っています それが私の構造体の終わりです。 だから、このように、我々は親切です かわいいアレイを作成します との事のようなもの 値とポインタで。 そして、あなたはそれらすべてをリンクすることができます 一緒にこれらのポインタを持ちます。 それらは、すべての種類のことができるように チェーンでつなぎ合わせ。 クール。 あなたは少し良くすることを聞くことができますか? 聴衆:うん。 教授:すべての権利。 だからみんなが見ることができるよう、方法、 典型的なリンクリストが構成されています あなたは頭を持っています。 あなたではありませんヘッド値を持っています 他のポインターが指し示すされています。 しかし、それはを指すように起こっています、 または参照、別のノード。 ノードは、後に参照するために起こっています ノード、などなど、その後 あなたは最終的にヒットするまで、 あなたのリンクリストの最後。 そして、あなたはただそこにポインタを持っていません。 そしてそう、でもチェーンに、のように考えますか、 君たちのいずれかがなされた場合、私は知りません、 フルーツループと同じように あなたは少しだったとき。 あなたは、文字列は一緒だろう そしてあなたの首の周りにそれらを身に着けます。 それは同じことだと思います。 あなたはこれらの小さなものを持っています することができます一緒に文字列1に、そのポイント それの後、次々に また、などなど あなたは、チェーンを持つまで データ構造 あなたが好きしかし、あなたが使用できます。 この私たちはなるような方法 通常、挿入または削除 リンクから任意のノード リストは非常に異なっています そのノードがどこにあるかによって異なります。 だから、例えば、なぜなら ポインタが常にあります 特定の値を指し、 削除またはノードを挿入すると、 あなたはポインタをことを確認します すべての正しいことを指しています。 だから、あなたが潜在的に挿入したい場合 1の値を使用して新しいノード ソートされたリンクの内側 リスト、我々はすべてここに知っています に起こっている画像から 右、頭と2の間に行きますか? 一つはすぐそこに収まるので。 しかし、方法は、ここで我々はそれを行うだろう 最初のポインタを逆参照することです 頭から一つにそれを送信します。 しかし、我々はここでの問題の中にいます。 誰もがどのような問題が確認できます 我々は最初のデリファレンスした場合であります 頭から1へのポインタ? 何が問題私たちがしようとした場合に実行される可能性があります 私たちの配列の前にこれを追加するには? 聴衆:[聞こえません] 教授:その通り。 そこでここではあったポインタを持っています かつて2頭から指しています。 しかし、あなたはそのを取り除く場合 ポインタは、1つを指すように、 我々は今は考えています ここ2を見つけるために行きます。 私が前に言ったように、あなたが持っているので お使いのコンピュータのメモリの巨大な塊。 これらのすべてのノードができました ランダムに散在します お使いのコンピュータの任意の場所です。 そして、あなたが方法がわかりません それを見つけることについて移動します。 だから、あなたはポインタを持っている必要があります 最後に、すべてのノードを指しています。 そうしない場合、誤って 1間接参照 最初に割り当てず 最初の値、あなたがしています ただ失うつもり その後すべてのもの。 それでは、私たちがしようとしています 行うには、まず、あるだろう 上のポインタを作成したいです ノードは、あなたが挿入します。 どこにそれをポイント にそれを挿入します、 して、後であなた 1に戻って頭を向けることができます。 それは、ここでみんなに意味がありますか? グレート。 ちょうどチェーンのようにと考えてください。 あなたがチェーンを追加した場合、 それは、直感的なのようなものです どのようにそれを挿入して行くと思います。 [OK]を、ので、それははるかに実際にあります 私はそれがあることだろうと思ったよりも短く、 リンクリストの5分熱弁。 あなたたちは持っているだけので それが何であるかの基本的な考え方。 ここでは、クイズゼロの議題を持っています。 これがあなたを威嚇せてはいけません。 私はそれが多くの情報を知っています。 それは非常に怖い見えます。 それはまた、私のたくさんです 用語のCSCのようなもの、と考えています。 16進文字列のようなもの、 ポインタ、動的なメモリ割り当て 非常に恐ろしい響きの用語です。 しかし、我々は彼らを破るしようとしています ダウン、いくつかの練習問題を行います そのようにあなたたちすべて このテストの準備ができています。 どのように多くの皆さんの持っています すでに勉強を始め? [OK]を、君たちはおそらくしたいです 始める開始します その上で、クイズは明日からです。 それとも、いくつかのための木曜日。 ええ、私たちは行くつもりです いくつかの練習問題の上に。 君たちは、すべて取りたい場合 一枚の紙、鉛筆アウト。 私達はちょうど過ごすつもりです 今日のセクションの大半 あなたたちは持っているので、その一部の上を行きます クイズに何を期待するのアイデア。 OK。 物流のカップル 誰のための詳細と、 誰があれば、そこにそのリンクになっていません あなたが前面に、cs50.yale.eduに行きます このページのリンクがあります それは、「クイズゼロいます。」と言います リンクが表示されます。 あなたがそれを読んでいない場合は、それをお読みください。 それはあなたが本当に重要伝えているので クイズに関する情報。 私はからこれを引き出すつもりです その理由だけで、物理的に、 あなたたちは、場所がわからない場合は、 行くために、我々は問題が発生します。 そして、Aとの観点から、もしそうなら、あなたの最後の Nに、ロースクールの講堂に移動します。 そして、もしPとのあなたの最後の開始 Zに、デイヴィス講堂に移動します。 そして、これはのみに適用されます 水曜日のセクションの人々。 あなたは上のクイズを取っている場合 木曜日には、SSS 114に行きます あなたの講義は、通常です。 聴衆:[聞こえません] 教授:ZへのOは、あなたが行っています デイビスの講堂に移動します。 私は右、それを変更するつもりですか? ああ、ええ、あなただけ自動的に失敗します。 そうそう、それはあなたがクリスタです。 ええ、私の悪いです。 うん、ZにOが、あなたが行っています デイヴィスAuditorimに移動します。 私がアップロードしたら、この問題を修正するつもりです。 うん。 そして、また何か 心に重要な 水曜日は、あなたが正式にされている場合ということです 水曜日のセクションに在籍し、 あなたは水曜日にあなたのクイズを取る必要があります。 そして、あなたは木曜日に在籍している場合、 あなたのクイズ木曜日を取る必要があります。 そして、それは授業時間中です。 どこで、私はそれが1:00のようなものだと思います 水曜日の午前2時15分と午前2時30分に午前3時45分 木曜日に。 あなたは競合状態を持っている場合は、 ディーンの言い訳は唯​​一のものであり、 残念ながら、我々は取ることができます。 私たちが持っていたので 要求の大部分 木曜日水曜日から切り替えます。 どの我々がない限り尊重することはできません 我々はディーンの要求を持っています。 OK。 私たちはを始める前に、そう 練習問題のカップル、 私はわずか行くつもりです 成功のためのアンディの役に立つヒント。 あなたは本当にみんな、あなたが勉強し、あなたが 手でコードを書く練習をしたいです。 初めてこれまで私 CSのクイズを取った、私はしていませんでした 手で実際の書き込みコード 前にそれが非常にありました それがいかに困難で衝撃的。 君たちはに取得しない場合には すべてを入力するのは習慣、 それは非常に自然にされてきます 自動補完していることができます そこにブラケットとセミコロン。 あなたはそれを記述する場合 手で、時にはそれがです セミコロンを忘れることは非常に、非常に簡単に、 またはブラケットを閉じることを忘れ、 またはコロンを閉じることを忘れ、 またはそのような何か。 だから、手でコードを書くとき、 それは非常に異なった感触です。 だからみんな、あなたが作業しています 練習問題のいくつかを介して、 それは実際に今日練習する良いでしょう。 あなたがしている場合か明日、私は、と仮定します 木曜日にクイズを取ります。 第二に、我々は次のように、最後を持っています、 練習の8年分 オンラインクイズ。 今年のクイズは、おそらくになります それらのすべてに非常に、非常に似ています。 彼らはすべての非常によく似ています。 あなたは親切なのに入ります 質問の種類のスタイル 我々は聞いていることを、種類の 私たちはそれを書くつもり機能、 エトセトラ、エトセトラ。 だから、練習クイズを取ります 特に時間的な制約の下で。 クイズを行うための75分されています 時間の量の多くありません。 それは非常に、非常に長いです。 だから君たちは本当にしたいです 君たちがあることを確認します 書き込みの癖で すぐに手でコード。 あなたが最初にしたくないので、 その長さのクイズを参照するには時間 クイズになります。 君たちは本当に確認します あなたが事前に練習していること。 第四に、あなたは確認したいです 講義と切片スライド。 あなたは物事を暗記する必要はありません。 実際には、誰もが許可されています ホワイトペーパーノートの一枚、 前面と背面。 君たちは入力するか、書くことができます。 あなた自身が記憶する必要が判明した場合 何でも、そのシートの上にそれを置きます。 私はあなたを保証する、あなたがしたくありません そのクイズの途中で立ち往生します そうそう、何、ようなもの その種対この種の実行時。 ちょうどそれを置いて、それをコピーします ストレートご了承シートから。 次に、あなたが実際には使用することができますあなたの 問題について考える脳 むしろ事実をリコールしたよりも。 だから本当に活用します あらゆるニッチの詳細 あなたが暗記する必要があると思うこと、 レビューシートの上にドスンと座ります。 [OK]を、任意の質問ロジスティック クイズに関する 我々が開始する前に、いくつかの クイズの問題は練習しますか? うん? 聴衆:私はチャンスがありませんでした クイズ[聞こえない]を見て それがあることを行っています ほとんどのアプリケーション、 あるいはまた、があるように起こっています、 以下のように、知識の質問? 教授:それはたくさんです。 私だから、道 クイズを記載う is--私は一緒に入れ いくつかの練習問題 私はすべてのクイズから引き出されていること。 しかし、あなたは、2つの主があることがわかります 質問の種類は、私たちはあなたを求めるで​​しょう。 一つは、ものの非常に低いレベルの詳細です。 私たちはあなたのコードの小さな塊をあげます そして、言って、エラーがここにありますか? ここで何を印刷するのでしょうか? このコードは、エトセトラ、何が生成されます。 だから、非常に低レベルの情報の詳細を表示します。 フリップ側では、我々は非常にあります ハイレベルの知識ベースの質問。 あなたは何を説明することができます 二分探索の違い リニア検索とは? なぜ我々はしたいと思います 他の上の1つを使うのか? おそらく、GDBは何ですか? なぜ我々は、GDBを使用したいのですか? より高いレベル、より根本的な 質問を理解します。 だから、の混合物が表示されます クイズの二人。 我々の前に何か他のもの まっすぐに向かいますか? OK。 聴衆:もう一つ。 教授:ああ、もう一つ。 ごめんなさい。 聴衆:ええ、それはすべての権利です。 だから、75分を言っているあります それがそうであるように、短すぎます 我々は終了しますその? また、のような、75分 正確に同じくらいの時間です 我々があった場合、私たちは必要になりますように 適切に準備? 教授:[OK]を、ので、 クイズは困難です。 これは間違いなく困難です。 あなたは時間に自分が短いでしょう。 あなたはおそらく、10のように、ヒットするつもりです 15へ行く分、たわごと、ようなもの。 私はあまりを行うに残っています。 そして、それは完全に罰金です。 誰もが同じように感じるだろう。 ただ、非常に注意してください どのくらいの時間、あなたは持っています。 私はあなたを教えてなぜ、そのためです みんなは練習クイズを行います。 それは本当に素晴らしい感覚を与えるので 何のクイズは次のようになるだろう。 だから、自分がされて発見した場合 練習を終えすることができます の良い量でクイズ 時間、あなたも自分のペースすることができ、 あなたは問題がありません 水曜日か木曜日に。 クール。 だから私は誰もが思うwants--場合 ほとんどの人は、紙のシートを持っています すでにアウト。 私は基本的にするつもりです あなたのサンプルの質問を与え、 Aのように、君たちを与えます それらを行うには数分。 そして、私たちはクラスとしての上に行きますよ 何それらに対する回答を示します。 だから、これは非常に典型的です 我々はよ早めのご質問 ただ変換、あなたを求めます 異なる拠点間の数字。 バイナリ、君たちことができますように リコールは、ベース2です。 小数点は、ベース10、または私たちがあります 人間は一般的に解釈するように。 16進数ゼロであるベース16であり、 〜9と同様にFまで だから、私は4つの数字があります ここで変換することが君たちを尋ねます。 私は、あなたが好き〜3をあげます どのように通って考える4分 我々はこれを解決するに行きますか。 聴衆:私たちは電卓を許可していますか? 教授:あなたはしません ええ、電卓を必要としています。 私は基本的な添加は、私が思う、だと思います すべての皆さんが行うように求められます。 そして、ちょうどので、私は一種の感覚を持っています 誰もが実行されたときの、ルックアップ 波は、私は、笑顔を知りません、 設定が完了した場合に幸せそうに見えます。 うん。 多分カップル分以上。 [OK]を、のはそれを持ってみましょう。 私は意図的に行きますよ みんなにあなたのより少ない時間を与えます あなたはおそらく必要以上に これらの問題のいくつかの操作を行い、 私はそれを確認するというだけの理由 我々は問題の束を介して取得します。 だから、心配ありません、あなたがしなかった場合 終了するチャンスがあります。 あなたが持っている限り、完全にOK このについて移動する方法のアイデア。 それでは、先に行くと最初のいずれかを実行してみましょう。 したがって、最初、誰も私に伝えたいん バイナリでは、どのようなこれらの数字をそれぞれ行います それらの値の点で表しますか? うん? 聴衆:2つに 電力ゼロ、一から二。 教授:その通り。 Soが 右ので、一般的に 我々は、ベース10にいるとき これらはすべて、のような、している表します ゼロのベースに10、右? それはあなたの1の場所です。 あなたのすべての10の場所があります 1の電源に10。 あなた100の場所は10です 2のべき乗に。 どのようなベースあなたが起こっているにしています 全く同じことを行うには、 ちょうど別の塩基で。 だからバイナリ、すべてのことは、ベース2です。 あなたはすべて変換するつもりです どのようなパワーに2つに桁 その数字の。 ので、この意味では、我々 もっと簡単な方法を持つことができます まで追加することができるというのか ために、すべての数字を合計 ベース10に変換します。 だから、誰もが何を教えたいん 最初の答えは、ベース10にありますか? 聴衆:二つの、[聞こえません] 教授:ええ。 聴衆:42。 教授:42、そこに行きます。 だから我々は、この答えを得た方法があったことにより、 2である、最初の二つをやって。 プラス2〜8である第三、。 プラス2、第五にします 残されているものです。 あなたはそれらを合計し、それは42です。 我々はそれを得た方法上の誰も混乱しますか? 以下のようなので、基本的に加え、 私はあなたがOKであるべき、と述べました。 ない場合は、よく、私たちもそれを練習することができます。 しかし、それは大丈夫です。 クール。 誰も私に与えたいと思うん 同様に第1に答えますか? 50? 良い。 どのように混乱し誰でも 我々は、いずれかのことを得ましたか。 クール、私が持っているでしょう 次のスライドに回答。 だから、何の心配もなく、あなたの場合 それをコピーする必要があります。 [OK]を、ので、進は少しトリッキーです。 私は君たちを表示するつもりです それを行う方法のショートカット。 進だから、あなたのように すべてのそれは16にすることで、覚えておいてください。 そして、人間が実際にしていないため、私たちのように それを表すために16の番号を持っています、 私たちは私たちの最初の9つのゼロから行きます 10の値は、その後、我々は、Fを介して行います これは次の6つの値です。 からどこへ行くので、最も簡単な方法 16進数に任意のバイナリ数 半分にそれらを分割することです。 そして、私たちがあげる任意のバイナリ数 おそらく8桁になります。 あなたは破ることができます 途中でそれらをアップ。 したがって、最初の選ぶ - 1 1、 一つ一つ、1、1、1 1。 種類の、あなたが知っている、それを考えて描きます スラッシュまたはそれらの間にカンマ。 そして、あなたは、単に変換することができます 直接どのような これは、最初にあります 進数、 そして、、ここで何をしています 16進数秒。 だから、一般的な表記法から覚えています、 どのような16進数値で始まるのですか? 聴衆:ゼロ。 教授:0X。 だから我々は、任意の時間は、我々はあなたを求めることを知っています 16進数に任意の数を変換します、 あなたが任意の参照または任意の時間 0Xで始まる番号、 あなたはそれが16進数の値だということを知っています。 そして、あなたはに尋ねたことになるだろう これら二つの数字が何であるかを決定します。 そして、あなたのやり方は、最大集計、ということ その半分と半分を集計。 したがって、この例では、どのような 一つは、1、1、1はでしょうか? それは何の値でしょうか? それは右、Fだろうか? それは15になるだろう。 だから、これはFで一つになり、 ここ1、1、1にもあります F.だから1、1、1、1、1、1、1、 16進数で1、それはすべてが0XFFです。 この半分が表さので、 F、15の値、 この半分が表さ F値15。 覚えているので、私たちはしています ゼロから9までカウント。 Aは、Fは15で、Bは11のようなものです、10のようなものです。 どのように皆に意味があるかという 我々は、16進数にバイナリから得ましたか。 聴衆:だから、私たちはどのようにして手に入れました 1、1、1、1から15? 教授:うん、これは右、バイナリのですか? これはただの二進数である想像してみてください。 だから、2つにを持っています 1でゼロ番目、。 聴衆:ああ、[OK]をクリックします。 だから、あなたはそれを合計します。 教授:ええ、その後、 あなたはちょうどそれを合計します。 それはそれはすべてです。 聴衆:[OK]をクリックします。 教授:[OK]をクリックします。 聴衆:だから、バイナリから行きます 16進数に小数するには? 教授:それは そうするための最も簡単な方法は、ええ。 あなたはので、小数するつもりはありません 小数はわずか9にゼロを持っています。 私達はちょうど種類のです 二つにこれを分割。 聴衆:[聞こえません] 見つけるために小数を使用して 何それは16進数にまでマッチします。 教授:私は意味、あなたがしています 基本的な数学を使って集計。 聴衆:うん。 教授:うん、かなり。 それは少し混乱しています。 しかし、あなたことを知っています 何を分割することができます この値は、ちょうど半​​分にあります。 見て、これはバイナリで何ですか? それは何番ですか? これは、になるだろう ゼロからFに何か ここでもあることを行っています ゼロからFに何か そして、あなただけ置くことができます 右がこれら二つ。 聴衆:[OK]をクリックします。 教授:うん。 OK。 だからみんながしたいです その後、次のいずれかを試してみてください! ゼロ、1、ゼロワン、 1、ゼロ、1つのゼロ。 私はあなたの30秒のような連中を与えるでしょう、 あなたはおそらく知らなかったので、 これ以前のバージョンを実行する方法のトリック。 [OK]を、誰もがこの1つをショットを取得したいですか? 0X5A。 教授:0X5A。 図5a。 良い。 だから、これは、ここであなたが望むbe--う あなたがそれを得た方法を教えますか? まず、どのように5を得たのですか? 聴衆:ゼロので、 1、0個、1個は5です。 教授:誰もが理解しています なぜ、0個、1個、0個、1個が5? ここに1を持っています。 最初の二つには何もありません。 2第二に、あなたを 4であるものを持っています。 だから、4プラスを追加 1、あなたは5を持っています。 みんな良いですか? OK。 そして、何これはである、なぜ? Aは、どのような数を次のように対応していますか? 聴衆:10。 教授:そして、何このベース2で? 聴衆:[聞こえません] 教授:その通り。 そこでここでは、この2番目の値が0X5Aだろう。 みんなに変換する方法の良いですか? それはあなたがそれが思っているよりもずっと簡単です。 私はちょうど確認します あなたは役に立つヒントを知っています それを行う方法についてやトリック。 聴衆:なぜあなただ​​け分割することができます それそのような途中で? ただ、[OK]を、私はするつもりだ、のようなもの これらの最初の[聞こえない]を気に? 教授:それは実際だから 道の16進値が表現されます。 実際に意味0X、 あなたを伝える以外には何もありません それは16進数だという。 そして、これは常に表し 最初の4桁。 そして、これは常に表し 最後の4桁。 だからこれらの2桁だけ 異なるビットに対応しています。 聴衆:だから私たちはalways--ます 教授:あなたはいつもしています 8値のビットを取得するつもり。 観客は:だけのものが好きということです ここに、またはすべての上の事こと? 教授:それはちょうどです コンピュータでの事、うん。 聴衆:[OK]をクリックします。 驚くばかり。 教授:また、この例ではそう 我々は、2進数から10進数への変換から バイナリから16進数に。 君たちはまた、あなたを確認します 周りに他の道を進んで実践しています。 私はあなたに0XFFを与えたのであれば、あなたは可能性 右、バイナリのそれを引き出しますか? あなたは、バイナリにFを変換します ある1、1、1、1、 これは、バイナリFに変換します 一つ一つ一つものです。 だから我々は何をお願いすることがあり 他の方法で回避。 だから、バイナリにDECIMAL、または バイナリへの進。 だから、作りたいです あなたは両方の方法を知ってください。 私たちは、おそらくあなた頼みますよ 二つの組み合わせ。 うん、あなたは疑問がありますか? 私はあなたが良いですsee--ことができますか? 聴衆:うん。 教授:[OK]をクリックします。 私はこれを消去してもいいですか? グレート。 誰もあれば答えはここにあるので、すべての権利 後に好奇心旺盛で、混乱してしまいます。 OK。 観客:我々は置けば、それは問題ではありません 首都または小文字で私たちの手紙? 教授:それはない、なぜなら 16進数で、慣例により、 すべての文字は大文字です。 だからFまであります 大文字になるだろう。 あなたは小文字のaを入れた場合、私は知りません 私たちは必ずしも、それが間違ってマークするならば。 しかし、理論的には、 それは技術的にはありません どのようにそれを持っていることになっています。 そこで、彼らはすべて大文字でなければなりません。 うん、良い質問。 OK。 2番目の質問。 ここにこの素敵なプログラムを考えてみましょう。 私は質問をするでしょう、 私はこれを戻ってきます。 そこで、まず、標準の内部で何が そのio.hプログラムに関心のですか? 第二に、ボイドが何を ライン3に意味? そして第三に、何からゼロを返すん メイン、ライン6のように、一般的に意味? あなたたちはそれらを書きたい場合 私は戻って切り替える必要があるため、ダウン スライドにちょうどあなたがコードを見ることができます。 これは、のような、多分の例であり、 私たちはあなたを求める、より高いレベルの質問 何の事は、プログラムに意味します。 私のために良いみんな スライドに戻りますか? うんいいね。 だから私はあなたに多分3のような連中をあげます この1実際に素早く見て分。 [OK]を、ので、この1のような 概念的に、かなり簡単。 何誰もが私に伝えたいん 含むハッシュによって第1内側 当社の標準io.hライブラリファイル? なぜ我々はそのライブラリが必要なのですか このプログラムに含まれますか? ここで私たちは何のためにそれが必要なのでしょうか? うん? 観客は:されたときに あなたはそれのprintfを置きますか? 教授:その通り。 あなたはいつでも、だからprintfの ユーザからの入力を取ります 印刷何か 画面に、それはです 標準入力、出力ライブラリ。 、出力を入力しway--ことと考えてください。 私は出力を持っていますか? はい、そうです。 だから私は、私はいつもするつもりだことを知っています 標準化のi.oライブラリを必要としています。 だからのprintf関数であります これによって、私たちはアクセスする必要があります そして、ハッシュタグは、 標準i.oライブラリ。 OK。 第二に、ボイドが何を意味するのでしょうか? 私たちは何をするか、int型メイン(ボイド)を持っています ここで無効ライン3にここで意味ですか? うん、戻りました。 聴衆:[聞こえません] 教授:その通り。 だから我々は学んだ、覚えています 私たちのpsetで始まります あなたが実際にできること コマンドラインを指定します 引数プログラム、あなたのこと 主な機能は、あなたのようにユーザーをとり、 それを呼び出します。 私たちは、ボイドがあれば、それはあなたということ 単にプログラムを直接実行することができます 任意のコマンドライン引数なし。 その上で明確な誰? OK。 そして最後に、なぜ我々はやって気にしません ここで、この戻りゼロのこと? なぜ私たちも、int型のメインがありますか? 私たちは無効メインの空隙を持つことができないのはなぜ? うん? 聴衆:ちょうど私たちすることができますように プログラムがあることを確認してください 成功裏に終了します それが数えられた場合には反対しました。 そして、我々はそれがだと知っているだろう エラーの異なる種類。 教授:うん、まさに。 これは非常にだけです 私たちは従来のもの、 それはただの端にあり あなたのプログラム、念のため あなたの主な機能はその 正しく実行されています、 私たちは常にリターンゼロをしたいです。 でも私たちは必ずしもかもしれないが それはどこにも印刷され表示されません。 プログラマとして、あなたが知っている、もしので、 あなたは、コードの多くの異なるラインを持っています あなたがどこかわかりません これらは、間違って行きます エラーが発生した場合、あなたがしたいです あなたがそのエラーを取得していることを確認してください。 だから一般的に何かが行く場合 私たちは一つだけのリターンがあるでしょうが間違っ 我々はそれがあることを知っているかどうかを確認します。 ですから、リターンが表示された場合 その一般的にはゼロ、 あなたのプログラムがあることを意味 正常に実行されました。 良い? クール。 [OK]を、ここでは第2のプログラム。 それを考えてみましょう。 そして、あなたたちが見たら フロート、君たちはおそらくすることができます 何の良いアイデアを持っています 私はあなたを聞いてんですよ。 だからときに、このプログラム あなたが見ることができるように、実行され、 私は、フロートを宣言しています 私の主な関数の内部。 私は "、答えを「名前を付けていると私は設定してい 10で割ったものに等しくなること。 私は1つに、プリントアウトしています 小数点以下の桁数、そのフロート。 そして、私はゼロを返しています。 だから、プログラムを実行する際に、 すぐに戻って貪欲に考えます、 このプログラムは、0.0を出力します。 我々はすべて知っているように、うまくいけば、我々はすべて 10で割ったものは0.00ではないが、知っています、 それは0.1です。 このプログラムは考えしかし、なぜ説明 他の0.1に10プリントで割ったもの1 0.1よりも? 私はあなたかもしれない30のような連中をあげます ちょうどすぐにそれについて考える秒 私は戻ってプログラムに行きますよ。 OK。 誰もがそれに打撃を与えたいと思いますか? 3文以下では、 通常、私たちはしているので、 すべての答えを制限するつもりは 3文以下に だからあなただけの逆流はありません あなたのクイズへのランダムなもの。 うん、写真を撮ります。 聴衆:だから私はこれがあると思います 以下のように、というもの、[聞こえません] だからがあるかもしれません、例えば、 0.09、のような、あるかもしれません、 あなたが最初の印刷どこにいます 数字は、それが0.0になるでしょうか? 教授:全くない、閉じます。 Christabell? 観客:あなたは1を分割していて、 10、彼らは両方とも整数です。 そしてそれは起こっている方法 それは整数としてで保存します。 だから、最も近い整数は0.0になります。 そして、そのためには、0.1です。 教授:ええ、それは本当に良いです。 それが正しい答えです。 だから、これは非常に混乱して 子供たちの多くのための概念。 そして、私は本当にそれを確認します これは、みんなの頭の中で強化されています。 だから我々は、フローティングと呼ぶもの ポイントの不正確、 ここで、理由はたくさん 貪欲であなたのプログラムの 最初は動作しませんでしたがためでした あなたは変数をキャストするのを忘れました。 だからChristabellが言ったこと 完全に正しかったです。 フロートは本質的に不正確です。 コンピュータに、右、私たちは持っているので、 メモリのビットの有限量 我々は数を表すために使用することができます。 そこで、例えば、このCS50 IDをis-- 私はそれが64ビットのコンピュータだと思います。 フロートのみを表すことができます。 これらのビットの有限量だけ。 だから0.1無限のゼロで、 そののは0.1であった、右ですか? しかし、我々は実際に保管することはできません 当社のコンピュータでその数。 私達はちょうど持っていません これを行うには十分なメモリ。 だから最も近い近似 どのメモリに格納されていることは実際にあります 0.000何かのようなもの、 何か、何か、何か。 どの、あなた切り捨て回 それは、0.0にダウン丸めます。 ので、この例では、一つだけです それは、問題の多くを示してい 私たちがしているときはいつでも、私たちは持っています 間違って数学をやろうとしています 異なる整数としてキャストなし。 だからこの出来事を警戒します。 クイズでは、我々はあなたを与える場合 コー​​ドのブロックと、それはようなものです、 何が最後に出力しますか? そして、それはいくつかのランダムな値だ場合 それが起こって、なぜ人は知っている必要があります。 うん? 聴衆:切り捨ては取り除くされます 特定のポイントの後のすべて? [聞こえません] 教授:ええ、実際にそう これは本当に悪い例であり、 実際に0.100どんな理由 0.1まで切り捨てることになります。 あなたがit--を実行した場合しかし、私はしないでください 覚えて、昨年彼らので、 別のプログラムでそれを実行しました。 彼らはと呼ばれるもので、それを実行しました これはCS50アプライアンス、 IDとは異なります。 それは、私が思うに、32ビットのシステムでした。 それで異なる番号がありました。 しかし、本質的に、ちょうどそれを知っています 切り捨ての全体のコンセプト どのようにそれだけで物事を遮断します。 そしてそれならばrounds-- 聴衆:丸めなし。 教授:その通り。 うん。 クール。 こんにちは、バックインチ 我々はいくつかの上で行っています クイズの復習問題。 大丈夫。 だからここに別のプログラムを検討してください。 私はA君たちを与えるつもりです 数分は、この上で読み取ります。 これは非常にためたものです 最近、私はあなたの多くを吹いたと思うこと みんなの心。 しかし、我々は話をするつもりです このを通じてもう一度だけ あなたを確認します それを完全に理解しています。 OK。 OK。 誰もがより多くの時間を必要とします このコードを読みますか? OK。 だから、と私には思われます このプログラムでは、私はよ GetStringを使用して2つの文字列を作成します。 ワンと呼ばれるsおよび1トンと呼ばれます。 そして、それらが等しいなら 互いに等しいです それは「あなたを印刷する必要があります 同じことを入力します。」 しかしelsewise、それは "、あなたを印刷することになります 右」、別のものを入力しましたか? 非常に、非常に単純なようです。 しかし、しかし、実際に私の場合 このプログラムを書いてみます、 その場合でも、私はそうです 入力まったく同じ文字列、 それはまだ "、あなたを印刷 異なるものを入力しました! " 誰もが利用したいん なぜこのプログラムは常に、ショット 応答入力は、その あっても、異なっていて 時の言葉自体は同じですか? だから私はデビッドの愛をinput--した場合 右、お母さんのよう例を使用するには? S、Tのための小文字のM-O-M 小文字のM-O-Mに等しいです。 私は、を介してこれを実行した場合 そのコード、なぜだろう "あなたは別のものを入力した?」プリントアウト 誰もがより多くを必要としています このことについて考える時間? [OK]を、私たちは良いしていると思います。 うん? 聴衆:[OK]を、ので、それは、約何か それは右、メモリに保存されている場合は? 教授:うん。 観客:それはこの場合には、ようなものです 文字列sは、メモリに格納されていますspot-- 私はthis--がゼロで発明しています。 教授:確かに。 聴衆:そして文字列トン メモリ場所に格納され、 167、等が挙げられ、その後、 ゼロは167と等しくありません。 教授:その通り。 [OK]を、ので、この信じられないほどのを覚えています 私たちはあなたたちに説明した啓示 この一週間、その 文字列は実際には存在しないのですか? 我々はと呼ばれるものを作成する場合 実際に私たちがしている文字列、 char型の星と呼ばれるものを作成します。 どのすべてのそれはへのポインタです 文字列や文字の配列に。 だから、この例では、私があれば 入力M-O-Mウェイにしました 私のコンピュータはそれが保管することを メモリバックスラッシュゼロ内で、右? これらの4文字、文字、 どこかに保存されることになります。 そして、これら4 文字、バックスラッシュゼロ、 右、どこか別の場所に保存されていますか? 私はどこのアドレス見当がつかない 彼らは私のコンピュータのどこかにいる、あります。 彼らがどこにあるかが、私は正確に知りません。 私は文字列を作成する場合 秒、すべてのことは本当にあります へのポインタであります この文字列の先頭。 そして、私はこのt値を作成するときに、 すべてのことは、ここへのポインタです。 だから、あなたがしようとしているとき 同一視するとチェックします sが対等であるかどうかを確認します tに等しく、コンピュータ 本当にただに戻っています あなたこのメートルのアドレス そのメートルのアドレス。 そして、彼らは、2つだから データの別々の部分 異なる2に格納されています お使いのコンピュータのアドレス、 お使いのコンピュータのに行くことはありません 同じであるとして、それらを認識しています。 誰もがしたいん 私たちに打撃を与えます 我々は修正したい場合に実行する必要のあります この、正しい実行中のプログラムを持っています 代わりに? 数秒のためにそれについて考えてみよう。 我々はに変更する必要がありますどのような このプログラムの機能を取得 我々はそれが機能するようにしたい方法はありますか? ええ、それで刺しを取るしたいですか? 聴衆:私たちは、間接参照しようとすることができます ポインタと、配列を確認してください? 教授:それはそれを行うための一つの方法です。 だから、あなたの名前は再び何ですか? ごめんなさい、私に思い出させます。 ジー:ジー。 教授:ええ、だから何ジー 絶対に働くだろうが示唆されました。 右? 私たちは、ポインタ参照解除できました 実際に行くとアクセス ここの内部の物理的なデータ。 そして、私たちはただ比較することができます 画面全体。 我々は、[OK]を、ポインタを言うことができ、 ここで中身を私を与えます。 これは、メートルを返します。 そして、私が言う、ポインタ、 ここで中身を私を与えます。 メートルを返します。 これらの試合をしますか? はい。 その後、我々は上に移動します。 我々は全体の2を定期的にチェックしてください すべての方法まで最後までの文字列 それらが等しい場合には、参照 すべての値が等しい場合。 すべての値が等しい場合、 その後、我々は、文字列が真である知っています。 絶対に、それは我々がそれを行うだろうかですか? 誰もこれのいずれかで混乱していますか? どのように文字列の全体のコンセプト 本当にただのポインタです、 どのように彼らは本当に存在しないのですか? そして、なぜ我々はエラーが出ます 我々はそれを得る方法のように? 私はあなたたち、ポインタを保証しているため 文字列の割り当てとメモリ 思い付くしようとしています。 うん? 聴衆:[聞こえない]間接参照 それは、あなただけの星を入れて[聞こえません] 教授:右。 だから、ポインタ手段をderererenceします ポインタのそのアドレスに移動します データ、そこに値を取得します。 そして、それを行う方法は星のポインタです。 それを混同しないでください。 聴衆:[聞こえません]。 教授:ええ。 聴衆:だからあなただけ書くことができます 星の等しいスターTに等しい場合。 教授:まあ、ありません。 いいえ。 観客:それは右、十分ではないのか? 教授:あなたがしているので、それはありません 最初の文字だけをチェックします。 あなたは、おそらくしようとしています ループのいくつかの並べ替えを必要とします ひとつひとつを反復 両方の文字列内の文字。 うん。 だから、あなただけのかを確認したい場合 彼らは同じことで開始した場合、 あなたは、星の場合は行うことができます Sはスタートンに等しいです。 そして、あなたが知っている、少なくとも彼ら 同じ文字で開始しました。 うん? 聴衆:だから方法 あなたはそれは次のようになります ループまたはポインタに埋め込まれたような? 教授:ええ。 かなり単にforループ。 クラスのデビッド言及したことを覚えておいてください 無料のシンタックスシュガー? そして、彼は非常にこれを持っていました 星tの混乱もの プラスワン、それが統合になります 通って、それがポインタを移動? 行うための簡単​​な方法 これは私だけのトンです。 だから、配列だけです。 あなたが持っているであろうこと方法 ゼロから私に走っループ、どこ 私はの長さであり、 文字列、あなただけの可能性 その代わりに行うので書きます 全体のポインタ、参照の事。 したがって、これらの事はまったく同じです お使いのコンピュータで同等。 君たちはおそらくないでしょう それを知っている必要があり、 それだけの種類のに良いことです 後ろにあなたの心を持っています。 ただ、コンピュータがことを知っています コー​​ドの異なるブロックを認識し、 同じことのように。 これは単なるはるかユーザーであるため それはだように、私たちはそれを提示するのはやさしいです 配列。 それだけで簡単です。 聴衆:だから好きにはstrlenを使用し、get-- 教授:ええ。 聴衆:[OK]をクリックします。 教授:あなたは可能性が あなたがあれば、strlen関数を使用または あなたはちょうど行うことができますstrlen関数がありませんでした あなたは両方のためにバックスラッシュゼロを打つまで。 いずれかが動作します。 うん。 観客は:だから、すべての間接参照にです 私たちは実際にあった場合は単一の文字 我々は、このコードを書きます ちょうどトンブラケットiを行うことができます その前にスターを好きですか? 教授:ええ、等号秒に等しいです 私は、そして私を動かし続けるブラケット あなたが最後のヒットまでダウン。 ええ、それはあなたがどうなるかです。 そして、私は実際には次があるでしょう 実際にときに我々の例 あなたたちは一種ますので、strlen関数を書きます それを少しいじってもらいます。 それでは、メモリ上の誰も明確です 文字列、ポインタ、品質のアドレス? そのあなたいくつかのより高いレベルの概念 クイズで知るようにしてください必要性のための意志 明日。 大丈夫。 良い。 うん。 我々はまた、お願いします[OK]を、ので、一つのこと あなた、私たちはクイズに毎年行うよう、され、 (あなたが忘れてしまったとしています 私たちは毎年行うことを忘れているようです) ここでヘッダファイルのstrlenが宣言されています。 そして、私たちはそれを自分自身を書き換える必要があります。 ここではガイドラインのリストがあります 私たちはあなたを提示することができること あなたがいると仮定してもらう男 文字列がnullではありませんよ。 あなたはSがされると仮定することができます バックスラッシュゼロで終了。 だから、それが何を知っています それは、で終わるだろう。 そして、例えば、その ハローの長さは5になります。 だから、そのハローをとることができます 5、H-E-L-L-Oになります。 あなたがいることを想定する必要はありません 長さゼロのアカウントを裏側。 ここで、この最後のものは、ありません 整数オーバーフローを心配します。 誰もが覚えていません 何整数オーバーフローのですか? 者:超えて行きます [聞こえない]の長さ。 教授:ええ、あなたが説明することができます ビット、それは何を意味するのでしょうか? 聴衆:だから、私はそれが戻って推測 以前の切捨て例に。 しかし、あなただけの非常に多くの数字を持っている場合 それは、ビット数を超えて あなたが実際にそれを割り当てることができます それだけの種類のカットオフされること。 教授:ええ、そう典型的に コンピュータ、我々はどのように多くのビットを持っていますか? 聴衆:32? 教授:ええ、32、右。 そして、そのためには、何を、4です 億、20億? 40億までの40億、 正の整数、右? 二億負、 正の20億、 あなたはそれをしたいかによって異なります。 だから基本的に私たちが持っていることができます 上がることができます十分な整数 31日には2つのマイナス1に、右? 我々は、2つを打つ一度ので 第32回に、私たちにはありません 当社のコンピュータでその多くのメモリを持っています。 だから、理論的には、私 数を思い付くことができ それは、のように、第46回には2つです。 これは、巨大なお尻の番号ですが、 理論的には、あなたは可能性があります。 あなたがしようとするので、整数オーバーフローがあります 何を超えた整数を作成 お使いのコンピュータは、記憶することができます。 用だから君たち この例ではありません 私たちはあなたに巨大なを与えることを心配します 第32回の文字には、2つの文字列であります ロング。 それは本当に意味することになります。 すべての権利、私はちょうど与えるつもりです 君たちこれの基本構造。 あなたが作成しようとしています int型のstrlen呼び出される関数 char型のスター、中域、または文字列、 Sと呼ばれる文字列へのポインタ。 すべての権利、誰もがそれを下にコピーします。 クール。 他の方法Oops--。 だから、これは次のような種類のあります 問題の困難作品、 私はあなたに多分5人をあげます ブレーンストーミングのようなものに6分 この機能を書き出します。 聴衆:我々はしないでください [聞こえない]のアカウント、 我々は、整数を使用する必要はありませんか? 教授:いいえ、その必要はありません。 私はあなたたちにヒントを与えるでしょう。 whileループは、ここで非常に有用である可能性があります。 うん。 ここでの キャンディ。 キャンディも利用できるようになります クイズのために、私は思います。 だから人はすべてになります 明日まで砂糖。 あなたはそれを得たI--ことができます。 聴衆:[OK]をクリックします。 教授:ええ。 たぶん30秒以上かそこら。 すべての権利、あなたがしている場合 行われていない、心配ありません。 私たちは一緒にこの間を移動します。 OK。 だから、僕はレイアウトに行きますよ ここで、この機能のための基本的な構造。 strlen関数のInt。 まず、誰もが伝えたいん 私は何そのintは意味? 我々は、この機能を持っている必要があります。 聴衆:STRLEN [聞こえません]。 教授:その通り。 だからここで起こるものは何でも、 我々は、整数を返す必要があります。 そして、に指定されています スペック、我々はreturn--たい ちょうど続ける、それがみんなのために行きます。 大丈夫だよー。 私が持っていないそれをすべて食べます 実際に、それを取り戻します。 int型はちょうどあなたがしていることを意味します 整数を返すことになるだろう。 このchar型のスターSとは何ですか? どういう意味ですか? 聴衆:で入力されているものと同様に、。 教授:その通り。 そして、ほとんど何です char型の星と同じもの? 聴衆:文字列? 教授:その通り。 だから、私たちはやっているすべては与えています この文字列へのポインタ。 OK。 クール。 私たちが忘れてしまった場合にも、忘れてはいけません あなたにこれらのブラケットを与えるために、 それらを自分で書くことを忘れないでください。 理論的には、あなたのコードがあるため あなたがそれらを書くことを忘れてしまった場合、誤りました。 ただ、常に注意を払います。 同様に、ささいなこと あなたが気づかないこと あなたのラップトップ上でプログラミングしているとき、 あなたのラップトップがあなたのためにそれをしない理由? 時を忘れてはいけません あなたが手で書いています。 うん? 聴衆:しかし、どのように間違いましたか? 同様に、私たちは間違った問題全体を得るのですか? 教授:いいえ、ありません。 心配しないでください。 それは実際に理論的には可能です あなたは質問に完全なポイントを取得するために でも、あなたのコードがする場合 実際の生活の中で実行されません。 私は、あなたがしようとしない示唆します それを実現するために。 たとえば、すべての場合のように それがここに右です、 しかし、あなたは、結腸またはブラケットを忘れて、 あなたのコードが実際に実行されません。 しかし、我々は慈悲深いかもしれません。 うん? 観客:あなたがする必要がありますか 私たちの筆跡にコメント? 教授:いや、いや、ありません そのことについて心配。 ノーコメント。 スタイルは良いことがあります。 同様に、押しつぶすはありません 1行にすべて。 私たちは幸せではありません あなたとあなたがそれを行う場合。 誰もがしたいん 私の最初の行を与えますか? ヒント、それは非常に簡単です。 うん? 聴衆:int型、nはゼロに等しいです。 ただ、カウンタを設定します。 教授:だから我々はいくつかをしたいです カウンタの種類、右? 私は「カウント」という名前をするつもりです 読みやすさのために。 私たちは同じに設定したいですか? 聴衆:ゼロ。 教授:うん。 セミコロン。 それはまた、非常に奇妙な描画セミコロンです。 ちょうどそれをやって練習します。 だから我々は最初に持っていたいです int型のカウンター。 私たちはどのようにカウントアップしたいので 多くの文字や文字があります この文字列で、右か? 非常に簡単な最初のステップ。 [OK]を、多分少し複雑 今、どのように我々はそうするつもりですか? 誰もがしたいん 私はコードの行を与えます それは、ループを助けることができるかもしれません どんなを通じてこれは? バックでええ、勇敢な魂? 聴衆:[OK]を、ので、しばらくポイント アスタリスク、Sのええ、星、 ゼロに等しくない場合は、何かをしますか? 教授:それは本当に、本当に近いです。 本当に近いです。 だから私は対処するつもりです それに二つのこと。 まず第一に、それは正確にゼロではありません。 それは何ですか? これは、ヌル終端ですが、 これはバックスラッシュゼロです。 そこで、彼らはで異なっています それらが保存されているかという点。 だから、本当に近いです。 そして第二に、私たちは望んでいません 単にポインタを移動します。 私たちは、実際にしたいです 右、値にアクセスしますか? だからどのように我々はそれを行うのですか? 非常に簡単。 ポインタについて考えてはいけません、 思い出について考えていません。 このコースの2週に戻ります。 聴衆:[聞こえません]。 教授:のように、覚えていますか? 文字列は何ですか? 彼らはどのようにメモリに保存されていますか? 観客:彼らは上昇しています。 教授:彼らは上昇しています。 だから我々はどのようにアクセスします 内部の各文字? 聴衆:[聞こえません]。 教授:その通り。 だからここ内側何が起こっwhile--? S - 聴衆:I. 教授:ああ、私は存在しないが、それをしませんか? 聴衆:ああ、カウント? 教授:私たちはすることができます 我々はできない、カウントを使うのか? 聴衆:申し訳ありませんが、私はそれを呼びました。 教授:ええ、それはすべて良いことです。 我々はそれがだ、ここで変数を持っています すでに私たちのカウンタとして宣言されて。 では、なぜ私たちはそれを使用しないでください whileループ内を移動するには? それは理にかなっていますか? だからcount--のsは誰もしたいんが ここで後に何が起こるか私を与えるには? 観客:それは等しくありません。 教授:右、等しくないのですか? これは、ビッグバンの対等です、 感嘆符は、等しいです あなたたちがしたいものは何でも equal--ませんそれを呼び出します 聴衆:[聞こえません]。 教授:ええ。 、charの単一引用符を覚えています 二重引用符は、文字列のためのものです。 それらを使用する場合は注意してください。 だから我々はを通して見ているとき 配列、最後の文字、 私たちは望んでいない知っています それはバックスラッシュゼロにします。 しばらくそう。 私たちは、文字列の最後にはありません。 私たちは、内部の何をしたいですか? 観客:我々はに追加します カウンタは、カウントプラスプラスそう? 教授:その通り。 そこでここでは、やろうとしています カウント、カウントプラスプラス。 1行がありません。 私たちはほとんどがしています。 私たちは何をする忘れていますか? 聴衆:ゼロを返しますか? 教授:あなたがゼロを返すようにしたいですか? 聴衆:いいえ、strlenをに戻ります。 待つ。 教授:に格納されていますか? 聴衆:カウント。 カウント。 教授:その通り。 そこでここでは、カウントを返すつもりです。 私たちは何をしているため、 ここで行ってultimately-- 我々はだカウンタ変数を持っています 私たちの文字列を介してインクリメントする予定。 我々は続けるつもりだ、続けます このループの周りとその周辺、行きます。 そして、我々は、このの終わりにないている間 null終端文字列です。 そして、我々が通過するたびに それは、私たちはカウンターに追加しています。 そして、我々はさらにつもりです この配列内に沿って。 そして最後に、私たちは一度 ヌルターミネータを打ちます、 私たちは、私たちすることができ、ああ、知っています 壊れ、数を返します。 私たちは、strlen関数を持っています。 誰もがどのように取得しています これが実装されましたか? 私が知っているloops--ながら、私たちはそうではありません 彼らとあまりにも多く行われ、 しかし、彼らは通常です あなたの場合、非常に、非常に便利 あなたが停止しているかわかりません 条件は必ずしもにする必要があります。 質問? 聴衆:私たちは、nullを書くことができます while条件の? 教授:ながら? うん、そうこの問題で私はあなたを持っていました 人はsがNULLでないことを前提としています。 覚えているので、 理論的には、私はあなたを与えた場合 メモリの大きすぎたポインタ、 それは正しい、あなたはnullを与えるだろうか? それは何の動作 システムが行うだろう。 だから私は仮定することを教えてくれなかった場合 sがNULLになり、あなたは確認する必要があります。 だからここまで、あなたはどうしたら、sの場合 ヌル等しい等しく、1を返します。 そのような何か。 聴衆:[聞こえない]ゼロ。 教授:[OK]を、私は教えてあげましょう あなた、なぜ我々はそれを行うことはできません。 そのため、右、ここでは、メモリ内に覚えています。 私たちはここに行きますよ。 あなたは巨大なブロックを持っています メモリのすべてのグリッドで その店の異なる値、右? だから、すべての文字列がためis-- 例えば、我々はハロー入力する場合は、 それは、H-E-L-L-Oになります バックスラッシュゼロ、右? そして、誰がランダムのように、知っています それの後にここにある事。 私たちは、実際にそこに何があるか分かりません。 そしてそうあなたがした場合 代わりに、バックスラッシュゼロの、 ヌルは、nullではないかもしれません。 それだけでは意味がありますので いくつかのランダムな他のもの それはあなたの文字列に属していません。 だから私たちは常にことを知っている方法を 終了文字列はバックスラッシュゼロです。 そして、そのためには、常にどのように我々です 文字列の最後を見て確認してください。 あなたが持っている場合はnull、すべてのことの手段があります すべての最初の非存在ポインタ、 またはあなたの記憶は、単に非常に大きい場合 あなたはそれを返すことができない、それはnullになるだろう。 差別ときに非常に注意してください ヌルの違い バックスラッシュゼロ。 うん。 これでOK誰? OK。 だから私はあなたたちはstrlenを書き出すていました。 都合良く我々はまた、あなたが書く求めることができます 私に出て、「Atwoa」ことを覚えておいてください または何でもあなたたちはそれを呼び出すようにしたいですか? この関数で そのVigenereとシーザー、 ASCII値は整数に変換? それはまた、過去のクイズに来ています 関数のように書くためにあなたを求めてきました。 ほとんどすべての機能 あなたが使用されたこと 自分で作成するのは非常に簡単、 以下のようなセンサが低く、 アッパーに、下げるために、上側のです。 変換になる機能 小文字から大文字に文字列。 我々は、すべての権利、それを行う方法を知っていますか? それは非常に簡単です。 ちょうどことを確認するあなた can--それは同じ思考プロセスです。 あなただけを反復処理 あなたは物事をオンにします。 あなたのいずれかの数または あなたは違っを回します。 私は私をsuggest--う 私たちが行っているかどうかを知りません 何資本Aを暗記するように依頼したり、 資本Z、または小文字のAまたは小文字 Z ASCIIであるが、私はお勧めします おそらく場合にそれを書き留め おります。 ちょうどそのように、あなたたちは参照を持っています。 大文字のAのように、何を、197ですか? そして、小文字は50何かのようです。 65、ええ、そこに行きます。 だからかなり知っています 両者の差は32です。 これは非常に重要です。 うん。 私はこの上で良いのですか? OK。 観客:我々は可能性が 理論的にはいくつかを書きます 同様にこれらのダウン私たちのlittle--上の 教授:あなたは理論的 ちょうど機能を下にコピーできます。 それは本当だ。 聴衆:ない[聞こえません]。 教授:君たちはシートを持っています。 君たちはノートシートを持っています。 あなたはそれを入力することができます。 あなたはそれを書くことができます。 あなたはそれでやりたいことができます。 うん。 だから理論的には、もし あなたは、のために行きたいです。 聴衆:[聞こえません] しかし、私たちは本当にありません 必ずしも覚えておく必要があります 値、私たちはすることができます 上位またはに使用 下の機能、右? 教授:ええ。 しかし、我々はあなたに質問を与えた場合 それは、上に書き込みを言います その後、あなたはそれを記述する必要があります。 だから、あなたたちはあなたと仮定することができます 男は、すべての機能にアクセスすることができ、 しかし、あなたが上にまたはに使用したい場合 下、何もしなければならないのですか? 聴衆:[聞こえません] 使用CS50 [聞こえません] 教授:それはCS50.hますか? そこに注意してください。 上位になるよう、下げるには、 、上部で低くなります 関与する機能 文字列操作は、 すべてのいずれかのアスキー内 または数学ライブラリ内 または文字列ライブラリ内。 だから、あなたたちはそれらを使用する場合 機能は、忘れないように注意してください そのヘッダを含めます。 だから、おそらくまた、何かあなたを あなたのシートに含めます、 ヘッダーは何ですか? ライブラリは何ですか あなたが使用してきましたか? 何の機能です これらのライブラリの内部? それは重要です。 うん? 観客:我々だけでした 警官アウトとハッシュタグを行います 絶対に通じ 私たちが今までしたすべての文字 全ての質問にように見たことありますか? 教授:あなたは可能性があります。 どのように幸せな私にはわかりません 我々はグレードになるとしています そのクイズ時にコードのすべての部分 2倍の長それがあることが必要であるようです。 私たちはかもしれないが、知りません スタイルにポイントを取ります。 しかし、理論的にはあなたの コー​​ドが右になります。 君たちは警官が出でき、 ただ、すべてを含んでいます。 それはええ、あまりにも大丈夫です。 聴衆:[聞こえません]。 教授:ええ。 でも、私はそれをしていないお勧めします。 うん。 聴衆:クール。 教授:良い質問。 聴衆:だから、最悪のシナリオ。 教授:最悪の場合。 あなたは完全に忘れてしまった場合、 あなたはそれを行うことができます。 うん。 うん、コードはすぐそこです。 私は使用されるnの代わりにカウントしますが、あなた あなたのボートを浮かぶものは何でも、知っています。 聴衆:待って、私たち ハッシュタグする必要はありません 私たちがしているので、含ま int型から始まりますか? 教授:ええ、私はちょうどと仮定 我々は、関数を記述するように求めていました。 あなたが安全になりたいと思ったら、 おそらくそれをそこに置くことができます。 しかし、私はちょうどええ、気にしませんでした。 私も知らないあなたの場合 このため、任意のライブラリを必要としています。 あなたは本当に印刷していないので 何か何か出て、右か? ええ、私はかどうかを知りません あなたは、ライブラリを必要としています。 OK。 これは、もう少し沿っもあります メモリ操作のライン。 少しトリッキーこの種の。 これについて考えてみよう。 あなたは、FUNCと呼ばれる機能を有しています。 私は何でもそれを命名している可能性があり、 私はFUNCそれに名前を付けることを選択します。 私は私のメインの上にそれを持っています。 あなたは持っていたい、忘れないでください メインの後に関数、 あなたが確認します トップのプロトタイプが含まれています。 しかし、この場合には、それはとても短かったです ことを私はちょうどできたと感じていました メインの上にそれが含まれています。 私はプロトタイプを持っている必要はありませんでした、 それはすでに上記書かれているため。 だから、すべて私は私の主な機能でやっています 10に等しい整数xを作成しています。 私は、私のFUNC関数を呼び出しています して、何かを印刷します。 そしてそれは実際にはです 何funcはやっています。 君たちはこのを通して考えたいです。 それは少しトリッキーだからです。 それは実際、非常に、非常にトリッキーです。 何このを通して考えます プログラムが出力されます。 私はあなたに2分の人を与えるでしょう。 良い議論? 聴衆:うん。 教授:ええ。 すべての権利なので、これは 理由はトリッキー。 私が持って望んでいた理由は、これはあります このみんなの注目を。 誰も私を与えたいと思うん 提案、試み? これは何をプリントアウトするのでしょうか? あなたが間違っている場合は完全に罰金。 うん? 聴衆:私はそれが100だと思うし、 2つの別々の行に10。 教授:そして、10? 誰もが、他の推測を持っていますか? うん? 聴衆:たぶんわずか10理由 funcは何も返さないのですか? 教授:[OK]をので、私たち 推測番号1を持っています 推測番号2であるということです わずか10をプリントアウトする予定。 誰もが、他の推測を持っていますか? OK。 それでは、右、この中を歩くようにしますか? あなたは、コードの一部を取得するたびに、 ちょうどそれを見て、のようなことはありません、 ああ、それはあまりのものです! 私は困惑しています! 同様に、自分自身を落ち着かせます。 ただあなただけの可能性ことを知っています 線でコード行に目を通します。 それはそれはすべてです。 それは、本を読むようなものです。 だから、任意の関数で、 私たちは常に主から始まります。 だから我々はするつもりです int型メイン空洞から始まり、 でも、プログラムの 既に右、ダウンを実行? メイン空洞内で起動します。 整数xは10に等しいです。 だから私はこれを消去するつもりです。 私はちょうどあなたので、メモリを描くつもりです 人は一種の何が起こっているかを見ることができます。 ここで我々は、スタックを持って下に覚えていますか? ここに私達は私達を持っています どこかここで盛り上げ。 スタックは右、育ちますか? そして、スタック内の、あなたが持っています 電源は機能だけでなく、 電源のローカル変数がすべて表示されます。 そこでここでは、int型のxは10に等しいです。 私たちの主な機能の中で我々がいます Xという変数を作成します。 私たちは10のその同じ設定しています。 ここでは、いくつかのXを持っている、あなたがしています 、10に等しい、右のことを設定します メイン内。 みんな良いですか? 機能。 だから今、私たちの主な内 機能、我々が呼んでいます 我々は上記の書いた関数。 だから我々は今、第2の機能を入力しています。 私たちは別のものを作成しようとしています 変数はint xは100に等しいです。 何がスタックにここに起きているのでしょうか? あなたが呼び出すときに、何が起こります 新しい変数を作成する関数? 何がスタックにここになりますか? 聴衆:上部の[聞こえない]の山? 教授:ええ。 だから、実際にコピーを作成します。 上部の杭そしてそれは一種。 stack--スタックを考えます 書籍、何のスタックの。 最後の最初の上部の杭、 うち、最初に出て、の最後の。 だから、ここでXを作成するために起こっています。 それは持っているつもりです すべてのfuncs変数。 グレート。 だから今、私たちは二つの異なるXがそれを持っています 2つの非常に異なるものを表しています。 その後、我々は印刷するつもりです xの整数アウト。 それでは、右、100を印刷してみましょうか? ここで、それは100だから。 だから、最初のものです それはプリントアウトになるだろうということ。 この関数は何も返さないように、 今その関数、主にその行 終わらせる。 これまで私と一緒に良い誰? だから我々は中2を通して今です 私たちの主な機能の3行。 今、私たちは三行目になるだろう。 我々は、printf関数になるだろう。 メイン内のこのxは何ですか? それは何を表しているのでしょうか? 今のx何値はありますか? 聴衆:100。 教授:それは100ですか? 聴衆:まだ10。 教授:まだ10。 うん。 内、覚えているので、 私たちのfuncは、xは100に等しいです。 しかし、我々は戻って返す場合 私たちの主な機能に、 その変数がに保存されています 私たちのスタック上の別の場所。 だから今、私たちは戻って行く必要があります メインスタックは、ローカル変数を幹線。 そして、ここでxは10に等しいです。 そして、私たちは10をプリントアウトするつもりです。 そこで彼女は絶対に正しかったです。 我々は、必要があるとしています 100と10の出力。 うん? 観客:あなたはmalloc関数、それであります ヒープまたは[聞こえない]はスタック? 教授:あなたはをmalloc、 あなたは、ヒープからメモリを取っています それを割り当てます。 あなたが持っていないように、 こののいずれかと混乱します。 だから私は大きなお持ち帰りを推測 ここでスコープと呼ばれるものです。 いた人のために レビューセッションの最後の夜、 我々はこのことについて簡単に話しました。 適用範囲はどのように定義しているかと あなたの変数が存在する場合。 あるいは、どのようなフレーム内の あなたの変数が存在します。 かなり一般的経験則 あなたがそれらを作成した場合、あなたのvariables--です カーリーbraces--内部でそれらが存在します それらの中括弧内のみ。 だから、私たちの機能で、たとえば FUNC、あなたはそれらの2ブレースを参照してください。 あなたが作成している場合 その中の何でも、 チャンスはあなたがやっているすべてはあるあります スタックを作成し、そこにそれを保存します。 メインで同じこと。 それはちょうど、メインの内部に格納されています。 また、あなたはなりたいです ここでは非常に、非常に慎重に。 スコープにも適しているため 別の例に自身。 ですから、例えばaのための ループは、int型のために私は0に等しいです。 私は、10私は知らない、より少ないです。 私プラスプラス。 そして、あなたは、右のそれの内のコードを持っていますか? この変数はどこを行い、 私は、実際には存在しますか? あなたのためのループの内側のみ。 だから私はあなたたちの多くが持っている賭けます おそらくときに、このエラーが発生しました あなたのpsetでプログラムをやっています。 どのようにあなたたちの多くは、私を使用しようとしました forループの外側とエラーが発生しましたか? 参照されていない整数のよう もしくはそのようなものですか? それが起こる理​​由 ここにあなたがいるからです それだけで何かを作成します あなたのforループ内に存在します。 あなたがそれを使用しようとした場合、私はしていません 実際にそれの外に存在します。 したがって、基本的にコンピュータが私は、言って あなたは何を言ってるのか分かりません。 私が知っているすべては私があったことです ここでは、今、もはや。 だから私は作成した場合 右、内側のループのために? そして、私は別のものを作成するつもりです、 int型のJのように、それが何を行う必要があります。 そして、あなたは内部のコードを持って そのループ、jは、ここでしか存在しています。 しかし、それはまた、私の中に存在します。 そしてそうjが存在しているだけ このforループ内で、 私は全部に存在するのに対し。 誰も明確な? 条件文と同じこと あなたは何を作成したい場合。 一方、ループの場合と同じこと あなたは何を作成したいです。 それはなるように何か 非常に約非常に慎重。 だから、これは本当に良い問題がでました それは二つのことを実証したという意味。 これは、最初のスコープを示しました。 そして、それが実証 また、メモリの割り当て。 あなたたちはそれを知っている必要がありますので 機能は、スタック内に上向きに成長します。 そして、あなたが呼び出すときこと 機能、あなたが作成しています メモリの基本的新しいスタック。 それは非常に異なっています あなたのメインメモリは何ですか。 うん。 やれやれ! その上で[OK]をみんな? それは混乱しました。 オーバー行くには非常に良いのトピック、 あなたはおそらくだから いくつかのトリッキーを取得するつもり クイズにそのようなこと。 うん。 クール。 私はあなたが1に100を取得してあげますよ 行し、他の10。 うん、非常に良いです。 [OK]を、今、あなたたちが取得します TAになるチャンス。 あなたはすべての素敵に答えるために得ます 私は時々得るのメール。 だから、親愛なるアンディは、私が何かだと思う参照してください。 私のコンパイラを使用して間違っています。 私は、私のコードが正しいことを確信しています 私はセグメンテーションフォールトを取得しておきます 私は実行するたびに。 どうしたの? 、愛の多くを助けてください。 君たちのようなものを持っている場合 どのように応答するであろうこと? これらは、実際には非常に一般的です 質問は、私たちはあなたを頼みますよ。 私たちはあなたを与えるだろう、場合です シナリオ、私たちは私たちを与えるだろう 何が起こっているのかであなたの最高の推測。 誰もが何が起こっているかで刺しがありますか? うん? 聴衆:たぶん逆参照 ヌルポインタのようなもの ヌル何かを指しています。 教授:ええ、それはなるだろう それが起こる場合の例。 しかし、より大きな絵は何ですか ここで何が起こっているの? 観客:あなたがそれをしようとしているされています あなたがいないなら、メモリにアクセスします へのアクセス権を持つことになって? 教授:その通り。 だから、ワンセグ断層のオフを考えます メモリ内の制限、制限区域 あなたが触れてはならないこと。 だから、かなりあなたがしようとしているとき 例えばのようにindex--します、 あなたが宣言しました ゼロから9までの配列。 しかし、あなたはその10回目に触れることを試みます 値は、あなたはそれにアクセスすることはできません。 あなたはそれを宣言していないため。 それでコンピュータが起こっています それを見てするようになり、 ああええと、あなたが行くようにしようとしています インデックスの範囲外。 私はあなたを与えるつもりです セグメンテーションフォールト。 セグメントとしての考え、右? 余分なセグメントは、障害があります あなたが何かを破るしようとすると、 あなたはそこにあってはなりません。 セグメンテーションフォールトがいつでもあります あなたは物事に触れることを試みます あなたが触れてはならないこと。 だから、一般的な例は、インデックスされています。 もちろん、あなたがしようとしている場合 それに触れると、nullでした、 それも同様に動作します。 あなたのポインタがにしようとしていた場合 触れてはならないものに触れ、 それも同様に仕事ができます。 最も典型的には、あなたはよ 配列でこれを参照してください。 みんな良いですか? 観客:あなたがしたいのであれば 第10回ポイントにアクセスします そして唯一の制限があります 9か何かの。 教授:うん、まさに。 ほとんど。 クール。 親愛なるアンディ。 だから我々はこれらの素晴らしいを持っています 物事は、ソートと呼ばれます。 我々としてsort--マージすると 時の例で見ました ダビデは、全体をしました なぜclass--での事、 それはよりそんなに速くなら 他の種類のいずれか、 なぜ私たちも知っている気にしません 他の種類のいずれか? 本当にあなたを求め、この質問は何ですか? 3 word--は何ですか 対象:トレードオフは何ですか? 教授:その通り。 それは質問が求めているものです。 間のトレードオフは何ですか 任意の他の種類の詩マージソート? 観客は:右、メモリをとりますか? 教授:あなたを行います もう少しことを説明しますか? まずはマージストアを説明しましょう​​。 どのように動作するマージソートのでしょうか? 聴衆:だから、それはすることで動作し 半分にすべてを分割 して、それを一緒に入れて そして、順番にそれを再配分、 毎回のようにあなたがセットをマージします。 教授:ほとんど。 だから私はこれを引き出すことができますが、それは希望 それを引き出すために私に5分かかります。 切片スライドを振り返ります どこにマージソートをカバーしました。 その通りです。 だから方法は、ソート作品をマージ それは半分で物事を分割され、 そしてそれはちょうど見 それらのすべての最初の値 そして、だけそれをソートします。 継続的に新しいアレイを作成し、 順序で物事がより多くなります。 そしてそうそれは本当にですが、本当に 高速あなたが知っているit's--ため、 二分探索は、nのn個のログです。 あなたは非常に多くを作成しています あなたがしている異なるアレイ メモリの膨大な量を使用して。 そしてそれはより速く、トレードオフの間 ここであなたはより多くのメモリを使用していることです。 だから、ヒント、ソートや検索 今年より多くをカバーしました 彼らは前の年にされているよりも。 君たちはそれを見る必要があります クイズに応じて反映されています。 私は間違いなく行く時間を費やすだろう 異なる種類のものをすべての上 、どのようにバイナリ検索され、 どのように線形探索作業。 どのように、おそらく擬似コード それらをコーディングします。 実行時間は何ですか? 実行時間のような何かが非常にあります ノートシートにコピーして保存するのは簡単、 右? あなたがしているとき、それは本当に難しいです 途中でテスト そしてあなたはそれを把握する必要があります。 それをコピーします。 私はあなたがしているあなたを保証します それを知っている必要がありますつもり。 トレードオフは何ですか? 最悪の場合、最良の場合のシナリオ それらのすべてのために、非常に知るようになります。 うん? 観客:我々はする必要がありますか マージソートをコーディングする方法を知っていますか? 同様に、我々はする必要があります 再帰を覚えていますか? 教授:私は非常にだけ、それを疑います なぜなら、それはかなり複雑なようです。 しかし、それは実行不可能ではないかもしれない、私たちの場合 擬似コードにそれを使用するようにお願いします。 うん。 うん、[OK]を、1以上。 これは、中に出ていること ビットでは、最後のピース。 うん? 誰もがそれを聞いていましたか? [OK]を、ので、かなり最初の すべて、どのようなプログラムの種類 あなたにこのような出力を与えるだろうか? 我々はについて学ぶためにあなたを求めて覚えておいてください デバッグツールのこの新しいタイプの? それの名前は何でしたか? Valgrindは、右 それはどこのプログラムでした あなたができることをを呼び出すことができます あなたがしているすべてのメモリを追跡します プログラムで使用して起こっていました。 だから、あなたのような、何かを持っている場合は、 確かに1つのブロックに、40バイトを失いました。 おそらくあなたはないです それを解放するために覚えています。 あなたは、メモリのバイトを使用している場合ので、 それは、あなたがそのメモリにアクセスしてきた意味します しかし、あなたは解放することができていません。 だから、作りたいです あなたもしていることを確認してください それはだfree--使用して すべてを解放しますfunction-- malloc関数によって再割り当てメモリの。 クール。 したがって、このスライドは、私はそれを持っています。 それは多くののいたるところです セクションのスライドの多くで講演。 あなたは本当に確認します あなただけのこのすべてを知っています。 ご了承シートのかのいずれかの場合 それを暗記したい、お気軽に。 それは本当に、本当に、本当に重要です。 また、非常に良いです 私たちが求めることができる質問。 なぜ選択sort--外観がにあります ランタイムのすべてsort--選択 N乗されています。 かかわらず、リストにはどのようになるの あなたなぜ選択がある、としてsort-- 私は君たち30をあげます 二本について考えます。 それは一種の混乱だから。 これは、いくつかの概念の考えを必要とします。 なぜ実行時間は同じになります 最悪と最良の場合のシナリオの両方? うん? 聴衆:選択ソート各ので、 この小さな配列内の位置や空間 事や何でも。 そうであっても最良の場合のシナリオにおいて、 それは完全に並べ替えていたとしても、 それはまだ1、[OK]を、のようでなければならないであろう。 私の最初の場所で私は1つを持っています。 そして、それらのすべてを通過します。 OK、一つは最小です。 そしてそれは再び行き そして、[OK]を、のように2個です すべてのものの中で最小です。 しかし、それはまだする必要があります 一人一人をチェックしてください。 教授:ええ。 したがって、たとえば、ちょうど言わせ 我々はすでにソート、リストを持って、 配列五から一。 選択ソートはということですする方法 それは、これら2つをチェックし、通過します。 そして、それは、これらの2つのチェック。 そして、それはチェックし、それがチェックします。 これは、それらのすべてをチェックし続けます かかわらずか否か それは実際にソートしています。 それは単純だから ソートが機能する方法。 だからこの質問は種のようなものです 我々は頼むよ概念的な質問。 どこで最初に、あなたに どのような選択ソートを知っています できるようにするには、右であり、 質問に答えます。 あなたが理解できるようにする必要があります 概念的に何が起こっているのか。 そして、[OK]をクリックすると、それを適用し、考えることができます ちょうど最悪のシナリオを想像してみましょう。 彼らはすべての降順にしています。 どのようにそれはそれに影響を与えるのでしょうか? それは何の昇順ですか? それはすでにソートですか? どのようにそれが実行時間に影響を与えるのでしょうか? そして選択ソート、あなたは気づくでしょう それは実際には問題ではないこと。 あなたがチェックしているので、すべての 関係なく、何が起こっているかの値。 そして忘れてはならないので、良いもの。 いくつかの種類が他と異なるのはなぜ どのように最善と最悪の場合のシナリオ それらのすべてに影響を与えるだろう。 私は実際にソートでヒットするつもりです それはクイズになりますので。 うん。 OK。 左の6分があります。 私は質問の3分かかることがあります。 私はまたのためにたむろすることができます セクションの後に20分のような あなたにも質問をしたい場合。 誰もが本当に簡単に持っています 質問や概念的な問題 彼らは今、約不明確ですか? うん? 観客は:あなたは少し話をすることができます ビット演算子についてビット? 教授:ええ。 だから、ビット演算子があります おそらく何か ちょうどあなたのシートの上に置くことをお勧めします。 だから私はしたくありませんquickly-- 深さのあまり行きます 自分のレビューで、ハーバード理由 セッションは、かなりよくそれをカバーしました。 ビット単位の演算子は、あります そのうちの5、右? これは、xまたは関数である、あります、 あるアンパサンドは、あります。 またはであるパイプ、。 そして、次の2つを持っています シフトの異なるタイプ。 私はあなたに2つの値を与えた場合、もし 私は1つずつ、同じように、あなたを与えます。 それは何をするに評価するのでしょうか? なら、私はあなたが本当の、真の、真与えますか? 何trueまたはfalseはどうですか? 右、まだ本当? またはがありますので。 私たちは、最も可能性の高いあなたの番号を与えるでしょう。 だから、1等号を覚えています 真、ゼロが偽に等しいです。 そして、私たちはあなたにこれらの事を与えるかもしれません そして、何が起こるか私達に伝えるためにお願いします。 ハーバード大学は、最初の中でそれをカバー その勉強会の10分 本当に、本当によく。 だからみんなが作りたいです あなたが戻ってその上を見てください。 観客は:pisa5です クイズにになるだろうか? 教授:いいえ。 でも今pisa5を見てはいけません。 それは難しいです。 ただでさえpisa5を見て気にしないでください。 しかし、いくつかのヒントとして 提案、私 あなたがpisa5を開始することをお勧め すぐにクイズが終わったよう。 これが一番難しいだろう 週が、その後君たち 丘の上に渡されます 緑と子犬の圧延、 それは大丈夫です。 このクラスは、かなりの取得します 第五のpset後に容易になります。 聴衆:オフィス時間 日曜日、月曜日はありますか? 教授:ええ、そうオフィスアワーます PSET月曜日に日曜日。 オフィスアワー今夜、本質的に ただクイズのレビューになります。 誰もが来て、お願いしたい場合 質問のTAは、我々はそこになるだろう。 私は多分もう一つの質問を取りますよ 誰もが疑問を持っている場合はどうなりますか? うん? 観客:あなたがしています 定義ノード、[聞こえません] あなたは次の、ノードの星と言うならば、 コンピュータが自動的に行います あなたがしていることを理解 別のポインタを参照しますか? 教授:いいえ。 観客:あなたがする必要があります [聞こえない]それを再リンク? 教授:だから、基本的に ノードの構造体には、覚えています、 ノードを作成するようなものだと その後、あなたは次のと呼ばれるポインタを持っています。 あなたがやっているすべては持っています そこに構造。 あなたが割り当てる必要があります それはどこかのポインタ。 だから、コンピュータはしていません それはまだやっているか知っています。 あなたが実際にするときにそれを割り当てる必要があります あなたのリンクリストを作成しています。 そして、それは主に何 PSET 5がオンになります。 そんなに心配しません 今では右のいずれか。 聴衆:だから我々はする必要はありません ただ、リンクリストにあまり焦点を合わせます 一般的な概念? 教授:ちょうどかなりのスタック、 キュー、リンクリスト、ツリー、ハッシュテーブル。 ただ、彼らが何であるかを知ることができます。 私たちはお願いするつもりはありません あなたが特定の何が好き 私たちは本当に行っていないので、 まだそのいずれかをカバーしていPSET。 だから、最後の2分間で前 私はこのクイズを殺すためにあなたが自由に設定してください。 かなり、のような、方法を考えます これまであなたたちは、このクラスに来ています。 私は、ときに2週を覚えて このクラス、あなたのいくつかの 水を書いて三時間を費やしています。 どのくらいの時間があなたを取ります みんな今水を書くには? 30秒、多分? どのくらいを考えてみて あなたたちは学びました。 CSは本当に、本当に難しい課題です。 そののは間違いありません。 それは、誰もそれを研究していない理由だと、難しいです。 それだけでは難しいです。 そして、それは完全に罰金です。 そして、私は本当に誇りに思っています 誰もがここまでそれを作りました。 Psetは簡単ではありません。 彼らは多くの時間がかかります。 君たちは、私が書くように頼むことはありません PSETの15またはVigenereのゲーム。 ちょうどそれについてフリークアウトする必要はありません。 私たちはここでテストしているすべてが評価することです あなたの概念の知識だけでなく コー​​ディングの基本的なスキルの一部として。 テストはするように設計されています 本当に挑戦します。 同様に、それが設計されています あなたのためには、100を取得しないように。 また、あなたはおそらくのために設計されています 75分で終了することができません。 そして、それは完全に罰金です。 私は自分自身学生です。 私が歩くとき、私は知っている、私はそれを嫌います クイズのたわごと、のようになります。 それは本当に大変でした。 おそらく何が起こっているに happen--、それは完全に罰金ですが、 私は今あなたの人を言っています。 これらの事の手段 全然高くありません。 そして、あなたのそれらのための人 以下のように、取得されました、 あなたの問題セットのスリー、 それはあなたがしているという意味ではありません このクラスでは60%を取得するつもり。 あなたは上の60%を取得する場合 ないクイズ、 あなたがしようとしている意味 このクラスではDを得ます。 我々は、特に私のために、参照してください。 私のセクションであなたのもの、 私はあなたたちはすべての作業をしているいかに難しいかを参照してください。 そして、私はそれを追跡します。 君たちは罰金になります。 のない制度メモリはありません 学期の終わりに幸せ。 すべてのハーバード大学の子供たちが言っているので、 その友人は、ああ、あなたは大丈夫です。 誰もあなたにここでみんなを語っていません。 だから私はあなたに、ここでみんなに指示する必要があります。 君たちは罰金になります。 私はあなたたちのすべてのように誇りに思っています。 テストは難しいでしょう。 それのための研究、その後 ちょうどそれを捨てます。 新しいことを学ぶために準備をしなさい。 そして、お菓子を食べます。 私たちはお菓子をたくさん持っていました。 良い夜の眠りを取得します。 寝ていてはいけない、なぜなら それは本当に悪いだろう。 CSはロジックがたくさんあり​​ます。 あなたが寝ていない場合は、機能しないことができ、 あなたの脳が機能することはできません。 そして、私は次の20のためにここにいますよ 分誰もがたむろしたい場合。 君たちはそれを殺すためにしようとしています。 がんばろう。