[ビデオ再生] 数学的なの-A勝利 および機械的なスキル この偉大な新しい自動化されて ハーバード大学の電卓。 数学の複雑な問題 コー​​ド化された形で機械に通し テープに正確に解決されます 必要な時間の分画 人間の計算のため。 すべての形態を促進するように設計 数学的・科学的研究、 巨大な機械的な脳はのために動作します アメリカ海軍の戦争の終わりまで。 [END再生] DAVID J.マラン:これは、CS50です。 過去は魔法でした 場所が、あなたが今までしている場合 そのデバイスが何であるか疑問に思いました ハーバード科学センターで、 それは確かにの一部であり、 ハーバードマークI、それはです 今そこにディスプレイ上 過去何年もの間。 そして、あなたは何を参照してくださいよ 問題セットに埋め込まれました 一つは舞台裏で そのデバイスが行った、と何をするかで、 である教授ハリー・ルイス、から ここでコンピュータサイエンス学科。 だから、より少しだけのものに。 しかし、今日、私たちは遷移に開始します 先週からこれに、 我々は言及を持っていきます ここで1写真の それは実際には非常に有名です。 誰が何このことを知っています ここでは、画面上にありますか? 少なくとも神話によります。 うん。 聴衆:最初のウイルス。 DAVID J.マラン:だから、それはおそらくでした コンピュータで非常に最初の実際のバグを修正しました。 今現実には単語のバグ、 プログラム中のミスのために、 いくつかのための私達となっています 物理的な世界の時間、 これは最初の一人でした 誰か実際に文書化された回 マークのうち、大規模な蛾を摘み取ら IIコンピュータは、バインダーに入れ し、それを記録します 最初の既知のバグとして 実際に物理的に発見されているします。 これにより、入力されました 今日の伝承にその。 最後からすべて 週間オンラインで入手できます。 その特定のリソースでは、かもしれません 必ずしも特に、気づきます 個人的にここに来ている場合。 だから、教育フェローのすべての 今年はノートの標準的なセットを作り、 あなたが続ける必要はありません あなたの頭の下に、しよう ほとんど何を転写します それはクラスで、ここで発生する可能性があります。 だから、これらのことを実現し [いわゆる? Scribdの?]ノート 確かにスライド、オンラインで、 私たちはクラスで使用するソースコード。 我々は全文転写物を作ります 利用できるだけでなく。 ですから、漠然といくつかを覚えていれば この用語は、と少しそれを見てみたいです より容易に、そのすべてを実現 そのことを検索可能なオンラインです。 だけでなくだけでなく、ウォークスルー。 確かに、今日は見始めます 低レベルのプログラミング言語、 すぐに私たちに知られるように Cと、それは非常に簡単です ソートのほんの一部の後に迷子に 瞬間時間、驚異の後、並べ替え 私たちは、実際にいくつかのより多くになりましたか 単純なものから複雑な例。 だから私たちは桜よ実現 授業中にいくつかを選びます 代表的な例の、しかし、 そんなに多くもあることを認識 あなたが働くことができるようにオンラインで利用可能 自分のペースで、それを通じて、 しかし、あなたが最も満足しています。 しかし、我々はしてオフに左 これだけだったプログラム。 だから私は、緑の旗をクリックして、 このプログラムは何をするのでしょうか? こんにちは、世界、言います。 それは猫が言うなります 彼の小さな世界でハロー 左上の スクラッチのユーザーインターフェイスの。 しかし、我々は導入し始めました いくつかの用語先週。 だから、このようなことは、私たちは何と呼ばれますか? 何がこのための一般的な用語であるかもしれませんか? うん。 メソッドまたはステートメント。 確かに、それは、アクションです。 これを行います。 そして、まだありました スクラッチに他の形状、 これらのいわゆるほかに 声明、彼らはまたでした 私たちは何と呼ばれるこのようなこと、? うん。 だから、ループ。 そして、この場合には、この事 明らかに繰り返し、10回。 永遠にブロックがあります。 他のカップルがあります。 そして今日、私たちはどのように参照するつもりです これは、より現代的な世界に変換し、 可能ならば、それはだにもかかわらず、 一目見ただけで表示されるように行きます はるかに難解であることを。 しかし、それらは確かにループしていました。 そして、我々のようなものを持っています この形状を持っていたこの、 そして、基本的に質問をしました。 そして、私たちは何としてこれらと呼ばれますか? 聴衆:ブール式。 DAVID J.マラン:うん。 ブール式。 真かのいずれかである何か 偽、yesまたはno、1または0、 しかし、あなたは世界を見たいです。 しかし、我々はこれらのブールと呼ばれます 式は、私たちはそれらを差し込みます 条件、または支店へ。 との世界では スクラッチ、すべてきれいに その形状の点でインターロック、 それがそうするように論理的な意味を行った場合、 あなただけで停止する必要はありません 条件付きで一つのことをやって、 あなたはことわざを持つことができます 道路の分岐点 この場合、またはいずれかを実行していること 条件が真であるか否かを判定する。 そして、あなたが表示されますように、 あなたが既に持っていない場合は、 あなたは巣にこれらのブロックを均等ことができます。 だから、スクラッチは、図形を埋めるために成長します あなたがそれに挿入する可能性があること、 だから、実際に表現することができ、ほとんどの あなたがしたいことがあります任意のロジック。 発表の今、いくつかの単語 両方こことニューヘブンのため。 だから、切片は、今日から始まります。 このためのURLは、コースの上にあります 慣れていない人のためのウェブサイト、。 セクションは次のようになります 一緒に取得するチャンス はるかに親密な環境で、 [より?サンダース?]ができ、 で10〜20クラスメートと 異なるトラックで仲間を教え、 あなたがそう選択した場合と異なるペース、。 実際のコースの提供 異なるセクション 以上、これらの少ない快適なため 快適、そしてどこかの間に、 ここでは親指の役割は、あります 正式な定義はありません、 しかし、あなたはあまり満足している場合は、 あなたはこの種のことを知っています。 あなたはについて少し勇敢です バック、おそらく、足をステッピングのアイデア 教室で、または示します 部との間でまで。 あなたがいるので、プログラミングしてきた場合 、より快適に、6歳でした おそらくあなたに。 そして、それはトスアップのようなものだと、 それは間のまさに中です であることを意味します。 さて、その間に、 クラスこのサイズのため、 それはセクションに私たちにかなりの時間がかかります 誰も、私たちは、いわゆるいます、 スーパーのセクションでは、ここまで来て 週末と来週初め、 そうもちろんのウェブサイトを見てみましょう もちろん広されているもののため、 また、それらのために撮影 誰がそれらを作ることはできません。 セクション自体が開始されます 週CS50ゼロ指数の3インチ 問題はすでに0に設定 コー​​スのウェブサイト。 そして、あなたが持っているかということを理解 9後半日学期。 だから、これは最後のアップグレードです 私たちが5日遅れていた年、。 あなたが迷っている場合は、 我々は、9つの問題セットを持ちます。 あなたは9日遅く、これらのそれぞれを持っています あなただけで週に1を過ごすことができます。 それが効果的にすべてを作ります 問題は金曜日により設定し、 しかし、目標は少し置くことです 心理的な圧力のビット あなたに取得しようとします 木曜日の事で あなたがすぐに発見するようので、 良くも悪くも、ほとんどの ソフトウェアの世界ですべてが終わります はるかに長いあなたが予想するよりも服用。 だから、ソート検討 支援する機会の 自分では、木曜日をターゲットにします しかし、はい、その中に快適さを取ります すべては金曜日によるものです。 そして、あなたはそれらを送信する場合 木曜日は、それは素晴らしいです。 何のボーナスポイントや余分はありません その期限を満たすためのクレジット。 それは唯一の松葉杖であることを意味しています。 また、営業時間、両方 こことニューヘブンで、 個人的に、あなたがしたい場合 私たちのコースのいずれかに会います 支援のための仲間とCAを教えます。 大丈夫。 だから今、のは、これはより現実の作ってみましょう。 そして、一瞬のためにそれは開始する予定です もう少し難解得るが、非常にします すぐに金曜日にと 来週、私たちは次のようになります そうよりもはるかに多くを行うことができます 我々はこれまでスクラッチでできました。 だから我々は、最後のコードを導入しました 週、絵画的ではあるが。 これは、パズルのピースでした。 そして、我々はそれがあることを形式化 ソースコードと呼ばれるもの、 しかしようになりましたでしょうか? まあ、それは少し見えました このような何か。 そして、実際には、ちょうどのようなものに 私たちはこれで行くことができる場所をいじめます。 私は先に行くつもりだと ここでウィンドウを開き、 そして、私はちょうど新しいファイルを選択するつもりです。 そして、私はこのファイルを保存するつもりです ハロードットcのようなものとして。 の選択についての詳細 一瞬で言葉。 そして、これはどのように誰かがかもしれないです プログラムを書いて行きます。 標準I / Oドット時間、メインint型を含めます 近くに、中括弧を開き、ボイド、および 中括弧、こんにちはprintfのコンマの世界、 バックスラッシュnは、セミコロン、保存し、完了です。 OK。 私は私の最初のを書いています プログラムが、それが起こっています 信じられないほどがっかりすることが ときに実際に私のため もちろん、このプログラムを実行し、 1回目の書き込みによって、ハロー作ります して、ハロースラッシュ、と私たちはよドット はるかに詳細に本を経ます 現時点では、それはそれがないすべてです。 任意のウィンドウを開くポップアップしません。 それは何もしません。 特にファンシー。 それがないすべては、私はそれを言ったことです んが、どのように我々はそれに取得するのですか? そして、どのように我々はその上に構築しますか? さて、いくつかをご紹介しましょう ここでは異なる概念。 だから1、我々は起動しようとしています コンパイラと呼ばれるプログラムを使用して。 コンパイラは、Mac OS、Windowsのために存在し、 Linuxのオペレーティングシステムの任意の数、 我々はすぐにご紹介します 我々が使用することを環境、 しかし、コンパイラは、単に一般的です ソフトウェアの一部のための用語 それは、ソースコードを受け取り、 そこからオブジェクトコードを生成します。 言い換えれば、あなたの場合 入力ソースとして持っています コー​​ド、私は入力した内容のようなもの、 それは、最終的にオブジェクトコードを生成します。 そして、オブジェクトコードは本当にあります それは出力というのがファンシーな方法 ゼロの一つの。 換言すれば、ソース それはだにも関わらず、コード、 少し難解を見に行きます、 そして、少し少なめに優しいです 一見スクラッチよりも、 それは、少なくとも何か 私たち人間が理解できます。 それは一種のように見え、聞こえます 英語にもかかわらず、それは非常に簡潔です。 ゼロ年代のプログラミング一方と 自分の、先人たちがしなければならなかったとして、 何年か前に、ありませんでした 特に楽しい挑戦。 そして、まだ、これは何ですか コンピュータがまだ理解しています。 だからコンパイラは、から私たちを取得します ソースコードは、コードをオブジェクトに。 これは、使用してファイルを開くようなものです コンパイラ、およびあなたはそれを保存すると、 あなたはこれらの0と1を得ます。 だから我々は何をする方法を見ていきます 一瞬でその。 しかし、今度は、提供してみましょう 先週とこの間のブリッジ、 でもように、私たちは引っかかること 中括弧のようなものに、 そして、セミコロン、括弧、および これらの知的興味深いのすべて プログラミングの側面、それは非常に 当然のことながら、早い段階で人をつまずか アイデアのすべてのことを実現し 今日、最後のと同じです。 そこで最後に、我々はこの例を見て ここでは、Hello Worldのプログラム。 私たちが望む場合はまあ、今日から 同じプログラムを実装します、 それが見えるようになるだろう このような小さなもの。 そして、私たちは、長い間何のintの前に説明しましょう メイン、ボイド、およびすべてのこと ですが、少なくとも私はここを参照してください。 すでにおなじみのHello World。 一方、のようなもの この関数は、挨拶します、 非常に簡単になるだろう このような非常に簡単な文です。 一部で、世界ハローのprintf バックスラッシュ、引用符、 セミコロンではなく、 来ているの詳細。 ループが、一方、これは、そのループであります もちろん、永遠に世界が挨拶します、 そしてこのものは見に起こっています 最後に比べて少し奇妙、 しかし、私は何かを言う場合 以下のような、真の間、私 その後、こんにちはをプリントアウトすることができます 何度も何度と何度も何度も。 そして、あなたは親切なことができますように ここで推測し始め、 使用してのこの大会 中括弧一種であります 受け入れのような そこにコードのインデント行。 多くのようなコードのprintfのライン 上記の黄色のパズルピースまで。 だから私たちは永遠に言うつもりはありません、 我々は、真ながら言うつもりです それは少しだけである理由が、我々は表示されます。 一方、我々はこのようなループを持っている場合、 どこが有限何かを繰り返します 数回、これはあまりにもそれです 慣れる少しを取るつもり それはint型のために言うために起こっています 私はゼロを取得し、私は​​10未満、私は++します、 そして、その後のprintf再び。 しかしパターンがあるように起こっています。 そして、おなじみのあなたのそれらのために AP通信コンピュータサイエンス、またはJavaで、 または他の任意の数の言語、 ほとんどすべてのこれらの構築物の これまで主に見覚えがあるはずです。 だから変数。 そこでここでは、単純なスクラッチの抜粋では、ということです 、ゼロにカウンタと呼ばれる変数を設定します して、永遠にカウンタが言うと、 それを一つのカウンタを変更します。 だから、ゼロで始まります そしてその後一、二、三。 さて、どのようにでていることを紹介するかもしれません この新しい言語同様に少し? int型のカウンタが等しいです ゼロ、真ながら、これ 前から同じ考えであります 永遠に何かをすることの、 そして、私はprintfのつもりです。 そして今、それは少し奇妙になってきました、 パーセントの私が、より多くのことに来て、 しかし、これらのアイデアはまったく同じです。 私達はちょうど今を遵守しなければなりません コンピュータがある構文 私たちの要求に行きます。 ブール式のようなもの yよりSX以下、またはyよりもX少なく、 そしてz未満のy。 それは少し何かを見るために起こっています このように、単に括弧付き よい測定のための数学のようにちょうどに 確実にその操作の順序 我々が意図したとおりです。 そして今、条件。 yよりも小さいXのであれば、xが小さいと言います yより、xがyよりも大きい他の場合には、 そうでない場合、xがyよりも大きいと言います 論理的に、xがyに等しくなければなりません。 だから、実装する場合があります スクラッチでこのような何か、 または、実装する場合があります この構文でそれ。 そして再び、中括弧は一種のです 私たちのパズルと同じ形状を与えます 作品が、構文は、今、おそらくです いくつかのパターンに従うことを開始します。 だから、何これは、ここで私たちを与えるのでしょうか? だから我々は我々のメインプログラムで、その後戻っています。 今、実際にしてみましょう、 それに何かをします。 だから、これで非常に最初の 私たちは鋭い参照行が含まれ、 標準I / O、点H、及び その後、いくつかの奇妙な角度 その下の括弧。メインint型 空洞、その後のprintfのHello World。 だから一歩を踏み出します。 前にプログラムすることはありません誰か、 少なくともこれらの行のいずれかを説明します。 おそらくいくつかの使い方 先週の専門用語。 例えば、printfのは何ですか? うん。 聴衆:[聞こえません] DAVID J.マラン:うん。 これは、関数、またはステートメントです、 先週の用語から。 そして、それは行動です それが何かをやっています。 今、この機能、または この文は、ありません それは、入力のいくつかの種類を取るように見えますか? そして、何の意味でそれをしません もしそうであれば、入力を取るように見えますか? 入力は、私が何を意味するのですか? うん。 聴衆:[聞こえません] DAVID J.マラン:うん。 だから、いくつかのパズルのピースをスクラッチ どこにあなたがそれをパラメータ化することができます。 あなたは、繰り返しを言うことができます 繰り返し回数をブロックし、 その結果は、入力されました ソート、およびちょうどスクラッチのような 小さな白いプレースホルダーを持っていました あなたが入力し数について、 私たちは、この中に使用します テキスト世界括弧 私たちはその円形の形状を与えるために その中に私たちは入力を接続することができます。 結局、数十年前 ときに、Cと呼ばれるこの言語は、 誰が発明されませんでした それは私たちの一つだ予想されます、 これらのいくつかの年後、私たちはいただきたいです こんにちは言う機能が欲しいです。 右? あった場合、それはいいだろう パズルピース、またはキーワード、 それをすることを、ハローと呼ばれています 文字通り挨拶。 しかし、我々はそれを必要としません。 我々ははるかに低いものを持つことができます 一般的な印刷のようなレベル、 入力を受け取り、コマンド、 私たちが望むものは何でもして印刷。 だから今のパターンに気づきます それが出現し始めます。 オープン括弧、近く括弧されます どうやら入力を受け入れ、 そして私は二重の参照します 両端に引用しています。 奇妙なバックスラッシュはまだあり nは、うまくいけば、今 少なくともその可視化するために開始することができます printf関数は、入力の何らかの形で取っています。 以下のようにユーザーフレンドリーれていません スクラッチ、それだけです そこにいくつかの値に差し込まれたような。 すべての権利、今実際にしてみましょう これで何かをします。 だからうちのいくつかは知っているかもしれないから 前のクラスを買い物しました、 友達とおしゃべり、 その長年のための 我々はと呼ばれるものを使用しました CS50アプライアンス。 これは、技術を表す用語でした これは、仮想マシンと呼ばれます そのあなたのソフトウェアの一部であります 前任者は、オフダウンロードだろう 自由のためのコースのウェブサイト。 彼らはまた、無料の曲をダウンロードすることになります ソフトウェアのハイパーバイザと呼ばれます VMwareのように呼ばれるもの、 またはVirtualBoxの、または任意の数 他のツールの、およびMacまたはPC上での または、彼らは去年持っていたものは何でもコンピュータ そして過去数年間で、彼ら アイコンをダブルクリックすることになります このソフトウェアを実行します ハイパーバイザーと呼ばれます。 そして、そのプログラムの内部 彼らはCS50アプライアンスを開くだろう。 そして効果はということでした あなたの前身か Mac OSのかを実行していました Windowsの、彼または彼女は、その後、 その後、その上に新しいウィンドウを持っていました CS50の環境を実行している画面。 だから、仮想マシンは、1つを実行することができます 別の内部オペレーティングシステム、 それは我々が何をしたかを正確です。 もちろん、私たちのほとんどを通じて、 呼ばれるオペレーティングシステムを使用 Linuxでは、具体的に Ubuntu Linuxの、この の過去数年間に非常に素晴らしい方法です コー​​スに必ずその全員を作ります ちょうど同じ環境を持っていました。 そして、あなたは、任意の種類を使用することができます あなたが実際にしたいコンピュータ。 しかし、マイナス面のうち、 2ギガバイトのようにでした このことをダウンロードします。 それは、必ずしも上のスーパーうまく動作しませんでした そのコンピュータ多分人のみ ギグを持っていたほどのRAM、またはありません CPU速度があまりにも多くのギガヘルツ、 そのため、今年のために これと他の理由、 私たちが移行されています このような環境に。 いわゆるCS50のIDE、 オープンソースソフトウェアに基づいて、 およびサポートされるプラットフォーム Cloud9という会社その ことを、ヨーロッパでサポート 私たちは本質的に持つことができます そのまったく同じ環境など 過去数年、しかし、いわゆるクラウドインチ だから雲は何ですか? おそらく、クリックしました お使いのMacまたはPC上のアイコンをクリックします。 クラウドとは何ですか? うん? 少し大きな声で。 うん。 それはちょうど、コンピュータの束です 別の場所にデータを格納し、実行すること ソフトウェア等が挙げられます。 だから、言葉だけデに本当にです [を説明する法律上の?賃貸?] 別の場所に住んでいるコンピュータ。 あなたつまり、自分自身、 必ずしも所有していません。 だから、ときにあなたのデータ、またはあなたの プログラムは、雲の中にあります、 それはちょうどそれが誰かにであることを意味し 他の場所で他のコンピュータ、 そして、ではない、最も可能性の高い、あなたの上 物理的なラップトップまたはデスクトップ。 そしてそうそれはCS50 IDEは今あるものです。 今後あなたが特定に行きますよ ご紹介しますURL 問題に1を設定するには、この後 週は、それはその後、時には、ログインします あなたにこのような環境を与えます。 そして、スクラッチのような多くが持っていました 関連するいくつかの異なるパネル、 そうCS50のIDEは、まさにそれを持っています。 ここで左上側では、です 使い慣れたファイルブラウザを見に行きます。 ファイルのいずれだからあなた このような環境に置か ちょうどそこに記載されているしようとしています。 ファイルとフォルダ。 右ここで上部には、 あなたは場所を見に行くしています どこにあなたが実際にあなたのコードを書くことができます。 最初はC言語で、後で PHPとJavaScriptでの用語、 そして、おそらく最後のための プロジェクト、RubyやJavaやPythonの または任意の数の言語があります この環境でサポートされています。 それはまったく縛られていません CS50と特異的に。 そして、ここで下の隅で、 特に、より快適なもののために、 あなたが何かを持っています ターミナルウィンドウと呼ばれます。 そして、このターミナルウィンドウができます あなた、あなたの任意のコマンドを実行します このクラウド環境で欲しいです。 それはあなたがインストールすることができます 追加のソフトウェア あなたは、いわゆるいるので、あなたがしたいこと ルート、または管理者権限。 換言すれば、これでもかの 最終的にはクラウドでホストされています、 私たちは持っているにもかかわらず、 ある程度まで、それを単純化 デフォルトでは、文字通りの導入、 ダンアルメンダリス、とディーノのおかげで、 オーバーCS50のチームのダン・ブラッドリー 過去何ヶ月も、あまり快適 たくさんのを隠しモード 最初は混乱気晴らし。 に存在するすべてのもの 典型的なコンピュータシステムを表します あなたは現実の世界で使用する可能性があること。 これはすべて何を意味していると、 我々は実際にそれで何ができるのでしょうか? それでは、実際にプログラムで覗いてみましょう。 だから私は開くつもりです ここでは、実際の環境、 これはちょうど私たちのクロームです Firefoxの可能性があり、ブラウザ、 Internet Explorerの可能性があり、 またはいくつかの他のブラウザにも。 これは、完全な瞬間のためにここにスクリーニングます。 そして、私は実際にいじめたいです このプログラムは何であったか離れて。 それでは、アップ中にズームすることにより、見てみましょう 私がやったことで、上、どのように私はここに来ました。 そこでここでは正確なものです コー​​ドの同じ行。 だから、これは声明で、 あなたは先に述べたように。 挨拶機能。 上、中括弧、 ライン4とライ​​ン6、 エンベロープのおそらく種類 それを関連付けるために、その行 私のプログラムの本質と。 だから実際には、このキーワードは、メイン、 それは、ライン3上にあります あなたは同等であると考えることができ、その グリーンフラッグがクリックされたときその、 スクラッチでブロック。 だから、私たちがここに持っているすべてです、ときであります 緑の旗は、印刷をクリック、または言います、 こんにちは世界。 しかし、どのように、今、の推測を見てみましょう この最初の、より難解なラインが、あります。 シャープは、角度のついたオープン含めます ブラケット、標準I / O点H、 角括弧を閉じます。 おそらく何をやっています、 特にあなたがプログラムした場合 いくつかの他の言語での前に。 うん? 聴衆:[聞こえません] DAVID J.マラン:うん。 その通りです。 だから、これはあなたへのアクセスを与えています 関数のライブラリ、いわば、。 また、関数のライブラリです 機能他の誰か 最近のいずれか、書きました またはずっと前に、あなたはそのように 車輪の再発明する必要はありません。 例えば、我々はしないでください 2015年には、知っている必要があり、 そのプットコードの記述方法 私の画面上の文字。 他の誰かがそれを考え出しました printf関数とアウト 私は抽象的で並べ替えることができるように、 離れているから、または層 彼または彼女の上に コー​​ド、そして今ちょうど取ります 任意のプログラムは、私が書くことを当たり前の 画面に何かを印刷することができます。 だから、ステップ1であり、この最初の行 いわゆるヘッダファイルが含まれて 標準ライブラリのため。 だから、中の言語が表示さ これは我々が今取り組んでいます 標準ライブラリを持っていました 機能の多くが付いています。 printf関数は、それらの一つであり、 そのコードの最初の行 私へのアクセス権を与えることを意味 これらの機能は、私はそのように その車輪の再発明する必要はありません。 それでは、下のウィンドウに行きましょう 私は前にした正確に何をすべきか。 先ほど、私がいたとき コー​​ドをジュルジュル、 初めてそれを入力し、 私は非常に迅速に型指定された、ハロー作ります。 すべてについてあなたが推測することは何でしたか? 私は何をしていましたか? うん? 気にしないで。 大丈夫です。 うん。 聴衆:それをコンパイル。 DAVID J.マラン:うん。 それはちょうどそれをコンパイルしました。 右? これは完全に不慣れであっても、 あなたに、それは次のように英語はかなりです。 それは確かにゼロではありません そして、のものなので、まだ私 そのいわゆるを通じてそれを実行する必要があります プログラムは、コンパイラは、それが起こっています 入力として受け取り、出力を生成します。 少なくとも、今のところ、中 このLinux環境、 これは、前提条件ではありません これは我々が始めましょうちょうどここで、 あなたは一般的に相互作用 このようなコンピュータシステム いわゆるコマンドラインで。 点滅とそう プロンプトとキーボード、 そしてあまりないあなたのマウスではなく、 そんなにウィンドウやアイコンやメニュー、 むしろすべてがテキストです。 そして、これが最初で、感じているにもかかわらず、 一見、おそらく、後方のステップのように、 それは実際にははるかにです 強力かつ表現力豊かな方法 コンピュータを制御します 特にあなたのように、 自分自身、よりになります 以下から快適。 それはあなたが多くを行うことができるようになるだろう まさにマイクロソフト以上のもの またはAppleはあなたが行うことができます そのグラフィカルなオペレーティングシステムです。 だから私は、今、Enterキーを押したとき 何もこの時間は起こりません どうやら理由 プログラムhelloが最新のものです。 そして、コマンドは何でした 私はそれを追いかけましたか? ドットはハロー、ハローと世界を大幅に削減します。 今の段階を見てみましょう ちょっとバックします。 それは、ハローがちょうどであることを確認していることがわかります プログラムをコンパイルする簡単な方法。 ちょうど紹介しましょう 専門用語のワンピース、 しかし、その後離れて移動 それから、それはないですから すべてのことは興味深いです 今日の目的のために。 私たちが使用して起動しようとしているコンパイラ C言語のために、クランと呼ばれています。 そして、これはただの実行だプログラムです 我々はそこに、コマンドラインで行ったように。 そして、私がしたい場合は 私のプログラムをコンパイルします こんにちはドットというファイルに書かれています C、私文字通りこんにちは打ち鳴らすタイプC 入力します。 面白いことにあり、 歴史的な理由のために、 私は指定していない場合 プログラムの名前 私がいない場合、私は、出力したいこと これらのゼロのファイル名を指定します そして、のもの、非常に奇妙な 条約が採択された年前 それはのようなものを感じた場合は 当時の良い答え、 よくちょうど任意に呼ぶことにしましょう 最初のプログラムは、我々は、ドットをコンパイルします。 Aはアルファベットに最初に来ます。 アウト、出力です。 だから我々はプログラムを呼び出します ドットアウトデフォルトで。 私がしたい場合ので、それは大丈夫です 基づいて、このテキストでプログラムを実行します 環境、私はちょうどタイプ ドットが出ドットスラッシュ入力します。 そして、それは以前のように正確に実行されます。 それでは、その本当の高速を見てみましょう。 だから私は戻って私に行けば CS50 IDEでソースコード、 私は代わりにこれを行う、打ち鳴らすハローベビーベッド C入力し、通知は何も起こらないようで、 しかし、ほとんどの場合で このLinux環境、 悪い何も起こらないようだときに、その 何か良いことが実際に起こったことを意味します。 エラーが表示されない場合 メッセージは、すべてのは、おそらく十分です。 そして実際、私は今、ドットドットスラッシュない場合 アウト私は同じプログラムを実行しましたが、入力します。 私はまだハロープログラムを持っています 以前から確かに、それはだから そんなによりよいだけになるだろう タイプメイクの代わりに思い出します これらの呪文 コマンドが、それでは、どのように我々を見てみましょう それにもかかわらず、この時に改善される場合があります。 だから、これはコマンドです コー​​ドをコンパイルします。 これは、実行するコマンドです その後、コードをコンパイルしました。 どのように私は、ファイル名を指定することができますか? まあちょうど紹介しましょう 専門用語のもう一つの作品。 あなたはこの中にいるとき テキストベースの環境、 あなたが指定したいとしています コマンドライン引数と呼ばれるもの。 どの言ってだけの空想の方法ですが、 プロンプトで言い換えること 何の動作を微調整 あなたが実行しているプログラム。 私はそう具体的には、プログラム 名前の打ち鳴らすを入力して、実行しています、 クランと呼ばれるプログラムです。 だから、これは古い学校ですか、 ダブルクリックと同等の Microsoft Wordまたは上 いくつかのプログラムのアイコン。 私だけではなく、その名前を入力しています しかし、コマンドのこのバージョンでは、 私は、ダッシュO空間を持っています ハローハロースペースドットC。 だから、決してきない場合でも、 前に、この世界でプレイし、 まさに推測を取ります ダッシュoはハローのでし​​ょうか? または何それは何をするクラングを教えてくれありませんか? うん。 聴衆:[聞こえません] DAVID J.マラン:うん。 それはちょうどように、ファイルの出力を設定します こんにちは代わりに出ドットsillierの。 そして、確かに、のは、これを試してみましょう。 まず、私が今あれば R Mはこんにちは、はこのやろう。 それは削除します。 そして、それは、removeを言うために起こっています 通常のファイルこんにちは、これ 不必要に難解ですが、それだけで 手段ファイルを削除しますか、 私はイエスのために、yを入力します。 あなたがトップをちらっと見た場合には、注意してください 左、それはそこにから消えました。 私は今打ち鳴らすダッシュOをしましょう​​、と 私が先に行くと、ハローするつもりです、 すべて大文字で、ハロードットC。 今、私はドットスラッシュをすれば こんにちは、あなたは何を期待しますか? 多分それは、大文字と小文字を区別します。 多分そうではありません。 どれどれ。 そのようなファイル、又はディレクトリはありません。 そして、我々はこの種のことでごまかすことができます ちょうど左上を見て。 私は明らかにしました プログラムを保存しますか? すべてはハローキャップ。 だから確かに、それが起こっています 違いを確認します。 だから今のHello Worldが帰ってきました。 さて、これは、すべての罰金と良いです そして、すべての非常に退屈でつまらないです、 GETの一種に、これらに行き詰まります 詳細については、それらを理解します いいね。 ますますこれらを入力します 長い呪文 特にであることを行っていません 世界の人々ので、楽しいです 別のプログラムを発明し、 何年か前に、呼ばれます 非常に単純にすることを、作ります あなたがメイクを入力することができ、 プログラムの名前 あなたが作りたい、と作ります それが中に見えるという点でスマートです 現在のフォルダ、ディレクトリ別名、 あなたはファイルがある場合 こんにちはドットCと呼ばれます、 それはそれはコンパイルされたファイルです ハローと呼ばれるプログラムにあなたのために。 だから、はるかに簡単な方法です もっと不可解なコマンドを実行して 我々は以前行ったこと。 そして、私たちは事前に設定されています CS50 IDEは知っています それはダッシュOとの数を行う必要があること 他のフラグ、またはコマンドライン引数、 私たちはずっと前に表示されますこと。 しかし、それでは、実際にやらせます もっと面白いです。 ただ、すべてのHello Worldを入力して 時間はすべてのこと説得力はありません。 だから私は先に行くと変更してみましょう このプログラムとはこんにちはデビッド、と言います。 今、私はここでダウンして行くつもりです。 私が先に行くとハローを作るするつもりです。 そして再び今、あなたは見ています 作るあなたの時間が表示されています それはだという一連のコマンド 私たちは事前に設定されたのでやって それそのように、私たち 今のところ心配する必要はありません それがある以外の何をやっています 世界はハロー、ハロードットスラッシュをコンパイル。 どうしましたか? うん。 聴衆:[聞こえません] DAVID J.マラン:はい。 だから、noobie間違い。 私は、これは超微妙です気付きます しかし、ここでアスタリスク、タブで、 ちょうどあなたがそれを保存していないことを意味、 ブラウザや他のプログラムと 時々これを行います。 だから、Sまたはコマンドを制御します sがそれを保存する必要があります。 今、私は先に行きましょう そして、プログラムを再実行します。 再コンパイル。 右、それは多段階のプロセスのように。 いずれも、特に複雑でありません しかし、いつでも私たちは、ファイルを変更 私たちは、結果を変更する必要があります 0と1、ドットスラッシュこんにちは。 ワオ。 だから、これは非常にがっかりです 私たちはこれをプリントアウトしています。 Aさんは、物事を作ってみよう 今、もう少しダイナミックな。 まあそれはのようなことを、判明します スクラッチ、Cは変数をサポートしています。 そして、それはあなたがしたい場合判明します 格納する変数を持っています、 我々のような数ではありません 一般的に、スクラッチで行いました しかし言葉のように、またはA フレーズ、または名前、あなた 変数を指定することができます 文字列型であることを。 だから我々は多くの情報を表示します 一瞬でこれらの、 それは、そのCが判明し、 そのような言語の多くは、 変数の非常に具体的なタイプがあります。 それはちょうど、代数ようではありません あなたは、x、yおよびzを取得する場所 そしてそれらはちょうど常にあります プログラミング言語の数、 あなたはあなたができる、数値を格納することができます 個々の文字を格納、 あなたは可能性、全体の単語を記憶することができます 全体画像、全体のサウンドファイルを格納 等が挙げられます。 だから我々は何を指定する必要があります 我々の変数の型があります。 そして、大会によって私を呼ぶつもりです それは簡潔だという理由だけで、変数s、 sは文字列を表します。 そして私は保存するつもりです この変数の内部に、 ただスクラッチで好き 私は、設定されたブロックを使用する場合、 私が使用するつもりです C言語で代入演算子、 これはきれいに十分に等しく、 署名が、等号は、これを行います。 それはに右から何かを移動 式の左辺。 だから私はで明らかになるように、何を行っています ライン5は、私は変数を宣言したです。 私は私を与える、コンピュータを言いました 変数のメモリ、だそれを呼び出します、 私はつもりだことが事前にわかっています その中に文字列を入れることができます。 そして、文字列だけです 文字のシーケンス。 これは、ワード、フレーズ、あるいは段落ですが、 それは一連の文字です。 それは数字ではありません。 どのような文字列私はあることを行っています その変数に入れて? まあ、明らかに引用 引用終わり、「ハンナ」。 今新興だパターンに気づきます。 左側の式があります。 右側の式があり、 等号で区切られています。 そして、ちょうど場合は、推測を取ります それにもかかわらずなじみのありません、 セミコロンが何をしているのかと。 それはおそらく私たちのために何をしているのですか? うん? 聴衆:[聞こえません] DAVID J.マラン:うん。 それはちょうど行を終了です。 右? コンピュータがぶっきらぼうになりたいです 文字通り、何をすべきかを、言いました。 ピーナッツバターのようにと ゼリーサンドイッチ例、 あなたが指定していない場合 正確にあなたが何を意図し、 それは、判断やエラーに残される可能性があります。 セミコロン手段、 それは、このコマンドのことです。 これは、超精密であることだし、それはです オフのままにすることは非常に簡単なもの。 だから今、このプログラムはしていないようです 私まで、異なるいずれかを振る舞うこと それはよりダイナミックにします。 そうではなく、ハード自分の可能性 名前、私はプレースホルダ値を入れてみましょう。 そして、それはことが判明し、私はこれを知っています ドキュメントを読んでから、 そして、、年間の機能を使用したもの printf関数は、動的であるように設計されました。 事前に知っている必要はありません あなたはそれに入れたいものを言葉。 代わりに持つことができます パーセントのようなプレースホルダ、これ 伝えるために起こっています コンピュータは、ここに文字列を置きます。 どの文字列我々はそこに入れたいですか? ウィルは、これらの間のことが判明 覚えている括弧は、境界を設定します あなたが持っている場合、この関数への入力、 コンマは、ここでは、物事のリストを分離しました 私たちは実際には複数に渡します 関数への入力。 だからいくつかのスクラッチが好き ブロック、あなたがないかもしれません 以下のためにそれらを果たしています プロジェクトはまだ、または全く、 いくつかのスクラッチブロックは、2つの入力を持っています。 あなたができる2つの白い箱 数字や単語を入力します。 だから、C言語のような機能を持っていないします 2つの入力を取ることができるのprintf。 そして再び、このコンマ それらを分離されています。 だから英語で、再び場合でも、 あなたは、以前にプログラムされたことがありません そのロジックでのprintf関数であり、 2つの入力のいずれかを取り プレースホルダで、あなたは何を望んでいるだろう printf関数は、この入力をどうするつもりですか? これは、挨拶になるだろう ハンナ、うまくいけば。 だから、これを行うには、我々はそれを保存する必要があります。 私はズームアウトするつもりです。 私はここに戻ってダウンして行くつもりです そして、ハロー入力してください、と言います。 ああ。 何かが間違っている、と実際 これは非常に圧倒的です。 私は、コードの6行を持っています エラーの12行のように。 そこで、このことを楽しみにしています。 それでは、ここで起こっているの? そこでここでは親指の最高のルール、 あなたが出始めている場合は特に、 気を取られません 一番下のもの。 実際には、私は非常に慎重に ちょうど上にスクロール 非常に多くの場合、コンピュータがあるため、 デバイスのすべてではないことに明るいです。 それは混乱になるだろう。 それは一つのことを見ている場合は、その それは理解していません、 それは他の勘違いかもしれません 誤ったコードの行、 にもかかわらず、彼らは完全に罰金です。 だから、常に仕事をしたいです エラーを通してトップダウン。 そして、確かにこれは 現時点では超難解。 エラー、未宣言の使用 識別子の文字列。 私は、標準のことですか? いいえ、私は文字列を意味しました。 そして、それは多分それはタイプミスです、を指しています。 ソートのように、スペルチェックで 非常にマニアックな方法が、ここではその理由、 あなたはこのことを知っていますよ ただ練習することにより、 それはその文字列が判明こと 実際にはCに存在していない、C 特に古い言語であり、 それは非常に低レベルで、です そして、それは多くの機能をしません あなたが育ってきた可能性があること あなたが持っている場合、実際には、プログラムされたと Javaで、あなたのいくつかは持っているとして、 しかし、あなたはそれを新しいことを教えることができます。 そして実際、我々は、このCS50を行っています、 でも、学期の終わりまでに、しかし、 これらの補助輪のすべて 取り出されているであろう、 我々は、これらの中で何をすべきか 週の最初のカップル 最初に我々はまた、持っています あなたはCS50ドットHが含まれます。 どのヘッダファイルです。 将来的にはそれについての詳細。 これは、関数を含むファイルです 私たちはあなたのために書かれていること。 そして、それらの機能の一つであります 入力を取得するための機能 ユーザから、文字列などがあり、 数字、実数、およびより多くの。 しかし、それはまた、いくつかのショートカットがあります。 これは、データ型としてブール値を定義します。 Cは、真または偽を持っていません。 しかし、我々はそれをの概念を与えることができます このライブラリを介して真または偽。 そしてそれはまた、文字列を持っていません 我々は、この行を含めるまでに建てられました。 だから、このコード行を指示します コンパイラは、ちょっと、クランは、見て 全体のためにこのファイル内 コー​​ドの束ことCS50 ように書いています このファイルを使用して、誰も 当たり前のことができます 機能彼らが追加されました。 だから今、私は先に行きましょう そして、画面をクリア、 そして好奇心旺盛な場合、私はちょうど制御を言っています L画面をクリアするたびに、 または、あなたは明確に入力することができます。 私はちょうど今、先に行くつもりだと タイプはハロー作り、すべてが順調です。 それでも難解な出力が、 それは誤ったメッセージではありません。 今、私はドットハロースラッシュ、およびような場合 さておき、ドットスラッシュがほとんどに不慣れです。 それはちょうど、ドット手段を意味 現在のディレクトリ。 だから、今まで使用した場合 DOS、またはLinux、またはUnix あなたが何かを行っている可能性があります CDドットドット、のような ドットドットに後方に行くことを意味します 時間、または後方に行く、またはアップ高いです あなたのディレクトリにあります。 ドットだけで見えることを意味します 現在のディレクトリ。 私はここである、こんにちはたいです。 そして実際、今はハンナ挨拶します。 そして、私は再びそれを変更した場合 マリアに、再コンパイル それは、ハロードットスラッシュになるだろう こんにちは、プログラムが変化し続け。 しかし、これはまだあります かなり愚かなプログラム。 私はこのプログラムを出荷したい場合は、 または友人にそれを与えます、 またはマリアやハンナにそれを与えます そのことについて、それは大丈夫です。 私はそれらの両方のためにそれをカスタマイズすることができ、 それが動的にするつもりはありませんです。 それがコンパイルされていたら、彼らはそれを変更することはできません これらの0と1にダウン。 だから我々は、よりスマートな何かをやりましたか? 何場合は、代わりのハードコーディング プログラムこの人の名前に、 私たちは何を取得する場合 オンデマンドでの文字列? だから、他の言葉で、私はこれをしましょう​​。 私はこのプログラムを再コンパイルするつもりです。 そして、私は今、一番下にズームインましょう。 こんにちはドットスラッシュハローください。 今は何も起こりません。 我々は、迅速なボランティアを得ることができます 何かが起こる作るには? アップさあ。 あなたの名前は何ですか? PANCHO:パンチョ。 DAVID J.マラン:Pacho? アップさあ。 あなたはここに立ち上がったら、これは 非常にがっかりすることになるだろう、 しかし、それはより興味深いです 私はそれを入力するよりも。 あなたが先に行くと、あなたを入力します 名前は、私はあなたのためだけに、このプログラムを作りました。 ちょうどあなたの名前を入力します。 入力します。 ワンダフル。 すべての権利は​​、どうもありがとうございました。 PANCHO:ありがとうございました。 DAVID J.マラン:OK。 [拍手] それはとても親切でした。 どうぞ。 私たちは何をしましたか? だから最終的には、少なくとも、 このプログラムは、動的ました。 今では確かにまだです デザインがっかりすることにより、 しかし、我々は最終的に能力を持っています 今くらい、事前にコードを書くために printf関数の作者のように、 して、動的に 我々は、入力に基づいて適応させます 手渡し、いずれかのプログラマによって、 または実際だ人間が プログラムと対話します。 それでは、実際に今試してみましょう いくつかの他の構成を行うには 私たちはプログラムを作ることができないかどうかを確認 自身より洗練されました。 それでは、先に、代わりの手放します 最初からこれを書いて、 私は今日に行くつもりです ソースコード、およびこのすべて コー​​スの上で利用可能です ウェブサイト、そしてあなたがそれをドラッグ&ドロップすることができます あなた自身の環境に 問題一度金曜日来ます セット1はあなたに与えます 命令、またはあなたができました 以下のようにコマンドラインでそれを行います Pセット1に来ても、より多くの。 のは、このプログラムに何があるか見てみましょう ここで、加算器ドットCと呼ばれます。 今、私はすでにコメントしました それは、新しい何ですか? 一見、何行 コー​​ドの絶対に新しいのですか? おそらくない根本的に 今不慣れ。 聴衆:[聞こえません] DAVID J.マラン:ええ、 だからint型のxは、nを得る等しいです。 我々は、こののいずれかを見たことがありません 前が、int型はおそらくあります どのような種類のためのシンボル 変数、[? ?]整数。 だから整数をint型。 それはちょうどより多くであることです 簡潔。 xは単に任意です。 xとyとzはまだ 数字のためにかなり合理的な、 しかし、一般的に、我々は一度言葉を使用します 私たちのプログラムは、より複雑になります。 もちろん、int型を取得し、 GET文字列のように多くの、 おそらく、取得しようとしています ユーザーからint型、 し、我々はするつもりです Yと同じことを行います。 そしてどうやら、にもかかわらず、この 最後の行、24は、より複雑に見えます、 それはこれの合計を言うために起こっています それは、この他の事です。 予告パーセント私 おそらく何を意味しますか? パーセントを何役割 私は明らかに役立ちますか? それはちょうどプレースホルダです。 右? パーセントsが文字列のためでした、 パーセントiは整数のためのものです。 パーセントFがあるように起こっています 浮動小数点値のために、これ 小数点を単に数です。 換言すれば、実数。 それでは、実際にこれをコンパイルしてみましょう プログラム本当に速いと加算器を作るのですか。 おっと。 良い機会。 そこで、私のユーザーは、ここですべてのこの時間に気付きます jharvardでこのアカウントの名前を入力します。 私はCS50のIDE、別名IDE50にしています。 そして今ここに青色で、言及するが、 環境から、私はどこの。 そして実際に、私はトップまでズームインするとき、 ここで、私はIDE50を持っていることに気づきます あなたの種類の場合、私は、この言葉を参照してください 側にあなたの頭を回し、ワークスペース。 一言で言えば、事実 私はチルダスラッシュワークスペースを見ています このテキストであることを意味 ベースのコマンド環境、 私はの等価テキストで午前 ここでこのグラフィカルなフォルダをバックアップします。 だから私は、ドットスラッシュを行うとき 加算器、それはルールを言ってんです ターゲット加算器停止を行います。 私は、それが何を意味するのか分かりません それが何らかの理由で悪いです。 そのようなファイル、又はディレクトリはありません さらに明らかです。 それは、その後どこにありますか? 私がクリックした場所に基づいて、 以前のファイルを開きます。 それはどこでしょうか? これは、ソースで、おそらくです 1ワット、水曜日のため、 私は、確かに、それを見ることができます 私はそれを開く場合。 そこ加算ドットcがあるが、中 このテキストベースの環境、 再び、私はスーパー明示しなければなりません。 私はにディレクトリを変更したい場合 ソース1水曜日は、私が入力する必要があり、 CD・スペースソース1 水曜日は、今入力し、 私のプロンプトの変化に 私は視覚的な手がかりを与えること 私は他の場所で、確かに、です 私の環境で、 しかし、今私はメイクを行うことができます 加算器、それが動作しているようです、 ドットは私に整数を与え、加算器を大幅に削減。 1。 2。 1と2の合計は3です。 しかし、私は協力しない場合は、 のがintがする何を得るを見てみましょう。 私に整数を与えます。 いいえ。 再試行してください。 OK。 ファイン。 50。 50。 大丈夫。 だから、最終的に協力しています。 そして、それはいくつかのです 機能これらの機能 あなたのために組み込まれていることができます。 実装の内部だから int型の、どのようなプログラミングを得ます である可能性があり、先週から構築 そこにリトライのこの動作を強制するには、 再試行、再試行? ええ、おそらくあります ループのいくつかの種類。 これは、構文的に見えるようになるだろう スクラッチのブロックとは異なります、 それは確かです ファイルの中です。 そして、数週間の時間では、よ 実際にCS50ライブラリを見て 内部のだが、そこに何のよう まさにそれを課すループ。 のは愚かな少し遊んでみよう ここで、このファイルを使用してゲーム。 コンディションゼロドットC。 私達はちょうど一般的になるだろう ゼロからカウントを開始。 そして、私は過去をスクロールし続けます 一番上のものの一部。 青ここでは、すべてを画定 これらの星とスラッシュの、 プログラムあなたの人々 前、それは何ですか? なぜ我々はそれをスキップ続けるのですか? 何? 観客:それはコメントです。 DAVID J.マラン:うん。 それはちょうどコメントです。 これは、人間のためのコメントです 読み取るために、私たちの場合と、 ファイルの名前を教えてくれるもの 、誰が書いたか、であり、それは何をしますか あなたが持っていないように、 コー​​ドを読むために このファイルはすべてに約あるか知っています。 それはちょうど説明だが、 機能的には無関係です。 そして、私もそれをから削除することができます 私のファイルとそれに影響を与えることはありません。 ジューシーなラインはこれらです 今ここで最初の2、。 int型の主な空隙が同等です 私たちの緑の旗のクリック、 私たちはそのことを残すつもりです 今日のために、私たちは戻ってくるだろう、 結局、何のよう int型と空隙が、今ですが、 私が何をやったかに気付きます ここでも、あなたもすることができ、 あなたはラインで持っている場合 あなたが持っている場合は、コメント あなたが共有したい考え コー​​ドの特定の行について、 Cのコンベンションは、スラッシュを行うことです スラッシュ、その後、いくつかの簡潔な言葉、 ない完全な文、 一般には、段落、 それはあなたに説明したり、 TF、または他の読者や同僚、 あなたのコードが何をしているのです。 そうではなく、見ています この時や線から推測 何であるか9、10、 この行8で、やっ 私はちょうどにコメントを与えます 整数をユーザに尋ねます、 私はあまりにもハード考える必要はありません 行9と10が何であるかについて。 私はちょうどそれが何だことを知っています 総称して、彼らはやっています。 どうやって? さて、ここでプロンプトです。 ここではint型の取得です。 そして、以前に基づいて 動作は、それは、get int型のように思えます ことを確認するのに十分スマートです 人間が協力して、それを提供します 整数。 しかし、今、私たちはこれを参照してください。 そして、これはスクラッチを彷彿とさせます。 私はだと主張しています ユーザの入力を解析し、 やや不正確。 そして、これは明らかにC言語でどのように それ以外の場合、私たちは、枝を表現します、 道路の分岐点が、私 やや不正確言います。 このプログラムのバグは何ですか? さらにバック? うん。 聴衆:[聞こえない]ゼロ。 DAVID J.マラン:うん。 私はゼロで入力した場合それでは、考えてみましょう まさにそのような場合、またはコーナーケース、 あなたがする場合。 だから私はゼロで入力した場合、そのうちの ブロックは明らかにそれをつかむために起こっていますか? ifや他の? 他に、それは言うために起こっています、 あなたが負の数を選びました。 そして実際、ゼロが想定されていません 正または負であるためには、 ので、それは誤っだろう。 それはバグでしょう。 では、どのように我々はこの問題を解決することができますか? 前にプログラムではありませんでした誰か? 欲しいですか - 聴衆:[聞こえません] DAVID J.マラン:後退? 聴衆:[聞こえません] DAVID J.マラン:ああ、あなたはありますか? 前にプログラムしたことがない人。 であなたの手を試してみたいです この、赤いシャツで? アップさあ。 あなたが気にしなければそうそう、アップに来ます。 だからプログラムありませんでした 前、あなたの名前は何ですか? ローレン:ローレン。 DAVID J.マラン:ローレン、すべての権利。 だから、私たちのためにこのバグを修正。 あなたはおそらく、Cを見ていませんでした、 おそらくありませんその他の言語。 だから、私たちのためにこのプログラムを修正します。 屋はじめまして。 いいえ圧力ありません。 ローレン:うん。 DAVID J.マラン:しかし、再び、この場合 ギャンブルは、計画に従って行きます お持ち帰りここになります 開始するには、もう一度、あること パターンとに気づき 既存の構文から推測 他にどのようにあなたが表現するかもしれません ためには、自分自身、全くしゃれが意図していません、 いくつかの追加シナリオをキャプチャします。 だから、もし他に言っています。 printfの、良いです。 そして、CS50に気付きます IDE、およびfrankly-- IDE 統合の略 開発環境。 それは言ってだけの空想の方法です あなたのプログラムを支援するプログラム。 それはのようなユーザーフレンドリーなことを行います 1つの括弧を入力すると、 それは自動的にあなたに他を提供します。 推定は、あなたがしていることです 最終的にそれを入力するつもり、 それはまた、引用符でそれをしません。 だから私は、23行目が好きです。 そこに道の99%。 誰かが先端でチャイムしたいですか? 私は観客からのセミコロンを聞きました。 良い。 だから、それを完了します。 そして今、私は少しを持っています ライン21と仰天。 どのように我々はこれを表現したいですか? 私たちは何を質問したいです 、聞いて、あなたは思いますか? そこで以前、私たちは質問をし、 nがゼロより大きい場合、これを行います。 そうでなければ、それを行います。 だから私たちは選択する必要があります 質問はここに依頼します。 聴衆:[聞こえません] DAVID J.マラン:良いです。 だから、nがゼロに等しい場合。 優れています。 それでは、ここで一時停止してみましょう。 これを勇敢に立ち向かうために本当にありがとうございました。 当然私はあなたに少し挙げてみましょう おそらくそこにストレスボール。 だから我々はほとんどがしています。 実際には、ローレン、あなたがしなければありません 心が、私は1がここで調整しましょう ただでさえと一致するように 我々はスクラッチで見たもの、何 私はラインをどうしたいですか 21、24、もう一度ベース 我々は、おそらく、スクラッチでこれをやりましたの? 聴衆:それを移動します。 DAVID J.マラン:うん、それを移動します。 だから、他の条件、第三、または 、第4、又は第5、または最終ブランチ 確かにその後に来る必要があり、 それは、単に慣例によりです ちょうどあなたがするかどうかのため。 だから私は、この微調整を行う必要があります。 そして、私は私を配置する必要があります ここに戻って中括弧。 そして今、このプログラムがコンパイルされます。 私たちはとても近くだが、あります 非常に、非常に微妙なバグを修正しました。 それでは、何が起こるか見てみましょう。 まず、私が先に行くと、ズームアウトしてみましょう。 私は先に行くつもりだと 条件をゼロに入力します。 ああ、私は嘘をつきました。 今コンパイラがあります 実際にはかなりスマート。 そして、私は本当に理解していません それはエラーメッセージです。 割当ての結果を使用して 括弧なしの条件として、 明らかに悪いです。 しかし、それは何を意味するのでしょうか? さて、再び、パターンを探します 我々の前に見てきたコードで、 実際にやって17行もので、 ローレンは少し意図にもかかわらず、 そうでない場合は? うん。 聴衆:[聞こえません] DAVID J.マラン:うん。 だから明らかに、等号を覚えています 我々はそれを前に使用してきたように、イコールではありません。 右から左への割り当て、。 だから、現時点では17行目 条件は、それがな 括弧内のコードを実行し、 しかし、そのコードが実行されると、 何がゼロの値に起こっているのでしょうか? 何がnの値に起こっているのでしょうか? ゼロになります。 nがゼロになってきているのであれば、 そして再び、最後の週として、 我々は、一般的にゼロと言います 偽であり、1つは真です、 またはyesが1ではないと何がゼロです。 だから、真と偽、1と0。 17行目のようにnがされている場合 値0指定された、真のゼロですか? いいえ。 定義により、ゼロはfalseです。 それは我々がしている大会です 前進にしがみつくつもり。 そうであろう線18、19、および20 これまでに、論理的に、今適用? 彼らがすることはできません。 だから我々は質問を しかしかなり正確には、 あなたがなければ、これを知っているだろう あなたは、C内の溶液、それを見てきました あなたが表現したいときであります 平等、あなたはイコールに等しいと言います。 だから、等号はすでに使用されました 割り当てによって、右から左へ。 等号は、equalsを意味等しいです。 そして、あなたは本当にあなたの心をしたい場合 JavaScriptとPHPで、曲げられます、 等号に等しいは、そこに等しいです 完全に何かを意味し、 私たちはずっと前にそれに取得します。 だから、これは簡単な修正ですが、実現します この間違いをする超簡単、 して、不思議と闘争 分、ない時間であれば、 なぜ私のコードではありません 私が意図したとおり実行? あなたが教えてくれなかったからです それは正確にあなたが何を意味するのか。 だから、ほとんどでした 完璧な、それは素晴らしかったです 我々はこれらの二つの小さなつまずいていること 物事今、我々はそれらを修正する場合のため、 私は状態ゼロを作るのですか ドットスラッシュ条件ゼロ、 私は整数をお願いしたいと思います。 どれどれ。 いいえ。 それはそれを行うために私を強制的に起こっています。 だから42。 私は正の数を選びました。 だから今、私は証明しない方法 正しいこのプログラム? あなたは数学者であれば、あなたがすることはできません 本当に試行錯誤することによって、これを証明します、 右? あなたはでわずか証明することはできません 少なくとも一例が、 プログラマーとして私たちではありません 今のところ証明するためにしようとするつもり これは実際にはその 正しいが、私はおそらくべき いくつかの代表的な例をテストします。 私は42をテストしました。 私は43をテストすることができます。 私は44をテストすることができます。 テスト45。 右? しかし、私はこれは本当に長い時間行うことができます。 何がいくつかのより多くのだろう 興味深い例は、試してみますか? 聴衆:[聞こえない]ゼロ。 DAVID J.マラン:だからゼロ。 確かに。 そして、良い、私たちは、それをこの時間を持っています ローレンの新しいコードのおかげで。 しようとする別の良いケースは何ですか? 聴衆:負1。 DAVID J.マラン:負の一つであり、 多分少し何か大きなもの、 ので、多分42負、 しかし、一般的には、時 あなたのプログラムをテスト 前進し、あなたがしています 考えてするつもり 自分自身に、好きなもの 基本的に異なる場合があります。 そして、私は否定的なケースをあえて言い​​ます、 正の場合、ゼロの場合 かなりこれらを丸めます。 それでは、このかかわらずの変形を見てみましょう。 条件1。 これは、ここで正解です あなたがオンライン2とが表示されますように、 あなたが歩く場合 ウォークスルーは、一般的になります 私たちまで、これらを段階的に増加さ 正確に正しいアプローチを得ます。 私たちがお願いしたい場合はどのような 一度に二つの質問? 私が代わりにこれを開いてみましょう。 理由のための非スイッチ、 我々は別の時間が表示されます。 構文的にここで新しい何ですか? 私は現在、ゲームをプレイしています コンピュータが語っている場所 私は、私に整数を与えます 1と10の間、 そして私は、ユーザの入力を判断しています。 英語では、上のベース あなたはここを参照してくださいコード 青で、このプログラムは何をしているのですか? 聴衆:[聞こえない]ピックアップ 大きいか小さい数。 DAVID J.マラン:うん。 それはちょうどかどうかを裁定です 私は大きな、またはメディアを選びました、 または少数の非常に基づきます 小、中の任意の定義、 ここで大規模な、しかし予告 新構文はこれです。 intまたは等しいよりも少なくはありません 記号、または署名する以上、 ここで1は、他の上にあるあなたのこと Microsoft Wordのようで表現することができます。 プログラミング言語のですから 一般的にちょうど2つの文字を行い、 次々に。 そして、これはおそらく、何が 、アンパサンドアンパサンドを表します。 聴衆:[聞こえません] DAVID J.マラン:うん。 それはちょうど意味しているため Cの作者ことが判明 単一のアンパサンドを使用し、 これはあなたが思うかもしれません 概念のために完璧になります のと、すでに、最大使用されています 実際にそのようにアンパサンドアンパサンド 私たちが実際に必要な場合をキャプチャします。 それでは、今二つのことに遭遇してみましょう。 私が先に行くと1を開いてみましょう。 少し気になる何か。 不正確ドットC。 私はここで二つのことをご紹介しましょう​​。 一、私たちにできるの通知 ただ以前のようにするときのように数学、 我々は2つ​​の数x、yのプラスでした。 このプログラムは明らかに何をしているのですか? 私は、まだそれをコメントしていませんでした 私は%のFを導入しましたが、 私はすぐに以前に述べました パーセントfは、浮動小数点の意味します 実数値。 小数で何か 整数ではない点、。 このプログラムは、あなたは何を思いますか 画面上を見せしようとしていますか? うん? 聴衆:10上の1つの結果。 DAVID J.マラン:うん。 10で割った1の結果は何ですか。 右、あなたのすべては、おそらく持っているので、 10以上のこと1​​を知って育っ 何? うん、それはちょうど1/10または0.1です。 右? それでは、これは実際にあるか見てみましょう。 だから私は先に行くと、これを保存してみましょう。 私はここでダウンして行きましょう。 不正確ドットスラッシュを作ります 不正確、予告、あまりにも、 Linux環境で、あなたはしないでください 不正確を入力して取る必要があります 一日中。 一般的にこれ、あなたがタブをヒットした場合、それは あなたのためにあなたの思考を終了します、 ある単語に基づい 現在のディレクトリに利用できます。 OK。 だから、正しかったです。 10で割ったものが、実際には、0.1です。 しかし、私は少し興味があります。 そして、それはprintf関数が判明 いくつかの機能をサポートしています あなたはより多くを指定することができます 小数点数のデフォルト値。 だから私は、10進を表示する場合 ポイントは、私は、パーセントを行うことができ、 プレースホルダのシンボルに対して、ドット 10のために、私に10進ポイントを与え、 して、まだ浮動小数点 値、および、脇など、 このバックスラッシュnは何ですか どうやら我々は、使用し続けますか? それはだが判明 新しい行のシンボル。 それは非常に明確な方法です コンピュータにというのが、 次にカーソルを移動 設定が完了した後に行。 そして、我々は何が起こるかわかります 我々はそれをしないとき。 私は不正確を作る再コンパイルしてみましょう。 今不正確ス​​ラッシュドット。 OK。 まだ右。 一つは、10で割ったもの。 今私は取得しています しかし、少し好奇心が強いです。 私が見れば20進 指摘し、再コンパイルし、再実行し、 、脇用として スピード、あなたも使用することができます あなたの上下の矢印に あなたの歴史をスクロールし、 あなたは維持する必要はありません これらのコマンドを再入力、入力します。 はぁ。 私は小学校でそれを学ぶことがなかったです。 すべての権利は​​、そのように私をしましょう うち29ヶ所のように参照してください。 多分それは単にまぐれです。 多分、私のコンピュータは、奇妙な演技されています。 それは正しい、ことではありませんか? これは、決定論的な何かをやっています。 だから、不正確を作ります。 [OK]を、それはめちゃくちゃです。 だから何が起こっているの? だから、明らかにあなたの 先生は嘘をついてきました あなたのために、この時間のすべてに 私たちはずっと前に表示されますの理由。 しかし、ここでは一つの他のプログラムで終わりましょう。 これは小さなプログラムであります 誰かが、何年か前に書きました そして、それは実際にコンテストの一部です。 誰もが実際にコードを書き込むことはありません このように、あなたがしなければ、 これは文体の問題です。 しかし、人々は自慢する権利のためにこれを行います。 ほとんどの混乱を書き込むには、 探しているプログラム それにもかかわらず、何か面白いものを行います。 そして、ノートでは、私たちは上のままにしようと思いました 今日、コルトン、ここで私たちを演じる前に、 このプログラムを実行することです、 だけでも、使用しています、 このテキストベースでC 環境は、私たちにこれを提供します。 くそ。 [笑い] 待機する。 [聞こえない] Cダッシュリットルメートル。 あなたは魔法を参照してくださいするつもりです 私たちはずっと前に表示されます呪文。 [聞こえない]すべての権利。 そして今、あなたもすることができます このようなことを行います。 それでおしまい。 CS50のために我々は、金曜日にあなたが表示されます。 [音楽再生] [拍手]