DAVID J.マラン:これはCS50である。 そして、これはCS50自身コルトンオグデンだった、 あなたができる音楽だ人の多くのため soundcloud.com/cs50でダウンロードしてください。 だから、今日私たちは、すべてのより多くの焦点を合わせる プログラミングの技術について。 私たちがしたところから、私たちは取る 先週オフ、焦点 このたスクラッチ、上 グラフィカルプログラミング言語。 また、下位レベルまでの事を取る より伝統的なプログラミングを使用して 言語Cとして知られているが、 道に沿って、実現する その同じアイデアたち 先週の金曜日の話 これだけでなく再発する 言語Cが、ほとんどの他のすべての内 私たちは、この学期を見ていること。 だから私たちはこの事を呼ばれる ここに最後の何時? これは、ステートメントを表している。 そこで、この文と呼ばれる。 そして、それは何かを。 それは命令だこと コンピュータまたはスクラッチが実行可能性があります。 そして今後、のも始めましょう この関数のようなものを呼び出すと、 理由のために、私たちはすぐに参照しなければならない。 一方で、私たちはこのようなものを見た。 これらは一般的に 構築何として知られている? 聴衆:ループ。 DAVID J.マラン:だからループ。 だから、非常に簡単。 これは文字通り、それは言うことありません。 スクラッチには、あなたがしたい場合は、 そこに、よりパズルのピースを詰め込む、 作品は、それに合わせて成長します。 そして、私たちは、そのC言語で表示されます 私たちは同じことを行うことができます。 ループ別のタイプの、しかし、 スクラッチで永遠かもしれないが、 または、任意の数があります 他のアプローチの。 しかし、ここでもっとてみましょう 顔とジェネラリスト表情、 それは、おそらく非常に精通してい より一般的に、ループで。 Mark Zuckerbergは:ワン 事そのコンピュータ ある時は本当に良いです コマンドを繰り返す。 人として、あなたは取得したい よろしければ本当に退屈 同じことをしなければならなかった 行の回数がたくさん。 しかし、コンピュータは、同じことを行うことができます 何回でも何百万あるいは何十億、 そして退屈して、できないことが 本当によくそれを行った。 例えば、もしだから私 誰もが望むたかった Facebookの幸せな誕生日に それらのメールを送信することにより、 それは私よりも多くかかることがあります 実際に書き出す世紀 誰にでも、これらの電子メールのすべて。 しかし、わずか数行のコードで、私がすることができます システムはすべての人に電子メールを送信している 希望のFacebookの その誕生日おめでとう。 だから、ループがあるものだと、なぜ 彼らは貴重な何かだ コンピュータは非常によく行うことができます。 DAVID J.マラン:もしそうであれば あなたが受賞してきた CS50のうちのいくつかのと 後半のDropboxののスペース、 それは、実際には正確に私たちの 全くそのようなコードを使用して、実行します。 私たちは、基本的には大きなを持っている スプレッドシート、その中に 人々は彼らを入力されています 名前とメールアドレス。 そして、私たちは、コードのほんの少しを書いた これらのアドレスを反復処理することができます とに固有のアドレスを吐き出す ケースの誰もが複数回提出した。 その後、私たちはお送り CS50のボットからの自動送信メール、 クーポンコードを含む。 今、私たちにも見 これが最後の時間を構築する。 そして、これは特定のです ものの例? だから、ええ、ブール式。 そして、形状が意味される 同様にそれをキャプチャします。 すべてのそのような質問 スクラッチでの真または偽のフォーム このような小さなものになります。 そして、私たちは、これはブール式を呼び出す。 それは確かに真または偽ません、yesまたはno。 これは、質問に答えるの方法です。 そして、その間、あなたは、これらのブールを使用することができます コンストラクトの内部表現 これらのような、そのうちの もちろん条件は、 または支店、ことわざ 道路のフォーク。 そして、彼らはだけでなく、見ることができる このように、彼らはまた、缶 それらとよそ関連付けられています。 そして、あなたは実際には3つの方法を持つことができます 道路の分岐点または4ウェイフォーク 道路では、単純にすることにより これらのことをネスト、 あなたがスクラッチに表示されますように あなたは既にいない場合。 そして、あなたは同様にC言語で行うことができますように。 それでは別のジェネラリストを見てみましょう だけでなく、alumnistを見て誰が 異なるアプローチを提示するかもしれない これらの事に条件を呼んだ。 ビル·ゲイツ:人が作る 決断毎日。 たとえば、あなたが外に行く前に ちょっと、言いif文を持っている それがその後雨が降っているかの私 私のジャケットを取得する必要があります。 そして、コンピュータはあなたに一度素晴らしいです 文のそれらの種類を決定し、 彼らは確実に実行できるよう 信じられないほどの速度でそれらの事。 だから、コンピュータプログラムは本当に 数学といくつかの少しはある 文どこかの 決定が行われます。 DAVID J.マラン:よう ご存知かもしれませんが、それがあった ビル·ゲイツのような人々、 ポール·アレンなど それは本当に開幕 パーソナルコンピュータ、いわゆる 数年前の革命。 私たちはダイビングをする前に私は、思った いくつかの付記に、 私たちは、アルバカーキから物語を関連付けると思います ニューメキシコ自然史博物館 科学どこビル·ゲイツの一部」 とポール·アレン最古の物語 私達が今持っているどのように詳述されている 今日のPCとMacなど。 このためには、しかし、私たちは2人のボランティアを必要とする 非常に良好なナレーションの声を持っている人 スクリプトを声を出して読むこと。 すべての権利は​​、どのように戻ってそこでは約。 アップさあ。 そして、どの程度前でここに。 ダウンさあ。 ここにあなたの場所を取る。 あなたたちが出てくるように、カップル 行政の発表。 切片化、プロセス セクションを選択する、 これを開始します 金曜まで水曜日。 今度のことの詳細 講義中の水曜日。 スーパーセクションは、一方、ある 私たちは来週提供何か クラス全体が招待される かなり大規模に参加する セクション、より快適な1、 一つ少なく快適。 そして、私たちは詳細を発表する それの、だけでなく、今週後半。 一方のセクション、 自体は、開始されます 週コースの3人に、ゼロのインデックス、 あるものは、数週間であることを意味し アウト。 だから心配しない。 あなたはまだ欠席していない これらの線に沿って何か。 一方その間に、よろしければ 管理上不明な点がございまし、 自分自身とデヴォンとゲイブを電子メールで送信 そして、ここでこのアドレスのロブ。 最後に、問題が設定され 0アウト、もちろんである。 あなたはそれを気づいているかもしれません コー​​スのウェブサイトで。 それはであなたを提供する必要があります 質問に対するすべての回答 あなたがのために道に沿って持っているかもしれません 問題のあるセットを使い始める。 しかし、あなたは自分自身を見つける場合は、 救いの手を必要としている、 是非オフィスアワーに出席、 月曜日、火曜日、水曜日、木曜日 夕方には、今週の 4ダイニングホールで。 細目のためにそこにそのURLを参照してください 営業時間は、でなければならない場所。 今度は、私たちにお会いしましょう 2名様今日ここに。 あなたの名前は? JAY PAUL:ジェイポール。 DAVID J.マラン:ジェイ ポール、はじめまして。 ひかり:ひかり。 DAVID J.マラン:ひかり? ひかり:ひかり。 DAVID J.マラン:ひかり。 同様にはじめまして。 ジェイ·ポールとひかりで持っている これらの音楽に彼らの前 私は印刷された2つのスクリプトをスタンド ニューメキシコ州から今朝アウト 自然史科学博物館。 そして、私が考えたもの 私は、オーバーヘッドで行うだろう あなたの暗唱を同行さ スクリプトとその歴史の いくつかの視覚的なイメージを持つ、ない驚き。 そして、私は事前に何をやったか スクリプトにprehighlightさ あなたが読むべきか、 そして何を読むべきです。 そして、私たちは基本的によ ちょうど別の段落。 だから、ずっとあなたのようなかもしれないです 英語の授業で行った。 それは本当に観客を強要だ ここにあなたの話を信じている。 私たちはしなければならない? だからここの話は、私たちが持っている、である BASIC、そしてそれは、ケンブリッジで始まる。 JAYポール:それは冬だった1974年、 ケンブリッジ、マサチューセッツ州 冬は寒いことができる場所。 ひげを生やした、毛足が長く 大学中退命名 ポール·アレン氏はハーバード大学を越えdrudgingた 彼の考えで吸収さ広場。 当時の彼の主な関心事 彼の友人、ビル·ゲイツを取得する方法であった、 学校を終了して行くために 彼と一緒に事業へ。 ひかり:二人はすでに行っていた ビジネスベンチャーの数まで 一緒に、レイクサイドで始まる シアトルどこの学校 それらはへの無料コ​​ンピュータ時間に支払われた 現地時間のPDP-10コンピュータをテスト 会社を共有する。 最新の計画は終了していた 学校とは、ソフトウェア会社を設立する。 アレンはワシントンを離れていた 州立大学。 しかし、最後の最後で、ゲイツ ハーバードに固執することを決めた。 JAYポール:あの日、ハーバード大学を横断 広場、アレンは1月を発見、 人気のエレクトロニクス1975年問題 地球がヘッドラインを停止して、 世界初のミニコンピュータキット 商業モデルに匹敵する。 見出しの下にあった 小箱の絵 照明とスイッチで飾ら。 それは、MITS Altairは8800と呼ばれていました。 そしてアレンは、これは何を知っていた 彼が探していた。 ひかり:議論の日数が続いた。 アレンとゲイツ氏は理解 アルタイルの意義。 彼らは頻繁に話していた マイクロプロセッサに関する 何を見るために待っていた それらを用いて行うことになる。 さて上のミニコンピュータキットがあった 人気のエレクトロニクスの表紙。 それは明らかにまだソフトウェアがありませんでした。 彼らは国家を想像 プログラマはMITSに下降。 だから彼らは、エド·ロバーツと呼ばれる 会社の頭、 のバージョンを持っていると主張する ほとんど準備ができて、BASICプログラミング言語 アルテアのため。 彼らはしませんでした。 そして、ロバーツは、彼らはしなかった知られている必要があります。 彼は、10コールから一日を得ていた BASICは、ほぼ準備ができていた人。 そして、彼の株式応答 「最初の人だった 誰が作業して現れる BASICは、契約を取得します。 " JAY PAUL:ゲイツ氏とアレン アルテアを見たことがなかった。 彼らは見たことがなかった インテル8080マイクロプロセッサ アルテアの中心にある。 しかし、数年先に アレンは、プログラムを書いていた エミュレートされたメインフレームコンピュータ上で 以前のインテルの動作 マイクロプロセッサ。 そして、彼らの周りのこの時間は 同じことをするだろう。 ひかり:インテル付 彼の側で8080マニュアル、 アレンはに座っ ハーバードPDP-10コンピュータ とエミュレータとソフトウェアを書いた プログラミングを行うために必要なツールを提供します。 またゲイツ氏は行くが停止 クラスへと身を捧げた BASICを設計する、 すべてのトリックを使用して、 彼はサイズを取得するために知っていた 4キロバイト以下にダウン。 JAY PAUL:アルバカーキのうち、 エド·ロバーツは、ゲイツから電話があった 方法の詳細を求める Altairは特定のルーチンを処理していました。 誰も前にあることを頼まなかった。 そして、ロバーツは興味を持ち始めました。 ひかり:発展に伴い ツールおよびデザイン準備、 ゲイツとアレンは書いた PDP-10上のコード、 別のハーバード大学の学生を入隊、 モンテダビドフ、数学ルーチンを書くこと。 の最後の晩の後 プログラミング、アレンは飛行機に乗った MITSに彼らの基本を提供します。 彼は飛行機が気に乗り切る過ごした。 そして戻ってケンブリッジの ゲイツは心配しました。 彼らは基本的にテストされていたし、 それはエミュレータ上で働いていた。 しかし、どのようなエミュレータが間違っていた場合は? JAYポール:平面として アルバカーキに近づいた、 アレンは、そのことに気づいた BASIC、今きちんと含まれている 小さなロール上 、紙テープだろ打ち抜か 独立したことなく、役に立たない ローダと呼ばれるプログラムと、その どのアルタイルを言うだろう 紙テープ幸福を読み取る テレタイプ機に供給。 彼はノートブックを取り出し、すぐに ローダプログラムを走り書き アセンブリ言語では、手動で 1と0にその翻訳 Altairは理解するであろう。 ひかり:アレンは期待していた きれいな、少し、ハイテク企業 ビジネススーツの男性が経営する。 ロバーツが満たされたときに彼は驚いた 空港で彼の牧場のように見える 手。 ロバーツも驚きました。 彼はハーバード大学を落としたときに 高価なホテルで、プログラマ、 アレンはそれを告白しなければならなかった 彼は部屋を余裕がなかった。 JAY PAUL:MITS、そのものだった ほこりストリップモールに位置しています。 雑然とした上でインサイド ワークベンチは、アルタイルだった の5キロバイトで、最大ロードされた メモリとケーブルで接続 テレタイプマシンに。 ロバーツとチーフエンジニア、 ビル·イエーツは、期待し待っていた アレンは彼のローダーを切り替えるように アルテアにプログラム。 テレタイプは、それが引っ張られたよう一気飲み始めました テープリーダを介して紙テープ。 それはおそらく、15分を要した プログラムをロードします。 その後、テレタイプが突然印刷 その後メモリプロンプト、準備プロンプト、 とアレンはタイピング始まった いくつかのテストコマンド。 みんなの驚きに、 ソフトウェアが働いた。 もちろんバグがありました。 しかし、主なものは、それが働いた。 HIKARI:その後、自分の道上へ パンチョさんで3.00ドルランチ、ハチが飛んだ ピックアップのウィンドウ内 トラックや腕にアレンを刺さ。 しかし、その点は何もで 気分を台無しに可能性があります。 Altairは今、その基本を持っていた 家庭用の最初の商用ソフトウェア ポール·アレンとビル·製コンピュータ、 ゲイツ氏は、Microsoftのような事業を行って。 DAVID J.マラン:多くの 両国の読者のおかげ。 [拍手] DAVID J.マラン:今 あなたの選択肢を持って、 あなたが去る前に、キラキラの またはdark--ああグロー、 1秒待ってから、キラキラwait-- と暗い象グロー CS50自身チェンゴングから。 HIKARI:おやおや、ありがとうございました。 DAVID J.マラン:すべて 右、本当にありがとうございました。 [拍手] DAVID J.マラン:だから本当の話。 これは、これらのすべてのことを言うことである マシンと私たちとのしやすさ ここでそれらを使用し、取り 当然のこと、本当に ここに始め、わずか数歩 この実際の劇場から。 そして今、今日、あなたがされていませんでした場合には、 これはマクスウェルドーキン、コンピュータであり、 科学の建物、 また、角を曲がった。 そして、この2階 建物は3つのページがハングアップしない オリジナルのソースコードから、その ビル·ゲイツとポール·アレンは書いている。 実際には、使用する場合は、ズーム あなただけでなく見ることができます における彼らの名前 元の型だけでなく、 彼らが飾られ、そのシグネチャ 数年前、彼らが最後に訪問したとき。 しかし、特に説得力のあるものだった このことについて、彼らがやろうと設定したものです。 するプログラムを書くことだった 書き込みを他の人に有効 独自のプログラム。 当時すべてとありました MITSによるこのアルテア機。 そして、彼らは必要なすべてのいくつかの方法でした 愛好家や人のために簡単にそれを作る 実際にプログラムにこの部屋で私たちを好き その必ずしも理解せず アセンブリコード、またはマシン コー​​ド、または神は、0と1を禁じる。 私たちのようなプログラマは、 この部屋のものは、 表現できるようにする 自分自身ずっと擬似コードのような それはもう少しNITであったとしても 先週話したよりもうるさい。 私たちは、このようなコードを記述する必要はありません、 そのポール·アレンとビル·ゲイツがした。 私たちは、その代わりに、そのコードを書きたい もう少しユーザーフレンドリーに見えます。 さて、これはBASICとして知られている言語です。 と行番号がある何を 単純にコードの行に番号を付けるために使用する あなたが書いていること。 私たちもする必要はありません これらの日それを行う。 しかし、あなたはここで見ることができます どのPRINT「こんにちは、世界」 確かに、おそらくちょうどそれを印刷することになる。 だから何ビルとパウロがしたことはあった このようなコードを書くために人々に力を与える 代わりに、あなたが見てみた場合of-- コンピュータサイエンスは、このようなコードをwall--。 実際には、CS50最近 機会がありました 教授ハリー·ルイスで座るために コンピュータサイエンス部門で、誰 実際に法案を教えた 何年か前にゲイツ、 そして前にここに立っている 抜粋のものの3ページ。 それでは見てみましょう。 HARRY LEWIS:何ここにあることである ソフトウェアの初期の作品のリスト ビル·ゲイツとポールによって書かれた アレン、マイクロソフトの創設者。 だから、コードは面白いです 二つの理由。 まず第一に、それはなった マイクロソフト社の最初の製品、 の通訳だった BASICプログラミング言語。 そして第二に、これがあった 最初の試みの一つ インタプリタを作成するので、通常の の人がパソコンを使用することができます。 だから、ビル·ゲイツだった ハーバード大学の学部。 私は1974年にハーバード大学で教鞭を始めました。 これは、1975年に行われた。 だから、彼のキャリアの中で早かった 初頭、私のキャリアの中で。 私は実際に法案を教えた この頃のコース。 ポール·アレンはありませんでした ハーバード大学の学生が、彼 高校であった ビル·ゲイツの同級生。 あなたが来て、見てみると 上場時に、あなたはよ 実際に三分の一を見つける 名前、モンテダビドフ、 ゲイツの同級生は誰だった ここでハーバード大学。 そう、ここにある ここに興味深いコメントをバックアップします。 これは、4Kで平方根を削除することができます」と言う しかしループのまだ動作するはずです。 " そう、それが何を意味するかというがある このプログラムをコンパイルするには二つの方法があった。 一つは、バージョンで実行することでした このアルテア·コンピュータの その唯一の4Kワードを持っていた メモリ、メモリの4,096ワード。 しかし、大きなバージョンは8Kを持っていた。 だから何、これは言うことはあり 4Kのバージョンでその あなたは、いくつかを削除する必要がありました それが収まるようにするコード。 そしてものの一つ それは削除される 平方根ルーチンになります。 しかし、どうやら ループはまだすべき用 あなたがダウンしてコンパイルしている場合であっても動作し コンピュータのちょうど4Kバージョンの。 DAVID J.マラン:テーマのだから1、 私たちはコンピュータサイエンスに表示されますように、 この概念は、 階層化と抽象化、 本当に肩の上に立って 私たちの前に来た人たちではなく、の ビル·ゲイツのいくつかとは異なり、 こことポール·アレンの物語。 そして、これが意味することである 今日私達はのために取ることができます 物事が実際にあることを許可され 私たちは、コードを記述するために容易になります。 私たちは金曜日に言ったように実際のコードは、ある より技術的にソースコードとして知られる。 そしてそれは、構文のように、この英語だ それは、より適切な、より明確に定義されます 擬似コードのようなものよりも、用 これは正式な定義はない。 そして今日、私たちは何を行っている に焦点を当てることは、ソースコードである それは、次のようになります 確かに一見 完全に不可解に見える。 そして、率直に言って、それは道より美的だ 基本となるプログラムより複雑です。 すべてのこのプログラムは、ない リコール、私たちが何を言ったのでしょうか? それだけの "Hello World"を出力します そして、まだ私たちに必要なもののすべてを見て その非常に単純なフレーズを包み込む。 しかし、やがてすべての これらのラインより あなたにはるかに良い意味になる。 以下のように流れがある。 私達は私達の処分で必要なもの ソースのように、コードを取ることです 先ほど見たコード。 そして、私たちは新しいプログラムを必要とする それを介して実行します。 私たちは、その缶のアルゴリズムを必要とする このように、ソースコードを変換し、 オブジェクトコード、0と1に変換する。 言い換えれば、どのような 今日は学ぶつもりだ 書き、これを行う方法です。 ソースコードアップトップ、 特別なへの入力として渡します コンパイラとして知られているプログラム、 私たちはオブジェクトコードを生成しようとしている。 どちらの変わった方法である 私たちは何かを取ると言って それは次のようになり、それを渡す コンパイラと呼ばれるプログラムに、 オブジェクトコードを生成する それは次のようになります。 したがって、これらは文字通りです 0と1のパターン 理解されていること インテルのコンピュータこれらの日、 CPUが解釈した場合、その、 コンピュータ内部の頭脳、 文字通り、プリントアウトされます 非常に単純に、 "こんにちは世界。" 今、あなたよりずっとより、0と1があります そのために必要になることがあります望んでいるだろう。 私たちが構築しているので、しかし、それはだ 複雑さのかなり上 私たちは今後当たり前のことができます。 換言すれば、スマートな多くの人 私たちにクールなツールの多くを与えている 強力なソフトウェアで、私たち 今私たち自身のプロジェクトを作ることができます。 それでは始めましょう。 先週の金曜日、そして一方 問題セット0今週、 あなたはに再生されます このようになります世界。 今日からと問題の 来週のコードを1に設定し もう少し見に行くされている 不可解な、しかし、機能的である 同じになるだろう。 だから、トップはスクラッチで、気づく 底がC.率直スクラッチです より多くのユーザーです フレンドリーでアクセス可能。 しかし、あなたは、今まで視覚的に比較すると、トップ 一番下、一から一のようなものがあります との対応 パズルのピースと言語 私たちはと遊ぶしようとしています。 具体的には、たとえば、 青いパズルピースまでのトップ、 何キーワードに明らかに相当します この言語で、または特別なフレーズ Cと呼ばれる? 聴衆:のprintf。 DAVID J.マラン:のprintf。 つまり、フォーマットされた印刷を意味します。 そして、それはただの空想だ C言語でのprintfを言ってする方法 ステートメントや関数になるだろう それは、画面に何かを出力します。 それは、画面に何を印刷するのですか? どのようなあなたが内側にそれを教えて 引用符の括弧の内側。 だからもう一度、確かに、 多くのものがあります あなたが心に留めておく必要があることを、 括弧、引用符、セミコロン、 そしてこのすべて。 しかし、それがすべての並べ替えである ポイントの横の。 今のところ面白いお持ち帰り スクラッチのその発言ブロックである ほとんど同等程度である C言語のprintf文 一方、黄色のパズルピース トップアップ、緑の旗がクリックされたとき、 おそらく同等です ここにキーワード何に? 聴衆:メイン。 DAVID J.マラン:だからメイン。 多分、多分、ボイドint型。 しかし、のような音の主な種類 それが重要だ、と確かにそれはある。 だから、グリーンフラッグがクリックされたとき パズルピースは、再び、である それがキックオフ 全体スクラッチプログラム。 しかし、私たちは今呼び出しを開始しようとしている メインとして知られている、主に、この関数。 今、その間私たちはよ 次のようにこれを一般化する。 私たちは、呼び出す関数を言うかもしれない。 そして、それは見えるかもしれません 特にこのような。 さて、どのようなループはどうですか? 私たちが変換を開始したい場合、または Cまでスクラッチでよりを翻訳、 ここで、このことは明らかにただ 「Hello World」の永遠に言います。 ですから、これらを関連付けている場合 スクラッチ猫とスクリプト、 それだけで言い続けるだろう 漫画のバブルのいくつかの種類には、 「こんにちは、世界、ハローワールドこんにちは 世界では、「広告nauseum、永遠に。 私たちは、同様の何かをしたい場合は Cは、それは少し不可解に見えるだろう。 しかし、私たちは同じことを達成することができます 結果、私たちは最終的にはよなど このような構文で、見つける。 私は、再びのprintfを使用するつもりだ なぜなら、一日の終わりに 私は、プリントしたい "こんにちは世界を。" そして、私は、明らかに使用しています 永遠ではないキーワード。 それは、代わりにしばらく言葉だ。 しかし、単に意味的に中 英語、一方の種類の ループまたはサイクルのいくつかの種類を示唆している。 だからであることを起こる Cが使用するキーワード。 そして真ながら、なぜしばらくし 効果的に永遠に真の意味ですか? さて、一方で、私たちはすぐによように すべてのより多くの感謝、 その横に、この挿入句を持って どこにブール式を置くことができます。 そして、そのように長い間 式がtrueの場合、このコードは、 これら二つの間に示すように 私たちは彼らを呼ぼうとして、中括弧、 ただ何度も何度も動作し続けます。 だから、本当の真実である。 だから、本当の意味する ただ永遠にこれを行う。 それはほとんど愚かだ 自分を表現するために構築する。 しかし、誰永遠にありませんでした C言語でのキーワードはしばらくありました。 そして、非常にシンプルながあった 真のようなブール式。 だからこれ、私達は、表示されます 同じ結果を達成しています。 他にどのようにしてループを実装するのでしょうか? さて、スクラッチでは、かもしれない 特定の数のハードコード ここで、ループ内の繰り返し。 そしてそうそれはまさに私たち Cのこのバージョンで行う可能性があり、 私たちが持っていることにより、forループ、いわゆる。 そして、ここでforループが起こっている ややひそかに、反復処理するために、 投入時の値は0〜 へ未満10。 今スクラッチの変数。 あなたが持っていたていない可能性があります これらを利用する機会。 しかし、ポイントは、一般的に、何が、 変数の私たちは、先週言ったの? なにそれ? 聴衆:ポイント。 DAVID J.マラン:指すように? ああ、指摘している。 [OK]を、ポイントを追跡すること、 例えば、ゲーム内の。 またはより一般的にやって 変数を使用してどのような? それらの有用性は何ですか? 聴衆:メモリ。 DAVID J.マラン:うん、そうメモリ。 それは、何かを格納するためです。 そして、愚かな視覚的な私のようなものが使用さ 最後の時間は、このガラスボウルのようだった。 そして、私たちは保存したい場合 変数の内部に何か、 例えば今、 値は6であるため、そこに ここでは6個のピンポン球がある。 これは、ストレージのほんの一部のようなものだ フードの下にコンテナ ビット0と1を使用して実装されている、 しかし、コンピュータはそれを行うことを起こる。 スクラッチは、もしそうであれば、私たち 変数を持つようにしたい、 私たちはこのようなオレンジ色のブロックを使用することができます。 私たちは、そのカウンタと呼ぶことにします この特定のケースである。 私はそれを0に初期化しました。 そして、それは私は、何をすべきか? フォーエバー、カウンターを言う、その場合 あなたは、スクラッチにそれと遊ぶ あなただけのスクラッチが表示されます。 猫やどんな衣装あなたが上に置く 彼は、問題の数を話すでしょう。 1カウンタを変更している 1ずつ増加などである。 だから、これはしようとしている だから何ものから数える? 0から無限大ゴマ、または スクラッチが破断するまで、 またはあなたまで、種類の 見ることに興味を失う 彼は実際にカウントすることができますどれだけ高い。 では、どのようにC言語にこれを変換するのでしょうか? それは少し不可解に見えるだろう。 しかし、再び、あなたはそれぞれのを見れば これらのラインの個別 一般的にはラインアップの彼らは親切。 だから、明らかにしようとしているint型 C言語でいくつかの特別な意味を持つ 私たちはそれを再び表示されます。 余談として、それは整数を意味します。 だから、単に数を意味する。 だから、のタイプです 私が欲しいガラスボウル、1 それは数字を格納することができ、 ピンポン玉をpingしない。 そして、私は等号を使用するつもりだ それを0の値が割り当てます。 だから、かなりのセットのようなものだ カウンタを0にするが、Cの 一方、真の間に、それはあった 同等の、もちろん、永遠に、 それは少し不可解だとしても、 してから中括弧の内側。 そして、あなたはこれらの中括弧を考えることができ、 どのキーボードで入力することができ、 として本当に曲率のようなもの スクラッチでこれらの黄色のループをブロックします。 これは、複数行のコードを包含する。 のprintfなっている 怖いちょっと今、私のため だけではなく、括弧で引用している参照してください。 しかし、他に何が新しいです 構文上、この例では? パーセントdがあります。 そして、バックスラッシュnがあります。 私たちも、その前に見た けれども私はそれを言及しなかった。 その後、コンマがあります。 そして、カウンターがあります。 しかし、私たちはただで表示されます これは単なるであることを一瞬 プリントaを言うための標準的な方法 「10進数」の引用、引用終わり、 いくつかの小数。 しかし、私は後であなたに言うつもりだ その進数は何ですか。 カンマがあることを事実そう この行にはprintfを言って、 手段は、先に行くと印刷 いくつかの小数。 ああ、ところで、数である 何この変数の値がある。 だから、この多くを作る 明確な、私たちは例が表示されます やがて、正確にはprintf含む 実際のCプログラムのコンテキストで。 今だけ一部をラップする これらの構築物。 ブール式は、あなたが持っていない可能性があり あなたのプログラムでこれらを使用する機会 しかし、あなたは非常によくかもしれない、 特に条件を使用している場合。 からですからこの2つの例 xがyよりも小さい場合を意味傷、 またはxがyより小さく、yが小さい場合 zはなく、私たちはそれをどのように翻訳するのでしょうか? さて、C言語でそれだけだ このように見に行く。 少し不可解な、より多くの括弧、 基本的にはいくつかの奇妙なアンパサンドが、 アイデアは、彼らのように単純である パズルピースの世界である。 私たちは単純に何かあればチェックしている 何か他のものよりも小さい。 どのような条件は? 英語で一言で言えば、何がこれを行います あなたがスクラッチコードの塊を言うでしょうか? 観客は:二つの数字を比較します。 DAVID J.マラン:2を比較します 数字、xがyよりも小さい場合 それは同じくらい言う。 xがyよりも大きい場合 それは同じくらい、他に言う xがyと等しい場合には、できるだけ多く言う。 今、xとyはどこから来たのか? 誰が知っている。 スクラッチのこのチャンク コー​​ドは、コンテキストから外れている。 しかし、私たちが今やってみたいことは翻訳している ただちょっとこれを確認します。 あなたが快適になるように 問題セット内の今週 0この世界で遊ぶ 左側の実現 アイデアは変更しないことを 今週または次または超えた。 私たちは単純にするつもりだ 物事を書き始める 私たちと違った方法で 代わりに、私たちのマウスのキーボード。 そのように、xがyよりも小さい場合、および そこにいくつかの括弧があると、 その後、いくつかの中括弧があります 再び種類のそれをカプセル化する ちょうどない黄色のパズルのピースのように。 そして、私は、Xのprintfするつもりです などyおよびより少ない。 どのようなCのいいです、 あなたがここで見ることができるように、 このネスティングを取得しないことです、 ネスティング、それは必然的だネスティング 右にあなたのコードをプッシュするつもり。 代わりに、すべてのものを持つことができます きちんとこのようなラインナップ。 しかし、それは単なる審美的だ 詳細私たちはずっと前に再び表示されます。 かしこまりました。 だから、戻って私たちをもたらし この不可解な見てプログラム。 それでは、実際にいくつかのコードを書いてみましょう。 今、どのようにコードを書いて行くのですか? あなたが所有してすべてのこれらの年 MacやPC、デスクトップまたはラップトップ、 あなたが実際に機能を持っていた プログラミングコードを書くことを開始します。 しかし、あなたはおそらく不足している プログラムの特殊なタイプ。 確かにコードを書くことができます。 しかし、あなたは、必ずしもできない 箱から出して、 そのソースコードを変換する オブジェクトコード、0と1に お使いのコンピュータ上で何をすることなく? 聴衆:コンパイラ。 DAVID J.マラン:だから、コンパイラ、右。 今、あなたの可能性が最も高い コンパイラを所有していない、 コンパイラをダウンロードしたことがありません。 しかし、あなたはそれをダウンロードすることができます表示されます ソフトウェアのほとんどは、他の作品のように。 Mac OSのの世界では、かもしれない ダウンロードしたり、すでにダウンロードしている Xcodeのか、GCCまたはクラングと呼ばれるもの。 あなたがから来ている場合 Windowsの世界、あなたかもしれない Visual Studioをダウンロードしている、 Visual Basicで、そのような環境。 コンパイラの数十があります あなたが使用する可能性があり、これらの日。 しかし、ここでそれを短い それは苦痛であるだろうということです そして、率直に言って、技術的 何百ものための悪夢 異なるがい者の すべてのコンピュータの構成 自分のマシンを設定する 全く同じ様に ように、私たちはすべて同じページ上に置くことができます。 だから私たちは、その代わりに、何をすべきか CS50に私たちはあなたを与えるされている 標準的な環境、 のLinux環境 少し見に行く このようなもの。 あなたは、このの詳細を参照します 問題セット1仕様れる 今週の金曜日の夜オンラインになります。 そして、これが何を意味するのか あなたことは今後あり にできるようにしようとしている プログラムをダウンロードしてインストール CS50アプライアンスと呼ばれる。 そして、あなたがダウンロードしようとしていると と呼ばれる別のプログラムをインストールする ちょうどあるハイパーバイザ、 これを達成するファンシーな方法。 あなたは、MacまたはPCまたはAを所有しているかどうか LinuxコンピュータまたはSolarisコンピュータ、 または何狂気運転 あなたが実行しているシステムで、 あなたがプログラムをダウンロードしようとしている のハイパーバイザーと呼ばれる CS50を実行するつもり お使いのコンピュータ上のアプライアンス どんなご使用のオペレーティング·システムではありません。 換言すれば、ハイパーバイザーは、変換され どんな言語に私たちのもの、 どのような手順あなたの 自分のコンピュータが理解しています。 だから、これはレイヤーです。 そして再び、これが一種である コンピュータ内のテーマ別の 科学、物事の上に建物。 あなたは、Windowsを持っているかもしれません。 あなたは、Mac OSを持っているかもしれません。 しかし、あなたがしている来週から ダウンロードしたつもり ソフトウェアの自由な作品 ハイパーバイザーと呼ばれる。 あなたが作品をダウンロードしているつもりだ CS50アプライアンスと呼ばれるソフトウェアの。 つまり、ハイパーバイザーで動作するように起こっている これは、コンピュータ上で実行しようとしている。 最終結果は、 私たちのすべてをすることを のような単純なウィンドウを持っている お使いのMacまたはPC上でこの それは私たちにすべての錯覚を与えます 同じオペレーティングシステムを実行し、 他のなしで お使いのコンピュータへの影響。 そして、あなたは、フルスクリーンすることができます それと本質的に振る舞う あなたが実行しているかのように リナックスと呼ばれるオペレーティングシステム、 何CS50これは アプライアンスがオンに基づいています。 それでは、実際にこれを使ってみましょう 今のプログラムを書くこと。 あなたがプログラムを書くことができます Microsoft Wordを使用して。 あなたがプログラムを書くことができます テキストエディット、またはメモ帳を使用して、 またはワードパッド、またはほとんどすべての単語 あなたが今まで使用した処理プログラム。 しかし、現実はあなたがいけないです 本当にこれらのプログラムのいずれかを使用します。 あなたは確かに使うべきではありません Microsoft Wordの、どのようなもの 太字の対面や斜体があり、 大きなフォントと小さいフォント、 コンピュータにはありませんので、 そのいずれかの気に。 すべてのコンピュータである 気にされるだろう C言語で書かれた説明書のような英語 だから私たちは内部にやるかを CS50アプライアンスの 自由にプログラムを使用している それが利用可能な、とだ この中にプリインストールされ アプライアンスやgeditと呼ばれる。 そして、Geditのは単なる超簡単です Mac OSののテキストエディットなどのテキストエディタ、 に起こっているWindowsのメモ帳のような このような小さなものになり。 だから、実際にしてみましょうしない このスライドを見てください。 しかし、ここで実際にに行こう 環境そのもの。 私が先に行くつもりだと この他のウィンドウに、ログインし、 私がした私のCS50アプライアンスへ ここに私のラップトップ上でプリインストールされています。 Windowsと同じようことに、注意してください Mac OSは、、それはいくつかのメニューを持っている。 ウィンドウズのようにそれを置く そこにダウンする代わり そこにそれを下に置くのMac OSの。 しかし、現実には、それはですです 同じのすべての種類。 そして、ここで全体で ソフトウェアの束。 Dropboxはあります。 付属品の全体の束があります、 グラフィカルなプログラムを私たちはよ 問題·セットの任期の後半で使用します。 そこらで構築されたWebブラウザがあります これは本格的なコンピュータであること コンピュータの内部。 しかし、私はこれをクリックするつもりです ここ一番左の白いアイコン、 これGeditのためのアイコンです。 そしてそれは、ウィンドウを開くために起こっている それは、3つのパネルを有し、 左が、一番上の、下1。 今では、この右上1にだ 私は実際にいくつかのコードを記述するつもりです。 それでは、これをやらせる、。 私は、[保存]をファイルに行くつもりです。 そして、あなたが今まで見ていない可能性があります 前に、この特定のウィンドウ。 しかし、これは、Mac OSやWindowsのようなものです。 それはちょうど、ウィンドウの すべてのフォルダと 私は、このコンピュータの内部に持っていること。 そして、私は保存するつもりです hello.cのようにファイル。 そして、私は行くつもりです 先に、[保存]をクリックします。 そして今、私はタブを持って気づく 左上のhello.cと呼ばれる。 だから、おそらくかなり あなたがいませんでした場合であってもおなじみの 前に、この特定のプログラムを使用していました。 そして今、私はそれらを入力するつもりです コマンドのかなり不可解なシーケンス 私たちは一瞬前に見たこと。 インクルード、標準I / O.h。 そのすぐ上のほかの。 int型メインボイドオープンカーリー ブレース、中括弧を閉じた。 そして、そこの中に私があると思います ここで、私たちは「こんにちは世界」、セミコロンを持っていた。 そして今、保存してください。 だから、これは、C言語で書かれたプログラムです。 ソースコード内で、従って、書かれた。 しかし、私はこのプログラムを実行することはできません。 私はこの種の二倍にしたい どこかのアイコンをクリックし、 しかしアイコンは、他の存在しない ソースコードファイルより。 、もう一度、今そのプロセスは何ですか 私が通ってこのファイルを実行する必要がありますか? 聴衆:コンパイラ。 DAVID J.マラン:だからコンパイラ。 だから、別のコンピュータでの使用 さまざまな方法でこれを行う。 しかし、私たちはここで何をやったか だCS50アプライアンス どのようにかもしれないの代表 多くの異なるシステム上でこれを行う、 私は単純に行くよさ メイクというコマンドを実行します。 そして、メイクは文字通りそれを行うとしている。 私のプログラムを確認します。 だからに行くされていることを確認 私のためにコンパイラを実行します。 そして、プログラムの名前 私はハローであることを確認したいと思います。 今のプログラムであることを確認。 そして作るのに十分スマートです 、私が言ったらハロー作ることを実現 それは自動的に探すために起こっている のhello.cというファイルのための それはだからといって 道に構成しています。 だから私は今ここに、これを入力して打ったとき 狂気の不可解なラインは、直前に実行しまった。 そして前に、私を信頼 ちょうど日以内に、長く、 あなたは何のすべてを理解するだろう そのナンセンス手段の。 しかし、今のところ、ちょうど作ることを知っている コンパイラの実行を誘発した。 言い換えれば、見つかっ 私のコンピュータ上でのコンパイラ それがプリインストールされます CS50アプライアンス上の 私たちは問題セット1であなたに渡しますことを。 そして、それはその後のようにhello.cを取った 入力と、明らかに生産さ 出力として0と1。 また、デフォルトでは何それがない、それが保存されている ファイル内の0と1はハローと呼ばれる。 そして、この構文があまりにかもしれないが 単にドットを言うことによって、あなたに新しいこと ハローがあることを行っているスラッシュ それによって、私はこのプログラムを実行することを意味します。 今のところ少なくともカップルのための 週間の、ほぼすべてのプログラムの 私達はであることを行っているライト 黒と白のテキストウィンドウ。 いいえマウス、いいえクリック、 は窓なし、アイコン。 私たちは、それをシンプルに保つつもりだ 基礎となるアイデアに焦点を当てる 私たちは、何かに到達する前に、最初に より高いレベル、例えば、 私たちが話をブレークアウトゲームのような 最初の講義の最後の週に約。 私はここでEnterキーを押すときに、それはだ テキストのみの環境での同等の ハローと呼ばれるアイコンをクリックすると倍増する。 あなたは何を期待しています 私は、Enterキーを押したときの動作? 聴衆:それは "こんにちは世界"を印刷します DAVID J.マラン:うまくいけば、 それは "こんにちは世界"を出力します そして実際、それはやった。 現在、いくつかあっただ ここで不可解な構文。 ちょうどのために巻き戻してみましょう 瞬間、私たちかどうかを確認 ちょうどによる推論起動することはできません しようとすると失敗し、いじり、 ここで何が起こっているのかに関して。 私は、バックスラッシュnを取り除くときは? 今、あなたのいくつかした方 おそらく前にプログラム それが何を意味するか瞬時に知っている。 しかしだ人のために 前にプログラムされません、 少なくとも、何が起こっているかを自分自身に思う 私はこのプログラムを再実行するときに変更するには? だから私は戻ってダウンして、私に行くつもりです 少し黒と白の窓、その 内窓である 私はこれをコンパイルすることができます。 私はハローを再コンパイルするつもりです。 私たちは同じことを見ることになるだろう コマンドの不可解なシーケンス。 そして、私はハロードットスラッシュをするつもりです。 そして今、誰か、あなたが希望の場合は、 誰が、以前にプログラムされたことはないでしょう 何がこの時間と異なる場合があります? うん。 聴衆:それは停止しません 印刷の "Hello World。" DAVID J.マラン:それはto--残念起こっているの? 聴衆:それはそれを印刷を停止しないのだろうか? DAVID J.マラン:それはしません 印刷を中止に "Hello World。" 悪いアイデアではないので、。 他のアイデア? うん。 聴衆:エラーメッセージ? DAVID J.マラン:エラー メッセージには、[OK]を、である可能性があります。 他には? 聴衆:それは印刷することがあります 同様にセミコロンでブラケット? DAVID J.マラン:印刷する場合がある 同様にセミコロンでブラケット。 そのため、おそらくそのバックスラッシュは、その後いくつかある 重要なのterminousの一種。 その他の考え? だから、すべての良いアイデア。 そして、実際に、それは起こっている エラーメッセージである。 それはおそらく最も可能性が高いです 一般的には答えであるように 今後数週間 私たちはここでコーディングすることを学ぶように。 しかし、今のコンピュータのことを覚えている 唯一のあなたがしなければそれらを教えてやり。 とんでもないピーナッツのような多くの バターとゼリーの例。 私たち人間のコンピュータのみになっていた あなたがしなければ、それらを言ったことができません。 この場合、もしそうであれば、あなた コンピュータを教えていない にその点滅カーソルを移動し、 次の行、それはそれを行うことはないだろう。 だから私はこのプログラムを実行すると、 今、違いに気付く。 バグのように見える。 それはおそらく、美的バグです。 しかし、この程度は異なるものです 明らかに最後の1対の出力? うん。 聴衆:それは新しい行をしませんでした。 DAVID J.マラン:それは新しい行をしませんでした。 今、あなたのそれらの人 多分Webページを作った 前に、知っているかもしれません BRタグや段落タグ、 精神に非常に似ています。 ウェブブラウザは、までを無視します あなたが正確に何をすべきかということを教え。 同様に、Cのような言語であるだけ あなたがすることを教え何をするつもり。 理由だから これらの例のすべて、 これまで、この種の持っている 何気なくこのバックスラッシュを持っていた そこでは、その手段がだ それによってあなたは自分を表現 改行文字として、いわば。 そして、あなたは親切なのは、おそらく、理解することができる これはちょっと愚かに見えるだろうと 何もない場合。 私は、新しい行を望んでいた場合は、単に 入力し、親切な打撃 のようなコードを食肉 本当に正しい方法をこすってはいけません。 そして、そうでない場合でも、 本当にこの時点では気にし、 あなたはそれを理解するであろう これは、特にありません コー​​ドの格好良い作品。 だから何の世界 決めた数年前である あなたが置きたいときに 明示的に新しい行にカーソル、 あなたが明示的に言わなければならない 新しい行は、バックスラッシュnを。 そして、いくつかの他のがあります そのようなシンボル。 しかし、今の私たちはよ バックスラッシュnに焦点を当てる。 それでは、プログラムを作ってみよう もう少し面白い。 私が先に行くつもりだと 今回は、新しいファイルを開く。 私はこのようなハロー1.Cを保存するつもりです。 そして、ちょうどキックのために、私はするつもりだ 私のDropboxフォルダに入れて行く。 あなたはCS50でわかるように アプライアンスのドキュメント、 問題の今週後半 1を設定し、私たちは奨励します あなたのDropboxを使用するか、 いくつかの同等のサービス、 すべてのコードのための 自動的にバックアップされる予定。 私がした理由となるようです ここで、このフォルダに入っ。 そして今、私は書くつもりだ わずかに異なるプログラム。 標準I / O.h、int型メインボイド含めます。 そして、ここでのprintf、こんにちは世界で、 その前とまったく同じです。 しかし、今私は何かを印刷したい それは少し違う。 私は、プリントアウトしたい 「こんにちは、デビッド。」と言う ので、明らかにすべての権利、、 それがうまくいけばべき 私は再コンパイルする場合は、そのケースである このプログラムは、それを再実行し、 それは言うために起こっている「こんにちは、デビッド。 " しかし、私が紹介したい場合はどう 変数のこの種の、 起こっているコンテナの概念 D--V-I-dおよびハードではないコードを格納する 私のプログラムに変換する。 さて私は何を起動した場合 このような何かをやって? 文字列sは、これは可変である。 あなたは、文字列をしたい場合は、 単語または語句別称。 文字のシーケンスは何ですか プログラミングで、文字列を呼び出します。 私達はちょうど一般的にコールするつもりだ それはすてきな単純な名前だから、それは、だ。 しかし、私は何もそれを呼び出すことができます。 私は、文字列sのequalsを言うつもりだ 引用終わり、「デイヴィッド、「セミコロン引用。 そして今、私は、挿入したい D--V-I-D私は印刷だものに。 そして、私たちの前にティーザーを見た いくつかの特別な構文の画面 それは私たちがすることができ 価値の代用。 特別なは何だった いくつかのスライド前のシンボル? だからパーセント。 当時それはパーセントであった 小数の研究開発。 それは本当にここでは関係ないようです。 そこのが判明 別のパーセント記号、 スタンドでのパーセントの、 文字列のプレースホルダ。 だから今、非常に簡単に、私は 、ハロー-1を作るに行くつもり このファイルが呼ばれていますので、 ハロー1.C、Enterを押します。 そして、私はめちゃくちゃ。 どうなってるの? 私たちがし始めることがある場所さて、ここに 私たちは、このコマンドにしていることを理解する ライン環境、この 環境だけテキスト。 アイコンにはクリックしてはありません 今のフォルダのように。 そして、少し前バックだと思います。 どのフォルダに私は言った 私は自分のコードを保存したのか? だから、Dropboxフォルダ。 何と呼ばれてきませんでした。 しかし、それはDropboxの呼ばれるように起こる。 だから私は、何とか上にダブルクリックする必要が そのDropboxフォルダを取得するために、 そこに、私の時に取得 ハロー1.C呼ばれるコード。 実際に、私が先に行くと、最小化してみましょう ただちょっとこのウィンドウ。 ちょうどWindowsとMac OSのように、 Linuxでのフォルダがあります。 CS50アプライアンス内のフォルダがあります。 それはちょうど今、私たちが閉じ込めているだ このテキスト環境に自分自身。 しかし、私は、クリックを倍増した場合 Dropboxの上で、そこに気付く 私がコンパイルしたいファイルがある。 しかし、私はこの黒と白を必要とする ターミナルウィンドウ、いわば。 しかし、私が必要とするため、移動するには そのフォルダまたはディレクトリにコピーします。 だから少し難解な、しかし あなたもこれに慣れるでしょう。 リナックスの世界では、 これを再び作動される 私たちはCS50の内部で実行しているシステム アプライアンスは、CDと呼ばれるコマンドがあります。 どの私は、CD、スペース、Dropboxのを行うことができますことを意味します。 CD、ディレクトリ変更。 右。 戻る日に人がいたとき コンピュータを発明し、操作する このようなシステムは、彼らがしたかった 可能な最も少ないキーストロークを入力します。 だからと言って、最も簡単な方法 ディレクトリ変更は、CDであった。 だから私は、CD、スペースDropboxがヒットした場合、 ここで何が変更されたかがわかります。 括弧の内側 アプライアンスは、一種である 私をhumoringとの 私はどこに思い出させ。 だから、開いているフォルダをDropboxのである。 私は今のlsと入力した場合 リスト、再び簡潔、 人は望んでいないので、 一日のL-I-S-Tには入力します。 そこで、彼らは代わりに、LSた。 入力してください。 、ハロー1.C、私は二つのことを参照してください注意してください そして、この不可解な事、ソース1メートル。 それは言っての私の方法です 週1月曜日のソースコード。 それは私がからダウンロードしたフォルダです 私は以前の今日行わCS50のウェブサイト だけに入れて 事前にアプライアンス。 しかし、今唯一の事のために私たち このプログラムを作っている気に。 だから私は、ハロー-1は、入力してください入力したとき。 ちくしょう。 何かが間違っていた。 それでは、これを離れていじめるましょう。 そして、残念ながら、これはどこのものです。 最初は少しストレスの取得、 少なくとも、あなたがしている場合 前にプログラムすることはありません。 信じられない! 私は2つのラインプログラムを書き、 私は、エラーの4行を持っている。 だからここに何が起こっているのか。 まず第一に、常にスクロールバック アップおよび最初のエラーメッセージを見つけ、 しばしば単にコンパイラので あなたと私は何をすべきかによって混乱してしまう。 コンパイラはかなり馬鹿です。 彼らは何をやる あなたが彼らに教えてください。 あなたがそれらを混同している場合、彼らはただだ 種類の手を投げるつもり 多分より多くのエラーメッセージを投げる より実際に関連しています。 それでは、最初に見てみましょう。 最初はスーパー不可解。 しかし、通知は、ここでの名前だ 私は明らかにめちゃくちゃれるファイル。 コロン5、コロン5はちょうど上の意味 第五の文字で5行目。 だから文字の第5列、 エラー、可能ならば。 宣言されていない識別子の文字列の使用。 あなたは、標準的なnのことですか? いいえ、私は文字列を意味した。 そして、それは一種のだ コピーと貼り付け 私は本当に私を描画するために入力した 私はめちゃくちゃにどこに注目する。 何らかの理由でCについてだから、 または少なくともコンパイラ 単語列を理解していません。 私たちはそれを作ったので、それはです。 だから、stringは存在しません。 Cで、どういうCS50 最初の数週間のために クラス唯一の、 私たちはいくつかのトレーニングを提供している ホイールは、いわば。 そして、私たちはこれらの補助輪を置く CS50.h.と呼ばれる特殊ファイルの内部 だから、これは2つのファイルの秒です どうやらドット時間で終わる名前。 の巻き戻してみましょう。 のprintf文または関数です それは明らかに何かを印刷します 画面に。 しかし、あなたは私を見ていない 右のprintfを実装します。 誰かが年前のprintfを実装しました。 どのファイルでは、彼を賭けるだろう または彼女は、実装を置く printfのため、printfのためのコード? 標準I / O.hというファイルに。 実際に、それはおそらくだ 二つのファイル、標準I / O.h、 ヘッダーを表している ファイル、および標準I / O.c、 そのCソースコードの略です。 そこで彼または彼女は何年か前にそのまま流し 彼らはそのファイルに書いたコード その結果、私たちのような人 年後にそれを含めることができ、 ので、私たちの独自のプログラムで、話す。 そして実際、それは何ポンド記号だ 言葉が続くん含まれています。 これは、ローカルハードドライブに見えますが、 、標準I / O.hというファイルを検索します した後、効果的にコピーと、 私自身のファイルの内側に貼り付けられます。 だから今私のプログラムが知っている どのように画面に出力します。 そのロジックによりそう 文字列が定義されている? 聴衆:CS50.h. DAVID J.マラン:CS50.h. そして実際、それは私たちですが、 コアスタッフは、行っている。 私たちは、いくつかのデータ型を発明した、 ため、文字列のように、話す、 ものに加えて、あなた int型のように、自由のために得る。 そして、私たちは、charのような他の人が表示されます 文字といくつかのより多くのために。 CS50.hの内側に明らかである 文字列の少なくともいくつかに言及。 だから今私は先に行ってみよう とハロー-1を作る再実行します。 私は再びズームインして私の指を渡ります。 今1をしたことで 変更は、私はほとんどのものを修正しました。 しかし、畜生。 データ引数よりもパーセント。 私は間違ってこの時間は何をした? だから、まだかなり不可解だ。 しかし、このエラーはオンになっている 7行目と文字21。 それでは、ここまで見て行きましょう。 それはちょっと微妙だ。 しかし、あなたは何を考えてみれば ここで基本的なアイデアがあり、 おそらく私たちは、これを離れていじめることができます。 だからのprintf関数の名前です。 括弧は、これまで、ある ちょうど私達が周りに入れたもののような 私たちが渡しているもの 関数への入力として。 すべての権利、ちょうど 任意の人間の慣習。 括弧を使用します。 これらの括弧の内側 私たちは、二重引用符を入れてきた、 してからのような文字列に "Hello World。" しかし、その先の例では非常に 簡単に私たちはスクラッチで見てました。 そして、私たちは他に何パーセントdを持っていた これらの括弧の中にあった 私は口頭で呼び出さこと? うん。 聴衆:だからそれはあなたが取っているものだ [聞き取れない]の中から[聞き取れない] 何これらの[聞き取れない]? DAVID J.マラン:その通りです。 そこでパーセントdを持っていた。 しかし、私たちは近くにあった 引用符、カンマ、カウンター。 右。 私たちは、私たちが望むものを指定 プレースホルダとして行う。 それでは、私はここでやろうとしてたんだけどある コンマ、あなたは私が入れて何をしたいですか? 聴衆:S. DAVID J.マラン:S、 この場合の理由 貯蔵容器の名前です。 それは、ガラスのボウルの名前です。 それがその中にカウンターになる前に一方 私たちが見て、簡単なスクラッチ例。 だから今2をした 変更は、私はズームインしましょう とにもう一度試す このプログラムをコンパイルします。 今、私はその不可解な行を参照してください。 しかし、それは実際にだ コンパイラの名前。 打ち鳴らすは、コンパイラの名前です。 私だけを保存していることを確認 これまでの頭痛 その長い狂気のコマンドを入力してアウト。 だから今、私はドットハロー-1を大幅に削減しなければ、 私は「こんにちは、デービッド」を参照してください。必要があります しかし、右、プリティがっかり? 私たちは行っている可能性が このロットより簡単に 変数の話をせずに CS50.hとそのすべてと。 それでは、それにしましょう もう少し面白い。 CS50.hに加えて、 文字列のようなものを持つ 宣言され、CS50ライブラリ また、いくつかの機能を備えています。 だから様年前、誰かが書いた printfや標準I / O.hに入れて といくつかの他のファイル。 私たちは、CS50のスタッフは、関数を書いた GETCHAR、getDoubleは、getFloatは、と呼ばれる GetIntで、GetLongLong、のGetString、 私たちは、ファイルの中にあるものを置く CS50.hとCS50.c.呼ばれる そして、私たちは内部にそれらを置く CS50アプライアンスの。 そして、人々がすることもできます 彼らは場合は、オンラインそれらをダウンロード 彼らの上に置きたい 自分のコンピュータにも。 私たちが作成したと言うことである ユーザからの入力を取得する機能。 私は何のすべてを知らない これらのデータの種類がある。 GetIntでは次のように、一種のは簡単である ユーザから何とか整数を取得します。 そしてのGetStringは、getのように思われる 単語やユーザーからの文章。 それでは、そのに焦点を当ててみましょう。 そして、私はに戻って行くつもりです アプライアンスと私が先に行くつもりです そして、このファイルを保存し、のは呼ぶことにしましょう 私の第二のバージョンとして、それはハロー2.C。 そしての変更のカップルを作ってみよう。 この時間の代わりに、 ハードコーディングデビッド、その 信じられないほど一貫して行い しかしがっかりプログラム、 私の代わりにのGetStringを何をすれば? 今のGetStringに気付く 開き括弧があり、 括弧を閉じた、ので、 それはすべての入力を必要としません。 それはちょうど取りに行くために起こっている ユーザーからの文字列。 そして今、他の構文の言葉。 セミコロンだけのコード行を終了します。 あなたはどこでもそれらを必要としません。 しかし、それはちょうど私が私を意味 このコード行で行わ。 私は別の上に移動しましょう ステートメントまたは関数。 文字列変数を宣言しています。 文字列が言うようなものです。 私にボウルをしてください与える。 そして、私はそれに文字列を入れてみましょう。 そして今、等号。 等号は何ですか と基本的に同等? 聴衆:割り当てます。 DAVID J.マラン:うん、値を割り当てる。 もしそうなら私は、例えば、コール この関数のGetString、 私たちはだ瞬間に表示されます 文字列をユーザーに要求する予定。 これは私が次に書くせるようなものである D--V-I-dの紙の上。 そして、私は、文字列を言うとき sは、のGetStringに等しい 等しいは本当に意味するものではありません Cプログラミング等しい。 これは、右から割り当てることを意味 左側に左側。 だから私は、文字列を得ている。 と等号手段はそれを置く Sと呼ばれる貯蔵容器内。 そして、その後にこれを渡す 実際にそのことを行うにはprintfの。 したがって、最終結果が起こっている 少し違って見えるように。 それではハロー-2を作るやってみましょう。 いずれかが動作する可能性があります。 あなたが一緒にフォローしている。 ハロー2が働いてください。 ドットはハロー2を大幅に削減、入力してください。 私は無限を持っているように見える ループか何か。 何も起こっていないだ。 なぜ? 聴衆:それは無限ループを作っている。 DAVID J.マラン:それは無限ループです。 それは一種のに私を待っています 実際にいくつかの入力とそれを提供する。 だから私が先に行くと入力してみましょう デイヴィッドに、Enterを押します。 そして今、それは「こんにちは、デビッド "と述べている。 私は再びそれを実行した場合。 それではロブ、入力しましょう​​「こんにちは、ロブを。 " さて、これは最悪です これまでのユーザーインターフェイス。 ユーザーの明らかに 何をすべきか知っているはず。 しかし、どんなに。 これらの同じ建物を使用して、 ちょうどスクラッチのようブロック、 私たちはその問題を解決し、言うことができる お願いお名前のようなもの、コロン、 スペース、引用符、クローズクローズ 括弧、セミコロン。 だから、多くの再び 構文で愚か。 しかし、私はちょうど追加した気づく この1以上のパズルのピース この1つ以上の。 だから今、私はこれを再実行した場合、ハロー2、入力してください。 ちょっと待ってください。 何が気に入らないのだ。 これは、異なる方法でいずれも動作してないです。 うん。 聴衆:あなたは再びmakeを実行しませんでした。 DAVID J.マラン:私はしませんでした 右、再びmakeを実行。 だから、私は、ソースコードを変更しました。 しかし、再び、そのフローがあります。 コンパイラを通じてソースコードは提供します 新しいオブジェクト·コード、または0と1あなた。 だから私は、実際に必要とする 再放送のhello-2が入力してください。 [OK]を、何かが起こっているようだ。 ドットはハロー2を大幅に削減。 あなたのお名前お願いします。 そして今、明確にするためには、なぜです 同じ行にカーソル? その通り。 私は、バックスラッシュを入れていない nはここまで私のコード内。 だから今、私は書くことができます 祈るようなものが、入力してください。 私は再びそれを実行して入力することができます ゲイブのようなもの、を入力し、 私たちは別のプログラムを入手 何度も何度も何度も。 今、最終的に私たちは必要になるだろう いくつかの異なる機能を使用します。 私たちは最終的にいくつかを紹介する必要がある 条件付きで物事を行うための条件。 たぶん私たちが行うことができますループを 物事何度も何度も。 多分それは、私たちの場合いいだろう 私たち自身の関数を実装することができ、 のような私たちは私たち自身を実装することができ printfのかのGetStringの私たち自身のバージョン そしてGetFlow、最終的にさえ理由 このコマンドライン環境を使用して、 私たちも、ほとんどを行うことができます 物事の視覚的に興味深い。 実際の結論に私はこれを実行しましょう​​。 私が先に行くつもりです そしてこれらのウィンドウを閉じます ここで、このアイコンを開いて、 これだけの大きい それのバージョンが埋め込ま ターミナルウィンドウ。 だから、Geditのだけではなく持って 私のコードのための場所、 だけでなく、ターミナルウィンドウに建てられ、 私は実行することができ、黒と白の窓 コマンド。 私はちょうど開くために起こった これの大きいバージョン。 そして今、私は入るつもりです 私はすでにしたフォルダ コー​​スのウェブサイトに事前に置く。 そして、私は先に行くつもりだと thadgavin.cというファイルを開いて、 これは、他の誰かによって書かれました。 そして、私たちはこれを見ても、 これは、コードのようなものではありません 私たちは以来書き込みされます このコードの目的 美しいを書くことだった 彼または彼女ができることを、コードを見て、 無関係にあるか否かの 別の人間が今までできた このコードを理解しています。 実際、毎年何あります 、難読化されたC言語のコンテストと呼ばれる 書き込み本当のオタクのためにある 誰も読むことができ、コード、 それはどちらか何かを 本当に簡単か本当に素晴らしい。 そして、私たちは私たちがしようと思いました この表情で締結する かなり驚くべきことだ何かで あなたは前に一度見たことがあります。 しかし、私たちはこれを終了します ノート、ドットスラッシュ、thadgavin。 次いで、これを待っていたものです。 つまり、CS50はこれで終わりです。 私たちは、水曜日にお会いします。 [音楽再生]