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