陳ZAMYLA:這是一個,我,Zamyla。 今天,我們要實現 馬里奧,我們得出馬里奧 他一個完整的金字塔跳過。 讓我們打破 子任務針對此問題。 首先,我們要提示用戶 對於金字塔的高度。 然後,我們要確保 即該輸入是有效的。 然後,我們將 要繪製金字塔。 所以,讓我們來談談提示 和驗證用戶輸入。 它可能看起來像 這一點,do-whil​​e循環的 提示用戶輸入一個 整數,然後只重複 如果該整數是無效的。 所以,應該這個條件是什麼? 對於這一點,讓我們回到 到本說明書中。 那麼,規範告訴我們,任何有效 高度將是0和23之間, 包括的。 於是這意味著任何無效 高度將是小於0 或超過23。 所以,現在,我們有這個信息, 讓我們來設計我們的條件。 但是,我們必須小心, 因為現在我們有 我們要評估2布爾值。 在這裡,我向您提供 用真值表。 這使我們可以採取兩種 布爾值,布爾一和二。 而且我們可以評估要么BOOL1 和BOOL2或BOOL1或BOOL2。 所以,有什麼區別 之間以及和或? 那麼,BOOL1和BOOL2會 計算結果為真當且僅 如果兩個布爾是真實的, 而或操作 為真,如果任意一方 在布爾或無一不是如此。 因此,考慮到這一點, 看看你能不能找出 什麼適當的條件 你對一個無效ñdo-whil​​e循環 將是。 就這樣,我們已經提示和確認 用戶對於金字塔的高度 他們想要的。 所以,現在,它是由我們 繪製金字塔。 完整的金字塔本 問題看起來有點 這樣,我們有一個左金字塔, 一些間隙,然後右金字塔。 因此,讓我們打破這一點。 如果我去我的文本編輯器,在這裡,我 繪製我們左對齊金字塔。 但是,這是不行的。 我們想要做的是我們要 首先創建一個右對齊的金字塔。 因此,要做到這一點,只是推 我沿著一邊哈希, 我只是把一些字符 在兩者之間,只是這些點。 然後,我打算把兩個在 下一行,和一個在該行。 所以,在這裡我有一個 右對齊金字塔。 在那之後,我要去 回到最上面一行 並把在間隙,這 是,每規範,兩個空格。 然後我會填寫 金字塔的另一側。 我會去第二排,寫 兩個空格的差距,那麼雙 哈希值。 回到第三行,兩個空間 對於缺口和三個哈希值。 並在年底,兩個空間 對於缺口和四個哈希值。 所以,這就是一個完整的 金字塔的樣子。 當然,我們不希望 這些點中的方式。 所以我們要替換這些 通過把一些空格點。 一個,兩個,三個在第一行。 一,二上的第二個。 和一個在第三線路。 因此,這是我們會怎樣做,如果我們 希望只是做一個完整的金字塔, 也就是說,在我們的文本編輯器。 因此,讓我們藉此, 理解模式, 並在將其轉換為一些偽。 對於金字塔的每一行,我們希望 打印的左金字塔然後 的差距,再右邊的金字塔。 左金字塔,我們打印 的空間所需量, 其次是哈希值。 然後,我們打印差距,這 是每一次只有兩個空格。 而在右邊的金字塔,我們打印 必要數量的散列。 對於第二行,我們進行了 完全相同的過程。 我們打印的空間左 金字塔,所需量 散列,間隙,兩個空間,和 那麼散列為正確的金字塔。 讓我們來解決模式 用於左金字塔。 如果我有,為目的 本實施例的,高度 八所要求的 用戶,那麼我的第一排 將有一個哈希和7個空格。 我的第二排將有 兩個哈希,六個空格。 第三排,三哈希,五個空格。 你也許可以做到這一點 對於自己的八個高度 並確定為每一行多少 哈希多少空間需要。 但是,我們想要做的是什麼 我們希望它抽象。 所以我問你任何的第n行,多少 哈希和我們有多少空間需要? 現在,當你確定 模式來多少哈希 多少空間你需要 任何第n行對於一個給定的高度, 切記要小心 如何你索引。 我的意思是,在日常生活 生活中我們最開始由一個計數。 所以,第一行是一個數字。 和第二行是行 第二,等等,等等。 但是,在計算機科學和 CS50,我們是零索引。 所以我們實際上從零開始計數。 因此第一行會 是行數為零。 和第二行 會排第一。 所以,如果我有八的高度 我的金字塔,那麼n的最後一個值 實際上是七不八強。 所以,要注意此點。 而要知道,當你確定 你的模式是否你的零索引 或一索引 好。 所以,現在,我們有 對於左金字塔圖案, 我們需要確定 圖案的間隙。 幸運的是,這是很容易的。 這只是總是兩個空格。 所以,現在我們進行正確的模式。 第一排將有一個哈希值。 第二行,二。 第三排,三。 等等等等。 如此反复,確定任何抽象 n和任何高度多少哈希 又有多少空間 每一行應該有。 好。 因此,我們知道,對於每一行,我們 需要進行一些處理。 我們怎麼辦呢? 好了,我們用的循環結構, 由一個初始化, 一個條件,並進行更新。 For循環可使用 重複的過程。 所以說,我希望它打招呼, 世界上50倍,那麼我的for循環 會是這個樣子,哪裡 我初始化我變到零。 條件是i小於50。 然後將更新的是,它 通過每次遞增1。 那麼,這會做將是 在連續打印你好,世界的50倍。 現在,說我想要迭代 在金字塔的高度。 然後,而不是硬編碼 在條件一定的價值, 我只是用可變高度。 那麼,這將做的是迭代 以上的高度的每一行。 我可以在裡面做一些事情 該循環的機構。 什麼是我們想要做的 在循環體內? 嗯,正如我們之前所說,我們希望 打印空間和散列 左金字塔,然後打印 兩個空格,然後打印哈希值。 因此,我們已經想通了這一點。 因此,我們可以開始填寫 在我們的節目多很多。 在這裡,我有一個外部的循環 迭代在金字塔的每一行。 而且身體裡面我要去 重複打印的空間, 反复散列,然後該間隙, 然後散列合適的金字塔, 然後,最後,一個新的 行開始的下一行。 就這樣,我們已經提示 用戶的輸入。 我們確信,它是有效的。 然後,我們得出的金字塔。 所以馬里奧可以成功 爬上金字塔。 我的名字是Zamyla。 這是CS50。