[Powered by Google Translate] [♪ ♪ Гуда] Таким образом, чтобы познакомить вас с того, что я встал на экране; это один из инструментов, которые мы разработали в течение лета; это называется CS50 пространства, и это наш совместный применения кодирования что мы собираемся использовать в секциях. Это очень здорово. Кто-нибудь из вас видел CS50 перспективе еще? Позвольте мне тянуть, что в другой вкладке. Run.cs50.net Так если вы идете в run.cs50.net, Вы можете увидеть это в Вашем браузере способом на самом деле код - написать код C, , а затем запустить его, так как компилирует его, запускает его, а затем возвращает результат для вас, так это вроде хороший способ, чтобы эксперимент с некоторыми из кода, что Дэвид переходит в лекциях и мы даем на вас по проблеме наборы , фактически не имея, чтобы запустить прибор. Так что пространства делает это отличается от если бы я вернуться к этой вкладке, Пространствах CS50 перспективе, как вы видите здесь, Но если мы прокручиваем снова и посмотреть на другую сторону окна, Вы видите право Я единственный человек в этом пространстве, но то, что я собираюсь сделать, это спросить вас, ребята присоединиться к этой космической со мной и мы все добраться до кода в том же окошке, совместно использовать код друг с другом, и говорить о различиях между нашим кодом. Так это вроде классная вещь - таким образом, чтобы присоединиться, если вы посетите эту ссылку прямо здесь, в верхнем что я выделил, Вы можете просто ввести в apps.cs50.net/spaces/vqcspSnO. Ладно, для начала, Я собираюсь дать вам немного тура этого. Мы собираемся сделать некоторые глупые кодирование с ним на первый, просто так, что всем становится своего рода почувствовать, что это такое, но то, что я сделал - или то, что я собираюсь сделать прямо здесь - Я собираюсь взять код, который я написал здесь, который, как вы видите прямо сейчас пусто; она ничего не делает. Это просто код плите котла, мы будем называть его. С небольшой список дел комментарий. Я собираюсь сохранить его, нажав эту кнопку Сохранить. И что, что делает это подчеркнул он здесь недолго - что пересмотр сохранить зеленое поле, А теперь, если вы будете искать меня в пространстве, нажатии мое имя, Вы можете видеть, что я получил этот пересмотр прямо здесь, и если вы щелкните по этой ревизии, она будет загрузить код в ваш пространства, тоже. Так уж все загружается код, что в свою пространства? Хорошо, если у вас еще нет, идти вперед и делать то, и то, что я хочу, чтобы вы парни делать в этом мало, чтобы делать-раздел это написать немного использовании Printf о себе, Так, например, я хотел бы написать Е ("Меня зовут Нейт"); а потом я напишу "Я закончил в 2009 году Стэнфордский " и я хотел бы услышать о в каком году вы находитесь в школе, ли вы в колледже или школе бизнеса или другой школы Гарварда, то, что вы изучаете, если она неизвестна; если оно не известно, что это абсолютно здорово. Я не решить, пока я был в конце моего второго года. и тогда я бы также хотел знать ничего сумасшедшего вы хотите сказать мне, или что-то о классе или просто что-нибудь еще. Когда вы закончите писать, что с вашей маленькой Printf, если вы будете экономить пересмотре или, скорее, Сначала убедитесь, что вы можете запустить его и что она выдает именно то, что вы хотите, чтобы распечатать, , а затем, если вы идете дальше и сохранить эту ревизию с помощью кнопки Save Редакция, это первый маленький парень здесь, и мы любопытное пройти и сделать небольшое введение так. Поэтому вы должны достаточно лишь нажать кнопку воспроизведения, который здесь, на левом верхнем углу, так что эта кнопка Play в левом верхнем углу будет Написать код от нашего сервера, на котором он будет составлен, а затем запустить. Так что же любопытное ума от этого Этот код на самом деле не работает на Вашем компьютере; это на самом деле направляются через Интернет. Как дела, Шарлотта? >> Я - нормально. I'm - Я думаю, что я с трудностями сохранения на сервере так, что он может - я могу запустить программу. А потом, когда я пытаюсь запустить его, он говорит, что нет ошибки. Заявленный как вирус, который не находится в там больше. Ну, давайте посмотрим, можете ли вы ударить Сохранить снова? Я вижу его на экране. >> Право, хорошо, так это то, что у меня есть. И я не знаю, почему она не дает мне запустить его. Ну, ладно, прости. Можете ли вы объяснить, почему - то, что было не так - то, что не работает с ним? >> Да, потому что я не видел, что было последней строке, где еще есть переменные что я не объявил, что я не собирался за это время там. Да, отлично! >> Теперь, если я сохранить его, я думаю, он должен работать. Теперь, когда вы сохранили его, он работает; удивительным. Так что да, поскольку мы проходим - Так что же происходит, Я просто хочу повторить это на камеру. Происходящее было, что эта переменная с осталось после - Я предполагаю, что вы удалили некоторые другие вещи где вы объявлена, и таким образом, это было бросать вещи и не позволяя запустить его. Так что это именно то, что мы хотим сделать в разделе это были люди пытаются написания различных частей кода, компиляции, посмотреть, что работает, посмотрим, что нет, , а затем любопытное говорить об этих вещах, потому что эти отключения точек, Я до сих пор сталкиваемся, Я до сих пор - я делаю много глупых вещей все время, и я не знаю, почему он не работает, так что давайте подтянуть пересмотра Шарлотта 3, и мы будем его запуска. Поэтому, когда я бегу, теперь, когда я получила свой код сюда, Я могу увеличить, нажмите кнопку Выполнить, загружает его, строит, управляет им, говорит, что с успехом прошла, и если я прокрутите вниз, см. Шарлотта Адамс младший в доме, психология, вторичный в экономике; удивительным. Великий встретиться с вами! Awesome. Ладно, идем дальше, давайте пойдем к Даниилу, перейти к пересмотру 3, компилировать, запускать; Почему бы вам не рассказать нам немного о себе, Даниил? >> Позвони мне дан. Я иду в бизнес-школу через дорогу от вас, ребята, и я был в морской пехоте, прежде чем здесь, и это все ново для меня, так что да. Не чувствуйте себя плохо, мне 30 и я не знаю ни одной из этих вещей. Высокий, спасибо, Dan! Все в порядке, мы получили другой Даниила. Вы идете Даниэль - вы представить себе, Даниэль? >> Конечно, я Даниил. Я на втором курсе Mather прямо сейчас. Я сосредоточен на правительство, Но я хотел взять CS50, потому что я слышал отличные отзывы о классе и я никогда не пробовал CS раньше. Выделите сюда и показать это - круто. Двигаемся дальше, Джаред. Как дела? >> Хорошо, как вы? Как вы можете видеть, я младший концентратор философии в Элиот, родом из южной Калифорнии, и я заинтересован в принятии CS50 потому что мне нравится логика его, и, кажется, действительно здорово сделать что-то на компьютере, так. Высокий, где в южной Калифорнии вы? >> О часе езды от [неразборчиво], небольшом городе [неразборчиво]. О, да, мой отец из Redlands. Прикольных вещей. Ладно, Джимми, как дела, Джимми? >> Хорошо, как вы? Делая очень хорошо! Расскажите нам о себе. >> Я новичок, и я не совсем уверен, что я по специальности но я своего рода склоняется к экономике. Как Daniel до меня, я никогда не делал никаких CS, но звучит круто. Я родом из Чикаго. Awesome. Так проверьте его распечатки здесь. Я хотел спросить, сделали это печать, как вы ожидали? >> Нет, я забыл распечатать новую строку. Я на самом деле забыл, что, когда я писал свое дело в первый раз, тоже. Это своего рода боль, чтобы не забудьте положить эти вручную. Было бы неплохо, если бы он просто знаю, что то, что Вы хотели. Хорошо, Келли. Ничего себе, у нас есть 2 Kellys, 2 Daniels, 2 Kellys. Так Kelly - вы идете Келли Ren? Хорошо, удивительный. Или Келли, я имею в виду. >> Так что да, поэтому я Келли. Я на втором курсе Pfoho. Я получил электронную почту сегодня, что меня все еще есть 7 недель объявить мою концентрацию, поэтому я стараюсь не думать об этом, и мне нравится выпечка, работает, и Craisins. У меня нет опыта с большинством CS; Я сам научился создавать веб-сайты, когда я был очень молод, Но я думаю, что я, вероятно, научил себя неправильно много раз. Надеюсь, я буду учиться немного больше и - да. Высокий, хорошо, спасибо. Пойдем в другую Келли; Я ничего не имею - ты сказал что-то здесь? >> [Неразборчиво] Там это! Sweet! >> Ладно, так что я Келли. Я первый год аспирант. Я по специальности разума, мозга и образования. Я закончил в Franklin & Marshall College в 2008 году со специализацией в области психологии и социологии и незначительное по-французски. Я беру CS50 потому что я заинтересован в том, чтобы кандидат в неврологии и я чувствую, что это поможет мне понять, используемых технологий. Awesome. Двигаемся дальше, Микаэла. Это правильное произношение? Хорошо, удивительный. >> Я Михаила. Я на втором курсе в Kirkland House, и я сосредоточен в области машиностроения. Мне очень нравится езда на велосипеде, построенный на велосипеде летом этого года. Я беру CS, на самом деле, как концентрация требование, Но вы знаете, я думаю, это еще прохладно рода инженерные класса. Awesome - Вы построили велосипед этим летом? >> Да. Ух ты, как рама и все такое? >> Э-э-hunh (положительный). Ничего себе, это действительно здорово. >> [Неразборчиво кадром чат] [Смех] Да, это было так давно. Вы никогда не знаете, верно? Ну, прохладном, хорошо, спасибо, Михаила. Ладно, Мисси. >> Меня зовут Мисси, я на первом курсе, так, значит, я ничего не знаю! Я хочу сконцентрироваться в астрофизике. В CS50, Я чувствую, что, безусловно, поможет в этом. Странный факт обо мне, я национальном сертифицированный пожарный. Вот это да! Как это случилось? >> Я посетил Академию и прошел через ад для многих недель и получил сертификацию. Ого, поздравляю! Это не маленький подвиг, конечно. Итак, теперь мы будем делать мне. Я следующий в ряду. I'm - запустите его. Так меня зовут Нейт. Я был класс 2009 года в Стэнфорде. Я был символических систем крупных, который похож на разум, мозг, поведение концентрации здесь, но это своего рода смесь информатики, лингвистики, психологии и философии. Вид - Да, много странных вещей, но это было здорово, а потом я сделал магистра в области компьютерных наук там, как хорошо. Так что я новичок в Гарварде в этом году. Я действительно хотел, чтобы попасть в обучении. Я провел последние 4 года в Стэнфордском TA-ING классы информатики и так Дэвидом позвольте мне давай, и я собираюсь быть помочь с CS50, так я делаю это полная, я не в аспирантуру. Это было весело. Надеемся, что она будет продолжать быть весело, и я уверен, что это будет. Все в порядке, Сэм. >> Меня зовут Сэм, я на втором курсе в колледже, в законе конкретно. Моя главная будет история науки, наверное, и VES вторичные, и мой любимый цвет желтый. Не нужно судить или что-нибудь, но это хороший цвет! И Стелла. >> Привет, я Стелла, я новичок в серых. Я понятия не имею, что я сосредоточен в ранее, так CS50 была просто какая-то случайная, что интересно. Интересный факт, Джимми был первым другом Гарвардского мой, потому что мы оба из Чикаго. Cool, и грация - который должен быть действительно хорошим, правильно? >> Я думал, [неразборчиво]. О, да. [Неразборчиво / выключения камеры чат] Ладно, я все еще учусь, все еще учусь. Таким образом, у нас есть кое-что еще, что это довольно интересно здесь. Да, мне просто интересно, у вас есть идея, что здесь происходит? Вы знаете, как это интерпретировать? >> Я должен был поставить точку с запятой после каждой строки. Это своего рода боль. Иногда эти точки с запятой может быть реальной боли отследить. Таким образом, получается, что специальной программы мы используем в этом году скомпилировать код C называется Clang, и по этой причине мы начали использовать Clang в этом году - потому что мы не использовали эту программу в прошлом; Мы использовали другой называется GCC, что это действительно популярным - Clang самом деле дает вам сообщения об ошибках, которые имеют смысл. Это один говорит: "ожидается"; "после выражения", и он даже говорит вам, выражения, после чего вам нужна точка с запятой. Так вы ее исправление? >> Да, прямо сейчас. Высокий, дайте мне знать, и мы будем потяните его вверх, и мы будем его запуска. Но да, положив эти точки с запятой в это вид боли. >> Я установил его, так что я думаю, что это должно работать. Awesome - пересмотр 3. Это похоже на это. Ладно, так что теперь, если мы запустим его, там она идет. Прикольных вещей. Хорошо. Так что спасибо за это. Это здорово встретиться с вами, ребята. То, что мы собираемся сделать сейчас, это провести следующий немного своего рода погружение в разделе проблемы , которые приходят от поставленной задачи из этой неделе и мы сделаем все, что для большинства из разделов за оставшуюся часть срока, и тогда мы спасем последние 15, 20 минут или около того говорить о проблеме ставит перед собой , а затем просто любые другие вопросы вы имеете в целом о классе. Тем не менее, то, что мы действительно хотим сделать это было всем участвующим использование пространства материал, бросали в коде, бросая в предложения, и говорить о том, когда такие вещи перерыв или не работают, только потому, что эти вещи, которые Я знаю, я наткнулся на Когда я начал кодирования, и были действительно любопытное разочарование в разы потому что, если это как 2 утра перед проблемой набора объясняется, так что - только для раскрытия, Я не начать программирование, пока я был на втором курсе в колледже. Это была какая-то странная, неизвестная вещь что я услышал, было круто и я также слышал, это может быть реальная боль в приклад если вы пропустили точку с запятой, и это только ошибка сохранения вашей программы от работы и держать вас в спящий режим, так определенно, если у вас есть вопросы, как, что, если у вас есть проблемы, как, что, дайте мне знать, потому что я хочу, чтобы это хороший опыт для вас, ребята. Так что вы, ребята, все загруженные задачу, поставленную еще? Своего рода знаете, где это? Хорошо. Таким образом, мы поедем в cs50.net, потому что я его не имеют на этот счет, подтянуть проблемы наборы, подтянуть проблема набора 2, и мы будем смотреть на стандартное издание Сегодня. Мы будем тянуть до спецификация здесь. Прокрутка вниз. Таким образом, мы собираемся начать смотреть на эту часть вопроса. Разве вы, ребята, смотрели эти шорты еще? Хорошо. Таким образом, есть шорты на петлях, которая осуществляется путем Томми, один из парней голова обучения. Там один на область, Я считаю, сделано еще одно учение парень по имени Дэвид , а затем один на Caesar Cipher также сделал Дэвид. Они довольно прохладно. Разве вы, ребята наблюдали за свои шорты до сих пор? Кстати, как они были? Полезные? Ладно, хорошо знаю. Если это не так, можно сказать и так. Но прежде чем вы это сделаете, вы, ребята посмотрели на эти вопросы на всех? Давайте поговорим об этом немного. Таким образом, мы ввели за последние пару недель В лекции количество различных циклов. Там в цикл, время цикла, а затем сделай то время как цикл, и в лекции, мы много говорили о как эти петли все довольно похожи во многих отношениях и вы можете многое сделать то же самое с какое-то время цикла что вы можете с цикла. Вы просто должны вида использования правильных комбинаций переменных и тому подобное. и так на самом деле реальное различие между всеми петель является то, что Иногда они более полезны использовать их в одно время, чем в другое время. Так, например, в то время как цикл отличается от DO-цикла. Все ли чувствуют, что они имеют хорошие ручки, когда Сделай то время как цикл более полезно или в чем разница? >> Я думаю, что разница сделай то время как цикл работает - я не знаю совсем то, что терминология, но ряд функций внутри цикла. Они автоматически - он делает свою выполняется по крайней мере Перед проверяет состояние, или в то время как цикл будет работать только, когда он постоянно работает - или нет условие удовлетворяется. Да, не в этом смысл? Давайте посмотрим на немного кода. Так что просто повторить вопрос, или ответ, а; Ответ был, что время цикла будет проверять, если условие что вы указали, встретились перед выполнением тела цикла в первый раз, а сделай то время как цикл будет автоматически запускаться тело цикла, Мы называем его - это странно терминологии, но если я когда-нибудь говорил, что не имеет смысла, дайте мне знать - Тело цикла является то, что вещи, которые вы положите между фигурными скобками. И сделай то время как цикл, , что тело получают бежать по меньшей мере один раз, и тогда условие получает проверил перед выполнением каждого последующего времени. Таким образом, на самом деле, Сэм, Вы не возражаете написание простого в то время как петля в пространствах? >> Как вы вроде как сделать новую ...? Я просто удалить все, что вы там. Да, просто снимите ее. >> Ну, я считаю, у меня это - какой из них вы хотите, в то время как, или вы хотите ...? Да, просто в то время как истинные, распечатать что-то. И давайте посмотрим. Александр, я понял, что мы никогда не познакомили вас. >> О, это прекрасно. Вы - можете ли вы код до сделай то время как цикл для нас? >> Да, я попробую. Все в порядке, мы просто тянуть эти на экране, так что вы вроде есть ручка, что различия. Итак, вот что Сэм сделал. У него есть целое число, называемое я что он инициализирован до 17 лет. Затем он говорит, в то время как (INT я = 17) Е ("Меня зовут Сэм."); Так что же происходит, когда мы запустим этот код? Там в ошибке, что же ошибки сказать? Давайте потяните его вверх, и говорить об этом. Произошла ошибка, он говорит. Давайте прокрутки вниз. Таким образом, он дал нам эту ошибку, и она сказала: "Эй, я ожидал выражения". Это своего рода загадочным. Да, именно так - и снова, там будет еще одна маленькая ошибка, что мы будем ловить только в секунду. Но это еще один из тех странные вещи терминологии, так что это Int я = 17 не является выражением. Что, похоже, он делает, это объявив целое число, называемое я и установив его равным до 17 или, скорее, положив 17 в, что называется Int я. И это не имеет смысла В контексте этого цикла. Это не имеет смысла, как мы увидим, в контексте цикла, потому что для этого цикла деклараций начать с, что для внутр равно я что-то и идет дальше. Так же вы - что-то исправить, все в порядке. Вот он идет, удивительный. Так что теперь все выглядит немного иначе. Несколько вещей изменилось. Можете ли вы рассказать нам, что все изменилось? >> Я достал INT, так что нет никакой декларации [неразборчиво], а не назначение. Тот знак равенства, я поставил 2 равные знаки, что означает равные. Awesome. Да, так, что Сэм был так он вынул Int , который был здесь раньше, так что если я просто смотрю на это - это то, что было раньше, он сказал, INT, который был объявить его - таким образом, мы вынули типа. Там в Int, Char, String, короче говоря, Это называется типов. Таким образом, вы вынули типа и ранее, он только одного знака равенства и то, что он сказал, было проблематично об этом было когда у вас есть 1 знак равенства, это оператор присваивания. Это не проверка ли не 2 вещи равны. Это на самом деле установка нечто равное что-то. Мы работаем № 17 в переменную я. Таким образом, чтобы сделать такое сравнение, Вы должны использовать двойные равных, которая является своеобразной странные вещи но это довольно распространенная ошибка. Таким образом, еще одна вещь, которую я укажу, если вы не возражаете, является то, что в наша функция здесь, в Int основной, Вы видите, что тело наше функции смещен с левой стороны на 4 пробела или табуляции. Поэтому мы делаем это только для чтения. Как вы можете видеть, в то время как цикл Сэма здесь, он не отступ на всех, и это не влияет на функциональность кода. Он будет работать точно так же. Так, например, если мы придем к верхней здесь и нажать кнопку воспроизведения наш, он будет строить, она будет запустить его, и то, что произойдет? Почему он до сих пор говорят работаете? >> Потому что он будет повторять привет. Именно так, и почему это повторять привет? >> Потому что целое никогда не меняется, так что всегда 17. Да, точно, так Давайте посмотрим, после - напоминают мне тебя зовут? Джимми. Так Джимми сказал, что Причина этого не устает повторять, привет снова и снова потому, что это условие всегда истинно. Мы никогда не изменить значение я. Мы никогда не изменять содержание того, что хранится в этой переменной. Таким образом, на данный момент мы получили эту ошибку, Ваша программа генерируется слишком много выходных, и если мы прокрутите вниз и вид взгляда на то, что здесь происходит, Вы можете видеть, что это привет, привет, привет, привет, привет, привет, привет все путем. Awesome. Так вида вернуться к исходной точке что наличие отступов здесь в теле в то время как цикл не влияет. Программа по-прежнему бежал очень хорошо. Как правило, для хорошего стиля - и это то, что мы ищем в вашем множества проблем - мы просим вас отступ этом на 4 пространств, которые вы можете сделать , просто нажав клавишу табуляции или вручную положить в 4 пробела себя. Cool, нормально так давайте вернемся и посмотрим на Александр делать-то время. >> Просто своего рода небольшие проблемы. Хорошо, ну давайте работать через него. Разве это круто? >> Да. Итак, здесь мы идем. Это код, который написал Александр. Вы идете Алекс - нормально. Так вот код, что Алекс написал. Итак, мы получили нашу декларацию основных прав здесь, а потом мы получили это число переменной я были объявлены прямо здесь. У нас есть сделай заявление , а затем тело снова с этими скобками, так что это тело DO-а - Позвольте мне приблизить это так, это более удобным для чтения - и в теле, мы пытаемся печатать "это тело", я + +, таким образом увеличить содержание я и сделать это пока я не добирается, чтобы быть 3, и тогда наша программа заканчивается. Так что же происходит, когда мы запустим эту программу? >> Я ожидал идентификатор. Итак, создавать, запускать, ошибка. Что происходит? Мы прокрутите вниз здесь, Мы получим это несколько загадочно глядя вещь, Ожидается запятой после верхнего уровня декларацию. Это своего рода странным. Кто-нибудь есть идея, что может быть дело? Своего рода странно, да. >> [Неразборчиво] быть объявлены вне скобок? Так что это не применяется тогда, когда вы используете скобки? Так он заявил, что этот парень, вне которого скобки? Ох, уж эти парни - фигурные скобки? >> Да. Да, именно так. Таким образом, получается, что Вы не можете фактически объявить переменную прямо здесь, как это. Что вы могли бы пытались сделать, - сократить его оттуда - Вы можете положить его в фигурные скобки здесь или другая альтернатива это поставить его полностью снаружи. И вот эти - в зависимости от того, где вы на самом деле положил заявление этой целой переменной, Вы можете получить 2 очень разных видов переменных; когда он находится вне основного, это то, что мы называем глобальной переменной. Это выходит за рамки любой из функций - это не в пределах функции - а если положить его внутрь главного, хотелось прямо здесь, то это называется локальной переменной, потому что это локальные рамки основной. И мы поговорим немного о том, что различия между 2 типами и почему вы используете различные виды переменных, но сейчас, Вы можете просто сохранить все локальные переменные, потому что у нас нет никакой необходимости для глобальных переменных. Итак, это одно дело прямо там. Давайте попробуем запустить этот раз, посмотреть, что происходит. Выполнить, получить другую ошибку. Увеличить немного, что мы получаем? Мы получаем эту ожидается скобках после сделать / время. Любые идеи, что происходит? Дэн? >> Есть время, то скобку, а затем - Я не знаю, если вам нужно переопределить INT, но сделать в то время (я <3). Точно, да. Вот и получается, что Дэн Совершенно верно. Нам не нужно, чтобы поставить этот тип здесь снова. Мы можем вместо этого убил типа и просто сделать это. Хорошо. Я масштаб, попробуйте его еще раз. Посмотрите на это, она работает успешно. Если мы прокрутить вниз, "это тело" распечатал 3 раза. Это очень сладкий. Молодцы, молодцы, ребята. Молодцы. Как это происходит до сих пор? Достойный темп? Хорошо, прохладно. Так что, как мы отчасти вернуться к первоначальному вопросу, Мы - и теперь, если мы видим разницу, Вы видите, что в этом сделай то время как цикл, Условие приходит последним. Так как компьютер считывает программу С C программы выполняются вид в этом последовательном порядке, где они в буквальном смысле начать с первой линии главного, , а затем выполнить линию 6, строка 7, строка 8, строка 9, строка 10, строка 11, все эти вещи в правом верхнем здесь собирается выполнить один раз прежде, чем мы когда-либо проверить это условие, чтобы увидеть я или нет - или содержимого я, скорее - меньше, чем число 3. И только тогда, когда мы получим на линии 12, Содержание я менее 3 мы на самом деле вернуться назад к линии 7 , а затем повторить процесс, , а затем мы проверяем состояние снова и снова и снова. Так что мы можем противопоставить этому с - масштабирование обратно, прокрутите вниз до версии Сэма, мы будем смотреть на это, немного изменен так, что это уже не бесконечный цикл - где, если мы увеличить, мы видим, что эта программа выполняется, она собирается сначала объявить Int я, установить содержание я бы 0, а затем он попадает в состояние в то время как петля первого, поэтому в данном случае, это тело, этот Е ("привет") и я + + даже не будет выполнять если я на самом деле меньше или равно 2. Так что, если я 3, например, если мы положим этому прямо здесь равна 4 - или я сделаю 3, потому что я сказал 3 - , а затем запустить его, он будет строить, она будет работать в полном порядке, но он не будет на самом деле распечатать что-либо, потому что не смогла это испытание для первого случая. Таким образом, в классе, мы как-то говорили о том, почему эти сделай то время как петли это иногда полезно и почему мы должны использовать его, в отличие от цикла. Есть - вы, ребята, есть какие-либо предложения , почему сделай то время как цикл может быть более полезным? >> Ну, я думаю, что делать, в то время как петли, если вы хотите пользовательского ввода, потому что таким образом вы можете позволить им положить что-то в один раз, если это правильно, мы можем перейти к остальной части программы, Но если это не правильно, то вы продолжаете запроса пользователя пока вы не положите правую вход. Да, точно - точно, так делают, в то время как цикл полезен потому что, когда запросы на ввод данных пользователем потому что вы должны получить ввод пользователя, прежде чем вы действительно можете это проверить. Таким образом, в PSET 1, в PSET 2, где вы запроса на ввод данных пользователем много, это удобная вещь, чтобы использовать в отличие от простой цикл время. Если вы используете какое-то время цикла, вы можете сделать то же самое - Вы можете сделать то же самое с какое-то время цикла как вы делаете с DO-цикла. Вы просто должны иметь вид этого дубликата процесса где вы получите вход, а затем начать свой цикл. Принимая во внимание, сделай то время как цикл, вы просто должны написать его один раз и это намного чище. Хорошо. Есть вопросы? Смысл? >> Возвращение 0 - это просто вид кабины или это -? Да, так что мы можем - Ну, мы рассмотрим это немного более позднее но оказывается, что это возвращение 0, положим В конце основного все время - Вы можете любопытное просто принять это как то, что мы делаем в настоящее время. То, что мы начали говорить с функциями вид в конце прошлой недели, а затем снова на этой неделе является то, что функция имеет входы, которые эти вещи в скобках; эти 2 входа, наши аргументы или параметры, что они также называются к нашей основной функции, , а затем функция формирует выходной , который мы называем возвращаемого значения. И возвращаемого значения в случае главное, это INT, это число, и то, как вы говорите функции: "Эй, это то, что ваши выходные будет "С этим словом« возвращение », это ключевое слово, скорее, и поэтому основная возвращается 0 или главный вывод 0 является стандартным для программ C потому что возвращение 0 из основных средств, что "Эй, все выполнено с моей программой просто отлично." Если бы мы могли поставить что-то отличное от 0, как 1, например, который используется, чтобы сообщить, кто запустил эту программу , что что-то пошло не так. Так как мы получаем более сложный с вещами в течение семестра, если вы когда-либо нуждается сказать, "Ой, вы знаете, что-то пошло не так с этой программой", вместо того, чтобы моя программа аварии, я хочу предупредить бегун из моей программы, что что-то пошло не так, Вы можете использовать возвращаемое значение, как мы его называем, это не 0. Таким образом, мы расскажем, что немного больше Как только мы попадаем в функциях. Такого рода имеет смысл? Хорошо. Функции являются своего рода странным - Я думаю, что для людей, которые имеют много математики фона, речь идет немного легче, Особенно если у вас есть немного более абстрактным математическим образованием и вы привыкли говорить о функциях и все в таком же роде. Но мы постараемся охватить их и идти красиво и медленно, как они приходят. Кроме того, весь этот агдс INT, символ * ARGV [], для прямо сейчас, Вы также можете принять это как плите котла. Мы начали охватывать тех, кто немного в лекции когда мы говорим о аргументов, которые получают перешла в программах командной строки, но в вашей проблеме множеств и ваших программ, это совершенно нормально только писать недействительным и держать его проста. И то, что эта пустота означает, что "Эй, основной не собирается принимать никаких входов; это всего лишь программа, которую мы собираемся просто запустить. Мы не собираемся дать ему любую дополнительную информацию каждый раз, когда мы начинаем его выполнении ». Таким образом, на данный момент, вы можете сделать это; Вы также можете даже опустить возврат 0 В конце вашей программы, и они будут работать нормально, но я рекомендую просто держать, что дюйм Через пару недель мы начнем вид потяните крышку немного и понять больше о все эти разные мало движущихся частей. Хорошо, теперь давайте поговорим о нашей второй вопрос. Итак, что же "необъявленный идентификатор" обычно указывают на если выдаваемых Clang? Я думаю, что мы, возможно, видели, что уже сегодня. Может кто-нибудь дать резюме, что это значит? Давайте посмотрим, Келли - один из Kellys. >> Так что - Да, то, что делает - >> Я думаю, когда вы, например, не объявить переменные, и вы пытаетесь использовать его. Да, точно, точно. Так что если вы когда-нибудь видели этот выход когда вы пытаетесь скомпилировать программу, как сказал Келли, это означает, что вы использовали переменную, что вы не заявляем, так что если я вернусь в наше пространство, и я делаю что-то вроде Е ( "Привет% S") и попытаться заполнить этот% с с переменным том, что я не заявили о любом и я стараюсь, чтобы запустить его, Вы увидите, что я спускаюсь в этой правом нижнем здесь: "Использование необъявленный идентификатор 'S'"; это просто означает, что вы не объявите переменную. То же самое происходит, если у вас есть х, и вы пытаетесь и хранить 7 в это и я не заявляю X. Я понимаю, что же ошибку: "Использование" х "необъявленный идентификатор". Все в порядке, так шифр Цезаря, не будучи очень надежной, Я сообщу вам, ребята смотреть этот короткий, вроде понимаю, почему, и, надеюсь, после выполнения задачи на этой неделе установлены где вы на самом деле писать шифр Цезаря, вы поймете, немного больше о том, что значит быть безопасным и небезопасным - или не безопасно, я думаю, - небезопасный немного отличается. Другая вещь была у нас есть эти другие вопросы здесь О функциях и то, что функции, и мы как-то говорили о том, что некоторое время, когда мы говорили о возвращении ценностей; для кого-то, кто был на лекции, Вы можете резюмировать, кто был читать лекцию на сегодняшний день? Хорошо. Давайте посмотрим, давайте - может кто-нибудь сказать нам, какие функции? Келли? >> Основном то, что вы опираться на то, что написано в библиотеке, что это более сложная там, а затем вы просто написать короткую форму его, так как вы имеете в виду, что обратно в библиотеку, используя все, что длинный код и [неразборчиво]. Да, точно, а затем вы хотите что-то добавить к этому? >> Да, я думаю о нем, как похоже на понятие формулы по математике где вы просто написать формулу, а затем вы можете подключить переменных в и вот что функция [неразборчиво]. Да, таким образом, мы получили несколько ответов здесь , которые одновременно являются действительно хорошим и правильным на. Там имеет в виду код, который был записан в библиотеку где-то , что является более сложной а затем вы можете опираться на этот код и фактически использовать его, просто пишу краткой форме это - или, скорее, ее название - и тогда есть также это сравнение с формулой в математике или физике, все в таком же роде где у вас есть формула а затем вы можете подключить переменных, что формула , чтобы затем получить результат формулы, так что вы думаете о нем, как как квадратное уравнение. Представьте, если бы вместо того, чтобы узнать о что квадратичная формула в математическом классе, Вы просто была маленькая программа калькулятор, который сделал это за вас. Кто-нибудь использовании калькулятор программы в математические классы в средней школе? Да, физика классов? Где вы можете просто сказать: "Эй, квадратичной формулы. Эти переменные, которые я хочу входа. Теперь дайте мне ответ ". Это вроде того, что функция. Это способ для нас вид записи, как маленькие подпрограммы в пределах нашей большой программы и использовать его снова и снова так что мы не должны скопировать и вставить код, мы можем дать ему различные входы и получить различные выходы, это супер удобно когда вы пытаетесь писать различные программы в разное время. Так, например, функции, которые мы используем снова и снова и снова на протяжении всего курса является Printf. Printf само по себе является функцией и оказывается, что на самом деле это довольно долгий и сложный, противный взгляд, функцию записи. Так же просто, как нам кажется, печатать вещи из на экран, потому что все мы только что сделали, что в начале раздела сегодня, Оказывается, что это на самом деле, вы знаете, хорошая пара сотен строк кода. Это не то, что я никогда не хочу писать, конечно, но мы получаем, чтобы использовать его каждый день, это круто, таким образом, мы получим поделиться друг с другом, с различными программами, так что мы будем дайвинга больше в функции; на данный момент, мы не - Единственная функция, мы собираемся писать является основной. Главное сама по себе также функции, и вы можете видеть он получил свою продукцию, его входов, как мы говорили, и затем его имя, которое является основным. Главное это своего рода - это особая функция есть. В программе C, там должен быть основной функцией, и поэтому сейчас, у нас вроде опущены письменной прототип, или декларация, основной. Мы, учитывая, что для вас, и мы только что бы вы заполните в виде заготовок. >> Так что для второго набора проблемы, мы не должны написать его во второй функции? Я не верю в это. Я считаю, что все здесь. Да, так Caesar Cipher, Вам не нужно, это не похоже, и Vigenere, вы не знаете как, так - и оказывается, что вы никогда не на самом деле нужно написать Функция, правильно? Вы называете всегда ставить весь свой код в главном, и многие программисты делают это. Как мы двигаться дальше, мы начинаем внедрение функций в качестве способа , чтобы очистить ваш код, чтобы сделать его более элегантным, в случае, если у вас есть задачи - вроде как когда мы говорили о петлях, как иногда есть вещи, которые вы хотите сделать снова и снова, и снова, и у вас есть вид наивный способ - или то, что мы часто называем «соломенное чучело» решения, это просто скопируйте и вставьте снова и снова - Вы можете сделать то же самое с функциями, где вы просто скопировать и вставить тот же код снова и снова, но раздувает код - он заканчивает делает код очень долго - и это также становится немного запутанным, и это означает, что вы не в состоянии любить - если вы хотите использовать этот код еще раз в другой программе, Вы также застрял копирование и вставка его снова, так что одна из вещей, мы будем говорить о том, вид дизайна и стиля вашей программы, и поэтому, когда имеет смысл вид Пакет что-то и положил его в качестве отдельной функции, Мы рекомендуем вам сделать это, и это то, что, опять же, нет жестких правил. Мы редко говорим, что вы должны написать функцию с именем этого но это скорее одна из тех вещей, которые вы только что с течением времени как вы пишете больше и больше программ. Есть еще вопросы? Итак, давайте теперь Вернуться к этому парню прямо здесь, так что я еще в этом разделе вопросов. Мы говорили обо всех этих разных, что функция, поэтому писать функции, когда вы можете просто скопировать и вставить? Надеюсь, мы убедили вас, что написание функций является хорошей вещью. Итак, теперь давайте перейдем к этой программе MySpace, и мы будем потратить немного времени делать это. Итак, давайте посмотрим, может я кого-то читать это для меня? Давайте Михаила - вы будете читать это для нас? >> Ты имеешь в виду назад, когда MySpace - Назад, когда MySpace было прохладно. >> "Назад, когда MySpace была прохладной, он был в моде, чтобы тип вроде этого. Может быть, еще есть? Я не совсем уверен. В любом случае, используя CS50 Appliance, CS50 Run, или CS50 пространства, написать программу, которая запрашивает у пользователя сообщение и затем выводит сообщение с первой буквой, со всеми другими буквами в переменном случае, в соответствии с образцом выхода ниже, где жирными текст представляет собой вход некоторых пользователей. Для простоты можно считать, что пользователь будет только вход строчные буквы и пробелы. Рассмотрим эту проблему возможность на практике; Вам не будет предложено представить эту программу ". Awesome, спасибо. Так как Михаила сказали, Мы собираемся написать программу, которая MySpaces код. Так же любой из вас, ребята используют MySpace? Любой из вас MySpace счета? Ах, да, да! Это было довольно прохладно. [Смех] Я знаю. Знакомства себя. Итак, что мы пытаемся сделать, это написать программу , которая проходит через и капитализирует первые буквы , а затем каждую букву после этого - или любого другого письма после этого, мне очень жаль. Так что - и вы можете видеть в данном примере, это то, как мы запустили программу, и так это просто говорит: "Мы работает программа под названием a.out. Вход, который мы собираемся придав ему это будет предложено. Мы не собираемся поставлять входа в командной строке ". Если вы следили все лекции и слух о аргументов командной строки, это отчасти от того, где те - что напуганные синтаксиса на главной приходит с внутр агдс, все эти вещи, так что здесь мы не используем, что, мы имеем дело не с любым из этого. Мы просто собираюсь получить эту типизированных в пользователем, и тогда эта вторая линия с фанки капитализации то, что мы хотим, чтобы наши программы на выход. Таким образом, вместо использования прибора или Run, мы будем использовать пробелы, потому что у нас пространствах, и поэтому, если бы вы, ребята, получить код, чтобы выглядеть так, так что я собираюсь сохранить этот пересмотр просто так у тебя на плите котла прямо здесь , что выглядит так, Int основных (недействительными), ничего в ней. На самом деле, то, что мы будем делать это мы будем просто удалить все, все вместе. Мы хотим чистого листа, потому что мы не собираемся приступить к написанию кода; Скорее всего, мы будем стараться писать некоторые псевдокод который на самом деле просто означает, что мы собираемся написать то, что не код такой описывает то, что мы хотим сделать, вроде как сделал Давид, в первый день лекций, или я предполагаю, что это был второй день лекции, когда он сделал все демо носки. Вы, ребята, помните, что - видя носки? Иосиф был там вид набрав на английском языке? Так что мы собираемся сделать то же самое. Так что, когда я начинаю писать псевдокод, Я хотел бы начать, глядя на то, что вход будет. И я даю себе образца случае, так как "спасибо за дополнения!" А потом я также пишу, что я хочу быть выход, который в данном случае что-то вроде этого. И такая дает мне хороший, как, начиная с места, чтобы думать, "Хорошо, я хочу взять линию 1 и я хочу, чтобы превратить его в строке 2 " и такого рода помогает направлять мое мышление. Это хорошее место для начала. Другой способ думать об этом, тоже, как мы любопытное двигаться дальше и как вы делаете это в ваших собственных программ, заключается в думать о вроде как, каковы крайние случаи на это? Какие виды странные сценарии? Какие странные материалы, которые мы могли бы получить? А что, если эти выходы выглядеть? Например, один странный вход бы этого, создание абсолютно ничего, как то, что мы должны выводить в таком случае? То, что мы хотим, чтобы думать, тоже. Так же, как вопрос, что может мы хотим выход? Если мы не получим любого входа на все, что должно быть нашей программы вывода? >> Ничего. Ничего? Звучит неплохо. Таким образом, мы хотим убедиться, что мы не пишем ничего из если мы ничего не получаем дюйма Cool. Хорошо. Так Я собираюсь позвонить на пару людей, как мы проходим и просто выяснить, вроде как, что общий алгоритм и мы будем рода начать работать через это вместе. Итак, давайте посмотрим. Мисси. Как вы думаете, мы бы начать? Что бы быть хорошим местом, чтобы начать здесь если мы хотим преобразовать, скажем, линия 1 в строке 2? Можете ли вы как-то просто объясните мне, на английском языке, о чем ты думаешь? Даже не беспокоиться о коде. >> Первая вещь, которую я хотел бы сделать, вид прямых пользователей, чтобы сказать им, что вы хотите. Хорошо, так, скажем, "Эй, пользователь. Хочу Строка "- удивительный. Так что давайте это записать. Подскажите у пользователя строку. Это звучит, как хороший старт. Хорошо. Давайте спросим у Келли Ren это время. Что бы мы тогда хотим делать дальше? Что вроде нашего следующего - >> Соберите свой вклад и хранить его в качестве переменной. Великий. Так что собирать строки, хранить его в переменной. Так есть ничего особенного, мы хотим сделать здесь? Хотим ли мы, чтобы проверить их вклад раньше -? >> Да. Что может мы хотим, чтобы проверить? >> Ну, вы сказали, что мы не должны проверить, если он рядом, верно? Потому что будем считать, что это строчная? Да. Вот и получается, что - да. Так GetString гарантированно возвращает нам строку. Он не собирается возвращать число к нам или что-нибудь подобное. Там могут быть цифры символов в этой строке, однако. И те, можно пренебречь, как мы делали капитализации. Но пустая строка совершенно нормально, так что дело здесь, на линии 4 и 5, Право, где нет входа, и мы ничего не положил, как наш выход. Мы не должны беспокоиться о том, чтобы убедиться, что есть что-то в строку или что строки не менее 4 символов; все в порядке. Так что это контрастирует, например, с подобными программами гроши, что вы написали где вы должны были убедиться, что вы получаете неотрицательных чисел; Вы должны были убедиться, что вы получаете правильное количество дней в месяце. А как вы, ребята, делаете? Как бы вы это сделать тест? Что это требуется использовать? >> Сделай то время как петли. Сделай то время как петли, другие виды петель тоже, да. Таким образом, оказывается, что мы не должны использовать цикл, в данном случае, когда мы запросом строку, которая является отчасти хорошо. Ладно, как двигаться дальше. Таким образом, Стелла. Можете ли Вы рассказать нам немного о том, что мы должны делать дальше? Так что теперь у нас есть строка, что у нас есть оно хранится в переменной; Что мы должны делать со строкой? >> Мы должны - определить 2 - Да, просто сказать, что это на английском языке, что является удивительным. Определить >> [неразборчиво] столиц - или, в верхнем регистре. Да, так что вам определить, какие из них являются прописными и строчными буквами. Мы не можем верхний или нижний регистр них, пока мы определили, какие именно. Таким образом, мы положим, что в здесь. Так что, просто думая об этом процессе, как мы делаем это отождествление? Знаете ли вы, Дэн? Вид того, что мы - то, что инструмент, который мы должны были бы использовать из наших инструментов? >> Я бы поставил его в чем-то, как в массиве или каждую линию является его собственной маленькой коробке, , а затем верхний его оттуда или нет. Итак, один инструмент, мы можем использовать массив. Что мы должны смотреть на в строке, хотя, чтобы выяснить - у нас было смотреть на символы. >> Так что у вас есть, чтобы посмотреть на длину строки? Да, таким образом, часть, которая становится длину строки. Просто из любопытства, что же мы используем, чтобы получить длину строки? >> StrLen? Да, StrLen, мы называем это "StrLen" Все эти строки функции, так StrLen является функцией, и это супер удобно, потому что мы можем использовать его, чтобы просто сказать: Эй, StrLen: Вот строки, скажите мне, как долго это. В сегодняшней лекции, Дэвид много говорили о том, как StrLen будет реализован, что на самом деле происходит за кулисами. Но это одна из самых супер удобная них. Есть другие, которые также находятся в строке библиотеку, таких как STRCMP, которая пишется "STRCMP», который используется для сравнения строк друг с другом. Другой те, которые вы будете использовать, как strstr, и это хорошо для нахождения под струны и так далее. По большей части, все они начинаются с ул а затем идти дальше быть что-то еще. Поэтому они на самом деле не записать их как строки и т. д. Потому как еще в первые дни C, когда люди впервые были письменно и все такое, у них были ограничения на количество символов, которые можно использовать для имен функций и переменных имена, таким образом, все, как супер конденсированных. Но в любое время вы видите то, что начинается с ул Обычно это означает, что это имеет какое-то отношение к строке. Итак, у вас есть, чтобы получить длину строки, а затем, что мы будем делать с героями? Знаете ли вы, Сэм? >> Я понятия не имею, я пытался выяснить это. Я действительно не знаю, - я хотел было каким-то образом - Я имею в виду, я думаю, может быть, мы могли бы сделать что-то с четные и нечетные, Но я не знаю ни одной функции, как, что. Да. >> Но что - это не обязательно будет работать, потому что тогда вы получите пространство, чтобы быть - Вы должны были бы иметь место, чтобы получить советы о том, как - Хорошо. >> Я не знаю - я бы потерял в этой точке. Да - нет, нет, нет, это хорошие очки. Итак, что мы должны сделать, это, как сказал Сэм, мы должны отслеживать, какие письма являются нечетными буквами, и какие из них даже буквы. Но мы хотим убедиться, что мы не просто ищет на четные и нечетные Индексы в строку, а глядя на четных и нечетных букв в строке, поэтому мы должны иметь своего рода это различие между букв - как то, что на самом деле A, B, C, D, или так далее, и то, что вещи не являются буквами, но по-прежнему в наших строку. Например, здесь, как это восклицательный знак не является буквой, но это все еще часть нашей строк, это по-прежнему символ. Кроме того, все эти пространства - это не имеет смысла для своей выгоды пространстве, не так ли? Таким образом, мы хотим убедиться, что мы каким-то образом пропустить те, в то же время отслеживания четные и нечетные. Так вроде в нашем программирования инструментов до сих пор, если хотите, у нас есть целый ряд различных инструментов, которые мы уже обсуждали. Так что, например, являются переменными, как мы уже говорили здесь. Другим инструментом, мы говорили о функции. Итак, мы говорили о переменных в нашем псевдокоде здесь как то, что мы собираемся использовать для хранения нашу строку. Мы говорили о функциях, чтобы получить длину строки, как StrLen. Мы говорили о чем-то другом, и мы говорили об этом на много выше в разделе Сегодня: петли. Что вы, ребята, думаете об использовании петли в этой программе? Джаред, что ты думаешь? Будем ли мы использовать цикл в этой программе? >> Наверное, нет, нет, потому что вам не придется пройти через это несколько раз. Ладно, вы не должны пройти через то, что более одного раза? >> Всю строку. Право, так что вам не придется пройти через всю строку сразу. Извините, что имело абсолютно никакого смысла! Вам не придется пройти через всю строку несколько раз. Хорошо. Что вы думаете? >> Я думаю, что лучше их использовать так что мы можем сделать, как капитализировать в то время как расположение это [неразборчиво] числа. Великий, и поэтому выгоды и что? Итак, мы говорим, что Мы должны использовать цикл, потому что мы хотим заглавной буквы, хотя это не число. Так что - извините, вы хотите добавить? >> Я хочу сказать, что, как вы относитесь строкой и это [неразборчиво] отдельные [неразборчиво] на символы? Да. >> И тогда мы можем присвоить номера - или на основе расположения букв в строке? Да. >> А определить, является ли это четное или нечетное и воспользоваться само письмо в то время как расположение письмо [неразборчиво] - извините. Великий. Так что резюме. Можете ли вы напоминаете мне вашего имени еще раз - простите. >> Шарлотта. Шарлотта, все в порядке. Так что Шарлотта говорит: который полностью правы - боже, это любит авто отступ на меня - является то, что если мы посмотрим на строку таких как этот вверху - "Спасибо за дополнения", - в виде последовательности символов где находится в положении 0, ч находится в положении 1. А на 2, то мы получили 3, 4, 5; пространство находится в положении 6. Принимая во внимание, - то, что позиция е? 7! O? 8. R? 9. И тогда у нас 10, а затем я не могу писать без него своего рода получение грязно на экране. Но это на самом деле, как мы можем говорить о строках в памяти. Это строки представляет собой последовательность символов, и когда мы говорим об отдельных символов в строке, Мы часто делают это, ссылаясь на позицию, что персонаж в строке, Вероятно, так же, как мы говорим о сентябре девятый месяц года или в понедельник как первый день недели. Таким образом, это дает нам возможность выяснить, какие из них являются нечетными даже по сравнению с потому что вы можете увидеть здесь, если мы сопоставляем его с этой T, Вы можете видеть, что все те, капитализированные находятся на четных позициях, по крайней мере, первое слово, а потом все становится сбросил раз мы попали, что пространство, потому что мы не считаем это пространство как письмо, так что это как если бы мы начали и пошли 0, 1, 2, 3, 4, 5, пространстве, 6, 7, 8, пространство, 9, а затем 10, 11, 12, и так далее. Cool, так что мы определенно хотим использовать какой-то цикл перейти на каждого из персонажей по очереди. Таким образом, на данный момент, мы вернемся к нашему старому псевдокод здесь. В рамках этого определения, какие из них в верхнем регистре, а какие строчными буквами, мы хотим сделать это в какой-то цикл. Loop, толстой кишки. Какие петли, из видов петель, которые у нас есть, кажется хорошим, чтобы использовать в этом случае? >> Я думал цикла. А почему вы думаете для цикла? >> Потому что он начинается с нуля, а затем когда мы достигаем длины строки, , а затем каждой итерации можно [неразборчиво], тоже? Да, именно так. Так, из различных вариантов петель, у нас есть для петель, а петли, и делать-то время петель. Где цикла особенно полезно когда вы хотите знать, вид, где вы находитесь в цикле, сколько раз цикл был выполнен до сих пор. Какие именно то, что мы хотим знать, в этой ситуации, как сказал Келли, основаны от ранних комментариев Шарлотты, что мы хотим знать положение символа в строке, и цикл даст нам только, что, потому что, если мы начнем вид оглядываясь на нашу строку, если мы начнем наш цикл на 0, и идем вверх по длине всей строки, Затем можно сопоставить букву Т с 0 в наш цикл, Письмо с H 1 в нашем цикл, и так далее, пройдя весь путь до конца строки. Итак, давайте начнем кодирования это просто немного только так вы, ребята, почувствовать, на что это похоже. Я собираюсь сохранить, таким образом, мы получили наши псевдо-код здесь, и я хочу удалить все. Так что у меня чистого листа. Я собираюсь начать с написания Int основных (недействительными) { Я собираюсь поставить возвращение 0 в , а затем}. Так что обычно, когда я начинаю программу, это то, что я начинаю с. Я спасу его так, что вы, ребята, есть. Таким образом, одна из первых вещей, о которых мы говорили было получения входных данных от пользователя и хранить его в строку. Как мы можем получить ввод от пользователя? >> GetString. GetString, все в порядке. Так что, если я печатаю GetString () и точка с запятой. Давайте попробуем запустить этот, это будет перспективе, в первую очередь? А почему не будет этого бежать? >> Вы должны объявить переменную. Я должен объявить переменную. Хорошо. Так как я могу это сделать? Вы не возражаете, что-то писал, разделяя его? И тогда мы можем потяните его вверх. Давайте посмотрим, Дэн, право, хорошо. Или Даниил. Скопируйте что в России, строка ввода = GetString (). Awesome. Будет ли это работать? Давайте попробуем. Меткость перспективе, загрузки исходного кода, строительство, произошла ошибка. Хорошо. Так, что здесь происходит? Использование 'строка' необъявленный идентификатор. >> Мы должны включить библиотеки? Да, так что Дэн говорит, что мы должны включать библиотеки. Это то, что вы собираетесь сказать, Стелла? Awesome. Это потрясающе, поэтому Стелла, ты можешь скопируйте код из космического Даниила? Если вы нажмете на Daniel Roland Ги, скопируйте его, и тогда вы сможете поставить включают линейный вход, а затем сохранить его? Дайте мне знать, когда вы будете готовы. Так что этот синтаксис включает также виды фанк; там все равно, что хэш-тег, и там включать, и тогда эти угловые скобки. Вы помните, как это работает, или я должен положить его на этот код прямо здесь? >> Я в порядке. Хорошо. >> Я напечатал его - я не был уверен, какой библиотекой, однако. Ну, ладно - да, так что это CS50 библиотеки. >> О, я положил STDIO библиотеки. Ах, он получил - да, Нет, это - так получается, что строка на самом деле то, что является особенным для CS50. Там на самом деле не является истинным типом строка , потому что именно здесь, строка в тип позиции, - Мы объявлении переменной называется входом типа строка - и мы помещаем внутрь вход значение, которое получает вернулся к нам: выход этого GetString вызова функции. Вы можете сказать, что это вызов функции, потому что у него есть скобки, как Printf делает, как StrLen делает. Но строка на самом деле не настоящая типа В языке Си. Мы сделали это в тип, и мы будем принимать нечто большее, то, что есть на самом деле В C, потому что есть способ работы со строками; мы только что сделали что-то, чтобы он выглядел немного лучше. Таким образом, здесь мы идем. Вот код Стеллы. Она получила # включить . Другие люди будут называть это как хэш иногда включать или резкое включить. Теперь мы можем запустить его, запустить его, и мы все еще получаете сообщение об ошибке. Давайте посмотрим, что происходит. "Неиспользуемые переменные" вход ". Итак, это круто, это круто. Я имею в виду, это не очень здорово, потому что мы получаю сообщение об ошибке, и он не работает, но то, что это говорит, что мы не использовали наши переменной, которая имеет смысл. Мы не пытались ничего сделать с ним. Это так, что Clang пытается помочь нам удостовериться, что мы не только с помощью переменных а потом случайно называя их что-то еще позже в нашем коде, помогает нам избежать ошибок, которые путем. Ладно, у нас есть вход от пользователя, Мы сохранили его в переменную. Следующим шагом было то начать смотреть на все символы в строке и определения, какие из них должны быть заглавными и какие из них должны быть в нижнем регистре. И, как Келли и Шарлотта воспитан, Сделаем это с помощью цикла. Так кто-нибудь помнит синтаксис для цикла и хотели бы принять удар на просто писать Первая строка цикла, только для бит? Келли, ты хочешь попробовать? >> Да, так что вы должны инициализировать первой, так что я положил = 0, а потом сделал я > Да, я облажался немного, но да. Хорошо, давайте потяните его вверх. Awesome. >> Но тогда я не знал, если у вас что - Да, все в порядке. Итак, вот что Келли получил: давайте посмотрим на это быстро. Так что она включена CS50 библиотеке на самом верху. Она включена в стандартную библиотеку ввода-вывода в верхней части, и стандартного ввода-вывода имеет такие функции, как Printf, так что если вы хотите использовать Printf, нужно эту линию. А потом она включена строка библиотеки, которых мы будем нуждаться, потому что строка библиотеке StrLen функции, которые мы получим в только немного. Таким образом, если мы посмотрим на то, что Келли сделал здесь, Вы можете идти с нами через что ты сделал? >> Да, так - я имею в виду, у меня есть ошибки, а значит - Да, Нет, это - >> Так я хотел назвать строка, что я получил только "строка". Я хотел, чтобы распечатать строку а потом - Я хотел бы хотела задать строку как массив каждого символа быть различными [неразборчиво], правильно? И тогда я хотел бы начать в позиции 0 , а затем каждые 2 места, Я собирался воспользоваться, так что я просто описал его как 23, так как я смотрел на ASCII таблицы. Так вот что я думаю - я знаю, что это не так. Понял, так что это отличное начало. Я думаю, что много рамки в место здесь. Давайте рассмотрим виды строка за строкой и посмотреть, что происходит. Таким образом, я хотел бы сделать это только начало скомпилировать код и позволить компилятору скажи мне, как то, что случилось с моим кодом, потому что компилятор действительно хорошо говорю вам, что не так с вашим кодом. Таким образом, если мы играем, строительство, и оно не строить. Она говорит, что была ошибка, поэтому, если мы прокрутите вниз и посмотрите на первую ошибку, он сказал - Мы прокрутить назад до самого верха, мы видим, есть 5 ошибок, возникающих здесь внизу. К сожалению, это действительно отрезали. Я думаю, что просто не получите ничего лучшего. Здесь мы идем. Таким образом, существует всего 5 ошибок, генерируемых. Здесь я вижу только первые 2, так я могу двигаться до этого немного, а затем вид прокрутки вверх. Это команда, которая была запущена для компиляции кода, , а затем первая ошибка была в file.c прямо здесь: "Ожидается определить или '('", и именно на этой линии где мы сказали String = GetString (). Вы можете посмотреть прямо здесь, что это было на строку 8 file.c, и тогда я считаю, что это символ 12 - это ошибка. Так что же происходит неправильно в строке 8 - Келли? >> Вам просто нужно называть это, вроде бы, письмо или что-то, как строка с или что-то? Да, так получается, что эти специальные имена типа, так что строка, Int, Char, короткие, они все специальные ключевые слова, и вы не можете использовать их как имена ваших переменных, потому что компилятор смотрит на это и говорит: "О, я знаю, что это типа" поэтому вы не можете на самом деле есть строка переменной строки, как я пытаюсь делать здесь, это не будет работать. Но вместо этого, мы можем назвать это что-то вроде с и й или ул. Мы также не могли бы назвать это Int. Мы не можем есть строка называется Int. Мы не можем есть строка называется символ, и никто из тех, кто будет работать. Так что мы просто называем это с в настоящее время. Awesome. Так что же дальше происходит в этой строке? String - эта линия выглядит довольно хорошо? Давайте дадим ему еще один шанс, давайте запустить его. Итак, мы по-прежнему получаю ошибки. На этот раз, мы до 4 ошибки. Таким образом, мы получили одну из них. Давайте двигаться вверх. "Неожиданный имя типа 'строка': ожидается выражение" да? >> Да, это потому, что я попытался назвать строку. Да, так что, похоже, мы теперь должны идти исправление Все эти ссылки на строки. Вы можете видеть, что есть ссылка на строку, по одному, по одному здесь, так что мы можем переместить все эти в с. Великий. Хорошо, запустите его снова. Строительство - другая ошибка. Хорошо, теперь мы до одной ошибки, так Int I = S, а затем в квадратных скобках. Таким образом, вы можете рассказать нам немного о том, что вы делаете здесь, Келли? >> Да. Это было на линии 10. >> Я не знаю, если мы нуждались в нем все, Но я думаю, что я пытался - Я спасу его, чтобы вы могли следить вместе. >> Я думаю, что я был пытался сказать ему, чтобы начать в положение 0 В начале моего цикла, так что я думаю, может быть, говорил, было ненужным. Так просто Напомним, что Вы говорили, что это - Вы пытались начать это в позиции 0 и получить это - да, поэтому я думаю, раньше, тоже, когда вы шли через код, Вы говорили о том, как вы хотели лечить строку как массив так что мы можем получить доступ каждого персонажа в отдельности. Я думаю, что Дэн упомянутых массивов, тоже пытается преобразовать строки в массивы. Оказывается, что вид под капотом, Строка на самом деле хранится в виде массива уже, и вы можете обращаться к нему как массив; нет преобразования, которые вы должны сделать. Строка разве - так - Строка на самом деле не массив, но Вы можете получить доступ к нему как такового, поскольку все символы хранятся один прямо рядом друг с другом в памяти, так что если вы хотите, чтобы получить первый символ строки, это то же самое, как получить первое число в массив целых чисел. Таким образом, мы часто - МЫ относятся к 2, как ой, как строку, как массив, хотя на самом деле - они очень разные вещи, но вы можете относиться к ним очень то же самое. Вот и получается, что эта линия на самом деле - нам не нужно делать какие-либо преобразования, и в самом деле, это на самом деле не является допустимым выражением, что и наш компилятор говорит нам. Он говорит: "Эй, это ожидалось выражение, и что я получил здесь является то, что это не слова ". Чтобы объявить массив, Все, что вам нужно сделать, это что-то вроде этого с запятой, а затем вы говорите массива, как долго вы хотите, чтобы он, такие как 5, так что эта линия 10 будет объявить массив называется я с 5 чисел в нем. Это в сторону, это не является необходимым для кода, Но это - это вроде того, что заявление выглядит. >> Как бы вам не использовать символ I [StrLen (ы)]? Char я [StrLen (ы)]? >> CHAR I, а затем в скобках, StrLen (ы). Да, так что мы могли - Мы могли бы сделать это, и это было бы объявить - что бы это сделать? >> Я думаю, было бы объявить массив из, например, - из - Ах, вам не нужна я, - о, Да, вы определенно не нужна я. Вы объявляете массив символов длины с. И то, что Сэм говорит, что эта строка 10 - позвольте мне некоторое пространство между ним и остальной таким образом мы можем изолировать его - эта строка 10 будет объявить массив из символов, StrLen (ы) стоит из них, но на самом деле нам нужна я, и по этой причине мы нуждаемся в меня, потому что мы должны дать имя массива; В противном случае мы не имели бы способ обратиться к массиву позже в коде. Так что это прямо здесь является имя массива и внутри длину. Это даст нам массив, Но это - опять же, это заявление. Это не назначение, это не инициализации. Если объявить этот массив, как это, там на самом деле ничего в содержимое массива. Это просто мусор - все, что там. И, как мы уже говорили, мы на самом деле даже не нужно для этого преобразования, потому что мы уже можем рассматривать строку как с массивом. Я знаю, что вы работаете немного долго по времени, но я хочу очень-очень быстро добраться до этого цикла и показать вам, как получить доступ к отдельным символам в массиве, потому что это ключевой для нашего задания. И тогда мы дадим вам идти оттуда. Так вот, у нас есть цикл , который выглядит почти хорошо. Что не совсем почти нет? Как там - то, что это не совсем правильно об этом цикле? >> Нет фигурные скобки? Нет фигурные скобки, например. Хотите убедиться, что у нас есть тело цикла в фигурные скобки. К сожалению, не квадратная скобка! И что следующая вещь, которую мы должны сделать с этой петли? Если я пытаюсь и запустить его, Что это ошибка, что я получаю? Я получаю все эти ошибки - у меня есть для инициализации я. Великий. Таким образом, это будет цикл - это не совсем там, но это становится очень близки. Этот код мы можем запускать, строить, ошибка все равно возникает. Почему он до сих пор жалуется, говоря выражение не используется, и это потому, что эта линия не делать ничего. Мы не хранить его в любом месте, мы не сохранить результат. Где мы должны быть сохранение этого результата? >> S или я? Совершенно верно, и это фанк синтаксиса, это с с квадратными скобками означает, что доступ к I-ый символ с. Это будет что-то, что действительно важно для выполнения задания. К сожалению, мы собираемся, чтобы останавливаться на достигнутом, так что Себастьян разделе можно прийти, но я счастлив остаться после снаружи, так и будет предпринимать никаких вопросов. Так что спасибо вам, ребята, что пришли. Это должно теперь загружать, создавать, запускать. Мы можем ввести строку вроде "привет" и это выводит "QOX". [Смех] Так что не совсем там, но перемещение, получение на тех петель! Спасибо, что пришли, и я буду снаружи.