ZAMYLA чан: Гэта-я, Zamyla. Сёння мы збіраемся рэалізаваць Марыё, дзе мы чэрпаем Марыё поўная піраміда для яго пераскочыць. Давайце разбярэм ўніз подзадачи для гэтай задачы. Па-першае, мы хочам падказаць карыстачу для вышыні піраміды. І тады мы хочам, каб пераканацца, што гэты ўваход актыўны. І тады мы будзем хочам намаляваць піраміду. Такім чынам, давайце пагаворым аб падахвочваючы і праверкі ўводу дадзеных карыстальнікам. Гэта можа выглядаць прыкладна так гэта, пятля рабіць-то час запытвае ў карыстальніка для цэлы лік, а затым толькі паўторы калі гэта лік з'яўляецца несапраўдным. Дык што ж гэта ўмова будзе? Для гэтага, давайце вернемся спецыфікацыі. Ну, спецыфікацыя кажа нам, што любое сапраўднае вышыня будзе знаходзіцца ў дыяпазоне ад 0 да 23, ўключна. Такім чынам, што азначае, што любы інвалід вышыня будзе менш 0 або больш за 23. Так што цяпер у нас ёсць гэтая інфармацыя, давайце распрацоўваць наш стан. Але мы павінны быць асцярожнымі, таму што цяпер у нас ёсць два Booleans, якія мы хочам ацаніць. Тут я падаў вам з табліцай праўдзівасці. Гэта дазваляе нам зрабіць два Булеў, Boolean адзін і два. І мы можам ацаніць альбо bool1 і bool2 або bool1 або bool2. Так якая розьніца і паміж імі і ці? Ну, bool1 і bool2 будзе ацаніць праўдзіва, калі і толькі калі абодва Булеў верныя, у той час як аперацыі або будзе справядліва, калі нехта з то Booleans або абодва яны праўдзівыя. Так з гэтым на ўвазе, убачыць, калі вы можаце высветліць, што адпаведнае ўмова ваш цыкл рабіць-а для інваліднай п будзе. З гэтымі словамі, мы будзе прапанавана і пацверджана карыстальнік для вышыні піраміды што яны хочуць. Так што цяпер, гэта да нас намаляваць піраміду. Поўная піраміда для гэтага Праблема будзе выглядаць трохі як гэта, дзе мы маем левую піраміду, некаторы зазор, а затым правай піраміды. Так што давайце паламаем гэта ўніз трохі. Калі я іду ў тэкставым рэдактары, тут я маю звяртаецца нам па левым краі піраміды. Але гэта не будзе рабіць. Тое, што мы хочам зрабіць, гэта мы хочам стварыць выраўнаванне па правым боку піраміды ў першую чаргу. Такім чынам, каб зрабіць гэта, каб проста націснуць мае хэшы разам у бок, Я проста хачу, каб паставіць некаторыя сімвалы паміж імі, толькі гэтымі кропкамі. Тады я збіраюся паставіць два на наступная радок, і адзін на гэтай лініі. І вось тут у мяне ёсць выраўнаванне па правым боку піраміды. Пасля гэтага, я збіраюся вярнуцца да верхняй радку і змясціць у зазоры, які гэта, паводле спецыфікацыі, два прасторы. Тады я буду гуляць у іншы бок піраміды. Я збіраюся пайсці на другі шэраг, напісаць два прасторы для зазору, а затым два хэшы. Назад да трэцяга шэрагу, два прасторы для шчыліны і трох хэшаў. І ў канцы, два прасторы для шчыліны і чатырох хэшаў. Дык вось што поўны піраміда будзе выглядаць наступным чынам. Вядома, мы не хочам гэтыя кропкі ў дарозе. Такім чынам, мы збіраемся замяніць гэтыя кропкі, паставіўшы некаторыя прабелы ст. Адзін, два, тры на першай лініі. Адзін, два на другім. І адзін на трэцім радку. Дык гэта тое, што мы будзем рабіць, калі мы хацеў проста зрабіць поўную піраміду, скажам, у нашым тэкставым рэдактары. Так давайце возьмем гэта, разумення мадэляў, і пераўтварыць яго да нейкай псевдокоде. Для кожнага радка піраміды, мы хочам надрукаваць левую піраміду, а затым разрыў, а затым правая піраміда. Для левай піраміды, мы выводзім неабходную колькасць прабелаў, з наступным хэшаў. Затым мы выводзім прабел, які ўсяго два месцы кожны раз. А ў правай піраміды, мы выводзім неабходную колькасць хэшаў. Для другога шэрагу, мы правялі сапраўды такі ж працэс. Мы друкуем прасторы для левага піраміда, неабходная сума хэшаў, шчыліны, два прасторы, і то хэшы для правай піраміды. Давайце вырашаць шаблон для левай піраміды. Калі б я быў, у мэтах у гэтым прыкладзе, вышыня васьмі з просьбай карыстальнік, то мая першая радок будзе мець адзін хэш і сем прабелаў. Мая другая радок будзе мець два хэшы, шэсць прастор. Трэці шэраг, тры хэшы, пяць прабелаў. Вы, напэўна, можаце зрабіць гэта самі па вышыні васьмі і вызначаюць для кожнага радка, колькі хэшы і колькі прасторы вам трэба. Але тое, што мы хочам зрабіць, гэта мы хочам, каб абстрагавацца. Таму я прашу вас для любога п-м радку, то колькі хэшы і колькі прасторы нам трэба? Зараз, як вы вызначаеце, шаблон для таго, як шмат хэшаў і колькі прасторы вам трэба для любы п-га радка для зададзенай вышыні, памятаеце, быць асцярожнымі як вы індэксацыі. Тое, што я маю на ўвазе, што ў кожны дзень жыццё большасць з нас пачынаюць лічыць адзін. Такім чынам, першы радок будзе нумар адзін. І другая радок будзе радок нумар два, гэтак далей і гэтак далей. Але ў кампутарнай навуцы і CS50, мы нулявы індэксуецца. Такім чынам, мы на самай справе пачаць адлік з нуля. Такім чынам, першы радок будзе быць радок з нумарам нуль. І другі шэраг будзе радок нумар адзін. Так што, калі б я меў вышыню восем для мая піраміда, то апошняе значэнне п фактычна будзе сем, а не восем. Так што будзьце асцярожныя пра гэта. І быць у курсе, калі вы вызначэння ваш шаблон Ці ваш нулявы індэксуецца або адзін індэксаваная ДОБРА. Так што цяпер у нас ёсць шаблон для левай піраміды, нам неабходна вызначыць шаблон для зазору. На шчасце, гэта вельмі лёгка. Гэта проста заўсёды два прасторы. Так што цяпер мы пераходзім да правільнага шаблоне. Першы радок будзе мець адзін хэш. Другі шэраг, два. Трэці шэраг, тры. Гэтак далей і гэтак далей. Так зноў жа, вызначыць для любой абстрактнай п і любой вышыні, колькі хэшы і колькі прабелаў кожны радок павінна мець. ДОБРА. Такім чынам, мы ведаем, што для кожнага радка мы неабходна правесці нейкі працэс. Як мы гэта робім? Што ж, мы выкарыстоўваем для канструкцыі завесы, складаецца з ініцыялізацыі, стан і абнаўленне. Для завесы могуць быць выкарыстаны паўтарыць працэсы. Так што сказаць, што я хачу сказаць прывітанне, свет у 50 разоў, а затым мой цыкл будзе выглядаць прыкладна так, дзе Я ініцыялізаваць маёй зменнай да нуля. Умовай з'яўляецца тое, што я менш за 50. А потым абнаўленне што гэта павялічваецца на адзінку кожны раз. Дык што ж гэта зрабіць было б друк Прывітанне, свет 50 раз запар. Зараз выкажам здагадку, што я хацеў ітэрацыю па вышыні піраміды. Тады замест жорсткага кадавання некаторы значэнне ў стане, Я проста выкарыстоўваць зменную вышыню. Дык што ж гэта будзе рабіць гэта ітэрацыя па вышыні кожнага радка. І я магу зрабіць што-то ўнутры цела гэтага цыклу. Што мы хочам зрабіць ўнутры цела цыкла? Ну, як мы ўжо адзначалі раней, мы хочам друкаваць прабелы і хэшы для левай піраміды, а затым раздрукаваць два прабелу, а затым раздрукаваць хэшаў. Такім чынам, мы ўжо зразумелі, што з. Такім чынам, мы можам пачаць запаўняць у нашай праграме нашмат больш. Тут у мяне ёсць знешняе для цыклу, перабірае кожнага радка ў пірамідзе. І ўнутры гэтага цела я збіраюся друкаваць прабелы неаднаразова, Хэшаў паўторна, а затым разрыў, а затым хэшы для правільнай піраміды, а затым, нарэшце, новы лініі, каб пачаць наступны шэраг. З гэтымі словамі, мы заахвоцілі карыстальнік для ўваходу. Мы пераканаліся, што яна дзейнічае. І тады мы намалявалі піраміду. Так што Марыё можа паспяхова падняцца на піраміду. Мяне клічуць Zamyla. І гэта CS50.