>> [Играет музыка]
>> СПИКЕР 1: Это CS50 и это начало второй недели.
Итак, давайте нырять прямо во что-то что глючит, так сказать.
Так, за вот CS50 IDE а у меня подъехал заранее это чертовски screen--
Это.
Осторожно, спойлеры.
Все в порядке.
Я вытащил этот экран здесь, который имеет очень простую программу.
Если мы прокрутите вниз, большинство это просто комментарии,
но здесь, в линии 13 через 17 у нас есть программа.
>> Это синтаксически неверно, что означает, что если Я скомпилировать его, он будет скомпилировать и запустить,
но он ошибочен.
Эта программа претендует в комментариях наверху, что она должна напечатать 10 звезд,
но это не так.
И на основе вашего опыта, или скоро будет опыт работы с C,
Вы можете различить логически почему это, на самом деле, глючит?
Да?
АУДИТОРИЯ: Это идет от нуля до 10.
Это 11 итераций.
СПИКЕР 1: Да.
Таким образом, это происходит от нуля через и равно 10,
что, конечно, 11 итераций.
Так, он собирается печать, действительно, 11 звезд.
Так, Конвенция информатика в большинстве языков программирования
это, действительно, просто начать отсчет с нуля,
но подсчитать, но не через Значение, которое вы на самом деле волнует.
>> Теперь, это одна вещь, которая Принимает немного привыкнуть
и даже к царапинам, предназначены, как это для не программистов или несоответствия компьютера
Ученые и для детей в основном, рассчитана на
Вы начинаете подсчета голосов в целом на одном.
И это нормально.
Вы можете абсолютно начать отсчет в одном, если это более удобно.
И рассчитывать до и через 10, но вы поймете, в частности, на этой неделе
и за что просто так многие вещи в программировании
Предположим, что 0 является первым значный, с которой вы считаете,
что вы собираетесь найти проще только, чтобы получить в этой привычки пуска
от нуля и считать до значения Вы заботитесь о прямо сейчас из
получить идти.
>> Так, что зафиксировано, что.
Мы изменили меньше или равна чуть менее.
Давайте взглянем на Второй пример здесь.
>> Так, эта программа слишком утверждает в своем комментарии наверху, что он должен распечатать
десять звезд, но это не так.
Что ошибка здесь?
>> Так, что-- и извините, давайте быть ясно.
10 звезд.
Один за линию, но это не так.
Так, в самом деле, позвольте мне идти вперед и компиляции этот, потому что это немного меньше,
очистить на основе этого описания.
Позвольте мне пойти в наш каталог источника.
Сделать КОЛЯСКИ одна точка слэш, багги один.
ОК, я вижу, 11 звезд, которые еще проблематично,
но они также все в одной строке.
Что проблема здесь?
Да.
АУДИТОРИЯ: [неразборчиво].
СПИКЕР 1: Да.
Так что это тонкость, которую вы можете Напомним, мне делает краткое упоминание о.
Даже если все выглядит красивая, и это красиво с отступом,
и это отчасти выглядит как к царапинам В этой линии 16 и 17,
Действительно, с отступом под этим цикл.
Это несущественно.
Компьютер не знать или видеть пробелы.
Белое пространство только для нас, людей, стилистически.
Компьютер не знает, когда у вас есть Фигурные скобки, которые бы, в самом деле,
исправить эту проблему.
>> Таким образом, если мы на самом деле пошел и явно положить в этих фигурных скобках
что бы исправить эту проблему, делает ясно компилятора
что я на самом деле хочу, чтобы выполнить две строки кода снова,
и снова, и снова.
Но то, что фундаментальное объяснение?
Правильно?
Мы не должны строго Фигурные скобки все время,
хотя это, вероятно, лучше практика, чтобы попасть в эту привычку в любом случае
даже если он добавляет два символы в коде. Зачем?
>> АУДИТОРИЯ: [неразборчиво]?
СПИКЕР 1: Да, так что это другое решение в целом.
Правильно?
Особенно, если на первый взгляд вам не действительно ценить то, что происходит.
Ну, конечно, мы могли бы просто делать две вещи одновременно
и просто избежать проблемы в целом.
И это прекрасно, но теперь, для сегодняшних целей, то, что
это объяснение ошибка?
Почему все эти звезды на одной линии?
Да?
>> АУДИТОРИЯ: Кажется, что если у вас есть одна строка кода,
Вы можете сделать это без них.
СПИКЕР 1: Точно.
Это просто человеческая условность.
Люди понимают, что это немного раздражает или утомительно
чтобы поставить фигурные скобки все часть времени, если все, что вы хотите сделать
это выполнить одну строку кода.
Так, люди решили некоторые время назад, что это нормально.
Если вы хотите, чтобы положить все ваши петли только на этой одной линии, как это,
это нормально с одной Точка с запятой в конце.
Но вы можете сделать только один такой Линия без фигурных скобок.
>> Таким образом, когда руководство CS50 стиль а укажет на,
вы увидите, что, как правило это хорошая привычка
чтобы попасть в это, пока вы не вполне комфортно сбивается
от этих видов конвенций и делать свое дело.
Пока вы себя последовательным.
И мы будем говорить больше о стиль немного позже сегодня.
>> Итак, позвольте мне открыть одну другую программу.
Конечно, мы должны исправить, что 10, а также.
Позвольте мне идти вперед и написать настоящий быстро программа, которую я буду называть,
скажем, петля точка С. Таким образом, цикл точка С И в петли точка C Я собираюсь иметь,
включают в себя стандартные I / O точка Н INT основной пустоту.
А теперь давайте просто делать, на самом деле, цикл.
Так, 4 INT I получает ноль.
Я меньше, чем, скажем, 50 лет.
Я плюс, плюс.
А потом здесь давайте идти вперед и не печатать F.
А потом я хочу, чтобы напечатать I и новая линия, точка с запятой.
>> И это должно напечатать все число от нуля до 50?
Некоторые глава кивает.
Через несколько NOS.
Что ошибка уже?
Что легко ошибка, которую я сделал?
Да.
>> АУДИТОРИЯ: [неразборчиво].
СПИКЕР 1: Да.
Поэтому, даже если это выглядит как это то, что я намерен,
Напомним, что я также просто ASCII символов.
>> Так что, если я говорю, печать "И."
Это в буквальном смысле собирается печатать I. Таким образом, если я
хотите подключить в качестве заполнителя Я на самом деле значение нужно сделать это
а затем подключите-в Значение I динамически.
В противном случае я просто хочу, чтобы получить 50 I на экране.
>> Итак, позвольте мне идти вперед и сделать этот цикл, запустить его,
и, действительно, у нас есть все вплоть по 49.
И если я прокрутки назад во времени я вижу ноль, в самом начале.
>> Ну, что, если я вроде испортить?
Что делать, если я это сделать?
Просто потому, что я не думал.
Что эта программа.
После того, как вновь компиляции и запуска, собирается делать логически?
>> АУДИТОРИЯ: Ничего.
>> СПИКЕР 1: Ничего.
Почему это?
>> АУДИТОРИЯ: Я предназначен для нуля.
Таким образом, условие ложно.
СПИКЕР 1: Да, именно так.
Весь код является правильным, синтаксически.
Это будет компилировать, это код будет работать, но это не
собираюсь сделать что-нибудь полезное потому что я инициализировать я к нулю.
Затем мы проверяем, есть я больше 50?
Очевидно, что нет, это не так.
Таким образом, цикл никогда не выполняется вообще.
>> Что, если мы что-то сделать немного больше безрассудно?
Так, что, если мы делаем, как я междунар получает ноль.
А теперь позвольте мне использовать время цикл, который был еще одним условием.
И в то время я говорю, а я больше или равна нулю, а затем здесь я
идти вперед и сохранить файл, чтобы цикл.
И я собираюсь запустить его.
Что я буду видеть это раз с время цикла?
Да.
>> АУДИТОРИЯ: бесконечный цикл?
>> СПИКЕР 1: бесконечный цикл?
Да, и почему?
АУДИТОРИЯ: Потому что это всегда равен нулю.
СПИКЕР 1: Да.
Таким образом, я инициализируется равным нулю.
Конечно, я всегда больше чем или равно 0 в качестве результата.
Итак, я просто хочу, чтобы увидеть это бесконечно.
И теперь, это придумать, как только или дважды голов курса.
Что происходит, когда вы есть бесконечный цикл?
>> АУДИТОРИЯ: Управление С.
СПИКЕР 1: Да.
Так управления С в конечном итоге отвечать.
К сожалению, мы распечатать миллионы и миллионы нулей уже
и поэтому компьютер имеет вид получил впереди меня.
Так, он собирается игнорировать мне для немного.
Но если вы просто нажмите CONTROL C немногие раз на вашем Mac или PC клавиатуры,
в конечном итоге он должен, действительно, прекратить.
А если нет, мы покажем вам некоторые методы до тех пор, когда вам
может на самом деле насильно убить программ, так же, как в Windows, и Mac OS,
если это будет необходимо.
Но давайте попробуем что-то еще.
Давайте на самом деле увеличить I. Является это по-прежнему будет бесконечным?
Позвольте мне запустить этот.
И теперь вы можете вид видеть, что происходит.
Это, также, является бесконечный цикл.
Но это немного каверзный вопрос.
Является ли это в печать номера навсегда?
>> АУДИТОРИЯ: Нет
СПИКЕР 1: Нет
Зачем?
Я слышал, некоторые NOS здесь.
Someone-- Да.
АУДИТОРИЯ: Вы не хватает бит действительно будет держать.
СПИКЕР 1: Хорошо.
Так что я не достаточно бит, чтобы продолжать идти.
Итак, что произойдет?
Это просто собирается останавливаться?
>> АУДИТОРИЯ: В какой-то момент она будет закрыта the--
СПИКЕР 1: Это будет закрыта петля вниз, но почему?
Что произойдет на самый конец его границ?
Да?
АУДИТОРИЯ: Это будет цикл Вернуться к отрицательных чисел.
СПИКЕР 1: отрицательных чисел или если мы просто лечения положительная,
нулю, по крайней мере.
Так что, да, абсолютно.
Напомним, что мы видели в последний раз, что если вы увеличить ваши биты слишком много раз,
и вы там первый план переполнение емкость ИНТ
или что-то типа данных, вы собирается, чтобы обернуть вокруг, наверное,
два отрицательных чисел.
Или, если вы указать, что диапазон должен быть только положительным,
которые вы можете сделать, но мы не видели, что еще,
Вы могли бы в конечном итоге, по крайней мере еще на нуле.
Хотя, на самом деле, да.
В этом случае отрицательного число, и в этом случае
цикл будет прекратить потому что я не, на самом деле,
больше или равно нулю, если он отрицательный.
>> Так, к сожалению, как долго бы мы должны ждать?
Сейчас мы до то, что 2 млн иш?
Мы, как 2 млрд, мы собираемся, придется ждать
пока мы не можем реально увидеть этот симптом.
Но мы видим его немного быстрее, maybe-- давайте посмотрим, если мы можем прервать.
Давай.
Даже меню появляются медленно.
Все в порядке.
Таким образом, мы вернемся к тому, что в скором времени.
Это хорошая time-- побери, щенки.
>> Это хорошее время для некоторых объявлений.
Так что, если вы могли бы участвовать в YHack,
который является событием является Спонсором наших друзей в Йельском университете.
И, действительно, некоторые из Курса ТФ в Йельском университете участвуют в этом.
YHack является международной рубить-а-марафон организован и проведен
в Йельском университете, в результате чего вместе 1500 единомышленников хакеров и творческих всех
по всему миру.
Если это представляет интерес, взглянуть здесь.
Если это слишком коротко на экраном, взгляните на сегодняшних слайдов
для URL для yhack.org.
Так, также несколько быстрых объявлений.
Так, официально участки начнут на следующей неделе здесь и Нью-Хейвен.
Имейте в виду, вы будете получать E-mail спустя этот уик-энд, скорее всего,.
Это занимает много времени для CS50 к разделу,
учитывая все люди в класс и все в движении.
И все учение стипендиатов расписания и еще укрепляя,
но следите за электронной почте и в случае необходимости быть, вы можете повторно раздел там после.
>> Study.cs50.net.
Таким образом, даже если вы являетесь постоянным участник на участках, понимают, что почти все
ресурсов мы используем в разделах являются общедоступными на CS50
Исследование по этому адресу здесь.
Так что, если вы когда-либо хотели бы вновь отзыв Материал из раздела, или читать вперед,
или вы не можете сделать это некоторые неделе понимать, что примеры слайды,
и проблемы, и определения, и больше всего там также.
>> Часы возобновить сегодня, и завтра, и в среду,
и в четверг, проверьте Курса веб-сайт для графика.
>> А также, в настоящее время приступает сегодня CS50 Обсудить.
Так что, если и когда у вас есть вопросы друг с другом или для сотрудников Курса,
и, как правило, работает на какой-то проблемы набора,
понять, что вы не обязательно должны обратиться к человеку следующем вами.
Если нет ни одного, вы можете дотянуться до нас и одноклассниками
онлайн с помощью CS50 Обсудить.
Таким образом, это обсуждение доска для курса,
и понимаю, что это это, пожалуй, лучший
место, чтобы начать, когда у вас есть вопросы, когда в нерабочее время
в частности.
>> Ланчи начнет на этой неделе тоже.
В Огонь и лед [Неразборчиво] в Нью-Хейвене.
Взгляните на курс-х сайт для того, чтобы RSVP.
Первый пришел, первый обслужен за это.
Если вы не получите на этой неделе мы сделаем эти самые каждую пятницу
в течение срока.
>> ОК, а теперь несколько слов о классификации.
Особенно, когда мы вступаем проблемы на один, который на этой неделе,
и проблема установить два и после этого.
Как мы можем идти о оценке множества Р и оценки их качества?
Таким образом, это четыре оси, которые мы используем в CS50, и они эти четыре здесь.
>> Сфера, которая захватывает на числовой Основой только, сколько из Р множества
ты нарушении.
Это примерно соответствует усилия, и это наш способ захвата
вы попробуйте половину Р установить все Р набора.
Это легкий, чтобы получить идеальный баллы по, если вы, действительно,
попробуйте каждый аспект P набора.
Так что имейте это в виду.
>> Правильность именно это.
Имеет ли ваш код работать, как спецификации и как решение образец штабов
предположить, что ваш код должны, по сути, работают.
Проверьте 50, если вы еще не встретили его Тем не менее, в Р устанавливается одно уточнение
и, как правило не дают вам да / нет ответов
относительно того, что ваш код является правильным.
По крайней мере, настолько, насколько мы собираемся оценить его на основе испытаний
что мы бежим в этой программе.
>> Дизайн является гораздо более субъективно.
Это, как хорошо написано ваш код.
И это то, что Вы получите лучше с течением времени,
и это то, что мы будем обеспечить более качественную обратную связь по.
И дизайн я мог значит вскоре вы
может быть в какой-то соблазн P установить что-то сделать loopingly,
но есть возможно три, или четыре, или пять вложенных циклов передние или вложены в то время как
петли.
Что вообще должно начать, чтобы вы съеживаться
и в целом будет считается плохой дизайн.
И вы начнете видеть в классе и из класса хороших способов делать вещи,
плохие способы делать вещи, которые может быть все правильно, но не
обязательно хорошо разработана.
Как писать эссе.
Вы могли бы быть в состоянии поставить слова на страница, грамматически правильно,
но эссе или Тезис, что они в это просто
полностью некогерентного или неубедительным.
И так, что может быть в аналоговый написано мир плохой или хороший дизайн.
>> И стиль, также, довольно субъективно.
Но по крайней мере мы ожидаем консистенции.
Это, как довольно ваш код.
Вещи красиво с отступом?
Являются ли ваши переменные также называются / Все ли Ваши скобок и фигурные скобки
выравнивается так, как они должны быть?
У нас есть руководство CS50 стиль как Поставленная задача будет указывать вам на.
Те более комфортно в Добро пожаловать в бродячих от
так долго, как вы самостоятельно последовательным.
И это тоже урок мы укрепить в разделе.
Так что, если все это было немного быстро, понимают, Р набор и секции
будет идти в более подробно в ближайшее время.
>> Но в целом у нас есть очень мало ведра для CS50.
Результаты, как правило, в масштабе от одного до трех, или одного до пяти.
Мы literally--, и я не могу сказать, это достаточно в течение первой недели.
Три хорошо.
Таким образом, хотя, да, три из пять нормально, математически,
может быть 60 процентов или как D минус.
Три, на самом деле, хорошо.
И в самом деле, мы ожидаем, большинство студентов в классе
чтобы начать термин вокруг двоек, троек и четверок, и.
Наверное, не так много пятерок.
Не слишком много из них.
Но в целом, чтобы начать в что сладкое пятно на кривой
таким образом, что с течением времени, там на самом деле место для,
и возможности для верхней прогрессии.
Поэтому, пожалуйста, не приравнивают три с 60%.
Это гораздо более абстрактное, чем это.
Формула, с которой мы вычислить сортов взвешивается следующим образом.
Правильность стоит наиболее.
Дизайн стоит немного меньше.
Стиль стоит немного меньше.
И это, как правило захватывает количество времени
что идет в получении каждого из этих осей раз.
Стиль очень легко, должны быть супер быстро,
но это легко привычка чтобы получить ленивы.
Правильность может занять Вы большую часть времени.
Преследуя некоторые ошибки может принять, что дополнительный час или больше,
и так, забив в конечном счете, захватывает это.
И так, теперь более серьезно слово.
Так CS50 имеет различие, к лучшему
или еще хуже, в том может быть, лучше познакомиться
с вопросами академической честность, чем большинства других, конечно.
И в самом деле, это, насколько мне известно, что мы отправляем больше студентов, к сожалению,
в дисциплинарных целях каждый год в результате. Так,
в интересах полного раскрытие информации, давайте кратко говорить
о том, что происходит в CS50, и то, что вам может сделать, и что вы можете иметь в виду.
>> Итак, вот с 2007 года, когда Я унаследовал курс,
это число случаев Доска объявлений.
Доска объявлений является дисциплинарная Гарварда орган, теперь честь Адвокат,
в каких случаях, когда упоминаются Студенты сделать что-то, что, конечно-х
Учебная программа считает необоснованным.
Там нет реальной картины здесь, я бы сказал.
Это колеблется над лет, но в целом
это количество случаи, которые упоминаются.
Количество студентов которые участвуют?
Это тоже меняется.
Как правило, в прошлом году за Например, 29 студентов Гарварда
были Объявление сели, так сказать.
29 из них нынешних студентов, Двое из них ранее студентов,
кто сотрудничают в какой-то неблагоприятное образом.
И тогда в терминах Процент, это, как правило, около 3%
класса, который, к сожалению, делает эти виды решений.
>> Так, в прошлом году он составил 3,5% из тела студента CS50 в
что было объявление сели, так сказать.
>> Итак, что же все это значит?
А что мы, собственно, делать?
>> Таким образом, для полного раскрытия, мы абсолютно, как компьютерные ученых,
есть программные средства в нашем распоряжении и это очень легко для нас, справедливости ради,
одноклассники, что друга, не являющиеся пересечения этих линий, чтобы пересечь сравнения
каждый представление в этом году против каждый представление в течение последних восьми лет.
Программное обеспечение делает это.
И в конечном счете это человеческие глаза, которые решают
или не относятся некоторые значение для дальнейшего судебного разбирательства,
но программное обеспечение, безусловно, помогает.
И это, честно говоря, почему, что я думаю, у нас есть такие большие цифры в CS50.
Это не потому, что CS50 студенты или CS студенты более
как правило, менее честными чем любые другие студенты,
это просто у нас есть инструменты и методы
с которой сделать этот первый проход.
>> Но мы делаем следить на все эти вещи
а также, опять же, в интересах признавая работу, которая будучи положить
в с супер большинства класса.
И политика Курса на академической честности,
хотя это куча пунктов долго с кучей патронов
которые, мы надеемся, вполне читаемым, это действительно сводятся к разумным.
И лучший правило, что мы предлагаем до в программе
это, сущность всех работ, которые вам
представить этот курс должен быть свой собственный.
И в самом деле, почти все из тех, в случаях, указанных для принятия дисциплинарных мер
это потому, что какой-то студент поздно ночь, как правило, оказалось свое код
более прямо однокласснику, который затем принял его
в полном объеме или значительно их.
>> Но на самом деле, это нормально.
И действительно, в офисе часов, бумажки
Вы были переданы, если вы пришли в офис часов на прошлой неделе стимулирует столько же.
Вы совершенно приветствуется и поощряется
чтобы обсудить проблемные наборы с одноклассниками.
Чтобы помочь друг другу, когда камнем.
Но вообще правило должно быть этим ", когда вы просите о помощи,
Вы можете показать свой код, чтобы другие, но вы не можете посмотреть их ».
Так, другими словами, если я борется с какой-то набор P
а я сижу там в Столовая, или в библиотеке,
или в классе пытаясь найти неисправность,
Я могу, конечно показать мой код на моем экране
чтобы человек, сидящий рядом для меня, конечно, персонал,
но также одноклассник.
Но если решение, что мой одноклассник предлагает это, ох,
здесь просто взгляните на то, что Я сделал, что пересекает линию.
>> И я осмелился бы сказать, что это, как правило разумная вещь для большинства людей
очень легко определить линию.
И так, посмотреть учебный план для более подробно.
А теперь один из наиболее спорные аспекты
из CS50 программе, что я думал, будет говорить в заключение здесь
это так называемый пункт сожаление.
Итак, вот все в порядке печати.
Но в целом мы видели за последние 8 лет плюс
что, действительно, почти все CS50-х случаи академической нечестности
было результатом только бедные принятия решений поздно ночью.
Результатом стресса, результат отсутствия еды, недостаток сна,
слишком много комплектов P, слишком много сроки, слишком много обязательств.
Стресс создания в 2:00, 3:00 М., 4:00 утра, с срок за горами.
Большинство студентов в этих случаях только что сделали плохие решения
что они, возможно, очень хорошо сожалеть На следующее утро, если не минут,
но до прошлого года не было выпускной клапан, что эти студенты могли
на самом деле открыть на самом деле-адрес Проблема голова на без страха быть
загрузки из колледжа в целом.
>> И, действительно, мы ввели это сожаление пункт прошлом году,
в котором говорится, что если в течение 72 часов, три дня,
пересечения некоторой линии предписано в программе
вы пришли вперед, чтобы один из Курса руководители, и мы должны поговорить о ней.
Там по-прежнему быть некоторые результат, вопреки тому, что это
Сообщалось, наоборот.
Существует еще некоторые результаты, которые это действенные ходом,
как правило, обнуление р набор или принимая некоторые другие действия,
но мы, в самом деле, справиться с этим сами и не
см его выше были результаты может быть гораздо более серьезными.
И, действительно, поделиться, что произошло в прошлом году, за восемь лет, и в настоящее время
девять лет, преподавания этого курса и после возиться с различными ручками,
превращая различные циферблаты над прошлым несколько лет на академической честности,
и, видя, по данным нет видимых Влияние, даже в речах, как это,
это было руки вниз лучшее, что мы ввели педагогически
в восемь лет вместе эти линии в CS50.
>> 19 студентов вышли вперед по этой статье в прошлом году.
Мы не приняли никаких мер для семь из этих студентов,
определения того, что они излишне волновался.
Они были не, на самом деле, пересек линию, но это
был хороший чат, чтобы тем не менее.
Мы обнуляется 11 очков которые были представлены.
И в одном случае мы попросили студент, чтобы сделать проблему установки.
Но более убедительным, честно говоря, с этих 19 чатов,
который был намного больше, чем я Ожидается, что каждый из них
10 минут до может быть, часовая, также принес
чтобы зажечь ряд вопросов, касающихся семейные вопросы, вопросы друг,
проблемы психического здоровья что мы тогда занимались,
С студента благословение, житель декан, или друзей, или любое другое число
вспомогательных ресурсов.
Так что это было, безусловно, одна из лучших видов использования нашего времени
и один из лучших вмешательств.
>> Не с тем, что он не имел вход на скорости обнаружения
академической нечестности в целом.
И я осмелюсь сказать,, это подмножество студентов в прошлом году
был демографический, что мы ранее никогда не определены до
и никогда не связан с ранее.
И так, это были замечательные истории успеха
даже если они были доведены до света менее чем оптимальных условиях.
Так, имейте это в виду как вы сделаете, возможно,
некоторые бедные решения самостоятельно поздно вечером,
что существует до тех пор, прибегать как студент в этой ситуации
владеть и выйти вперед, так что мы можем есть такой чате и борьбы с ним
таким образом, что это образовательный, а затем мы можем оставить это позади нас на следующий день.
>> Так что без дальнейших церемоний, принять края от этой беседы,
причина щенки ВВЕРХ просто, чтобы сломать лед на мгновение.
И, к сожалению, они все спят, но то, что должно было произойти здесь
был каждый должен был в трепет и вид отдыха
после этого очень тяжелого разговора.
Но, видимо, я положил щенки спать.
Но если вы идете в CS50-х сайт слеш щенки,
вы можете смотреть их в течение всего дня.
В частности, может быть, 2:00, или 3:00, или 4:00 утра по ночам
чтобы увидеть небольшое облегчение стресса есть.
Так что это слэш щенков.
Все в порядке.
Разве это не весело?
ХОРОШО.
Итак, вернемся к некоторым компьютере наука, если можно.
>> Так, напомним, что в прошлый раз мы начали ищу не только на основной, который
был функция по умолчанию, то при зеленый флаг нажал эквивалентны,
но мы также начали кратко писать некоторые из наших собственных функций.
И не до сих пор ни одна из этих функций были особенно большими или мясистые.
Вы получите в те больше Функции, вероятно, Р установить 2, Р набор 3,
безусловно, Р набор 4 и вперед.
Сейчас большинство ваших программ, если не все из них, конечно, для P
набор 1 может быть сделано полностью в основной.
Если ваша программа только пять линий, 10 линий,
долго даже 20 строк, прекрасно Разумно писать
все в основной и не более чем усложняют код, но то, что мы делаем сегодня
и далее пытается также ввести некоторые хорошие методы проектирования
так что, как ваш код становится более сложной и, как проблемы
Вы хотите, чтобы решить получить сложнее и более интересным вас есть, вроде,
инструменты в панели инструментов, с которой , для разработки решений в них.
>> Итак, давайте взглянем назад на эта программа от моего последнюю неделю, что
был нулевой функции точка С и заметить, что, попросту говоря,
это выглядит с двумя Функции, основной и имя печать.
И вспоминая или, возможно, обратный инжиниринг сегодня,
то, что было мотивации для внедрения функция в строке 28 называется,
Название печать?
Или то, что это было примером в Условия принципу или вынос,
если бы вы.
Некоторые шумы.
Что?
>> Да так Функциональная декомпозиция это своего рода фантазии способ сказать,
разложить вашу программу на составные части
а затем использовать те части собрать целое.
Так, что тоже только отчасти из рот уже
но это, пожалуй, даже Лучшим примером чего-то
просто называется абстракцией.
Правильно?
Абстракция будет один из повторяющихся тем в CS50
а также компьютерные науки в более общем, так как это
техника, с которой вы можете решить проблемы более эффективно, потому что вы
можете написать решения более интуитивно и таким образом, что весы
и понятно, другими людьми.
Что я имею в виду, что?
>> Так, возможно, это намного более читаемым посмотреть на программы, как это,
супер короткие, хотя он есть.
Когда вы видите в строке 22, что есть функция называется, имя печать.
Одна Это имя говорит, что он делает.
Эта функция, по-видимому занимает вход между ее круглых скобках,
и, видимо, что-то делает, предположительно выводит имя.
И так, хотя мы может иметь совершенно
сделал то, что мы сделали неделю назад, который был просто взять этот фактический строку кода,
избавиться от этого, и получить избавиться от этого все вместе,
мы вроде абстрагируются понятие печати имя.
Я не волнует, если вы используете печати размораживание.
Меня не волнует, если у вас есть процентов S и обратный слеш Н. Они
невероятно тайные сведения.
То, что я забочусь о качестве программист печати имя.
И так, что лучший способ сделать это чем путем вызова функции, имя печать?
И так, что было одним из мотивов для этого что-то вроде этого.
Создание код более читабельным, более многоразовые, а также самостоятельно описательный характер.
Теперь, давайте взглянем в другом примере,
который был функции один, который мы имели здесь.
>> Так, на этот раз, пожалуй, даже больше, убедительным, поскольку, в этом случае,
Я не хочу, чтобы просто получить Int.
Я хочу, чтобы получить положительный Int.
И получается, чтобы получить положительный Int вы должны сделать кучу беготней.
Правильно?
Это не просто одна линия позвонить, как имя печать была,
которые, по общему признанию менее убедительными.
>> Чтобы получить положительный Int, logically-- позвольте мне прокручивать вниз, чтобы скрыть это.
Что ты должен делать?
Как и все инструментов, которые мы есть на данный момент являются
вещи, как печать DEF от стандартных Библиотека, а также из библиотеки CS50
у нас есть Получить Int, Float и получить, Получить Длинный, длинный, получить строку,
но только один, Герман, прямо сейчас Получить Int.
Таким образом, если только у вас есть инструмент в ящике для инструментов, это получить Int,
как мы можем идти о реализации его, чтобы получить положительный Int?
>> АУДИТОРИЯ: Создайте журнал и проверить на ли входной, что они дали
был положительным или нет.
>> СПИКЕР 1: Идеальный.
В точку.
Другим инструментом мы имеем в нашем инструментов от недели или два назад
это только разновидностей циклов.
И так, да, если мы используем время цикл, или сделать в то время цикла, или передняя
цикл мы могли бы уйти с любым из тех, в той или иной форме.
Мы можем реализовать понятие Get положительное INT только с помощью Get Int,
а затем просто держать называя его снова и держать приставать пользователя
пока он или она на самом деле дает нам то, что мы хотим.
>> И вот теперь, это абстракция процесса
получения положительного Int в функции под названием
Получить Положительный Int немного больше убедительным, поскольку смотреть на это.
Это как 10 плюс строк кода, что
участвуют в получении положительного Int, и я действительно не волнует, как вы это делаете.
Все, что я все равно это ты можете сделать это, и поэтому я имею
скрытые все эти детали за Функция называется Получить Положительный INT, что
действительно, имеет эту делать, пока петли.
>> И увидеть на прошлой неделе синтаксиса есть, но это только заявляет N,
и выводит Инструкция для пользователя.
Он призывает Получить Int, а затем он проверяет это условие снова и снова,
и не снова, пока пользователь взаимодействует.
>> Так что теперь, несколько проверок на адекватность.
Для тех, кто, возможно, знакомы с какой-то программирования,
почему N заявил, почему я создаю N вне сделать в то время цикл?
Почему это на линии 29, а не на 33, как, например.
>> АУДИТОРИЯ: Потому что, когда вы объявить его вне, это своего рода
из более, чем больше scope--
>> СПИКЕР 1: Хорошо.
>> АУДИТОРИЯ: --и если вы объявите это внутри цикла, [неразборчиво]
потому что он не знает об этом.
СПИКЕР 1: Точно.
Если я могу simplify-- это вопрос из области видимости.
И сфера относится к контексту в которой переменная существует или может использоваться.
И приятно правило здесь является то, что как правило, при объявлении или зарегистрироваться
переменная Вы можете только использовать его внутри из ближайших охватывающей фигурные скобки.
Так что это значит?
Если я, вместо того, чтобы, отменить это и идти с то, что чувствует себя немного проще.
Правильно?
>> Строка 32 выглядит просто чище меня сейчас.
Я делаю и то и другое один раз и затем присвоения
правая рука к левой руке.
Проблема в настоящее время базируется на что определение объема
в том, что N может быть использован в линии 31 и 32 внутри этого цикла,
но где по этому определению он не может быть использован?
В соответствии что?
Да.
>> АУДИТОРИЯ: 35.
>> СПИКЕР 1: 35.
Определенно не 35.
А также где еще?
АУДИТОРИЯ: 34.
СПИКЕР 1: Даже 34 проблематичным, потому что это
вне фигурных скобках.
И так на самом деле, давайте посмотрим, что происходит.
Правильно?
Это может показаться немного интуитивно или не могут,
но давайте посмотрим, что компилятор должен сказать, когда
мы идем в папку исходного сегодня.
Сделайте одну функцию.
Боже мой.
Ну, я, наконец, закончил что, кстати.
Все в порядке.
И то, что проблема здесь?
Очень тайной смотреть.
Но вот то, что я typed-- сделать одну функцию.
Вот то, что делает индуцированной который на самом деле
с помощью компилятора лязг с некоторыми из этих флагов
что мы увидим снова в скором времени.
И снова, всегда выглядят на первой ошибки,
потому что это, возможно, только каскадный бессмысленно влияние на других линиях.
>> Так что же это означает, что проблема в функции 1.C.
Именно на линии 32.
И это в столбце, или характера, 13.
Поэтому, когда ваш текстовый редактор, который может помочь вам определить, где проблема.
Так что, если я прокрутки вверх, что линия 32?
Это действительно этот что уже выделены
Право here-- использовался переменная п.
Но это не использовался.
Я использую его.
Но компилятора путать, потому что она существует только внутри этой рамки.
И поэтому я не могу использовать его здесь.
Я не могу использовать его здесь.
И компилятор, следовательно, даже не волнует, что я пытаюсь.
Это, кажется, не будет использоваться в пределах своей фактической области.
>> Таким образом, мы можем расширить сферу делая именно то, что мы начали with-- Int N.
И хотя это не выглядеть элегантно, пожалуй,
и мы берем дополнительную строку здесь, сейчас он находится в рамках везде.
Итак, давайте попробуем еще раз.
Так что функцию одного.
Хороший.
И теперь, если я, если я запускаю функцию Один из них, давайте его отрицательное 10,
отрицательное 1, 0, 1, и это действительно работает.
>> Так что еще одно решение здесь.
Знаешь что?
Что делать, если я действительно борюсь с этим?
Я не знаю, где п предполагается идти.
Знаешь что?
Я просто хочу, чтобы положить его все способ вверху моего файла здесь.
Что бы это сделать, как вы думаете?
Да?
>> АУДИТОРИЯ: [неразборчиво].
СПИКЕР 1: Да.
Так что я сделал это глобальная, так сказать.
Если у вас есть переменная, что это за пределами все ваши функции, которые разрешено,
и код следует компилировать и п теперь будет доступна не только в Get
положительное INT, но и в main-- которые немного тревожно, потому что есть
уже в п Основная, так еще на что в просто moment--
но это будет считаться плохой дизайн.
Все в порядке.
Если вы вынуждены прибегать к что-то вроде, ну, я буду
просто положить его здесь, потому что код кажется компилировать
как правило, не лучшая практика.
Скорее вы хотите выбрать самый узкий возможный масштаб
для переменных, который будет означать, происходит с нашей первоначальной конструкции, которая
прямо здесь.
>> Теперь, как в сторону, если ты есть здесь тождественно имени переменной,
способ справится с this-- хотя это не будет происходить слишком often--
является то, что это по-прежнему прекрасно здесь.
Но это определение в соответствии п 22 будет тень глобальный один.
Так что это один будет работать в Основной и глобальный
на самом деле применяется, когда вы находитесь в получить положительный INT Но об этом
в другой раз, но только для тех, кому интересно.
>> Короче говоря, мы фиксируем это здесь.
Теперь давайте дразнить друг от друга два другие части прежде чем мы рассмотрим в одной последней строке кода
в этой программе.
Получить положительный Int.
На левой стороне его слово есть слово INT.
Что это означает вы думаете?
До сих пор мы в основном видели недействительными.
Да?
>> АУДИТОРИЯ: Это тип переменная, вы спрашиваете.
>> СПИКЕР 1: Да, это тип, позвольте мне не сказать, переменная, но тип значения
что я прошу вернуться к.
И в самом деле, что это Интуитивно понятный здесь, с надеждой.
Правильно?
Если вы хотите получить положительное INT, что это вы
хочу function-- как наш добровольцы из последней недели
передать вам обратно кусок бумаги с междунар на нем?
И так мы указали, что так называемый тип возвращаемого этой функцией
это получить положительный Int.
Если мы не хотим, чтобы его ничего возвращать, вы говорите, недействительными.
Если вы хотите, чтобы вернуться строка, вы говорите строку.
Если вы хотите, чтобы вернуться поплавок, вы говорите, поплавок.
Но только тот, который применяется здесь логично, потому что я использую GET Int,
хотя я ограничивая его положительные значения, является вернуть Int.
>> Так, наоборот, что это значит что есть пустота в скобках?
Что скобки как правило, определяют?
Да?
>> АУДИТОРИЯ: Это означает, что функция-х на самом деле не получить его.
>> СПИКЕР 1: Это означает, что функция-х на самом деле не получить то, что?
>> АУДИТОРИЯ: вход.
>> СПИКЕР 1: вход, вообще.
Так действительно, если скобка Здесь вы указываете недействительными,
это просто означает, я не хочу никакой вход.
Я разберусь с проблемой сам.
И в самом деле, вы не должны рассказать получить положительный INT-нибудь.
Вы просто говорите, получить позитивный Int, и что Функция будет уходить и делать свое дело.
>> Но там было немного трюк У меня играл здесь все это время
чтобы убедиться, что этот код компилируется.
Обратите внимание, что int-- получить положительный INT void-- на линии 27.
Но по какой-то причине, казалось бы, странный это также здесь, на линии 16.
И только для хорошей мерой Я повторю это так совершенно идентичны.
И я сказал прототип с немного одна строка комментарий.
Что произойдет, если я удалю, что и Теперь запустите сделать функция 1, введите.
Упс.
Подожди минуту.
Где мой вкладка?
А?
Поддерживать.
Сделать функцию 1.
Там мы идем.
ХОРОШО.
Если бы не спасло его должным образом.
Так, я думаю, что это немного ошибка здесь, где я не
видя имя вкладки в настоящее время.
и так, что здесь происходит?
Неявное объявление функции получить положительный Int является недействительным в C99.
Так заблуждение снова.
Так что это свидетельствует о?
Ну, получается, что С довольно глупо.
Ну, это программирование язык, или, скорее, компилятор.
Это знает только то, что у вас есть учил его, и это только
будет знать, что-то если вы учили раньше.
Другими словами, в Основной на данный момент, я
пытается вызвать функцию называется получить положительный Int.
Но компилятор не будет заметить, что получить положительную Int
не существует до тех пор, линии 26.
И так, что компилятор делает это просто Ошибки, как только он попадает в линию 17,
говоря неявное объявление из получать положительную Int, который
это просто причудливый способ сказать, я не знаю, что получить положительное INT еще.
>> Другие языки, такие как Java и Python и Руби может смотреть вперед.
С этого не делает.
И так как мы фиксируем это один из двух способов.
Либо один, если проблема в том, что получить положительное INT не видел,
Ну, позвольте мне просто переместить его на вершину.
Это было исправить эту проблему.
Но в целом, это считается лучше техника
чтобы поставить основную функцию по крайней топ, так что человеческой чтения кода
знает, что делает программа, потому что главный не похоронен все
способ внизу или в середине.
Это на самом верху.
Так что не чувствую идеальным.
И вы можете на самом деле получить в ситуации, когда
Если вызовы одной функции другой, что вызывает другую,
не вы можете получить на вопрос где ни может пойти выше другой, логично.
Это просто не возможно.
>> И так как на работу вокруг этого просто взять
подпись функции, что в speak-- первая линия, где это declared--
и просто скопировать, вставить его на сверху, а не с вьющимися braces--
просто точкой с запятой.
Это как маленький намек что это в будущем.
И в самом деле, все это время, когда мы видели вещи, как стандартный io.h
и cs50.h, аналогично, в те точка ч файлы есть другие прототипы.
И мы увидим, что в скором времени.
>> Короче говоря, если у вас есть программа в файле с множеством функций
Помимо основного, вы почти всегда хотят объявить их
только путем их первый линия, точки с запятой,
в самом начале файла.
Это было много за один раз.
Любые вопросы?
Все в порядке.
>> Итак, давайте двигаться дальше, то что-то вроде кашля.
Ой.
Как фитинга.
Все в порядке.
Кашель.
Так вот с осуществление программы
мы сделали другой день в Царапинам, что очень просто только
говорит кашель, кашель, кашель.
Все в порядке.
И кто-то сказал несколько дней назад, что есть
способ очистки этот код уже.
Все в порядке?
Как только вы копируете и вставки, вероятно, плохой дизайн.
По крайней мере, как только мы получим четыре или пять или 20 кашляет, он чувствует себя плохой практикой.
Мы просто держать копию, вставку.
Что очевидное решение очисткой эту программу вверх?
>> АУДИТОРИЯ: Петля.
>> СПИКЕР 1: Да.
Так что используйте петлю.
И мы можем использовать для цикла, в то время как цикл, любое количество подходов.
И в самом деле, вот что мы делаем в версии одного здесь.
Я вместо переписать его в версии один из cough.c
быть просто кашель в течение петли.
Ладно, но есть возможность теперь рода начала
на это немного больше как дизайн урок, который мы учили минуту назад,
что this-- предположить, что я хотел создать функцию, называемую кашель,
давайте рассмотрим на мгновение то, что он будет выглядеть.
Так что, если я хочу что- кашлять, я просто нужно
использовать печать п внутри функции.
И действительно я.
И в самом деле, все это Время, в любое время вы
печать что-то экран, программист
назвали бы, что побочный эффект.
Это не я передачи назад кто-то значение.
Это мне принимать какие-то действия что может быть визуально очевидно.
Но эта функция кашель, он возвращает ничего на основе его первой линии?
Нет, потому что тип возвращаемого значения является недействительным, что просто означает,
это не вручать мне ничего взамен.
Это может быть что-то делать визуально, но это не вручать мне
резервное бумажку как на прошлой неделе.
>> Нужно ли любой вход?
Нет.
И так это пустота здесь.
Так что это тоже своего рода чрезмерно инженерных эту проблему.
Правильно?
Я сделал программу более комплекс, несколько строк кода,
Я не сделал это любое более функциональным, но это
будет ступенькой, возможно, для более широкой
Контекст более сложный код.
Но то, что об этом?
Что я done-- просто взглянув на это, не глядя на комментарий
на самом верху file-- Что Я принципиально сделать здесь с моим кашлем
Реализация, отличается?
Да, в спине?
>> АУДИТОРИЯ: Сделайте так, вы можете есть персонаж выключить.
СПИКЕР 1: Да.
Таким образом, это чувствует себя отчасти хорошо.
Правильно?
Это как добавление к вашему функцию программа или ваша функция, в этом случае.
Он по-прежнему ничего не возвращает.
Это может иметь визуальный побочный эффект, потому что это звонит печати п.
Но теперь я параметризовали функция, которая
означает, что я указано приняты вход типа Int и называют его п,
но я мог бы назвать его что-нибудь я хочу.
На самом деле, это может быть просто раз будет еще более явным.
И тогда я мог бы изменить это здесь.
Но дело в том, что это, как я создать функцию, которая принимает ввод.
И если вспомнить, листать через, возможно, в одном онлайн
из сквозные, то Четвертый и последний пример кашель,
Вы заметите, здесь я обобщил мой код further-- рода абстрактную
это дальше.
Как кашля и чихания, оба о, как сказать что-то делает или
своего рода звука.
Сохранить бы соответствующие царапинам блок.
И так, что я сделал в этой версии, которые мы можем просто взгляд на,
является кашель, как говорят, [кашляет], кашель, а тем временем, чихание
как говорят, [Achoo].
И поэтому я обобщил реализация тех
сейчас реализации это общая функция,
говорят, что интересно для сегодняшних целей
только потому, что он по-прежнему не имеет возвращаемого типа.
Но сколько входов она есть?
АУДИТОРИЯ: Два.
СПИКЕР 1: Два.
И поэтому, если вы хотите, чтобы принять в двух аргументов,
просто разделите их запятой.
И если вы хотите, чтобы затем вызова этой функции,
Обратите внимание, что только позвонить скажем, цитата, конец цитаты,
для первого аргумента, общая п, для второго аргумента.
Итак, еще раз, мы просто должны теперь строительные блоки, так что мы действительно можем
осуществить некоторые из наших собственных функций.
Все в порядке.
Любые вопросы по их?
>> Так что теперь давайте отогните слой, если так.
И цель, в конечном счете это на следующей неделе проблема набор
будет на cryptogrophy-- искусство карабкаться информацию.
И, в частности, информация будет у вас зашифровать или расшифровать
будет текст.
И так, что вроде приглашения вопрос сегодня как хорошо,
что происходит под капотом с текстом за ASCII от нулевой неделе,
и как мы можем на самом деле начать манипулировать?
Так вот имя Zamyla в.
И в тексте, которые могут быть введены в, как функции Get струн.
И начиная с этого момента, когда вы видите строка, как this-- Z-A-M-Y-L-A--
начать думать о нем, как будто каждый из тех персонажей в коробке его
своя.
И действительно, через неделю или около того это Время, каждый из этих коробок
будет представлять очень конкретно блок memory-- укус памяти.
Таким образом, каждый из этих писем, В конечном счете, будет представлять 8 бит.
И мы действительно увидеть, что происходит на под капотом в моем компьютере.
>> Но для не достаточно просто посмотреть на Zamyla
через эту линзу, причем каждый из эти письма в его собственной коробке.
И достаточно хорошо в C мы можем доступа к каждому из этих ящиков непосредственно.
Так что если вы хотите получить первый Письмо ее имя, супер просто на C.
Если вы хотите, чтобы получить последний Письмо, супер просто, как хорошо
с куском нового синтаксиса.
>> Так что я собираюсь идти вперед в CS50 IDE и открыть строку нулевой точки C.
И в этом примере здесь есть пара новых вещей происходит.
Итак, сначала в строке 19, мы видели это before-- получить строку.
Так как для быстрой проверки вменяемости, если кто-то может предложить до словесно
Объяснение непрофессионала из то, что происходит в строке 19.
Как только перевести это на Английский, что сосед не CS50
могли бы понять.
Да.
>> АУДИТОРИЯ: Есть пользовательский вход А строка и хранить его в переменной с.
СПИКЕР 1: Хорошо.
Пользователь ввел строку и хранить его в переменной с.
Замечательно.
Так что на правой руке сторона, мы называем Get строка.
Это возвращает значение что не получил назначен
от правой стороны к левой рукой- сторона в переменной под названием S То
предназначен для хранения строки.
В точку.
>> Так что теперь линии 22, за комментарий в строке 21,
Очевидно, печатает эту строку один символ в строке.
Но как?
Итак, прежде всего, мы инициализируем я 0.
А потом, как нам добраться до конец имени Zamyla в?
Ну, в конце Имя Zamyla, я мог
вручную ввести последнего символа ее имя так или иначе, или число его.
Правильно?
Если мы вернемся here-- Z-А-М-L-- У-Л-A--, чтобы я мог ввести.
Что индекс Последнее письмо Zamyla в?
Если это 0-- говорить как programmer-- 0, 1, 2, 3, 4, 5,
Я heard-- самом деле так, последнюю букву по названию Zamyla является шестым,
но если считать с 0, это будет номер 5.
Так что имейте это в виду.
>> Оказывается, есть функция в С называется STRLEN, и обратно в день
и по сей день все еще, много программистов
выбрать синхронизировать имена для своих Функции, которые звучат как слова
они пытаются сказать.
Так StrLen является длина строки.
И так, что бы длина строки S вернуться, когда Zamyla является входом?
>> АУДИТОРИЯ: Пять.
>> СПИКЕР 1: Z-А-М-У-Л. Шесть.
Правильно?
Что длина имени Zamyla в?
Правильно?
И только в реальности, шесть букв.
Правильно?
И так что же это значит для нашего цикла?
Мы собираемся, чтобы перейти от 0 до шести, который
собирается дать нам пять итераций.
Что мы делаем на каждой итерации?
Ну, процентов С, кто-то догадались другой день,
означает заполнитель для чего?
>> АУДИТОРИЯ: Чар.
СПИКЕР 1: Просто символ.
Таким образом, один character-- не несколько символов, как строка.
А потом вот новая линия что у нас есть распечатки.
А потом вот новый синтаксис.
Если вы хотите, чтобы распечатать я-й символ в строке S, так сказать,
Вы можете просто сказать, что наименование строки S,
а затем откройте квадратная скобка, и затем закрыл квадратную скобку, с I
середина.
И это отчасти хорошо, что это вид выглядит как квадрат
так же, как квадраты, в которых Zamyla-х существуют символы на этом изображении нет.
>> Так что, если я на самом деле запустить эту Теперь, давайте посмотрим, что происходит.
Сделать строку 0 точка слэш строка 0, и тогда я
собирается ввести имя Zamyla в.
Там нет быстрое, потому что я не использовать печать п, но это нормально.
Я просто знаю, что делать.
И в самом деле, он печатает Имя Zamyla, в одной на строке.
>> Теперь давайте немного безрассудным.
Предположим, что я не знал, о StrLen и я полагал,,
Все в порядке, никто не собирается иметь назвать больше, чем, как 50 символов.
Давайте идти вперед и перекомпилировать это и запустите его, а затем введите в Zamyla
еще раз.
Логично, что является Программа будет пытаться напечатать?
Z-А-М-У-Л-А, то, как 45 неизвестные байт памяти.
И в самом деле, мы вернемся к этой идее памяти.
Но только логически, если Имя Zamyla является так долго,
в соответствии с изображением здесь, что мы говорим,
это держать печать, печать держать, держать печать, печать держать, держать печать,
весь путь до 50 символа, которые кто знает, что произойдет.
Итак, давайте на самом деле взглянуть.
Давайте ввести Zamyla.
Интересно.
Нам повезло.
Просто целая куча пробелов.
Ой.
Там один персонаж в стиле фанк.
Это выглядит вроде как странный вопрос пометить там, но есть имя Zamyla в.
Давайте действительно безрассудным.
Как насчет того, распечатать 500 блоки в неизвестность?
Давайте идти вперед и сделать это а затем повторно запустить.
И давайте полный экран это, потому что мы должны видеть больше пространства.
Zamyla.
Снова повезло.
>> Можем ли мы получить более безрассудным?
Давайте более безрассудным.
50000 символов.
Это, конечно, не самая хорошая идея.
Все в порядке.
Сделать строку 0.
Это будет наш последний демо.
Zamyla.
Тьфу.
ХОРОШО.
Так моя память действительно пуст прямо сейчас, которая на самом деле своего рода удобно.
То, что я пытаюсь получить все права, целью которых.
А теперь я просто хочу, чтобы получить безрассудным.
500000.
Make-- давайте полноэкранном его.
Войти.
Zamyla.
Там мы идем.
Я понятия не имею, что это есть, но это звучит плохо.
Все в порядке.
И в самом деле, в ближайшее время, если вы среди немногих счастливчиков в рабочее время
и в задаче установить один, вам вполне может столкнуться с этим.
Сегментация вина на самом деле имеют четко определенный смысл.
Это означает, какая-то ошибка относящиеся к сегменту памяти.
И с точки зрения непрофессионала, это означает, мы коснулись
memory-- мы использовали оперативную память в моем компьютере что я не должен был доступ.
И вот что и мощный и тоже опасно
о С, что вы действительно есть неограниченный доступ
в объеме памяти вашей программы или байт или ОЗУ, более конкретно.
>> Поэтому, даже если имя Zamyla в имеет длину всего шесть символов,
Я все еще могу пойти куда-нибудь в памяти я хочу.
И, как в сторону, если у Вас есть когда-либо читал некоторые статьи
на протяжении многих лет о некоторых сервер или какая-то программа
на взлом или взломан, это воспользовались чем-то
называется переполнение буфера эксплойт, который мы будем на самом деле
поговорить в течение нескольких недель, это как правило, со ссылкой на то обманывая
компьютер будет хорошо в за пределы памяти
что она должна иметь, и найти что-то сочные
что memory-- пароль, пожалуй, способ
обхода некоторое серийный номер проверить, или просто вообще в состоянии
чтобы обмануть компьютер выполняет код, который не был предназначен.
Но давайте вернемся к Реальность на секунду
где эта программа была реализован с STRLEN,
и ввести одно здесь.
Что нового у этих трех верхних строчках?
>> Так строка точка ч.
Оказывается есть эта библиотека называется Строка точка Н, или Строка Библиотека,
которого файл заголовка, так сказать, это строка точка ч, что дает мне
Доступ к этой функции STRLEN.
Если я опускаю, что компилятор собирается кричать на меня в какой-то форме.
Но вы знаете, что?
Теперь давайте действительно нюансов.
В линии 22, что-то вроде из inefficient-- плохо разработаны,
arguably-- о этой строки кода.
Вспомните, как для цикла реализуются
и какие шаги повторится и снова и again-- инициализации,
состояние, код, который запускается на выполнение, то приращение
или изменение, то состояние, затем код, то изменение, то
состояние, затем код, то изменение, и так далее.
Так что может быть немного беспокойство или плохо сделано здесь?
Да, в синем.
АУДИТОРИЯ: STRLEN является называется много, много раз.
СПИКЕР 1: Да.
Так называется StrLen много раз, но то, что
Длина имени Zamyla годов Впервые цикл выполняется?
>> АУДИТОРИЯ: Шесть.
>> СПИКЕР 1: Шесть.
Ну, то, что длина ее имени второй раз код выполняется?
>> АУДИТОРИЯ: Шесть.
>> СПИКЕР 1: Хорошо.
Он по-прежнему шесть.
Правильно?
Имя Zarla имеет не изменилось, даже если я ищу
только на часть букв в ее имени.
И поэтому тот факт, что я эффективно Задавая этот вопрос, что
длина Zamyla, что длина из Zamyla, что длина Zamyla,
шесть отдельных раза, или семь даже, просто глупо,
потому что это неизменная, что ответом.
И так, что я мог на самом деле сделать this-- в строке одного
У меня есть немного улучшенную версию здесь.
There-- whoops-- строка два я есть незначительно лучший вариант, в котором
Я this--, а не просто инициализации I 0, я также с запятой
объявить переменную с именем второго N-- я не должен сказать Int снова.
Я не должен, на самом деле.
Но я говорю, п.
И тогда я инициализировать н к StrLen п, так что теперь
сколько раз STRLEN получить выполнен в общей сложности?
Только раз.
И так это то, что мы имеем в виду ранее о лучший дизайн.
На самом деле, как только ваш код правильный, идти вперед и думать через,
я, используя в качестве мало памяти или несколько секунд
или миллисекунды времени компьютера как можно реализовать некоторые проблемы?
И я собираюсь прокрутки и лишь упомянуть
что есть это упоминание нуль в этой версии,
но мы вернемся к тому, что в скором времени.
Потому что сейчас, давайте взглянем на, где это происходит, чтобы привести нас.
Таким образом, одна, получается, что теперь у нас есть возможность
посмотреть на отдельные символы, мы можем использовать что-то
от недели 0, что было очень запутанными, а вроде неинтересно в то время.
Но сейчас, и особенно, когда мы получить в криптографии в неделю,
это будет очень мощным.
Оказывается, что с некоторыми Интс и плавает Data types--
и символы и строки и другой things-- некоторые из них
может быть очень легко превращается в другое.
>> Например, когда мы говорили о ASCII некоторое время ago-- вот
заглавные буквы А через М, точка, точка,
dot-- мы сказали, что есть отображение между этими буквами и цифрами.
И в самом деле, это справедливо для строчных букв, а также.
Строчные а есть 97, а является столицей 65.
И есть ряд в ASCII, который находится всего это отображение
Система для всех тех других письмах.
Так что это значит?
Ну, я собираюсь идти вперед и открыть до реального быстро что-то под названием
ASCII 0, большинство из которых является комментариев.
И снова в Интернете вы всегда можете взгляд через комментарии.
>> И взгляните, что это будет делать.
Так он получил главную функцию.
Я жестко число только для сейчас, потому что я знаю, что я делаю.
Я знаю, что я хочу видеть здесь.
И я инициализации I 65.
И я рассчитываю на через 26 Всего буквы.
И что я буду распечатать одну строку, в то время
если вы можете интерпретировать это выделенный линию?
Что печатается?
Да.
>> АУДИТОРИЯ: Вы собираетесь распечатать письмо,
соответствует карте Письмо значение и целое значение?
СПИКЕР 1: Точно.
Я собираюсь напечатать письмо соответствующее целому значению,
и наоборот, следующим образом.
Ну это, кто-то сказал ранее, это просто заполнитель для гольца.
Он по-прежнему есть.
Это, конечно, является заполнителем Для того int-- не новая линия.
А теперь обратите внимание, мой первый значение, Я подключения для этого заполнителя
не только И. я говорю, в скобках, символ я,
которые в скобках символ является говорит компилятор, лечения I
а не как то, что она есть, что число.
Лечить его в качестве фактического характера.
В то время как второе значение я подключить in-- я-- должны быть просто число.
>> Так что, если я скомпилировать этот program-- так что это сделать ASCII 0,
точка слэш ASCII 0-- Я просто Эта маленькая диаграмма, которая
показывает мне все возможное отображения без того, чтобы думать его
через или выяснить это самостоятельно.
И я также распечатки, замечать строчные буквы,
потому что через несколько строк, я печатать эту отображение
как хорошо, что это просто сказать, что как только вы понимаете
что происходит под капот, вы можете
автоматически конвертировать туда и обратно.
И в самом деле, если любой из вас когда-либо делал это в начальной школе
или слышал о ком-то мифически принимая к сведению
и передачи его в его или ее подруга в классе,
но вы платные Письма, как становится B,
и Б становится C, или что-то сложнее, чем, что, мол,
как бы вы идти о реализации, что в детстве?
Ну, вы просто знаете, вид А становится B, B становится C,
но математически, что было, что ребенок делает?
Что вы добавляя к каждой букве?
Эффективно, 1.
>> Поэтому, когда вы измените А в пункт Б, это вроде как меняется от 65 до 66,
который математически означает просто добавьте 1.
И поэтому, если вы были реализовать что мало способ обмана
для учителя в коде, вы может делать то, что только
добавив одну букву вместе.
Поэтому, прежде чем долго, мы увидите, как мы
может воспользоваться тем, что на самом деле действительно борьба и расшифровывать
Информация.
В то же время, известно, что мы начали ввести пару других библиотек
here-- строку один сегодня.
И очень полезный сайт надеюсь, вы найдете
называется reference.cs50.net, что преподавательский состав поставили вместе,
так что если вы хотите, чтобы посмотреть, как STRLEN работ,
Вы можете начать печатать имя функции,
нажмите STRLEN там, а затем менее комфортно объяснение
будет появляться.
Или, если вы хотите, чтобы должностное лицо Linux на основе объяснения,
вы можете нажать более удобные в правом верхнем углу, и это
представит ту же информацию, но в более сложных условиях.
Это полезно ресурс на самом деле знаю, что все делает.
>> В следующий раз мы собираемся взглянуть на Ovaltine
и больше, и представить себя в мире криптографии.
До этого, мы увидим, Вы в конце этой недели.
А теперь, Колтон Огден.
Увидимся в среду.
>> [Играет музыка]
>> СПИКЕР 1: Что [Бип] ты делаешь?
>> СПИКЕР 1: Я ел свой десерт?
Как вы едите его?
С вашими руками?
>> [Играет музыка]