1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:02,640 陳ZAMYLA:這是一個,我,Zamyla。 3 00:00:02,640 --> 00:00:06,950 今天,我們要實現 馬里奧,我們得出馬里奧 4 00:00:06,950 --> 00:00:10,730 他一個完整的金字塔跳過。 5 00:00:10,730 --> 00:00:14,430 讓我們打破 子任務針對此問題。 6 00:00:14,430 --> 00:00:17,930 >> 首先,我們要提示用戶 對於金字塔的高度。 7 00:00:17,930 --> 00:00:20,510 然後,我們要確保 即該輸入是有效的。 8 00:00:20,510 --> 00:00:23,280 然後,我們將 要繪製金字塔。 9 00:00:23,280 --> 00:00:26,850 >> 所以,讓我們來談談提示 和驗證用戶輸入。 10 00:00:26,850 --> 00:00:29,920 它可能看起來像 這一點,do-whil​​e循環的 11 00:00:29,920 --> 00:00:33,250 提示用戶輸入一個 整數,然後只重複 12 00:00:33,250 --> 00:00:35,700 如果該整數是無效的。 13 00:00:35,700 --> 00:00:38,220 所以,應該這個條件是什麼? 14 00:00:38,220 --> 00:00:40,630 >> 對於這一點,讓我們回到 到本說明書中。 15 00:00:40,630 --> 00:00:46,240 那麼,規範告訴我們,任何有效 高度將是0和23之間, 16 00:00:46,240 --> 00:00:47,350 包括的。 17 00:00:47,350 --> 00:00:51,400 於是這意味著任何無效 高度將是小於0 18 00:00:51,400 --> 00:00:53,840 或超過23。 19 00:00:53,840 --> 00:00:57,220 >> 所以,現在,我們有這個信息, 讓我們來設計我們的條件。 20 00:00:57,220 --> 00:00:59,230 但是,我們必須小心, 因為現在我們有 21 00:00:59,230 --> 00:01:02,130 我們要評估2布爾值。 22 00:01:02,130 --> 00:01:04,150 >> 在這裡,我向您提供 用真值表。 23 00:01:04,150 --> 00:01:07,520 這使我們可以採取兩種 布爾值,布爾一和二。 24 00:01:07,520 --> 00:01:13,600 而且我們可以評估要么BOOL1 和BOOL2或BOOL1或BOOL2。 25 00:01:13,600 --> 00:01:17,390 >> 所以,有什麼區別 之間以及和或? 26 00:01:17,390 --> 00:01:21,810 那麼,BOOL1和BOOL2會 計算結果為真當且僅 27 00:01:21,810 --> 00:01:25,680 如果兩個布爾是真實的, 而或操作 28 00:01:25,680 --> 00:01:30,190 為真,如果任意一方 在布爾或無一不是如此。 29 00:01:30,190 --> 00:01:33,110 因此,考慮到這一點, 看看你能不能找出 30 00:01:33,110 --> 00:01:37,460 什麼適當的條件 你對一個無效ñdo-whil​​e循環 31 00:01:37,460 --> 00:01:38,850 將是。 32 00:01:38,850 --> 00:01:43,540 >> 就這樣,我們已經提示和確認 用戶對於金字塔的高度 33 00:01:43,540 --> 00:01:44,550 他們想要的。 34 00:01:44,550 --> 00:01:47,740 所以,現在,它是由我們 繪製金字塔。 35 00:01:47,740 --> 00:01:50,520 完整的金字塔本 問題看起來有點 36 00:01:50,520 --> 00:01:56,340 這樣,我們有一個左金字塔, 一些間隙,然後右金字塔。 37 00:01:56,340 --> 00:01:58,630 因此,讓我們打破這一點。 38 00:01:58,630 --> 00:02:03,510 >> 如果我去我的文本編輯器,在這裡,我 繪製我們左對齊金字塔。 39 00:02:03,510 --> 00:02:05,160 但是,這是不行的。 40 00:02:05,160 --> 00:02:10,139 我們想要做的是我們要 首先創建一個右對齊的金字塔。 41 00:02:10,139 --> 00:02:13,580 因此,要做到這一點,只是推 我沿著一邊哈希, 42 00:02:13,580 --> 00:02:18,240 我只是把一些字符 在兩者之間,只是這些點。 43 00:02:18,240 --> 00:02:22,560 然後,我打算把兩個在 下一行,和一個在該行。 44 00:02:22,560 --> 00:02:26,070 所以,在這裡我有一個 右對齊金字塔。 45 00:02:26,070 --> 00:02:28,540 >> 在那之後,我要去 回到最上面一行 46 00:02:28,540 --> 00:02:33,930 並把在間隙,這 是,每規範,兩個空格。 47 00:02:33,930 --> 00:02:37,680 然後我會填寫 金字塔的另一側。 48 00:02:37,680 --> 00:02:42,030 我會去第二排,寫 兩個空格的差距,那麼雙 49 00:02:42,030 --> 00:02:42,920 哈希值。 50 00:02:42,920 --> 00:02:47,020 回到第三行,兩個空間 對於缺口和三個哈希值。 51 00:02:47,020 --> 00:02:51,480 並在年底,兩個空間 對於缺口和四個哈希值。 52 00:02:51,480 --> 00:02:54,400 所以,這就是一個完整的 金字塔的樣子。 53 00:02:54,400 --> 00:02:57,260 >> 當然,我們不希望 這些點中的方式。 54 00:02:57,260 --> 00:03:01,220 所以我們要替換這些 通過把一些空格點。 55 00:03:01,220 --> 00:03:03,720 一個,兩個,三個在第一行。 56 00:03:03,720 --> 00:03:05,650 一,二上的第二個。 57 00:03:05,650 --> 00:03:08,200 和一個在第三線路。 58 00:03:08,200 --> 00:03:12,060 因此,這是我們會怎樣做,如果我們 希望只是做一個完整的金字塔, 59 00:03:12,060 --> 00:03:13,700 也就是說,在我們的文本編輯器。 60 00:03:13,700 --> 00:03:15,860 >> 因此,讓我們藉此, 理解模式, 61 00:03:15,860 --> 00:03:19,870 並在將其轉換為一些偽。 62 00:03:19,870 --> 00:03:24,500 對於金字塔的每一行,我們希望 打印的左金字塔然後 63 00:03:24,500 --> 00:03:26,580 的差距,再右邊的金字塔。 64 00:03:26,580 --> 00:03:30,260 左金字塔,我們打印 的空間所需量, 65 00:03:30,260 --> 00:03:31,740 其次是哈希值。 66 00:03:31,740 --> 00:03:35,030 然後,我們打印差距,這 是每一次只有兩個空格。 67 00:03:35,030 --> 00:03:38,080 而在右邊的金字塔,我們打印 必要數量的散列。 68 00:03:38,080 --> 00:03:41,410 >> 對於第二行,我們進行了 完全相同的過程。 69 00:03:41,410 --> 00:03:44,510 我們打印的空間左 金字塔,所需量 70 00:03:44,510 --> 00:03:49,930 散列,間隙,兩個空間,和 那麼散列為正確的金字塔。 71 00:03:49,930 --> 00:03:52,490 >> 讓我們來解決模式 用於左金字塔。 72 00:03:52,490 --> 00:03:55,660 如果我有,為目的 本實施例的,高度 73 00:03:55,660 --> 00:03:58,790 八所要求的 用戶,那麼我的第一排 74 00:03:58,790 --> 00:04:01,020 將有一個哈希和7個空格。 75 00:04:01,020 --> 00:04:03,860 我的第二排將有 兩個哈希,六個空格。 76 00:04:03,860 --> 00:04:06,749 第三排,三哈希,五個空格。 77 00:04:06,749 --> 00:04:09,040 你也許可以做到這一點 對於自己的八個高度 78 00:04:09,040 --> 00:04:13,470 並確定為每一行多少 哈希多少空間需要。 79 00:04:13,470 --> 00:04:16,209 但是,我們想要做的是什麼 我們希望它抽象。 80 00:04:16,209 --> 00:04:22,660 所以我問你任何的第n行,多少 哈希和我們有多少空間需要? 81 00:04:22,660 --> 00:04:25,410 >> 現在,當你確定 模式來多少哈希 82 00:04:25,410 --> 00:04:29,920 多少空間你需要 任何第n行對於一個給定的高度, 83 00:04:29,920 --> 00:04:32,910 切記要小心 如何你索引。 84 00:04:32,910 --> 00:04:37,160 我的意思是,在日常生活 生活中我們最開始由一個計數。 85 00:04:37,160 --> 00:04:39,680 所以,第一行是一個數字。 86 00:04:39,680 --> 00:04:43,620 和第二行是行 第二,等等,等等。 87 00:04:43,620 --> 00:04:47,620 >> 但是,在計算機科學和 CS50,我們是零索引。 88 00:04:47,620 --> 00:04:50,750 所以我們實際上從零開始計數。 89 00:04:50,750 --> 00:04:54,020 因此第一行會 是行數為零。 90 00:04:54,020 --> 00:04:56,640 和第二行 會排第一。 91 00:04:56,640 --> 00:05:02,510 所以,如果我有八的高度 我的金字塔,那麼n的最後一個值 92 00:05:02,510 --> 00:05:05,850 實際上是七不八強。 93 00:05:05,850 --> 00:05:07,010 >> 所以,要注意此點。 94 00:05:07,010 --> 00:05:10,750 而要知道,當你確定 你的模式是否你的零索引 95 00:05:10,750 --> 00:05:12,360 或一索引 96 00:05:12,360 --> 00:05:13,070 >> 好。 97 00:05:13,070 --> 00:05:15,380 所以,現在,我們有 對於左金字塔圖案, 98 00:05:15,380 --> 00:05:18,650 我們需要確定 圖案的間隙。 99 00:05:18,650 --> 00:05:20,480 幸運的是,這是很容易的。 100 00:05:20,480 --> 00:05:22,690 這只是總是兩個空格。 101 00:05:22,690 --> 00:05:25,240 >> 所以,現在我們進行正確的模式。 102 00:05:25,240 --> 00:05:27,220 第一排將有一個哈希值。 103 00:05:27,220 --> 00:05:28,640 第二行,二。 104 00:05:28,640 --> 00:05:29,530 第三排,三。 105 00:05:29,530 --> 00:05:30,790 等等等等。 106 00:05:30,790 --> 00:05:35,540 如此反复,確定任何抽象 n和任何高度多少哈希 107 00:05:35,540 --> 00:05:38,810 又有多少空間 每一行應該有。 108 00:05:38,810 --> 00:05:39,700 >> 好。 109 00:05:39,700 --> 00:05:45,050 因此,我們知道,對於每一行,我們 需要進行一些處理。 110 00:05:45,050 --> 00:05:46,600 我們怎麼辦呢? 111 00:05:46,600 --> 00:05:50,440 好了,我們用的循環結構, 由一個初始化, 112 00:05:50,440 --> 00:05:52,310 一個條件,並進行更新。 113 00:05:52,310 --> 00:05:54,830 For循環可使用 重複的過程。 114 00:05:54,830 --> 00:05:59,610 >> 所以說,我希望它打招呼, 世界上50倍,那麼我的for循環 115 00:05:59,610 --> 00:06:03,510 會是這個樣子,哪裡 我初始化我變到零。 116 00:06:03,510 --> 00:06:06,200 條件是i小於50。 117 00:06:06,200 --> 00:06:09,670 然後將更新的是,它 通過每次遞增1。 118 00:06:09,670 --> 00:06:14,700 那麼,這會做將是 在連續打印你好,世界的50倍。 119 00:06:14,700 --> 00:06:18,080 >> 現在,說我想要迭代 在金字塔的高度。 120 00:06:18,080 --> 00:06:21,560 然後,而不是硬編碼 在條件一定的價值, 121 00:06:21,560 --> 00:06:23,280 我只是用可變高度。 122 00:06:23,280 --> 00:06:27,180 那麼,這將做的是迭代 以上的高度的每一行。 123 00:06:27,180 --> 00:06:30,280 我可以在裡面做一些事情 該循環的機構。 124 00:06:30,280 --> 00:06:32,710 >> 什麼是我們想要做的 在循環體內? 125 00:06:32,710 --> 00:06:36,550 嗯,正如我們之前所說,我們希望 打印空間和散列 126 00:06:36,550 --> 00:06:40,730 左金字塔,然後打印 兩個空格,然後打印哈希值。 127 00:06:40,730 --> 00:06:42,500 因此,我們已經想通了這一點。 128 00:06:42,500 --> 00:06:45,670 因此,我們可以開始填寫 在我們的節目多很多。 129 00:06:45,670 --> 00:06:49,850 >> 在這裡,我有一個外部的循環 迭代在金字塔的每一行。 130 00:06:49,850 --> 00:06:53,340 而且身體裡面我要去 重複打印的空間, 131 00:06:53,340 --> 00:06:56,860 反复散列,然後該間隙, 然後散列合適的金字塔, 132 00:06:56,860 --> 00:07:00,440 然後,最後,一個新的 行開始的下一行。 133 00:07:00,440 --> 00:07:02,860 >> 就這樣,我們已經提示 用戶的輸入。 134 00:07:02,860 --> 00:07:04,510 我們確信,它是有效的。 135 00:07:04,510 --> 00:07:06,280 然後,我們得出的金字塔。 136 00:07:06,280 --> 00:07:09,540 所以馬里奧可以成功 爬上金字塔。 137 00:07:09,540 --> 00:07:10,970 >> 我的名字是Zamyla。 138 00:07:10,970 --> 00:07:13,840 這是CS50。 139 00:07:13,840 --> 00:07:15,419