ZAMYLA CHAN:それは、Zamyla私です。 マリオ今日は、我々がすることになるだろう マリオための半ピラミッドを描きます 登るします。 それでは、私たちの話をしましょう to-doこの問題のための。 私たちは希望するつもりです 要求し、検証します 方法の有効な入力のためのユーザ 高い彼らはマリオのピラミッドになりたいです。 そして、我々はそれを描画するつもりです。 それではを促すとして始めましょう そのユーザーに入力を検証します。 私たちは、を利用することができます CS50ライブラリ関数 ことを保証しますint型を取得 ユーザは、整数を入力します。 任意の正の整数、負 整数は、数0はすべての公正なゲームです。 そうしないと、ユーザーはに求めるメッセージが表示されます それらの入力有効な整数まで再試行してください。 GET intはない今が、 私たちのために多くの作業 ことを確保する上で ユーザーは、私たちに整数を与えます、 我々はまだいくつかを適用する必要があります その上で追加の制約。 結局のところ、我々はマリオクライミングを持つことができません 12負の高さの半分ピラミッド。 それに加えて、 問題の仕様 我々は唯一できることを言います マリオは登るできるようにします 0と23の間の高さのピラミッド。 [OK]を、ので、それは私たちに必要なことを意味し 継続的にユーザーを促します 私たちに有効なを与えるために 数だけ続けます 彼らは私たちに有効な高さを与えてくれた後に。 我々はそれをどのように行うのですか? まあ、連続プロセスは、私たちを与えます loops--のアイデアは、何かをして 繰り返し。 しばらくとしてCにおける一つのループ ループそれは継続的になります 限り、ル​​ープの本体を実行します 与えられた条件がtrueに評価されます。 すぐにその条件として、 falseと評価され、 プログラムは、に進みます 何がその後に来ます。 だからループが一つの方法でありながら、 継続的に私たちのことを確認 有効な入力をユーザーに促します。 そして、彼らは私たちに有効な入力を与えると、 我々は次に来るものは何でもに進みます。 私たちは、私たちがお願いするつもりだことを知っています 少なくとも一度入力するためのユーザー。 だから今、私たちは姉妹に来ます do-whil​​e文でループ、しばらく。 ループが実行されながら行います ループの本体に少なくとも一回。 だから、条件をチェックせずに、 それは、ループの本体を実行します。 そして見るために条件をご確認ください それは自分自身を繰り返す必要があるかどうか。 これは、ときに便利です 私たちは、ユーザーの入力を検証しています。 我々は、我々が行っていることを知っています 少なくとも一度、それらを依頼します。 だから、ループかもしれませんが行います このようなものを見て。 私たちは、整数nを持っています。 そして、DOの内側 whileループ、我々すぐに 整数の入力をユーザーに求めます。 nが無効であるなら、私たちは彼らを促します 何度も何度も何度も彼らまで 私たちはその有効な整数を与えます。 最後に、一度nは有効な入力である、我々はよ 私たちのプログラムの残りの部分に進みます。 それでは、スペックやチェックに戻りましょう 何の有効な入力のための条件 なるだろう。 有効な高さがしようとしています 0から23、包括間です。 だから、無効な高さをしようとしています 0未満または23以上であること。 だから設計することを忘れないでください あなたの条件慎重に、 条件を知ります んがforループ nが無効である間でなければなりません。 さて、これはあることを行っていません 単純な単一ブール式。 私たちは、結合する必要があるとしています 二つの異なる表現 私達の全体の状態を作るために。 それでは、ちょうど私がきた真理値表を見てみましょう すでにあなたに私たちがしているヒントを与えられました 2ブール値を扱うことになるだろう。 だからここに私の真理値表です 2 Booleans--ブール1と2を持っています。 だから我々は、評価するためのオプションを持っています bool1とするbool2またはbool1またはするbool2。 両方の場合にのみtrueになります ブール値は、すべてのに対し、trueと評価します またはの1限り、trueになります 2ブール値がtrueに評価されます。 [OK]を、ので、時間を割いて、これを一時停止 この真理値表を映像とダイジェスト。 私は右ここに待っていることでしょう。 あなたが戻ってくるときに、参照してください。 あなたは、つなぎ合わせることができるかどうか あなたのためのブール式 n個の条件は無効に入力されています。 だから今我々が持っていること 有効なユーザ入力、してみましょう 先に行くとどのように我々の話を 半分のピラミッドを描くかもしれません。 ここでは、この単純なテキストエディタで、 私は左揃えピラミッドを描きました。 しかし、我々は我々が必要であることを知っています 右詰めするピラミッド。 だから私はこれをどのように行うのでしょうか? まあ、私がプッシュしようとする可能性があり 側に至るまで ほんの少しを置くことによって、 間の文字。 そして、次のために ラインは、私が置くつもりです いくつかのより多くの文字が、それに沿ってプッシュします そして、further--ようにとそうforth-- 私は右揃えピラミッドを持つまで。 だから我々は右の整列ピラミッドを持っていますが、 それはドットでそれほど大きくは見えません。 しかし、我々はまだしたいです その素敵な間隔を維持します。 だから私は、文字通りに行きますよ いくつかのスペースを挿入します。 代わりに3つのドット、I'LLの 1、2、3つのスペースを置きます。 二行目。 私は、1つ、2つのスペースを入れます。 そして、最後から二番目に ライン、ちょうど1スペース。 そして、ここで私は右揃えピラミッドを持っています。 テキストの例をやってから、 エディタ、我々はパターンのためのアイデアを持っています 我々は半分のピラミッドを描画するために使用しますことを。 すべての行のために、私たちは何をしました 我々はいくつかのスペースを入力され、 そして、次に入力されたいくつかの ハッシュし、次に入力されました Enterキー、その 新しい行を作成しています。 だから今、私たちはそれを持っていることを、行きましょう さらに一歩とパターンを見つけます。 だから私はのために、と言うつもりです この例の関心、 私たちは8の高さを扱っています。 最初の行には2を持ってしようとしています 7スペースを次のハッシュ。 second-- 3ハッシュ、6スペース。 第三row-- 4ハッシュ、5 spaces--ようになど 我々は、n行目に到達するまで。 それでは、私はn番目の行をお願いします、 どのように多くのハッシュ我々が持ってしようとしています そして、どのように多くのスペース? だから、把握するのはあなた次第です どのように多くのハッシュを表現する式 そして、のためにどのように多くのスペースを必要としています n番目の行は、いくつかの高さを持っている場合。 今、あなたはこれを考え出すしているとき、 あなたはインデックスを作成しているか注意してください。 私はこれの意味することです 日常生活の中で私たちのすべて 通常1により、カウントを開始します。 しかし、CS50およびコンピューター・サイエンスの 一般的に、我々は0索引化されています。 だから、最初の行は次のようになります 1とは対照的に、0のn個。 あなたがしている場合は、この点に注意してください あなたのパターンを把握しようとしています。 だから今のは、どのように戻ってみましょう 私たちは、ピラミッドを描くつもりです。 すべての行については、我々はしたいとしています スペースを印刷し、ハッシュを印刷し、 して、新しい行を印刷します。 ここにヒントがあります すべての行」を「単語。 Cでは、我々は、構造を持っています forループと呼ばれます、 から構成されています 初期化、条件、更新、 ループの本体。 こんにちは、私が言いたかったと言います 世界、50回、私のforループ このようになります。 私は0に私の整数を初期化します。 条件は、私が50未満であることです。 そして私のアップデートはちょうどです 私は1つによってたびにインクリメントします。 また、ループを使用することができます 物事を繰り返し処理します。 私たちが持っていないどのようにここで注意してください ハード番号をコード化され、 むしろ変数を置い 代わりに、条件に高さ。 だから私はここでやっている私は反復よさ ピラミッドのすべての行を超えます。 私はそれぞれのために何かを行うことができます 私のループの本体内部行。 私たちは、内部の何をしています ループの本体? まあ、我々はすでに言ったように、我々は印刷しています スペースと我々はハッシュを印刷しています 私たちは、新しい行を印刷しています。 forループだから私の外 このようになります。 私はすべての行を反復します ピラミッドの、使用して、 変数として、この場合には、高さ それはピラミッドの高さを格納します。 そのループの本体内部には、私はよ 繰り返しスペースを印刷しようとして、プリント 繰り返しハッシュ、 して、新しい行を印刷します。 だから今、その概念のすべてを使用して、 私は、このウォークスルーでは約話をしました あなたが促すことができるはずです ユーザは、入力のために、その入力を検証します そしてその後、半ピラミッドを描きます。 私の名前はZamylaであり、これはCS50です。