>> ROB：すべての権利。
最初のセクションにようこそ。
私はロブだ。
>> ジョセフ：私はジョセフです。
>> ROB：だから我々は正しいインチ飛び込むよ
話を最初にすること アプライアンスです。
ので、うまくいけば、あなたのほとんどが持っている すでにそれをダウンロードしました。
しかし、あなたは説明書を見ることができます cs50.net/applianceで。
神ああ、今私は自意識だ。
私はまだそれを聞く。
>> JOSEPH：うわー、それはのように聞こえる それは混乱です。
>> ROB：だから何人かの人々が抱えている これで問題は、そうなるまで待っていない
に設定し、問題の最後の分 試してみて、アプライアンスを解決し、
それが動作していないかを判断するための。
>> JOSEPH：そして何かが動作していない場合は、 そしてあなたがに行くことができ、助けを必要とする
cs50.net/discussionたち あなたのフォーラムを持っている
あなたの質問を投稿することができます。
そして、我々は最終的に彼らに取得します。
>> ROB：すべての権利。
だから、これはどのようなアプライアンスです のように見えます。
繰り返しますが、それだけで完全に分離します オペレーティングシステムは、内で実行されている
どのようなオペレーティングシステムの使用 あなたのラップトップ上で実行されている。
そして、あなたであろう主な対象 使用しているgeditのです。
だから、うまくいけば、これはすでに おなじみのサイトに。
ターミナル。
>> そして、あなたはまたChromeを実行することができます アプライアンス内。
人々のカップルがあった インターネットを報告している人
アプライアンスでは動作しません。
そのうちのいくつかは、単に仮定しています があると想定されていないことを
アプライアンスでのインターネット。
しかし、はい、そこに想定されている インターネットであると。
>> 私は今それを言うだろうが、それはしていません 本当に何を意味している。
インターネットは機能していない場合は、 これはあなたが必要とする傾向があるものです
それを修正するために実行する。
あなたは、インターネット上の問題がある場合は、しないで それを覚えて、それを上に掲示
議論し、我々はそれを実行する、と言うでしょう。
しかし、インターネットが機能する必要があります。
>> だから、唯一の他の事 - ええ、何もしない それ以外は本当に関連しています。
しかし、私はちょうどそれを指摘したかった -
この右下隅に表示されます。
だからあなたの電気器具の各々がすべき IPアドレスを持っている。
そして、後学期は、このIP アドレスは、より関連性の高いになるとき
あなたは、ウェブP-セットで作業しているので、 あなたがアクセスできるようになります
ウェブサイトあなたから取り組んでいる このIPアドレスを使用して、ローカルクローム。
>> しかし、私がIPアドレスを使用するようにしたい のための - そしてあなたがこれを行う必要はありません、私は
それを指摘しておきたい -
ここにある。
だから、これは上のターミナルウィンドウで 私のMacは、これがされていない
すべてのアプライアンス。
そして、あなたは何を調べることができます このコマンドはありません。
しかし、私は直接、SSHに行くよ 私のアプライアンスに。
私はIPが何であるかを知らない。
>> JOSEPH：168 -
>> 168.224.1.0。
>> ロブ：だから一度、私は終わりだ これで、ログインします。
今、基本的に、これは同じである 私のアプライアンス内でターミナルウィンドウ。
だから私はかなり、実際に働いたことはない アプライアンス自体から。
私はいつもそれが起動してい 最小化され、バックグラウンドで
そしてその中にSSHed。
>> これの問題はあなたが進んでいないさ 簡単にgeditのを使用できるようにするには
直接から。
しかし、あなたは本当の、クールになりたい場合は、 ハッカーは、その後、に慣れる必要があります
とにかく、コマンドラインのテキストエディタ。
VimとEmacsやナノ、これらのすべては、そう 別の代替法である。
ナノは最も簡単になる傾向がある。
そして私はそれがありませんがあると思う シンタックスハイライ​​ト。
ああ、いや、それは完全に行います。
だから、nanoを使用することができますので、 1は非常に簡単だという。
>> あなたはすべてのこれらのコマンドを参照してください。 一番下にある。
この小さなニンジンシンボル。
あなたが前にそれを見ていない場合は、よ おそらく今はたくさん参照してください。
これは、一般的に制御ニンジンを意味し、 キーボードの左下のような
制御文字。
だからここでは、ここで私を言っている -
私はズームインした場合ああ、それは切断されていないだ
ように制御、Xはどのように 私は終了するつもりです。
そして、それは私がYを打つことができると言う はい、保存するための、N番のため
だからnanoの。
>> VimとEmacsは少しになりがち 複雑で圧倒的。
しかし、あなたはそれに慣れることができ、 そして、あなたはそれを好きになる。
だから、それだ。
>> JOSEPH：それをする必要はありません。
>> ROB：うん。
あなたが探してgeditを自由に使用できます 学期の残りの部分。
したがって、すべてのアプライアンス関連の質問？
または、他に何上の任意の考えを持っています 約について話される必要がある
アプライアンス？
はい。
>> スピーカ1：あなたにSSHed 事、パスワードクリムゾンでしたか？
>> ROB：うん。
ほとんどすべてのパスワード アプライアンスに起こっている
クリムゾンされるように。
>> スピーカー2：本物のIDEのようにインストールします アプライアンス上で、それが動作します？
>> ロブ：私は、Eclipseを持っている想像して Fedoraのバージョン、その場合には、はい、
あなたはそれを行うことができます。
それはおそらく、それは本当に価値がない。
>> スピーカー2：わかりました。
だから、おそらく私がしたい場合は簡単だ Eclipseを使用して、ネイティブのを使用し、
その後にアップロードする -
>> ROB：ああ、それはまた、おそらく簡単です。
しかし、あなたはそれを動かすことができるでしょう アプライアンス内。
>> JOSEPH：とカメラのための質問 あなたが別のものをインストールすることができ、た
アプライアンスの内部のIDE？
>> ROB：Eclipseがあること IDEの一例。
他のアプライアンスの質問？
わかりました。
>> だから我々は現在、コマンドラインに移ります インターフェイス関連のものなので、CLI。
そして再び、私はちょうどで動作するように行くよ ここで、これは同じであるため、
ターミナルウィンドウで作業 アプライアンス内。
どのようにそのフォントを探している？
それは十分な大きさ？
わかりました。
>> だからコマンドがたくさんあり​​ます あなたはかなりに慣れる必要があります
学期を通して。
ナビゲートするための大きな2はLS、リストである このディレクトリ内のファイル、および
CD、そのディレクトリを変更する。
だから私は、デスクトップに移動して、することができます 非常に一般的なパターンはにCDである
ディレクトリとすぐにLS ディレクトリ内のものだ。
>> 人々はまた、時々気づいていません そのタブ補完はものです。
そうのようなCD、VH、その後、私はTabキーを押してください。
私は入力することはほとんどない 全体のこと。
そして私はタブを打つ続ければ もう一度、それは自動的によ
私のためのリストを開始します。
だから私は、CDのバーチャルホスト、ローカルホストすることができます。
そして、それはただになるだろう -
ケースでは、言葉を聞いたことがない 以前は、ディレクトリはちょうど別の単語である
フォルダの。
だから今は、表示された場合 -
それでは一番上にそれを持ってみましょう。
>> だから今、あなたは、括弧内に表示された場合 少しチルダ、スラッシュ、バーチャルホストを参照してください。
スラッシュ、ローカルホスト。
そうチルダ、すなわち指す 私のホームディレクトリにコピーします。
それはあなたがしているディレクトリです あなたはインチSSH時点の
それはあなたがときにいるディレクトリの あなたは、ターミナルを開きます。
作業を開始する場所、それはね。
だから私は自分のホームディレクトリの中だけど、 と私は、仮想ホストの内部でよ
私のホームディレクトリのディレクトリの内部。
そして私は地元の中だ その内のディレクトリをホストします。
>> だから、CDを使用して他のいくつかの有用なもの -
またはよく、一般的には、そのように常にドット 現在のディレクトリを表します。
CDには、ドットはかなり価値のないコマンドです。
しかし、それはへの変更だ 現在のディレクトリ。
の面で、より有用な1 CDは、ドット、ドット、です
ただ1つ上のディレクトリに移動します。
>> そして、これらのことに注意してください -
私は別名を言いたいが、これらの 記号、ドット、ドット、ドット、これらの作業
あなたがしているほとんどすべてのコマンドの 実行していることを考えされる予定。
あなたができるでしょうどこにそうようなCDはおそらくです ほとんどを使用して、これらはありません
ちょうどCDが理解して物事。
これはかなりのものにあなたの全体の コマンドラインは理解しています。
プログラムの多くは理解して ドットとドットドット。
>> だから、他の有用なもの - CD、ダッシュ。
だから私を持参しようとしている 私が入った最後のディレクトリ
だから、時々私のようなものをするつもりだ、 ああ、私はここで働いています。
そして、私は何かといくつかのエラーが表示され、 私はに行くことによって、それを調査しに行くよ
どこかにいくつかのランダムなディレクトリ。
それがいただければと、私は知らない そこにさせて頂いております。
それがします。
だから、私は私が好きなことを行う このディレクトリに。
何とか、何とか、何とか、何とか、何とか。
そして、私は私が望む、すべての権利、のようだった 前に私があった場所に戻ります。
CD、ダッシュ、そしてそれはすぐに戻って私をもたらします。
>> だから私は多くのことをスローするつもりだ 今日あなたにこれらの。
私はあなたが覚えることを期待しないでください それらのすべて。
それはちょっとだけ知っているのは 彼らは存在していること。
し、後であなたが似ているときに、 うーん、私はに戻りたい
私はちょうどにいたディレクトリが、ああ、、待って そのような何かが存在する。
あなただけで入力する必要はありません もう一度ディレクトリ全体。
>> JOSEPH：最終的にはあなただけでしょう 何度も何度もそれらを使用し、
それは筋肉の記憶になるでしょう。
>> ROB：うん。
私が前に言ったので、どのように、そのチルダ 自分のホームディレクトリです。
だから私は、CD、チルダができます。
しかし、私もする必要はありません もし私がそれを行う -
私は戻っているディレクトリに移動します それは無意味例ではありません。
私はCDをやるなら、それもだ と同じ、私のホームディレクトリに移動します。
私は、コマンド、K.を行う
>> JOSEPH：また、クリアタイプすることができます 言葉、それは、それをクリアする必要があります。
>> ROB：そして、私は、コントロールを考えて、 Lもそれをしない。
異なる方法でそのようにたくさん。
私はいくつかの違いがあると思いますどこに 明確かつ制御、Lのものだ
本当に一番上にプッシュし、 私はまだ戻ってスクロールすることができます。
コマンド、Kは文字通り破壊 すべてのもの、そしてあなた
までスクロールバックができません。
少なくとも、それはです それはiTerm2でどのように機能するか。
私はどのように他のことを知らない -
オハイオ州。
>> SSHingと、Windows上でいるのであれば あなたはPuTTYをダウンロードする必要があるとしている
SSHには、Windowsにはないので、 内蔵のSSHのツールのように持っている。
直接のMacから、次のことができますだけで、SSH ターミナルウィンドウから。
[OK]をクリックします。
質問？
>> LSは、その何かがに慣れる これらのコマンドのほとんどがあると -
まあ、私はちょうど1をするつもりだ。
LS、ダッシュ、L。
そうダッシュ、Lは、我々が行っているものです LSにフラグを呼び出します。
これらのコマンドの多くは、フラグを持っている あなたが彼らに渡すことができます。
したがって、この場合には、lはフラグダッシュ それは私に完全なを与えるためにそれを伝えます
すべての情報の一覧 これらのファイルの。
>> だから我々はデスクトップがあったことをここに見る 12時54時7月30日に修正された。
ダウンロードは、9月6日に変更されました。
これらは、現在のサイズであり、 これらのディレクトリのバイト。
あなたが理解する必要はありません このすべて。
>> 左のこのようなものは、これらdrwx年代、 それははるかに関係してきます
後であなたがに対処しなければならないとき -
つまり、アクセス権を持っている人に関係しています これらのファイルを見ること。
だから、あなたは上のユーザーだけではなかった場合は、 このコンピュータは、次のことができるようになります
たとえば、[OK]を、私は1つだけでなければなりません このファイルを見ることができたりアイム
誰もができるようにする予定 このファイルをご覧になる。
だから、私のコンピュータ上で他の誰か このファイルを見ることができます。
私もこれは何か分からない - これは何をするのでしょうか？
>> JOSEPH：私は実際、非常に分かりません。
>> ROB：いいえアイデア。
>> JOSEPH：あなたが知らないなら、存在し あなたが使用できる便利コマンド
出力が何を意味するのかを教えてくれます。
そして、あなたは男に入力した場合 コマンドの前に -
これM-A-N。 ROB：男。
だから、男は別の1つです それは非常に便利です。
そして男は、LS。
だから、manページ、それらは両方とも持っている あなたが使うことになるだろうなコマンド
コマンドラインで、彼らはまた、持っている 関連性があるでしょう機能
あなたは男ができるのでCと -
と私は3を無視していました。
しかし、男3のprintfは持参しようとしている printf関数のCバージョンアップする。
私は男のprintfを行う場合しかし、これは コマンドのprintfを起動しようとして
つまり、コマンドラインで実行されます。
>> だから男、LS。
manページはかなりすることができます 圧倒的。
ここでは、しかし、あなたはこのリストが表示されます これらのフラグの全てのLS
理解しています。
だから我々は、Lをダッシュ​​に行けば、と -
私はあなたにこれを投げるつもりです。
しかし、検索するために、あなたが欲しい 最初の質問にヒットする
マークまたはスラッシュボタンを押します。
そうスラッシュ。
>> そして私は検索することができます 私が好きなため。
だから私はダッシュ、Lスラッシュするつもりです。
そしてそこにそれがあった。
だから、長いリスト形式を使用します。
それは私が何を把握助けにはならない その特定の列には、意味が、私
ここのどこかに想定し それはそれを説明するであろう。
だから、任意のコマンドのmanページを使用 あなたはすぐに理解していないこと。
>> 私は、あなたが男性でも、男はかなり確信している。
オンラインへのインタフェース リファレンスマニュアル。
ああ、多分少しの1の最後の1 関連しているLSは、ダッシュ、。
私はLSを行うのであれば気づく、 私は、これらの5つのファイルを取得します。
私はLSを行う場合、ダッシュ、私 より多くのファイルを取得します。
すべてのこれらの間の共通点が事 新しいファイルは、事前にドットである。
>> そう規則は、そのファイル、その ドットが隠されていることから始まります。
だから、あなたは、そのファイルを表示したくない でそれを台無しにしたくない
あなたのディレクトリのリスト。
それはあなたが明示的に尋ねたときのみですが、 すべての権利、LS、ダッシュ、、私を見る。
Aは、すべてのファイルを表し、 隠されたものを含む。
ので、いくつかの他のコマンド。
ああ、その点での質問？
はい。
>> スピーカ3：あなたがLSを行うと、 、ドット、ドットは何ですか？
>> ROB：ああ。
だから、これは私が話していたものです。
それは同じことだところ 私は、CD、ドット、ドットが好きなことができます。
したがって、厳密に、ドットとドット、ドットがある 一つ一つの中に存在するファイル
dotファイルが参照ディレクトリ 現在のディレクトリにコピーします。
だから私のCD、ドット、私は行くよ場合 ディレクトリ内に滞在する。
ドット、ドットは、常に指し 前のディレクトリ1レベルアップする。
だから私は、ログとLSに行けば、ダッシュ、AL、 私はドット、ドットが表示されます。ドットにCD、ドット
前のディレクトリに私をもたらします。
うん。
[OK]をクリックします。
>> だから、別のかなり重要な コマンドはRMです。
だから、我々が行っているものです 除去するために使用する。
そして、私は実際に別のものをやらせる コマンド最初。
そうします。mkdir。
MKDIRはどのようにあなたができる ディレクトリを作成します。
そして、私は一時ディレクトリを作成します その一時ディレクトリに移動します。
予想通り、それは空です。
しかし、私LS、ダッシュ、、私はまだドットがある場合 ドットを参照するので、ドット、ドット
現在のディレクトリ。
ドット、ドットが指し 前のディレクトリ。
そして、それらは関係なく、常に存在することになる あなたはインチであるディレクトリ
>> そして、これは完全に不必要である コマンドが、タッチ。
それだから私は、それを使用しています ファイルを作成する簡単な方法。
だから、Bに触れる、タッチタッチCだけです と呼ばれる3つのファイルを作成しようとして、
完全に空であるa、b、およびc。
だから私のポイントはのものを作成する 最初の場所は、RMがあるだけのようにある
どのように我々はそれらを削除することができます。
そうRM、。
それは、削除、私に尋ねるために起こっている 定期的に空のファイルA？
そして私はそう言うでしょう。
>> 私は確かに知っているので、もし私がしたいこと しなくても、そのファイルを消去
プロンプトが表示され、定期的に空のファイルを削除？、 その後、RM、ダッシュ、Fがあることを行っている
せずに削除を強制する、と言う旗 でも、私を促し、ああ、あなたは
必ず、ファイルを削除しますか？
はい、私は確信しています。
そうRM、ダッシュ、FBだけでしょう 求めずにそれを行う。
>> それでは、いくつかの複数のディレクトリを作成してみましょう。
します。mkdir、TMP2、CD、TMP2、 タッチBをタッチします。
[OK]をクリックします。
だから今、私は削除したい ディレクトリとしてTMP2。
そうRM TMP2。
あなたがTMP2を削除することはできません、 それがディレクトリである。
だから、ここでの問題は、RMがないということです すぐにディレクトリに取り組む。
それが唯一のようなファイルのためのものだ 非ディレクトリファイル。
>> そして私たちは何ができる ここRM、ダッシュ、rは。
つまり、再帰を表し、その可能性がある まだあなたに何も意味しない。
しかし、あなたは再帰に到達したとき、 それはより多くのことを意味します。
そうRM、ダッシュ、R、TMP2をしようとしている 再帰的にそのディレクトリに移動します。
だから、ディレクトリTMP2に降り？
はい、それでは、その中に行きましょう。
私たちは/ TMP2を削除しますか？
はい。
我々はTMP2 / Bを削除しますか？
はい。
今、私たちは削除しますか ディレクトリTMP2？
はい。
だから今のディレクトリ 内部のすべて
それを削除されています。
>> コマンドは、技術的にはありませRMDIR あなたが削除するために使用できる
ディレクトリが、それだけの作品 とにかく空のディレクトリに。
そして、それを見て、みましょうだけ もう一度ます。mkdir、TMP2を行う。
TMP2は、タッチします。
[OK]をクリックします。
私はdirtmp2を削除しようとするのであれば、それはよ ディレクトリは空ではない、と言う。
だから私は、removeを使用しないほとんど決して dirコマンドとにかく、RM、ダッシュ理由
R空のディレクトリで動作します 非空のディレクトリ。
>> そしてまた、私はしたくない場合は、 の全体のプロセスを経る
ディレクトリに下降し、 個々のファイルを削除、RM、
ダッシュ、RF、TMP2。
そして今、それがなくなって。
>> 注意して何か 約RM、ダッシュ、Rfはある。
と言っても、それを入力するために私を恐怖、 なぜならもし私が誤っ
入力するか、何かにヒット。
そうRM、ダッシュ、RF、チルダだろうことなく、 私を促す、Fは求められません
私は、自動的に削除されます 私の全体のホームディレクトリと
その中にすべてのもの。
だから、それはだと思うかもしれません 行うには愚かなこと。
とまあ、それはある。
>> しかし、それはによって非常に簡単に発生することがあります 事故と言う、私が削除したい場合など
私のスラッシュ、バーチャルホストディレクトリ。
そして、ちょうど素早くタイピングにおいて、 私は誤ってこれを行う。
つまり、両方の私の再帰的削除します ホームディレクトリとバーチャルホストのディレクトリ
それだけで、この特定のディレクトリにある 今は存在しないために発生します。
しかし、これはまだ削除だろう 私の全体のホームディレクトリ。
少なくともFを持っていないことにより、 それは最初に私を促すだろう。
と私は、いや、ああ、のようになるだろう これを行うにはしたくない。
しかし、人々は、次のような、スラッシュ 私はに取得する傾向がある
常にRF-INGの習慣。
その私ができたとしても、通常のファイルだけRM、 Cは、私はちょうど、RM、ダッシュ、RF、C傾向にある。
あなたはRF-INGいるときだけは注意してください。
>> スピーカ4：Cは何をしますか？
>> ROB I：CはCファイルについて話されている このディレクトリには、そのRM、C。
>> JOSEPH：そして、もっと危険な、あなたが使用している場合 星は、それが中にすべてのものを指し、
ディレクトリ。
それでは、私は一般的に行う傾向は、私は意志である ディレクトリに移動して、私がしたい
そこにすべてのファイルを削除します。
そうRM、ダッシュ、RF、スター。
>> ROB：うん。
RM、ダッシュ、RF、スター。
>> JOSEPH：そして、あなたが気をつけていないのであれば あなたがにいるどのディレクトリ -
私は一時ではありませんでしたが、私が誤っていた 私のホームディレクトリに、
その後、私はすべてを削除します 私のホームディレクトリにある。
そして、私は実際にその前に行われ、き 私はあなたが前にこれをやったと思いますか
ジェイは前にそれを行っている。
>> ROB：私は誤って削除した -
そのビットに対してそのコマンドを無視します。
>> JOSEPH：楽しいわけではありません。
>> ロブ：だからスラッシュbinディレクトリにある そこよバイナリファイルの束
打ち鳴らすなどの使い慣れたものであっても。
さて、打ち鳴らすと、基本的に、これらのすべて 私は、コマンドで実行しているもの
行は、このスラッシュのbinディレクトリにあります。
>> ジョセフ：LSのように、ここにある。
>> ROB：だからLSは、スラッシュ、ドットになる このディレクトリを一覧表示する。
>> JOSEPH：Rmがこのディレクトリにもあります。
>> ROB：私は誤って、RM、RF-EDビンを持っている、 私ができる任意のコマンドを削除した
おそらく今までにしたい。
その、私はちょうど再インストール その点で、新しいアプライアンス。
>> JOSEPH：だからときに非常に注意してください このコマンドを使用します。
>> 観客：[聞こえない]？
>> ROB：はい。
それはまたに入るために悪い癖だ。
あなたが気付いた場合、私は今だ -
さて、あなたは気づくことはできませんが、 私のズームアップ多分できる。
だから私は今、ルート@アプライアンスです。
そうjharvardは私たちが望むユーザーです あなたはいつも使用しているように。
ルートは、権限を持つユーザーである 絶対に何もする。
>> 私はjharvardいる時だから、気づく 私はCDにしようと -
そのディレクトリは何ですか？
ああ、根は良い例です。
だからCD、根。
アクセスが拒否されました。
ので、我々はこの物件を見れば -
そして再び、あなたがする必要はありません 完全にこのことを理解しています。
しかし、これらの3つのダッシュが言っている 他のを聞かせていないこと
このディレクトリにユーザー。
およびディレクトリが、たまたま rootユーザが所有する。
>> だから、私は事実をjharvardなし 根が入ることを許可されていません1
このディレクトリは、それは私がすることを意味 ときに私の許可を拒否された取得するつもり
その中に、CDにしてみてください。
私はルートだとき、私はする許可を持っている を含め、絶対に何もし
重要なファイルを削除する アプライアンスにと
全体の事を破壊する。
>> だから、入るために悪い癖だ ちょうどあなたの周り徘徊
rootとして、オペレーティング·システム。
私はとにかくそれを行う。
質問？
そして、私は、根を終了jharvardとして滞在します。
[OK]をクリックします。
>> より多くの関連するコマンド。
だから私たちのTEMPに戻って、 mvコマンドは、移動の略です。
あなたが移動することができます。
今、私たちは、Bにそれを呼びたい だから今、それをBと呼ばれています。
それとも、我々は移動したい B 1ディレクトリをバックアップします。
だから今、このディレクトリの空。
私は戻って私のホームディレクトリに移動し、よ ので、我々は、Bはここにあることを参照してください。
ホームディレクトリは、最大で1ディレクトリだった Bはインチだったディレクトリ
>> CPもあります。
そうCPは、スーパーセクションをコピー ドット、テキスト。
私はS、ドット、テキストそれを呼び出すことができます。
今、私たちは両方のスーパーセクションがあり、 ドット、テキスト、およびS、ドット、テキスト。
また、これは、ディレクトリ上で動作します。
私は、単一のファイルを-EDのRF。
そうCP -
さて、最初のは、CP、TMP、TMP2を試してみましょう。
だから、ディレクトリTMPを省略すること。
RMに非常に似て、デフォルトの動作 ディレクトリでは動作しないことです。
>> そして再び、RMと同様に、デフォルト 行動 - まあ、それは動作するようになって
ディレクトリと、ダッシュ-Rが先にあります。
だから、再帰的にTEMPをコピー TMP2にディレクトリ。
だから今、私たちは、TMPおよびTMP2の両方を持っている それは、その便利されていないため、TMP
最初の場所で空だった。
TMP2。
>> それでは、TMP2にTMPをコピーしてみましょう。
そして、我々はTMP2は、ファイルを持っていることを参照してください。 なぜなら、ディレクトリ、および
その内部のすべてのもの ディレクトリはコピーされました。
そして、それは多少役立ちます 、あなたが作業していると言えば
問題に1を設定 -
または実際に、後で問題セットがあります さらに重要な存在理由
がっつりとなります ファイルや物事の。
>> しかし、あなただけの分割のためにしたい 第二に、あなたは大丈夫、のようにしている、私は今
別の何かをしようとするつもり。
私はちょうど私の全体PSET1をコピーしてみましょう PSET1バックアップしたディレクトリので、もし
私は私ができる、物事を台無しにしてしまう 戻って私のバックアップディレクトリに移動します。
より適切な方法があります。 あなたのコードをバックアップするバージョン管理が、
これは常にだけで作る簡単な方法です あなたが何かのコピーを持っていることを確認
変更しようとしていること。
>> そこでエコーはまた、一回のコマンドであること 愚かに一種だけに印刷されます
コマンドラインは、まさに あなたがエコーしたかった。
そうこんにちはエコー。
私達はちょうどハイテク印刷します。
世界ハローエコー。
私たちは、ハローワールドを印刷します。
つまり、使われるようになると、あなた コマンドを組み合わせて開始します。
>> そして再び、あなたは完全に期待していない まだこのことを理解しますが、それはだ
参照するには何か。
そして、あなたは例のためにグーグルでいるなら またはあなたが何をしたいの実現
何かが、それは便利です。
そうしましょう​​のは、一例として、 そのLS、ダッシュ、L。
だからここに私は、出力が表示され LSの、ダッシュ、L。
そして、私はOK、私がしたいと言う ファイルにそれを格納します。
ここでこの出力のすべてが、私が欲しい 別のファイルに入れます。
>> シンボルよりもそう、この小さな大きく 我々は呼ぶことにしているものです。
私たちは、リダイレクトしている ファイルに出力。
それだから、のは、ファイル何とかと呼ぶことにしましょう どのような私はいつもそれを呼ぶ傾向がある。
だから今我々は我々が持っている参照してください。 右ここ何とかファイル。
そして、私はそれを開くと、私はそれがですがわかります コマンドからの出力を正確に
私はちょうど実行されたこと。
と同様に、次のことができます -
これは、ファイルに出力されている場合は、この ファイルからの入力を取得することです。
私のコマンドは何ですか -
>> JOSEPH：私はあなたが使用できると思います おそらく、lessやmore。
>> ROB：しかし、どのように弱何とかはどうでしょうか？
知りません。
このシナリオになれますよう、様 それがために便利だというのpsetがあります。
>> JOSEPH：あなたがエコーにパイプにできます。
パイプそれを見るためにエコーにファイルを。
>> ROB：それはパイプです。
>> JOSEPH：申し訳ありません。
>> ROB：すべての権利。
だから、これはファイルに出力されます。
これは、ファイルからテキストを取得している そしてプログラムに引き渡す。
そして、あなたはまたこの男が表示されます。
だから、これは一度に両方を行うの一種である。
そして実際に、私は、2つの新しいを紹介 ちょうどそれを利用するように命令する。
>> 歴史はただで便利なコマンドです のリストを印刷しようとして
私が今までコマンドラインを実行してきたもの。
だから我々は、ここで私が持っているすべてを見る この全体の時間を実行して。
LS年代がたくさん。
>> そしてもう一つの便利なコマンドは、grepのある その目的は終わっ検索することです
パターンを探して、テキスト、まあ、 何でもあなたを探して
それがために見てみたい。
ので、ここでの便利な使用が言う、ある 我々は歴史をつかむことを望む。
そして、私はコマンドのために見てみたい 私はどこに - 何が
を探すために便利な1？
>> JOSEPH：[聞こえない]？
>> ROB：またはちょうどすべてを探してみましょう 何らかの理由で、触れる。
だから、これは、それがどのように見えるかです。
そして、あなたは完全にする必要はありません それを理解しています。
しかし、アイデアは、ここにある歴史を与えている それがここにいたのと同じ出力
全体をプリントアウトのWHERE 私が今まで実行してきたすべてのものの歴史。
次に、それを渡している -
だからではなく、それを画面に印刷する、 我々はにそれを渡したい
を探しているコマンドのgrep ワード·タッチのすべてのインスタンス。
>> などの組み合わせを用い ツールの歴史とgrep、私は、[OK]を、見ることができます
ここで私が今までにしたすべてのコマンドだ 実行して、ここでは、やや一般的なものです。
私たちは、一番下にいる。
そしてそれはまた、私に命令を与えている 私はちょうどそれが持っていた走った
その中の単語のタッチ。
しかし、パイプはかなり便利なものです。 複数のプログラムを結合する。
そして実際に、それはレットのショートカットです 何とかファイルに私の出力履歴、
私は、ファイル何とかを使用してgrepしてみましょう 私は目を通すしたいものとして。
だから、パイプは単なるショートカットです これらの二つのコマンドのために。
はい。
>> スピーカ4：[聞こえない]？
>> ROB：はい。
何ですか -
ああ。
それではテストしてみましょう。
そう、猫、犬、魚。
だから私はgrepをしたいと思います。
ダッシュは、R、再び、であることを行っている 再帰的なので、私はダウンして下降したい
すべてのディレクトリ。
私は、再帰的にすべてをgrepしたい - そして私は、一時的に取得させ
この方法のうち。
私を無視。
[OK]をクリックします。
>> だから私は一時をgrepしたい 単語の魚のすべてのインスタンス。
ので、ここで私がやっているgrepをされている 再帰的に単語の魚のために。
そして星は、これらすべての上に意味 このディレクトリ内のファイル。
そしてそれは、私に拒否されました許可を与えた それはそれを読むことが許可されていないため、
特定のファイル。
しかし、それは、ファイル、テストで魚を見つけた。
>> 私も具体的には、私だけが、言うことができる で、[ファイル]何とかで見てみたい
その場合、それが何かを見つけることができません。
私は、ファイル内のテストを見てみたい。
それは、魚を見つけるでしょう。
これはかなり便利なコマンドです。 一般的に知っている。
grepのにはいくつかの選択肢があります 以上のことになっていること
フレンドリーなプログラマが、私は傾向がある まだグレップにフォールバックする。
質問？
[OK]をクリックします。
>> 他のコマンドはありますか？
ああ。
いつも私はちょうど1オフ1 楽しみがcalはさであることがわかりました。
私はこの素敵にいるときので、注意してください フルスクリーンモード、私はのようなトップを持っていない
ツールバーか何か。
だから、CALはちょうど私に素敵な小さなを与え 右のカレンダー
今切断し、私が想定しています。
しかし、ちょっといいのコマンド。
>> JOSEPH：それは[聞こえない]です。
あなたが持つかもしれない他のコマンド 見て打ち鳴らすとmakeがあります。
私たちは、それらの上に行くよ 詳しく以降。
しかし、あなたが取り組んできた場合には PSETは、あなたがすべきである
それらに精通している。
>> ROB：すべての権利。
コマンドラインに投稿された質問？
わかりました。
それでは、いくつかに移りましょう C関連のもの。
変数の数学。
[OK]をクリックします。
私たちは、スクラッチで数学を持っていたので、同じように また、C言語で数学を使用することができます
>> 我々は完全にそれに入る前に、 変数は、そのように。
あなたが宣言するときはいつでもあることを覚えている INT XやフロートY、あなたのような変数
それは以前に入力し与えなければなりません 変数名。
だから我々は、これまで見てきたタイプがint型である、 フロート、ダブル、長い長い、どのI
実際に私たちがしている場合はわからない ここまでがわかる。
>> 他のいくつかのものがあります。
私たちは、文字が表示されました。
それはいるようである、短いあります 反対側の長い長いそれはのWHERE
整数よりも小さい。
また、文字列を見てきました。
それでは、文字列に関する特別です？
なぜ私はそれがだと言うだろう はなく、かなりint型のような？
>> スピーカ4：それは本当に存在しません。
>> ROB：うん。
我々は、文字列を持っているので、唯一の理由 あなたがするときからです
ハッシュ、cs50.h.を含める
そして、我々は、この後の例を見ることができます - ああ、それはそのうまく処理されません -
cs50.hは何かをやっているところ タイプの線に沿って
DEF、チャースター、文字列。
>> だから、それは私たちもしないことを言っている char型の星がまだあるか知っている。
しかし、これは我々は、文字列をしたいと言っている。
あなたは、文字列を使用してきた任意の場所 char型のスターを使用している可能性があり、
実際にタイプされているもの C言語で存在する。
しかし、我々はそれに買ってあげる。
ああ、それはすぐに戻って行く。
きちんとした。
>> BOOLにとても同じこと どこに真と偽。
それは本当にCのビルトインタイプではありません その代わりに、それだけで、これが持っていないです
値はゼロ？
その後、我々はちょうど検討します それが偽であると。
これは値を持っていますか -
まあ、これはいずれかを持っているん ゼロではない値は？
その後、我々はそれが真実であると考えます。
だから、いずれかに該当する、2に該当し、 ゼロ以外のものは真である。
だから、それらはそれらである。
変数の宣言に関する質問や 変数の型、すべてのこと？
うん。
>> スピーカ4：長い長い間、本の中で、 それは長い長いint型でなければならなかったと述べた。
しかし、単に長い長い動作します？
>> ROB：だからこれらのタイプ修飾子。
そうINT X。
だから我々はまた、unsigned int型Xを言うことができます。
我々は、短いのint xを言うことができます。
私たちは、長い長い整数xを言うことができます。
しかし、ほとんどすべてのものの私 今言った、unsigned int型、short int型、
長い長いINTは、あなたが取り除くことができます int型とそれだけと仮定します
あなたはint型を意味していること。
ただ意味ので、符号なしX、 -
あなたが知っているか、通常のintで、 あなたは、xが負の3に等しいと言うことができますか？
unsigned int型を使用すると、することはできません。
>> JOSEPH：そして再び、カメラ、 質問、違いは何した
長い長いINT間 ちょうど長い長い？
>> ROB：うん。
だから、私はほとんど決して 長い長いint型を記述します。
私は長い長い書き込みます。
>> JOSEPH：ご質問？
>> ROB：わかりました。
だからの他愛ないリマインダーはどうだ 私たちは、変数を宣言し、初期化する
別の変数と宣言 変数と初期化
1ステップですべて。
だから、変数の宣言と 初期化変数はありません
しかし、同じ行に配置できます。
>> だから我々は、標準的な数学演算子を持っている あなたは、に慣れていること -
プラス、マイナス、除算、回。
私達が表示されますを法もあります。
少なくともでは、ありません C、内蔵電源
指数キャレット演算子です。
さて、キャレット演算子があり、 それは、電力ではありません。
>> JOSEPH：しかし、それは累乗ではないが、 はい。
>> ROB：キャレットを使用しないでください それが意味することを前提とする
乗のような、または何でも。
だから、いくつかのものは留めておくべき 部門について気に。
私が立っているよ。
だから、初期化の答えは宣言した。
だから我々はフロート答えを言っている 10で割った1に相当します。
小数点以下2桁に答えを印刷します。
>> そして、これは私のもののようなものです。 把握するためのprintfを人間だろうと
、ドット、2Fは％で一体何を意味するのでしょうか？
そして、それはちょうど、まあ、意味 0.2を無視する。
そして％、Fが我々が使用しているものです。 浮いて印刷します。
0.2が言っている、印刷しておくこと 小数点以下2桁に浮かんでいる。
したがって、このプログラムにはバグがあり、あなたは可能性がある 一部の前にこれを見てきました
前のCSのコース。
しかし、そのバグは何ですか？
>> スピーカ5：ゼロ。
>> ROB：うん。
私たちが言うときので、答えは等しい 1 10で除し、私たちが望む
0.1であると答えます。
しかし、10で除1,1である 整数10は整数である。
そして私たちがで割った整数を行うとき 整数、我々は戻って取得するつもりだ
整数。
だから、10で割った1は0.1である。
>> それは私たちに整数を与える必要があるため、 それだけで捨てるために起こっていること
小数点以下と言う 答えは0です。
そして私たちは、ここで答える印刷するとき それが0.00を印刷するために起こっている。
>> JOSEPH：そして、ちょうどノートのように、実際に 後に何捨てる
小数点以下。
あなたが代わりに持っていたのであれば6は、10で割った あなたはそれはあなたを与えるだろうと思うかもしれない
0.6してから、1に切り上げでしょう。
それが入力すると、実際、どうなるでしょう タスクは、それが何であるか低下することである
小数点以下。
だから、0.6は0になりません。
>> ROB：うん。
そして、我々はそのために切り捨てると言うでしょう。
ですから、int型にキャストするたびに、 小数点以下は切り捨てられます。
だから、そのための修正 - あります 実際に2。
そして私は、その二をするつもりだから この1は、はるかに簡単な修正です。
>> だから、1修正は山車を使用している 部門。
本当に、あなただけす​​る必要が そのうちの1フロートを作る。
しかし、それだけで多少鮮明だ それらの両方浮かぶようにします。
だから、1.0は10.0である割っ 2つのfloatを分割する。
だから、答えはされてしまう フロートなどサービスは以下の通りです。
正しくここに0.10を印刷します。
>> とてもうまく機能しないもの そのことについて、まあ、確かに、それは簡単だったさ
に1を変換するのに十分 それ1.0行うことで浮く。
しかし、その代わりに我々は2つ​​の整数を持っていたものかどう int型のようにxは1とINT Yに等しい
10になり、その後、我々は望んで xをyで割っ行うには？
だから、それだけでは容易ではありません X.0または何かをする。
>> だから、それに修正を落としている。
だから、キャストは、Cに変換する方法です 1変数の型から別の。
だからここに、1は整数である。
そして目の前に、このフロートを置くことによって、 それは、我々はfloatに1をキャストしている。
だから、これは変換されます 1から1.0。
そして、これは変換されます 10から10.0。
>> そして、その後のことは同様に挙動 我々だけであった前のバージョン
ここで、予想されたように、私たちは0.10を得る それはそれを印刷します。
そして、我々は、次の方法でこれを行うことができます あまりにも変数。
だから我々は、フロートxを言うことができます フロートyで割った。
>> JOSEPH：ご質問？
>> ROB：だから普通の数学と同様に、 私たちは、演算子の優先順位を持っている。
だから、数学の授業では、より多くの可能性が高いです 操作の順序で呼び出す。
ここでは、正式な用語です 演算子の優先順位。
しかし、演算子の優先順位、または最も 事業者は、あなたが期待するようになります。
>> だから数学のように、2倍の10です より密接によりグループ化されようとし
この10は、2で割った後、2。
操作の順序は、それが2を行います 10倍、10を2で除算し、そして
それは20プラス5プラス2をやる。
だから、期待どおりだし、あなたが使用することができます 式をグループ化するために括弧。
あなたは、角括弧を使用することはできません 式をグループ化する。
うん？
>> スピーカ5：実際にあなたでした 戻ったばかりの1秒に行く？
あなたは文字列にint型にキャストすることはできますか？
>> ROB：だからCでは、あなたが何かをキャストすることができます あなたがほしい何でもしたい。
これで終わりですという意味ではありません 行うには良いことだ。
だから、にint型にキャストするとき 文字列意味 -
そして我々は、この中に買ってあげる はるかに徹底的に -
>> JOSEPH：ずっと後。
>> ROB：私は、ずっと後に言いたくありませんでした、 私は私の文を変更しようとしました。
私たちは、はるかに徹底的に買ってあげる 後でどこに本当にあなたが持っているとき
文字列変数 -
その文字列は任意にすることができます 長いですよね？
そして、我々はint型であることを言ってきた 4バイトと長い長さで8
バイト、フロートは4バイトです。
だからint型のような文字列が、唯一持って それへの特定のバイト数。
そして、それは4バイトになります。
>> しかし、文字列はかなりすることができます 任意の長さは、右？
だから、ハローワールドはすでに、それが10の場合は、 文字または何、それはすでにだ
4バイトを超えることになるだろう 私は、文字列に収まることができる。
だから、文字列が実際にどのように動作するかというです 彼らはどこにメモリ内にその文字列である
保管されています。
>> だからこっち、私が言う文字列x Xの内部で、Hello Worldのです等しい
ただああ、こんにちは、世界が格納されている、と言って メモリ内のこの特定の場所で。
だから我々は整数にキャストしようとした場合 文字列は、その後、我々は解釈しようとしている
メモリのいくつかのランダムな部分 文字列として。
そして、それはほとんど常に物事を壊します。
>> JOSEPH：しかし、それは混乱させた場合 もし、我々はそれをカバーすることができます
後で深さより。
>> ROB：うん。
あなたが行っているところです ポインタに入るため。
そして、それは重要なチャンクです このコースの2週間。
>> スピーカ6：それはオブジェクトのように動作しますか 他の言語のか、本当に？
>> ROB：だから他の言語、オブジェクト内の ポインタを使用して表される。
これは、しかし、同じことではありません。
任意の考え？
>> JOSEPH：いいえ。
何考えていません。
>> ROB：わかりました。
>> JOSEPH：次。
>> ロブ：ちょうどそれで行く。
わかりました。
そうモジュロ。
ただ、我々はプラス持っているように、マイナス 分割し、乗算します。
だから、法とは、使用するおそれのあるものです 前に見ていない。
そして、それはちょうど与える、と言う 私の残りの部分。
だから、55パーセント10。
分割55をやっての残りの部分 10で5になります。
だから、55パーセント10は5である。
そして3％5は3になります。
8％8は0になります。
16％15は1になります。
>> JOSEPH：これでもう一つ注意すべき、 あまりにも、期待どおりに動作しない場合がございます
あなたが負の数を使用している場合。
だから、負の5％4、一部の人々 つまり、と思うかもしれない -
あなたが否定的に何を思うだろう 5％4は次のようになります？
>> スピーカ5：ワン。
>> JOSEPH：だから何人かの人々は、1を言う 一部の人々は否定的なものを言う。
しかし、どのような -
>> ROB：私も持っていません それらの1人だ。
>> JOSEPH：二、申し訳ありません。
一部の人々は言う -
>> ROB：スリー。
>> JOSEPH：三？
>> ROB：負 -
負の5 - 何だった -
>> JOSEPH：三、3、3。
申し訳ありません。
ので、あなたがしたら、一般的には、法とする 他の場所でそれを見て、それは通常意味します
右、正の数を返す？
>> ROB：だから我々は数学で言う、10代％、 彼らはあなたを提供したい傾向がある -
我々は10で国防省なら、私たちはと期待 0から9までの番号を取得。
ここでは、それはあなたの場合ではありません 負の数を返してしまいます。
>> JOSEPH：だから負の5％ 4は負の1になります。
>> ROB：しかし、それはあなたがMOD-INGだということはめったにありません そもそも負の数。
これを省略してください。
>> JOSEPH：うん。
>> ROB：まあまあ。
[OK]をクリックします。
について指摘するので、最後の一つです 山車は、それは危険な行動だです
しかし、浮動小数点数は正確ではありません 表現。
だから、再びバイトに行く、覚えて int型は常に4バイトで、Aであること
フロートは常に4バイトです。
だから、ルーカスの例は、かなり良いです。
>> だから、3で割って1を考える。
そう0.3333333。
私は32ビットを使用している場合、どのようにすることができます 私は正確に0.33333を保存する？
そして、おそらく、何らかの理由で、あなたが言う、 大丈夫、まあ、ちょうど言わせて
この特定の1011001つまり、みましょう ちょうどそれは0.333333であるべきと言う。
さて、あなたは唯一の有限数を持っている これらのビット、それは不可能ですので、
すべての単一の浮動小数点を表す ちょうど32ビット指定された値。
>> まあ、それはいずれかを表すことは不可能です 無限所与の浮動小数点値 -
さて、任意のビット有限数を与えられた。
だから、ここでの問題は、我々が使用した場合、まあ、ある 小数点以下2桁に印刷するには、
我々は正確に答え0.10を手に入れた。
しかし、ボンネットの下に、それは本当にです のできるだけ近くに格納されている
これらのビットとして0.10を表すことができます。
これは、次のスライドにある？
あるいはそうではありませんか？
>> JOSEPH：ええ、それはそのだ。
>> ROB：Blegh、blegh。
>> JOSEPH：ええ、あなただけのことができます 少しノートを引き上げます。
>> ROB：私はちょうど拡大するつもりだ その上で、最後に中。
おやっ私のああ、それは[聞こえない]です。
だから数。
つまり、印刷されるものである 私たちは、そのプログラムを実行した場合。
そして、それは本当に大したことではありません注意してください 我々だけのような気にしている場合
二から三小数点以下。
のような私たちは、元々、0.10を印刷 我々は何も間違って見なかった理由、それはです。
しかし、我々はに入る始めたら それはの正確、正確な数
代表、我々はそれができないことがわかります 正確に0.1を表す。
>> そしてここでの問題の一部は、等である 大丈夫、それで結構です、しかし、まあ、
まず、私たちが何をしようとした場合、 答えは0.1に等しい等しい？
trueまたはfalseを返しに行くことですか？
そしてそれは言うのは難しい。
私はそれが実際にtrueを返すかもしれないと思う。
それが最初になります -
知りません。
あなたが扱って始めれば答えは 浮動小数点値を使用すると、かなり
多くの同一性を使用してすべきではありません この不正確さのため。
>> そして、あなたが知っているすべてのために、それは百分のだ その小数点以下
浮動小数点はできませんでした 正しく処理します。
だから平等だけ失敗しても、 しかし数 - あなたがいた場合
正確な数値を使用して、番号がすべき まったく同じだった。
それは50のように渡ってい これらのフローティングを用いた計算
ポイント値は、エラーが構築することができます アップとアップとアップし、
物事はただ誤解。
>> JOSEPH：本当にありました この出来事の有名な例。
NASAの技術者はこれを得ているように ロケットが爆発を引き起こして、間違っ
彼らが立ち上げてきた後の空気。
そして、そのような問題がたくさん。
そんなわけで。
>> スピーカ6：あなたは0.3 Fと言う、 それが残りの部分を切り捨てるのか？
それとも、切り上げまたは切り下げのでしょうか？
>> ロブ：それラウンドのprintfのでしょうか？
>> JOSEPH：私はprintfの切り捨てと思います。
>> ROB：わかりました。
だから我々は、同様に反対に行くことができます この場合の方向、この場合には、
それは表すことができ、最も近い 0.1は、この数となりました。
それができる可能性があり、最も近い 表現する0.2が反対している
方向、0.199999996356 か何か。
だから、我々はその方向に行けば 物事は、printfの0.3 Fが戻ってくる
1.99ではなく2.00。
>> JOSEPH：私は完全にないよ その上で確認してください。
あなたは小さな、ちょっと書きたいことがあります ちょうどそれを確認するためのプログラム。
>> ROB：しかし、私たちは確信しているのは、つまり、 あなたがすることをキャストしようとした場合
int型、およびint型にキャストするとしようとしている それがあれば、小数点以下を切り捨てる原因
あなたは1.9999999をキャストしよう int型にするには、1を得るでしょう。
だからあなたは、一般的に使用する必要があります 数学ライブラリ内の段関数。
質問？
[OK]をクリックします。
>> JOSEPH：だから条件に移る とブール式。
だから前に、これらを見てきました。
そして実際に、私は私のことを確認してみましょう コンピュータは、ここに適切なフォーマットであります。
スペース。
申し訳ありませんが、我々は対処する必要があるとしている 縁でカットオフと少し。
>> しかし、ええ、あなたたちは見てきました この前のスクラッチ中。
だからここにこの権利は式で ここで使用されている
条件文。
だからゼロ意志より大きい答える trueまたはfalseを教えてくれ。
これらは、実際に重要であるため 彼らは私たちを紹介させて
私たちのコードにロジック。
>> したがって、たとえば、これは、プログラムである ユーザーに要求スクラッチで記述された
整数とするかどうか、それらを伝えます 彼らはあなたがたた整数
正または負の数。
そして見るためにここに上の変換がある あなたが最初に、文をプリントアウト
私に整数を与える。
そして、あなたは、整数のためにそれらを頼む。
>> そして、あなたは上で条件付きロジックを使用 ここでその数かどうかをチェックするには
実際にはゼロではないよりも大きかった。
そこでここでは、ブール式を持っている 条件IF文の内部。
ご不明な点はありますか？
それについてのご質問はありますか？
[OK]をクリックします。
>> だからより多くがあります もちろん、より高い。
あなたは、ブール式を構築することができます あなたは物事の種類のほとんどを使用して
数学に考えるだろう。
よりそう大きい。
それは以下でなければなりません。
申し訳ありません。
と間隔。
>> ROB：神はあなたがそれを残す禁じる。
>> JOSEPH：すべての権利。
より、より小さく、よりそう大きい より、または、小さいか、等しい
より、または等しい。
我々はチェックするために二重の等号を使用 平等、一つの手段に等しいので、
代入は、右？
はい。
そして、我々はまたによって等しくないで行うことができます 感嘆符を使用して、等しい。
>> この感嘆符のシンボルは、CAN また、拡張されるようにしたい場合は
ブールの任意の並べ替えを反転するには 式は、あなたがそれを行うことができます。
だから、これはtrueと評価され 答えが小さい場合にのみ
以上またはゼロに等しい。
その上の任意の質問？
[OK]をクリックします。
>> だから、あなたはまた、これらを組み合わせることができます 論理を使用して式とし、
論理的または。
だから、これは単なるシンボルであり、 これは、Shift、7にする必要があります。
そして、これはある、パイプ記号である それは一つだ低くない場合、L.
それは右、あなたのEnterキーの上だ。
ですから、象徴する、これらのうちの2つを使用し 論理的かつ論理的または。
>> だから、これは唯一の答え場合にtrueを返します 1個、2個、3個または4個である。
と答えると、これが唯一のtrueを返します どちらかの側にそれを超えています。
だからそれは、1つ、2つ、3つ、または4つはない。
そして、あなたが使用する方法 その式中 -
>> ROB：ゼロまたは5。
>> JOSEPH：ゼロまたは5。
申し訳ありません。
はい、はい、はい。
[OK]をクリックします。
そして今こちらに、同じようにあなた その式を使用することになり、小さい
もし、条件の発現側 声明、また、それ使用します
ただの内側に置くことによって、同じよう IF文の括弧の。
答えのであれば、このprintf関数にのみ発生します 1個、2個、3個または4個である。
組み合わせ上のご質問 表現？
>> だから、別の条件があります 我々は、If / ELSEを呼び出す構築する。
そこで、基本的に、これは今場合は、[OK]を、意味 私はチェックしたいものではありませんでした
trueの場合、それ以外に移動し、 そのほかのアクションを実行します。
したがって、この特定のケースでは、私は尋ねた 整数用のユーザー。
整数がゼロよりも大きい？
はい？
さて、それらを拾い 正の数。
いない場合、それは持っている必要があります 負またはゼロであっ。
だから、負の数を選んだ あるいはこの場合はゼロ。
はい。
またはゼロ。
>> /他の場合、その後、我々はまた、持っている ifとelse。
だから、これは私たちがのシーケンスを実行できます 物事は最初のものは、失敗した場合にのみ。
この場合には、今、私たちは作っている あなたがゼロを選ぶ最後の1。
彼らは正を選んだことも、どちらもそうなら 負の数、それらは必要
ゼロを選んだ。
だから、ただ座っ行く このようなチェーン。
>> どのようにそのように例 異なっている場合 -
IF /エルスは異なっている IFのちょうど順序。
そしてこれは、一般的な質問です あなたが好き得れば、人々はよく、されている依頼
95 CS50において、何でしょう、この プログラムはあなたを教えて？
>> スピーカ5：あなたはAを得た
>> JOSEPH：はい。
あなたは、一つ一つを得た 右のものの1。
あなたはあなたが、あなたはBを持って、Aを得た 右、CとDがあるの？
したがって、これらの全てが評価を得る ためである。
95は90よりも大きくしながらそう、それはだ 80よりも大きく、それはまたです
70より大きく、そしてそれはだ また、60よりも大きい。
ですから、これらの等級のすべてを得た。
と私はあなたがだろうと想定 唯一のAをしたい
>> これを修正する方法は交換することです エルス/ IF 'sのもの。
したがって、このシナリオでは、95であることが見 90を超え、それはない
残りの部分を評価しない ステートメントの。
それについての質問？
>> だから、別の条件の並べ替えがあります 我々はここで我々が​​持っている構造
switchステートメントを呼び出します。
だから、これはあなたが基本的にチェックすることができます 何を置く数の値
switch文にある。
したがって、このシナリオでは、スイッチングしている nがある場合には、Nであり、我々は、ああ、と言っている
1は、その文を印刷します。
して終了を意味する、破る switch文の外。
>> それが1でなかった場合は、、まあ、ただ 最終的にはこれらのケースのすべてを確認してください。
それは、1つまたは2つまたはだ場合ので、チェック 三つ、そしてそれに応じて印刷する。
そして、何このデフォルトのキーワードダウンここに 彼らはいずれも入力しなかった場合の手段がある
これらのうち、無効なと言う。
それでは、私はNのために投稿してみましょう ユーザーは私に4を与えます。
まあ、それはそのような場合にも一致しない、 そうそれはに何があるかが出力されます
デフォルトのセクション。
はい、質問？
>> スピーカ5：あなたはブール値を使用することはできます 表現の代わりに、
一つ、二つまたは三つの？
>> JOSEPH：だから問題は、あなたが使うことができている ブール式の代わりに1、
2、および3？
およびC言語で、私はあなたを信じている それを行うことはできません。
しかし、他の言語で、そのあなたがかもしれない の最後に遭遇
JavaScriptなどの学期、次のことができます。
さて、あなたは最初に計算しなければならないでしょう その値とは、それを使う
switch文。
うん？
>> ROB：スイッチの利益のだから一部 あなたがこれをしなかった場合は、ステートメントが考えている
nが等しい場合のように、IF /そうでなければ、そのよう 1または何に等しい。
他に/ nが等しい場合には2、何に等しい。
他に/ nが等しい場合は3に等しい。
だから、プログラムを実行するような方法は、それである 順次、そのリストを下に行くと
チェック、1がnか？
いや。
2のnは？
いや。
N 3は何ですか？
うん。
これを行う。
>> switch文でのに対して、それはだ それがためにコンパイルすることが実際にできること
本当に速い。
時点ですぐにスイッチ言うように、 大丈夫、nは私は、2である、と言う
すぐにどこにジャンプしようとして 私が実行を開始することになっています。
私が最初に確認するつもりはない、 N 1は、2 n個ありますか？
それはすぐにやって起動することができます それが行うことになっているのか。
>> そしてそのためには、できない ブール条件を取る。
またはそうでなければしなければならないでしょう シーケンシャル、のように、全ての権利は​​、nは
ゼロよりも大きい？
それ以外は、10または何よりもNも大き​​い。
>> JOSEPH：この場合、あなたが使用した場合 /他の場合なら、、スイッチはだろう
約3回実行 IF /そうでなければ、場合よりも速い。
我々はそのようなスイッチを整理することができます 我々は壊れないように
ケースのそれぞれの後に。
この場合、私は分割することだ 我々は一つに選び、番号
2ではない高い数字と 3は高い数である。
>> それは、nは1又は2である場合、この場合のように ケースをヒットし、それが意志ます
フォールスルー、ため 断線はありません。
そして、それはここになってしまいます。
我々は一つを選ぶのであれば、それは、printfを行います して、そののどれを破るん
これが実行される。
そしてもちろん、彼らは3で入力した場合 または何か他のもの、それはスキップします
ものと、しないそこに行くし、それ 代わりに実行されます
対応するライン。
それについてのご質問はありますか？
はい？
>> スピーカ4：あなたはエラーが発生しますあなたの場合 ケース1の後に休憩していたが、それ
それがするために何かを持っていなかった？
>> JOSEPH：だから問題はあなたが得るだろうさ あなたが後に休憩を持っている場合、エラー
ケース1が、何の関係もありません？
答えはノーです。
実際には、エラーを取得することはありません。
うーんミリメートル、うん。
>> ここではほとんど変化の一種ように 私はここのprintfを置くつもりです。
おっと。
だから、これは何があれば印刷するだろう 私は、入力として1つを置く？
うん。
それは取らなかったことを言うだろう 二度高い数字ですよね？
それはその最初のケースに当たると考えているので、 それが壊れていないだろう、それは下落するだろう
第二のケースに至る。
それについての質問？
>> ロブ：あなたは別の質問がありましたか？
>> JOSEPH：OK、涼しい。
わかりました。
だから我々は呼ん何か他のものがあります 基本的には三項演算子
何の代替構文 もし、次にエルス。
そして、それはあなたが1行ですべてを行うことができます。
したがって、この特定のプログラムにおいて、 私はNをユーザーに求めている。
nが100よりも大きい場合と、私は言う 彼らは彼らは高い数字を選んだ。
他の私はそれらを教え、彼ら 低い数字を選んだ。
>> だから我々はこの非常に長い構文を使用することができ、 ストリングS、次いでnがあるかどうかを確認
100を超えると割り当て それに応じて。
しかし、我々はこれをはるかに簡潔に行うことができます この三項演算子の構文を使用して、
質問を伴う マークとコロン。
だから、疑問符が本質的に 右、質問をする？
>> ROB：たぶんそれを拡大します。
>> JOSEPH：はい。
良い点。
だから、これは三項演算子です。
私が最初に質問をし、 100 nよりも大きい？
そうであるならば、私が最初に実行 コロンの前の部分。
そうでない場合は、私が実行し コロンの後の第二部。
そのようにnが100より大きい場合には、 それは、高いピックアップしプット
その文字列Sに変換する。
nが100未満である場合には、低ピックアップ [文字列Sにあることを置きます。
だから、この大きな塊を凝縮する ちょうどその1行に分解。
>> スピーカ5：それは人気があるのだろうか。
>> JOSEPH：はい、それはのためにかなり普及している 基本的にあなたがしたい事
に基づいて割り当てを行う 条件のいくつかの並べ替え。
この場合、我々はしようとしていた 文字列sに値を割り当てます。
それはとてもではない -
私は本当に好みではないと思います それ以外の場合には。
しかし、それは特に便利です この割り当てのために。
>> ロブ：これはかなり一般的なパターンです。 あなたは、いくつかの変数がある場合、その
何か、設定した場合は、言おうとしている 1の値は、この変数には、そうでない設定
別の値に、この変数。
そして、それはシナリオです ここ三を使用しています。
>> JOSEPH：そして、あなたは保存している ラインの多くは、右？
それだけで、ほぼ間違いなくあなたのコードになります もう少し読みやすい。
はい、質問？
>> スピーカ6：三元の場合は、あなたが行くことができる、 文字列sは、S、疑問符に等しい？
そして、あなたが持っている可能性があり、言う、 5さまざまなオプション。
とnのどんな数に応じて、 あなたがそれらのいずれかを選ぶだろう、でしたか？
>> JOSEPH：だから、疑問がある 文字列を行うことができ、構文のようなもの
sはnと等しく、その後つ以上を有する その疑問符の後のオプション？
そして、簡単な答えはノーで、そこではありません ない限り、これを行うには本当に良い方法
あなたが巣複数の三項にしたい 互いの内側の演算子。
>> あなたは、100よりも大きいNのように行うことができます 疑問符し、別の
三項演算子、N 50を超え、 疑問符、およびそのように、それの巣。
しかし、そのシナリオでは、あなたのコードの 、ちょっと読めないと乱雑になっ
そしてそれだけに行く方が良いかもしれません その点で、IF / Elseステートメント。
>> ROB：そしてまた、サイドノート、PHPなど 誤っ三を実装しています
このようなネストされた三元系、演算子 でも、彼らが必要として動作しません。
>> JOSEPH：うん。
だから、少し混乱し得る あなたが行く場合は特に
異なる言語へ。
>> ROB：それは十分にご混乱だ 言語はそれについて間違っている。
>> JOSEPH：だから、実際に、ただ明確にするために、 誰もが知っている何をするかという
％sはこっちでしょうか？
それについての質問？
私が推測するだけでカメラの、％sの 基本的に私たちは、プレースホルダを置くことができます
文字列の。
した後、最後に、我々はそれを指定する 変数我々はこの中に入れたい
プレースホルダは、Sである。
だから、基本的には、Sを取る そしてそれはここに入れます。
そして、それはあなたが選んだ、プリントアウトします 高いか、低い数値を選んだ。
[OK]をクリックします。
>> だから、ループはあなたが物事を行うことができ 円を描くように、右か？
この中に遭遇した可能性があります 永遠にループの形でスクラッチ
またはを繰り返したり、特定のリピート 回数。
では、なぜこれは、私たちのために良いでしょうか？
さて、C言語で、我々はこれを持っているのは、言わせて この曲は、スクラッチで実装
歌って、これは歌です それは決して終わらない。
それだけで延々と続くと いつまでも、永遠に。
さて、あなたは本当にプログラムを作ることができない それは、printfの無限の数を持ってい
その中の文、右？
>> したがって、この特定のシナリオでは、1ウェイ あなたはこの仕事をするとできること
それは永遠に印刷するようにすることである 代わりにwhileループを使用しています。
だから、whileループは何が実行されます その2ブレースの体内で
内容に基づいて、それに属している 条件である。
もし、以前にこの特別な例でそう 私たちは、何を、いつまでも、これを印刷する
我々は何でしょうか？
さて、確かに、右か？
>> だから、これは一種のアイデアを組み合わせた いくつかのブール式の
ループと一緒に。
そして、我々はブールについて学んだ 以前の表現。
だから、いつの内部状態 その一方が真のまま、このループ
上と延々と実行されます。
この場合、我々はそれを指定した場合 真の場合、これは無限の原因
上で曲を印刷し、ループ そして我々がすることなく前に、必要に応じて
無限を持っていたプログラムを持つ のprintf文の数であり、
ことはできません。
>> ので、より多くの説得力は、しかし、 あなたがこれを使用することができます
変数と条件。
それでは、我々は繰り返したいとしましょう フレーズ、完全に愚かな、10回。
だから、Whileループで何ができるである あなたが最初のカウンタを初期化することができます
外の変数 10 whileループ。
した後、基本的に、あなたが行くたびに、 Whileループを通して、あなたがプリントアウト
その文、あなたが減少 カウンタ変数末までは、
いくつかの点で、かつて我々は十分に私を引く 回、私は十分時代から1 -
ちょうど、私のマイナスマイナスを明確にする 私はマイナス1に等しいことを意味します。
>> それは基本的にに私が停止します かつて私は、ゼロにヒットポイント、この
条件がtrueでなくと ので、ループから抜けます。
だから、完全に愚かなだけ10回出力します。
Whileループについてのご質問？
[OK]をクリックします。
>> だから我々が行うことができる方法はありますか私たちだけ とより簡潔な方法で行った
私たちは、Forループと呼ぶもの。
そこらのループはで構成されています 初期設定、状態、および
我々の前に持っていただけのように更新、 このWhileループ内。
それでは見てみましょう。
このWhileループでは、我々は持っていた 初期化は、我々は持っていた
我々がチェック状態。
そして、我々は、更新があった 上部のステップ。
>> Forループでは、これは基本的に取り これらの三つのことで、それを凝縮
1行に分解。
それがでないように、最初にすること ループの初期化です。
それから、あなたはその後にセミコロンを行い、 あなたは私である状態を、やる
ゼロより大きいが、あそこ行く して、更新ステップ。
だから、これは、で行われます ループ本体の一番最後。
したがって、これら2つのプログラムがあります 基本的に同等。
>> ご質問？
だから、1つの違いは何ですか これら二つの間？
誰もがそれを指摘することはできますか？
それは少し微妙かもしれません。
それだけで非常に小さな違いだ。
はい？
>> スピーカ5：使用することができないだろ Forループの外に私の変数
[聞こえない]？
>> JOSEPH：その通りです。
だから、これは私たちが買ってあげるものです 後で変数のスコープと呼ばれる。
しかし、本質的に、これは私たちの生活をint型 このWhileループの外。
したがって、このWhileループを実行しても 実行すると、私は後で私を使用することができるでしょう
プログラムの中に。
>> これをループのために、これは私がint型のに対し、 このforループの内側にスコープされている。
そして、それはこの部分の内側にあるので、 ループのための、すなわち開始する
と括弧と両端の あそこ中括弧。
内で宣言だ何でも ここで外では使用できません。
私は外で私を使用しようとするのであれば、それはよ 教えて、宣言されていないシンボル。
そして、基本的に、私ではない それを使用することができる。
>> ROB：そしてよく、10年前、中 文字通りすべての場合、中括弧は
何を決定するのに使用 変数のスコープ。
だからそこに、私は10に等しいint型 この内で宣言されている
中括弧のセット。
そしてそうしている限り、あなたは、私を使用しようとして この中括弧の前に、それは大丈夫です。
あなたが作る入力するときには、あなたが表示される場合があります ダッシュ、ダッシュ、STD、等しく、C99を参照してください。
>> だから、Cの後のバージョンであること GCCはまた与えるよう実施している
このショートカット。
だから、これはC言語で許可されないために使用され、 あなたが見ることができる理由、そのためのint
私はこの中括弧の外にあるが、 それはまだであると考えられています
これらの中括弧の範囲。
しかし、これは非常に便利なものですが、 そしてそれは良い拡張したものです。
>> JOSEPH：ご質問？
[OK]をクリックします。
だから何より有用なのは、その時々である あなたは内ダイナミズムのようなものをしたい
あなたのループ、右？
あなただけの、必ずしも印刷したくない あなたは、すべての時間は全く愚かな
からカウントダウンしたい 10か何か。
だからあなたはカウンタ変数を使用することができます そのループの内側にも。
その場合には、このプログラムだけで 全押し10からカウントダウンします。
そしてそれは何を印刷しないのですか？
それがゼロに印刷されない、 右、ときのため -
はい、それはまた、11は印刷されません。
>> だから、ゼロに印刷されないときのため 私はゼロで、覚えて、それが評価される
それが進む前の状態 ループ本体を実行します。
Iがゼロであるとき、これはそのように、偽である それがカウントダウンを印刷しない
ゼロ、それだけでカウントを出力します 1のすべての方法ダウン10ダウン。
我々は実際にはゼロを印刷したい場合、 その後、我々は、等号を置く
記号よりも、この大きな後。
[OK]をクリックします。
>> 入力検証を行うため、1つの方法は、その あなたがしなければ、ユーザーが要求したときである
何か、あなたは彼らを確認するには あなたの指示に従って、使用することです
Whileループは、右？
したがって、この特定のケースでは、私が求めている 正の数のため、その後、私はよ
入力を待っている。
>> 入力されている間、その後私はチェック ゼロより小さい、声をかけてください。
そうであれば、彼らは私に番号を与えるよう それは肯定的ではないが、求めておく、
求めておく、求めておく。
しかし、ある種の奇妙なこのことについては何ですか？
または何についての最適ないないようだ 右こここの構造体？
誰ですか？
はい？
>> スピーカ6：あなたが繰り返している 命令を2回押します。
>> JOSEPH：右。
だから我々は2のprintf文を持っている ここで、右か？
だから我々はちょうどこの得ることができる方法はありませ 私たちになるだろう1まで
コー​​ド読みやすくし、A もう少しきれいに。
そして、我々はする必要はありません だけでなく、2回に分けて取得しています。
そして、あなたはこれを行うことができます1の方法です 実行 - whileループを使用することによって。
>> 観光·whileループは基本的に Whileループの場所の異なる形
中括弧の中には何でも 少なくとも1回実行されます。
だからここでは、私は、int型を宣言 入力、外側の第。
そして私はちょうどこれを行う、と言う 入力中に命令
ゼロ未満である。
だから、最初に行うに当たる。
それは、常に、少なくとも、これを実行します 一回なので、常にユーザーに確認します
少なくとも一度入力してください。
そして、それはその入力を評価し、 そしてそれは輪に点灯します。
はい、質問？
>> スピーカ6：それを行うための方法はありますか [聞こえない]の種類、あなたが言う場合にはのように、
GetStringメソッド、および誰か[聞こえない]
[聞こえない]する方法はありますか
>> JOSEPH：だから、疑問がある 入力検証を行う方法であれば、ユーザー
右に入れていません 変数の型？
我々はint型を要求し、もしそうなら、彼ら 代わりに、私たちに文字列を与えます。
そして、我々は実装した関数内 あなたのために、GetIntで、全てにおいてGetStringメソッド
これらの関数は、それらが実際に既に 基本的なタイプの入力の並べ替えを行う
ボンネットの下に検証。
ですから、我々の関数を使用している場合 あなたを与え、あなたが本当に必要はありません。
>> しかし、あなたはどのようにもっと見てみたい場合は、 あなたが実際にそれを行うことができ、あなたが見ることができる
ファイルのボンネットの下にI/O--
標準I / O機能、ファイルではありません のような標準入力からの読み込みと
標準出力。
そして、あなたはより良い感覚を得ることができます あなたがそれを行う方法の。
>> ROB：一つの問題は、しかし、特にである 例を使用すると、
あなたは文字列を期待すると述べた と私は、intを入力してください。
どのように違いを言うだろう 意図的に欠け間
INT 123を望むに対する文字列123？
ため、文字列は、それがほとんどないがないだ 、それだけで何でも彼らの検証です
あなたが解釈する入力された 文字列として。
>> どんなにので、int型は、簡単です あなたはあなたが、利用者から取るの入力
常に文字列を取る。
だから、その文字列次にでき 確認し、これらの全ては
実際に数字？
>> JOSEPH：わかりました。
ドゥーWhileループについてのご質問？
>> ROB：ああ、これもある -
スコープに戻って、多少の共通 ミスがいくつかのローカルを使用しようとしている
これを行うワイル内から変数 この条件の内側ループ。
そして実際に、我々だけを処分した場合には これとINT入力に等しい、と述べ
GetIntで、コンパイラは大声で叫ぶん ボランティア、入力が存在しないため
の範囲外 これらの中括弧。
>> JOSEPH：そして、だからこそ私たち ここでこのラインアップを必要としています。
[OK]をクリックします。
だから、あなたも抜け出すことができます ループ初期のあなたがしたい場合。
だから、これは別の方法である 我々だけで実装するのはどのような実装。
その代わりの条件を用いて 括弧の中に、我々は使用している
体の内側if文 実行 - whileループ。
>> そして基本的には、入力が最終的にあるとき ゼロより大きく、させて頂きます
ループから抜け出す。
だから我々はすべて行く ダウンここ道。
そして、あなたは、これがあると見ることができる おそらくこの中で好まれる
シナリオ、それは少しだから ビットクリーンで少し
読みやすくビット。
この一方で、あなたの並べ替え その中に余分な行があります。
それは、ほんの少し醜いです 私はある意味で、ね。
はい、質問？
>> スピーカ4：取得のみ解除されます ブレースの1セットからあなたは？
>> JOSEPH：右。
そこで問題にのみ解除されますされている あなたは一つのループから抜け出す？
そしてその答えはイエスです。
だから、あなたは、ネストされたforループしている場合 私はint型を持っている場合は、私が0に等しい
10時までとし、int型のためjは0に等しい 10時まで、私は、内から抜け出す場合は、
ループ、私はまだ行く 外側のループに。
だから、実行しておこう 外側に操作。
それについての質問？
はい？
>> スピーカ5：しかし、唯一の機能を破る 中括弧のために、ではない他のために
文？
[聞こえない]
>> JOSEPH：だから質問が解除されている とは対照的に、ループのための唯一の機能
もし同様の他の文？
そしてはい、それは、そうであるため、 あなたは、右、ループを抜け出している
意味で。
>> ROB：大部分のケースでは、それがだ これは、IFものの一種である、
その後破る。
だから、に適用する分割する必要はありません その周りにラップされます。
また、これは、ループの多くはありませんが、 しかし、スイッチもあることを覚えておく
休憩で外に壊れた。
私たちは、休憩が使用されて見ました スイッチの前に。
>> JOSEPH：そして、あなたはまた、それらを使用することができます 一方ループ内およびループの場合。
ご質問？
[OK]をクリックします。
だから、次回は機能する。
ですから、これらのBYOBのいずれかを使用している可能性があります スクラッチプロジェクト内のブロック。
そして、これは基本的に可能にする あなたのセットを定義する
従うべき指示。
>> そして、私はそれの意味することはのは考えてみましょうです 戻って数学に、右、代数。
あなたは私たちがxの関数と呼んでいるものがあり、 いくつかの変数とのこれを言わせて
この関数は、xのfはXプラス5に等しい。
だから、この黒として、xのfを考えることができます その後に15を取り、箱
20を生成します。
>> そのように、より一般的には、関数である いくつかの入力を受け取り、何かして
その後、いくつかの出力を生成します。
そして、なぜ機能は良いですか？
彼らはいくつかの理由でもいいです。
だから、誰かが刺しを取りたいん 何を意味するのか、組織での？
なぜ機能的に役立つ？
はい？
>> スピーカ4：それはあなたを作る コー​​ドを読みやすく。
>> JOSEPH：右。
そうなことの一つは、それが作るです コー​​ドを読み、右？
intではなく、xがXに等しいように持っていることの 倍x倍xを、Iはxのキューブを有することができ、
より読みやすく、よりある 読者に理解できる。
>> 組織は、という点にもあります 管理可能にコードを分割
そのため、代わりにしようとする部分、 すべて1長いセクションでこれを実装
メインでは、ソートのそれを分割することができます 等には、[OK]を、の関数を書いてみましょう
何かをキューブに、のは書いてみましょう 何かを二乗にする機能。
あなたは小さなにそれを分割することができますこの方法、 あなたが取り組むことができる小さなパーツ
タックルしようとしているとは対照的に、 すべて一度に大きな問題。
>> ROB：またはきわめて小さい場合でも、少しパーツ あなたとパートナーが取り組むことができます。
>> JOSEPH：うん。
>> ROB：だからではなく、両者の あなたは1を移植しようとしている
同時に機能します。
>> JOSEPH：簡素化。
誰もが推測を取りたい？
はい？
>> スピーカ5：もっと繰り返し。
>> JOSEPH：右。
だから、あなたが使ってできることの一つは、 簡素化は、それが一種の上にあるということです
再利用性と同じ行であること 私はキューブ関数を書いたら、私がすることができます
ちょうどその何度も繰り返し使用 私のプログラムの代わりに入力して、再び
以上のX倍のx倍xと 何度も何度も。
そして、ここで単純化だけでも それは一種のコードを作る意味
スプリットたら簡単にデバッグする 関数にこのアップ。
あなたはどこをローカライズすることができますので、 あなたの問題は、ソートのです。
ご質問？
>> だから、もう一つのアイデアは、右、抽象化したもの？
このブラックボックス。
好きな人には、GetIntでは何をするか知っていますか ユーザからの入力を受信する？
私たちは本当に正しい、あなたに言ったことがありますか？
私たちはあなたに言ってきたすべてがGetIntではないです まさにそれはそれがないと言います。
だから我々は、どのように教えていない場合でも、 それが動作する、あなたはまだ知っている。
>> したがって、この特定のケースでは、これは ない四重機能
入力に異なるもの 出力を生成する。
そして、あなたは数を四倍にすることができます 4を乗じて。
またはあなたは私たちが呼んでいるものができる ビット2によってそれをシフトします。
そして、我々はこれをカバーします 少し後で。
そして、どのようにこれを知っている必要はありません この関数は、実際に限り動き
述べたように動作します。
>> だからボンネットの下に、私は次のようになり 同様に、入力された時刻を返す
2で割った8。
そして、あなたは右、知っているだろう？
あなたが知る必要があるのはある それは言うことありません。
だから、便利なことだ 抽象化について。
>> そしてもう一つは、このアイデアのようなものです。 1にコードをローカライズする
特定のセクション。
あなたは問題があるんであれば、あなたはしないでください しようとしてすべてのコードを介して行かなければならない
問題があった場所に固定する。
したがって、この場合には、Iが実装 間違っキューブ。
私はキューブが掛けると思った 3による。
>> したがって、この場合には、この1つのプログラムである それはちょうど3を掛けるました
どこでも。
とされている別のプログラムがあります アウト機能に織り込まキューブ。
だから今、私は私の間違いを修正したい場合は、 ここで、私はすべての単一の行を修正する必要があります
このプログラムのコードの。
一方、他方では、私が使用している場合 この関数は、私は変更する必要があります
一箇所で何が間違っていた。
>> だから、コンピュータサイエンスでは、 入力と出力を呼び出します。
入力はパラメータと呼ばれているか 引数、および出力が呼び出されます
値を返す。
そして、我々は、これは、ソートたちをどのように役立つかが表示されます 第二に関数を定義する。
だから、これは関数定義である キュービングのため。
だから、それからの入力を受け取り、 それはその回数を返し
それ自身3回。
それでは、これを打破しましょう​​。
>> だから我々は、関数ヘッダーを持っている 基本的には三つのことで構成されています。
だから我々は、パラメータを持っている 私が前に言ったように、ある
この関数への入力。
そして、我々は、関数に名前を付けます。
この場合には、キューブと呼ばれています。
そして、我々はどのようなタイプを指定する の戻り値です。
>> この場合、私のキューブ機能 それはまた、整数を取り込み、
整数を返します。
私は2を渡すのであれば、2は整数です それは、私には8を返す
整数である。
だから、型名のパラメータを返す。
それについての質問？
>> そして、戻り値は実際には リターンを言って最後に指定
してから何を返す 戻り値が含まれています。
この場合、我々はそれをすべて置く場合 一緒に、この関数は、取り込ん
パラメータは、それが何かと呼ばれる、と それはタイプ何かを返す
我々はそれがであることを行っていたと言うこと。
ご質問？
>> では、どのように関数を使用するのですか？
まあ、我々は、関数を記述し、 我々は正しい、我々のプログラムでそれを使うのか？
だから私は、キューブに呼ばれ、 私はキューブを使用することができます。
>> しかし、何が注意してください 順序が重要ということです。
私はメインの下のキューブを持っている場合、それはだ キューブに実行するつもり。
この時点では、何もありません プログラム内のキューブと呼ばれ、それはだ
同じようになるだろう、私が持っている 全く考えはどのような立方体ではありません。
>> だから、暗黙の、あなたを教えてくれます 関数の宣言。
つまり、表示さエラーです。
そしてこの場合、キューブは以下の通りです 主なので、それはないだろう
それについて知っている。
>> スピーカ5：だから主は、通常、 最後の関数は、定義された？
>> JOSEPH：だから質問は、 通常、最後の主である
ユーザーが定義したいことは？
なし。
それがために、私たちは通常、メインのようなものだ 右、上にあると？
なぜならそれはあなたが最初のことだ プログラマが開いて欲しい
参照するプログラム。
だから、どのように我々は、我々のこの問題を解決するのですか 一番上にあることが主なたいのですが、
私たちが望む機能は、我々は彼らが欲しい 主未満であることはまだ使用することができる
メインの内側にそれ？
>> まあ、我々は我々が呼んでいるものを使用 関数プロトタイプ。
それでは、関数プロトタイプ本質 ですが、最初に何を取る
署名または関数ヘッダ 我々がダウンして実装するために何をしたいの
ここで、我々はでそれを置く プログラムの先頭。
>> この場合、我々は、まあ、それを言う 後で私たちのプログラムでは、つもりだ
これを実装する約束を作る 取りint型キューブ、呼び出された関数
整数入力。
だから今、それがメインの上にあるので、 主な、それはよく、ああ、と言うだろう、
後のプログラムでは、それはなるだろう だから、私はそれを参照することができますので、私はよ
ちょうどそれが今の通す。
>> して、一番下にある、 私たちは、キューブを実装します。
そしてメインはちょうど、と言うだろう まあ、それは、リンクのソートされます
これら二つのシンボル。
そして、我々はどのようなことを取り上げます 後で意味します。
そしてそれは、これがあることを知っているよ それは使用するべきキューブ機能。
>> ROB：[聞こえない]たいと約 下部のメインまたは
トップ、私は両方を見てきました。
同じようなことがあります。 下部にメインを配置する。
しかし、いったんプロジェクトが、特に取得する 大きな、通常は主にしている
すべての独自のファイル。
その時点で、のような int型キューブラインだろう -
stdio.hの内集まりです ちょうどそのint型のような行を
キューブのint入力ライン。
>> だから、これらのプロトタイプは、物事はあなたがいる で、ヘッダファイルに配置する傾向がある
その時点、それは問題ではありません。
まあ、それは問題ではありません。
それらは常に最上部に移動します。
そして主は、すべて独自のファイルでない場合は、 あなたが置くことについて心配する必要はありません
個々の関数プロトタイプ ファイル内の。
>> JOSEPH：そして、我々はその少しに買ってあげる 少し後ロブは話し始めるとき
コンパイルについて。
だから差があります パラメータと引数の間。
とパラメータはちょうど何ですか 私たちは、これらの入力を呼び出すとき
私たちは、関数を定義する。
そして、我々はときに我々の引数で呼び出す 実際に関数に渡します。
>> したがって、この場合には、これはパラメータであり、 我々の前に言ったように。
そして、我々は実際にそこにそれを使用する場合、 Xのキューブは、それから、それ自体がX
我々は、引数と呼んでいるもの 機能キューブに。
>> ROB：だからパラメータの引数は -
この区別があり、非常に 同じ意味混乱。
この時点で、私には、それが一つのようなものだ 私はそれを参照して、それらの単語
野生では、私はすぐに助けることができません 彼らはそれを使用しているかどうかを質問
正しいコンテキスト、理由 違いは、単に十分な微妙です
誰もが傾向がある -
私はほとんどの場合、引数を言う にかかわらず、私の言いたいの。
>> JOSEPH：および機能も便利です 我々は、副作用と呼んでいるもののために。
だから、関数は入力を取ることができず、 それはまた、NOの出力を生成することはできません。
したがって、この特定のケースでは、私は 無を持つサブルーチンを定義する
値を返す。
そして、それを特定するために、我々は、使用 私たちはこっちに無効と呼んでいるもの。
だからこの関数の副作用 それだけのものを印刷していることである
ページへの出。
これは、実際に実行されません 入力、およびそれはしていません
実際に出力を生成する。
>> しかし、これはある意味で役に立つかもしれません あなたは、例えば、デバッグする場合
あなたのプログラムで何か、必要に応じ 少しサブルーチンを記述するために、その
プリントアウトする、のは言わせて、内容 メモリか何かの。
だからこれらの副作用は時々ある コンテキスト外に便利
ただ入力と出力のようなの。
ご質問？
>> この特定のセグメントを終了するには、 このプログラムは何をするのでしょうか？
私はあなたたちののカップルをあげる それを読ん秒である。
非常に基本的なレベルでは、私たちがしたい 右、それはxとyを入れ替えていることであると言う？
>> それでは、どのように多くの実際に考える これはxとyを入れ替えるだろうか？
手を上げます。
誰ません。
[OK]をクリックします。
誰がそれをすることを考えている xとyを交換しない？
そして、それの合計はだった 全体ではなく、お部屋です。
だから、何人かの人々は確認されていません。
[OK]をクリックします。
それは合理的です。
>> それでは、何が起こるかを経由してみましょう あなたが実際に最初の関数を呼び出す
この質問に答えるため。
だから、これはどのようなメモリであり、 並べ替えのように見えます。
これは一種の単純化したモデルのようです。 ときのようにメモリがどのようなものかの
あなたがプログラムを実行します。
いわゆる何かがある ダウンここスタックと
何かがヒープと呼ばれる。
これらは向かって成長 メモリの真ん中。
>> したがって、この特定のケースでは、とき あなたは関数を呼び出すと、
スタックに置かれます。
して、その中に含まれているどのような 機能は、我々がいることを呼ぶものにとどまる
関数のスタックフレーム。
そしてとても素敵可視化を取得する これは、let's - 例えば、私たちは持っていた
プログラムのメイン早い。
そしてメインの内側に、我々はキューブと呼ばれる。
だから、主はまずスタックに行くだろう それは最初の関数なので、フレーム
それは呼ばれています。
>> した後、キューブはの内部で呼び出されたとき 主には、メインの上に置かれます
メモリの内部。
それでは、ここで気づくと、その立方体である 独自のパラメータがあり、その
自身の地元の人々。
だから、実際に何かを渡すとき 機能、パラメータということ
何であったかのコピーであるれます 主から渡された。
>> ソートのこれを説明するために、みましょう プログラムの中を歩く。
だから我々は、スタックを持っているが、これはある 単にスタック部分。
そして、私たちがやっていることは我々が最初に初期化される 1と2のXとY。
だから我々は、これらの小さな箱を持っている。
彼らは主のスタックに座っている スタック上のフレーム。
彼らは、1と2が含まれています。
>> 今、私たちは、スワップを呼び出します。
何が起こるかは、我々は中にxとyを渡している スワップ、スワップは、自身のコピーを作成します。
内側に使用するそれらの変数の そのスタックフレームの。
だから今あそこ、我々は、これを持っている X持っていた値が含まれていると、bを、
そのYが持っていた値が含まれています。
そのように一つ、二つ。
>> そして、あなたは、これは別々であることがわかります メインの内側にxとyから。
だから我々は現在、一時的に作成 格納する変数。
我々はBに等しいを設定するので、 一から二変化する。
そして、我々は等しくセットB ショートカットに、その1です。
>> して、今、私たちが出て終了 この関数の。
あなたは、関数の外に出るときは、 スタックフレームがスタックからポップされます。
私たちは、プッシュと呼んでいます。
あなたは、スタックにスタックフレームをプッシュ スタックオフの場合、あなたはポップ。
だから何が起こると、そのすべてである ただのスタックフレームの並べ替えていた
炎の中で上がる。
だからそれは存在しません。
>> しかし、我々は何に気づくのですか？
私たちは、実際に変更されたことがない xとyの値は、右か？
ので、これらは、主にローカルとどまった。
スワップに何かを渡すことで、 実際にこれらの値を変更することはありません。
そして、我々はこれは何を呼び出すのですか？
私たちは、価値によって、この通過を呼んでいます。
>> あなたがに物事を渡すCの中のSO 機能は、値によってそれらを通過して、
のためにそれらのコピーを作成します 使用する機能。
そして、我々はと呼ばれるものについて学びます 後で参照渡しますが、それはです
あなたはこの問題を解決することができる方法です。
しかし、我々は気にする必要はありません その後まで。
>> ROB：そして、実際に、その用語、パッシング 参照することによって、そのようにCがあっても持っていません
参照渡し。
Cは、排他的に値渡しました。
どんなにあなたが何をすべきか、あなたはいつもしない 何かのコピーを渡す。
私は一種の言及のようにそれは、まさにそれだ その前にポインタを
文字列は本当に4であること メモリ内のどこかを指し示すバイト。
>> まあ、私はこの文字列を持っている場合、それはだ それはどこの文字列である私に言って -
まあ、私はこれまでこのポインタを持っている場合 メモリ上に置いて、私は渡すことができます
機能へのポインタのコピー、および その関数は、まだどこにある知っている
それはメモリである。
したがって、これらのポインタの両方を指している メモリ内の同じ場所にあり、
それは我々ができるようになるだろう方法を説明します を超えて物事を変更する
現在のスタックフレーム。
>> ジョセフ：あなたがコンパイルしたいのですか？
>> ロブ：いいえ、それは午前5時30分です。
>> JOSEPH：わかりました。
それが5時30です。
[OK]をクリックします。
だから我々は、私は推測してコンパイルカバーします 次のセクション、またはあなたのセクション
その点でのリーダーになります。
そして -
>> ROB：ご質問？
>> JOSEPH：ご質問？
はい？
>> スピーカ5：CS50から文字列を使用して、任意の 我々が使用したい機能
これらの、それは、C関数のようになるでしょう。
CS50はに行っておりませんし、 追加しました。
>> ROB：正しい。
[聞こえない]のように、Cのいずれかに、 私たちの文字列のものを使用します。
>> JOSEPH：そして最後に一つ私がしたい 言及は、我々はスタイルガイドを持っているということです
このクラスの。
>> ROB：ああ、うん。
>> JOSEPH：だから、から来ている場合は、 前のプログラミングの経験、あなた
一定の規則を持っている可能性がある場合 あなたはパッティングのようなコードを書いている
同じ行の中括弧または特定 インデントのやり方
または、変数に名前を付ける。
このクラスでは、フォローしたい 特定のスタイルガイドという理由だけで、
さて、あなたは外に出ている場合での仕事 業界では、あなたが期待することになるだろう
のスタイルガイドに従うこと あなたがに行くれる会社。
>> 例えばのように、Facebookが私は思う 命名の特定の並べ替えを持っている
慣例。
とラクダの違いがあります ケーシング変数と同じよう
アンダースコアで区切る。
また、私のような、最も重要なことだと思い 例えば、インデント、右？
>> 我中括弧で始めるのですか 条件は、それら
次の行にあります。
そして、我々はまた、中括弧を置く それだけで1行であったとしても。
そして、実行する方法は多くの時間がある これらの括弧を残すことができ、それ
それだけで1行だ場合にはオフに If文の下に。
しかし、このクラスでは、我々はフォローしたい ちょうどので、あなたが得る特定のスタイルガイド
そういったことに慣れて。
>> ROB：うん、スタイル50をしようとしている このスタイルガイドを施行し、我々はしている
スタイル50を使用するつもり あなたのコード年生まで。
だから、私たちのために物事が容易になり、 うまくいけば、その物事を行うべきではありません
あなたが与えられたために非常に悪い 標準化されたスタイルがあることであってはならない
非現実的。
>> JOSEPH：そして最後に、スタイルを見つけるには ガイド、manual.cs50.net/styleにアクセスしてください。
そして、ええ。
>> スピーカ4：あなたが強制するつもりです 行ごとの任意の文字？
>> ROB：はい。
>> JOSEPH：申し訳ありませんが、みんな。
>> ロブ：それは唯一のものの1のようなものだ。
この時点で、私は120でOKです。
私は120を言って、OKだ 行あたりの文字数。
私はいくつかの制限されてそこに理解しています。
私は80が非常に小さいと思うが、 我々はそれを強制している。
>> JOSEPH：個人的には、と思う C、80文字がよりOKです。
あなたは他に取得を開始したら JavaScriptやPHPなどの言語ではない
ただ制限するため、合理的な それ80文字まで。
[OK]をクリックします。
まあ、それは、スーパーセクションだった。
誰もがお菓子をしたいのですか？
>> スピーカ4：はい。