[Музыка, играющая] АЛЛИСОН Бухгольц-AU: Привет всем. Добро пожаловать на ваш первый Официальный раздел CS50. Как вы можете, видеть это Раздел CS50-как, просто чтобы подтянуть нашу повестку дня на сегодня. Так, кто я, как я уверен, что Вы все интересно. Я твой TF. Я не просто случайный студент кто выдает себя за свой TF. И я собираюсь пройти через отчасти есть разделы будут течь, что мы ожидаем, ресурсы, так далее и тому подобное. Мы собираемся говорить о массивах, ASCII Функции, аргументы командной строки, и это не здесь, но Я также буду помогать вы вроде продумать Ваш следующий PSET на этой неделе. Какой я уверен, что вы все ценят. Так, первый question-- кто я, кроме вашей буйной TF здесь. Я Элисон Бухгольц-Au. Это мой второй год TFing CS50. Я также TF CS51 весной. Вы могли бы видеть снова есть если вы решили взять его. Я также СУП, так что любой Freshmen-- и если вы не новичок, это мой третий год как консультирование парень. Я очень хорошо разбираются в советую вам на жизнь и курсы в CS, а не в CS. Я информатика концентратор. Я старший в Adams House, лучший дом. И, прежде чем я перешел на CS мой Sophomore Весна, Я был на самом деле биомедицинских инженер. Я собирался пойти в медицинскую школу. Я собирался быть врач-травматолог. И что имеет полностью изменилось, так как я взял CS50. Я взял курс мой Sophomore осень. Это было мое первое знакомство с CS-либо. Я был одним из 78% из вас, кто был нулевой опыт поступают, и это полностью изменило мою жизнь. И сейчас я работаю на Microsoft, и ваша прекрасная TF. И CS50, вероятно, один из лучших событий что я имел здесь в Harvard-- и принимая класс и быть в состоянии помочь научить студентов, как вы. Так что я очень рад что вы все здесь. В случае, если вы пришли в поздно, есть конфеты, которые вы должны чувствовать себя свободно приходить захват, или отправить кто-то, чтобы схватить его за вас. Это нормально. Я не хочу, чтобы съесть что. Моя комната имеет достаточно шоколад, так вы все должны попробовать и закончить это. Я знаю, что есть 100 штук, но как, 4:00 в понедельник, Я думаю, что каждый может использовать сахар. Так что все из вас, кто официально в моем разделе должны были получить по электронной почте от меня с моим номером телефона, почта address-- стесняйтесь добавлять меня Gchat, не стесняйтесь добавлять меня в Facebook, а также для остальных из вас, Вы можете написать мне прямо здесь. Есть два H-х. Все всегда делает как два L'ы или два C о. Два H в последнем имени. В противном случае это будет отражаться и Я не собираюсь, чтобы получить вашу электронную почту. Так что не стесняйтесь, напишите мне, связаться со мной в любое время. Я, возможно, не вернуться к Вы в течение 24 минут, но я обещаю вернуться Вам в течение 24 часов. Если вы позвоните мне за полчаса до Ваш PSET связано, вы быть как, Я понятия не имею, что я делаю Эллисон. Помоги мне. Я собираюсь успокоить Вас, но в конце концов, если вы звоните мне за полчаса до Ваш PSET связано ни с чем написано, Я собираюсь быть, как, ну, может быть, это время, чтобы использовать эту поздний день. Так что я буду отвечать на все ваши Запросы в очень своевременно. Мой телефон, как правило, прилагается к моим рукам. Я, как правило, реагируют гораздо быстрее, чем за 24 часа, но я могу только гарантия 24 час ответ. Хорошо. Так почему мы здесь? Кроме того, если у вас есть вопросы по в любое время, пожалуйста, дайте мне знать. Я много говорить. Я говорю быстро, но, пожалуйста, не стесняйтесь прерывать меня. Это дает мне передышку, а также. Так разделы раз для нас на самом деле просто погружение в, получить некоторые практический опыт, чтобы пройти тем, что мы упоминали в классе или в учебных материалов, которые мы рекомендуем вам, ребята онлайн. И мы будем на самом деле пройти некоторые из этих ресурсов в немного. Таким образом, некоторые замечания по разделу поддержки. CS50-- одним из вещей, которая делает это один из моих любимых занятий Ощущение такое, что вы никогда не одиноки. У нас есть сотрудники более чем 100 люди, которые здесь, чтобы помочь вам. У нас есть рабочие часы С понедельника по четверг. Так что есть очень много людей, которые люблю класс так же, как и я и кто на самом деле здесь потому что они хотят быть здесь. Большинство из нас студенты, и это подобен пятого класса в дополнение в остальной части нашей работы. И это много работы, но мы делаем это потому, что мы любим ее, и мы действительно любим, чтобы научить вас и помочь поделиться своим волнением для этого предмета и класса. Поэтому, пожалуйста, воспользоваться. Пошли разговоры нам. Я одиноко, когда мои студенты не разговаривать со мной, так что если вы хотите, приходят тусоваться со мной. Это будет здорово. Так раздел, очевидно, один из ваших самых больших вещей. Мы пойдем через вещи что вы узнали в лекции, сделать несколько коротких примеров когда у нас есть время, и вообще вид получить представление о вещах Вы должны думать о для ваша проблема установить. Shorts-- сколько людей на самом деле смотрел видео с нуля Короткая? Любой узнаешь меня? Итак, это очень здорово. Вы определенно должны смотреть те. Много работы было вложено в них. И они просто означало быть крохотные части для вас просто смотреть в течение трех-четырех минут и получить Лучшее понимание концепции. Прогулка throughs-- как многие люди смотрели что сквозные для предыдущих? Zamyla Удивительно, не так ли? Мол, я хотел бы быть Zamyla иногда. Так определенно использовать ваши сквозные. Она будет разбить его на небольшой, крохотные части. И когда у вас есть эти огромные характеристики из ваших проблемных наборов, это будет действительно важно чтобы иметь возможность просто найти где- чтобы начать работать медленно, и через него. Ладно, у нас также есть Study50, который является study50.harvard.edu, я считаю. Вы можете просто Google учиться, и это будет придумать. Это одно из Лучшие ресурсы у нас есть. Это PowerPoints с нотами и практики проблемы для вас с решения, что вы можете фактически идти через. Так что, если вы когда-либо хотели больше практики, больше, чем мы в секциях или более чем ваши проблемные наборов, это действительно место я призываю вас идти. Он был построен летом прошлого года некоторые из моих действительно хороших друзей. И это удивительно. На самом деле, много горок что я буду использовать для раздела будет поступать из Study50. Так много в ТФ использовать его. И, наконец, как я вышеупомянутый, часы работы. Если у вас возникли проблемы с домашним заданием, вы возникли проблемы с Концепция, пришли к рабочие часы. Перейти в начале недели, если вы можете. Убирайся к квад, потому что это отчасти далеко. Никто не любит ходить там. Но это в ваших интересах, потому что тогда ты будет иметь все эти ТФ, [Неразборчиво] окружают вас. И особенно сейчас, Просто совет, четвергам очень холодный сейчас в Mather потому Ваших psets обусловлены, по четвергам. И зная, хочет использовать свои поздние дни еще. Так что если у вас возникли Проблема с понятиями, Есть много TFs кто там, чтобы помочь вам. Так что приезжайте к Mather в четверг. Если вы хотите увидеть меня, Я собираюсь быть там. Я обычно делаю свою собственную домашнюю работу, потому что никто не хочет моей помощи. Так что приезжайте нам. Нам навстречу. Так как многие люди приняли участие лекции или наблюдал его в Интернете? Как многие люди пошли в супер раздел на прошлой неделе? Прохладный. Это на самом деле справедливое число. Как многие из вас читали ваши спец в течение этой недели, для вашего PSET? Ох, я горжусь вами, ребята! Более конфеты для y'all. Хорошо, так что мы имеем в виду "Нам навстречу", является что раздел действительно только будет супер полезно для вас если вы приехали в прочитав ваш Спецификация для PSET. Потому что, когда я иду через обзор вещей, которые вы должны искать для, он не собирается делать как много смысла, если вас Не знаю, что установить ваша проблема собирается просить вас сделать. Если вы не придете к разделу, очевидно, Я не могу быть, что полезно для вас. Я не собираюсь принимать это близко к сердцу, если Вы не пришли к моей секции прямо сейчас, но, безусловно, вы должны. Если вы не можете, просматривать их в Интернете. Они там по причине. Шахта будет тут. Как вы заметили, мы записывается, так что буду там для вас, ребята. Как хорошо, собирается lectures-- что, очевидно, где вы получаете начать Вашего материала здесь. Так что я, безусловно, попытаться помочь вам столько, сколько я могу, но я могу только встретиться с вами до сих пор. Вы должны рода нам навстречу там. Grading-- так, вы все кто получил письмо от меня, ты мой официальный раздел. Я буду сортировки ваши psets. И я просто хочу сказать одну вещь, что Вы должны действительно обратить внимание на являются комментарии. Комментарии зачастую более полезно чем фактический счет мы дать вам. И комментарии на самом деле где я провожу много моего времени когда я профилирования. Так что я был бы признателен это если вы читаете их. И они на самом деле, как вы собираетесь чтобы узнать больше о дизайне и стиле и вещи, которые немного меньше вырезать и сухой. Так действительно обратить внимание на эти замечания. Если у вас есть вопросы о них, или вопросы о вашем счете, пожалуйста, приходите поговорить со мной либо до раздела, Я, наверное, болтаться В вестибюле, или после этого. Если вы хотите запланировать один-на-один о том, как Вы можете помочь улучшить позже домашних заданий, просто дайте мне знать. А потом просто пара советов для вас, ребята. Так один из самых больших вещей Я всегда подчеркиваю, чтобы мой раздел когда вы учитесь, как код является писать вещи на бумаге в первую очередь. Если у вас есть план на игру для где ваш код должен пойти и что для этого нужно сделать и это разбивается в маленькие кусочки псевдокоде Код вы выписали, Вы собираетесь быть меньше вероятно, чтобы сделать синтаксические ошибки или зарегистрироваться, если цикл, который не имеет еще. Если вы знаете, где вы находитесь происходит в целом, вы менее вероятно, чтобы сделать эти крошечные ошибки, которые иногда принимают вас часов, чтобы исправить, потому что вы, как, где у меня отсутствует этот кронштейн? На этой ноте, пожалуйста, используйте Style50. Особенно, когда ты собирается рабочее время, если ваш код все перешел в одну сторону, это политика, конечно что мы можем сказать, это исправить так что, похоже, Style50 говорит надо, а потом мы вам поможем. Так это будет сделать вашу жизнь проще. Это сделает нашу жизнь проще. Все счастливее. Каждый получает лучшие оценки. Разве это не то, что мы все хотим? Так писать вещи на бумаге, прежде чем Вы когда-нибудь прикоснуться компьютер. Поговорите вещи на высоком уровне, и убедитесь, что вы знаете, куда вы идете. И если вы не уверены, сесть с кем-то и идти их путем, шаг за шагом что ваш код должен делать. И в девяти случаях из 10, вы будете как, ой, я забыл о, если условие или я забыл точку с запятой здесь или Я обновляю эту переменную неправильно. Так вот мои советы для успеха. Так, поскольку около половины из вас смотреть как вы приняли участие супер раздел, Я просто хочу, чтобы очень кратко пройти петель, которые не были на нашем оригинальном повестки дня. Но они очень важны. И поэтому я собираюсь рода скорости через те прежде чем попасть в наш фактический раздел. Прежде чем сделать это, есть любой questions-- логистически, лично, есть все, что вы хотите знать обо мне или о раздел или класс в целом? Все хорошо? Хорошо, прохладно. Прекрасный. Так loops-- вы, ребята, должны все признать эти части с нуля. Так петли в основном только способ для нас, чтобы сделать что-то некоторое число раз, некоторые повторенные Действие основано на некоторые условные. Таким образом, мы имеем три различных типа. У нас есть цикл, в то время как, и делать-то время. Таким образом, для loops-- мы просто должны очень Генеральный план здесь цикл. И это очень удобно, если вы знаете, как много раз что-то нужно выполнить. Когда мы говорим о остальные петли, вы будете понять, почему это важное различие. Но для петель являются для чего-то набора. Вы знаете, вы можете рассчитать количество или вы знаете, сколько раз вы хочу это повторяется в начале. Так что если вы видите здесь, мы есть лишь общее рода из скелета рамках для для петли здесь. Таким образом, для-инициализации, это где Ваши переменные инициализируются. С Марио, я уверен, что вы, ребята, сделали что-то вроде INT I равен 0. Вот где, что случилось бы в синий. У вас есть ваше состояние, которое это то, что проверяется каждый раз. Если это условие истинно, то Остальная часть кода выполняет. Тогда он будет работать again-- и спросить. А то у нас обновления, где вы обновляете ваш переменную. Так, опять же, с, как Марио, я уверен, что вы, ребята, сделали что-то, как я плюс плюс. Таким образом, каждый раз, когда петля побежал, я получил обновленный так что, когда мы выезжали его против некоторое условие, это меняется. Потому что, если вам просто есть статической переменной, если он выполняет в первый раз, это просто хочу, чтобы выполнить бесконечно. Таким образом, вы должны убедиться, что вы обновить переменную правильно. И у нас также есть просто Визуальное представление есть. Все хорошо? Для петель. Если видели их в свой PSET. Прохладный. Так вот как раз простой пример. Распечатать это CS50! 10 раз. И так у нас есть инициализацию, как мы видим, есть, с INT I равен 0, для меня это меньше чем 10, и я плюс плюс. И это будет печатать, что в 10 раз. Таким образом, хотя loops-- а петли Здорово, когда ты не обязательно должны знать, сколько раз это собирается обновить в начале. Вы просто есть некоторые состояние, который проверяется. И это может быть что-то вроде while-- давайте брать пример с вашей PSET. Если Марио, вы пытаетесь вход отрицательное число. Не так ли? Вы должны были повторно предложит своего пользователя. Таким образом, вы можете сказать: хорошо, если пользователь вводит что-то меньше нуля, заново оперативного им. И я уверен, что, возможно, придется было что-то, что некоторые из вас использовать в коде. Так что это просто. У вас есть в то время, некоторые условно, что проверяется каждый раз, когда код идет исполнять. Если это истинно, мы запускаем его. В противном случае мы не делаем. И то, что на самом деле important-- то, что я думаю, что Дэвид говорил о в lecture-- являются брекеты. Что бы ни было в пределах брекеты это то, что выполняется. Если вы забыли тех, брекеты, это только собирается чтобы быть на линии непосредственно после в то время был казнен. Так что если у вас есть три вещи, которые должны произойдет, когда этот состояние оценивается как истина, и у вас нет этих брекетов, только Первое, что должно случиться. Так что будьте очень осведомлены о где вы разместили свои брекеты. Если вы будете с Style50, это, безусловно, поможет вам. Прохладный. Так что это обратный отсчет от 10 до нуля. И, как вы видите здесь, мы инициализировать некоторые счетчик за ее пределами. Одна вещь, которая отличается тем, мы не инициализации нашу переменную в нашей время цикла. Это инициализации вне его. Мы просто просто положить состояние в течение нашего времени. Таким образом, в данном случае, это в то время как Количество больше нуля. И мы печатаем то, что наш отсчет, а затем мы уменьшаем нашу переменную. И это еще одна вещь, чтобы заметить. Наша обновление не произойдет в течение что первая часть то время цикла. Это будет на самом деле произошло в брекеты, тело вашего текста. Так что-то время loops-- делать-то время петель велики для проверки пользователя. Таким образом, некоторые из вас, возможно, также используется это в вашем PSET. Вы можете сказать: делать, как, спросите у пользователя ввод. И потом, когда, как, на входе меньше некоторого числа. Таким образом, для явного случае с Марио, он будет делать Printf, введите целое число, а затем некоторое целое число равняется GetInt. И тогда это будет на самом деле выполнить этот код в первую очередь. Вы на самом деле придется своего рода целое. И тогда вы могли бы сказать: в то время как что число меньше нуля. Так что это будет сделать, это это собирается выполнить по крайней мере один раз. Это собирается проверить состояние. Если условие правда, он будет работать снова. Так что-то время петли отлично подходит для проверки пользователя, потому что вы знаете код собирается выполнить по крайней мере, один раз, в то время как с в то время как петли, вы не гарантируется, что это будет выполнять один раз. Это собирается проверить состояние а затем принять решение, чтобы выполнить его, а делать-то время будет выполнить код сначала а затем проверить, является ли Вы должны повторить его. Имеет ли это различие смысл для всех? Хорошо. Прохладный. Таким образом, в данном случае, это своего рода из того, что я говорил, Это повторное подсказки до вас получить положительное число. Итак, мы знаем, что Printf "Введите положительное число" а на самом деле просят, что вход будет происходить по крайней мере, один раз. Если пользователь является злом и держит ввода отрицательного числа, которые знает, сколько раз он будет выполнять. Но этот код гарантированно для выполнения по меньшей мере, один раз. И вот почему это здорово для проверки вход. И вы будете использовать, что совсем немного. Ладно, какие-либо вопросы до сих пор? Мы все хорошо? Я говорю слишком быстро? Мы хорошо? Хорошо. Здорово Итак, мы собираемся, чтобы идти вперед и говорить о массивах. Прохладный. Так массивы в основном всего структуры данных что позволит нам хранить вещи такого же типа. Так что, если вы когда-нибудь массив, это либо просто придется целыми или это просто будет иметь поплавки или это просто придется символов. Вы не собираетесь иметь Int с символ с поплавком с двойной. Одна вещь. Массивы просто один размер, или они просто один тип. Так вот у нас есть массив размером три с тремя числами в нем. Они могли плавает, но мы хочу сказать, что они целыми. Так одно дело понимать, что массивы представляют собой набор размер при инициализации им, и они не easily-- так как вы все менее комфортно, Вы должны только думать о них как Не имея возможности расширить в размере. Однако большая вы отправитесь ваш массив в начале, это размер он собирается остаться, потому что массивы являются непрерывные блоки памяти. И когда вы, ребята, получите в немного более о том, как память на самом деле выложил на диски и в куче и стека, это сделает немного больше смысла. Но вы могли бы просто думать о как, это просто ряд мест на диске. И вы не можете гарантировать, что есть будет свободное пространство после него. Вы можете инициализировать массив из трех, а затем, может быть, вы инициализировать другой массив из пяти позже, и это сразу после этого. Так что, если вы были пройти пятно три в этом первом массиве, Вы писали бы над чем-то еще. Так массивы are-- для вас, ребята, просто думать о них как фиксированного размера. Так создания array-- вы собираетесь нужно сделать это совсем немного. Таким образом, в одной и той же дороге, что у нас есть Общая структура для нашего для петель, у нас есть хороший генерал Структура нашего массива. Поскольку они одного типа, все элементы массива имеют один тип, необходимо инициализировать что это тип. Так что, как вы видите здесь, у нас есть миленький кронштейн типа данных. Так что если мы создаем Int Массив, что будет Int. Если мы создаем символ Массив, это будет символ. Если мы создаем строку Массив, это будет строка. А потом имя вашего массива, все, что вы хотели бы, чтобы это было. Так может быть, это результаты тестов или, может быть, это студенты или, может быть, это конфеты. Что бы вы ни решили назвать ваш Массив, это то, что это будет. А потом в скобках, вы будете иметь размер, который вы хотите. Так, мы хранения 10 студентов или мы хранения 15 видов конфет? Что не. Таким образом, в нашем примере, мы создаем массив размера трех, что вы, ребята см прямо здесь, на правом. И когда мы впервые инициализировать это, все устанавливается в ноль. Так что это просто думал, из как чистый лист. У нас есть все эти пространства, у нас есть все эти коробки мы могли разместить наши данные в, но они просто пустой в настоящее время. Так что, если мы хотим, чтобы на самом деле назначить их эти значения, мы делаем так, как прямо под здесь показывает. Таким образом, вы должны независимо имя вашего массив, а затем то, что индекс вы хотите. Таким образом, индекс относится к просто, как, что слот мы смотрим на. И главное, чтобы заметить является то, что массивы нулевого индексируются. Так что, если мы хотим, чтобы первый пространство в памяти нашего массива, она будет равна нулю. Если мы хотим, чтобы второй, это будет один. Если мы хотим, чтобы третьи, что это будет два. Так далее и тому подобное. Какие же причине, условно, когда мы делаем для loops-- Я уверен, вы, ребята, было интересно, почему мы начинаем с 0 по сравнению с 1? И это потому, что, когда мы переходим в использовании массивов, он отображает корректно. Так что, если вы хотите, чтобы итерации в массив, его делает намного больше смысла в Должен ли я равна 0, потому что мы знаю, что будет соответствовать на первом месте в памяти. Все хорошо с этим? Прохладный. А потом на дно здесь просто еще один способ инициализации массива. У вас еще есть ваш тип данных и имя, но вместо того, чтобы реально поставив размер там, вы можете просто сделать пустые скобки. А потом с них вьющиеся скобки на дне, Вы можете просто ввести данные, которые Вы хотите, разделенных запятыми. И что автоматически говорят, хорошо, я вижу, что у вас есть три вещи в этих скобках. Так что я знаю, что мне нужно выделить три блоки памяти, а затем сохранить их. Таким образом, первый вариант, вы могли бы использовать если вы спрашиваете свой пользователю вводить значения, так что вы можете перебора массива и ask-- получить Int чтобы ввести их. Если вы знаете значения заранее, он делает намного больше смысла использовать второй способ. Но в большинстве случаев, вы можете не знать что эти значения будет. Прохладный. Еще вопросы? Хорошо. Так доступе elements-- так один из больших вещей о массивах является то, что они носят случайный характер доступ, а это означает, что вам не должны смотреть через каждый блок. Если вы знаете, что вас хочу то, что в блоке два, Вы можете просто сказать, дайте мне блокировать два. И вот почему они Индексы настолько важны, и это, как мы на самом деле получить к ним доступ. Таким образом, в этом случае, как мы видели раньше, когда мы были присвоения значений, в одном раньше, у нас было имя и Индекс мы хотели доступа, не так ли? Таким образом, в одной и той же дороге, что и все мы сделать, чтобы на самом деле тянуть, что из данных. У нас есть имя, и мы есть индекс, который мы хотим. Таким образом, в данном случае, для цикла сюда в нижней, кто знаю, что он делает, что бы это распечатать? Mmhmm? Точно. Так что да, это просто перебор. я равна zero-- мы можем идти через код только быстро. Я равен нулю, я меньше чем три на данный момент, не так ли? Так что проверяет. И мы говорим: ОК, печать е все, что находится в температуре я. я ноль прямо здесь, когда мы впервые перебора, поэтому мы идем на первом месте, и мы говорим, хорошо, 65 число мы хотим распечатать. Так это будет распечатать 65 а затем сделать новую линию. Я буду обновлять, так он печатает 87. Он обновляет раз, и он будет печатать 30. Все круто? Удивительный. Хорошо. Так вот вроде один что я говорил, как Вы можете отслеживать чей-то счет и почему Вы бы использовать первый способ инициализации вместо этого второго пути. И это просто проходит. И обратите внимание, у нас есть размер класса 30. И мы инициализации это массив целых чисел, что является размером 30. А потом мы итерации через и мы задавая пользователю для ввода оценки для каждого из них а затем назначив ее особое место в памяти где-то в этом массиве. Прохладный? Имеет ли это смысл для всех? Mmhmm? Так хэштегом определить размер класса 30 является директивой препроцессора, который просто означает, что он gets-- он имеет сделать как процесса компиляции. Вы можете думать об этом как глобальная переменная. То, как мы делаем это typically-- это позволяет ваш код Чтобы быть более легко изменено. Так скажем, что наш размер класса внезапно выходит от 30 до 15, если бы я не определено это так, я бы должны пройти через всю свою программу и изменить каждый экземпляр 30 до 15. Но с этим, я получаю изменить один место, и все остальное меняется. Если вы когда-либо хотели сделать хэш определить в случае где вы отслеживать некоторые установить количество баллов для класса или вы используете ряд который будет использоваться, как, по всей очень долгого программы, это лучше, чтобы определить, что в начале так что, если когда-нибудь это изменится, вы получите изменить одно место вместо 100. Да? СТУДЕНТ: Между делать это и просто объявить [неразборчиво] над самым верхним. АЛЛИСОН Бухгольц-AU: Так что имеет дело с efficient-- это отчасти выходит за рамки что мы можем охватить в этом разделе. Он должен сделать больше с эффективностью и, как все на самом деле работать в процессе компиляции. Если вы хотите, чтобы действительно знать об этом, я счастлив послать вас по электронной почте с ресурсами около него. Hash определить, как правило, предпочтительным для вещей. И как вы код более, вы вид узнать нюансы о том, когда вы должны использовать Глобальный сравнению с хэш определить. Но до поры до времени, Вы на самом деле не имеют беспокоиться о это что короткий ответ. Все хорошо с этим? А также, если вы хотите использовать хэш определить, это действительно важно заметить что имя должно быть в верхнем регистре. Мы не просто делаем КЛАСС РАЗМЕР быть драматичным. Это на самом деле должны быть в верхнем регистре. Прохладный. Что-нибудь еще есть? Мы хорошо? Прекрасный. Добро пожаловать. ОК, так что я хочу, чтобы вы, ребята, посмотрите на это и посмотреть, если вы можете найти ее. Я дам вам подсказку. Это где-то в этом для петли. Mmhmm? СТУДЕНТ: Должен быть меньше или равно 2. Элисон: Так может быть меньше или равно 2, или он может быть меньше, чем 3. И то, что рассуждения на что? СТУДЕНТ: [неразборчиво], 0, 1, 2. Элисон: Ровно. Так в массиве размера п, только индексы п минус 1. Прохладный. И тогда мы можем получить действительно сумасшедшие и получить многомерные массивы. Одна из проблем, когда я взял его в мой год необходимые многомерные массивы, и я думаю, что один из них может потребоваться это в этом году, так было удобно. Оберните голову вокруг него сейчас. Это будет аукнуться Вы, но в прохладном образом. Таким образом, вы можете на самом деле просто думаю многомерных массивов как массивы массивов. Таким образом, вы можете рода думаете об этом сверху грести, как первый пакет с памятью. И это один Вторая часть памяти, и последняя строка Третий участок памяти. И в том, что, есть массив. Но, конечно, это легче изобразить, как это. Таким образом, вы инициализировать его таким же образом. Это символ Совет три на три. Так у вас есть три ряда и три колонки. Мы представляющий это так. А вы бы доступ к нему в Точно так же, столбец за строкой. И так 1,1, как мы видим, здесь. Мы присваиваем ноль, ноль там. 2,0 и 0,2. Таким образом, вы бы просто открыть them-- если кто когда-либо делал линейную алгебру, так же, как вы к элементу в Matrice, это та же идея здесь. Таким образом, вы можете связать его обратно в математике. Вы не должны волноваться слишком много об этом прямо сейчас. Это хорошо, что экспозицию, знать, что вы можете сделать это. Вы можете создать некоторые сумасшедший number-- вы можете создать сумасшедшие массивов все, что я собираюсь сказать. [Неразборчиво] Это становится немного сумасшедшим, но это действительно здорово. Удивительный. А потом, у нас есть пример здесь. Это вычисляет длину строки. Так как многие люди знали, что струны, что вы используете просто массивы символов? Хорошо, да. Таким образом, вы, ребята, можете думать, что у вас есть не б массивы и раньше, но любое время Вы используете GetString в Библиотека CSView, вы на самом деле просто просят массив символов. И мы берем на себя все что на заднем конце для вас. Но вы использовали массивы, так как вы начали. Вы просто не знаю, что еще. И всякий раз, когда у вас есть массив символов или массив, который хранения строку, Последнее, что всегда что называется нуль-терминатор, который это прямо здесь. И это в конце каждое слово, которое вы храните. Так что, если мы хотим, чтобы выяснить, Длина строки, мы можем говорить, Ну, вы знаете, Содержимое этого блока не равна нашей нулевой символ. Это означает, что существует некоторая Характер есть, что мы на самом деле заботиться о том, что это часть слова. Вы увеличить длину. А потом, когда мы на самом деле получить конец слова, это будет прекратить и она вернет нашу длину для нас. Mmhmm? СТУДЕНТ: Есть ли пространство рассчитывать как нулевой символ? Элисон: Так пространство не пустой терминатор. Так что если у вас есть multiple-- пространство на самом деле является конкретное значение ASCII. СТУДЕНТ: Что Восклицательный равно снова? Элисон: Так, это то, что вы обратитесь к. Если вы когда-нибудь слышали меня в рабочее время, Я всегда называют его, как, бац равно. Так взрыва нет. Так что это не равняется. Так что, если вы пытаетесь если что-то ложно, Вы знаете всегда, удар все переменная, а если ложно, это оценивается как истина и вас можно сделать интересный материал с этим. Подробнее об этом позже. Прохладный. Все там хорошо? Удивительный. Так что теперь пришло время ваших ребят, чтобы работать, так как я говорю. Поэтому я хочу, чтобы ты просто создать массив с целыми числами один, два, а три, а потом их распечатать. Вы не должны делать, как, Основной, бла, бла, бла, что угодно. Я просто хочу, чтобы вы инициализации массив, а затем создать цикл их печатать out-- или в то время как цикл, зависит от вас. Я просто дам вам пару минут, чтобы работать над этим. Я собираюсь отдохнуть мой голос. Если у вас есть какие-либо вопросы, я счастлив чтобы прийти и поговорить с вами, ребята. Не стесняйтесь говорить друг с другом. Получить больше конфет. На самом деле, я просто ходить с конфетами. Как это? Вы хотите, чтобы какие-то? Кто-нибудь еще в этом зале хочу конфетку? Вы также можете принять более одного, ребята. Возьмите горсть, если вы хотите. Май также. Все остальные хорошо? Хорошо. Кроме того, я собираюсь создать анонимный Google Форма, и вы, ребята, можете просто представить обратная связь после каждого раздела если есть что-то вы хотите улучшить или то, что вы хотите сделать. Если я слишком бодрый для вас, я могу настроить его вниз. Я создам что и отправить, что к вам всем потом. Хорошо. Так что давайте начинать с малого. Как бы мы инициализировать массив? Что тип нашего массива? INT, не так ли? ОК, так что вы хотите, чтобы вызвать ваш массив? Int массив, круто. Ладно, так что мы должны Int Int массив равна, и что мы имеем после этого? СТУДЕНТ: [неразборчиво] скобки. Элисон: Брекеты. А потом в фигурных скобках? Один запятая два запятая три. Прохладный. Так что все в порядке. Так что теперь у нас есть наш цикл. Таким образом, в первой части нашего для петли, что мы имеем? СТУДЕНТ: я равен 0? Элисон: Так INT I равен 0, и то что это наше состояние? Что я собираюсь быть меньше? Менее трех, и как мы обновляем я? Я плюс плюс, его обновления по одному. И тогда мы будем иметь некоторые Printf от целого, и что, что в прошлом часть, которая на самом деле хочу сказать, что мы должны быть печать? Было бы название Массив, который является целочисленный массив, не так ли? И то, что в скобках Int массива? я. [? Так что я?] Называется мой пример, но там вы идете. Не то, чтобы плохо. Все хорошо? Прохладный. Таким образом, мы сделали с массивами. Поздравляю. Вам удалось итерации через все the-- да? СТУДЕНТ: [неразборчиво] Элисон: Да. СТУДЕНТ: У меня есть вопрос. Вы должны отступ скобки? Элисон: Так брекеты должны выстраиваться с для петли, а затем все внутри скобки должны быть отступ. СТУДЕНТ: ОК, должны для петли с отступом? Элисон: для петли не нужно иметь отступ в этой точке. Если вы были в основном, если мы на самом деле было главной функции здесь, он будет с отступом от главной. Но в данном случае, это прекрасно. Да, вопрос. СТУДЕНТ: Вы должны иметь скобки после Например? Элисон: Да, если вы инициализации это таким образом. Так что помните, это уже второй способ инициализации массива где у нас есть скобки, а затем наша фактическая Данные, разделенные запятыми внутри. СТУДЕНТ: Я думал, что было Кронштейны для этого примера. Элисон: Нет, они скобки. Они скобки. Если вы его инициализации что второй путь, это брекеты. Если бы мы должны были сказать, INT example-- если мы просто хотели чистый массив для целых чисел, было бы INT пример скобки три. Кронштейны представляют размер. Если у вас есть фигурные скобки, это фактические данные Вы помещаете в него таким образом. Мы можем прокрутить назад очень быстро. Таким образом, в этом, это только наше Первоначальный массив, инициализация. И вот, мы индивидуально присвоения пятна на них, таким образом, это представляет собой индекс наш массив, поэтому у нас есть скобки. Но здесь, если вы заметили, у нас оставили наши скобки без размера, и мы его инициализации с фактические данные все-в-одном с фигурными скобками. СТУДЕНТ: Так почему бы нам не иметь скобки в этом примере? Элисон: Так, в какой части? СТУДЕНТ: Не будет ли у нас скажем, пример INT кронштейны равняется скобки [неразборчиво] кронштейны для примера. Элисон: Ой, извините. Ты прав. У нас есть скобки есть. Извините, ребята, мой плохой. Да, вы должны иметь скобках после примера. Вы совершенно правы. СТУДЕНТ: [неразборчиво] не делают. Элисон: Нет, вы должны иметь кронштейны, потому что в противном случае это не собирается объявить массив. СТУДЕНТ: [неразборчиво]. К сожалению об этом. Элисон: К сожалению, вам нужно скобках после примера. Опечатка. Хороший улов, золотая звезда для вас. Кроме того, если вы задаете вопрос, если вы, ребята, просто скажите мне ваши имена, Мне бы очень хотелось, что. Я хотел бы быть в состоянии знаю все ваши имена. Я не собираюсь к холоду позвонить вам, я на самом деле у просто хочу знать ваши имена. Поэтому, пожалуйста, на самом деле сказать мне ваши имена. LEAH: Лия. Элисон: Лия. Итак, functions-- Я знаю, в краткой они говорили об этом во время лекции. Так функции вроде просто как эти маленькие крохотные вещи где вы проходите в входы, что-то волшебный происходит, и вы получите выходы. Прохладный. Таким образом, вы на самом деле используется Многие из них уже. Получить Int, получить строку, печати п. Все эти функции где вы просто называть их, есть много волшебных вещей происходит в фоновом режиме что вам не обязательно видеть, и вы получите то, что вы хотите. Или, по крайней мере, вы получите то, что вы надеюсь, что вы хотите. И в основном точка функций, и один из главных тем CS, это сломать код на управляемые части. Когда вы начнете писать эти действительно длинные программы, или в пустом, когда вы были Этот гранд-идея для игры, Вы должны быть в состоянии разбить его до, как, в порядке, как мне начать? Каковы маленькие кусочки, что мне нужно? О, я должен спросить Пользователь чего-то. Теперь мне нужно что-то напечатать. О, мне нужно, чтобы вычислить это значение. И, узнав, как разбить ваш Код и большие проблемы вы есть в этих маленьких кусочков и создания функций на самом деле один из большие краеугольные CS. Таким образом, вы можете думать о функции так же, как как черный ящик, волшебный черный ящик, что вы положили вещи в и вы получите некоторый вывод. А остальные программы не нужно обязательно знать, что происходит внутри этого черного ящика. Все это волнует есть что входит и что выходит. Прохладный. Итак, почему функции? Organization-- как я уже сказал, когда ты дело с очень большими базами кода, как вы организуете ваш код будет намного легче, если вы используете функции. Потому что вы сможете быть, как, в порядке в этом, это то, что делает эта функция и вот то, что другой человек делает. И вы можете легко увидеть как они все подходят друг другу. Так разбивая его на все эти управляемые подразделы. Так simplification-- Я уверен, что вы, ребята, все видели это, как я уже сказал, с нуля. У вас есть этот великий идею, и Вы походите, как это все работает? Но если подойти к его по частям, вы говорите, в порядке, как сделать, чтобы в одном шприце плавают по экрану? Это немного легче. Так хорошо использование функциональных моделей ваш код гораздо легче читать. Это облегчает отладку, которые, как Вы получаете в ваших последующих проблемных наборов, Вы собираетесь действительно хочу быть в состоянии сделать. И они также легче разрабатывать и осуществлять. Вы можете закодировать до небольшой функционировать относительно быстро и убедитесь, что он работает против пытается Для создания этой целую длинную программу а затем рода пройти и посмотреть, что работает, а что нет. А потом повторного. Так функции нужно только чтобы быть записана один раз, а затем вы можете использовать их столько раз, сколько это возможно. Так что это, как, экологичный, в некотором смысле. Если у вас что-то вроде печать е, где вас пришлось выписать магию, которая идет на за печать е каждого времени Вы хотели что-то напечатать, вы будет довольно устал от него к концу. Одна из вещей, которые вы будете узнать в поздние занятия CS, или один из лучших советы, которые я получаю это, если вы копирования и вставки Код, он, вероятно, следует быть функцией. Если у вас есть точно такой же линии в течение всего вашего кода, если вы учли их, Ваш код будет, вероятно, быть, как, в пять раз короче и гораздо более удобным для чтения. И вместо того, чтобы устранить все эти различные места, где вещи может пойти не так, у вас есть одна функция что вы можете устранить. И я обещаю, многое из этого Может показаться своего рода абстрактный сейчас, но, как вы получите в дальнейшем и позже проблема устанавливает, это будет сделать намного больше смысла и действительно управляться домой. Есть ли вопросы о функциях до сих пор? Почему мы их помощью? Я знаю, что мы не получили в вшивый песчаный еще. Так определении function-- так же, как массивы, нам нужно какое-то of-- это это просто общий выход. Таким образом, это является функцией, это просто хочу, чтобы куб некоторый вклад. И на следующей странице, на самом деле, у нас есть все эти удивительные мелочи здесь. Так, может каждый читать что, из любопытства? Я знаю, фиолетовый и черный может быть немного трудно. Но большие вещи, чтобы знаю-- поэтому первый один прямо здесь наша возвращаемый тип. Таким образом, это говорит о выходе этой функции, когда, в данном случае, положить в какое-то количество, что мы получать в том, что число в кубе. Так оно и должно быть интервал в этом случае. Может быть, это будет двойной или то еще позже, но в этом случае, это внутр. С с, вы всегда должны возвращаемый тип. Это будет интервал. Это будет поплавок. Это будет двойной. Но вы должны указать, что эта функция будет возвращать. В противном случае это будет кричать на Вы, и это не будет компилировать. Вы будете грустно, и я буду грустить. И это просто не хорошо. Хорошо. И тогда у нас есть имя функции. И как вы можете видеть здесь, с с есть это очень последовательно парадигма. Какой ваш тип, как называется, а затем некоторые другие вещи в конце. Так у нас есть тип возвращаемого, наше имя функции, а затем у нас есть заголовок с наш список параметров. Так что список параметр, что эта функция займет в? Список параметров является просто синоним, каковы наши входы? И таким же образом, то мы должны определить нашу функцию и дать ему возвращение введите, каждый из наших входов должен иметь тип, связанный с ним. Итак, мы знаем, что наша функция может на самом деле работать с. Таким образом, в данном случае, у нас есть некоторые Int вход. Итак, еще раз, это будет тип и то, что вы сейчас это называют. А потом, как вы видите, здесь, у нас есть наше тело. Таким образом, мы имеем некоторую INT выход, что является только наши входные раз сам Сам раз, которые просто кубики его. А потом мы вернемся, что выход. Итак, как вы видите здесь, у нас есть Int раз превышает целочисленное раз INT, так он возвращает Int, которая был объявлен там. Так что все сплоченной. Все довольны. Ваша функция будет работать. И это только общая вещь. Так всегда тип возвращаемого, Имя и ваш список параметров. Каждая вещь в вашем Список параметров, или вход, должен иметь тип, связанный с ним. И тогда у вас есть ваш Тело здесь с тем, что Вы хотите сделать с вашим входом. И то, очевидно, вам хочу что-то вернуть. Иногда функции будет просто вернуться. Они фактически не возвращать что-то для вас использовать. Но вы должны вернуться в некотором роде. И когда вы делаете Ваши собственные функции, мы можем получить в том, что немного глубже. Лично, если вы хотите, есть много из различных вещей, которые вы могли бы сделать там. Все хорошо? Все в этом списке, который вы хотите меня перейти, что вы не понимаете? Все хорошо там? Прохладный. Удивительный. Итак, мы помещаем все это вместе. Таким образом, мы имеем некоторую INT куб вход, так это полная программа здесь. До сих пор у меня есть вид давал вам ребята фрагменты, которые могут идти в рамках программы. Мы только смотрели на функции. Но вот вся программа. Так как многие из вас помнят Слово прототип из лекции? Прохладный. У нас есть один. Как тебя зовут? Стеф: Стеф. Элисон: Стеф? ОК, удивительным. Так, ты помнишь, что прототип является? СТУДЕНТ: Вы говорите, что [неразборчиво] прежде чем вы действительно иметь дело с ним. Элисон: Вы помните, почему? СТУДЕНТ: Нет. Элисон: ОК. Золотая звезда. Так что, да, прототипом у нас есть заранее, потому что в противном случае, наш компилятор будет кричать на нас. Это будет сказать, в порядке, что это за функция куб? Как, вы в буквальном смысле есть мне ничего не сказал об этом. Это как когда вы ходить в класс, и кто-то вроде: есть викторина сегодня. И вы хотите, вы никогда не говорил мне об этом. Я не доволен нами. Прототип в основном, как Ваш план говоря, смотреть. Головы. Там будет проведена викторина на этот день. Не волноваться, когда вы добираетесь до него. Вы собираетесь быть в порядке. Так что все прототип действительно, это сказать Основной, я собираюсь использовать эту функцию. Я обещаю я определяю его позже. Не урод, у меня. Просто соберите и делать то, что я говорю вам. Поэтому у нас есть прототип есть просто, чтобы сделать наш компилятор счастливым. И это в основном обещания, что Вы определили эту функцию позже и что вы не просто позвонив эта случайная вещь, что это не знаю, что ты собираюсь делать. Таким образом, в данном случае, мы имеем главный здесь. Мы инициализировать некоторое целое х. Это два. Мы собираемся, чтобы распечатать что х. Мы собираемся куб х. Как видите, у нас есть наш Объявление функции здесь, что мы говорил о ранее. Это будет куб х, а затем, если мы помните, функцию куба фактически возвращает целое число в нам, которые хранятся в х раз, так что мы можем напечатать из восьми, или куба х прямо сейчас. Имеет ли это смысл для всех? Мы хорошо? Хорошо. Удивительный. Хорошо. Сколько из вас, ребята Помните, что это так это в основном только ваш Стек и ваша куча, просто визуализация как память хранится здесь. Так что мы просто хотим сделать Убедитесь, что вы понимаете, как они представлены в памяти. Если вы берете классы как CS61 и прочее позже, Вы получите, чтобы узнать это гораздо больше, в глубине, и это действительно здорово. Я очень рекомендую его. Но сейчас, я дам Вы широкий обзор так что вам не придется знаю вшивый песчаный. Так верхней просто текстовый сегмент, который содержит фактические нули и единицы, двоичный за это. И это используется для хранения глобальные переменные, если у вас есть. По мере продвижения вниз, мы есть, как вы видите здесь, инициализированы данные, неинициализированный Данные, а затем кучи. Таким образом, мы действительно не говорить о куче прямо сейчас. Мы вернемся к нему позже. В настоящее время, я просто хочу, чтобы махать руками и сказать: Вам не нужно знать об этом сейчас. Но мы поговорим немного Немного о стеке. Так стек where-- нас есть зум в. Это на самом деле, как программа мы просто смотрели на место в памяти. Так что же происходит, каждый раз мы вызываем функцию, мы получаем то, что называется стек рама, которая является одним из них. Так Основные-х параметров. Так это те вещи, что мы проходим в магистрали. Таким образом, они правы здесь внизу, потому что это первое, что мы называем. А потом мы перейдем к основным годов Местные жители, и, когда мы говорим, что, мы имеем в виду локальные переменные что хранятся в основной. Так местные жители здесь быть, как, х равно двум, в этом случае. Потому что это локализованная на главную. Все помнят область, переходя что в лекции? Хорошо. Так, только переменные, инициализируются в основной. Так вот почему у нас есть основной [? вокал. ?] А потом в течение основной, мы называем куб. Не так ли? Таким образом, мы получаем еще один кадр с параметрами куба. Таким образом, в этом случае, куба Параметры сейчас х, что мы прошли в, два, которые мы прошли в. И тогда местные жители куба, который является где фактическая кубические происходит. А потом он возвращается. Так что же происходит, как кубик на самом деле что он должен делать, он возвращает. Когда он возвращается, этот кадр уходит, и его вернулись вниз к главной. А потом в течение основной, мы может на самом деле распечатать его. Так что, когда вы вернулись что-то, когда ваша функция возвращает, это как передачи этих ценностей в рамка под ним, а затем уходит. И вещи должны выполнить в порядке. И когда вы получаете на крупных программ, мы можем сделать кулер и более сложным диаграмм. Но сейчас, это просто общий обзор так у вас есть вид понимание того, что происходит, когда вы вызываете функцию и как это выглядит на самом деле в памяти. Прохладный? Все хорошо? Удивительный. Таким образом, это тот, который находится просто пытаюсь поменять вещи. Как мы видим, здесь, у нас есть наш прототип функции так что наш компилятор не кричать на нас. У нас есть несколько основных, и мы Для переключения х и у. Они не сделали это демо в лекции еще, есть они? Они имеют не? Хорошо. Таким образом, мы собираемся пойти над самой этой кратко. Вы получите в этом примере более в глубине, я думаю, на этой неделе. И тогда на следующей неделе мы можем на самом деле погрузиться в, почему это не работает. Таким образом, мы имеем эту пустоту Function here-- подкачки. Так пустота просто означает, что ничего не возвращается. И у нас есть своп Int А и INT б. И у нас есть какое-то временное Переменная вот. получает назначение в б, а затем б получает назначение на темп так что и Б значения теперь включается. Но, поворот сюжета, это не работает. И частью этого действительно есть делать с тем, что и б здесь, те, которые получают прошли в Здесь, на самом деле копии хну. Поэтому, когда функция фактически возвращает, он переключается копии, но не фактическая х и у-х. Так один способ думать о это that-- вид, это своп. Хорошо? Таким образом, в основном, у нас есть х и у инициализации. Но когда мы на самом деле идти до для этих кадров с свопа, мы передаем значения за к нему, и они инициализации. И они только когда-либо жить прямо здесь. Так и б жить здесь. И они получают местами. Но, когда мы вернемся, мы не сделать что-нибудь с и б. и б отпуск с нашей функцией. И так х и у остаются теми же. Вы получите больше в том, как исправить, что и как мы фактически имеем дело с, что позже. Но это только одна вещь, на вид, имейте в виду. Используйте его для будущего. Не волнуйтесь, если что не сделал все чувство в мире. Они являются копиями является большая вещь. Если вы собираетесь взять что-нибудь от этого, вы прошли в копиях. Так оригиналы остаются теми же. Все хорошо? Прохладный. Так аргументы командной строки. Я уверен, что в начале вы, ребята, все были те большие, как, Int основные пустоты. И вы, как, ОК прохладе. Я действительно не забочусь. Это именно то, что я должен написать. Но в ваших новых программ, Особенно в этом PSET, и почему там мел на земле? С вашего следующего PSET, вы будет видеть это. Int основной, INT аргумент с, Строка дуга v, кронштейны. Так, из того, что мы просто узнал сегодня, что мы считаем, что второй параметр или что второй элемент здесь? Это массив. Какой тип массива? Строка массив, да. Прохладный. Так вот, как вы собираетесь чтобы быть объявив их сейчас. Помнит ли кто- что они означают? Нет? Хм? СТУДЕНТ: аргумент с. Элисон: Так аргумент с держит счетчик. Это внутр. Это число, не так ли? Так что вы думаете, что число имеет? Да. Так аргумент с является число строк которые составляют командную строку. Так что, если бы мы должны были do-- фактически, есть примеры, после этого, поэтому я не буду забегать вперед. Это число строк, просто сделать свой командной строки. Так что, когда вы это делаете, как, точка слэш Марио, это одна строка, которая делает это. В этой части, вы действительно будете для кормления в командной строке, как я уверен, что вы, ребята, кто прочитал спецификации пилу. Таким образом, в тех случаях, может быть, вы будете есть два или три аргумента. Это будет полезная вещь в использовании. И тогда аргумент против, как мы уже говорили, это просто строка массива. Так что на самом деле хранит то, что Вы ввели в командной строке. Поэтому у нас есть эти. У вас есть какой-точка слэш скопировать входной_файл выходной_файл. Таким образом, если C Arg это количество строк что мы передаем в команду линия, что наша аргумент с в этом случае? Три. Точно. Так что аргумент против нуля? Так что первое, что мы сохранили? Dot слэш копию, точно. И тогда второй будет входной_файл. Третий будет выходной файл. Так что о аг против трех? Было бы пустой, потому что это конец нашего массива, не так ли? Прохладный. И тогда то, что около шестого одной? Это своего рода вопрос с подвохом. Иш. Знаем ли мы, что это такое? Это определено. Мы понятия не имеем, что это может быть. Это все, что прямо после массива в памяти, и мы понятия не имеют, что это такое. И это опасно трогать тех, вещи, потому что для всех вы знаете, это какая-то часть памяти, что вас не должен быть нулевым или доступа. И он может делать сумасшедшие вещи. Она называется чрезмерно индексации Ваш связаны в массив. Не выходить за пределы вашей Массив, или плохие вещи могут случиться. Вы вернуться и, вроде бы, законов физики были уничтожены или что-то. Прохладный. Имеет ли это смысл для всех? Не слишком плохо. Так что теперь, каждый это любимая часть, PSET обзор. Ура! Хорошо. Так что для тех из вас, кто не читал Pset спецификации, Вы делаете некоторые действительно интересный материал с криптографией. Вы собираетесь создать Цезарь Cipher и Vigenere Cipher. Вы определенно должны читать спец чтобы увидеть, как эти работы. И если у вас возникли какие-либо проблемы о что он должен на самом деле делать, пожалуйста, приходите поговорить со мной, напишите мне или текст мне. Я вокруг. Таким образом, есть три основных вещи здесь, что мы хочу поговорить about-- только отчасти из продлении лекции. Вещи, которые вы, возможно, не знают, о, полезные советы и инструменты. Так что мы собираемся делать Краткий обзор ASCII, потому что это будет супер важно для Cipher Vigenere в. Мы собираемся преобразования Входы командной строки, которые будет очень полезно для шифр Цезаря. А потом по модулю. Прохладный. Так, ASCII отображает символы в числа. Это отличный график. Вы должны иметь это закладки где-то. Вы хотите его для Ваш первый среднесрочный. Я уверен, что каждый человек имеет это График на их среднесрочного листа. Так изучать его. Люблю это. Держите его под рукой. Это будет полезно. И все это является кодирование который отображает буквенные и числовые, и другие символы в Номера для нашего компьютера. Потому что, конечно, в конец, все, что мы хранить собирается получить преобразованное до нулей и единиц, так что мы должны каким-то образом представлять Текст и символы, которые мы все привыкли видеть в качестве своего рода номером. Так как мы видим здесь, у нас есть прописные, которые тут же. Это 65. И в нижнем регистре 97. Таким образом, вы можете понять out-- как я уже говорил, если у вас массив из нескольких Строки, что каждый из них оканчивается нулевым символом. Было бы пространство. Пространство имеет свой собственный special-- Я не помню, где это здесь. Ах. 32 является пространством. Так что все карты к нему. Поэтому у нас есть ASCII математику. Pro tip-- в Vigenere-х, вас может возникнуть соблазн конвертировать ваши номера для целых чисел, но на самом деле лучше, практика чтобы иметь возможность использовать персонажи, как это когда вы на самом деле манипулирования их. Так что, если вы хотите использовать цифры, вы можете. Но лучший способ, или способ, который мы, как правило, нравится вам, ребята, чтобы сделать это, это способ, где вы находитесь фактически вычитания символов. Поэтому я хочу вас, ребята вид выяснить эти вне. Почему бы вам не попробовать через одну? Так что первый, в Третий, и пятый. Потому что я хочу, чтобы убедиться, что мы говорим все, что мы должны говорить о. Я просто хочу сказать, одно из важные вещи to-- Ой, подождите, вы, ребята, не видели этого. Хорошо так делать первые три. Давайте сделаем это. Потому что мы должны говорить о модулю. Я знаю. Математика трудно. Вы можете использовать калькулятор. Это нормально. Или подтянуть таблицу ASCII, потому что Вы, вероятно, будете хотеть что. Прохладный. Так что я буду быстро ходить Вы, ребята, через них. Так люди столы ASCII подъехал? Какова наша цифровая номер для строчной А? СТУДЕНТ: Семь. Элисон: Так строчные является 97 и прописные 65. Так 97 минус 65? АУДИТОРИЯ: 32? Элисон: 62, да. Таким образом, в этом случае, то, что бы это распечатать? Это первый? Если у нас есть процентное д, что бы это указывают? СТУДЕНТ: число. Элисон: Мы печатаем из фактического количества. Таким образом, мы на самом деле происходит распечатать 32 здесь. И если бы это было процентов с, 32 даст нам пространство. Так понимая, что символы могут быть напечатаны как в виде чисел и как фактические символы что действительно важно, и платить Внимание к фактическим типов что мы делаем здесь. Прохладный. Таким образом, для любого другого одного из них, что мы собираемся печатать? СТУДЕНТ: характер. Элисон: характер. Прохладный. Так что, если вы, ребята, хотите знать, вам может работать эти по своему усмотрению. Если у вас возникли проблемы, пишите мне. Но вторая будет распечатать строчную б. Третий будет распечатать прописная В. Четвертый напечатает из заглавной С, и последний будет в нижнем регистре A. И последнее одно-- мы на самом деле собираемся чтобы попасть в какой то сумасшедший процентов знак даже означает через пару слайдов. Так что попробуйте те по своему усмотрению. Если у вас возникли проблемы, пожалуйста, приходите поговорить со мной. Если вы, как правило, в Adams D зале, Вы, вероятно, найдете меня вокруг. Так, atoi. Как многие из вас уже видели это Функция или слышали о нем вообще? Любой? Прохладный. Так что это на самом деле стоит для это ASCII в целое. Так что вы можете сделать, это, с Цезарем, для тех, кто читал спецификацию, Вы собираетесь делать точка слэш Цезаря после написания программы, а затем вы собираетесь вход некоторое число, что вы необходимо закодировать ваше секретное сообщение с. Но, если мы помним, все наши Входы хранятся в виде строк. Не так ли? У нас есть V массив ARG это все тип строка. Так что, если вы просто попробуйте тянуть, что один, что бы думаю, что одна или еще большее число Вы использовали на самом деле характер. Таким образом, вы собираетесь получить некоторые сумасшедшие результаты. Так что если вы действительно хотите превратить это целое число что вы можете использовать для манипулирования Ваше слово или ваше сообщение, Вы хотите использовать atoi. atoi просто преобразует ваша строка с междунар. Так что, если у нас есть строка 12, если мы называем atoi на 12, или что-то, что вход, это будет на самом деле вернуться Вам целое. Не персонаж или строка 12. Который, при запуске добавить, что в числа, будет сильно отличаться, потому что строка 12 какой-то сумасшедший номер в ASCII, но число 12 на самом деле 12, которая является то, что вы хотите. Итак, вы хотите, чтобы убедиться, что использовать atoi. Вы будете хотеть это в Цезаря, потому что вы нужен Int поставляемый Пользователь в командной строке. Но когда они положили его в команде Линия, он хранится в виде строки с самого начала. Имеет ли это смысл? Вы не обязательно Это требуется для Vigenere. С Vigenere, как я сказал, до, вы должны попробовать и использовать ASCII математике, что больше похож это, где вы на самом деле используя символы, которые нам дают вам. Прохладный. Все там хорошо? Удивительный. Так модулю. Так что, если вам дают это огромное количество для Цезаря? У вас есть идея, что если вы на Z и ты дали номер два, что означает, что вы need-- Z станет вторым Письмо после себя, не так ли? Так что вам нужно, чтобы как-то обернуть вокруг, и по модулю является способ сделать это. Так все это делает это дает остаток разделения Первое число в секунду. И у нас есть примеры в сделать что немного больше бетона. Но в основном, используется по модулю, когда вы хочу сделать что-то обернуть вокруг. Так что, если вы хотите только номера от одного до восьми, Вы можете использовать по модулю на любой другой число, и это будет всегда возвращают число от нуля до восьми. Таким образом, некоторые examples-- если у нас есть 55 по модулю 10, он просто дает остаток 55 делится на 10, что было бы 5. А потом три по модулю пять, кто догадаться, что это было бы? Три. Так что если у вас есть меньшее число до модулю, он не может идти в равномерно. Это ноль. Так что просто возвращает сам номер. Так восемь модулю восемь будет? СТУДЕНТ: Ноль. Элисон: Ноль. Потому что он идет в равномерно. 16 по модулю 15? АУДИТОРИЯ: Один. Элисон: Прохладный. И тогда этот последний, это просто показать you-- вам может быть интересно, в порядке, что порядок операций здесь? У нас разделить в первую очередь? У нас по модулю в первую очередь? Так модулю имеет тот же приоритет как деления или умножения, и его левая ассоциативно. Таким образом, это таким же образом. Вы всегда делаете скобки, то умножение, деление, и по модулю в порядке слева направо. Так стандартные правила. Просто положите его в той же категории как деления и умножения. Таким образом, в данном случае, мы бы есть 1 плюс 2 дает нам 3. Мы умножаем на 2, так что мы получаем 6. Мы по модулю, что на 2, что дает нам? СТУДЕНТ: 0. Элисон: 0. И тогда мы добавляем 2, поэтому мы получить 2 в этом последнем случае. Так modulo-- вы определенно собираюсь думать о способов включить что, когда вы обертывания вокруг алфавита. Если вы находитесь на Z, и вы должны двигаться направить три места, чтобы добраться до C, есть то, что вся концепция обертывания вокруг. Так что я оставлю его в Вы, ребята, чтобы выяснить, как именно вы собираетесь его использовать. Но, безусловно, полезным инструментом для PSET на этой неделе. Мне очень нравится это. Это одна из моих любимых psets. После того как Вы это сделать, если у вас есть друзья, Вы можете, как, отправить друг друга в секрете Сообщения и убедитесь, что он работает. Потому что это будет расшифровать его или что-то. Много веселья. И что это конец секции. Я закончил рано. Я до сих пор есть 15 минут с ребята, так что если есть что-нибудь что вы хотели бы перейти дальше, я был бы счастлив сделать это. Любые другие вопросы о Ваш PSET для тех из вас, кто начал или прочитать спецификацию. Все, что мы говорили о в последний час и 15 минут, что вы хотели бы меня для вида перепевы, я был бы счастлив. Или мы можем звонить, это уходит, и вы можете все оставить и взять больше конфет с вами как вы идете. Но если есть какие-либо затяжной вопросы, пожалуйста, дайте мне знать. Вы также можете придумать и поговорить со мной после этого. Я обещаю, что не кусаются. Что-нибудь еще? Все хорошо? Чувство каждого человека, как они могут справиться с этой PSET? Вы собираетесь быть мелкие ребята. Часы работы офиса там по причине. Прохладный. Хорошо. Ну, в таком случае, спасибо Вы все, что пришли. Я надеюсь увидеть вас на следующей неделе. Там будет больше конфет. Там могут быть другие интересные вещи. И я с нетерпением жду знать все о вас в этом году.