>> [音楽再生]
>> DAVIDマラン：すべての権利。
お帰りなさい。
これは、CS50であり、これは 週に一つは、続く。
だから私たちが渡してきた理由の一つ のような技術の周り
グーグルグラスは彼らが来るということです APIとして知られている何か、
アプリケーション·プログラミング·インターフェース。
そして、何この手段が持つということである 右のファイルと権利を持つ
マニュアルには、あなたが実際に書くことができます これらのようにもデバイスのためのソフトウェア。
>> そして、我々に向かって心に持っているもの プロジェクト場合、学期の終わりには、ある
Googleのガラスは、言うかもしれませんが関与 アピール、私たちは、私たちが何ができるかわかります
いくつかにあなたをフックの観点 代替品のハードウェアだけでなく、
公的にアクセス可能なAPIにはことができるように 実際にソフトウェアの作成を開始
それは、同じGoogleのガラス上で実行されます。
>> 私たちが演奏してきたこと、他の装置 我々はあるかもしれないと思った後半のと
学期の終わりに楽しいです ここで、この小さなもの。
これは、リープモーションと呼ばれ、あなたがいるものです 参照しようとしてすることは技術的に
デバイス用の広告、それ この特定のものに話すん
装置が可能である。
そしてそれは、あまりにも、経由してAPIが付属しています あなたは、ソフトウェアを書き込むことができる
な方法で自分のコンピュータを制御 かなりここでこの1分の映画が好きです。
>> [ビデオの再生]
>> [ENDビデオ再生]
>> だから今は、このデバイスははどうなる 少しUSBとして実施すること
あなたに差し込むことができるコネクタ コンピュータが、私は驚かないだろう
長い間、我々はこれらの種類のを持って前にあれば パソコンの次のバッチで技術
とMacにはことができるように、確かに、 それとの対話に
そのようなやり方。
実際に、私は、あまりにも、私がしたいのかを考えている 私は少しデモを引き上げ
このソフトウェアに付属のプログラム。
だから私は少しセンサーを入れてきた 私のラップトップの正面にあります。
>> そして、あなたが見ることができるように、それが既に実現 私の手がそこにあること
それを制御する。
そして、このすべてのアプリケーションがされません このようなトントン拍子ささいなこと。
しかし、あなたは、確かに、それを見ることができます 私はそこに5本の指を持っている。
我々はそれがすべての10を行うために得ることができる場合は、 あなたはきちんとしたピアノを想像することができます
アプリケーションなど。
あなたは、クラスの後に出てくるしたいのであれば そのように、今日と遊び
さて、あなたはに歓迎され。
学期の終わりに向けて、その上で非常に多くの。
>> だから、行政のカップル 発表。
一つは、今週の金曜日でセクションを行う cs60.net/sectionで正午。
そのURLは、コースの上にある ホームページにも。
その間には、しかし、スーパーセクション 今週の日曜日デビューする。
スーパーセクションは、一回限りのものです それは私たちに動作するようにいくつかの時間がかかるため
どのセクションで、どこで誰がだから。
>> 今度の日曜日だから、1があるだろう それらの少ない快適のためのセクション、
それらのために一つのセクション もっと快適に。
そして、あなたのものは、どこかで の間に行くことを歓迎します
いずれかまたは両方またはどちら。
これらの両方が撮影される。
彼らはより大きな講堂になるでしょう セクションでは、通常はインチだろう
しかし、ここでの目標は、を身につけることです 問題といくつかの快適さは、1を設定
CS50アプライアンスとC、A、これに あなたがあなたを見つける前であっても週末、
正式なセクションの割り当て。
つまり、あなたのTFとあなた小さく会う 約におけるsectionmatesのグループ
週の時間。
>> 営業時間、その間、 が起こってきた。
または今夜それらを活用して行う ご希望の場合は明日の夜。
問題セット0が金曜日に起因している。
これは後でより日です 木曜日定期的な。
しかし、問題のセット1を使用すれば、表示されます それはいくつかのウォームアップが含まれていること
あなた自身と演習 あなたを拡張することができます
金曜日の木曜日締め切り。
問題セット1は、一方、デビューする もちろんのウェブサイトこれが来るで
金曜日には、と丸くしたい場合 それは私は遅い時間に一回行ったように
お部屋で金曜の夜。
>> だからcs50.net/applianceは場所です あなたはCS50アプライアンスを得ることができます
我々は月曜日に使用し始めた。
今日はもう少しそれを使います。
しかし、残りの部分は、問題は1を設定することを保証 仕様では、見ていきます
あなたが必要とする正確にステップ それを起動して実行する。
だから、前のことをやって心配しないでください PSET 1あなたではなくではないと思います。
>> わかりました。
だから私たちは、ソースコードを月曜日に見て しかし新しいのコンテキストで
プログラミング言語、すなわちC.およびC、 スクラッチとは違って、グラフィカルではありません。
それは、作品をパズルはない。
これは、より多くの英語のような構文です。
と必要な手順のカップルがあり 実際に書き込み、実行中
なぜならソース以外にC言語でプログラム、 このようなコードは、あなたが何かを必要とする
コンパイラと呼ばれる。
と素人の観点から、どのような コンパイラは、私たちのためにするのでしょうか？
うん。
>> 学生：それはコードを変換 あなたには、0と1に書き込む。
>> DAVIDマラン：良い。
だから、コードを変換する 私たちは、0と1に書き込む。
それは、いわゆるソースコードに変換 オブジェクトコード、見えるそのうちの後者
このような小さなもの。
そしてそれはあなたのCPUの内部頭脳だ お使いのコンピュータ、理由の
これらのコンピュータを作成した人々、 知っているこれらの配列
0と1の平均値。
>> 多分それは、印刷を意味している。
多分それは追加を意味します。
多分それは減算を意味します。
多分それは、グラフィックを表示することを意味します。
ビットの定義済みのパターンがあります 世界が意味することを決定したことを
特定の物事。
しかし、このコースで、ほとんどの部分は、 私たちは、より高いレベルでうまくいく、と
付与されたために我々はそこに存在していることをみましょう することができますコンパイラのようなもの
私たちのソースコードを機能させる ように我々は意図。
>> 我々は先週初めて書いたプログラムでは、そう そしてそのようにし、ポートに始まった
Cこの過去に、話す 月曜日は、これだった。
グリーンフラッグがクリックすると、挨拶。
これは、もちろん、だっ スクラッチで書かれた。
と私は主張している同等の C言語でプログラムが少し見えた
このような何か。
>> だから私は、我々は最初のものです、で何だろうと思っていたのか 最初は、見えるものは別にいじめてみましょう
かなり難解なように確かに一見、 構文、しかし、あなたは気づいてから始めましょう
非常に迅速にパターン。
私たちが今日もやることは提供することです あなたのいくつかのためのメンタルモデルと
標準的な、いくつかの標準的な構文 プログラミングした。
そして、我々は実際に我々の手を取得します 同様にいくつかの例で汚れ。
>> だから、あなたのそれらのためのより快適な、 次のその今週実現し、
今週は非常によく見直しの少しかもしれません。
しかし、特にハッカー版 問題セット1に出る
金曜日にはもちろんのウェブサイトは、私は思います ユーザが入力さえもあなたはそれを見つけることができます
来週か2つ、上にいくつかの空白 あなたは今まで以上取得することから始めましょう
挑戦と遭遇 新しいと新しいもの。
>> だからみましょう離れて、このプログラムをいじめる 一度に数行。
一番上に、我々は何がある 技術的に呼ばれる
プリプロセッサディレクティブ。
これはちょうど言うコードの行です ファイルの内容を含めるには、
- 標準のI / N、標準入力と呼ばれる または、申し訳ありませんが、標準I / O、標準
入力/出力、。H、内部 私自身のプログラムの。
>> だから、他の言葉で、私はこれを書いた場合 のような単純なテキストエディタを使用してプログラム
geditの、より簡単な同等 Microsoft Wordのような、何か
命令は、＃stdio.hのを含んで、ちょうどです コンパイラに伝えるつもり、つかむ
そのほかのファイルの内容は、stdio.hに、 そしてここに貼り付けます。
>> さて、なぜ私は気にしますか？
我々は何を主張したのは、このファイルの中にある 保存されているstdio.hに、呼ばれる
どこかに私のハードドライブ上、またはこれに 場合、どこかCS50アプライアンスで？
他の誰かが私のためにそこにそれを置く。
しかし、それには何ですか？
>> ええ、そう、それはの宣言だ この関数は、printf関数と呼ばれる。
だから、printf関数のことを想起 ディスプレイの単語や文字や
私の入札の画面上の数字。
しかし、私はそれを書いていない。
CS50はそれを書いていない。
誰かが数年前にそれを書いた、そして、彼ら 本質的に私達にそれのためのレシピを与えた
stdio.hに呼ばれるファイルに記録します。
だから、最初の行は、ちょうど私がアクセスすることができます その誰か機能へ
の間で、数年前に書いた これはprintfのです。
>> さて、次の行で私を振っするつもりです 手元に、少なくとも来週まで。
しかし、今のところ、（ボイド）int型の主であることを知っている 本質的にこ​​れと同等の
黄色のパズルピース時 緑の旗はクリックしました。
世界は、数年前に、決めた場合 あなたは、プログラムを書いている
Cと呼ばれる言語では、あなたが開始 ラインとプログラム
それはそのように見えます。
ちょうど一週間の時間について、それは作ってあげる 感覚何int型は無効とは何か、である。
しかし、今のために、ただそれを考える この黄色のパズルのピースのように。
>> さて次は、我々は中括弧が続いている 別の近い中括弧によって、
いわば。
そして、私たちは、これらの全体が表示されます C言語でのプログラムと同様に、
JavaScriptとPHP。
そして、これらは単にカプセル化 コー​​ドの関連行。
本質的にオープン中括弧 と言い、ここでいくつかのコードが付属しています。
とある閉じ中括弧、 ただ、他の方向に傾斜
のためのそれの手段、 関連するコード。
>> したがって、この最初のジューシーな行 このプログラムは、printf関数、最後です
引用 - 引用終わり、こんにちは世界。
そして、私は事の間で呼ばれる 何前回符？
だから、文字列です。
と文字列は単なる技術屋です のシーケンスのための用語
文字、単語、フレーズ。
さえ一文字でし 二重引用符で囲む。
しかし、それはゼロの系列だ 以上の文字。
>> バックスラッシュnを、しかし、見える 少し奇妙。
しかし、それは単に何かを意味し コンピュータに簡単。
バックスラッシュnは何ですか？
新しいライン。
だから、それはただの特別なシーケンスだ 世界が決めたことを文字
手段は、すぐそこに改行を入れて コンパイラは、実際に得られますので、
混乱して、通常は、あなたであれば、非常に 当然のことですが、間違って、単に
入れてEnterを押すと開始 あなたのコード内の新しい行。
あなたは、もう少しする必要がある バックスラッシュnの明示。
>> そして我々はそのような他のいくつかがあるがわかります 特殊文字のパターン。
例えば、あなたがあなたを聞かせしたい場合 、コーナーケースにさまよう心
私は印刷したいと仮定し ための画面上の二重引用符
何らかの理由で、それがあるように思えるでしょう 少し問題が、正しいかも？
ので、私は二重引用符を置く場合 何のための "こんにちは、世界"の真ん中
理由は、なぜそれが見えるん 潜在的に問題？
これは、文字列を分割します。
>> コンパイラはただのプログラムです。
コンパイラのようなプログラムは、ちょうど起こっている 下部にコードトップを読み取るため、
左から右へ。
その代わりに3つの二重引用符を見ている場合 2のために、それは知っていることはないだろう
あなたは左側にそのことを意味している場合 文字列、またはするものでなければなりません
右、または全部。
それは曖昧だし、典型的なので、どのような コンパイラが行うのと同じフリークアウトされ、
とあなたにいくつかのエラーメッセージを与え、 あなたは問題に対処する。
>> だからバックスラッシュnは新しいを意味する与えられた 行、何が今、あなたの本能だろう
含めるしたい場合であることが開始 二重のような変則的な何か
これ以外の場合、引用符で囲まれた内部を引用 文字列？
バックスラッシュ二重引用符。
そして我々はこれを表示されます あまりにパターンの一種。
>> あなたは少し何かをしたい場合 奇妙な、あなたがそれを見つけることができます
ソリューションは、多くの場合、パターンに従う とバックスラッシュ
エスケープシーケンスを示している。
そして、それだけで何か特別なことを意味します 我々はに表現する必要があること
別の方法。
あなたが表現するにはどうすればよい場合と スラッシュ、まあ、我々はよ
それに戻ってくる。
しかし答えは、あまりにも、実際には ビット明白。
>> それでは、現在いくつかの他のをご紹介しましょう プログラミングコンストラクト
あなたは、スクラッチで見た。
あなたは、おそらく当然の撮影した すでにに飛び込んき既に場合
問題は、0を設定します。
しかしそれではC言語での構文を紹介させて これら以外の場合、かなり直感的なため
アイデアは、そのうちの少なくともいくつか。
>> したがって、この条件の概念や 以前に我々に対し、支店、
見えたコードとそれを表現 スクラッチの左側のこのような -
xがyより小さい場合には、そのように言う -
代わりに、今、Cで - 私が磨くせ 最も単純なケースでで -
オープンであれば、我々は単に、言おうとしている 括弧は、何かが真である -
ブール式は行くために起こっている 私は条件を言ったところ -
閉じ括弧は、その後何か それらの中括弧の内側。
>> だからここに、あまりにも、中括弧 スクラッチのような種類のものである
U字型のパズルのピース。
これらの中括弧の内側に何でください。
このケースでは、スラッシュをスラッシュ。
そして、これが前方であることがわかる スラッシュ、バックスラッシュではない。
フォワード、スラッシュ、スラッシュ プログラムされた人のために
前に、ただ意味 -
それだけのコメントだ。
コメント行ではない コー​​ドは、それ自体。
それはあなた、英語のラインだ 人間、自分自身にに書かれている
多分に、何かをすることを思い出さ に説明し、自分自身に説明
他の誰かが、あなたのコードが何をやっている。
それだけで説明するコメントです。
>> 現在、もちろん、我々は、双方向を有することができる ただこれを行うことにより、道路の分岐点、
行って、道路の3ウェイフォーク この、そしてあなたがこれを続ける場合
パターンは、十字を有することができ、 道路の5ウェイ、6ウェイ·フォーク場合
あなたは、確かに、処理する必要が 多くの条件という。
そして、ここで並列に気づく -
、他の（条件）であれば、（条件）であれば と少しだつだけ
奇妙が最後であり、その ちょうどそのほかにある。
しかし、再び、これは、同一である 概念的には、私たちが何をやったかに
すでに、さえ構文はするものの に慣れて少し時間がかかる。
>> さて、この例では、ある 他のいくつかの奇妙な構文。
我々は、再びprintfの開き括弧を参照してください、 と閉じ括弧。
との内部がある 引用符で囲まれた文字列。
文脈における括弧、 printf関数で、左に行く
と右何の？
我々は、引用符で囲まれていることは何を記述しない より一般的に、文字列？
>> だから、引数です。
いつでもあなたのような機能を持って printfは、その後開いた括弧と
近く括弧と内側の何か それ、それが文字列であるかどうか、または
整数、または何か他の、事で これらの括弧が呼び出される間
引数。
>> と引数は、単に影響を与える 関数の動作。
この場合、それはどのように非常に明らかだ。
X <yは、渡されているものです。 その引数として、話をする。
とprintfのために起こっている まさにそれを印刷します。
確かに、人の数年前にあるため printfの実装わからなかった人
我々人間の後継者は何であったか のためにprintfを使用するつもり。
引数に、存在する理由だからです 関数の後の行動に影響を与える
書かれて。
>> さて、ブール式。
私たちは、スクラッチにする前に、これらを見てきました。
それはあなたは、Cにすることができます判明 "または" いわば一緒に、。
二つの縦棒このブロックすることを意味 コー​​ドは、これはこれを行う、意志
最初の条件が真である場合に実行 または第二の条件は真です。
そして、あなたが行われていない可能性がありますにもかかわらず、 このスクラッチでは、確かに可能性
スクラッチでこれを行う、そして、あなたがすることもできます 違った自分を表現 -
もし最初の条件と第二 条件が真である場合、何か
中括弧の内側。
>> そして、ちょうど余談として、それが理由 二重アンパサンドとダブル
縦棒、我々は最終的に表示されます その単一の縦棒と
単一のアンパサンドは実際に異なっている 今のところだからCの意味は、
そのシンボルの重複 意図的なものです。
>> だから、簡単に、ご紹介してみましょう 構文のこの他のビット。
これは非常に引き継がれません スクラッチ、しかし私は私ができることを主張
場合、もし他の概念を実装する 他に、他の場合、else文が使用している場合
何かが、switch文と呼ばれる。
そして、これが実際に存在する唯一の理由 プログラマは、ちょうどあなたを与えることです
いくつかを解決するためのわずかに異なる方法 問題は、たとえ論理的にそれ
あなたに何か新しい機能を与えるものではありません。
>> そのことで私はこれを意味します。
ときは、スイッチを言った後、スペース、 その後内側の括弧のペア、
そのうちの式が行く -
これは少し非自明かもしれない 、まず、これは引数ではありません
技術的には、スイッチがあるため 関数ではありません。
だから今は、ちょうど私達が使用していることを前提としてい 別の場所でのかっこ
さまざまな理由で。
>> だから、表現上のスイッチは、私ができることを意味し これらの変数の内部を置く
それは表現を言う括弧。
そして、その変数であれば -
それはXと呼ばれると仮定し、 それはちょうど整数だ -
私はその後、私のスライドに列挙することができます ここにこのような何か。
xが私の変数であり、私た場合 何かをしたい場合X
1に等しく、私はそれを行うことができます。
>> 私の代わりに何かをしたい場合 xが2であれば、私はそれを行うことができます。
そうでなければ、私は何かを行いたい場合 完全に、私は、デフォルトのケースを持つことができます
その場合、私は、この他のことを行う。
だから、その意味で、それは同等だ xが他にあれば、他に、1に等しいと等しい場合
しかし、私はちょうどので今これを言及 我々は再びそれを見ることができます。
しかし今のところ、それが存在することを知っている。
>> わかりました。
したがって、これらの最後のカップルは、もう少しです 一見複雑な、しかし、彼らはやる
かなり簡単なもの。
Cのforループのコードの塊である もう一度何かを行い、
何度も何度も。
そして、それについての唯一の迷惑な事は それはそれは少し不可解だということです
この循環の中で自分自身を表現する 上のパターンが、世界は、標準化された
次の方法。
>> あなたはforループを使用するときは、持っている 再び括弧のペア。
と2つのセミコロンに気づく そこにいます。
3つの別々のそれらの2つのセミコロン の内側に別の表現
括弧。
一つは、いわゆる初期化である。
一つは、いわゆる条件である。
そして、もう一つは、いわゆるアップデートです。
>> 抽象的に見て、これは 完全に非自明、それでは見てみましょう
具体的な例で。
スクラッチでは、リピートブロックを持っていた。
そして、このブロックは言う、10回繰り返して言った "こんにちは、世界。"私はのために主張しましょう
今、私たちはこれに戻ってくる、と これは、あまりにも、にもっと理解していきましょう
ずっと前にあなた、同等のC コー​​ドは、このことが言える -
声明と空間のペアの 括弧内にセミコロンに気づく
独立した存在、その3つの異なる 物事、初期化、
状態、および更新。
>> そして、何の推測を取る 最初はやっている。
int型私= 0。
ラフ素人の面では、何ですか おそらく、私たちのためにやっている？
うんそう。
それは私と呼ばれる変数を宣言するのは、 そしてそれは、それをどのような価値を与えている？
0。
だから、という変数を作成しています 私は、その中に値0を格納。
ことは、いわゆる初期化です。
>> すべての権利、今、私が前に主張した その中のもの、私
<10が、条件である。
だから何をやっている？
さて、何のためにループがないとき forループでプログラムが実行され、ある
コンピュータが通るたびに このループ、上から下へ、トップへ
君たちがやったようにボトム、 自分をカウントし、座っ
もう一度、もう一度、もう一度、 コンピュータが起こっている
その状態をチェックします。
そして、iが10未満である場合 それは再びそれをやる。
iが10未満である場合、 それは再びそれをやる。
だからあることを示唆しているようだ うまくいけば、私は変化しています。
そうでなければ、我々は無限ループを持っていると思います。
ので、実際に、私は、変化している セミコロンの後の最​​後のものが
iは+ +のやや不可解な構文です。
しかし、これをやった人の 前に、それはただ意味
非常に単純に何が？
>> 学生：[介在VOICES]。
>> DAVIDマラン：私に1を追加します。
私をインクリメント。
だから我々は、スクラッチのパズルを見た そのための作品、実際に。
それは私+ +が、ちょうどそのようには見えませんでした 手段は、非常に単純に、インクリメント
私は1でこの操作を行うたびに、大切にしています。
だから文字通り、次の方法で起動する 0 iに初期化する。
次に、あなたの状態を確認してください。
10 0より小さい？
はい。
我々は、ループを通過します。
>> 私はコンピュータのを主張する次の事 やろうと、それが起こっているのです
私をインクリメントする。
だから私は今1です。
それは、条件をチェックします。
10 1より小さい？
もちろん。
だから、もう一度行います。
次にiをインクリメント+ + 2。
10より2小さい？
はい。
と何度も何度も何度も。
そして最終的には、理由の プラスplussing、私たちは、私が10に等しいに着く。
10以上10未満でありますか？
まあ、明らかにしない。
そして、それは時のポイントだ ループのためだけを停止します。
そして、あなたは上のより多くのコードを持っている場合 以下の画面下に、コンピュータ
代わりにそのコードを実行に進む。
>> そう再度、これはに起こっているにもかかわらず を見て、少し奇妙に感じる
まず、確かに人のために 前にプログラムしたことがない、それ
文字通り概念的軽減 そうしないと、非常に何に
簡単なパズル スクラッチでの作品。
>> すべての権利、私はそこだろうと約束した スクラッチで他の類似である。
これは、あまりにもあります。
そして我々は、この簡単に最後の時間を見た。
しかし、永遠に覚えている スクラッチでブロック？
それだけで永遠に何かしていますか？
私はあなたが実装できると主張し このようにこの。
そして、あなたが実際にこれを実装することができます さまざまな方法の束である。
>> しかし、whileループは違うだけです。 自分を表現するC言語での方法。
一日の終わりには、あなたが行うことはできません whileループを使って何というあなた
できないforループと。
そこで、彼らはの終わりにいる 機能的には毎日同じ。
しかし、それはあなた自身を表現することができます 少し違ったで
次の方法。
>> whileループを使用すると、それはに何があるかだ もう一度チェックしている括弧
何度も何度も。
とすぐに、その式が偽であるとして、 その後ループは、実行を停止
コンピュータはに進み 実行する任意の他のコードあなた
あなたのファイルを持っている。
>> しかし、ここで興味深い何ですよ 私は文字通り本当の入力した。
そして真は、ブール値のタイプです trueまたはfalseの値。
だから真のこれまでになる可能性 私は文字通りした場合はfalse
私のプログラムにそれをハードコーディングされて？
ないそう。
それは私がこれをしたことを少し奇妙だ。
しかし、真のは本当です。
全くプラスplussingはありません。
ここでの変数の無駄はありません。
だから私は本当、このときにハードコーディングされているので ループは常に評価するために起こっている
もう一度、もう一度、もう一度。
>> だからこんにちは世界は何回です 画面上で印刷するつもり？
永遠に。
まで無限回 バッテリーダイスまたは他の外部
イベントが発生します。
だから、これはおそらく最高のプログラムではありません ユーザならないため、書き込む
あなたのプログラムを終了することはできません、それはだ おそらくあなたが意図したもの。
>> しかし、時には、プログラムがすべき 無限ループを持っている。
たとえば、お使いのコンピュータが持っている場合 その上に時計、それは確かだろう
それは更新し続けるんあなたの時計ばいい 一度はいえ永遠自体、
秒または1分または まあそんなところです。
そうであっても無限ループ その場所を持っている。
>> わかりました。
最後に、この1。
、この1つは少し異なってい 機能的に、そして我々はに戻ってくる
このおそらくPsetに1インチ
しかし、ループの別のタイプはあり DO WHILEループと呼ばれる。
との間に、ここでの唯一の違い ループと、言う、whileループしながら行う、
条件がチェックされていることではありません あなたがコードを実行する前に、しかし、後に
あなたは、コードを実行する。
だからしばらくの間上部に ループ、行うのに対しながら
一番下にそれをチェックします。
>> そして、これは単にwhileループすることを意味 通常は複数回実行されます
またはwhileループより少ない回？
行うため、潜在的に複数回、 ループは明らかにこの操作を行うと言っている間に、
だけした後は、チェックポイント の内部状態であれば
括弧はtrueです。
>> だから我々は再びこれを見るだろう おそらくPsetに1インチ
あなたは今までに何かをしたい場合 少なくとも一度、その後おそらくいくつかのより多くの
回、これは良いです 使用することを構築します。
しかし、whileループは、対照的に、意志 最初にその状態を確認してください。
そして、それは、C言語でのforループそれかだ しばらく、およびforループ、しばらく。
そして再び、彼らは戻ってかなりうまくマッピング この1つはないことを除いて、スクラッチする
かなりスクラッチで同じアナログを持っています。
>> さて、方法について、今、変数？
だから、これは私は、変数を宣言した方法です 構文的先日。
私が主張したint型を持っていた 整数です。
私はその後、カウンタと呼ばれる変数を持っていた その後セミコロン。
だから、このコード行は何をやっている？
これは宣言し、非常に単純であり、 変数 -
コンピュータを尋ねる、つまり、私を与える いくつかのメモリは、私にいくつかのビットを与える - に
私は何を格納できる？
int型。
とセミコロンはただ意味 コー​​ドの行の終わり。
>> さて、2行目はおそらく かなり推測可能。
カウンタ= 0とは何ですか。やって？
それは対抗するため0を割り当てている。
そして、これは他の事である 少し迷惑だ
代数、と言うのに対し、。
代数のに対し、等号を意味 等しく、Cここで、等しい
記号は代入を意味している。
だから、右側に何置く意味 左側にあるものに。
そして我々は等しく、別のシンボルが表示されます 私たちが実際にテストしたいときに、等しい
品質のために、多少うるさく。
>> しかし、これは少し非効率的です。
それは私が持っている迷惑のようなものだ 変数を宣言すると
その後、値を与える。
だからCは実際に私達はこれを簡素化することができます とだけ一度にすべてそれを行う。
あなたは、変数を宣言することができます 左に。
あなたはまだ上の割り当てを行うことができます でその等号を置くことによって、右
真ん中。
そう一日の終わりには、これら二つは 同等のが、この1、率直に言って、
おそらくに入るために良い習慣です それは少し少なめだという理由だけで
コー​​ドは、それが、読みは少し簡単です そしてそれはちょうど引き締め
あなたのコードは、いわば。
>> これまでのループ上のどの質問でも、 変数について、条件に、上
ブール値のいずれか技術的に または概念的？
わかりました。
だから今この次のものを取得します もう少し面白い。
そして、これは私が最後の我慢する例です ただスクラッチ例をマッピング時間
Cに上
>> この関数は、そう。
素人の面では、この関数は何ですか？
あなたの答えを持つ大胆なことになった。
機能は何ですか？
>> 学生：何かしていますか。
>> DAVIDマラン：あれは、何ですか。
>> 学生：何かしていますか。
>> DAVIDマラン：何かしていますか。
OK。
我々はそこを始めましょう。
だから、この関数は何かを。
だから、だコードの一部です 本質的に別の場所でその実装
確かに何かがありません。
さて、関数についての興味深いものだ 、それが入力を取ることができるということです
そして、出力を生成することができる。
としましょう​​、実際に取る これを見て。
>> だから、カーテンの後ろの男 一瞬前に意図的であった。
ここでは、テーブルを持っている。
しかし、それは実際にこの仮定 大きな箱を表しています。
だから、これは、いわゆるブラックボックスである。
そして一般的には、設計では、コンピュータ内の 科学、ブラックボックスは、単に参照してください
機能性の部分誰か 実装されており、あなたはしないでくださいました
必ずしも知っているか、それはどのように気 ボンネットの下に実装されています。
あなたはただ気に、このブラックボックス、 我々は今、呼び出しを開始しますた
この関数は、何かを。
>> だから、例えば、このブラックボックスの場合 ここのステージは、printf関数を表す
この関数は、私がこれまでの例から知っている それはprintfの取りつ以上
引数、およびそれらの最初の 引数は以下のように、文字列でなければなりません
"こんにちは、世界。"まあ、私は人間だ場合 プログラムを書いて、私が欲しい
printfを使用するには、私は、例えば、かもしれない ここで空白の紙を取り、
黒のマーカーと、その上に書いて -
私は "世界"スペルミス -
H-E-L-L-O。
>> だから、私は黒のマーカーを取るだろうと私はよ 上のように大きくて読みやすく、私はできる限り、書き込み
この一枚の紙、 "こんにちは、世界"と 今、私は、これが私の議論であると主張している。
これは、で表された文字列です 白い紙。
そして今、関数への私の入力 printfはこのことを行っている。
だから私は、printfの呼び出し合格しています それへの入力として、その引数。
>> そして今、私はどのように人は誰かわからない printfは数年前にそれをやった書いたが、
私は、マニュアルからのことを知っていますか 生活の中でその目的は何I印刷することです
それを入力としてに提供します。
そして、にもかかわらず、この実装 私に知られていないです
ボンネットの下に、今 私は、ああ、それが行われている、参照してください。
それは何かを印刷した 画面上で。
そこにあれば、今、プログラムの制御 、コードの行以上あったでしょう
今、私に戻ってきた。
そしてそのコルトン事実 -
彼の心を祝福、下にここに隠れている 皆様の前のテーブル -
私は知らないという点で、意図的なもので と私はどのようにprintfのです気にしない
実装されています。
私はちょうどそのから、再び、知っている それが何をするかドキュメント、およびどのように
それを使用することになっています。
>> さて、printfを得ることができることを思い出してください もう少し洗練された。
繰り返しますが、私達はちょうど話をしている スクラッチだと言うブロックと同等。
しかし、私はまた、この最後の時間でした。
私はこんにちはプログラムを作りたかった ただ一生懸命もう少しダイナミックではなく
コー​​ドのようなもの "世界"と 間違いではないハードコード何か
D-A-V-I-Dのような任意の プログラムに。
私は彼または彼女のためにユーザーに確認したかった 名前、その後に何かをする
それらが提供する、その文字列。
>> だから少し違う何かがあります ここに。 printfは、一瞬前に、
でしたが、確かに、何かをするが、それ 私には何も返しませんでした。
右？
コルトン私に何をお渡ししませんでした 裏紙のない作品。
副作用はそこにあった。
私のように "こんにちは、世界"を提供 引数はコルトンもたらしする
単語の副作用、いくつかの単語、 画面上に現れる。
>> GetStringメソッドは、しかし、少しです 異なる。 GetStringメソッドでもあります
この関数は、それはいくつかの値を返します。
それだけではありません 美的副作用。
これは、実際に人に、私を与える 、関数を呼び出すか、または使用した
戻って何か。
したがって、この場合には、GetStringメソッドである GetStringメソッドオープンで呼び出さ
括弧、近くに括弧。
GetStringメソッドは、そのため、時間がかかりますか 任意の引数や入力？
いいえ、それはないようです。
生活の中でその目的はある 単に文字列を取得します。
それは超えない詳細を必要とします。
だから私は先に行くと、そのふりをさせ、 再び、このブラックボックスは、printf関数ではない
しかしGetStringメソッド、そして私を聞かせて、人 このプログラムを書いて、電話または使用
ただ書くことでGetStringメソッド 近いG-E-T-S-T-R-I-N-G、オープン括弧、
括弧、GetStringメソッド。
>> 今、私は全く分からない方法CS50スタッフ GetStringメソッドを実装しますが、私は知っている
私は十分な長さ待っていれば、それはそのを行います フードの下のものは、多分使用
おそらくいくつかを使用して、いくつかの変数は、 条件、おそらくいくつかのループを使用して、
おそらくいくつかの関数を使用して、 多分使用して -
ただ失速しよう - 多分使用 いくつかの他のプログラミング機能。
しかし、私は十分な長さ待っていれば - 現実には、 コンピュータに、これが起こる
超高速 -
私は十分な長さ待っていれば、この機能 GetStringメソッドは、文字列を取得しようとしている
おそらく、入力されたユーザーからの 彼らのキーボードの外にそれて、
その後、あなたはGetStringメソッドが実行されるときに取得 ユーザーからそれらの文字
と文字列にそれらを格納し、その 機能、GetStringメソッドは、持っているために起こっている
私はいくつかの出力を私のための準備 を介して取得するつもり
代入演算子。
>> そして、私が行けば、確かに、出力に ここで、Obosiは寛大に持って
でこれを知らずに、参加した この上に自分の名前を書くことで、進める
表現されている変数、 文字列。
さて、代入演算子でも、意味 これは少しを感じるかもしれませんが
冗長、私は実際に必要なの この私自身のコピーを作成します。
左手の理由 サイド - おっと！ -
私は基本的に文字列を持っていることに気付く 左側の名前。
だから私も作るつもりです 私自身のこれのコピー。
そして、これは、白嘘のビットです 我々は、週または2つの年代に表示されますので、
文字列は実際にはないことを即座 彼らはあるように見えるのか。
>> しかし、今のところ、ここで戻り値です。
ここでの私自身のコピーが後です 代入演算子を使用して。
そして今、私は次に何をすべきかをしたいですか？
我々は今、第二を持っている 2行のコードの。
だから私は今、printfの呼び出したい。
その黒い今ふりましょう ボックスがあることに再び戻っている
printf関数ではないGetStringメソッド。
>> printfはこの時間がに行っている どのように多くの引数を取る？
だから見て、それには2つのようなものだ。
そこに2つのコンマだが、 それはそれらのコンマの一つ、
引用符の内側。
だから、最初の引数は、文字通りです これになるだろう。
H-E-L-L-O、カンマ、パーセント S、バックスラッシュnを。
そして今、私は、しないつの引数を提供しています しかし、printf関数には2つの引数。
>> そして、何のprintfで行うことになっている 私はそれらを渡すこれらの二つの入力後
引数として？
それは、第二を取ることになっている 私は名前を呼ばれる彼ら、そう
私が書いた紙2枚目 ちょっと前に名前呼ばれています。
これは、値の内部のプラグに起こっている その変数のプレースホルダーに、
％sは、そう、再び、その一瞬の中で 時間、我々は、副作用が表示され
我々は今、それによって、printf関数と呼ばれた しない "こんにちは、世界、"しかし、 "こんにちは、以下を参照してください
Obosi。 "
>> だから、の両方に大きな拍手 私たちボランティアは、知っていた唯一の人の
これは起きているだろう。
わかりました。
それがあったように、おそらく、単純な、 確かに、あなたはすでに精通している場合
などを使用すると、うまくいけば、決して どのようにその特定のビジュアルを忘れる
機能が働く。
>> だからGetStringメソッドよりも多くはあり。
CS50ライブラリの内部では、そこ すべての機能の全体の束、
ただ明確にするために計上される 我々はこれらの関数を書いた。
一般的には、C言語で、ほとんどすべての他の あなたが使用します機能は小文字です。
しかし、我々は意図的に大文字を使用 ただ、これらのことを明確にする
我々はだろうという一種の補助輪です ほんの数週間のために使用する
取得プロセスを簡略化 ユーザからの入力。
>> CS50ライブラリは何もしません あなたがたは、で行うことができないこと
だけからCコードを使用して oldschoolの教科書。
しかし、再度、我々は訓練としてそれらを使用する だけのカップルのための一種の車輪
週間我々はを取り除くことができるように あなたはすぐに理解できるだろうという複雑
として何かをするのを自分 取得などの比較的簡単
ユーザからの入力。
>> ですから、アクセス権を持っているだろうことを知っている 、getchar関数getDoubleはする -
ダブル。
What's - その後getFloatは。
フロートとは何ですか？
そこから始めましょう。
>> 学生：[聞こえない]。
>> DAVIDマラン：うん。
これは、小数点を持つ数値です。
int型は整数ですので、一方で、その 、0〜9と数字だけです
その繰り返しのいくつかの数が、 フロートが何か
小数点付き。
と二重のは、一方、またある 小数点付きの数が、より
小数点以下の数字 点、潜在的に。
>> 長い前に、だから私たちはこれに戻りましょう。
典型的には、これらのタイプのそれぞれ データは、これらの型の変数の各々
我々のようなライブラリは、に戻ることができ あなた、ビット数が異なるのを使用
情報を保存する。
ただ意味一般的には、シャア、 1文字は、8ビットを使用します。
そして、それは私たちと実際に一致してい ボランティアのバイト先週
思いついたと1を表す 当時のASCII文字。
だからシャアは8ビットです。
>> フロートがあることを起こる 典型的には32ビット。
と二重の、ご想像のように、ある ちょうどより、実際には64ビット、
これは、あなたがより大きいがあることを意味します 数字以上の精度。
しかし、再び、多くのその別の時間に。
GetLongLong一方、しかし愚か 名前、本当にある
二倍大きいです整数倍の 長い間、潜在的に、正規のように
整数ではなく、32の64ビット。
そして、我々が使用してきたGe​​tStringメソッド。
>> しかし、それは、CS50ライブラリに、判明 で、我々はわかりますように、実装される
2つのファイルの形式の一 cs50.hと呼ばれ、他の二つを持っている
それのデータ型。
ブールはC.であなたをすることができますが存在しない ちょうど0と1使用してそれらをシミュレート
プログラム全体。
しかし、我々はCS50ライブラリで作成した 記号は、 "true"と "false"
1と0を表現するために、あなたはしないでください ハードコード何かを持っている
文字通り1と0のような。
しかし、我々は再びそれらを見ることができます。
>> 文字列は、あまりにも、存在しません。
私はそれは言及理由だ 今の白嘘のビット。
しかし、我々はピールバックだろうこと やがて層。
しかし、今のところ、文字列です 文字のシーケンス。
>> 一方、C言語では、確かに 異なるデータ型を持っている。
これらは小文字であることに注意してください。
機能だから、一瞬前に見た CS50によって機能と書かれている
あなたに落ちる値を返します これらのカテゴリの1つに。
>> カップルだけで植える虎の巻 ここでシード。 printf関数だけではありません
プレースホルダとして％sを取る。
これは、小数点整数の％dを受け取り または％iは、同様に動作します。
％fは、浮動小数点値をている。 ％cはのためである あなただけの1を接続したい場合はchar型、
フォーマット済みの文字列に文字 私たちが行ってきたように、あなたは、％cを使うことができます。
>> そして、多少うるさく、％LLDです 長い、長い10進整数のために、
あなたが本当に必要な場合だけを意味する 大きな数とは何かを使っている
長い長い、私たちが来ると呼ばれる バックPSETでするには、にLLD％を使用することができます
、printfは本当に大きなプラグインを教えてください ここではその第二の方法でまたは整数
いくつかの他の引数。
>> そして最後に、私が約束したこと 他のいくつかのエスケープはあり
printfのサポートシーケンス。
私たちは、バックスラッシュnを見てきました。
バックスラッシュ-rをあなたが見ることがあります。
これは、古い学校の事のようなものです。
あなたは今まで本物のタイプライターの年を使用した場合 前に、あなたがクランクに引っ張ら
これは、ホイールを回転させるだけでなく、 ラインナップを移動することも移動させる
にオーバー背中全部ははるばる 左は、よく、バックスラッシュに-rだけ
本質的にあなたのカーソル背中が動く 行の先頭へ
それを下に移動せずに。
しかし、再び、もっとその上で、 おそらく、将来インチ
>> バックスラッシュ引用符、バックスラッシュ二重引用符、 バックスラッシュバックスラッシュです
小さな小さな謎を解決 私は以前に触れた。
バックスラッシュ-0は、実際にある 非常に興味深い。
しかし、我々に戻ってくる そのずっと前に。
>> だからCS50、今、私に行かせて アプライアンス、そして実際に行うにしましょう
迅速な例の一つでウォームアップ 我々はすでに、その後に移りました
もう少し複雑な何か。
私は私のプログラムを開くのであれば geditの呼ばれる -
これは私のグラフィカルなエディタです。
そして、私はそれを行うことができます -
私はそこに、そのウィンドウを閉じてみましょう -
ここでダウンしてこのアイコンを経由して、 左下のテキストエディタで、
メニューの横にあるコーナー。
>> 私が先に行くと進めるつもりだ、と 、と言う、にジョンをこの例を保存
ハーバードのフォルダ。
ジョン·ハーバードのフォルダには、ちょうど彼の家である 彼のすべてのファイルが住んディレクトリ
デフォルトでは。
そして、私はこのように保存するつもり ハロー0.cというファイル。
そして、私はこの名前を選んだだけでそう 上のサンプルコードでラインアップ
もちろんのウェブサイトやで オンラインでYouTubeの動画。
>> だから今、私は始めるつもりです 私の最初のプログラムを書く。
私は読みやすくするためにズームインすることができます。
そして、私は先に行くとint言うつもり ちょうどそのようであるメインボイド
黄色のパズルピースその プログラムが起動します。
私は上の習慣になったこと その後、私の中括弧を開く年
また、それを閉じて、その後に戻って 私はちょうど、私のコードを配置したい場所
それは私がすべてのものを保持するのに役立ちますので、 特に私のように、バランスのとれた
プログラムが長くなる。
>> そして今、ここで、私が先に行くつもりです そして、引用終わりを引用、printfは、言う
こんにちは世界、バックスラッシュnを、近く引用、 閉じ括弧、セミコロン。
だから私はちょうど私達がしたすべてのものを繰り返しています これまで当たり前に取って。
今、私はズームアウトするつもりです。
>> そして、このターミナルウィンドウダウンここで、どのような 私は、この黒でやるさせて頂いております
と白の窓？
私はそれを何に使用することができますか？
だから、これは私がコマンドを実行する場所であると ここで私は物事をコンパイルすることができます。
そして、私はそれをシンプルに保つつもりです。
私は、プログラムを使用するつもりです メイクと呼ばれる、それはない
技術的にはコンパイラ。
コンパイラと呼ばれるClangのですが、 我々はにそれに戻ってくる
週または2つの時間。
>> 今のところ、私はただ作る入力するつもりです こんにちは-0、しかし、あなたのものであった人
私はちょうどあなたの心の中に何を比較する 私が入力している必要がありますものに入力した可能性が
私がしたことを既に知っている ここで間違って何か。
さて、多少の誤差は明らかにあり。
私もいずれ、彼らが何であるかを見る前に 私が間違っていたものとしての考えですか？
>> 学生：[介在VOICES]。
>> DAVIDマラン：うん。
私はライブラリのヘッダファイルが欠けている。
これらの。hファイルのいずれかが、ヘッダーと呼ばれ ファイル、およびそれらを総称
ライブラリと呼ばれるものに属しています。
図書館は単にコードの塊である 他の人が書いた。
標準の[だから？私？]ライブラリです コー​​ドを含むファイルのコレクション
他の人が書いた。
>> だから私はそれが欠けている。
では、なぜ私は、エラーを取得しています？
まあ、私はバックアップにスクロールさせて ここに私のターミナルウィンドウ。
そして残念なことに、C言語で、多くののように 特にプログラミング言語、
それはすべてあなたに新しいだ場合は、エラー メッセージは正確であるが、彼らはまた、している
かなり不可解。
そして、ここでエラーが赤色であり、 "暗黙的に宣言するライブラリ関数
printfの型と、 "とし、それをスクロール 次の行に、 "int型のconst char *を、
... "それはちょうど実際に取得する すぐに圧倒的。
>> しかし、あなたは、あれば、何をすべきかを開始する必要があります 再び、このすべてに新しいだけにある
キーワードを探すために始める。
明らかに、私は半分を理解していない可能性があり 私はまだ見ている言葉。
あなたは、一週間の時間では、しかし、意志。
しかし、私はprintfを参照してください。
そして、それはに、ずっと前に、開始する必要があります 、すべての権利、printfのあなたの記憶を呼び起こす。
何かがprintfのと間違っている。
私はそれが間違ってスペルましたか？
いいえ、それは見えない - ああ。
私が教えていない限り、私はそれを使用することはできません それが存在することをコンパイラ。
そして、もう一度、あなたの本能に行く あなたが実際に理解していない場合でも、
実際のエラーメッセージ。
>> そして実際、ここでの解決策はただにある ファイルの先頭にそれを含める
そのような、と私のファイルを再保存 コントロール-Sか、[ファイル]メニュー。
そして、私は今、ここに戻ってダウンして行けば、 私はこれをクリアするつもりです。
コントロール-Lは、ちょうど良い方法です 画面をクリアする。
そして私はこんにちは作る "と入力するつもりです 0 "と入力し、今では私はまだ見
シンボルの不可解なシーケンスが、 我々はそれに戻ってくる。
というメイクがあなたのためにやっていることだ。
それは服用プロセスを自動化するのは 関与かなり迷惑なコマンド
打ち鳴らす、実際のコンパイラ。
しかし、私はエラーを得ないという事実を意味 このことは働くべきであること。
>> だから私は今何をするつもりだ - 私は再び拡大させて -
./hello-0は入力して、確かに、私が参照してください "こんにちは、世界。"だから今高めてみましょう
これは、ほんの少しだけ複製する 我々が意図したステップ。
私は、この名前を変更するつもりです hello1.cに名前を付けて保存。
そして今、私は変数を宣言するつもりだ いわゆる名前なので、文字列名、
と私はそれに置くつもりです 引用·引用終わりの値
D--V-I-Dクローズ引用セミコロン。
そして今、私は "世界"を交換するつもりです 文字列の何プレースホルダと？
％sは。
>> そして今、どのように多くの引数をすべき printfはこの時間がかかる？
2だから。
だから私は、引用符の外に出る。
私は、カンマの後に "名前"を入力します。
しかし、私は何かをやった 今回は他に間違って。
しかし、のは、私はしなかったと仮定してみましょう それはまだ実現しています。
私はここに行ってみよう。
>> と通知は、あまりにも、私は少しを得て すべての "こんにちは0 make"を入力するのは退屈
時間は、 "make"を、すべてこの。
だから、それはあなたができるライナスで、判明 頻繁に上向き矢印をヒット
キーボード、あなたが実際にスクロールすることができます 私がしたことをすべてのコマンドを通じ
ちょうど今前に実行されます。
私がやるのであれば、アップ、アップ、その こんにちは0メイクあり。
私はそれを望んでいない。
私はちょうどにそれを変更したい こんにちは1今回は、入力します。
最終的には、その意志 あなたにいくつかの時間を節約できます。
>> わかりました。
残念なことに、エラーが発生しているのです。
だから私は上にスクロールしてみましょう。
これは本当に私のように見えます このプログラムを虐殺。
私は、私の神を意味し、それは、2行のコードです のエラーとその10行。
しかし、最初に一番上を見てください。
宣言されていない識別子の文字列の使用。
私は標準のI Nを意味しましたか？
私はしませんでしたありません。
私は文字列を意味した。
>> しかし、文字列変数はどこにある タイプは、私たちが言う、DD宣言？
だから、CS50ライブラリにあります。
だから、これらの最初には、十分ではありません 数週間だけ使用する
何Cは私たちを与えます。
私もここに行く、と私だ 上か下に置くが、私は可能性がよ
ちょうどそれがアルファベット順に保つ 物事が整然と維持する。
私は、cs50.hを含めるつもりです にあらかじめインストールされている
CS50アプライアンス上のあなた。
そしてそれは人であっても、オープンソースなので、 インターネット上で自分でそれを使用することができます
自分のコンピュータ。
しかし、それはCS50アプライアンスが付属しています。
>> だから今私は戻って、再コンパイルしてみましょう これでこんにちは1作る。
畜生。
まだ別のエラー。
しかし、私が最初までスクロールしてみましょう。
こちらは、少し複雑です。
マルチ文字文字定数。
それは私を助けていない。
しかし、通知は、Clangのは、少なくとも少しです それによって少しと、少しまとも
緑色のキャレット記号は、それが言っている 私はめちゃくちゃ場所ここにある。
なぜそれがその少しが、指している 次の単一引用符に緑色の矢印、
私の名前に？
>> だから、これはあなただけのものの一つです あなたがしてきた場合は特に、慣れる
Pythonの、またはJavaScriptでのプログラミング、 または他の言語どここの詳細
関係ありません。
C言語では、それは重要ではありません。
あなたは文字列を宣言している場合、これはです 0個以上の文字の並び、
実際には二重引用符を使用する必要があります。
だから私は、実際にこのバックを変更する必要があります 見積もりを開くために、と、引用を閉じ
二重引用符。
単一引用符は、その場所を持っているが、 あなたは、個々の使用している場合にのみ
その別の時間に文字が、より多くの。
今のところ、二重引用符 必要です。
>> だから今、私は私の端末に戻りましょう 窓、こんにちは1作る。
と自信を持って誰ですか？
このプログラムは、今起こっている 正しくコンパイルするには？
OK。
だから私たちの3人はこのことを考えています。
わかりました。
入力します。
そしてそれは実際にやった。
だからエラーが今回も、ありません このプログラムは、ビットを得ているものの
より複雑。
私は今ドットスラッシュこんにちは1を行う場合、入力 それを言うために起こっている "こんにちは、デヴィッド。"
>> しかしみましょう第三の反復を行う これは、ここで
プログラムは本当にダイナミックです。
私が先に行くと、ファイルを変更してみましょう だけとの整合性のために名前、
あなたが利用できる必要がありますファイル その後オンラインであなたに。
入力します。
そして今、私はではなく、行くつもりです ハードコーディングされて、ここで "デビッド"を格納します。
私は非常に単純に何ができ このプログラムを改善する？
>> 私は、GetStringメソッドを呼び出すことができます。
それは少し非自明何かもしれない 起こることについては、私は行くよ
実際には別のライン、printf関数を追加する とだけ、名、コロン、近い引用を言う
ユーザにプロンプ​​トを与えるために 画面上で。
そして今、私はここに行くつもりだ、と私はよ 私のキーボードショートカットを使用するつもり。
私は、上に行くと、変更するつもりだ こんにちは2〜1こんにちは、入力します。
そしてありがたいことに、私は進歩しています。
>> そして今、私は行くつもりです ドットスラッシュこんにちはへと
2には、次のように入力することに変更。
そして今、私のプログラム -
私にズームインよ - なっている 少しきれい。
名前はのは、ロブを言わせて、あることを行っている 今回は、、こんにちは、ロブを入力してください。
我々は再びそれを行うことができます。
名前、ローレンは、入力します。
名前、ヨセフは、入力します。
名前、のがために試してみましょう 難しい、入力します。
ええ。
それは本当にバグではありません。
だから、ほんの少し醜いです。
だから多分私達はこの問題を解決することができ 将来的には、今ではない。
>> しかし、どのように本能的にあなたでしょう アドレッシング取り掛かる
その特定の挑戦？
それはちょうど愚かに見えます。
どのようなことを避けるか 愚か探しですか？
だから我々は行うことができ、[OK]を、私はカップルを聞いた 物事の、条件とループ。
我々はチェックするために、、、の条件をいずれかを使用することができ 文字列の長さは何ですか
ユーザーは私たちを与えた？
そして、それが0だと、それだけで、引用終わりを引用だ 彼らはその後、Enterキーを打つ
多分私は彼らに叫ぶべき そしてそれらを再度促す。
しかし、どのようにそれらを再度促すのですか？
まあ、私はまた、ループを聞いて、私は可能性 何度も何度も何度もそれを行うこと
同じことをユーザーに促す。
>> さて、もう一つの例を実行してみましょう 別のを使用して
CS50ライブラリ内の関数。
私は、このファイルを閉じてみましょう。
私は新しいものを作成してみましょう。
そして、私はちょうどので、それはadder.c呼ぶことにします それは、単純な計算を行うのは簡単です
これは完全になるにもかかわらず あなたは何ができるかとがっかり
現代の任意のコンピュータで。
>> しかし、今私が先に行かせてと -
私は最後の時間私の教訓を学んだ - 含む cs50.h、インクルードstdio.hに、int型
メインボイド、今のところ、私はちょうどよ 盲目の信仰を取るが、我々は仮定します
何を理解すること 前に長いことを意味します。
そして、私は何かを言うつもりです のように "私にはintを与える。"
>> そして今、どのように私はint型を得るのですか？
私は最終的に変数を宣言したい int型のxと呼ばれる
その中にユーザーからの整数を格納します。
だから一口でした。
誰かが提案したい場合、どのように 私はXと呼ばれる整数を宣言するのですか？
int型X。
>> だからそれは本当に簡単です。
私にint型を与える。
それX呼ぶ。
今私は、代入演算子を使用しています。
そして、どのように私はから保存か ユーザーの値を左？
私は、GetStringメソッドをコールする必要はありません 当然、むしろ場合、getInt。
引数？
いいえ。
だから、括弧、近く括弧開いている 直ちに、次いで
セミコロンは、行を終了します。
>> 今私は再びこれを行うことができます。
私に別のint型を与える。
今回は私がintやる、みましょう それY呼び出す場合、getIntに等しい。
そして今、私は超シンプルな何かをしてみましょう いくつかの数学のような。
だからprintfは、％d個の合計です int型のプレースホルダ。
と％dは、期間、バックスラッシュnを。
>> わかりました。
だから、実際には数学ではありません。
しかし、私はこれの合計を言いたい場合 値を加えた、この値は、これを等しく
他の値は、どのように多くの引数に 合計は、私は、printfを与えるべきである
最終的には？
4だから、右？
この文字列は、次に三つの値。
xが最初であるので、私はなりたい ％dと最初にプラグイン。
yは次のことを行っている。
>> そして今、私は一種の言いたい Zが、zは存在しません。
しかし、それは大したことではありません。
なぜならあなたは、本能的に何をしますか あなたは持っていた場合は特に
グラフ電卓、あなたは何を入力するのですか？
どのようにXプラスYはどうでしょうか？
だから、実際の変数ではありません。
それは、ちょうど2つの合計です 他の変数。
そして、それは完全に合法です。
Cは確かに簡単な理解 このような算術。
>> セミコロンは、保存してください。
今私はここでダウンして手放すと 加算を行う入力し、入力します。
エラーなし、あまりにも進歩だそう。
加算を入力します。
また、別のキーボードショートカット、 あなたが退屈し始めた場合
- すべてのコマンドと
は、ドットのように、コマンドを入力して起動した場合 広告を大幅に削減し、どこにあなたのことです
退屈は、あなたが普段打つことができ、中キック タブには、コンピュータが終了しているため
あなたのためのフレーズの残りの部分、それがない場合 あいまいな何が広告の後に来る必要があります。
>> だから今、私は先に行かせて そしてあなたは[Enter]をクリックします。
私にint型、1、2を与え、 ありがたいことに、それは3だ。
しかし、いつものように、プログラムをテストする に減らすべきではありません
一度だけ、それをしようとしています。
私は負のようなコーナーケースを試してみましょう 1、私に1を与え、もの
同様にチェックアウトします。
そして、私はおそらくいくつかの詳細をやってみたい 厳密なテストが、私は可愛いよ
それはATの場所で快適。
>> さて、今のは、別のプログラムを試してみましょう この時間は、使用していること
その他の構文のビット。
私は、新しいファイルを作成してみましょう。
私はラインにこのconditions0.cを呼ぶことにします までいくつかのサンプルコードをオンラインで。
そして、私が先に行くとやらせる 含む、cs50.hを含める
メイン空間でstdio.hに、 -
OK。
そうしよう。
私たちは、当社の標準定型を持っている。
>> そして、今回は私が、printfを言うつもりです だけに "私はint型、お願いをしたいのです"
プロンプトを少し作る もっと優しい。
そして今、私は取得したい ユーザーからint型。
私はちょうど、そのnのこの時間を呼び出すつもりだ nは数字のように聞こえるので。
場合、getInt、そして今、何をすべきか 私はそれで何をしたい？
さて、nがあれば - と、私は、ズームインします -
nが0より大きい場合、Iが欲しい 次のことを行うには -
printfの "あなたは正の数を選んだ。" そうでなければ、私はあなたは "printfを入力するつもりです
負を選んだ
数。 "すべての権利。
このプログラムでは、だから、私はそれをしなかったにもかかわらず、 速く、右構文的に見えます。
私はこれを試してみましょう。
条件0を作る。
実行するように思われる。
状態0、入力します。
のはそれを50の整数を与えてみましょう。
私は、正の数を選んだ。
のは再びそれを試してみましょう。
コンディション0。
50負。
私は負の数を選んだ。
>> しかし、今、我々はしておこうか私が選択できるよう 以上でコーナーケース、呼び出し
あなたが考えることは興味深いケース あなたにいくつかのトラブル、0を与えるかもしれない。
さて、私はこれがの一つであるかなり確信している ゼロであるそれらのコーナーケース
正でも負でもないので、私の プログラム、構文にかかわらず
正しい - それはコンパイルし、それを実行する - 論理的に正しくありません。
私がしたい場合はそう単純では修正はここで何 私がnを処理したい場合は、検出する
別々に0に等しい？
>> nは0に等しいのであれば、私は言いたい printfのようなものが "あなたは0を選んだ。"
私は今、これを試してみましょう。
明確に、私はここに戻って行ってみよう 私の窓、再コンパイル。
フム。
一つのエラーが生成されます。
しかし、私はあなたがチェックしたい nが0に等しい場合。
>> だからもう一度、別の愚かなこと 慣れるために、等号は
代入演算子。
だから、これは、実際にその中に間違いです 技術的には、たとえコンパイラ
我々は、自分から私を保護したい 技術的にはn個に0をコピーすることが、どの
私が欲しいものではありません。
私は平等のためにテストしたい とに等しい等しい。
そしてそれは今かもしれない 私のよりよい解決策。
>> 私は実際に、言う、としてこれを保存し直してみましょう 条件1、新しく改良すべき。
だから今私はこれをコンパイルする場合、 それが条件になるだろう -
おっと - 条件1ドットスラッシュを作る 条件1、入力し、 "私は、int型をしたい、
お願いします "私は行くつもりです 先に、50を入力します。
それはまだ良いことだ。
50負、まだ良い。
0、それは、実際に、検出された 私は0を選んだこと。
>> だから私は今、これでもっと何ができるのでしょうか？
さて、私たちは確かにますます行うことができます 複雑な物事。
しかし、私が提案したいのはです 我々はここで、このノートに終了すること。
我々はこれをプルアップした場合は、おそらく、わかります 君の好きな漫画
あなた次第では可能性がある今日まで 理解したことはなかった。
そして、それは笑いの質についてです あなたは、CSのジョークを取得する必要があります。
だから、約そうですね。
>> しかし、もっと説得力、私はしようと思いました 問い合わせ月曜日少しティーザーを与える。
だから我々は、整数を使用して開始しました。
私たちは、山車と呼ばた。
私たちも、ダブルスの呼びましたが、 その、もう一度、あなたの番号を与える
小数点の後。
>> しかし、それは浮かぶ、その判明 ダブルス、そして、実際には、コンピュータ、
根本的に、表現することはできません 正確にいくつかの値。
あなたができることを我々は数学のクラスから知っている 後の数字は任意の数を有する
小数点。
あなたも縦棒を置くことができます これらは永遠に行くと言っています。
>> 残念なことに、あなたは本当にできません コンピュータにそれを行う。
そしてコーナーケースが発生します。
たとえば、あなたがしていると仮定 金融の何かをする。
あなたは数学をやっている 割合とし、
ドルとセントで。
そして、それらのセントはしないでください ラインを必ずしも。
まあ、それはの端数が判明 ペニーは時まで追加を開始することができます
コンピュータシステムでモデル化 その巧妙な方法で
人間が利用することができます。
>> そして、私は、と思い見ていない人の あなたの30秒のティーザーを与えたい
オフィススペースとして知られている素晴らしい映画、 の絵をペイントされる
私たちが取り組むものと問題 月曜日の最初のもの。
私たちは、音量を上げることができれば 少し、私はあなたに30を与える
オフィススペースの秒。
>> [ビデオの再生]
>> 私は、意味、あなたには、表示されていない まで、あなたの仕事を維持するために取得します。
>> - 実際に、私が推進されています。
>> ·私は思いますウイルスをプログラム可能性 ビッグオフ時間その場所をリッピング。
>> - まあ、それはどのように動作しますか？
>> 銀行取引があり、毎回 関心が計算され、そこにされている
何千もの日ですが、コンピュータが終了 セントのこれらの画分でアップ。
>> - しかし、私はするつもりはない 違法何でもする。
>> - 不正な？
サミールは、これはアメリカである。
>> - 我々は神に誓ってしなければならない。
>> - 場合は、誰もこのことについて知っていない しかし、私たち、大丈夫？
いいえ家族ない、ない ガールフレンド、誰も。
>> ·コース。
>> 合意された。
>> を短絡、男。
私はどちらか誰にも教えてくれません。
>> [ENDビデオ再生]
>> DAVIDマラン：だから、これは、その後、CS50ですが、 それはオフィススペースであり、それはすべての意志
月曜日に意味をなす。
次にお会いしましょう​​。
>> ナレーター：次のCS50で、ロブ オフであることに調整
ハーバード食事プラン。