>> [Музыка гуляе]
>> 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 не з'яўляецца строга абавязковым.
Але гэта азначае, што асноўнай робіцца.
Мяне клічуць Боб, і гэта быў Марыё.
>> [Музыка гуляе]