[Powered by Google Translate] ZAMYLA CHAN:すべての権利、みんな。 チュートリアル1へようこそ。 このチュートリアルでは、私はあなたを願っ℃であるのpset 1、オンになります すべてはあなたのスクラッチプロジェクトで楽しい時間を過ごした。 だから今、このチュートリアルでは、我々は実際にあることを行っている Cに入ることができ、いくつかのマシンコードを書いて入る。 あなたはこれらのその後、チュートリアル0ではなかったので、もし 本当にチュートリアル - we'reを歩いて行く 問題セットは、いくつかの一般的なヒントやテクニックを介して話をする あなたが使用することができます。 我々はその結果、管理刺されに代入を破るよ 君たちはうまくいけば始めてもらうこともできる それを行う方法を理解しています。 オーケー。 PSET 1だから。 今年は最初の構造を持つことになりpsetを - 質問のセクションのシリーズがあるように起こっている 本当にまたあなたが使い始める際に役立つ質問 psetには、あなたが必要とするいくつかのテクニックを練習。 ので、これらの質問は、私はでカバーするつもりはない あなたのセクションのためのチュートリアル、自分に割り当てられた指導 仲間は実際にそれらの中を歩くために起こっている あなたとの質問。 あなたのセクションの終了時に、あなたと離れて歩くよ これらの質問への回答だけでなく、自信を持つこと あなたが必要となる機能の一部を実装することができます psetの後者の部分について。 PSET 1はマリオを構成している。 そして、それは本質的に我々楽しい小さなプログラムです 典型的なマリオのシーンの半分ピラミッドを書いて、印刷します。 その後psetの第二部は貪欲と呼ばれています。 そしてそう貪欲に我々は本質的に貪欲として働く 誰かが私たちにお金の量を与えた場合キャッシャー、 私たちが望むことを、私たちはその硬貨の最小量を計算する 我々はまだ彼らにその量を与えるために、それらに戻ることができます。 かしこまりました。 したがって、すべてのチュートリアルでは、ツールボックスを持つことになります。 そして再び、あなたはこれですべてのツールを使用しない場合があり ツールボックスまたはあなたはそれらのすべてを使用することがあります。 いずれにせよ、それは何を知っていることは本当に良いことだ あなたが装備している。 だから我々は、私が紹介CS50アプライアンス、君たちを持っており、 それを紹介します。 その後、また、一般的に、良いスタイルは間違いなく私たちの一つである 最も重要なツール。 スタイルは基本的にあなたのコードがどのように関係が読める? 他の誰かが行くとあなたのコードを読み取ったときに、彼らが持っている 簡単な時間? 彼らはそれを理解することができますか? それは優雅なのですか? その後、我々はあなたに有効なユーザー入力を取得する方法についてお話します プログラムマリオと貪欲の両方で、次のことを行う必要がありますので、 入力をユーザに尋ねると、あなたに数のいくつかの種類を与える。 それでは、私たちは番号が有効であることを確かめたいと思う。 次にスクラッチで覚えて、我々は、このような繰り返しなどのブロックを持っていた フォーエバーまで繰り返すか、待つか。 だから我々は今、Cに変換することの種類になるだろうと 一方、そのようなのようなループを見て、これは、do-whil​​e。 その後も我々はまた、上に戻って値を表示する必要があります 画面、それはマリオや貪欲でいるかどうか。 そして、我々は、我々は、文字列から物事を印刷する方法についてお話します 整数および浮動小数点数。 そして最後に、我々は本当に、擬似コードについて話します このコースを通して覚えておくべき重要な概念。 私は、問題のセットで最も私を助ける見つけることだと思うことであり、 任意で考える前に、私が何をしたいのか説明します しかし、単にアクションを記述します。 だから擬似コードは、どのような種類の、英語とCの間に種類のものである 正しい構文ずに処理内容を記述しますが、 十分な構造を提供する。 そして、私は同様にあなたのための擬似コードの例をいくつか持っているよ このチュートリアルインチ オーケー。 ですから、私たち一緒に働くことでしょうと、CS50アプライアンスです。 それは、どのような種類のは、実行されることを本質的に、仮想マシンの 自分のコンピュータ内のコンピュータ。 そして、これは多くの利点を持っています。 一つは、それはあなただろうとツールの多くのプリセットだということです CS50のために必要。 同様に、それは、誰もが同じ地面の上であることを意味します MacまたはPCまたは他のオペレーティングシステムかどうかを指定します。 我々は、すべての仮想マシンを実行することができます。 そしてそうmanual.cs50.net/applianceの指示があります。 そしてあなたは、そのリンクに移動し、指示に従っている場合 その後うまくいけば、アプライアンスをインストールすることができるでしょう。 そこでまず、あなたは、アプリケーションをインストールする必要があります 仮想マシンを実行できるようにするには、実際のアプリケーション。 そしてあなたは、アプライアンスをダウンロードしてください。 しかし、再び、で指示がある manual.cs50.net/appliance。 だから私は、すでに私のアプライアンスをダウンロードしました、そして、私はインストールしている VMware Fusionでそれ。 私はアプライアンスをダウンロードしたら、そこで、私はファイルに書き出されました。 私はオープンに行って、その後どこに発見 CS50アプライアンスを格納しました。 そこから、私はここでそれを実行しました。 しかし、私はすでにそれをここまで持っている、それでは詳しく見てみましょう。 かしこまりました。 だから今我々はCS50アプライアンスの中にいる。 私はそれをフルスクリーンを作りました。 あなたが望むまたはちょうどそれのように持っていれば、それを行うように選択できます デスクトップ上の小さなウィンドウ。 ここでは、との単純なデスクトップを持っている 家庭やゴミ。 あなたがプログラミングに次にメニューに移動し、しかし、もしあなたが見る 私たちはターミナルと呼ばれるものを持っている。 ので、ここでは、我々は我々のコンピュータの周りに移動することができます。 我々はコードを書くことができます。 しかし、実際には、我々は、geditと呼ばれるプログラムを使用して、または "gされます 編集、 "方1。 だから我々は1つがコードを記述することを使用することがあります。 だからあなたが主に使っているであろうこと、この2つのツールを持っている コー​​ドを記述する。 その後、さらに、それは、通常のコンピュータのようなものだ。 我々はブラウザを持っています。 我々は、Google Chromeを選んだ。 私がやったことは、私はすべてを含むようにDropboxをセットアップしたです ドキュメント。 そしてそうそれは非常に奨励している何か。 Dropboxがあれば同期するので、クラウドを使用しています - そう例えば、偶然何かが - のではないことを祈りましょう - アプライアンスに起こり、それがすべてだろう クラウドで同期。 かしこまりました。 だから、それらはあなたがに使用することがありますことをするアプリケーションです CS50アプライアンス。 これで、コマンドライン上を移動します。 端末が実際に実際に道のようなものとして機能することができます にコマンドを入力 - あなたがMacには、Finderなら、好きです。 あなたは、Windowsにしている場合は、私は "私を探検だと信じてい コンピュータ "またはそのような何か。 我々は、アプライアンスに戻ってしまったらそれでは、開けてみましょう ターミナルウィンドウ。 だから、このプロンプトjharvard @アプライアンスを持っています。 ちょうどこれを大きくしてみましょう。 オーケー。 我々はlsコマンドを入力しますので、もし、次に表示されていることのすべて 私たちの現在のディレクトリ内の我々のコンピュータ内のファイル、。 ディレクトリは、フォルダだけのようなものです。 我々は同じ意味でそれらの用語を使用します。 すべての権利、私たちはファイルをリストアップしました このディレクトリにあるということです。 今、私たちは、アクセスしたい場合、たとえば、私たちのDropboxが、その後我々はできる ディレクトリを変更します。 cdとその後Dropboxがそう。 再び我々LS、それから私達は内にあるファイルのリストを参照してください このフォルダにコピーします。 これは私がクリックしてから、私の家に行くのに似ています Dropboxは、次にここにリストを見て。 かしこまりました。 だから、としましょう​​ - 君たちは自分のpset 1を作るしようとしているときに、作ってみましょう ディレクトリはPSET1を呼んだ。 このことからわかるように、だから私たちは、今Dropboxの中にいる ここでプロンプトが表示されます。 それでは、ディレクトリを作ってみましょう。 だからmkdirは、のはそれPSET1呼ぶことにしましょう​​。 それで、今、私たちは、ls場合、再び、我々 PSET1が表示されていることを参照してください。 我々はPSET1内側に行きたいそうだとすれば、我々は、中に入ることができます cdコマンドでそのフォルダにコピーします。 かしこまりました。 だからもう一度、私達か見てみましょう - と言う、別の言い方を行うてみましょう。 これは単に "作成格言に類似しています 新しいフォルダ、PSET1。 あなたが見つけるようにしかし、あなたと対話するでしょう 端末たくさん。 だから、時にはそれがずっと簡単です、ちょうどに速く失わ 物事のこれらの並べ替えを行うための端末で動作します。 オーケー。 そして、これらの他のコマンド。 ファイルを削除するためにrmはあります。 だから、あなたは、単にrmを入力してからの名前 それを削除するファイル。 我々は、後の例をいくつかに行くつもりです。 そして、我々は、manコマンドと呼ばれるものを持っている 関数の種類のマニュアルが表示されます。 繰り返しますが、私は後でその実際の例を持ち出すだろう。 別の本当に重要なツールは、だから、私は簡潔に述べたように 前に、スタイルです。 だから本質的には、スタイルは読みやすさに関係しています。 他の誰かがフォロー、読むことができるようになります、と あなたのコードを理解できますか? これは実際には、あなた自身、あなたのために特に重要です。 あなたが後でそれから遅れてコーディングを更かし、としている場合 この変数を意味するのでしょうか、戻ってあなたのようなね? ねえ、あなたは誰かとグループプロジェクトで作業し、している 両方がお互いのコー​​ドを見なければなりません。 それはあなたが正しくあなたの変数に名前を付けることは本当に重要だ そしてそれはすべての違いになりますので、それは素敵に見えるようにする。 しかし、その後、上記のすべて、申し訳もちろんである。 だからCS50の利益のために、特にあなたのために あなたの見ていきティーチングフェローやグレーダー psetを、してください、正しいスタイルを使用してください。 そして、あなたの指導員とは、非常に幸せになります。 だからもう一度、スタイルは、正しく物事をインデント含む 特にあなたの括弧を使用していて、それらをインデント。 変数に理にかなっているかを命名。 あなたが持っているときに今、私たちは規則に従っ あなたの変数名で複数の単語は、その後 あなたはそれで見るように、それらを下線で接続する そこに例の名前を指定します。 そして最後に、何かがマジックナンバーと呼ばれる。 本質的には、コードを読んでと言っているとき あなたは、変数を持っている - そのような発言になるまで、あなたは、変数を持っていますが、ちょうどいいとは言いません などは10未満です。 次に、あなた年生は、待って、よく行くつもりです その10はどこから来たのか? だから本当に自分が多くのことを説明する事項。 あなたは自分自身を説明するためには、コメントです。 コメントは、おそらくに含めるための最も重要なものだ あなたのプログラム。 そして、それはあなただけではなく、実際に説明するのに役立ちます - それはあなたが種類のあなたの推論などを説明するのに役立ちます あなたが一緒になるだろう。 あなたがそれを行う場合など、再び、それはずっと楽になるだろう あなたのコードに戻って行くと一種のあなたがしている何かを理解する そこにやって。 再び、年生はコメントを本当に好きだ。 だから、よくコメントして - 無料のポイントのようなもの。 そして、誰が無料ポイントを好きではない? また、複数行のコメントを持つことができます。 そして、私はここに、テンプレートの種類を含んでいた。 基本的に、通常これらはあなたの上部に使用されている プログラムの種類には、一般的に説明するものを あなたの問題セットはありません。 あなたの名前、日付、等が含まれています。 そしてそう、私はこの複数行のコメントで述べたように、 manual.cs50.net/style_guideに関する、より多くのヒントやルールを持っている ループのスタイル、とcetera。 オーケー。 だから今、私はあなたのスタイルについてを少し語ったので、見てみましょう アクションでは、この。 かしこまりました。 だからここに、トミーは私たちに楽しく恐ろしいを書きました プログラム内のスタイルの例。 それで、あなたは、ここにすべての権利を参照してください。 これは実際にはすべての権利です。 あなたはここで複数行のコメントを参照してください。 あなたがスラッシュしてから、2つのアスタリスクを使用して起動します。 あなたは、線に沿ってアスタリスクを合わせて、一緒に続ける その後、アスタリスクとスラッシュで終了します。 かしこまりました。 だから大丈夫です。 これはここでいいのよ。 彼は自分のライブラリーを含めている。 しかし、その後、ここで彼は、複数行にまたがるコメントがあります。 これで間違ったことがたくさんあり​​ます。 複数行にまたがるコメントは、右ここで彼が使っている 1行だけのコメントのための構文。 彼はまた同じコメントにすべてを融合させている。 だから我々はそれを回避したい。 その後、ここで我々はこれらのカッコは、たとえば、すべてのことがわかり 場所以上。 インデントが間違っています。 それは本当に決定的にどこに何かをお見せしていません 開始され、別のものは終了します。 その後、同様に、我々は彼がここで定義された変数i = 5を持って参照してください。 しかし、その後、この4人がどこからともなく出てくるnoはあり それがどこから来るのか本当に説明するコメント。 オーケー。 だから今はただ、実際には同じである何かを見てみましょう より良いスタイルを除いてコード。 だから、再び、これは、良いスタイルの一例です 複数行の例。 そして、ここで、それは非常にきれいだ。 我々は彼がここにif文を開始していることがわかり、新たに入る ラインは、開きカッコを持っています。 それから彼は、インデントされています。 彼は、このインデントを維持 - 彼は全体を横切ってこの表示の均一性を保つ プログラムと1ブロックのコードが起動したときに実際に表示され、時 1ブロックのコードが終了します。 これは、開始する我々の側の少しせこいに思えるかもしれません と、しかし、あなたのコードを書いているようにあなたが表示されます。 それは、これを分離することができるのは本当に便利です。 そして再び、あなた年生がいることを本当に好きだ。 そしてあなたはただの数字でを置く代わりに、参照してください。 そこに、彼が実際に変数の反復という。 そして私たちは、実際に今このコードを見ていない しかし、例を見てだけの種類 良い対悪いスタイル。 そして、あなたはここでそれらを横に並べて見てそうだとすれば、あなたはでしょう 確かに右に1を読むことを好む。 かしこまりました。 だから最後にひとつ、私たちは、本物の肉に飛び込む前に、 psetには、あなたのコードをコンパイルして実行する方法です。 それで、基本的にはCを書くとき、それは実際にはありません 実際のマシンコード、ゼロに翻訳され、 マシンが実際に読んで解釈できるというもの。 だから我々は何かを持っている - Clangのは、我々はCのために使用するコンパイラです 多くのコンパイラがあります。 しかし、CS50では、我々はClangのを使用することがあります。 そしてそうClangのは、基本的にはCからマシンに変換 あなたのためのコード。 ここアプライアンスに飛び込む - だから例を見てみましょう。 かしこまりました。 だから今我々は我々のホームディレクトリにいる。 任意のコードがどこにあるか私たちは、実際にはありません。 それでは、ここで、Dropbox/walkthrough1に私達のディレクトリを変更してみましょう 私はいくつかのコードが保存されている。 我々はlsを押すのであれば、私たちは、私が持っていることがわかり ここにあるファイルのカップル。 かしこまりました。 だから私はすでにhello.cを書いたので、それをコンパイルしてみましょう その後、それが何をするかを参照してください。 だから、基本的なコンパイル·コマンドは、次にhello.cを打ち鳴らすでしょう 本質的には大丈夫と言って、私のためhello.cをコンパイルします。 私は[Enter]をクリックし、右行っているようだ。 再びlsをクリックしてみましょう。 このa.outファイルは現在示されている。 それで、a.outは実行可能ファイルです。 だから、それを実行するには、。/ a.outを実行します。 それで我々は明らかに、このプログラムhello.cを参照してください こんにちは5回出力します。 かしこまりました。 しかし、我々はa.outという名前を使用したくないと言う。 例えば、我々はそのためhelloプログラムを実行したい それは容易に理解すること。 それでは、カーンという音hello.cを言わせて、その後、基本的に次のものが必要です。 フラグと呼ばれるいくつかのものに渡すことができます。 だから大丈夫と言って、よく私はこの何か他に名前を付けたい。 また、様々なフラグの多くを渡すことができます どのように表示されます。 だから、プログラムの何かを命名するためのフラグというあなた は-O欲しい。 は、-oの後に、プログラムの名前を書く。 ちょうどこんにちはそれを呼びましょう。 だから今我々は、我々が実際にハロー実行ファイルを持っていることがわかります。 だから我々はそれを実行することができ、そしてそれは前と同じことを行います。 それで、今、私たちがハローを持っていることを、我々はまたのために、削除することができます 例えば、我々はa.out。 削除、a.outのRMだから、あなたの端末では、尋ねるプロンプトが表示されます あなたのためにあなたが本当にするかどうかを確認する それを削除したりしない。 我々は、y(はい)と言う。 そして、我々はそこに行く。 a.outがなくなっています。 かしこまりました。 しかし、時にはそれがすべてを覚えて混乱取得 我々は含まれており、カーンという音を入力する必要があることを示すフラグです。 そして、我々は、より複雑なプログラムを使用しているときに我々が見るように、我々はよ 別のライブラリを含むこと。 そしてそうClangのへの我々のコマンドがどんどん長くなります。 だからCS50アプライアンスに含ませるコマンドです。 だから、あなたは、単にこんにちはmakeと入力。 おっと。 我々はすでに、この実行可能ファイルを作りました。 だから私はちょうどそれをすぐに削除できます。 ここで、タイプがhello作ってみましょう。 そして、あなたは本質的に作ると言っているここでは、この行に表示 こんにちはでは、一部のコマンドが含まれている あなたのためにそれに入る。 だからCS50アプライアンスに含ませるファイルです。 ですから、ファイルn​​ame.cを持つ場合には、単純に、あなたはすべてやる ファイル名を作ると言っています。 そしてあなたは、実行可能ファイルを持っているでしょう その名前を持つファイル。 はい? スピーカー1:私のコンピュータの場合は、代わりにClangのの、それはGCCと言います。 それが似ている - ZAMYLA CHAN:うん。 だからあなたのコンピュータがあるためClangのとは対照的に、GCCを言うかもしれない GCCはコンパイラの別のタイプです。 あなたががCS50アプライアンスにいる場合は、それ Clangのを使用する必要があります。 それがないなら、多分その後私に話しかけてきたり投稿 CS50に論議し、我々はそれを整理することができます。 かしこまりました。 だから今我々はその後、私たちの基本的なツールのようなものを下に持っていること マリオに飛び込むことができます。 オーケー。 だからマリオは基本的に我々がしようとしているプログラムです マリオの原始的なバージョンの私たち自身の種を作る ゲームの背景。 あなたが知っている、マリオは、通常のパイプと持つ 木といくつかのブロック。 そしてその半分のピラミッドのようなものがあります。 だから我々は、ちょうど、その半分のピラミッドに注力することになるだろう それは一種のハッシュをプリントアウトしたコードは、そのような意思 この形式のブロックの。 だから何が起こると、ユーザーが入力を一定の意志です ピラミッドの高さは、その後、それをプリントアウトします 底がハッシュ残したことなど - とても下部に右ここに - 1は、位置合わせされていること あなたの端末の左下を持つ。 オーケー。 あなたが必要とするので、最初のもの - 私たちが取り組む必要があることを初めての小さなミニの問題はどうですか ユーザー入力を取得する。 だから私たちは対処する必要があるかを、ユーザーが入力してから そこに出力したものの一種。 だから私が書いたapples.cというファイルを見て見ましょう その入力と出力を扱う。 オーケー。 そこでここでは一番上に、私は図書館のことを書いてみました 私が必要とする。 ここでは本当に重要なものはstdio(標準I / O)です。そのお得な情報 標準入力と出力があるため、我々はするつもりだ ユーザ入力を扱うこと。 かしこまりました。 それでは、私は私の主な機能を起動します。 そして私は大丈夫ユーザに尋ねる、あなたはどのように多くのリンゴをお持ちですか? 次に、右ここには、この行は何をしない - 私は場合、getIntの値に変数iを割り当てる。 だからgetIntはstdioのに含まれている機能です。 それで基本的に、それはあなたのためにそれに対処します。 それは、intの入力をユーザーに求めるメッセージが表示されます。 に付与されるものは何でも、彼らは戻って、 変数iが。 そしてそうそれはちょうど少し減少プログラムです 1 iの値と新しい値を出力します。 geditのいいところはミニがあることを実際に 右ここにある端末。 だからではなく、間を前後に切り替えることの geditは、端末は、あなたが実際にすることができます ちょうどここから実行します。 だから最初に正しいディレクトリに取得してみましょう。 それでは、私たちにディレクトリを変更してみましょう Dropbox/walkthrough1。 かしこまりました。 だから今度はリンゴを作ってみましょう、私たちのためにそれをコンパイルします。 それで今、りんごを実行してみましょう。 我々はどのように多くのリンゴをお持ちですか? 私は、3を持っていると言う。 そして、それは "私はそれらの1つを食べるつもりムハハハハ"と言うと言う "あなたは今、2のりんごを持っている"。 かしこまりました。 それでは、それを再度実行してみましょう。 とLet 'sは、私は1のリンゴを持っていると言う。 今、私は0りんごを持っています。 オーケー。 したがって、このプログラムは期待通りに動作するように思われる。 我々の入力数を、それが1で、それが減少し、その後 再びそれをプリントアウトします。 しかし、何が例えば、私は-1リンゴを持っている、場合はどうなりますか? それは非常に意味がありません。 しかし、それはまだ整数だが、プログラムがそれを受け入れるようにします。 そしてそれはあなたにさらに負の数を返します。 だからgetIntはその場合でも、私たちのために1レッスンということだ などの機能およびその他の関連するもの getFloatはまたはGetString - それらはのために、私達に正しいデータ型を取得するにもかかわらず、 例えば、私が今言ったなら[タイピング] それは再試行するように私に言うだろう。 だから、これはあなたの入力を入力し任意のデータを扱います ですが、実際にはチェックされません、まあ、それは実際のタイプです 私がしたい値はありますか? それでは、マリオの1の部分は、ユーザが入力しなければならないということです 半角錐の高さを表す数値 あなたが作っている。 それで、その後、我々はその後、高さのため、このユーザーにメッセージを表示している場合 この上の2つの境界があるはずです。 右か? 仕様では、それが23以上であってはならないと言う 標準のようなものだそのため文字 端末の高さ。 しかし、その後、結合した他のものは、おそらく下界、かもしれない 私たちは、含めたい? 私たちは実際に、バック思考のようなものをピラミッドを描画している場合 ピラミッドがいかに高くするためには、これまでよりも低くすることができる 特定の番号は何番ですか? スピーカー2:3より大きい。 ZAMYLA CHAN:うーん? スピーカー2:3より大きい。 ZAMYLA CHAN:良いポイントだ。 それはかもしれない - 私達はちょうど3つのレベルのピラミッドにそれを制約したい場合。 しかし、ここで考えてみよう - のはあまりにもピラミッドとしてハッシュテーブルは1つのカウントのように言うことができます。 その後、私たちの実際の下限は何であるべきか? りんごに戻って考えると、私たちはしたくない 負の高さのピラミッド。 右か? オーケー。 ですから、ユーザーの入力を要求したとき、あなたはする必要があります その整数かどうかを確実にするいくつかの方法を含める あなたができないため負ではないと、彼らはあなたを提供する 負のピラミッドを描く。 オーケー。 だから、これを実行するにはいくつかの方法があります。 本質的に、一度ユーザ入力を要求すると、要求したい 彼らは正しい入力を提供すること。 だから、彼らは番号を提供することを要求したい それは陰性であるが、24以上である。 だから我々はゼロから23まで、包括的に対処している。 かしこまりました。 だから我々は継続的に要求したい - 彼らは私たちに有効な整数を与えていない場合、彼らがしたい 継続的に何を要求しません。 私に有効な入力を与える。 私に有効な高さを与える。 スクラッチに戻って思い出すだから、我々はブロックまで、この手順を繰り返していたか、 Ifブロックフォーエバー。 それらは、whileループに非常に類似しているループとアール 我々は第二にちょうど入るよ、ループしながら行う。 だから、whileループは、本質的には確認されることを条件があります 同じように、あなたがそこの中に置かするブール値です 角度によるスクラッチのブロック。 つまり、whileループの括弧内に何が起こっているのかだ。 だから、そこの条件のいくつかの種類を持っている必要があります。 我々だけで、先に説明したと、その条件は意志 入力された整数の範囲としなければならない。 したがって、状態はどうかとは何かをしなければならないでしょう 整数は、適切な範囲内にある。 だからwhileループです。 たとえば、整数の入力を要求してから、することができます この入力が有効ではありませんしながら継続的に確認してください。 例えば、再促す続ける、求め続ける 整数のためのユーザー。 だからそれは一つの方法かもしれません。 もう一つの方法は、非常にあるループ、中に行うことができる - されませんが何をすべきかを除いて、whileループに似て に、どのような種類の構文で見ることができます - それはまずDOと実際のループ本体を持っているということです。 それは、whileの条件があります。 だからループしながら何をすべきか - 彼らは何のために便利だと、彼らが実際に実行されるということです コー​​ドは、少なくとも一度は、その後条件があるかどうかをチェック 満たすか満たさない。 あなたは、whileループ、その後の内部で行うを行うことであったので、もしあなたの 文を使用すると、ATだろうからintegerに促すことができる 少なくとも、一度ユーザーを尋ねなければならない。 そして、あなたがそれらをプロンプトの後に、あなたは大丈夫と言うことができ、 よく、かつて私はこれをやった、それは有効ですか? それがある場合は、ちょうど行く続けることができます。 そうでない場合でも、それだけでしばらくレギュラーのように行動します ループしてから、求め続ける。 オーケー。 だから我々はマリオに戻っています。 だから我々の正しいユーザ入力のプロンプトを表示する方法を知っている 右の範囲内に描画します。 だから今我々は、実際にはこの半分のピラミッドを描画する必要があります。 これは、単純なテキスト文字のように見えます。 それでは、実際に開いてみましょう - 私があっただけでなく何ならば、単にウィンドウを開いて、大丈夫と言ってみましょう 実際に手動でそれをやろうとして、1を自分で入力? オーケー。 それでは見てみましょう。 例えば、言ってみましょう、我々はのピラミッドを作りたい 左側に沿って整列し、そしてちょうど何だろう - マリオでは、トップレベルの1つではなく2つのブロックがあります。 だから我々は2から始まります。 我々は、[Enter]をクリックします。 私たちは3つの操作を行い、[4、5を入力します。 オーケー。 だからそれは非常に簡単です。 この問題セットを除いて、我々は、に合わせて、実際にそれをしたい 私たちの画面の右側に表示されます。 かしこまりました。 だから、どのようにあなたの一つは、実際にこのように入力します。 それが右に沿って整列している? 代わりに最初のハッシュを入れての、どのようにあなたは親切なのかもしれない それに沿って移動する? スピーカ3:行を書くのか? ZAMYLA CHAN:うーん? スピーカ3:行を書くのか? ZAMYLA CHAN:うん。 うん。 下線か何かのように同じように書くことができます それが、我々は単にスペースを使用すると言うことができます。 のは、ここのように3つのスペースに入れてみましょう。 その後、次の行は、まあ、我々は2つ​​のスペースを入れなければならないでしょう。 次の行は、ただ1つのスペースを入れます。 そして、私たちの最後の行のために、我々はスペースを入れないであろう。 そして私達は私達のピラミッドがあります。 だからそれは一種のだ - ロジックのようなものを覚えています。 そして、我々ができることをパターンのいくつかの種類を試してみて、見つけ出す その後Cに変換して、ループのいくつかの種類に含まれる。 かしこまりました。 だから、我々は高さ8を持っていると言うし、私たちの最初の行があります 二つのハッシュ。 しかし、それらのハッシュを取得するには、いくつかを記述する必要があります あらかじめスペース。 右か? 私がやったことは、私がちょうど通り抜けたです。 私は自分自身、私のテキストエディタのピラミッド、アウトそれを描いた 次に8の高さを持つピラミッドとどのように多くの計算 私が作るために必要なスペース。 だから私は大丈夫、よく最初の行があると述べた 二つのハッシュを持つことになる。 しかし、その前に、私は入力7スペースをする必要があります。 次回はその後の6つのスペースを有しており、 3ハッシュ、エトセトラ。 だからその後のは試してみて、別の層にこれを持って聞かせ 抽象化。 我々はn番目の行のために持っていた場合、どのように多くのハッシュと方法 我々は多くのスペースを必要とするでしょうか? 誰もがパターンを参照してくださいしていますか? したがって、最初の行には、2つのハッシュ値を持っています。 二つ目は、3を持っています。 第三には、4つを持っています。 だから、n番目の行がなければならないでしょう - スピーカ4:Nプラス1? ZAMYLA CHAN:うん。 Nプラス1。 その通りです。 それでは、我々はハッシュの数があることを行っていることがわかります - 私たちは一つであると、最初の行をカウントしている場合は、数 ハッシュのちょうどそれよりも1つ多くなるだろう。 オーケー。 それではスペースの数はどうですか? それでは試してみて、高さの面でこれを表現することができます。 高さは、まず、8の場合 行が7スペースを持っています。 8から1を引いた値に相当し、その種類はそう。 右か? だから、次に2番目の行は6スペースを持っているとしている、 これは、8から2を引いた値です。 それでは、私はフィギュアの種類にあなたに任せるつもりだ そのためのパターン。 オーケー。 ゼロでしかし、プログラミングで、時には我々は実際にインデックス。 だから我々は、1つではなく、ゼロから始まります。 だからではなく、最初の行を、呼び出される最初の行の、 我々は、これを0番目の行を呼び出すことになるだろう。 だから、あなたがそれを実装する方法に応じて、ある あなたはあなたが起動するかどうか、ゼロから開始するかどうか、非常に気をつけ 一つは、あなたのパターンは、1つで相殺されるだろう。 オーケー。 だから今我々はこの種のプログラムを考え出したので、 大丈夫と言わざるを得ない。 だから階段のレベルの種類毎に、私は印刷するつもりだ などと空白の数や、そのようなと ハッシュのような数。 それは我々が前に確立したパターンに依存します。 オーケー。 行くので、1を反復の方法と種類 物事のセット数を通って、のような一種のforループです リピート10ブロック等を繰り返し、あなたが入力した スクラッチのために数値を入力します。 だから本質的には、階段のすべてのレベルのために、我々はしたいと思う 第一スペースを印刷します。 次にハッシュの数を印刷します。 そして、我々は、新しい行を入力し、それを繰り返したいと思う 再び次のブロックの。 オーケー。 だから、一つの方法を参照しての種類に秒間forループを見てみましょう 我々が設定した番号を経るかもしれない、数を経る この半分のピラミッドのステップ。 だから、ループのための3つの部分で構成されます。 まず、初期化されています。 だから、基本的には変数を設定します。 これは、その値に毎回設定することになるだろう そのループが始まります。 その後、条件を持っているつもりです。 あなたのためのループはその限り実行されます 条件がtrueと評価されます。 そしてあなたは更新条件があるでしょう。 だから、それはあなたが初期化されている変数に関係しています。 基本的に我々が抜け出すことができることを確実にするので、いくつかの方法 ループから、我々は実行され続けないよう それは永遠に。 スクラッチとは異なり、我々は実際には持っていないため、 平野フォーエバーループ。 C言語では、プログラムは最終的に終了する必要があります。 だから我々はいくつかの方法は、我々はそれを停止していることを確認する必要があります。 オーケー。 だから、あなたが使用してみたくなるようなforループの例 マリオはこれです。 だからあなたが0から始まることが整数iを持っている。 限り、それは高さよりも小さい場合は、あなたは本体を実行 ここで内部ループの。 ループのその身体が実行された後、あなたはでしょう 1 iを増やします。 次に、あなたのプログラムは、再度確認したい - 大丈夫、まあ、私は未満である 高さ? それがある場合は、続けているでしょう。 だからここに私たちはゼロから始まりインデックス作成、の一例です ゼロとし、我々 - 私達の条件は高さよりも低いことがわかります。 それで、我々の高さは、例えば、4つであると言う、私 0から始まります。 それは1になります。 それは2になります。 それは、3になります。 そして、一度それがループの更新のために、私は意志と、更新 その後4に設定する必要があります。 しかし、4は4未満ではないですので、次に我々はだろう 私たちのループの残りの部分に進みます。 オーケー。 だからそれはゼロから始めています。 しかし、我々はまた、例えば、1から始まりでした。 我々は1から始まりますので、しかし、我々はより多くの種類の一つに行かなければならない 終了時刻。 我々はより小さいか等しい追加なぜそんなにそのだ。 だから私はコンピュータについて好きなことを素晴らしいことの一つ プログラミングはちょうどので、そこにあるということです 物事を行うには多くの方法。 だからあなたがいるかどうかをあなたが、ゼロから始まるかどうかを選択できます 1から始まります。 あなたが望む場合も、あなただけ使用することができます whileループ、例えば。 それで、あなたは可能性 - 実際にhello.cを開きましょう。 だから我々はここでループのために持っている。 それは、i = 0、iが<5から始まります。 私はそれが何をするかを告げてここにコメントしています。 これは、forループを使ってハローを5回印刷します。 しかし、我々はまた、同様にwhileループを使用してそれを行うことができます。 だから我々はそれを行う方法を見てみましょう。 我々は、forループを模倣しようとしているのであれば、我々はまたしたい 初期化、条件、およびアップデートを模倣する。 だから条件があるために非常に単純であるべき 構文ながらしばらく(条件)、あなたがそれを見たとき、それは言う。 だから、そこに条件だけ入力してみましょう。 I <5。 オーケー。 だから我々は我々が別れを印刷したいことを知っています。 我々は、それは我々のループの本体であることを知っている。 しかし、我々は、初期化が不足している とアップデート、右か? 私たちは永遠にループを持つことができないためです。 それが終了することがあります。 だから使用して、ここで初期化にはいくつかの種類を追加してみましょう 私達が私達のためにループ内で使用するものと同じものは、int i = 0の。 オーケー。 だから我々は、int iで起動します。 我々は、私が5未満である限り、このwhileループを繰り返します。 それでは我々はアップデートです一つのことを、逃している。 それでは更新我々は本質的にあった場合に使用する必要があるでしょう 上記のループを再現? 我々は、iが0に等しい初期化されています。 我々は、私が5未満である条件を持っています。 そして、ここでは、右の更新ですか? だから我々はそれをコピーしたい。 私たちは大丈夫と言いたい、i + +は。 つまり、I = I + 1と言うように、同じことだ。 しかし、それはそれほど頻繁に使われているので、の省略形に過ぎません iを言って+ +。 グレート。 オーケー。 ここで私は実際に私のリンゴのプログラムを終了しませんでした。 だから、僕は、Control-Cをクリックして、すぐにそのつもりです 私のプログラムのブーツ私outおよびもたらす 私には、端末にバックアップします。 だから、あなたがバグに遭遇した場合、例えば、その そのようなそれはあなたのことを、whileループを更新するのを忘れた 終了し、無限ループを入力してから、次のことができます それから抜け出すためには、Control-Cを使用しています。 かしこまりました。 だから、我々は正しいディレクトリにいる。 それでは挨拶しましょう​​。 我々がhelloを実行した場合、その後、私たちは別れのループがないことがわかり 私たちのためのループとまったく同じことが行われます。 だからそれはただのヒントだ。 forループとより快適と思っているかどうか whileループで、彼らは交換することができます。 いずれあなたがを反復処理するために使用したいので、1 - この場合 - マリオピラミッドの高さ。 あなたがゼロから開始した場合など、再び、これは、ちょうど思い出させてくれます あなたの変数のために、あなたは別のを持ってしたいと思う あなたが一度に開始した場合よりも条件。 だから、この種の表は、アラームを示します。 あなたは、次に、例えば、10回繰り返したい場合 ゼロで、変数を起動することができますどちら。 そして、あなたの状態が10未満とすることができる。 などのようなものを使用すると、その行列を示しています。 オーケー。 だから我々はマリオを経てきました。 我々は、オーケー、よく我々は正しい入力をチェックしなければ、言ってきた ゼロと23インクルーシブ。 我々は、パターンのいくつかの種類、方法のいくつかの種類を見つけるつもりだ n番目の行またはi番目の行を表現する。 そして、我々は我々がこれを印刷しようとしている、オーケー、決定するつもりだ 多くのスペース、この多くのハッシュ、新しいライン。 かしこまりました。 だから我々はそれを持っている。 だから今我々は貪欲に進むことができます。 貪欲は、ユーザーがあなたの額を使えるようにするプログラムです 本質的にキャッシャーとしてご返却する必要がある現金。 しかし、あなたはできるだけ少ない硬貨として使用したい。 貪欲アルゴリズムが入ってくる場所なので、この場所は、ある 我々は可能な硬貨の最小量を使用したいでしょう 変化の量を確認します。 オーケー。 ソリューション内のこの例は見えるかもしれませんので、 このような何か。 あなたが実行する。/貪欲。 あなたが負っているだけでなくどのくらいの変化は、大丈夫と言うするよう求めている? その値は、ドルの値になるだろう。 だからそれはフロートになるだろう。 あなたのプログラムは、最小量を計算します 、このインスタンスでは、0.32ドルを作るために必要なコインの。 など最低限の数は4つです。 我々は何をすべきかを把握する前に、散歩のようなものしてみましょう について、あなたは行くかもしれないという過程を経て。 入力が32であるならば、それらを本質的に私は使用するつもりだ 私は多くとして使用する場合はコインの最低額 できるだけ大きなコイン。 右か? だから、4分の1として使用する方がずっと楽だ 5セント硬貨に反対した。 だから、としましょう​​、あなたは0.32ドルを返す必要があります。 まあ、私はこの中で四半期を使用できますか? うん、することができます。 そして、あなたは0.07ドルに減少したことになる。 私はあなたを返済するために別の四半期を使用できるかどうか見てみましょう。 いや、まあ。 私はその中の四分の一を収めることはできません。 だから私は、次の最大のコインに移動するつもりです。 私は一銭も使うことができますか? 0.07ドルは、全くあなたは0.07ドルを支払うためにダイムを使用できません。 それで、あなたはノーと言う。 ニッケルで次のいずれかに移動します。 あなたはニッケルを使用することはできますか? はい。 セブンは0.05ドルよりも大きいので、私たちはニッケルを使用することができます。 そして、我々は残された2セントを持っています。 我々はペニーを使うことができますか? そうだ、我々はできる。 私たちは別のペニーを使うことができますか? はい。 私たちは別のペニーを使うことができますか? いいえ、今、私たちが成功を持っているので、 背中ユーザーを支払った。 となるように使用される4つの硬貨を合計します。 だから我々は、すべて、そのプロセスを考える 時間は大丈夫決める 我々が使用できる最大のコインは何ですか? かつて我々はそれを使用して、我々は同じ種類ではどのくらいの精神的なメモを保つ さらに我々は、ユーザを返す必要があるお金だけでなく、どのように多くの 我々が使っていたコイン。 オーケー。 だから、再び、最初の一歩 - ちょうどマリオのよう​​に - プロンプトが出されます 合計金額のためのユーザー。 ので、この量があることを行っている - それは我々がしようとしているので、小数点以下の値を持っているために起こっている ドルのためにそれらを求める。 だから、そのデータ型は整数であることを行っていない。 しかし、それはなるだろう - ええ、フロート。 しかし、ちょうどリンゴのような、浮動小数点数は、正または負になることがあります。 それでは、あなたが値をチェックするときは、するつもりだ あなたのフロートいることを確認します - ユーザー入力 - 非負である。 オーケー。 我々は、プログラム全体に浮動小数を扱うことができ、表現する 0.25分、0.1、とceteraによってダイム。 しかし、私はただ純粋セントで対処することがずっと容易見つける。 また、 - そして我々は少し後で、このことについて話をしよう - C言語では、浮動点が不正確と呼ばれるものを持っています。 ですから、例えば、0.12で入力し、コンピュータ 実際0.1111119などの店舗や まあそんなところです。 だからセントに変換することがはるかに簡単です。 では、どのようにセントにドルの価値を変換するのですか? スピーカ5:タイムズ、100でそれ? ZAMYLA CHAN:うん。 うん。 だから我々は、100で倍のそれであろう。 しかし、浮動小数点約1トリッキーなことがありということです 一部不正確です。 だから、その一例を見てみましょう。 だから私はimprecision.cを開くつもりです。 オーケー。 これは非常に単純なプログラムです。 それは、floatを要求し、それを戻して出力します。 ターミナル内の1つの素敵なヒントは、あなただけの明確な入力することができており、 その後は画面のクリアを持っています。 そしてあなたは、以前の出力または任意のを見てする必要はありません エラーやバグレポートは、そのような何か。 オーケー。 それでは、不正確を作ってみましょう。 それを実行してみましょう。 だから私はhaven't - 私のコードでは、私はすべてのプロンプトまたはそのような何かを印刷していませんでした。 だからそれだけでカーソルが点滅しています。 だから、それはちょうど私の入力フロートに待っている。 だからlet's - ランダムな浮動小数点数。 そして、あなたはそれをバックプリントしますが、いくつかの余分を持っていることがわかり 我々は間違いなく含まれていなかった数字。 だから我々はそれがないことを確認したい 我々のプログラムで行われます。 それでは、私たちが何をしたいのか、我々が実際にいることを確認することである 種類で適切な値に四捨五入。 右か? それで、幸いにも、我々はラウンド含まれる関数を呼び出している アプライアンスインチ それは、数学ライブラリです。 あなたがラウンドを使用する方法を知りたい場合は、実際に使用 マニュアル。 あなたは男の丸をクリックすることができます。 その後、ここでそれが出てくる - 最終的に解読することが少し難しいかもしれませんが。 あなたはそれのこつを得るでしょう。 それあなたどんな関数が、その後いくつかのショーの一種 その使用の可能性。 ですから、最終的にから適切、有効な入力を取得するとき ユーザーは、その後、セントに変換したいと思います。 あなたはこれを避けるように、値を丸めることを確認してください 浮動小数点の不正確。 オーケー。 だから我々は合計金額をユーザーにプロンプ​​トが表示されました。 今、私たちが何をしたいのか右、本質的にチェックするのですか? わかりましたので、私は、可能な最大のコインを使うことができますか? あなたができる場合は、それを使用します。 あなたがこれまで使ってきたどのように多くのコインを追跡し、 も減少量。 右か? そしてあなたはチェックするつもりだ。 いったん種類の四分の一を使い果たしてきた、あなたは行き​​たい 次の可能なものに。 だから、どのような構造やループの種類私たちかもしれない 継続的に、我々はまだ使用できるかどうかをチェックするために使用したい 四半期、例えば? スピーカー6:より大きいながら価値? ZAMYLA CHAN:うん、完璧。 その通りです。 だから、それより大きい値である間。 だから我々はお返ししなければならない値がまだある間、 四半期よりも大きく、我々はまだ四半期を使用できますが、 宿舎を使用しています。 それを追跡します。 そして、行き続ける。 パーフェクト。 オーケー。 ああ、ここで私はちょうど印刷する方法についてはいくつかのヒントを用意しました タイムアウト値。 だからあなたのprintf関数では、我々は通常ちょうどしてきた 文字列を扱う。 しかし、あなたはintまたは単に任意のタイプのをプリントアウトしたいとき 数字には、プレースホルダの種類を書き込むの種類があります。 だから、整数のパーセント、%dによって表さだ。 あなたは、その後、あなたが実際にそうしたら、それを書こうと思います - コンマの後 - 実際にそこに何が起こるのか値を入れます。 右。 オーケー。 だから我々は我々がいるかどうかを確認したいと判断した - これを行う1つの方法は、連続しているかどうかを確認することであろう 我々はまだ続ける、四半期を使用した後の四半期を使用でき、 追跡し、次の最大値に移動。 今、あなたはこれを行うことができることをきちんとした方法の別の種類です モジュロ演算子を使用しています。 だから我々はすでにプラス、マイナス、乗算、および除算を持っている 私達に利用できる。 しかし、剰余演算子は端正の一種である。 それが何をするか、それは実際にあなたの残りの部分を返す 二つの数字を割る。 だから、と言うでしょうしたときに長除法で覚えていれば、 3で割った74を実行し、あなたがそれを書くと、キャリーオーバー 減算してから、終了時に下部の番号です 残り。 まあ、モジュロが何をするか、それは実際にちょうどあなたをすることができます。 だから74モジュロ3はあなたに2を与えるだろう。 いずれかが存在しないため、同様に、10モジュロ2には0を与える あなたが2で10を割る余り。 よく6モジュロ5,5はその後6に1回になり、 それが1以上残っている。 あなたが7を持っているなら、よくモジュロ9,9は7より大きい。 だからそれは、他の回に行くことはできません。 だからそれは、戻り値が7であることは理にかなっています。 あなたはモジュロを考えればそうなら、どのようにそれはあなたの残りを与える あなたが何かを分割した後、どのように、どのような種類の見ることができます 右、貪欲にそれを使用することができるかもしれない? に、どのような種類の部門と多分モジュロを組み合せて使用する場合 オペレータは、そのようなことは、あなたは冷静さを持っているかもしれません 問題セットにアプローチする数学的な方法の一種。 だから今我々は、異なるのカップルがあることを知っている の多くは間違いなくある - 私たちはこれを行うことができる方法 でも、whileループを書くためのさまざまな方法。 だから私はここにいくつかの擬似コードを書いている。 それはあなたの骨格のようなものと同一とは限りません あなたが書いたコード。 しかし、本質的には、思考のプロセスと方法です 我々が議論と同じように。 そこでまず、最​​初の行には、一定の金額を得るために言っている ドルインチ そして、暗黙のセントに変換されている。 宿舎を使用することができるしながら、我々がしたい カウントを増やす。 そして、我々はその価値、量を減らしたい 我々は戻っています。 ここで見たように、それはかなりではありませんが、私もしました 物事を下げ、私の内側に私の条件を入れて 括弧。 それでは、この種のは、私を取得することを始めました。 そして、後に、私はちょうど構文を調べることができます。 しばしば問題については本当に難しい部分は、することです あなたがする必要があるかを正確に理解しています。 だから一度はダウン、それはその後にずっと楽だという書き込み 擬似コードに変換されます。 そして、擬似コードから、構文は非常に簡単だ。 だから我々は四半期が、使用することができますが、カウントを増やしてください 量を減少させる。 ダイムを使用することができるが、あなたは上のようにそれを行うので、 前後まで、あなたのペニーをすべて使い果たしてしまった。 あなたは次のようになります使用されるコインの枚数を、プリントアウトする ユーザを作成するための最小量は、値を入力する。 そして、そこにはあなたの貪欲アルゴリズムを持っています。 そして、一度、あなたもPSET 0が完了したので終了します。 誰もが何かについて疑問を持っていますか? かしこまりました。 まあ、私はあなたが持っている場合、後に少しのために周りに固執する ご質問。 これは、チュートリアル1であった。 来てくれてありがとう。