ZAMYLA CHAN:それはZamyla、-私です。 今日は、実装するつもりです 我々はマリオを描くマリオ、 彼のために完全なピラミッドがオーバージャンプします。 分解してみましょう この問題のサブタスク。 まず、ユーザにプロンプ​​トを表示したいです ピラミッドの高さ。 そして、我々は確認します その入力が有効です。 そして、我々はするつもりです ピラミッドを描きたいです。 それでは、プロンプトについて話しましょう ユーザ入力を検証します。 それはのように見えるかもしれません この、それがdo-whil​​eループ 以下のためにユーザに促します 整数とだけ繰り返し その整数は無効である場合。 したがって、この条件は何をすべきですか? このために、のに戻ってみましょう 仕様へ。 まあ、スペックは任意の有効なことを教えてくれる 高さは、0と23との間になるだろう 包括的。 それでは、それは無効なことを意味し 高さが0未満になるだろう または23以上。 だから今、私たちの情報を持っていること、 私たちの状態を設計してみましょう。 しかし、我々は注意する必要があり、 今、私たちが持っているので、 私たちは評価したい2ブール値。 ここで私はあなたを提供してきました 真理値表。 これは、私たちは2を取ることができます ブール値、ブール1および2。 そして、我々はbool1のいずれかを評価することができます そして、するbool2またはbool1またはするbool2。 だから違いは何ですか 間ととや? まあ、bool1とするbool2意志 場合にのみ、真と評価 両方のブール値に該当する場合、 または操作に対し、 のいずれか1つがtrueになります ブール値または両方が真です。 念頭に置いてこれにだから、 あなたが把握できるかどうかを確認 何のために適切な条件 無効なnのあなたがdo-whil​​eループ なるだろう。 それにより、我々は、プロンプトが表示され、検証しました ピラミッドの高さのためのユーザ 彼らが望むこと。 だから今、それは私たち次第です ピラミッドを描画します。 このため、完全なピラミッド 問題は少しになります このような、我々は左のピラミッドを持っている場合に、 いくつかのギャップ、右ピラミッド。 それでは、少しこれを打破しましょう​​。 私は私のテキストエディタに行く場合は、ここで私がしました 私たちに左揃えのピラミッドを描かれました。 しかし、それはしないでしょう。 私たちがやりたいことは、私たちがしたいです 最初右揃えピラミッドを作成します。 だからプッシュする、これを行うには 側面に沿って私のハッシュ、 私はいくつかの文字を入れるつもりです ただこれらのドット、間インチ それから私は、上の2つを置くつもりです 次の行、およびその行の1。 だから、ここで私が持っています 右揃えピラミッド。 その後、私はするつもりです 一番上の行に戻ります そしてその隙間に入れます 二つのスペースは、仕様ごとに、です。 それから私はに記入するつもりです ピラミッドの向こう側。 私は書いて、2行目に行くつもりです 2ギャップのためのスペースと、その後2 ハッシュ。 戻る3行目に、二つのスペース ギャップと3ハッシュのために。 そして、最後に、二つのスペース ギャップと4ハッシュのために。 だから、何をフル ピラミッドは次のようになります。 もちろん、私たちは望んでいません 方法で、これらのドット。 だから我々は、これらを交換するつもりです 中にいくつかのスペースを置くことによってドット。 一つ、二つ、最初の行に3。 一、第二の上の2つ。 そして、3行目の1。 だから、これは、我々場合はどうなるかであります ちょうど完全なピラミッドを作りたかったです、 私たちのテキストエディタで、言います。 それでは、これをみましょう、 パターンを理解し、 そしていくつかの擬似コードにそれを変換します。 ピラミッドの各行のために、私たちはしたいです 左のピラミッドを印刷し、その後、 ギャップ、右ピラミッド。 左のピラミッドのために、私たちは印刷します スペースの必要量、 ハッシュが続きます。 その後、我々は、ギャップを印刷します ちょうど2つのスペース毎回です。 そして右のピラミッドでは、我々は印刷します ハッシュの必要数。 2番目の行では、我々が行いました まったく同じ方法。 私たちは、左のためのスペースを印刷します ピラミッド、必要量 ハッシュ、ギャップ、二つのスペース、および その後、右のピラミッドのためのハッシュ。 パターンに取り組むみましょう 左ピラミッドのため。 私が持っていた場合は、目的のために この例の、高さ によって要求された8の ユーザーは、私の最初の行 1つのハッシュと7のスペースを持っているでしょう。 私の2行目は持っているだろう 2つのハッシュ、6スペース。 第三行、3ハッシュ、5つのスペース。 あなたは、おそらくこれを行うことができます 8の高さのために、自分自身 そして、どのように多くの行ごとに決定 ハッシュとどのように多くのスペースが必要。 しかし、私たちがやりたいことはあります 我々はそれ抽象化したいです。 だから私は、任意のn行をお願いし、どのように多くの ハッシュと、私たちはどのように多くのスペースが必要なのでしょうか? さて、あなたが決定するように どのように多くのハッシュのためのパターン そしてあなたが必要とするどのように多くのスペース 所定の高さのための任意のn行目、 注意してくださいすることを忘れないでください あなたがインデックス化しているかの。 私はこれの意味することは、日常でのことです 人生私たちのほとんどは、1によってカウントを開始します。 だから、最初の行は、ナンバーワンになります。 2行目は、行になります 数2、というようになど。 しかし、コンピュータサイエンスのと CS50、我々はゼロインデックスが付けられます。 だから我々は、実際にはゼロからカウントを開始します。 だから、最初の行には、希望 行番号はゼロです。 2行目 行番号1になります。 だから私はのための8の高さを有していた場合 私のピラミッド、n個の最後の値 実際に7はない8であろう。 だから、これについては注意してください。 あなたが決定しているときと注意してください あなたのゼロインデックスかどうか、あなたのパターン または1インデックス OK。 だから今我々が持っていること 左ピラミッドのためのパターン、 我々は決定する必要があります ギャップのためのパターン。 幸いなことに、これは本当に簡単です。 それはちょうど常に2つのスペースです。 だから今、私たちは右のパターンに進みます。 最初の行は1つのハッシュを持つことになります。 2行目、2。 第三行、3。 だから上など。 だからもう一度、任意の抽象のために決定 nは、どのように多くのハッシュ任意の高さ そして、どのように多くのスペース 各行が持つべきです。 OK。 だから我々は知っている各行私たちのために いくつかのプロセスを実施する必要があります。 我々はそれをどのように行うのですか? さて、私たちはループ構造のために使用し、 初期設定で構成される、 条件、および更新。 ループを使用することができるため 処理を繰り返します。 だから、私はそれが挨拶したいと言います 世界50回、その後、私のforループ ここで、このようになります 私はゼロに私の変数を初期化します。 条件は、iが50未満であることです。 そして、この更新プログラムは、ということです 1度にインクリメント。 だから、これはすることであろう何をするのか 行で、Hello Worldの50回を印刷します。 今、私は反復したかったと言います ピラミッドの高さを超えます。 そして、代わりのハードコーディング 条件の一部の値が、 私は、変数の高さを使用しています。 だから、これは何をするかの反復であります 高さはそれぞれの行を超えます。 そして、私は内側に何かを行うことができます そのループの本体の。 我々は何をすべきかをしたいですか ループの本体内部? さて、私たちは私たちが望む、前に示したように スペースやハッシュを印刷します 左ピラミッドし、印刷のために その後、二つのスペースとハッシュを印刷します。 だから我々はすでにそれを考え出しました。 だから我々は埋めるために開始することができます 私たちのプログラムで、より多くの。 ここで私は、forループの外側を持っています ピラミッド内のすべての行を反復処理。 そして、その体内に私が行きますよ 繰り返しスペースを印刷するには、 繰り返しハッシュし、その後、ギャップ、 し、右ピラミッドのためにハッシュし、 新しいし、その後、最終的には、 行は次の行を開始します。 それにより、我々は、プロンプトが表示されました 入力のためのユーザー。 私たちは、それが有効だと確信して作りました。 そして、我々は、ピラミッドを描きました。 だから、マリオが正常にすることができます ピラミッドに登ります。 私の名前はZamylaです。 そして、これはCS50です。