1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:02,500 ZAMYLA CHAN:それは、Zamyla私です。 3 00:00:02,500 --> 00:00:06,910 マリオ今日は、我々がすることになるだろう マリオための半ピラミッドを描きます 4 00:00:06,910 --> 00:00:08,290 登るします。 5 00:00:08,290 --> 00:00:11,570 >> それでは、私たちの話をしましょう to-doこの問題のための。 6 00:00:11,570 --> 00:00:13,610 私たちは希望するつもりです 要求し、検証します 7 00:00:13,610 --> 00:00:18,290 方法の有効な入力のためのユーザ 高い彼らはマリオのピラミッドになりたいです。 8 00:00:18,290 --> 00:00:20,090 そして、我々はそれを描画するつもりです。 9 00:00:20,090 --> 00:00:24,870 それではを促すとして始めましょう そのユーザーに入力を検証します。 10 00:00:24,870 --> 00:00:27,640 >> 私たちは、を利用することができます CS50ライブラリ関数 11 00:00:27,640 --> 00:00:31,160 ことを保証しますint型を取得 ユーザは、整数を入力します。 12 00:00:31,160 --> 00:00:35,730 任意の正の整数、負 整数は、数0はすべての公正なゲームです。 13 00:00:35,730 --> 00:00:41,670 そうしないと、ユーザーはに求めるメッセージが表示されます それらの入力有効な整数まで再試行してください。 14 00:00:41,670 --> 00:00:44,210 GET intはない今が、 私たちのために多くの作業 15 00:00:44,210 --> 00:00:46,730 ことを確保する上で ユーザーは、私たちに整数を与えます、 16 00:00:46,730 --> 00:00:50,760 我々はまだいくつかを適用する必要があります その上で追加の制約。 17 00:00:50,760 --> 00:00:56,420 結局のところ、我々はマリオクライミングを持つことができません 12負の高さの半分ピラミッド。 18 00:00:56,420 --> 00:00:59,040 >> それに加えて、 問題の仕様 19 00:00:59,040 --> 00:01:02,490 我々は唯一できることを言います マリオは登るできるようにします 20 00:01:02,490 --> 00:01:06,940 0と23の間の高さのピラミッド。 21 00:01:06,940 --> 00:01:11,120 [OK]を、ので、それは私たちに必要なことを意味し 継続的にユーザーを促します 22 00:01:11,120 --> 00:01:14,320 私たちに有効なを与えるために 数だけ続けます 23 00:01:14,320 --> 00:01:17,120 彼らは私たちに有効な高さを与えてくれた後に。 24 00:01:17,120 --> 00:01:18,720 我々はそれをどのように行うのですか? 25 00:01:18,720 --> 00:01:23,760 >> まあ、連続プロセスは、私たちを与えます loops--のアイデアは、何かをして 26 00:01:23,760 --> 00:01:24,720 繰り返し。 27 00:01:24,720 --> 00:01:28,220 しばらくとしてCにおける一つのループ ループそれは継続的になります 28 00:01:28,220 --> 00:01:33,480 限り、ル​​ープの本体を実行します 与えられた条件がtrueに評価されます。 29 00:01:33,480 --> 00:01:36,200 すぐにその条件として、 falseと評価され、 30 00:01:36,200 --> 00:01:39,770 プログラムは、に進みます 何がその後に来ます。 31 00:01:39,770 --> 00:01:43,180 だからループが一つの方法でありながら、 継続的に私たちのことを確認 32 00:01:43,180 --> 00:01:45,320 有効な入力をユーザーに促します。 33 00:01:45,320 --> 00:01:50,070 そして、彼らは私たちに有効な入力を与えると、 我々は次に来るものは何でもに進みます。 34 00:01:50,070 --> 00:01:54,380 私たちは、私たちがお願いするつもりだことを知っています 少なくとも一度入力するためのユーザー。 35 00:01:54,380 --> 00:01:59,200 だから今、私たちは姉妹に来ます do-whil​​e文でループ、しばらく。 36 00:01:59,200 --> 00:02:02,650 >> ループが実行されながら行います ループの本体に少なくとも一回。 37 00:02:02,650 --> 00:02:06,150 だから、条件をチェックせずに、 それは、ループの本体を実行します。 38 00:02:06,150 --> 00:02:09,750 そして見るために条件をご確認ください それは自分自身を繰り返す必要があるかどうか。 39 00:02:09,750 --> 00:02:13,080 これは、ときに便利です 私たちは、ユーザーの入力を検証しています。 40 00:02:13,080 --> 00:02:15,830 我々は、我々が行っていることを知っています 少なくとも一度、それらを依頼します。 41 00:02:15,830 --> 00:02:18,780 だから、ループかもしれませんが行います このようなものを見て。 42 00:02:18,780 --> 00:02:20,090 私たちは、整数nを持っています。 43 00:02:20,090 --> 00:02:22,760 そして、DOの内側 whileループ、我々すぐに 44 00:02:22,760 --> 00:02:24,750 整数の入力をユーザーに求めます。 45 00:02:24,750 --> 00:02:29,740 nが無効であるなら、私たちは彼らを促します 何度も何度も何度も彼らまで 46 00:02:29,740 --> 00:02:31,820 私たちはその有効な整数を与えます。 47 00:02:31,820 --> 00:02:37,440 最後に、一度nは有効な入力である、我々はよ 私たちのプログラムの残りの部分に進みます。 48 00:02:37,440 --> 00:02:41,830 >> それでは、スペックやチェックに戻りましょう 何の有効な入力のための条件 49 00:02:41,830 --> 00:02:43,670 なるだろう。 50 00:02:43,670 --> 00:02:48,090 有効な高さがしようとしています 0から23、包括間です。 51 00:02:48,090 --> 00:02:53,350 だから、無効な高さをしようとしています 0未満または23以上であること。 52 00:02:53,350 --> 00:02:56,420 だから設計することを忘れないでください あなたの条件慎重に、 53 00:02:56,420 --> 00:02:58,660 条件を知ります んがforループ 54 00:02:58,660 --> 00:03:01,470 nが無効である間でなければなりません。 55 00:03:01,470 --> 00:03:05,080 さて、これはあることを行っていません 単純な単一ブール式。 56 00:03:05,080 --> 00:03:07,630 私たちは、結合する必要があるとしています 二つの異なる表現 57 00:03:07,630 --> 00:03:09,900 私達の全体の状態を作るために。 58 00:03:09,900 --> 00:03:13,290 >> それでは、ちょうど私がきた真理値表を見てみましょう すでにあなたに私たちがしているヒントを与えられました 59 00:03:13,290 --> 00:03:15,200 2ブール値を扱うことになるだろう。 60 00:03:15,200 --> 00:03:19,620 だからここに私の真理値表です 2 Booleans--ブール1と2を持っています。 61 00:03:19,620 --> 00:03:27,050 だから我々は、評価するためのオプションを持っています bool1とするbool2またはbool1またはするbool2。 62 00:03:27,050 --> 00:03:31,980 両方の場合にのみtrueになります ブール値は、すべてのに対し、trueと評価します 63 00:03:31,980 --> 00:03:37,280 またはの1限り、trueになります 2ブール値がtrueに評価されます。 64 00:03:37,280 --> 00:03:41,450 [OK]を、ので、時間を割いて、これを一時停止 この真理値表を映像とダイジェスト。 65 00:03:41,450 --> 00:03:42,930 私は右ここに待っていることでしょう。 66 00:03:42,930 --> 00:03:45,760 あなたが戻ってくるときに、参照してください。 あなたは、つなぎ合わせることができるかどうか 67 00:03:45,760 --> 00:03:51,910 あなたのためのブール式 n個の条件は無効に入力されています。 68 00:03:51,910 --> 00:03:54,420 >> だから今我々が持っていること 有効なユーザ入力、してみましょう 69 00:03:54,420 --> 00:03:58,710 先に行くとどのように我々の話を 半分のピラミッドを描くかもしれません。 70 00:03:58,710 --> 00:04:03,410 ここでは、この単純なテキストエディタで、 私は左揃えピラミッドを描きました。 71 00:04:03,410 --> 00:04:07,050 しかし、我々は我々が必要であることを知っています 右詰めするピラミッド。 72 00:04:07,050 --> 00:04:08,650 だから私はこれをどのように行うのでしょうか? 73 00:04:08,650 --> 00:04:11,440 まあ、私がプッシュしようとする可能性があり 側に至るまで 74 00:04:11,440 --> 00:04:14,880 ほんの少しを置くことによって、 間の文字。 75 00:04:14,880 --> 00:04:16,779 そして、次のために ラインは、私が置くつもりです 76 00:04:16,779 --> 00:04:20,970 いくつかのより多くの文字が、それに沿ってプッシュします そして、further--ようにとそうforth-- 77 00:04:20,970 --> 00:04:23,360 私は右揃えピラミッドを持つまで。 78 00:04:23,360 --> 00:04:27,780 だから我々は右の整列ピラミッドを持っていますが、 それはドットでそれほど大きくは見えません。 79 00:04:27,780 --> 00:04:30,680 しかし、我々はまだしたいです その素敵な間隔を維持します。 80 00:04:30,680 --> 00:04:35,260 だから私は、文字通りに行きますよ いくつかのスペースを挿入します。 81 00:04:35,260 --> 00:04:39,420 >> 代わりに3つのドット、I'LLの 1、2、3つのスペースを置きます。 82 00:04:39,420 --> 00:04:40,370 二行目。 83 00:04:40,370 --> 00:04:42,640 私は、1つ、2つのスペースを入れます。 84 00:04:42,640 --> 00:04:45,370 そして、最後から二番目に ライン、ちょうど1スペース。 85 00:04:45,370 --> 00:04:48,290 そして、ここで私は右揃えピラミッドを持っています。 86 00:04:48,290 --> 00:04:52,170 テキストの例をやってから、 エディタ、我々はパターンのためのアイデアを持っています 87 00:04:52,170 --> 00:04:54,590 我々は半分のピラミッドを描画するために使用しますことを。 88 00:04:54,590 --> 00:04:58,080 すべての行のために、私たちは何をしました 我々はいくつかのスペースを入力され、 89 00:04:58,080 --> 00:05:00,170 そして、次に入力されたいくつかの ハッシュし、次に入力されました 90 00:05:00,170 --> 00:05:03,020 Enterキー、その 新しい行を作成しています。 91 00:05:03,020 --> 00:05:07,770 だから今、私たちはそれを持っていることを、行きましょう さらに一歩とパターンを見つけます。 92 00:05:07,770 --> 00:05:10,170 >> だから私はのために、と言うつもりです この例の関心、 93 00:05:10,170 --> 00:05:12,480 私たちは8の高さを扱っています。 94 00:05:12,480 --> 00:05:17,100 最初の行には2を持ってしようとしています 7スペースを次のハッシュ。 95 00:05:17,100 --> 00:05:20,020 second-- 3ハッシュ、6スペース。 96 00:05:20,020 --> 00:05:24,260 第三row-- 4ハッシュ、5 spaces--ようになど 97 00:05:24,260 --> 00:05:26,350 我々は、n行目に到達するまで。 98 00:05:26,350 --> 00:05:31,540 それでは、私はn番目の行をお願いします、 どのように多くのハッシュ我々が持ってしようとしています 99 00:05:31,540 --> 00:05:33,120 そして、どのように多くのスペース? 100 00:05:33,120 --> 00:05:37,000 だから、把握するのはあなた次第です どのように多くのハッシュを表現する式 101 00:05:37,000 --> 00:05:42,020 そして、のためにどのように多くのスペースを必要としています n番目の行は、いくつかの高さを持っている場合。 102 00:05:42,020 --> 00:05:46,060 >> 今、あなたはこれを考え出すしているとき、 あなたはインデックスを作成しているか注意してください。 103 00:05:46,060 --> 00:05:49,170 私はこれの意味することです 日常生活の中で私たちのすべて 104 00:05:49,170 --> 00:05:51,540 通常1により、カウントを開始します。 105 00:05:51,540 --> 00:05:55,950 しかし、CS50およびコンピューター・サイエンスの 一般的に、我々は0索引化されています。 106 00:05:55,950 --> 00:06:00,620 だから、最初の行は次のようになります 1とは対照的に、0のn個。 107 00:06:00,620 --> 00:06:04,550 あなたがしている場合は、この点に注意してください あなたのパターンを把握しようとしています。 108 00:06:04,550 --> 00:06:07,570 だから今のは、どのように戻ってみましょう 私たちは、ピラミッドを描くつもりです。 109 00:06:07,570 --> 00:06:12,300 すべての行については、我々はしたいとしています スペースを印刷し、ハッシュを印刷し、 110 00:06:12,300 --> 00:06:14,050 して、新しい行を印刷します。 111 00:06:14,050 --> 00:06:19,160 ここにヒントがあります すべての行」を「単語。 112 00:06:19,160 --> 00:06:21,470 Cでは、我々は、構造を持っています forループと呼ばれます、 113 00:06:21,470 --> 00:06:25,250 から構成されています 初期化、条件、更新、 114 00:06:25,250 --> 00:06:26,790 ループの本体。 115 00:06:26,790 --> 00:06:31,360 >> こんにちは、私が言いたかったと言います 世界、50回、私のforループ 116 00:06:31,360 --> 00:06:32,880 このようになります。 117 00:06:32,880 --> 00:06:35,480 私は0に私の整数を初期化します。 118 00:06:35,480 --> 00:06:38,230 条件は、私が50未満であることです。 119 00:06:38,230 --> 00:06:42,350 そして私のアップデートはちょうどです 私は1つによってたびにインクリメントします。 120 00:06:42,350 --> 00:06:45,140 また、ループを使用することができます 物事を繰り返し処理します。 121 00:06:45,140 --> 00:06:47,820 私たちが持っていないどのようにここで注意してください ハード番号をコード化され、 122 00:06:47,820 --> 00:06:51,820 むしろ変数を置い 代わりに、条件に高さ。 123 00:06:51,820 --> 00:06:56,420 だから私はここでやっている私は反復よさ ピラミッドのすべての行を超えます。 124 00:06:56,420 --> 00:07:00,160 私はそれぞれのために何かを行うことができます 私のループの本体内部行。 125 00:07:00,160 --> 00:07:02,350 >> 私たちは、内部の何をしています ループの本体? 126 00:07:02,350 --> 00:07:07,120 まあ、我々はすでに言ったように、我々は印刷しています スペースと我々はハッシュを印刷しています 127 00:07:07,120 --> 00:07:09,480 私たちは、新しい行を印刷しています。 128 00:07:09,480 --> 00:07:11,950 forループだから私の外 このようになります。 129 00:07:11,950 --> 00:07:15,070 私はすべての行を反復します ピラミッドの、使用して、 130 00:07:15,070 --> 00:07:18,890 変数として、この場合には、高さ それはピラミッドの高さを格納します。 131 00:07:18,890 --> 00:07:22,870 そのループの本体内部には、私はよ 繰り返しスペースを印刷しようとして、プリント 132 00:07:22,870 --> 00:07:26,730 繰り返しハッシュ、 して、新しい行を印刷します。 133 00:07:26,730 --> 00:07:31,010 >> だから今、その概念のすべてを使用して、 私は、このウォークスルーでは約話をしました 134 00:07:31,010 --> 00:07:35,210 あなたが促すことができるはずです ユーザは、入力のために、その入力を検証します 135 00:07:35,210 --> 00:07:37,370 そしてその後、半ピラミッドを描きます。 136 00:07:37,370 --> 00:07:41,510 >> 私の名前はZamylaであり、これはCS50です。 137 00:07:41,510 --> 00:07:43,167