[Музыка гуляе] ROB BOWDEN: Гэта я, Роб. Давайце разгледзім хаў для рэалізацыі Марыё. Таму першае, што мы павінны зрабіць, гэта прапануе карыстачу для ўваходу. Мы павінны спытаць іх, як менавіта высокі піраміда павінна быць. Дык вось, мы бачым, што мы робім Вышыня = GetInt. І памятайце, што функцыя GetInt рэалізуецца ў CS50 бібліятэка, так наверсе, мы павінны не забудзьцеся # ўключаюць cs50.h. Дык чаму мы павінны гэта загорнутыя у зрабі час цыкла? Ну, мы таксама павінны памятаць, што ўвод карыстальніка павінен быць сапраўдным. Што з'яўляецца недапушчальным ўваход? Ну PSET спецыфікацыі ў прыватнасці, гаворыцца што вышыня менш 0 або больш чым 23 з'яўляецца несапраўдным. Так тут, мы бачым, што мы вызначаем пастаянная называецца MAX_HEIGHT з значэнне 23. Гэта рабіць-пакуль пятля будзе працягваць час вышыня менш 0 або MAX_HEIGHT з'яўляецца менш, чым вышыня, г.зн. 23 менш, чым вышыня. Так што, калі вышыня складае 24 ці больш, мы збіраецца працягнуць цыкл. Памятаеце, што рабіць-то час завесы даволі карыснымі, калі мы хочам атрымаць карыстацкі ўвод, а затым праверыць яго, так як мы непазбежна павінны спытаць карыстальніка на хоць бы адзін раз для значэння яны хочуць. Таму, як толькі ў нас ёсць свой уклад, мы зараз можна пабудаваць піраміду. Адна з выкрутаў гэтай праблемы з'яўляецца дзейнасць што мы павінны пачаць у верхняй частцы піраміда. Вы не можаце Printf дно піраміда, а затым пабудаваць свой шлях. Такім чынам, давайце паглядзім на прыкладзе ад PSet спец. Мы бачым тут, што, калі мы ўваходзім у вышыню 8, на самае дно піраміда друкуе дзевяць хэшаў. На ўзровень вышэй ад адбіткаў адзін прабел і восем хэшы. На ўзровень вышэй ад гэта значыць два прасторы і не сямёра хэшы, ўсю дарогу, пакуль мы дабрацца да вяршыні піраміды, якая з'яўляецца восем узроўняў ўверх, які друкуе сем прасторы і два хэшаў. Так што памятаеце, што мы павінны зрабіць гэта верхні ўзровень у першую чаргу. Тут мы ітэрацыі ад верхняга ўзроўню, шэраг 8, працягваючы пакуль радок не дасягне 0. Дык колькі прабелаў ці патрэбна нам друкаваць у гэтым верхнім шэрагу? Мы надрукавалі сем прастор і два хэшаў. Такім чынам, колькасць прастор мы хочам, радок, што былі на мінус 1. Калі верхняя радок 8, 8 мінус 1 дае нам сем месцаў. Тады ў нас ёсць цыкл, які будзе друкаваць з кожнага прасторы па адным. Таму, калі прасторы з'яўляецца 7, гэтая пятля сем разоў, друк сем асобных прастор. Так што цяпер нам трэба раздрукаваць гэтыя хэшы ў канцы піраміды. Дык вось, нам трэба вылічыць колькасць хэшаў. Мы бачым, што мы робім вышыню мінус радок плюс 2. Так як жа мы атрымліваем, што? Варта памятаць, што вяршыня піраміды з'яўляецца радок 8, а вышыня 8. І мы па-ранейшаму друкуюцца два хэшаў. Так, па меншай меры, 8 мінус 8 плюс 2 дае нам правільны адказ. І затым разгледзець дно піраміды, шэраг 1. Рост мінус радок дасць нам 7, і то плюс 2 дае нам дзевяць хэшаў, а гэта менавіта лік з хэшаў, што мы друкавалі. Так гэта і ёсць формула мы хочам выкарыстоўваць для разліку колькасці хэшы ў кожнай радку. З дапамогай гэтага тэлефона, мы тады ёсць іншы цыкл, вельмі падобнае на цыкл, які мы выкарыстоўвалі для прастор, , Які выконвае ітэрацыю колькасць хэшаў раз Друк аднаго халаднік кожны раз. На верхнім шэрагу, што буду надрукаваць два хэшаў. На ніжнім шэрагу, што буду раздрукаваць дзевяць хэшаў. І адзін з адным шэраг будзе друкаваць кожны колькасць модуляў, паміж імі. А потым у самым канцы, мы павінны друкаваць нашу новую лінію, каб перайсці да наступнага веславаць у пірамідзе. Нарэшце, мы павінны друкаваць новую лінію у канцы радка для таго, каб перайсці да наступнага шэраг піраміды. І ў канцы нашай праграмы, у нас ёсць вяртанне 0. У адпаведнасці з PSet спецыфікацыі, вяртанне 0 не з'яўляецца строга абавязковым. Але гэта азначае, што асноўнай робіцца. Мяне клічуць Боб, і гэта быў Марыё. [Музыка гуляе]