[音楽再生] ANDI PENG:これはCS50であり、 セクションの週2への歓迎。 週ながら、実際に 実際に私たちのclass--の2、 最初の週私たちは、セクションを持っていました。 あなたのすべてのどのように多くの手のショー、 先週のスーパーセクションに来ましたの? [OK]を、それは大丈夫です。 それで大丈夫です。 どのように多くのあなたの見 スーパーセクション先週? OK。 そして、あなたたちは大丈夫でした 問題に1を設定しますか? だから私たちは持っていることそれを取るつもりです 本当にインテリジェントな子供の束 このクラスとの事で正常になります。 OK。 だからfirst-- まず、私たちは簡単になるだろう 今日の議題の上に行きます。 私たちはもちろん物流について話しましょう​​。 あなた方の多くはおそらく 質問を持っています どのように物事がこのコースで実行されます。 私たちはそれらをお答えします。 私たちは簡単になるだろう ケース内のループの上に行きます 君たちのいずれかが、スーパーセクションを逃しました。 私たちは、ASCIIマッピングについて話しましょう​​。 私たちは、配列について話します、 機能、コマンドライン引数。 そして最後に、どのような君たちおそらくすべて 本当にについて学ぶためにここにいたいです、 あなたのpset2です。 我々はいくつかの素晴らしいトリックを持っています そしてそれを行う方法についてのヒント。 OK。 また、第二に、私たちは持っています ここでお菓子がたくさん。 お菓子が好き誰でも、 ちょうどここに出てきます。 いくつかをつかみます。 私が抱えています。 我々は、オフィスでのトンを持っています。 私は本当にしたくありません 一日中お菓子を食べます。 君たちは、すべてのお菓子を食べる必要があります 私はあなたたちのためにここにそれをもたらしたからです。 ただお菓子を食べます。 すべてのセクションお菓子があるでしょう。 だから最初、私は誰ですか? 私の名前はアンディ鵬です。 私はここでエールでCS50の頭TAです。 とに加えて、 それは、私もbe--ます 誰もがあなたのランニングをlike--ならば バディは、あなたの悩みを聞いてくれる人。 もしあなたのpsetの原因で前の晩、 あなたは何が起こっているか見当がつかない、 私を打ちます。 私たちは、エトセトラ、一緒に同情しますよ。 ちょうど私のようにここにいることを知っています フロントラインとしてあなたのためのリソース 助けにあなたたちはどのように把握します CS50で以降の問題を解決します。 私のメールはandi.peng@yale.eduです。 私はまた、個々のを送信します その中に私の電話番号と電子メール そのように誰も インターネットは私の電話番号を確認することができます。 いつでも私に電話して自由に感じます。 真剣に、私の携帯電話は、 通常、私の手に取り付けられています。 私は応答しないことがあり 数分以内です。 私は数時間以内に応答しないことがあります。 しかし、私は場合は、あなたを保証することができます あなたが私を呼び出した場合、あなたは、私にメールし 私をテキスト、私は24時間以内に回答いたします。 多くの場合、私は前に応答します 私は理解しているため、その 誰もがいくつかの問題を持っていること、 あなたはあなたの答えをしたいです 非常に迅速に回答します。 ただし、呼び出す場合 私の30分前 木曜日によるものであることが作品 、アンディは、私を助けるようなことnight--、 私が与える可能性がありstarted--ていません あなたはその悩みを聞いてくれる人。 しかし、それは考える時間がかかるかもしれません その次の時間をしない方法について説明します。 OK。 おっとっと。 どのように私は戻って行くのですか? そうしよう。 したがって、このコースでは、我々が持っています 皆のためのサポートのトン。 ちょうどに加えて、 ここにセクション、これを使用 毎週は90を過ごすために取得 私と一緒に素敵な分、 我々はまた、オフィスの時間を持っています。 どのように多くのあなたの人がすでに持っています ヘルプは営業時間に行きましたか? グレート。 私たちだから、見ることは本当に良いことです 45以上のTAとCAのスタッフを持っています ここにいるこのコースのために訓練 あなたのpsetを持つ人を助けるため。 月曜日彼らはTEALで開催されています ここ17ヒルハウスで教室 イェール大学。 火曜日と木曜日、 彼らは、コモンズで開催されています。 ほとんど11時00平日8:00。 で来て、出てきます。 どれでも問題なしproblem-- ただで来ます、 し、我々はそれであなたを助けるでしょう。 第二に、オフィスの時間に加えて、 そして、のセクションでは、我々はまた、ショートパンツを持っています。 誰もがこれまでのカップルを見ています ビデオで短絡やチュートリアル ウェブサイト上の? OK。 そこで、彼らは本当に、本当に便利です。 私たちの美しいハーバード生産 その学校にあそこチーム ノースアップ、彼らが撮影し、生産しています これらの信じられないほどのウォークスルー動画。 彼らはあなたを介してステップバイステップで取りますよ どのように問題を解決について移動します。 多くの場合、あなたは混乱している場合 シンプルなコンセプト、単数形の概念、 我々は、おそらく持っているので、見てみましょう どこかで当社のウェブサイト上で、その上に短いです。 そして、それは通常、素晴らしいリソースです あなたが最初にしているときを探すために 問題を処理する方法で失われました。 第三に、我々はまた、持っています study50とreference50。 だから、上の50の勉強 ウェブサイトは、単にリンクです。 それは私が思う、だ、study.cs50.net またはそのような何か。 ちょうどそれをGoogleに。 私たちは、調製されたスライドがたくさんあり​​ます。 私たちは、ショートパンツがたくさんあるし、 物事はすべてのコンパイル済みwalkthroughs-- すべての皆さんのために非常に素晴らしく、端正 拾い読みする、任意の概念を参照してください あなたが混乱していること。 それはおそらくカバーされるだろう そこstudy50でオーバー。 同様のReference50--。 我々は、様々なノートの多くを持っています あなたの処分のために容易に入手できます。 そして最後に、我々は何を持っています CS50が議論と呼ばれます、 でフォーラム、前夜場合 あなたはあなたの問題をやっている、と言います、 あなたが質問があります。 議論CS50にログインします。 質問を投稿してください。 そしてhundreds--の1 ピアのおそらく、thousands-- オンラインこのクラスを取ることで記録します。 そしておそらく誰かが得ることができます TAの前に、あなたの答え。 それは本質的にだけです その私たちはすべてのことができますオンラインフォーラム 私たちの問題を議論するために使用します。 カッコいい。 OK。 それで問題が設定されます。 我々は右うとしています 問題の厚いは2を設定します。 私たちの多くは、既に持っています 1を設定し、問題を通して苦労。 我々はすでに、おそらく待っていることを知っています 最後の夜はあなたのpsetを行うため CS50に行うには賢いことではありません。 ヒントと基本的にするためのヒント 成功は全体の仕様を読んでいます。 どのように多くのあなたのを既に持っています PSET 2のための仕様を読んで? OK。 それは固体の量です。 私はあなたたちは、おそらく認識している知っています 今ではスペックは本当に長いです。 彼らは本当に、本当に長いです。 これは、すべての行を読み取るためには本当に難しいです 言葉によってその慎重に言葉の。 あなたはどこに脱脂したいです それはあなたが何かをするように指示します。 私はあなたを保証することができ、それをしません。 あなたがそれを行う場合は、おそらくです どこかに欠場するつもりは どこにそれはあなたに通知します 問題を開始する方法 またはそれはどのような名前に説明します あなたの問題やそれを示しています、 これはおそらく最良の方法です あなたの問題をやって起動します。 それから、あなたは失われます。 あなたを読み取るしようとすると、 途中スペック、 重要な多くの あなたがいないしていることでinformation-- 本当にアクセスできるようにするつもり。 だから、全体の仕様をお読みください。 全体の仕様を読むようにしてください あなたがセクションに来る前に、 その後ので、ときに我々 PSETの話を、 我々はすべてのアイデアを持つことができます 何が起こっているの。 第二に、この概念は 私が参照したいだろうと コー​​ス学期を通してたくさん。 しかし、本質的に、右、途中で私たちを満たして? もちろん、あなたのTAとジェイソンとして私、 あなたの教授として、マネージャとScaz Davidあなたの教授とのすべてのように このコースの他の素敵なのTA、 このcourse--でアシスタント 我々は最善を尽くします あなたが設定されていることを確認します このコースで成功するためにアップ。 私たちは、セクションを開催します。 私たちは、オフィスアワーを開催します。 私たちは、お使いの携帯電話にお答えします 呼び出しは、あなたの電子メールに答えます 作るために私たちができることはすべてやります 必ずご質問は回答されています。 しかし、あまりにも私たちを助けて。 途中で私たちを満たしています。 あなたは営業時間に来る場合 セクションに行ったことはない、ではありません いいえを持つ、講義を見ました 何が起こっているのアイデアは、私を助けて、ようです。 私はよく、私は申し訳ありませんが、同じようになるだろうよ。 それは貸すために時間がかかるかもしれません 泣くその肩、 私はわからないので、 私はあなたを助けるために何ができますか あなたは、少なくとも助け​​にしようとしていない場合 初めに自分自身を少し。 途中で私たちを満たしています。 あなたが知っている、来てください 答えてもらうために準備 材料に従事する準備ができています。 それはあまりの事になります 関係者全員のために容易になります。 ええ、それはかなりそれです。 グレーディング。 だからシラバスに、それはかなりです 綿密どのように我々のグレードについて。 しかし、本質的に、内訳 この中にあなたの等級の50%です これは、のpsetになります それはだから、素敵です あなたは広大を費やしている場所 上のコースの時間の大半。 40%クイズ、そしてあなた 最終的なプロジェクトは10%になります。 全体で2クイズがあります 学期のコース。 私は、時間と日付があると思います また、シラバスに記載されています。 道頂きます あなたのpsetを採点します 私たちは基本的に4を持っているということです 私たちは各学年に割り当てる値。 我々は、範囲の値を有し、 正確性、デザイン、スタイル。 ご覧のように、それは私たちのようなものです psetの計算式。 三、我々はほとんどを与えます 正確さ、重量、 明らかにあなたのコーチのため 例をテストする必要があります 我々はそれがためにテストすること。 君たちはすべて持っています あなたの処分でcheck50。 これは非常に便利な機能です あなたたちはすべてのことができること 当社のサーバーにコードをアップロードし、 どこに私たちはあなたのためにそれをチェックします。 そして、あなたはそれらを見てきました しかめっ面の顔、スマイリーの顔。 彼らは本当に、本当に便利です。 ことはしないでください 試行が好きな学生 それらにすべての答えにハードコードします。 私は間違いなくどこのpsetを見てきました 誰かがcheck50のすべての値を見て そして彼らは、ハードコーディングされた場合in-- この数は、この数をプリントアウト。 その番号ならば、その番号をプリントアウト。 そんなことしないでくれ! たとえ技術的に check50は正しいです、 解決のあなたの方法 問題は正しくありません。 だから控えめcheck50を使用しています。 しかし、またていることを確認します それが機能しています方法を理解し、 プログラムが機能しています check50に加えて、 我々は、すべてをテストすることはできませんので、 check50の可能場合。 私たちはそれらのいくつかをテストすることがあります。 デザインは基本的に、どのように あなたのコードはうまく設計されたのですか? あなたは、コピー&ペーストの複数ある場合 多くのコードの行数、何度も。 たぶん、あなたは全くありません あなたのコード内の最高のデザイン。 多分それはそのループを追加してみましょう。 基本的に、ここでそれだけですべてです あなたのコードを実行しようとしている程度、 同様に効率的にコードを記述しようとしています あなたのプログラムが実行されるように、できるだけ できるだけ早く。 最後に、我々はスタイルを持っています。 だから、スタイルはの一種であります 任意の、主観的な用語。 私たちは正式に持って知っています CS50のスタイル50ガイド、 どこにそれはあなたを伝え、ああ、あなたは ここにスペースが必要です。 あなたがすべきフォーマットの種類 コー​​ドこの方法。 あなたはこのようなものに名前を付ける必要があります。 私は実際にどのように、それ自体が、気にしません あなたはあなたのコードのスタイルを選択し、 ちょうど限り、あなたは一貫滞在として。 たとえば、あなたがしたい場合 あなたの4の後にスペースを残します あなたの4ループの前に、 ちょうどたびにそれを行います。 種類のそれをしないでください。 それを他の回をしないでください。 あなたが巻き毛を維持したい場合 ブレーススペース特定の方法、 ただ、常にそのように行います。 種類のどこかでそれをしないでください こことどこかにない存在。 我々はグレーディングしているとき、 それは本当に難しいです 私はどのようには考えている場合 あなたは、あなたのコードをフォーマットしています 物事は奇抜なと場違いです。 あなただけの一貫性を維持するなら、それはです 大きいとして私のためにはるかに簡単 あなたのコードを読むことができるようにします。 それは学生としてあなたのためにはるかに簡単です あなたのコードに目を通すことができるように そして、間違っているものを見ます 問題があると、なぜそれがスラッシュ。 スタイルは、最も簡単なものの一つです あなたたちは、完全なスコアを取得するために行うことができます。 基本的に、あなただけの場合は、気にしている場合 あなたは注目の5分を支払います 毎週あなたのコードに、次のことを行う必要があり 完全なスタイルのポイントを取得します。 最後に、我々はと呼ばれるもの持っています スコープの乗数。 Scope--私はそれが大きな知っています 特にこのクラスの単語、。 しかし、スコープ、すべてその手段 あなたがしようとしているということです あなたの能力を最大限にのpset。 次の3つのうちで有効にした場合 あなたの4つの問題の しないでください 最後、あなたはおそらくしています 範囲でいくつかのポイントを失うつもり。 あなただけの問題を起動した場合でも、 それを歩くためにあなたのベストを尽くします。 それが動作しない場合であっても、それを回し、 それが示していると示しているので、 あなたがしようとしていること、その私たちに あなたは問題セットを実行しようとしました あなたの能力を最大限に。 そして、私たちはあなたを与えることができます スコープのフルポイント。 スコープときに我々のためにも非常に重要です 最低PSETスコアの低下について話しています。 だからかけ 学期は、あなたたちは9のpsetを持っています。 そして、我々は実際にドロップされます それらの9のうち最低のスコア、 しかし、あなたは完全な範囲のポイントを持っている場合に限ります。 ですから、不完全なのpsetでオンにした場合、 残念ながら、我々はその1を削除することはできません、 あなたの範囲のため ポイントは完了しませんでした。 だから、あなたはひどい週持っている場合でも、 あなたが死んでいると、あなたは病気だ場所 またはあなたの犬が死んで、あなたの猫が死んで、 あなたは宿題で過負荷にしています、 ちょうどPSETを試みます。 あなたの能力を最大限にそれを実行してください。 それが動作しない場合、それは問題ではありません。 ただ、中にそれを回します。 少なくとも我々が与えることができます あなたは努力のためのポイント。 このクラスの努力のために、A。 努力のために少なくとも最低のスコアの低下。 そうそう。 それはかなりそれです。 誰もがそのように質問を持っています これまでクラスでどのように我々グレードの? あるいは、これらのいずれか? これらのいずれのでfar-- セクション、営業時間? クール。 OK。 だから、これはその主題はnoです 1は本当にについて話をするのが好きです。 私は実際にそれについて話すのが好きではありません。 君たちは本当にしたくありません 私はそれについて話を聞きました。 しかし残念ながら、我々はすべて それについて話をする必要があります。 ダビデは20分費やし それについて話して講義。 そして、それは主題であります 学術正直。 だから我々はすべてここにおそらく書かれています 私たちのエールのキャリアの中でエッセイいつか。 我々は、おそらく我々がきた話を得ています 私たちのエッセイを盗用しないように言われて、 その仕事は私たちのものではありませんので。 コンピュータサイエンスでは、我々は持っています コンセプトの同じ種類。 あなたが提出するすべての作業、 あなたが書くすべてのコード あなたが書いたコードにする必要があります。 あなたがしたコードであってはなりません どこか別の場所からコピーされました。 コー​​ドされるべきではないこと あなたはグーグルとにそのまま流しこむました それが動作するかどうか、あなたは本当に知りません。 あなたは一種の感を持っています それは本当に何をしているではないです。 疑わしい場合、基本的に、 それだけで合理的です。 私たちのシラバスでは、我々は持っています 物事の全体リスト 我々は、合理的な参照してください。 妥当ではない対。 例えば、合理的な あなたとあなたの友達です 行くにはどのような最善の方法を議論 論理的に問題を解決します。 それはかなり合理的です。 あなたならば合理的な何をしているではありません みんな、集まって同じコードを入力しました、 そして、同じコードになりました。 それは合理的ではありません。 同じこと、エッセイのようなもの。 あなたが議論したい場合は ねえ、あなたの友人と、 これは私が書きたいものです。 これらは私がしたいステップです 偉大な、それについて書くために取ります。 それは素晴らしいです。 お互いと協力してください。 君たちが起動した場合 同じことを書いて、 同じエッセイに回し、それはあまり大丈夫です。 だから、疑わしい場合には、ちょうどそれをしません。 ここでは、CS50に、私たちはスクリプトを持っています その実行は、テストするために自動化します あなたのコードの正しさだけでなく、 また、あなたのコードの独自性。 だから位置で私たちを入れないで下さい EXCOMMにあなたのケースを参照すること。 ちょうど皆のためだけのを聞かせてください この素晴らしい経験にします。 誰もがより良い学習し、 我々はすべての幸せであり、 我々は、すべてに設定されています このコースで成功。 非常に何か このクラスのユニークな 私は誰もが本当にすべきだと思うこと 注意を払う私たちが持っているということです 何の後悔と呼ばれています 私たちのシラバスで句。 だから、本質的に、72時間以内、もし あなたが何かをやったと信じて あなたがた、本当にわかりません 適切な場合には、私たちに来てください。 私たちはあなたを約束し、その72時間以内 我々は、ケース自分自身を処理します 以上に言及することなく、 行政の権威。 だから、あなたは私に来ると言うならば、 アンディは、ちょっと、私は本当に申し訳ありませんが、 しかし、私は私の中でカップルの行があると思います 私は一種のグーグルコードの最後の夜、 スタックの降りました オーバーフロー、コピーと貼り付け、 私は本当に、本当に申し訳ありません そのことについて、私に知らせてください。 ちょうどそれが化膿させないでください そしてちょうど私がそれをキャッチすることを願っています。 我々はそれをキャッチします。 ただ、私に来ます。 私は72時間以内に知ってみましょう。 我々は解決策を考え出すだろう。 そして、我々は、我々はを参照していますことをお約束 基本的に大学当局。 だから、あなたの最善の利益にです ただみんなと正直に言うと コー​​スに関与。 OK。 OK。 だから今、すぐに前に 私は上に移動、誰にもありません 物流に関する質問を持っています どのコースで我々は実行するつもりです、 どのセクションを行っています 、そのいずれかを実行するには? OK。 うん。 聴衆:[聞こえませんか]? ANDI PENG:うん。 だから、どのように多くのあなたのquizzes-- 月曜日/水曜日のセクションの? にどのように多くのあなたのあります 火曜日/木曜日? [OK]を、ので、ここでは固体分割です。 だから我々は実行方法 イェール大学では、我々です 別々の2を持ってしようとしています 各section--ための一つのquizzes--こと 授業中に撮影されます。 私は、それは10月、10月の終わりだと思います 週1としてそのようなこと、 クイズの。 うん、これだけのクラスに来ます。 その月曜日か水曜日に、 あなたはクイズを取りますよ。 その火曜日または木曜日に、 あなたは別のクイズを取りますよ。 しかし、同じ材料がカバーされます。 うん。 良い質問。 うん。 観客:我々は 私たちの成績をチェックするために行きますか? ANDI PENG:うん。 だから私は、発送させていただきます 電子メール何でも毎週 クイズはgraded--ある場合や、 申し訳ありませんが、時のpsetは傾斜しています。 Psetは通常、電源が入っています 正午または金曜日までにインチ だから私は私がすることを約束します あなたに戻ってそれらを取得しよう 以下の金曜日の正午まで。 たびに私年生、私が送信されますPSET、 グレードブックに通知アウト それは、あなたのスコアを伝えます オンラインで閲覧することができます。 だから、右今週、私の後に 先週ののpsetをグレーディング仕上げ、 あなたたちは、電子メールを取得します 通知は、あなたを伝えます ちょっとこれはどこにあります あなたの成績を見に行きます。 そして、あなたはすべてのを見ることができます あなたの成績の内訳。 コメントを見ることができます。 ああ、迅速な事も。 偉大でコメントセクション ここで、私はおそらくよ本です 私の時間グレーディングの大半を費やしています。 それでは、一つのことは、 本当に重要な時 皆さんが見ています あなたのpsetであなたの成績 見ているだけでなく、 物理的なスコアで に時間を割いて 実際に私のコメントを読んで。 多くの場合、それはあなたのフィードバックを与えます あなたが問題を解決している方法について。 あなたは何をする必要がある場合 少し良く何か、 建設的な批判は、通常、 最高のそれらのコメントセクションに与えられました。 だから、私はつもりですしてください、お願い コメントを書く時間を過ごすために。 、私は本当にそれをお願い申し上げてください。 あなたたちは、それらのコメントを読んでいました場合。 OK。 クール。 大丈夫。 だから我々は話を始めるとしています ちょうどすぐに見直します 材料の一部から 週ゼロちょうど私たちがしています 以下のための右ページに 今週の問題を開始します。 だから、whileループは1であります ループの3種類の 我々は以前、このクラスで議論しました。 基本的にwhileループ 構文で記述されています ここで、一定の条件ながら、 繰り返しこれを行うには、右? ここで、このグラフィックであると考えてください。 あなたは、で開始するつもりです あなたのコード内の特定のポイント。 あなたは、ループ条件を入力するつもりです if--私は、xが1未満であるknow--ません。 それが本当であれば、あなたが行っています ループ本体を実行します。 そして、あなたがやって維持するつもりです その再び、再び、再び、 以上の、それは、理由はありますover-- あなたの状態になるまでloop-- 偽。 このように、whileループだから 簡単な方法の一つです 条件の任意の並べ替えを書くために 何度何度も繰り返す必要があります。 ただ、いつでも気をつけて あなたは、ループの任意の並べ替えを書いています あなたは、終了条件として持っていること よく何でもそれをアップデートします あなたのループがちょうどしないようにです 無限に何度も実行します。 いずれにせよ、あなたが行っています 確認するにします あなたはいくつかの側面を変更していること あなたのコードまたはループの終わりに ちょうどあなたが方法を持っていることを確認します 状態に向かって進行します あなたが最後に会いたいということ。 それは誰にでも意味がありますか? 私達はちょうどにしたくありません ここで、このスパイラルに巻き込ま 私たちは周りとの周りに行くと、 ループを遮断する方法はありません。 基本的に、すべてのループ それを行うための方法があります。 OK。 あなたの第二に、多くの あなたのマリオのpsetで おそらく採用しなければなりませんでした このタイプのループ。 これは、DOループしばらく呼ばれています。 まず第一に、誰も私を伝えることができます 何をすべきかの違い ループとwhileループですが? うん。 者:do-whil​​e文 [聞こえない]最初に実行されます。 ANDI PENG:うん、まさに。 ループが常に同じようにしながらそう 括弧の中、DOの内側にあります そこに、その状態を行います the--申し訳ありませんをチェックする前に、 前にそのコードを実行し 状態をチェックします。 そして、これは私たちに、特に関連性があります ここで、このクラスでは、ほとんどの時間のため 我々はプロンプトを表示したいとしています 入力のいくつかの並べ替えのためのユーザ。 そして、に応じて 彼らは私たちを与える入力、 その後、我々はああ、実行、評価することができます 我々は再びそれらを促す必要がありますか? マリオでだから、ユーザーがあなたに与えた場合 負の高さ、例えば、 あなたが最初のプロンプトになるだろう 内部であるものは何でも。 その後はしばらくをチェックするつもりです。 あなたが知っている、1陰性です、 正の数ということですか? そうでない場合、私は行くつもりです 背中とDOとリピートを繰り返します 彼らまで繰り返し、繰り返し 最終的にあなたが好きな番号を与え、 私たちは、すべてのコードで使用することができること。 それはのためにかなり重要です 本質的に任意のユーザー入力。 私はあなたを保証することができます ここで、PSETの時間 我々は、入力をお願い コー​​ドの任意の並べ替え、私たちがしています おそらくあなたを与えるつもり 私たちがしているれているテストケース あなたのその悪い何かを与えるつもり あなたのコードを破るしようとするだろう。 我々は、入力ANをお願いしようとした場合 整数は、私たちはあなたの文字列を与えることができます そしてあなたがそれを処理しますする方法を参照してください。 私たちは年齢を採用するように依頼した場合、 私たちはあなたに負の数を与えることができます あなたがそれを処理する方法を確認してください。 ただ、あなたたちはのためにテストしていることを確認してください ケースとは、あなたは最高得ることはありません 入力、ちょうどとします。 そして、do-whil​​e文 しばしば最高です ので、あなたのコードを設計する方法 それは、その範囲を満たします。 OK。 OK。 だから、これはおそらく最もです 3つのうちの複雑なループ 我々はこれまでに見てきたこと。 そして、それは、最初は非常に怖いようです。 しかし、私はあなたたちと、あなたを保証します forループを使用する方法のこつを得ます、 それは最も有用なものの一つです、 あなたの武器の中で最も有用なツール このクラスで前方に移動します。 ですから、例えば、スクラッチで、 我々は、この非常に単純なブロックを持っていました それはちょうどこの特定を繰り返し述べて 一定の回数をフレーズ。 ところで、SAJ-- それはScazアンディジェイソンです。 私たちはしばしば私たちの電子メールSAJに署名。 我々はSAJを言うなら、混同しないでください。 それは私たちだけです。 だからスクラッチでは、我々は持っていることができました 私はSAJを愛し繰り返し、言っブロック! 10回。 非常にシンプル。 その背後にあるロジックがあります 非常に、非常に単純な、右? 私は、最初の最初に通過したいです 時間とその、二回目を参照してください など、その3回目を参照してください ように、あなたは10に当たるまで。 我々はその中を表すことになり、道 コー​​ドはちょうどループのためのシンプルを介して行われます。 だから、宣言するつもりだ、のために この場合は、ここであなたの変数、 int型を持ちます。 我々はそれを私の名前しようとしています。 我々は0に初期化するつもりです。 停止版です 私になるだろうと、10未満です。 そして、この更新プログラムは、私が++になるだろう。 そして、ループ内で、それが起こっています 最終的にまでそれを実行します 中condition--の終わりに当たります 場合は、それがループを破るために起こっています。 あなたのものがあるはずです 人はすべての種類の前に見てきました そして、1を設定し、あなたの問題のためにしなければなりませんでした。 誰もが任意の質問を持っています 今forループに関する? OK。 グレート。 OK。 持っているあなたの人々のためにそう 今週のpsetの仕様を読みます 私たちが採用する必要があるとしていることを知っています 何かASCIIとASCIIテーブルと呼ばれます。 ダビデは講演で簡単にかけました どのようにコンピュータがすべてをessentially-- コンピュータで符号化されます バイナリ、0と1インチ そして、コンピュータができます方法 加えて、別の値を格納します 0と1にマッピングによってあります これらの数字は、他の数字を表現します または本質的に他の文字。 、この場合はそう すべてのそれがないtable-- ASCII マップ文字、または文字は数字に、です。 ソースコードファイル中のSO あなたのそれは見てcomputer--、 ちょっと、0と1の束、 0と1、0と1。 それはに保存されているものです お使いのコンピュータの実際のメモリ。 しかし、私たち人間がしたいとき コンピュータと通信、 我々としては、例えば、言いますwant--、 私は、大文字のAをしたい場合は、 私はいくつかの方法が必要にするつもりです ああ、コンピュータを伝えます、 私は大文字のAを入力すると、私が意味します バイナリでこの表現。 そして、私たちはそれを行う方法が投げています 任意のものは、ASCIIテーブルと呼ばれます、 どこ、ヒトなど、など プログラマ、いくつかの時間前に、 我々は、任意に、私たちことを決定しました これらの番号を割り当てするつもりでした これらの文字の値。 だからみんながこのオンラインをグーグルことができます。 私はそれへのリンクはあなたの中にあると思います ただ、ASCIIマップテーブルpset--、ASCII テーブル。 それはちょうど、バイナリ変換します 文字に数字。 そして、それは非常にになるだろう 問題セットの便利 あなたがしたいとき 何かを計算したり、あなたの場合 特定の表示したいです 文字や整数 または特定の文字を操作します。 それは非常にになるだろう あなたのすべてのことが重要 アスキーテーブルをナビゲートする方法を知っています。 たとえば、大文字のAだから 番号65で表されます。 小文字のA 97で表されます。 だから、ことを知っておくことが重要です 2つの値の間の差 32です。 多くの場合、あなたはから変換する必要がある場合 他の一つは、その差は32です。 あなたが親切ならそして、心配しないでください 最初はこの上の混乱。 私たちはどのように我々は希望の上に行きますよ 実際のコードでこれを採用しています。 OK。 、アウトラップトップとのあなたのそれらのためにそう アスキーテーブルをプルアップすること自由に感じ、 これらはおそらくなるため、 リファレンスにあなたたちを必要とします 何の文字があります。 OK。 だから、特定の知っています 文字は、特定の番号にマップ 私は最初に実行した場合 そのラインは、printfのaをcode-- 、マイナスを小文字 大文字のAで誰もい どのようになるかの推測を持っています 今画面のプリントアウト? 何をするか、すべてのだから最初 表す小文字? ことは、どのような数であり、 アスキーテーブルで符号化されました。 ごめんなさい? 聴衆:97? ANDI PENG:97、素晴らしいです。 そして大文字のAは何ですか? 聴衆:65。 ANDI PENG:だから97のマイナス65は何ですか? 聴衆:32。 ANDI PENG:[OK]をクリックします。 そうしようとしているあなたたちをどう思いますか ときに私が入力コード行が起こります 私のコンピュータに? 聴衆:[聞こえません]。 ANDI PENG:申し訳ありませんが、発言。 心配ない。 これは非常に安全です 環境、マイナスカメラ。 我々は、すべての心配ないto--つもりです。 ただ、私たちはすべてのようなふりをするつもりです それだけで私たちはこの部屋で冷やしています。 心配ない。 いいえ質問はあまりにも愚かではありません。 無回答は愚かな答えではありません。 私はおそらく間違いを犯すつもりです 私の授業のコースインチ 真剣に、みんなは、ちょうどそれを口走ります。 自分に自信を持って、あなたは知っていますか? だから、何でしたか? 誰が最後の答えということですか? OK。 その素晴らしく、明確なシャウト。 聴衆:32? ANDI PENG:32。 [OK]を、のこのコードを実行してみましょうし、 それは何が起こるかだかどうかを確認します。 OK。 だから、あなたたちは一種の缶など 、私はきた典型的な表記法を参照してください。 私たちが採用する方法のためにここで設定 当社のコンピュータ上のプログラムの任意の並べ替え。 私たちは、私たちの主な機能を持っています 私たちの主な機能の中。 私はちょうどコピーするつもりだと このコード行を貼り付けます。 時皆さんも気をつけて コピーしたコードを貼り付けています。 時には、特定の事業者 正しくオーバー貼り付けられません。 その場合には、マイナス 記号は、実際にダッシュしました。 だから、コンピュータはそれを拾うませんでした。 だから私は戻って行かなければならなかったし、 物理的にそれを再入力します。 ちょうどその時に注意してください あなたたちはそれをやっています。 OK。 ここでは、これを実行するつもりです。 だから我々は我々のsection2のにCDになるだろう。 私はこのプログラムasciimathと呼ばれてきました。 私たちはいずれかを実行するときに、覚えています プログラムは、我々が最初にそれをコンパイルしたいです 私たちのメイクを介して実行して。 そして、我々は実際に実行したいです ドットスラッシュを実行してプログラム。 だから我々は./asciimathするつもりです。 右、そこに私達は行きます。 そして、我々は32を参照してください。 よくやった。 あなたは、キャンディの部分を値します。 あなたのためのキャンディ。 ごめんなさい。 大丈夫。 OK。 だから我々はここでの例に戻ることができます。 いや、ああ。 ああ。 OK。 私はちょうどそのようにそれを維持するつもりです。 OK。 OK。 あなたたちが見ることができるように、我々が行うことができます 非常に興味深いものがたくさん、 非常にクールなものの多くは、多くの 関係する非常に複雑なもの ASCII文字と数字。 あなたは5行目に降りたら、 それは、一緒に従うことがたくさんです。 私たちは行くつもりはありません 貫​​通部。 あなたができる場合は、お気軽に、 紙の上の理由、それを 最初のときに何が起こってされるべきである上 あなたの入力値のような文字列。 例えば、その最後の行では、我々が持っています 特定number--を表しますz-- A--も表しています 特定number--プラス1モジュロ26 プラス小文字。 あなたたちは、読み続ける場合 これらを通して、あなた に出てくるパターンが表示されることがあり どのように我々は、コードを操作しています。 私は非常に、非常に示唆しています あなたのセクションの後にすべての 人は先に行くと入力 お使いのコンピュータでそれらのすべて そして、どのような参照してください。 数字が出てきています そして、推論ものである理由を通じ あなたのpsetのためので、起こっ それは本当に重要なことでしょう あなたが理解するために なぜ特定の物事が起こっています。 これらのスライドのすべてがオンラインになります。 にしようとそんなに心配ありません 物理的にノートを下にコピーします。 すべてのオンライン。 このセクション自体がオンラインになります。 すべての私のソースコードを、その 私がオンラインになります実行していますよ。 うん。 あなたはまだ質問がありましたか? 聴衆:モジュロとは何ですか? ANDI PENG:[OK]をクリックします。 だから、剰余がために起こっている事業者であります あなたの男のPSETにかなり重要です ここに。 だからオペレータ方法 C言語でプログラミングの仕事で あなたはと呼ばれるものがあるということです 分割シンボルとモジュラスシンボル、 これは単にパーセント記号のようなものです。 あなたが整数を行い、C、でそう スラッシュで整数で割りました、 Cはカットする傾向があります 小数点のすべてオフ、 整数が望んでいるため、 整数に変換します。 それは二重になりたいことはないだろう すべてのそれの後に小数の束を持ちます。 私は2で割っ3を行うのであれば、それが起こっています 0.5を遮断し、ちょうどあなたの1を得ました。 だから、なるように何か あなたがいるときの非常に慎重 プログラミングに数学の任意の並べ替えをして、 数字はあなたが得ることです 数字ではないかもしれません あなたが考えていたことを、 あなたに丸め理由であります 最後のpsetは非常に重要です。 モジュロはあなたの残りの部分を提供します。 私は3をした場合、例えばそう 剰余2-- SO 3パーセント記号2-- それはあなたのそのの残りの部分を与えるだろう。 だから3 2で割った1.5です。 これは、1の1余りです。 それは、あなたに1を与えるだろう その残りがあります。 だからみんなが動いているとき アスキーテーブルを通して、 モジュロはされてしまいます 非常に重要な何か、 私たちはその後で説明します。 OK。 だから、かなり何か、 かなり新しく、かなりユニークな 私たちは、今週議論してきたということです 配列が何であるかの概念。 だから、配列は最初のものです データ構造のタイプ 我々はするつもりだこと このクラスで発生します。 すべてのデータ構造があります 任意のいくつかの並べ替え、 構造のような文字通りの事 プログラマとして、私たちが作成したこと、 私たちは私たちのコードに入れていることをその コー​​ドの他の部分を含めることができます。 この意味で、array--そう ファイルキャビネットのようなものだと思い、 どこが違う開く場合 あなたのファイルキャビネットの棚、 あなたは別のものにアクセスすることができます。 メモリでは、アレイは単にやっています お使いのコンピュータ上で同じこと。 あなたは異なるblocks--我々を持つことができます 配列のindices--それらを呼び出します。 それはちょうどブロックのようなものです、 メモリの棚 私たちはあなたの中に作成したこと コンピュータあなたが入力することができます 別のスペースに特定のもの。 アレイを有するだから、 常にspecify--する必要があります あなたが宣言指定する必要があります 以下の形式の配列。 あなたが最初になるだろう データ型を指定します あなたは、アレイの作成すること。 私は、整数の配列をしたい場合は、 私はすぐそこにint型を置くつもり。 私は文字列の配列をしたい場合は、 私は、そこに文字列を置くつもりです お使いのアレイの名前を入力し、[ あなたは角括弧を持っているつもりです。 そして、角括弧の内側に、あなたがしています あなたの配列のサイズを持っているつもり。 には本当に重要な何か アレイを作成するときに心に留めておきます あなたが作成した後、その アレイは、そのサイズを変更することはできません。 だから、あなたが今いることを知っている場合 あなたは、サイズ10の配列を持っています 私は10個のセルを持っているつもりだことを知っています この配列内のインデックス内または10、 そして、それは起こったことがないです 拡大または減少します 関係なく何があるか、その 現在スペースのわずか10ブロック 保存することができますあなたのメモリに割り当て あなたが置かれているものは何でもの10の事。 このように、配列データ型、そうで アレイは、データ構造 我々はよいくつかの他は非常に異なっています このコースの後半でカバーします。 うん。 たとえば、あなたがしたい場合 サイズ3の配列を作成すること integer--の含まれる変数 ああ、申し訳ありませんが、temperature--の 温度の もちろん、整数です。 だから我々は、int型を作成します 私たちが保存するために何をしたいのデータ型。 我々は、この温度をコールするつもりです 命名の命名のために 我々はすべて理解して何か。 そして、我々は角括弧を持っているつもりです。 そして、我々は3つの数字をしたいです。 だから我々は置くつもりです その中の3。 本当に何か 心に留めておくことが重要 配列がゼロにインデックス化されていることです。 つまり、すべてはあなたのことです 0のインデックスで始まり、 あなたが通って実行します 配列のサイズから1を引きました。 だからここに例えば、我々 サイズ3の配列を持っています。 それはことができるようになるだろう 三つの値を保持します。 しかし、数字はそれをthemselves-- 数、配列、そのインデックス、 配列は、0〜2です。 だから人は、ときに本当に、本当に気をつけて あなたが設定あなたの問題を経由しています 、配列の任意の並べ替えを作成し、 なぜなら、それはだ多くの時間 それを忘れて、本当に、本当に簡単。 私は実際にインデックスを持っていません 私は現在だけで、3の 2のインデックスを持っています。 そして、あなたがしようとした場合 第3のインデックスにアクセスし、 それが何になるだろう ヌルターミネータと呼ばれます。 これは、実際に起こっていません 配列内に存在します。 そして、コンピュータは、 それを好きでするつもりはありません。 だから、いつでも気をつけて あなただけのものにアクセスしています あなたは覚えていることを確認します 配列はゼロインデックス付きであること。 OK。 したがって、最初の例では、ただで アレイを作成する一つの方法。 私が持っている第二の例 以下、単に独立した方法であります 同じデータが何であるかを作成します 私たちは、入力されてきた構造。 だからではなく、物理的に実行します 通って、0の温度に置きます 何に等しく、温度1 何でも、温度2相当します 何でも、私は実際にできました 直接1行ですべてを作成します 温度角括弧に等しいです。 そして、この場合の通知は、必要はありません あなたの配列がどのように大規模な指定するには、 コンピュータがために起こっているので、 通過とがあることを参照してください。 これらの中括弧内の三つの要素。 そして、それは、[OK]を、知っているだろう 私は大きさ3の配列が必要です。 あなたがする必要はするつもりはありません それを入力し、次のよう。 そしてまた、ええ、そのように。 誰もが疑問を持っています 我々は配列を作る方法について または配列の構造がどのように機能しますか? うん。 聴衆:[聞こえませんか]? ANDI PENG:うん、まさに。 だから、宣言して初期化した場合 配列は以下の方法、 第二の方法は、これは、 あなただけのものを残すことができます。 そして、コンピュータ 自動的にそれを知っています どのように多くの要素をカウントする必要があります これらの中括弧で分離され、 コンマによって。 だからここに、彼らは65、87、30を参照してください。 そこでコンピュータは、ああ、知っています 三つの整数があります。 私は、配列名を作成するために知っています その中に、3つの要素を持つ温度。 良い質問。 うん。 観客:それは作成することはできません 異なる種類のデータを含む配列 それはそれに入力することができましたか? たとえば、整数と[聞こえませんか]? ANDI PENG:目的のために このクラスの、いや、今。 あなたは、データを作成する場合 配列のような構造、 あなたが言っています コンピュータ、ちょっと、私はあなたを必要とします これだけを割り当てます 私のハードドライブのメモリ、 各セルがあることと 一定数のビット。 私たちは週に学んだ覚えておいてください ゼロ、異なるデータ 種類はさまざまなサイズがありますか? 例えば、文字列だから、 異なる量であります これは、char型よりもスペースの 空間の異なる量であります 整数から。 だから次のように指定していない場合 ミックスや変数の種類を一致させます あなたがコンピュータの、持っています 非常に混乱になるだろう。 そして、それは知っているつもりはありません どのくらいのメモリあなたを得ました。 右の目的のためにそう 今、コンピュータができるだけで 配列の種類を認識する。 良い質問。 OK。 だから当然、 我々が持っている2番目の質問 私たちが作成した今では、よく、です アレイと、私たちはこれらの事のすべてを入れています 配列で、どのように我々は、 それにアクセスできるようになるだろうか? だから、常に私たちの典型的な構造は、 アレイにアクセスすると、ループのための私たちの素敵です。 私はあなたに私たちができるでしょう人を約束します ここで、この仲間の多くを見て。 基本的に、いつでもあなたが欲しいです 入力値の配列に または、あなたは、それらにアクセスしたいです そうする最良の方法は、forループであります forループであるため、あなた あなたがしている何回知っています アレイを通して実行するつもり、 あなたが停止版を持っているので、右か? あなたが実行するたび あなたがアクセスすることができます 配列の異なる要素。 そしてまた、これは理由一般的には、 我々は、0値でループのために私たちを開始 あなたは配列にアクセスするときのため、 あなたはゼロインデックスにアクセスすることができます。 そしてそれは非常にうまく匹敵します。 君たちはしたかったかもしれません 私は1に等しい整数のために書きます。 私は3以下です。 しかし、それはかなりのように動作しません ここにも、あなたのためだけ 0、1、及び2の要素を有します。 だから、あなたが開始した場合 あなたの要素1、I 2の、3、 あなたが実行して終わるつもりです あなたの配列の境界のうち、 悪いことが起こるしようとしています。 だから私はあなたたちはセグエを参照してください願っています 理由を以前のクラスで 我々は、実行方法をあなたたちを教えるし、 ループのために私たちがした方法をフォーマットします。 今私たちがしました、からです アレイに移行し、 あなたは、なぜ0貸すを見ることができます それ自体は非常にきれいにアクセスします。 私はthat--だから我々はそれを行う方法があります ちょうどためにここでそれをプリントアウト それをプリントアウトします。 しかし、私は私のプレースホルダ、カンマを持っています。 そして、実際のアクセス 部分が起こっています。 配列の名前 温度と呼ばれていました。 だから、温度やです 配列のi番目の要素。 forループを通るように、 それが0で開始するようになるだろう。 これは、プリントアウトになるだろう この配列の0番目のインデックス。 そして、それは印刷するつもりです 最初の要素アウト。 そして、それは印刷するつもりです 第1アウト。 そして、我々は破るつもりです。 上の誰もが明確です どのようにそれが起きているのでしょうか? グレート。 大丈夫。 そこでここでは、の方法を持っています 私たちは望んでいなかった場合、言っ ハードコードにプログラマとして私をin--。 私は実際に物理的にしたくありませんでした すべての個々の要素に入れます この配列の。 私の代わりにしたい場合 ユーザの入力値を有し、 それを行うための最善の方法は何ですか? さて、ここで私が作成しています この素敵な機能、 ここで私は、配列を宣言することができます。 だからint型scores--レッツ ちょうど私達が作りたいと言います 全18の成績を開催配列 ここで、このセクションの学生の。 私たちは少しを持っていると思います 18以上の子供たち、今日。 しかし、例のために、 ちょうど私達が18を持っていたと仮定しましょう​​。 私は配列名のスコアを作成します int型、スコアので、当然のことながら、 数字があります。 そして、私は持っているつもりです 角括弧内の18、 なぜならそれは私どのように多くの学生です のスコアを保存できるようにしたいです。 私は移入したいと方法 アレイは、私がしたいということです のforループを介して実行 もちろん、0は私の0番目のインデックスであると。 そして、18は私であることと そこだから、版を停止 配列内の18の要素。 そして、私が入力し、printfのをするつもりです student--云々云々云々に得点。 私はなぜここに誰も教えてもらえます 私はプラス1ではなく、印刷しますか? これはトリックのようなものです 質問ではなく、本当に。 これは、実際に物理的にありません コー​​ドの実行に影響を与えます。 うん。 聴衆:[聞こえない] 0? ANDI PENG:うん、まさに。 それはちょっと、と言うには少し厄介ですが、 あなたはこのクラスの0番目の学生です。 それは少し奇妙です。 人間として、本当に好きではない、私たちはそう コンピュータがどのように考えるかを考えます。 そうであってもかかわらずで コンピュータには、値を格納しています 0番目のインデックス、中 私たちは人間だ、私たちは本当にありません ゼロとして自分自身を参照したいです。 だから私はちょうどそれを印刷するとき、 私は印刷し、追加するつもりです ただ明確にするために1。 私は印刷するときに、私はあることを行っています 18を介して学生1を印刷することができます。 これは、実際には影響しません。 コー​​ドの実行 どのような方法で、私は印刷方法。 あなたがいるときしかし、注意してください 実際にアレイにアクセスします。 あなたは私はスコアが表示されたら、 ここで気づく私は実際によ 0番目のインデックスにアクセスし、 ない1プラス0--または1プラス1、 この場合、指数はとても それは実際に明らかだという。 [OK]をすべての人の一種であります これはどのように通って実行されています そして、私はすべてのインデックスを持ちます 配列に値を入れます および18の番号を持つ配列を作成します ユーザが入力しようとしていること? OK。 クール。 OK。 私たちは今、かなり何かに移動します 同様に設定されたこの作品に関連します。 私は、講義で知っDavid-- 申し訳ありませんが、あなたは疑問を持っていましたか? 観客:あなたはそれを拡大することはできますか? ANDI PENG:ええ、私は試してみました。 しかし、私は知りません。 何らかの理由で、この パワーポイントのバージョン 実際に動作していません ディスプレイとよく。 だから我々はちょうどつもりです このようにそれを維持します。 これらはすべて、オンラインでアップロードされます。 申し訳ありませんが、みんな。 うん。 OK。 だから我々は、文字列を持つことができます。 だから、実際にあなたたち私notice--場合 ロブはその講演でこれを渡った知っています 彼は、文字列が実際にあることをdid-- 文字の配列だけ、 あなたが考えてみれば、右? 文字列は、名前またはAであり、 文章や単語、右? 私は名前の文字列を作成した場合 Andi--ちょうど私の名前、-N-D-I。 あなただけの1変数としてそのことを考えています。 いっても、実際には壊れています 文字の配列だけに。 だから、文字の持っています 配列の値に格納されています。 それはに保存されているn個の文字を持っています 2番目のインデックスなどなど。 我々は、そのような方法でそう 実際にこのようなものを持っています に設定された構造の 私たちの文字列のための場所。 だからここに、私が入力した場合 単語 "食べ" - ので、文字列の単語が等しいです 文字列を取得します。 私が入力した場合は、その単語を「食べます」 その私のコンピュータの方法は、物理的に 私の記憶ではその文字列を記憶しています。 そして、私はそれを介して実行したい場合 私にのためにそうout--印刷 私たちは、講義では、覚えて、ゼロに等しいです strlen関数と呼ばれる覆われたもの、 または文字列の長さ。 私は実際にしないため、 配列がどのように知っている大 どのようなユーザーのinputting--の 例えば、私は、入力されました 言葉は「食べる」と私は知っています それは右、3文字の長さですか? だから私はそこに3に入れることができます そしてすべてがうまくなります。 しかし、あなたのユーザ入力に何かあれば それは、値の異なる数です、 あなたは本当にすることができないとしています あなたのコードをプログラムするときことを知っています。 だから我々は、テストケースを処理する方法 そのように私たちが何かを持っているということです ただ関数である、strlen関数と呼ばれます それは、文字列がどのくらいを示しています。 単語のstrlenのようにします。 私の言葉は食べるです。 nが単語のstrlen関数に等しいです。 誰かがどのようなことを教えてもらえます 値は実際には権利がありますか? nは右の何を表すん 今、この例では、私が持っていた場合は食べますか? 聴衆:3。 ANDI PENG:3、正確に。 だから私たちは私が等しいint型を持っています ゼロ、nは、本質的に、3に等しいです。 私は実行しようとしています それは3I ++未満になるまで。 そして、それは、本質的に行くことになるだろう 通って、同じことを行います。 これは、プリントアウトになるだろう すべての値とあなたを与えます E-A-T。それはちょうど示すです それを書いている別の方法。 それは非常に有用になるだろう。 うん。 聴衆:パッティングのメリットは何ですか nがその内部にはstrlen言葉に等しいです [聞こえない] forループ? ANDI PENG:うん。 だから私が言うto--た場合、例えば、 私がいたならば、それを行うとします 、私のコードでは、そのoop--それはなりdo-- 実際には同じことのようにやっています。 しかしダビデは説明し、道 それ講義中に、もしあなたの任意の男 覚えている、ように、ということでした ヒト、プログラマーとして、 私たちは本当に私たちをプログラムしようとします コー​​ド当社のコンピュータが持っているので、 そう、可能な限り最小限に動作します 我々のコードは非常に効率的であること。 だから私は、そこに、何があった場合 私のためのループを介して起こります 私が最初に宣言するだろうということです 名前の変数iが0になるだろう。 私は、ああ、確認するつもりです 単語のSTRLENは何ですか? ああ、STRLENは3です。 だから私は、3未満のですか? はい、そうです。 私は実行するつもりです。 そして二度目戻って周り ループは、私は私をインクリメントするつもりです。 私は1つになるだろう。 そして、私は、ああ、確認しようとしています しかし、単語のstrlen関数は何ですか? ああ、それは3です。 そして、この種の無駄なように見えることありません あなたはループを実行するたびに、 機能をチェックします、 偶数ワードのstrlen関数かかわらず 実際に変更されることはありませんか? だから、コンピュータのための余分な力です。 あなたは、物事について話し始めるとき 十億であること 場所の十億 長い、コンピュータを想像します 物理的に通って移動することと その一つ一つの時間のすべてを確認してください。 だからこそ、ちょうどようにすることです 効率のために、 私たちはこれを行う傾向にあり、 なぜなら、我々は唯一のだ。このよう 関数を呼び出します 初めに一度、 そして、するたびに、その それが起こっているのを通過 値を格納する3 そこに、あなたが行うことではありません 継続的にすべての時間を確認する必要があります。 うん。 聴衆:申し訳ありません。 ただ、[聞こえません]。 あなたはint型のnのstrlen等しいと置くんでした そのforループの外に上記 同様に? ANDI PENG:うん。 あなたは絶対に、それを行うことができます。 我々はここでそれを持っている理由は、 ループ作品の方法Aのため それは呼ばれていますされていること 意味でのローカル変数 あなたがしていることのすべて forループの内部を作成します 以下のためのループの内側に存在しているだけ。 だから、変数iのみ これらの括弧内に存在します。 そして、ここで、nの変数も これらの括弧内にのみ存在します。 だから、のstrlen関数を使用した場合 単語下方に複数回、 絶対にそれを行うための最善の方法 トップにそれを宣言するだろう だから、一度それをする必要はありません。 うん。 観客は:なぜあなたはありますか パーセントの後に改行 あなたはすべてを入れたい場合は見て その隣の文字を分離? ANDI PENG:ああ、私はしたかったです 各行にそれらすべてを印刷します。 それは問題ではありません。 ええ、それは、フォーマットです。 それはしかし、良い質問です。 ええ、私は印刷したい場合 それだけで1行のすべて、 私はダッシュを持っていないでしょう。 OK。 みんな良いですか? OK。 クール。 だから、私は十分に話をしていると思います。 介して実行するには君たちの番 コー​​ドやここに間違っているものを教えてください。 バグはどこにありますか? あなたが見ることができるように、私は宣言しました 文字列型指定されたクラスの新しい配列。 そして、私は、サムを入力しました それにジェス、とキム。 そして、私はプリントアウトしようとしています 配列のすべての要素。 誰かがなぜこれを教えてもらえます 私に問題を与えるために起こっていますか? 私は君たち10をあげます これについて考えるために秒。 OK。 うん? 観客は:左中央です 3に等しいか、または[聞こえませんか]? ANDI PENG:右。 だから、これは実際に何回あります このループを実行するつもり? 聴衆:四。 ANDI PENG:その通り。 これは、4回を介しになるだろう。 それはを通して実行するようになるだろう 0、1、2、および3に、 その要素が私であるため、 3以下です。 それは、2のときに停止することはないだろう。 それは維持するつもりです それは3に当たるまで行きます。 私たちが知っているように、3つだけあります 当社の実際の配列内の要素。 我々は、第四にアクセスしよう 要素または3のインデックス、 あなたがどこかにヒットするつもりです メモリ内に存在しません。 これは、ヌルターミネータと呼ばれています。 何もそこに行くんです。 お使いのコンピュータには行っていません あなたに非常に満足されるように。 うん。 誰もが疑問を持っています なぜそれが起こっていましたの? それは避けるために共通の領域です。 うん。 観客は:最初にしません スライドはまた、2の文字列を持っていますか? ANDI PENG:いいえ だから、本質的に、時 あなたは配列を作っています、 そのブラケット右 そこに、それはすべてnumber-- それはあなたがどの​​ように言っています 私が持っている多くの要素。 それは実際に言っていません 私は何のインデックス。 したがって、この場合には、私は私がしたい知っています 3ヶ所に書き込むため、 3つの物理的な場所で 私が保持するために好きなホールド。 数3があるだから、なぜです。 しかし、私は望んでいた、場合 実際にそれにアクセスするには、 私が言いたかった場合、printf関数 そのクラスブラケット番号、 あなたが実際に置くつもりです そこに物理的なインデックス。 うん、良い質問。 観客は:だから、物理的です インデックスは[聞こえない]ことになって? ANDI PENG:ごめんなさい。 あなたが少しを話すことはできますか? 聴衆:だから物理的な指標であります [聞こえない]ボックスの各? [聞こえませんか]? ANDI PENG:うん。 だから私はここに戻って行くつもりです。 右ここで考えてください。 我々は大きさ3の配列を持っています。 以下のように、3ヶ所あります、 ここで物理的なプレースホルダ。 しかし、彼らは、0,1、および2と命名しています。 だから私はそれらにアクセスしたい場合、 私はそれらにアクセスする方法 私はここに望んでいたものは何でものprintf関数です。 あなたは印刷する必要があります それの名前うち​​、 次に、コンピュータ理由 ああ、知っている、私が見てする必要があります 0番目のインデックスは、この配列インチ うん。 しかし、それの大きさは変わりません。 サイズに関係なく、3 あなたがそれらにラベルを付ける方法。 OK。 みんな良いですか? 聴衆:だから毎回私[聞こえませんか]? ANDI PENG:[OK]をクリックします。 したがって、この場合には、私たちは本当にありません コー​​スに今それに入ります。 しかし、知っている私のようなstring-- 文字列は基本的に、前に述べました 文字の配列。 だから私は、配列を作成する場合 文字列の、私は一種の 配列の配列を持っています 文字の、右? この場合、私のためそう 文字列の配列を持っています、 あなたが入力に本当に長い単語であれば、 それはまだ一つだけのスペースを占有し、 なぜならそれは1つの文字列です。 しかし、あなたが考えるした場合 その配列の文字、 その後、それはより多くを取っています 言い換えれば、任意の文字以下 です。 今のために本当に重要ではありません。 しかし、それはただ、一般的です それはどのように取り組んでいます。 OK。 だから、これは私はあなたが行うもらおうものです 学期の過程で多くの。 私は私の声を休ませる必要があります。 君たちは自分を刺激する必要があります。 あなた方の多くはおそらく 今寝する必要があります。 私はランダムな問題を入力しています どこのクラスとして、または あなたの隣にパートナーが行っていると 議論数分を過ごすために 私たちが解決に行くか方法について またはこのようなプログラムを作成します。 だから今、私たちはしたいです program--を作成します 我々はそれを呼び出すつもりです その変換upper.c-- 上位クラスに小文字単語 string--大文字、申し訳ありません。 Wordは、文字列で、申し訳ありませんが、同義です。 私はそれらを変更するつもりです 同じことを意味します。 うん。 数分かかります。 それはする必要はありません 任意の言語で書かれました。 ただ、擬似コードコードまたは 論理的にどのように私たちも希望 このような問題をやって行きます。 うん。 [SIDE会話] 私はまた、あなたたちはcan--ことに気づきました 私は一種の既にプログラムを参照してください。 私は私の欠如を推測します プレゼンターモードが問題です。 しかし、それはOKです。 [SIDE会話] みんな、お願い、うん。 お菓子を取得しています。 お菓子を取得しています。 聴衆:はい! [SIDE会話] ANDI PENG:また、ええ、 私はお菓子を投げ始めます 質問に答えていない人で。 だから、すべての質問に答える必要があります。 または私は、人々は誰と仮定します 質問に答えるん。 うん、他の方法の周り。 [SIDE会話] 聴衆:[聞こえません] ANDI PENG:うん。 うん。 [SIDE会話] すべての権利、みんな。 、のように、10秒以上を取ります。 [SIDE会話] みんな、[OK]をクリックします。 だから我々はしようとして起動する前に、 実際に物理的に、コードを書きます 開発するための良い習慣は、ということです 我々は、理由の第一種にしたいです アウト論理的に我々はそれを行うだろうか。 あなたは確認します、 あなたの前に物理的に コー​​ドにしようとして始めます マリオに、あなたが作るこ​​と あなたの擬似コードを持っていることを確認してください。 それはを通してあなたを取っています あなたがそのように作成するために必要なもの ときに物理的に、その 後でプログラムを書きます、 あなたは、エラーをキャッチするより良いことができます あなたのコードとそのようなことです。 だから我々はちょうど開始するつもりです by--英語で、擬似コードで、 誰もが与えたいと思うん 私の一般的な説明 我々はこれをやって行くだろうかの? うん。 聴衆:[聞こえません]。 ANDI PENG:確かに、何の心配もなく。 観客:あなたはそれを頼むか、求めることができます 誰かが、文字列1--ええ、文字列を取得します その後 - ANDI PENG:はい、これは良いスタートです。 あなたが話すように私は、申し訳ありませんが、入力を開始します。 So-- 聴衆:--the小文字 数字が高く、右? または小文字 高い数値を持っていますか? ANDI PENG:その通り。 聴衆:それでは、私たちが引きます どんな[聞こえない]から32。 ANDI PENG:グレート。 だから我々はこの種の一般的な意味を持っています この問題については動作する方法の。 我々は種類の学んだことを知っ その文字列の物理的な方法 メモリに記憶されています、 すでにあなたに何をすべきか あなたはおそらくしようとしていることを知っています あなたのコードで記述する必要があります 文字列を移動するためには? 聴衆:Forループ。 ANDI PENG:forループ、正確に。 グレート。 だから我々はこの種の一般的なを持っています 擬似コードは書き留め その種の与えています あなたはどのようにノート 問題を解決動き回るだろう。 今、あなたがこれを持っていること、あなた 後でそれを参照することができます あなたがしようとしているときに 実際にあなたのコードを記述します。 だから我々は実際にここに行くことができます。 そして、私はと呼ばれる機能を持っていますupper.c-- そこにそれだけで空のテンプレートのis-- 今あなたたちがしようとしていること 私は書く方法で見つけ出す手助け ないコードの行をcode--のこの行。 これは、複数行のコードになるでしょう。 任意の並べ替えを開始するとき 空白のpsetの、何です 私が必要がある最初の事 行うには覚えていますか? 聴衆:[聞こえません]。 ANDI PENG:グレートうん。 含めます。 stdio.hの。 多くの場合、これはの一つであります 最も簡単な間違いの人々 彼らがいるときになります 、書くことは、彼らがよということです 含めることを忘れ 彼らが必要とする重要なライブラリ。 だから、営業時間だとあなたは次のようにしている場合、 私のコードが動作しない理由を私は知りません。 あなたはそれが働いていない理由を教えてもらえますか? 私たちは、あなたがインクルードしなかったと言うつもりですか? あなたはそれを#includeする必要があります。 OK。 だから我々はここで、標準のI / Oを持っています。 ことは、唯一のライブラリです ここでは必要になるだろうか? 他に何私たちは何をするつもりですか? ごめんなさい。 誰かがそれを叫びますか? 聴衆:[聞こえません]。 ANDI PENG:そこに行きます。 OK。 そして、どのように私は任意の並べ替えを開始する行くのです 主な機能の機能、任意の並べ替え 私たちのプログラムの中で? メインのInt。 OK。 私はここで内部に何を入れますか? あなたがしたい最初の事は何ですか? 我々が取得したい場合 ユーザーから文字列、 私たちが持ってしようとしています この最初の行に行うには? 申し訳ありませんが、あなたたちはただ感じます 発言する自由と大声。 ただ何を叫びます。 聴衆:ユーザーしますか? ANDI PENG:我々はそれをどのように行うのですか? Ask--私は、「ユーザに尋ねる」と入力するつもり? 聴衆:のprintf。 ANDI PENG:[OK]をクリックします。 printf関数。 私はprintfのために何をしたいですか? 聴衆:何かを入力します。 ANDI PENG:それ気に入りましたか? Guysは、私はコンピュータだふり。 物理的に私のすべてのステップを教えて 私はここで入力する必要がありますか? 私が何か間違ったことだろ? 私が何かを入力した必要がありますか? 観客:あなたが引用符を必要としています。 ANDI PENG:私は、引用符が必要ですか? OK。 OK。 聴衆:そして新しいライン。 セミコロン。 ANDI PENG:セミコロン? OK。 良い。 聴衆:そして多分指定 あなたはそれを小文字にしたいこと? ANDI PENG:グレート。 君たちは私を笑います セミコロンを置くことを忘れて。 私はどこかを保証 このクラスのコースで、 あなたが置くことを忘れます セミコロン、およびそれ 把握するためにあなたに3時間かかります あなたのコードが動作しない理由を。 それは私たちのすべてに起こりました。 それはおそらくあなたに起こるでしょう。 セミコロンを使用しての良い習慣を身につけます。 OK。 観客:あなたがしたいです にバックスラッシュを行うには? ANDI PENG:確かに。 あなたがバックスラッシュをしたいですか? 聴衆:はい。 ANDI PENG:グレート。 OK。 私は次に何をしますか? 観客は:文字列を取得します。 ANDI PENG:文字列を取得します。 だから私は何を入力するのでしょうか? 誰か? 対象:文字列s。 ANDI PENG:文字列sの。 聴衆:GetStringメソッド。 ANDI PENG:誰か、 あなたはどこに私に言うことができます この関数のGetStringから来ていますか? 聴衆:string.hの。 ANDI PENG:string.hの? あなたはそれがstring.hのからだと思いますか? 聴衆:[聞こえません]。 ANDI PENG:そこに行きます。 それはCS50.h.からです あなたはいつもどこに混乱している場合 ライブラリファイルであるか、またはヘッダファイルがあり、 Googleは文字通り、string.hの そして、私はあなたを教えてあげましょう すべての機能は何ですか string.hの中であること。 OK。 だから今、私は文字列を作成していること 私はそれのためにユーザを促してきました、 私は、変数に格納しました 名前付き、私は今何をすべきかが必要ですか? 観客:それは小文字でいないか確認してください。 ANDI PENG:申し訳ありませんか? 観客:それは小文字でいないか確認してください。 ANDI PENG:すべての権利、のはそれをやらせます。 私はそれをどのように行うのですか? 実際には、目的のために クラスの今、 私たちはするつもりです そのすべてを想定し その我々の入力が小文字に既にあります。 あなたがチェックしたい場合は、希望 条件文を追加 それがチェックされ、それが駆け抜けました 一つ一つの配列要素 それはだ場合、チェック 特定の値の間。 私は忘れて何数 小文字の値です。 あなたは、ASCIIテーブルの上にそれを見ることができます。 しかし、ええ、それは本当に良い点です。 しかし、今、私たちはするつもりです すべての文字列が入力を我々と仮定 小文字です。 OK。 それでは、どのよう私は約行くだろう 次のこの問題? 聴衆:Forループ。 ANDI PENG:ループのために? OK。 何を入力するのを教えてください。 観客は:int型のために私は0に等しいです。 ANDI PENG:[OK]をクリックします。 聴衆:ああ、実際には、あなた コンマを行うとn strlenを等しく行います。 ANDI PENG:だから大切なこと 私は彼女がここに気づいたと思うこと 我々はint型を言わなければならなかったことです n個の第2の時間は、我々はこれをしませんでした。 ただのためのそれを知っています あなたが宣言しているループ、 あなたが実際のint型を必要としません 二回目は、変数を行います。 あなたはstrlenをnは言うことができます。 聴衆:秒。 ANDI PENG:S。 OK。 聴衆:そしてセミコロン。 ANDI PENG:確かに。 聴衆:そして[聞こえない]のn。 それから私は++しました。 ANDI PENG:グレート。 大丈夫。 我々は内部の何をしたいです 今このforループの? 我々はを通じて実行するつもりなら、覚えておいてください 文字列と配列を介して実行、 我々はそれで物事を確認したいです。 私たちが必要としていますか? これは今トリッキーな部分のようなものです。 誰もが推測を持っていますか? OK。 そこでまず、どのように私たちもアクセスできますか? どのように私たちも、最初に確認しますかん 配列の要素にアクセスしますか? 我々はそれをどのように行うのですか? 我々はそれを行うために使用する表記は何ですか? この配列の名前は何と呼ばれるのですか? それは右、Sと呼ばれるのですか? 任意の文字列は常に配列であることを覚えておいてください。 だからのブラケット私は、右? それは現在の値であるため 我々はチェックしているか、インデックス値。 そして、我々はその等しくなるように設定しようとしています to--我々は正しい、小文字の値をしたいですか? 我々はそれをオンにしますlower-- 申し訳ありませんが、大文字をしたいです。 私たちは、小文字をオンにします 大文字に値。 だから、ごめんなさいlike-- お名前は何ですか? 者:ハイジ。 ANDI PENG:申し訳ありませんか? 者:ハイジ。 ANDI PENG:ハイジ。 ハイジは言ったように 最初に、我々は、おそらくです 私たちがしているthe--必要になります おそらく減算しているつもり 、右は何でもcharcから32? ASCIIのため、 テーブル、違い 小文字の間 そして、大文字は32です。 我々はこれをやっているときに、我々は、おそらくです 右、32を減算するするつもり? だから我々は、S iをやろうとしています。 私はそれをしなかった理由を誰もが理解していますか? 私たちのアレイでは、今あるので、 我々は正しい、0番目のインデックスをチェックしていますか? との0番目のインデックスで 文字列は、それが最初の文字です。 そして、その文字は我々が行っています それは小文字だと仮定します。 我々はそれが大文字にしたい場合は、我々 その値から32を減算する必要があり、 私たちのASCIIであるため テーブルには、それは我々がそれを取得する方法です 対応する次へ それが大文字になります値。 誰もがそれを理解していますか? うん。 聴衆:また、あなたでした minus--小文字ありません ANDI PENG:うん、のように 実際には本当に良いです。 私はそれに戻ってくるつもりです 質問私達はこれを行った後。 うん。 そして、私がしたい場合は 何が起こっているのかを参照してください。 私はおそらくに行きますよ 右、印刷したいですか? 誰かが私に何を言います 私はここで印刷したいです。 聴衆:printfのパーセント Cのバックスラッシュ[聞こえません]。 それは[聞こえない]のiの値です。 ANDI PENG:S I、申し訳ありませんか? 聴衆:[聞こえません]。 ANDI PENG:私は知りません。 どう思いますか? 聴衆:まあ、私はwouldn't-- 私はbring--ないだろうと思います 私はそれを取るだろう 内部には、理由[聞こえません]。 ANDI PENG:ああ、あなたはそれを行っているのでしょうか? 聴衆:うん。 ANDI PENG:それを残しましょう​​方法 それは、私は理由を後で説明します。 ときであっても、覚えておいてください プレースホルダを持っています、 あなたはそれの前後に括弧を挿入します。 大丈夫。 だから、これはここで固体の関数であること。 のはそれを実行してみましょう、それがコンパイルする場合を参照してください。 上位ください。 おっと。 それはあまりにも良い見ていません。 なぜこのようなことが起きるのでしょうか? すべてのエラーと同じように、あなたが行きたいです 背中と最初の1で始まり、 典型的には、1つのエラーの原因理由 それの後に他のエラーがたくさん。 18:25、伝えここでは、upper.cを見ます 私はこのプログラムでは、upper.c命名します 18行目で、エラーは暗黙のうちに宣言します 型にstrlenを関数のライブラリ unassigned--何とか、私は知りません 何がその後に起こっています。 それが今の私に言っていますすべてがあります その何かがstrlen関数に起こっています。 そして、コンピュータはので、混乱しています それは私がstrlen関数が何であるかを知らない、のようなものですか? それは何だろうし あなたが不足しているあなたを教えて? 観客:あなたは[聞こえない]を逃しています。 ANDI PENG:あなたは正しいです。 その通りです。 それはどこだようにするためです 確認することが重要 そのあなたが使用するすべての関数あなた コー​​ドが正しいヘッダをしています 他のライブラリのファイル、または あなたは、エラーの多くを取得するつもりです あなたのコードが行っていません 何が起こっているのか知っています。 だから我々は、ここではstring.hを含めるつもりです。 今、私たちは上コンパイルしようとします。 正しくコンパイルします。 のは、このプログラムを実行してみましょう。 だから、小文字で何かを入力します。 何人が入力したいですか? 何かを叫びます。 すべての権利、チャーリーはただで歩きました。 私たちは、チャーリーの名前を入力します。 小文字でチャーリー。 そして、うまくいけば、うまくいけば、これは 大声で叫ぶと吐き出すつもり 大文字でチャーリー。 わーい! 誰もがどのように理解して 私はそれを解決歩き回りましたか? 方法私ができます 整数を使用して操作します その何かを解決するために 私は、文字列でやってみたいです、 文字と整数は可能性があるため ため、同じ方法で参照すること ASCIIマッピング。 その場合、あなたのポイントに戻ります私 32の代わりに、ここに置くことを望んでいました 同じようにマイナスの小文字を大文字 すなわち、それは、同様に同じように機能するであろう それはだから単純に これらの2つの値の間の差。 私はこのagain--チャーリーを作成する場合。 ああ、いや。 私はええ、私たちは間違った方向に行ったと思いますか? 聴衆:[聞こえない]小文字。 ANDI PENG:そこに行きます。 うん。 そして、アウトチャーリーくれる。 だから、ときに注意してください あなたが値を減算しています ある1覚えておきます 他のより大きい。 例えば、ここまで私が忘れてしまいました その小文字aは実際にあります 大文字のAよりも大きいだからとき、私は それらを他の方法を減算してみました 周りに、私は負の32を得ました。 そして、私のコンピュータは、のようでした 私はそれが何であるかを知りません。 それだけでいくつかのランダムな確率です 非常に良いではありません値。 だから、あなたがしていることを確認してください 正しい長さに引い ご希望の文字を検索します。 OK。 どのように誰もが混乱しています この関数を書くことについて行きましたか? OK。 だから実際には、すでに機能 ctype.hと呼ばれるライブラリに存在します。 ライブラリのと呼ばれるのctype.h。 この機能は、実際に 既にあなたのために書かれました。 これは、上部に呼ばれています。 だからの目的のために このPSET、あなたが行っています あなたが本当に使用したいことを見つけるために 多くの機能が含まれています ctypeライブラリ内。 アッパーには、以下に、上です lower--ものは、すべての機能があります あなたは非常に使用することができること、 非常に迅速に独自のコードでその これはまったく同じものを行います。 私たちは、変換する方法を書きました 大文字に変換した文字列。 しかし、これは実際にコードです 他の誰かが書きました あなたがアクセスできること 異なる機能を経由して。 うん? 聴衆:だから、そこでのをコピーします そして一つ一つの文字のためにそれを行いますか? ANDI PENG:ええ、私はそうではないので、 の値を気に。 私は違いことを気に それらの間に右、32のですか? 小文字の違い Bと大文字のBも32です。 Cの違い 大文字Cは常に32です。 私は気にする必要があります 両者の違い、 手紙のすべてのため 同じパターンに従う、右? 私は違いがある場合 そのうちの一つとの間に、 私が知っているどのような違い それらのすべての間です。 良い質問。 うん。 みんな良いですか? OK。 OOP。 OK。 ですので、別の概念 あなたとして非常に有用であることを行って 開発し続けます あなたのコードは、このアイデアです 機能や抽象化を作成します。 だから今、私たちはすべての代数を撮影しました。 代数では、あなたがそこにあることを教えられています 関数と呼ばれるこの素晴らしいこと 機械、あなたの場合 番号の入力一種、 この素晴らしい機能を通してそれを実行します そして、出て右、異なる出力をポップ? コー​​ドでは、同じことが起こります 関数の任意の並べ替えインチ だから私は物理的にできました 私のコードの私の体で書きます 実際に行い、メインステートメント どのようなコードの本体はやっています。 しかし、それ以外では、私がすることもできます 多くの異なる機能を書きます それは、多くの異なることを行います。 例えば、我々はすでにしました それらのいくつかを使用して開始。 ありますPrintf-- 機能他の誰か 既にことを書いています 我々は我々のコードで呼び出すことができます。 この場合upper--するには、 upper--は別の関数であります 我々は、我々が書きました 我々のコードで呼び出すことができます。 そして私はなぜ推測します 私たちも、機能がありますか? なぜ我々はそれをウンチしません すべてのコードの同じ行にありますか? それは誰のために、それが容易になります。 まあ、その背後にある理由 組織、まず、です。 それは起こって本当に迷惑なんです 誰かのコードを介して、 そして、printfのような一つの機能。 あなたたちは、実際に知っていた場合 関数のprintfは、書き込みに伴います それは、コード1000行、のように、です。 もし私が望んでいたすべての時間 何かをprintfのします、 私は、コード1000行を書かなければなりませんでした それは読み本当に迷惑であろうが、 右? 私達はちょうどきた理由です この抽象関数を作成 我々はすでに誰かを持っています 他のどこかに書いています。 毎時間、我々はそれを使用する必要が 我々のコードは、私たちはprintfのを言わなければなりません。 そして、それが機能を使用することが可能です 誰か他の人は私たちのコードで書かれています。 それが容易になります 組織的コードを読み取ります。 第二に、それは簡素化です。 それは我々が持っているの手順を簡素化 私たちの問題を解決するために取ります。 printf関数、printfのような関数、 上位のような関数 に私たちを許可するすべてのものがあります それは簡単ですので、ダウン私たちのコードを簡素化します。 そして最後は再利用性です。 我々が持っているという事実そう printf関数と呼ばれる関数 我々は、多くの異なるを呼び出すことができること 時間と、それは再利用可能にすることができます。 私はprintfのを書くとしたら、 私は一度だけそれを書きます。 それだけで、その一つの場所に存在しています。 私は再びそれをやってみたかったなら、私は希望 そのすべてをコピー&ペーストする必要があります コー​​ドの私の第二のラインに。 我々は関数を作成する場合だからこそ、 それは、私たちのメインの外部に存在します 私たちは時に呼び出すことができます それとするたびに、それを再利用 それは非常に簡単だように、私たちは必要 私たちのためのプログラムを書くように。 私たちが実際に書くことになるそうな方法 この関数は、右、非常によく似ているのですか? これは、最初の一種であります 我々はよ内のインスタンス スタイルに機能テイクを参照してください 私たちのint型メイン空洞とは異なります。 この場合、私がしたい場合 右、Qという関数を書くのか? そして、ここでint値 すべての私に言っています、 私はこれを何をしたいです 私に返す関数? 私は整数をキューブにしたい場合は、 私が入力したいするつもりです。 これらはパラメータです。 私は、int型の値を入力するつもりです。 そして、私は返すつもりです int型の別の型の値。 そして、ここで、あなたと 、私がやっているすべてを見ることができます 私の入力が何であれ3乗されます 私の出力として、それを返します。 だから、すべてこの機能はされません 整数のいくつかの並べ替えを取ります。 それは、二回自分自身を乗算 それが有効でキューブようにします。 そして、それが返されます どんなことが出力されます。 したがって、この場合には、2行です 私たちは余分書かなければならなかったコード。 しかし、我々は呼び出すしたい場合 この複数回の際に、 それはそのいずれかを入力するためにはるかに簡単です キューブに右でここにラインより 複数回通過する必要があります。 本質的に任意だから方法 関数の任意の並べ替えの書式 存在することが起こっていることは、ここのようなものです。 だから我々は、関数名を持っています。 この場合には、キューブと呼ばれています。 そして、我々はそれをキューブのために名前を付けます それは覚えやすいです。 あなたは正方形のそれに名前を付けることができますし、 実際立方ことができます。 関係ない。 君がいるだけ名前 あなたの機能を割り当てます。 ここでこの権利、int型であり、 あなたが必要とするパラメータのタイプ。 したがって、この機能を何 動作するために必要ですか? まあ、それは入力を必要とします。 私は、入力と命名。 あなたが好きな、それに名前を付けることができます。 しかし、私はint型のものが必要。 これは、実際に実行するために起こっています ここの内側にあるものは何でも、 関数の本体。 そして、戻り値の型 右ここで、このint-- すべてのそれは私に言っています この関数であることを int型の私に戻るつもり。 だから、int型で取るつもりだし、 それはint型をあなたに戻って与えるために起こっています。 誰もがどのように理解しています この種類のフォーマットが動作しますか? クール。 OK。 これはと思われるのであれば心配することはありません 今抽象少し。 これは、私たちが話しましょう​​ものです。 私たちは深くに潜りますよ 後にコースインチ 方法より高いレベルの任意の並べ替え これらの事の仕事の抽象化 メモリ内での、すなわち お使いのコンピュータは、すべて このタイプに格納されています スタック、私は言おう。 そこに上部のアップそう。 あなたならば私は知りません 人はそのよく見ることができます。 私はズームインしようとするでしょう。 ここで一番上に、我々 物理的なテキストを持っています コンピュータがinterpreting--あるものの そのすべて0と1 当社のコンピュータ内に存在します。 そして、我々は初期化されています データと初期化されていないデータ、 私たちは、グローバル変数を呼び出します。 存在する変数だから すべてのプログラム全体で そしてあなたの全体の全体で、 基本的に、コード。 心配ない君たちがある場合 これについて不明なの一種。 それは今本当に重要ではありません。 そして、我々は何を持っています スタック内のヒープと呼ばれます。 文字通りとしてスタックを考えます 物事の束のように、 異なるのスタック 物事を上にプッシュされて 様々な格納することを互いの あなたのコード内の変数と構文。 そして、ここでは非常に底部に、 我々は、環境変数を持っています あなたは内で実行されているものの コー​​ドのちょうどあなたの小さなライン。 そして、私たちはちょうどズームするつもりです 実際のスタック部にインチ だから右ここで、我々はズームした場合 スタックのちょうどこのエリアの中で、 これは、それがどのように見えるかです。 そして、これは実際には非常に重要です あなたたちは、機能について話すとき、 予告そのため、 お使いのコンピュータのメモリ 変数を記憶しています 機能 両方のあなたのパラメータ 機能とあなたの主な変数 別の場所です。 だから、今、主は、 実際の関数 あなたは、コード内で実行していること。 あなたは、そのパラメータは、ここに保存されています そのローカル変数は、ここに格納さ。 ローカル変数はただの変数を意味 その関数内でのみが存在します。 そして、それの上に、あなたはこれを持っています キューブと呼ばれる別の機能。 あなたはそれがパラメータだ持っています だけでなく、それらの地元の人々。 理性と次のことができます ことで、ここで何を参照してください キューブを取り込むときに起こります メイン関数から値 実際にはその超えるコピーであるということです。 だから私はキューブにたい場合 2と8を返すと、その2 実際に入力され、 パラメータとして、それはです あなたはそれが既存しているようにコピーされ メモリ内の2つの異なる場所です。 そして、あなたは非常に注意する必要があります 覚えるものの一つに あなたが実際に操作しています。 そして、何が起こったかの例 それは非常に、非常に悪いだろう 右ここに存在しています。 だから右ここで、私が持っている、理論的には、 右ここでプログラム、主な機能 私はint型を宣言していることをX 1に等しいです。 私は別のint yが2に等しいと宣言しています。 そして、私はそれを実行していますよ この機能により 私はと仮定と呼ばれるスワップ、 それは2つの値を交換するです。 そして私はするつもりです 右、それらをプリントアウト? それは私がこのプログラムが何をしたいのです。 それでは、降りてくると見てみましょう。 だから私は実際には別のを書いた場合 機能、あなたが見ることができるように、 我々はここで私たちの主な機能を持っています。 そして、我々は我々のを持っています ここで第二の機能。 ボイドスワップ。 ボイドがちょうどそれがだことを意味し 何も返さするつもりはありません。 関数名は スワップと呼ばれ、それはです 摂取2つの変数のint aに行くと あなたの[聞こえない]機能から、Bをint型。 だから、基本的にここで、私たちはしています この関数にxとyを渡します。 そして、私たちがした場合 私たちが望むthis--作成 右、一時的な値を作成するには? 我々はにそれを割り当てるつもりです。 そして今、同じBに起こっています。 Bはバックになるだろう 一時値があったところ、 なぜならときに、これは あなたは物事を交換したいです、 あなただけのそれらを交換ようにすることはできません。 あなたは1アウトを維持する必要があります ここでは、覚えているように、 何それが原因で一度、あります あなたは1を交換し、あなたは忘れます その元の値は、右何だったのでしょうか? このプログラムは、理論的にはそう 右、動作するはずですか? 私はスワップしたい場合 2、彼らは交換する必要があります。 それでは、それを実行してみましょう、それが動作するかどうかを確認します。 あなたたちが見ることができるように、X 一度1とyかつて2でした。 そして、私はそれを印刷する場合、 xは好ましくは1であり、yは2です。 うーん、このプログラムはしていないようです 私はそれが仕事をしたい方法を作業。 誰もがでショットを取りたいん これが起こった理由を推測? それは方法に関係しています 異なるものがあること メモリ内の別の場所に保存されています。 OK。 だからみんなが心配する必要はありません 今このことについてあまり。 しかし、そのキューブのローカル知っています 変数aとbでした、 ここに私達の機能であるため、 我々はAとBを宣言しました 存在する変数として キューブ内の、その関数。 しかし、あなたが見ることができるように、パラメータは、 それがここに格納されていた中で取っています。 しかし、我々は実際にはありませんでした 何かを返します。 我々は、実際には、xとyを変更しませんでした。 私達はちょうどAとBを変えました。 我々はに、xとyをコピーしていました 何かがAとBと呼ばれます。 しかし、我々は決して実際に xとyの自分自身を操作しました。 あなたたちは見ています どのようにそれが起きているのでしょうか? 我々は単にそれをコピーしたということです 以上の、しかし、我々は実際に保たれていません 彼らは、メモリにあった場所のトラック。 そして今コンピュータ 私は、ああ、きました探しています このことを実行します この素敵な機能。 しかし、xとyは、xとyのままです。 何も起こらなかったですし それらのため実際の これらのパラメータこと ローカル変数 異なるに格納されています メモリに配置します。 これは高レベルであります コンセプト我々'LL コー​​スの後半で見始めます。 しかし、これだけであることを知っています 起こることができる問題 私たちはどのように上の方法を見つけ出すだろうと コー​​スの後半でこれに対処。 OK。 大丈夫。 私たちがいるそう最後の概念 本当にカバーするために行きます それが便利になるだろう PSET今週 呼ばれるものです コマンドライン引数。 だから、彼の講義でロブが通過しました どのようにこれらの作業の簡単のようなもの。 基本的にことを知っています あなたが書いているとき 主な機能のように、ときに我々 過去に前の関数を書いて、 我々はint型のメイン空洞を持っていました。 そこに、私たちが持っていた理由は、ボイド 私たちのプログラムがなかったので、でした 右、実行するために入力値に必要ですか? 私はマリオを実行したとき、私は必要はありませんでした 実際に何かを入力します 私はマリオを実行したとき。 私は後にユーザに促すことができます。 しかし、それは必ずしもそうではありません。 例えば、この中 今週の問題セット、 あなたはで、それを求められることになるだろう あなたのプログラムを実行することに加え、 あなたが入力したいとしています あなたのようにまっすぐに特定のもの あなたのプログラムを実行します。 だから我々はそれを行う方法が呼ばれています コマンドライン引数、どの 引数のようなものです あなたは、直接入力することができます あなたがプログラムを実行しようとしているよう。 したがって、このための表記法、 それはかなり複雑に見えるのです、 しかし、それは本当にありません 難しいです。だからint型main-- それはちょうどあなたの主な機能です。 ブラケットARGV ARGCカンマ文字列に。 そう言っていることすべてがこのことです int型argc--すべてのことはあなたを伝えるです それらは数であるということです 引数は、コンピュータが期待するべきです。 本当にそうだ一つのこと を追跡することが重要 あなたのプログラムの物理的な名前であります これらの引数の1つとしてカウントされます。 私は私のプログラムを持っているしたいのであれば プラスつの追加のコマンドラインを実行します。 引数、私は実際によ 2を持っているつもり。 ARGCは、実際には2つのことになるだろう。 そして、文字列ARGV bracket--すべてのことをやっています、 それは私に与えています 文字列の配列です ただ何を表示し、保存するために行きます これらのコマンドライン引数のすべてがあります。 ですから、例えば、私はこれを持っているしたい場合 プログラムは、右、OUTFILE INFILE ./copy? それはちょうど一般的なLinuxコマンドです。 何が実際にARGCのですか? どのように多くのコマンドライン引数 この中には、実際にあるのですか? これはすべてのコピーを作成しているん 一つのファイルの名前のINFILE それそこにコピー 別のファイル、右? それはすべて、これはやっているのです。 あなたが見ることができるように、私は1つの行でそれをやっています 実際にプログラムを必要とせず。 この場合、私たちのargcとは何ですか? 私たちはどのように多くの引数を持っていますか? 聴衆:三? ANDI PENG:私たちは、正確に、3を持っています。 だから、と非常に直感的です ただそれだけだと思います INFILEとOUTFILE。 しかし、知っているの物理名 プログラムは、1つとしてカウントを実行しています。 したがって、この場合には、ARGCは実際には3です。 方法については、argvの0は何ですか? 、のすべてを覚えています コマンドライン引数 文字列の配列に格納されていました。 だから私はそれにアクセスしようとした場合、どのような ブラケット0は私を与えるとargvでしょうか? 聴衆:[聞こえません]。 ANDI PENG:その通り。 それは私にドットを与えるだろう それはだから、コピーを大幅に削減 0番目の要素、 私の配列の最初の要素。 何ARGV 1は? 聴衆:INFILE。 ANDI PENG:INFILE、まさに。 何のargv 2はどうですか? 聴衆:OUTFILE。 ANDI PENG:OUTFILE。 これは、今少しトリッキーです。 あなたたちはどう思いますARGV 3は私を与えることにしようとしています 私はそれをプリントアウトしようとした場合はどうなりますか? 聴衆:[聞こえませんか]? ANDI PENG:あなたは手のアップがありましたか? うん。 聴衆:代替。 ANDI PENG:その通り。 だから私たちは講義で覚えています レース何かの終わりに持っています ヌルターミネータと呼ばれますか? また、この中に取得します さらに上のクラスです。 しかし、表記であることを知っています、 方法コンピュータ それは終わりだということを知っています 配列のことということです ヌルと呼ばれるものを置きます ターミネータまたはダッシュゼロ。 ですから、ARGV 3にアクセスしようとすると、 あなたはこのダッシュ0を打つつもりです。 これはトリックの質問の一層です。 何ARGV約4? これは、過去のnull終端であります 私たちの配列の境界過去。 に起こっているあなたをどう思いますか 我々はそれをしようとするときに起こりますか? 聴衆:[聞こえませんか]? ANDI PENG:申し訳ありませんか? そのビット大声で言いますか? 聴衆:[聞こえません]。 ANDI PENG:はい。 それはの名前です。 面積はあなたが最も可能性の高い取得します。 しかし、それARGVを知っ4-- それがアクセスすることができます お使いのコンピュータの中の場所 メモリあなたは本当に ので、触れてはなりません 今、あなたは何であるかARGVを知っています。 あなたはそれがサイズ3の配列だということを知っています それはドットコピー、INFILEとOUTFILEを持っています。 あなたがそれを超え、これまで行くことにしよう あなたがヌル終端を過ぎていること、 お使いのコンピュータは、おそらく持っています ARGV 4で保存されたもの。 そして、あなたが本当にすべきではありません 、ARGV 4へのアクセスを許可 あなたがファイルを持っているので、 キャビネットとあなただけです これらの3つの棚へのアクセスを可能にしました。 しかし、あなたが道を越えて到達しようとした場合 あなたが許可されている場所の棚、 あなたはいじり開始するつもりです コンピュータのメモリ内の他のもの。 それは本当に、本当に悪いことになるだろう。 だから、ちょうどそれを知っています。 あなたが非常に注意してください ただランダムに開始されません。 配列の要素にアクセスすること あなたが作成したいものではありませんでした。 うん。 OK。 だから我々は別のものをやろうとしています ここでは、端末の例。 OK。 すぐに講義でロブそう 先日は行っ この例を通して、どこに彼 int型メインのint argcの文字列ARGVを持っていました 私はことを私に語っているブラケット、 コマンドライン引数を持つことになります。 ARGCが等しい場合、彼は、持っています 2--が、覚えているに等しいです 等号は比較を意味等しいです。 それが2の場合、私はよ こんにちは、印刷しようとして、 何でも最初に 配列の要素です。 それ以外の印刷、こんにちは世界。 これがために起こっています 基本的に起こりますか? 誰かがちょうどで説明することができます 英語は、このプログラムは何をしているのですか? うん。 聴衆:誰かがコマンドを入力した場合は そして彼らの最初と最後の名前は言いました、 それだけでは印刷されません 最初のものと言う、こんにちは、 どのようなあなたの最初の名前です。 ANDI鵬:OK、のはそれを実行してみましょう。 したがって、たとえば、私がいた場合には作ります このファイルには、ハローハローto--作ります あなたは私は入力に何したいですかto--? 対象:姓と名。 ANDI PENG:最初と最後の名前は? スペース? 聴衆:うん。 ANDI PENG:誰かが言うことができます 私、今、argcが何ですか? ちょうどそこに? おっと、申し訳ありません。 私は戻りましょう。 どのように多くのコマンドライン引数 あなたは人が実際に見ることができませんare--。 しかし、私はズームインしようとするでしょう。 私はしようとしています。 うん、右、3があるのか​​? それは、ハロードットスラッシュです それはアンディだし、それが鵬です。 だから、みんながこれをどう思いますか プログラムは、プリントアウトされようとしていますか? ああ。 あ、ごめんなさい。 間違った名前。 それはこんにちは、世界をプリントアウトしています。 誰も説明したいん なぜそれが起きているのでしょうか? うん? 聴衆:[聞こえません]。 ANDI PENG:その通り。 だからここに、条件付きです ARGCが2に等しい等しい場合、です。 だから、唯一のケースでありますことを 2つのコマンドライン引数。 その後、私は印刷するつもりです、 こんにちは、どのようなことがあります。 しかし、それ以外の、私はするつもりです ただ、Hello Worldのを印刷します。 だから、誰かがしたいん 私の例を与えるために 私は実際にできるようになる方法 それはARGV 1の値を印刷してもらいますか? 私はここで入力に何を持っているでしょうか? 一つだけ、右? ドットこんにちは、すでににあるため 最初の引数としてカウントされます。 私は唯一の多くを持っています。 私はアンディをすればそれでこんにちは点在しています。 こんにちは、アンディ。 誰もが理解しています なぜそれが起きているのでしょうか? うん。 聴衆:だからとの間のスペース コマンドline--は[聞こえない]ですか? ANDI PENG:いいえ コマンドラインでスペースだから 引数、xは、お使いのコンピュータを伝えるために このことは、新しい文字列の先頭です。 だから、文字列のargvはそれを格納しhere-- あなたのコマンドライン引数のすべて 文字列インチ だから、コマンドラインでスペース 、しても、そのすべてはあなたを教えていますargument-- これは、1つの文字列の末尾にあります そして、それは別のに移動する時間です。 うん。 これがためにかなり重要です あなたのPSET、あなたがしているので、 これらのテストをすることになるだろう。 だから、誰もが持っていません この上の任意の質問? うんいいね。 うん? 観客:あなたが希望だから理由 代わりに整数引数CALCを置きます [聞こえない]のお好きな時になります に追加情報を入力します [聞こえませんか]? ANDI PENG:うん、まさに。 一部のプログラムはあなたが必要になります 入力するコマンドライン引数 それはに渡し、それはそれを使用します。 うん。 聴衆:だから何であれば[聞こえませんか]? ANDI PENG:まあ、私は何がありますか 私のプログラムでは、次に変更するには? 聴衆:ちょうど3。 ANDI PENG:なぜということです 起こって、あなたは思いますか? 聴衆:[聞こえない]から。 観客:あなたがする必要があるだろう [聞こえない] 2に変更します。 対象:1と2。 ANDI PENG:1と2、正確に。 したがって、このケースでは、あなたはおそらくだろう 2のprintf statements--を持つようにしたいです ARGV 1を印刷し、1 ARGV 2を印刷1。 ここに。 私は実際にその実際に素早く行うことができます。 そこに行きます。 ああ。 あなたが望んで非常にされていません。 しかし、あなたの周りの人の混乱であれば 書式は、それが出てきます。 うん。 クール。 私たちは時間を少し短くしている知っています。 しかし、私はちょうどすぐに費やすつもりです helpful--を通過する数分 観客:あなたは2分を持っています。 ANDI PENG:私は2分がありますか? ありがとう。 いくつかの簡単なのpsetのヒント。 したがって、このPSETのために、私は非常に、お勧めします 私が言ったように、誰もが仕様を読み取ります。 次の3つのprograms-- 1を書くことでしょう 、caesar.cと呼ばれるもの、initials.cと呼ばれます vigenere.cと呼ばれるもの。 そのいくつかの重要なヒント 君たちは本当にしたいです そうmind--に保つために この機能があります 私が言いたいようトロワ、atoi--と呼ばれます。 それはだ場合不明 実際にあなたがそれを言いますか。 しかし、それはやっているすべては、それが入力です。 これは、int型に文字列を変換します。 だから私整数にASCIIを表します。 それはちょうど、ASCII変換です 値は、値を整数へ。 だから、その格納した配列をARGVを覚えています あなたのコマンドラインのすべてのarguments-- それは文字列としてそれらをすべて格納します。 だから、あなたのことができるようにしたい場合 そのうちの一つが整数となっています、 あなたが必要があるとしています ここで、この値を使用しています。 モデューロ、我々がカバーのように 以前のクラスの今日、 あなたが持つことができます あなたが持っているものは何でもの残りの部分。 だから、私たちは本当に、本当に持っている場合 シーザーで多数、 私たちは、エンドを持っている場合 Vigenereの文字列の? どのようにできるようにするつもりされています それがラップアラウンドしてもらうには? 私は、zヒットし、私がしたい場合 それに戻って行くために、 どのように私は取得するつもりです それはラップアラウンドするには? おそらく、使用したいです どこかでモジュロ。 第二に、周りの閲覧 あなたのライブラリー。 ctype.h。 それは我々が持っている新しいライブラリです。 あなたは本当に、本当にたくさんのを見つけることができます 便利functions-- isupper、islowerは、 TOUPPER、tolowerは、はisalpha、エトセトラ。 非常に有用であろうすべての機能 あなたが把握しようとしているときに、 この文字は小文字のですか? 私はこれを変換するにはどうすればよいです 大文字に文字列? これらすべてのものは、非常になります あなたのpsetのために非常に役立ちます。 OK。 オフィスアワー今夜です午前8時00分に TEALの教室で午前11時明日 だけでなく、水曜日と木曜日の夜。 営業時間はコモンズです。 高君たちを提案 すべては、すぐに使い始めます あなたはそれをしたくないので、 木曜日の夜は、問題を抱えている子供 され、あなたのpsetを提出し、 以下のように、私は何をすべきかわかりません。 私は終了し、開始し、私が提出しました。 自分自身にいくつかの余地を与えるようにしてください、 コー​​ドの問題が常に発生するため。 あなたは確認します あなた自身を与えること 多くの時間をできるようにします psetを完了します。 クール。 私はここでたむろします。 聴衆:このオンラインはすでにありますか? ANDI PENG:それはだ場合、私は知りません オンライン既に、それがされます。 誰場合、私はここにたむろう すでにご質問があります。 来てくれてありがとう。