Zamyla CHAN: Тоа е-ме, Zamyla.
Денес, ние ќе треба да се спроведе Марио, каде што се повлече Марио
целосна пирамида за него да скокаат над.
Ајде да се прекине под-задачи за овој проблем.
>> Прво, ние сакаме да го извести корисникот за висината на пирамидата.
И тогаш ние сакаме да се осигураме дека влезот е валидна.
И тогаш ние ќе треба да сакате да се подготви на пирамидата.
>> Па ајде да разговараме за поттикнувајќи и оценување на корисник влез.
Тоа може да изгледа нешто како ова, не-додека јамка која
поттикнува на корисникот за цел број, а потоа само се повторува
ако тој број не е валиден.
Значи она што треба да биде оваа состојба?
>> За ова, ајде да се вратиме на спецификација.
Па, спец ни кажува дека некој валиден висина ќе биде помеѓу 0 и 23,
инклузивна.
Па тогаш тоа значи дека не валиден висина ќе биде помал од 0
или повеќе од 23.
>> Па сега дека имаме оваа информација, ајде да дизајн нашата состојба.
Но, треба да се биде внимателен, бидејќи сега имаме
две Booleans дека ние сакаме да се оцени.
>> Тука сум ви се предвидени со маса вистината.
Ова ни овозможува да се земе два Booleans, Булова еден и два.
И ние може да се оцени или bool1 и bool2 или bool1 или bool2.
>> Па што е разликата помеѓу и и или?
Па, bool1 и bool2 ќе оценка на true ако и само
ако двата Booleans се вистинити, со оглед на тоа или операција
ќе биде вистина ако ниту една од на Booleans или и двете се вистинити.
Значи со ова на ум, види дали може да дознаам
што е соодветно услов за вашата не-додека јамка за невалиден n
е и ќе биде.
>> Со тоа, ние сме на поттикна и потврдени на корисникот за висината на пирамидата
што тие сакаат.
Па сега, тоа е до нас да се подготви на пирамида.
Целосната пирамида за ова Проблемот ќе изгледа малку
како овој, каде што имаме лево пирамида, некој пропуст, а потоа и во право пирамида.
Значи, да се скрши оваа надолу малку.
>> Ако одам во мојот уредувач на текст, тука сум САД подготвени од левата подреден пирамида.
Но, тоа нема да го стори.
Она што сакаме да направите е да сакаме да создаде подреден десно пирамида во прв план.
Значи да го направите ова, да им помогнам само мојот хаш заедно на страна,
Јас сум само се случува да се стави некои ликови меѓу нив, само овие точки.
Тогаш јас ќе одам да се стави два на следната линија, и еден на таа линија.
И така тука имам подреден десно пирамида.
>> После тоа, јас ќе одам да се се врати на врвот ред
и го стави во празнина, што е, според спецификации, две места.
Тогаш јас ќе одам да се пополни во другата страна на пирамида.
Одам да се оди на вториот ред, пишува две празни места за јазот, а потоа две
хашови.
Вратете се на третиот ред, две места за јазот и три хаш.
И на крајот, две места за јазот и четири хаш.
Значи тоа е она целосна пирамида ќе изгледа.
>> Се разбира, ние не сакаме овие точки на патот.
Па ние ќе ги замени овие точки со ставање на некои места во.
Еден, два, три на прва линија.
Еден, два на вториот кат.
И еден на третата линија.
Значи ова е она што ние ќе направиме ако сакаше само да се направи целосна пирамида,
каже, во нашиот текст едитор.
>> Значи, да ја искористам оваа, разбирање на модели,
и да го претворите во текот на некои pseudocode.
За секој ред на пирамидата, ние сакаме за печатење на левата пирамида, а потоа
јазот, а потоа и во право пирамида.
На левата пирамида, ние печати потребната количина на простор,
проследено со хашови.
Тогаш ние се печати на празнина, што е само две места во секое време.
И во право пирамида, ние печати потребниот број на хаш.
>> За вториот ред, ние спроведе исто точно процес.
Ние печати празни места за левицата пирамида, потребното количество
на хаш, јазот, две места, и тогаш хаш за правото пирамида.
>> Ајде да се справи со модел за левата пирамида.
Ако имав, за целите на на овој пример, висина
од осум барање на корисникот, а потоа мојот прв ред
ќе имаат една хашиш и седум места.
Мојот втор ред ќе има две хаш, шест места.
Третиот ред, три хаш, пет места.
Што веројатно може да се направи ова се за висина од осум
и да се одреди за секој ред колку хаш и колку простор ви треба.
Но, она што сакате да го направите е да се ние сакаме да одвоиме.
Па јас да ве прашам за било n-ти ред, колку хаш и колку простори ни треба?
>> Сега, како да се одреди модел за колку хаш
и колку простор ви треба за било n-ти ред за одредена висина,
не заборавајте да бидете внимателни за тоа како сте индексирање.
Што мислам со ова е тоа што во секојдневниот живот повеќето од нас почнат да бројат по еден.
Така, првиот ред ќе биде број еден.
И вториот ред ќе биде ред број два, па натаму и така натаму.
>> Но, во компјутерски науки и CS50, ние сме нула-индексирани.
Значи ние всушност почне пребројување на нула.
Така, првиот ред ќе биде ред бројот нула.
И вториот ред ќе биде број еден ред.
Значи, ако имав висина од осум за мојот пирамида, тогаш последната вредност на n
всушност, ќе биде седум, а не осум.
>> Значи да се биде внимателен во врска со тоа.
И да бидат свесни кога сте утврдување шемата дали вашиот нула индексирани
или еден-индексирани
>> ДОБРО.
Па сега дека имаме модел за левата пирамида,
ние треба да се утврди моделот за јазот.
За среќа, ова е навистина лесно.
Тоа е само секогаш две места.
>> Така, сега продолжи кон вистинскиот модел.
Во првиот ред ќе има еден хаш.
Вториот ред, два.
Третиот ред, три.
Така натаму и така натаму.
Значи, повторно, се утврди за било апстрактни n и било која висина колку хаш
и колку места секој ред треба да има.
>> ДОБРО.
Па знаеме дека за секој ред ние треба да се спроведе некоја процедура.
Како го правиме тоа?
Па, ние ги користиме за телефонска линија конструкција, составен на иницијализација,
услов, и ажурирање.
За може да се користи јамки да се повтори процеси.
>> Така велат сакам да се каже здраво, светот 50 пати, а потоа ми за телефонска линија
ќе изгледа нешто како ова, во Јас се иницијализира променливи ми на нула.
Состојбата е дека јас е помал од 50.
И тогаш ажурирање е тоа што чекори на зголемување од по еден во секое време.
Така што ова ќе се направи ќе биде да печати Здраво, свет 50 пати по ред.
>> Сега, велат сакав да iterate над висината на пирамидата.
Потоа, наместо на хард кодирање да се процени состојбата,
Јас само користење на променлива висина.
Така што ова ќе направите е да iterate над висината секој ред.
И јас може да се направи нешто во на телото на таа јамка.
>> Што сакаме да се направи во внатрешноста на телото на јамка?
Па, како што е наведено претходно, ние сакаме за печатење на простори и хаш
за левата пирамида а потоа печати две места, а потоа печати на хаш.
Па ние веќе го сфатиле тоа.
Значи можеме да почнеме да се пополни во нашата програма многу повеќе.
>> Еве ги имаат надворешен за телефонска линија која iterates над секој ред во пирамидата.
И во внатрешноста на телото Одам да се печати простори постојано,
хашови постојано, а потоа на јазот, а потоа хашови за правото пирамида,
а потоа, конечно, нов линија за да започне следниот ред.
>> Со тоа, ние сме поттикнати на корисникот за влез.
Ние сме направени сигурни дека тоа е валидна.
И тогаш ние сме подготвени на пирамидата.
Па Марио може успешно се искачи на пирамида.
>> Моето име е Zamyla.
И ова е CS50.