ZAMYLA ЧАН: Това е един-ми, Zamyla.
Днес, ние ще се приложат Марио, където ние се направи Марио
пълен пирамида за него да скочи над.
Нека съборят подзадачи за този проблем.
>> На първо място, ние искаме да се напомни на потребителя за височината на пирамидата.
И след това, което искаме да се уверите, че този вход е валиден.
И тогава ние ще искате да се направи на пирамидата.
>> Така че нека да говорим за подтиква и валидиране на приноса на потребителите.
Тя може да изглежда като това, да не се прави, докато контур, че
подсказва на потребителя за целочислени и след това само се повтаря
ако това число е невалиден.
И така, какво трябва да бъде това състояние?
>> За това, нека се върнем в спецификацията.
Е, спец ни казва, че който и да е валиден височина ще бъде между 0 и 23,
включително.
Така че след това, което означава, че всеки невалиден височина ще бъде по-малко от 0
или повече от 23.
>> Така че сега ние имаме тази информация, нека да се изработи нашето състояние.
Но ние трябва да бъдем внимателни, защото сега имаме
две булеви, които искаме да се оцени.
>> Тук съм ви предвидено с маса истина.
Това ни позволява да се вземат две Booleans, Булева една и две.
И ние можем да се оцени или bool1 и bool2 или bool1 или bool2.
>> Така че каква е разликата между и и или?
Е, bool1 и bool2 ще оценка, за да е вярно, ако и само
ако двете булеви са верни, като има предвид, или операция
ще бъде вярно, ако нито една от на булеви или и двете са верни.
Така че с оглед на това, вижте дали можете да разбера
това, което е подходящо състояние за не се прави линия, докато за невалиден п
ще бъде.
>> С това, ние сме подкана и валидирани потребителят е височината на пирамидата
че те искат.
Така че сега, това е до нас да изготви пирамидата.
Пълният пирамида за това проблем ще изглежда малко по-
като тази, в която ние имаме лявата пирамида, някои празнина, а след това и дясната пирамида.
Така че нека да се разбие малко.
>> Ако отида да ми текстов редактор, тук съм ни привлече подравнен вляво пирамида.
Но това няма да стане.
Това, което искаме да направим, е да искаме да създава право подравнен пирамида първия.
Така че, за да направите това, просто натиснете моите хешове по настрани,
Аз съм просто ще постави някои символи между тях, само на тези точки.
Тогава аз ще постави две на следващия ред, и един по тази линия.
И така, тук имам десния подравнени пирамида.
>> След това, аз ще се върнем към най-горния ред
и се слага в пропастта, която е, за спец, две пространства.
След това аз ще се попълни в другата страна на пирамидата.
Отивам да отидете на втория ред, напиши две пространства за разликата и след това два
хешове.
Обратно към третия ред, две пространства за разликата и три хешове.
И в края, две пространства за разликата и четири хешове.
Така че това е, което е пълен пирамида ще изглежда така.
>> Разбира се, ние не искаме тези точки по пътя.
Така че ние ще замени тези точки от пускането някои пространства в.
Един, два, три на първа линия.
Едно, две на втория.
И един на трета линия.
Така че това е, което ние ще направим, ако искаме Исках просто да направи пълен пирамида,
се каже, в нашия текстов редактор.
>> Така че нека да се възползвам от тази, разбиране на моделите,
и да го превърнете в продължение на известно Псевдокод.
За всеки ред на пирамидата, ние искаме за отпечатване на ляво пирамидата и след това
разликата и след това дясната пирамида.
За лявата пирамида, се печата необходимото количество пространства,
последвано от хешовете.
Тогава ние отпечатване на пропастта, която е само на две места за всеки път.
И в дясната пирамида, отпечатваме необходимия брой хешове.
>> За втория ред, ние проведохме точно същата процес.
Ние печат пространствата за ляво пирамида, необходимото количество
на хешове, разликата, две помещения, и а след това на хешове за правилната пирамида.
>> Нека да се справи с модела за левия пирамидата.
Ако имах, за целите на на този пример, на височина
на осем искания от потребител, а след това ми първия ред
ще има един хашиш и седем пространства.
Вторият ми ред ще има две хешове, шест пространства.
Трети ред, три хешове, пет помещения.
Вероятно можете да направите това себе си, за височина на осем
и определи за всеки ред, колко хешове и колко пространства, което трябва.
Но това, което искаме да направим, е да ние искаме да абстрактна него.
Така че аз ви питам за всеки тото подред, колко хешове и колко пространства се нуждаем?
>> Сега, като ви се определи модел за колко хешове
и колко пространства необходимо за всеки тото подред за дадена височина,
не забравяйте да бъдете внимателни за това как можете да започнете индексиране.
Какво искам да кажа от това е, че в ежедневието живот, повечето от нас започне да брои от едно.
Така че на първия ред ще бъде номер едно.
И на втория ред ще бъде ред номер две, така нататък и така нататък.
>> Но по компютърни науки и CS50, ние сме нула индексирани.
Така че ние действително започне преброяване на нула.
Така че на първия ред ще да е ред номер нула.
Вторият ред Би било ред номер едно.
Така че, ако имах височина от осем за ми пирамида, след последната стойност на N
всъщност ще бъде седем и не осем.
>> Така че бъдете внимателни за това.
И да знаете, когато сте определяне вашия модел дали си нула индексирани
или един индексирани
>> ДОБРЕ.
Така че сега ние имаме модел за левия пирамида,
ние трябва да се определи модела за разликата.
За щастие, това е наистина лесно.
Това е просто винаги две пространства.
>> Така че сега се пристъпва към десния модел.
Първият ред ще има един хашиш.
Вторият ред, двете.
Трети ред, три.
Така нататък и така нататък.
Така че отново, определя за всяко абстрактно п и всяка височина колко хешове
и колко много пространства всеки ред трябва да има.
>> ДОБРЕ.
Така че ние знаем, че за всеки ред ние Трябва да проведат някакъв процес.
Как да го направим?
Е, ние използваме за контур конструкт, състои от инициализация,
състояние, и актуализация.
За да се използват вериги да се повтаря процеси.
>> Така че да кажа, че искам да кажа здрасти, свят 50 пъти, след това ми за цикъл
ще изглежда нещо като това, където Аз се инициализира променлива ми до нула.
Условието е, че аз е по-малко от 50.
И след актуализацията е, че тя стъпки по един всеки път.
Така че какво ще направя е да се отпечатате Hello, World 50 пъти подред.
>> Сега, казват, аз исках да превъртите над височината на пирамидата.
Тогава вместо твърд кодиране някаква ценност в състоянието,
Просто използвайте променлива височина.
Така че това, което ще направим, е обхождане над височината на всеки ред.
И аз мога да направя нещо вътре на тялото на тази линия.
>> Какво искаме да направим вътре в тялото на цикъла?
Е, както посочихме преди, ние искаме за отпечатване на пространствата и хешовете
за левия пирамидата и след това печат две пространства и след това да отпечатате хешовете.
Така че ние вече сте разбрали, че навън.
Така че можем да започнем да запълни в нашата програма много повече.
>> Тук имам един външен за линия, която итерации над всеки ред в пирамидата.
И вътре, че тялото Отивам да отпечатате пространства многократно,
хешове многократно, и след това разликата, и след това хешове за правилната пирамида,
и след това, най-накрая, нов линия, за да започне на следващия ред.
>> С това, ние сме подканени потребителя за въвеждане.
Ние сме се уверили, че това е валидно.
И тогава ние сме съставен пирамидата.
Така че Марио може успешно изкачи на пирамидата.
>> Моето име е Zamyla.
И това е CS50.