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