>> [Музыка Воспроизведение]
>> David J МАЛАН: Ладно, добро пожаловать обратно в CS50.
Это начало второй недели.
Слово из одного из наших друзья на территории кампуса -
если вы заинтересованы, вероятно, либо сейчас или в будущем срока
даже после того, как более удобный, обучение учащихся средних школ немного
что-то об информатике, сделать голову, что URL-адрес.
Им, в частности нужно прямо сейчас из учителей, в частности, если у вас есть
были некоторые воздействия информатики.
>> Поэтому напомним, что в прошлый раз, мы ввели нескольких типов данных в C, и
Вы, возможно, начали, чтобы получить руки грязные с этим до сих пор
В задачу, поставленную один.
И у нас был символ.
Таким образом, в несколько технических терминов, что является символами, как вы знаете, что на сегодняшний день?
>> Так что это характер, но давайте Точнее теперь.
Что мы понимаем под характером или отдельных символов?
Нечисловой символ -
так не обязательно.
Получается, что четные числа, даже знаков препинания и букв
представлены с этими данными типа, известного как символ.
Так что это не обязательно в алфавитном порядке.
Да?
>> Так что это ASCII символ.
Так что, если вы вспомните нулевой неделе, когда у нас были наши добровольцы байт
придумать и либо держать поднятыми вверх руками или не все, они представляли бит.
Но все вместе как группа из восьми, они представляли собой байта.
И мы ввели понятие ASCII в то лекции, которая просто
соответствие между цифрами и буквами.
И ASCII применений, как те люди подразумеваемые, восемь бит
для представления символа.
>> Таким образом, соответственно, если восемь битов может каждая принимать одно из двух значений -
ноль или один -
Это означает, что две возможности для этого человека -
ноль или один -
две для этого человека, две для этого лицо, две для этого.
Таким образом, в общей сложности два раза в два раза два раза дважды два -
так что два восьмым в общей сложности.
Так что общее количество символов 256 Возможно, что вы можете
представлять с восемью битами.
>> Теперь, те из вас, кто говорит Азиатский языков может знать, что есть больше
символов в мире, чем просто И × и Cs и Ds.
И действительно, ASCII не хватает для многие языки мира.
Но об этом в другой раз.
На данный момент известно, что в C, если вы хотите представлять письмо, кусок
пунктуации, или просто что-то характер в природе, мы используем символ.
И это один байт или восемь бит.
>> Как насчет десятичного?
Ну, Целочисленное является целым числом.
Сколько битов, если вы помните, было целое обычно?
Любой напомнить?
Так оно, как правило 32.
Это на самом деле зависит от компьютера что вы используете.
Но в приборе, и в большом количестве Компьютеры, это 32 бита или четыре
байт - восемь раз четыре.
И целых чисел используются только для хранения числами, либо отрицательным,
положительное или ноль.
>> И если у вас есть 32 бита, и вы только заботятся о положительных чисел, может
любой стадион, сколько возможных целые компьютера могут составлять от
нулю на до?
Поэтому было бы в два-32, который примерно в четыре миллиарда долларов.
Таким образом, эти двойки будут повторяющиеся темы в области компьютерных наук.
Как мы увидим, они довольно удобно работать с, даже если это не совсем
Легко делать математику в голове.
>> Поэтому мы будем говорить примерно в четыре миллиарда долларов.
Теперь, очень долго -
Вы можете вида предположение.
Это дольше, чем Int.
Сколько битов?
Так 64 бит или восемь байт.
Это просто означает, что вы можете представлять даже большие числа, большие положительные или
больше отрицательных чисел.
>> А как насчет плавать?
Вот с плавающей точкой значение 32 бит.
Это всего лишь действительное число, то с запятой.
Но если вы вместо этого нужно больше места после запятой, или вы хотите
представляют большее число с некоторыми фракции после этого, вы можете использовать
двоих человек, который составляет 64 бита.
>> Но есть интересный вынос здесь.
Так что если целые ограничены 32 битами и даже длинный длинных ограничены 64
бит, такого рода возникает вопрос, Что делать, если вы на самом деле хотите посчитать
выше, чем 4000000000 для десятичного?
Ну, вы просто используете очень долго.
Но что, если вы хотите высокого количества чем на два 64-й, плюс-минус?
>> Так вот, это огромное количество.
Но в конце концов, вы можете на самом деле заботиться о таких ценностях,
особенно если вы используете базу данных и начинаю собирать много-много
и много данных и присвоение уникального номера для каждой части этих данных.
Таким образом, мы отчасти есть проблемы.
И точно так же, с плавающей точкой значения - поплавками или двухместных -
Если вы получили только конечное число бит, сколько всего ты мог номеров
возможно, представляют?
>> Ну, это менее понятно, когда вы включать десятичную точку.
Но это, конечно, конечно.
Если у вас есть конечное число бит, конечным числом людей, конечному
количество лампочек, конечно, вы можете представляют собой лишь конечное число
значения с плавающей точкой.
Но сколько действительных чисел являются их в мире?
Там в бесконечность.
Так что это своего рода проблема, потому что мы не имеют бесконечное количество
памяти или оперативной памяти внутри наших компьютеров.
Таким образом, некоторые сложные вещи могут случиться.
>> Так что давайте идти вперед и попробовать чтобы выразить это здесь.
Позвольте мне идти вперед и открывать Gedit.
Я собираюсь идти вперед и сохранить файл называется "floats0.c" просто быть
в соответствии с примером, который доступных в Интернете, если вы хотели бы.
И я собираюсь идти вперед и определить его следующим образом -
Я собираюсь пойти дальше и сказать, внутр Основной пустота, как мы часто делаем.
>> А потом в этой программе, я собираюсь объявляю себя поплавком, так 32-битные
переменная F, произвольно.
А потом я собираюсь хранить в нем Я не знаю, одну десятую, поэтому 0,1.
Так что я собираюсь выразить, что как один делится на 10, что вполне
в законную C.
>> А потом на второй линии, я просто хотите распечатать это значение.
Поэтому напомним, что мы можем использовать Е знакомы.
Мы не хотим использовать% я для Int.
Мы хотим использовать% F для поплавка.
А потом я собираюсь сделать обратную косую черту N, Закрыть цитаты, запятая, F, точка с запятой.
>> Итак, вот моя программа.
Там уже одна ошибка.
У кого-нибудь, для которого эта нажата уже хочу указать по крайней мере,
одну ошибку я сделал?
Да?
Да.
Я забыл "# включить" в вершины, они симптомом которой, если я попытаюсь
компиляции этого будет, что компилятор будет кричать на меня,
говоря неопределенный символ или что-то в этом роде.
Он чего-то не понимает Е нравится.
>> Так что я собираюсь делать "# включить », Сохраните файл.
И сейчас он находится в лучшей форме.
Но я также собираюсь указать одну новую деталь сегодня.
В дополнение к определению места как держатели% F% I% с, вы можете
иногда влиять на поведение этого заполнителя.
Например, в случае с плавающей точкой, если я только хочу
для отображения одного десятичного знака после период, я могу реально сделать 0.1f.
Итак, другими словами, я отделяю F и знак процента с 0,1, как раз
Е говоря, вы могли бы иметь целый кучей цифр после запятой
момент для меня.
Но я только хочу, чтобы увидеть одну из них.
>> Так что я собираюсь идти вперед сейчас и сэкономьте эту программу, зайдите в мой терминал
окна, и я собираюсь идти вперед Тип и сделать поплавок 0, введите.
Я вижу, что несколько загадочные линии, которая начнет больше смысла, как мы
дразнить его на части этой неделе и на следующей.
Теперь я собираюсь идти вперед и запустить поплавок нулю.
И, черт.
>> Так что есть еще одна ошибка здесь по некоторым причинам.
Я уверен, что одна десятая, или единица, деленная на 10, не 0.0.
Возможно, я просто не смотрел при достаточно цифр.
Так почему же я не говорил, два 0,2 видеть две знаков после запятой, а не только один.
Позвольте мне вернуться к моей окно терминала здесь и подбросить пару раз, чтобы
см. мою историю.
Как убедиться, плавают нуля снова, а затем снова вверх.
И теперь войти.
>> И теперь я уверен, что это неправильно.
И я мог бы сделать три и четыре, и я , вероятно, будет продолжать видеть нули.
Так где же ошибка?
Один разделенный на 10 должно быть 0,1.
Кто-то хочет принять удар на то, что , фундаментальная проблема состоит?
Да?
Они оба целыми числами.
Ну и что?
Так что с одной делится на 10, это что я делаю в арифметике.
И я получаю 0,1.
>> Да.
И вот это действительно этим вопросом.
Когда вы принимаете целое число в компьютер и вы разделите его на другое целое число,
компьютера по умолчанию будет Предположим, что вы хотите целое.
Проблема, хотя, конечно, что 0,1 не является целым числом.
Это реальное число.
И так, что компьютер делает на по умолчанию это просто выбрасывает
все после запятой.
Это не округляет вниз или вверх, как таковой.
Он просто выбрасывает все после запятой.
И теперь, когда имеет смысл.
Потому что сейчас мы четко остались с нулем.
>> Но подождите минуту.
Я не вижу Целочисленное нулю.
Я на самом деле видим 0,00.
Так как я могу согласовать это сейчас?
Если разделить на 10 равно нулю, но я видя 0.00, где он получает
преобразовано обратно в реальный номер?
Да.
Именно так.
>> Так что здесь, в линию пять, когда я на самом деле хранить, что 0,1, который затем
усекается до нуля, внутри поплавка, это практически эквивалентно
хранить его не в виде целого числа, но, в самом деле, как поплавок.
Более того, я затем с помощью Е к явно напечатать это число до двух
знаков после запятой, хотя там не может на самом деле быть любой.
>> Поэтому такого рода сосет, не так ли?
Видимо, вы не можете сделать математику, по крайней мере, на этом уровне
точности, в компьютере.
Но, конечно, есть решение.
Что простым способом исправить, может быть, мы могли бы сделать, даже просто интуитивно здесь, чтобы
решить эту проблему?
Да?
Поверните целых чисел в -
да.
Даже если я не совсем уверен, что именно происходит на самом деле здесь, если он
принципиально связано с этим как бытие целые, хорошо, почему бы мне не
делают, что 10,0, что делает этот 1.0, сохраните файл.
Позвольте мне вернуться вниз, чтобы нижняя и перекомпилировать.
Позвольте мне теперь повторяется.
А там -
Теперь, у меня есть одна десятая представлена ​​в виде 0,10.
>> Хорошо.
Так что это не плохо.
И я хотел бы отметить один способ мы могли бы решить эту.
Позвольте мне на самом деле откат во времени , когда у нас было это как один
десятая минуту назад.
И позвольте мне идти вперед и сохраните этот файл как другое имя файла, просто чтобы
есть немного контрольно-пропускного пункта.
Так, чтобы была одна версия.
А теперь позвольте мне идти вперед и сделать еще одну версию.
Мы назовем эту версию два нуля индексируется.
>> И я собираюсь сделать вместо это - вы знаете, что?
Добавление точки нуля работает в этом случае.
Но предположим, что были одной переменной.
Предполагаемые 10 были переменной.
Другими словами, предположим, что я не мог Просто трудно-кода 0,0 в конце
этого арифметического выражения.
Ну, я могу сделать что-то в скобках называется литье.
Я могу бросить, что целое число 10 к плавающему курсу, и я могу бросить, что целое в одном
плавают, а также.
Тогда математику, которая собирается быть сделано эффективно 1,0 деленное на 10,0,
результате чего происходит в F, как раньше.
Так что если я перекомпилировать как сделать поплавки 2, и теперь плавает 2, я получаю такое же
ответить, а также.
>> Так что это довольно надуманный пример, Для решения этой проблемы
путем введения литья.
Но в целом, литье будет сильная вещь, особенно для
Проблема установить два в недельный срок, когда Вы хотите, чтобы преобразовать один тип данных
другой, что в конце дня представлены таким же образом.
В конце концов, каждый , что мы говорили о до сих пор является
просто целыми под капотом.
Или, если это слишком низком уровне для Вас, они просто цифры
под капотом.
Даже символов, опять же, вспомним от нулевой неделе, есть числа,
под капотом.
>> Который должен сказать, мы можем преобразовать между различные типы номеров, если
они просто бит.
Мы можем конвертировать между номерами и буквы, если они просто
бит, и наоборот.
И литья таким образом, представляет собой механизм в программировании, которая позволяет принудительно
изменить один тип данных в другой.
К сожалению, это не так просто, как я, возможно, понравилось.
>> Я собираюсь вернуться в поплавках 1, который был более простым,
просто с одной 0,0 добавлены к каждому.
И как быстро переподготовки, Позвольте мне идти вперед и перекомпилировать
это, убедитесь, поплавки 2 -
К сожалению, это сделать поплавки 1.
А теперь давайте запустим поплавков 1.
А в нижней, заметит что я действительно получить 0,1.
Итак, проблема решена.
>> Но не сейчас.
Сейчас я собираюсь получить немного любопытно, и я собираюсь вернуться в мою
Е заявление и Скажите, вы знаете, что?
Я хотел бы подтвердить, что это действительно одна десятая.
И я собираюсь хотите видеть это в , скажем, до пяти знаков после запятой.
Это не проблема.
Изменить двух до пяти, Я перекомпилировать с макияжем.
Я перегрузите его как поплавки 1.
Выглядит неплохо.
Мои проверки вменяемости может закончиться там, но Я получаю немного больше приключений.
Я собираюсь изменить 0,5 до 0,10.
Я хочу видеть 10 цифр после десятичного знака.
>> И я собираюсь идти вперед и перекомпилировать это и перезапустить плавает 1.
Я вроде сожаления испытав этого дальше, потому что моя математика не так
исправить больше, кажется.
Но постойте, может быть, это просто счастливая случайность.
Может быть, компьютер работает немного странно.
Позвольте мне идти вперед и делать 20 знаков после запятой и успокоить себя, что я знаю,
как сделать математику.
Я знаю, как программу.
Сделать поплавки 1, перекомпилировать и черт побери.
Это действительно, действительно получаю Недалеко от знака.
>> Так что же здесь происходит?
Интуитивно, исходя из наших предположений ранее о размерах типов данных,
, что должно происходить здесь под капотом?
Да?
Именно так.
Если вы хотите, чтобы это большой точностью, и это чертовски большой точностью -
20 числа после запятой.
Вы не можете возможно, представляют произвольное число, если у вас
произвольное число битов.
Но мы не делаем.
Для поплавком, у нас есть только 32 бита.
>> Так, если 32 бита может быть переставляются способом - так же, как наши люди на, стадии
руки вверх или вниз - в конечном числе способами, есть лишь конечное число
действительных чисел можно представить с этими битами.
И так компьютер в конце концов будет иметь для
начать сокращать углы.
Компьютер может скрыть эти детали от нас немного времени.
Но если мы начинаем тыкать на цифры и смотрит дальше и дальше на
задняя числа в целое число, Затем мы начинаем видеть, что это
фактически аппроксимации Идея одна десятая.
>> И так получается, к сожалению, есть бесконечное количество чисел
мы не можем представить именно в компьютер, по крайней мере, с конечной
Число битов, конечное объем оперативной памяти.
Сейчас, к сожалению, это иногда имеет реальные последствия.
Если люди не нарадуются этому или рода принимают как должное тот факт,
, что их компьютер будет делать то, что они говорят это делать и не
понять эти основные Представление детали -
которые, честно говоря, в некоторых языках скрыта от пользователя, в отличие от C -
некоторые плохие вещи могут случиться.
>> И то, что я думал, что мы делаем как сделать шаг назад.
А это примерно восемь-минутное видео.
Это эфир несколько лет назад, и это дает взглянуть на самом деле, что может пойти
так, когда вы по-достоинству оценят эти виды деталей в самом все слишком
реальном мире.
Если бы мы могли приглушить свет в течение нескольких минут.
>> Выступающий 1: Вернемся к инженерной
бедствий для современных чудес.
>> Компьютеры -
Мы все пришли к пониманию Часто проблемы разочарование
которые идут с ними.
Ошибок, вирусов и сбоев программного обеспечения небольшие цены, чтобы заплатить за
удобство.
Но в сфере высоких технологий и высокоскоростных военных и космических программ
приложений, наименьшая проблема могут быть увеличены в катастрофу.
>> 4 июня 1996 года, ученые готов запуска беспилотных ракет Ariane 5.
На его борту научных спутников , направленных на создание, как именно
Магнитное поле Земли взаимодействует с солнечными ветрами.
Ракета была построена для европейских Космического агентства и стартовал с его
объекта на побережье Французской Гвианы.
>> JACK Ganssle: примерно в 37 секунд в полета, они впервые заметили
что-то идет не так.
Поворотных сопел в так, как они действительно не должны.
Около 40 секунд в полете, четко автомобиля попал в беду.
И вот, когда они сделали решение его уничтожить.
Офицер для обеспечения безопасности, с огромное мужество, нажал на кнопку,
взорвалась ракета, прежде чем можно стать опасностью для общественной безопасности.
>> Выступающий 1: Это был первый рейс из Ariane 5, и ее разрушение
состоялся из-за ошибки встроенного в программном обеспечении ракеты.
>> JACK Ganssle: Проблема на Ariane оказалось то, что число
, которые требовали 64 бит выразить.
И они хотели, чтобы преобразовать в 16-битное число.
Они предположили, что количество никогда не было будет очень большой, что большинство
эти цифры в 64-битном числа были нули.
Они были неправы.
>> Выступающий 1: неспособность одного программного обеспечения Программа принять вид
номер, который генерируется другой был в корне недостаточности.
Разработка программного обеспечения стала очень затратная часть новой технологии.
Ariane 4 ракеты были очень успешным, так что большая часть программного обеспечения
созданных для него был также используется в Ariane 5.
>> Филипп Койл: Основная проблема была что Ariane 5 был быстрее,
ускорился быстрее.
И программное обеспечение не было приходится за это.
>> Выступающий 1: Разрушение ракеты была огромная финансовая катастрофа,
Все из-за ошибки программного обеспечения минуту.
Но это было не в первый раз данные проблемы преобразования была охвачена современными
ракетной техники.
>> JACK Ganssle: В 1991 году, с началом первой войны в Персидском заливе, Patriot
испытал ракету подобного рода проблема количество переходов.
В результате, 28 американских солдат убиты и около 100 ранены
когда Patriot, которая должна была для защиты от входящих Скад,
осечку ракетой.
>> Выступающий 1: Когда Ирак вторгся в Кувейт и Америка развязала Буря в пустыне
начале 1991 года, батареи ракет Patriot были развернуты для защиты Саудовской Аравии
и Израиль от иракских Scud ракетные удары.
Patriot является американской средней дальности поверхность-воздух система производства
Компания Raytheon.
>> Т. Постол: размер Patriot перехватчиков себя примерно
20 футов в длину.
И он весит около 2000 фунтов.
И несет в себе боеголовку около -
Я думаю, это примерно 150 фунтов.
И боеголовка сама фугасных который имеет
Фрагменты вокруг него.
Кожух боеголовки предназначен действовать, как картечь.
>> Выступающий 1: ракеты осуществляются четыре за контейнер и перевозится
на полуприцепе.
>> Филипп Койл: Patriot противоракетных Система вернется в
не менее 20 лет.
Первоначально он был разработан в качестве ракеты ПВО
сбивать вражеские самолеты.
В первой войны в Персидском заливе, когда эта война пришли вместе, армии хотел использовать его
сбивать Скад, а не самолеты.
Иракские ВВС не было столько проблема.
Но армия беспокоился о Скад.
И таким образом они попытались переехать Patriot.
>> Выступающий 1: Перехват ракету противника Путешествия в Машине было пять
будет достаточно сложной задачей.
Но когда Patriot был доставлен в службы, из армии не было известно о
Иракские модификации, которые сделали свой Скад почти невозможно попасть.
>> Т. Постол: Что случилось является Скад, которые были
В ближайшие были нестабильны.
Они были биения.
Причиной этого было иракцев, в Для того чтобы получить 600 километров от
300-километровой дальности, взял вес из передней боеголовку.
Они сделали боеголовку легче.
Так что теперь пытается Patriot прийти на Скад.
И большую часть времени, подавляющее Большую часть времени, было бы просто
летать на Скад.
>> Выступающий 1: Как только система Patriot операторы осознали Patriot пропустил
своей цели, они взорвали патриотов боеголовку, чтобы избежать возможных
жертв, если оно было разрешено падать на землю.
>> Т. Постол: Это было то, что большинство люди видели, как большие огненные шары в небе
и не понял, как перехватывает Скад боеголовок.
>> Выступающий 1: Хотя в ночном небе Патриотов, казалось, были успешно
уничтожая Скад, в Дахрана есть не могло быть ошибкой о его
производительность.
Там, радиолокационная система Patriot потеряли Не отслеживать входящие и никогда Скад
запустил Вследствие программного изъян.
>> Это были израильтяне, которые первыми открыли что чем дольше система
шел, тем больше времени расхождение стал в связи с часами
встроенных в компьютер системы.
>> JACK Ganssle: за две недели до Трагедия в Дахране, израильтяне
доведены до сведения Министерства обороны что система теряла времени.
Примерно через восемь часов работы, они заметили, что система
становится заметно менее точным.
Министерство обороны ответил, говорю всем батарей Patriot
не выходить из системы в течение длительного времени.
Они никогда не говорили, что долгое время был.
Восемь часов?
10 часов?
1000 часов?
Никто не знал.
>> Выступающий 1: Patriot размещены батареи в казармах на Дахрана
и ее недостатки внутренние часы были о более 100 часов в ночь на
25 февраля.
>> JACK Ganssle: Это время, чтобы отслеживать точность около одной десятой доли секунды.
Теперь, десятая доля секунды является интересное число, потому что оно не может быть
выраженный в двоичном точно, что означает она не может быть выражена именно в
любого современного цифрового компьютера.
Трудно поверить, но использовать это в качестве примера.
Давайте числа треть.
Треть не может быть выражено в десятичной точно.
Треть 0,333 собирается на бесконечности.
Там нет способа сделать это с абсолютная точность в десятичной системе.
Это точно такая же проблема что происходило в патриота.
Чем дольше система работала, худшие ошибки времени стал.
>> Выступающий 1: После 100 часов работы, ошибки во времени только
около одной трети секунды.
Но с точки зрения ориентации ракеты Путешествия в Машине пять, это привело к
ошибки слежения более 600 метров.
Было бы фатальной ошибкой для солдаты на Дахрана.
>> Т. Постол: Дело в том, Скад запуск был обнаружен рано
предупреждение спутников.
И они знали, что Скад шел в их общем направлении.
Они не знали, откуда он исходит.
>> Выступающий 1: Теперь настало время для радарных компонентом системы Patriot
защиты Дахрана, чтобы найти и сохранить отслеживать управляемой ракеты противника.
>> JACK Ganssle: радар был очень умным.
Было бы фактически отслеживать положение Scud, а затем предсказать, где она
, вероятно, будет в следующий раз Радар направил импульсный выход.
, Который был назван диапазон ворот.
>> Т. Постол: Тогда, как только Patriot решает, прошло достаточно времени, чтобы пойти
назад и проверить следующее место для это обнаруженного объекта, оно восходит.
Поэтому, когда речь вернулась к неправильному место, он затем не видит объект.
И она решит, что не было никакой объект, это была ложная обнаружения и
Капли дорожки.
>> Выступающий 1: входящие Скад исчезли На экране радара, и
секунд спустя это хлопнуло в казарму.
Скад погибли 28 и был последним уволили во время первой войны в Персидском заливе.
Трагично, что обновленное программное обеспечение прибыли Дахрана на следующий день.
Программное обеспечение недостаток был установлен, закрытию одной главы в неспокойном
История Пэтриот.
>> Patriot на самом деле сокращение для отслеживания фазированной решеткой
Перехват цели.
>> David J МАЛАН: Ладно, отрезвляющим примером того, чтобы быть уверенным.
И, к счастью, эти низком уровне ошибки не являются чем-то, что мы будем
обычно должны ценить, конечно, Не с некоторыми из наших
ранняя из программ.
Скорее всего, большинство ошибок вы будете Встреча будет логично в природе,
синтаксических в природе в результате чего Код просто не работает правильно.
И вы знаете, это довольно быстро.
>> Но особенно, когда мы добираемся до конце семестра, он собирается
все больше и больше возможность действительно задуматься о дизайне
из ваших программ и основные представление
там тоже данных.
Например, давайте познакомимся с MySQL, который является популярным компонентом Database Engine
, которые можно использовать с веб-сайты для хранить данные на задней части.
И вы будете иметь, чтобы начать решать в конце семестра не только то,
типов данных вдоль этих линий использовать но точно, сколько бит в использовании,
действительно ли вы хотите хранить даты как дата и время, как раз, а также
такие вещи, как большой Вы хотите уникальные идентификаторы, чтобы быть, скажем, для пользователей
в базе данных.
>> В самом деле, если некоторые из вас были Facebook приходится довольно долго,
и вы знаете, как получить доступ В пользовательский ID -
которая иногда появляется в вашей URL профиля, если вы не выбрали
Псевдоним для URL, или если вы Facebook, используемых График API,
общедоступных API с помощью которого вы Facebook может попросить и для сырых данных -
Вы можете увидеть, что ваши числовой идентификатор.
И несколько лет назад, по существу Facebook пришлось изменить от использования
эквивалент к целые использовании длинных долго, потому что с течением времени, как пользователи приходят
и уходят, и создать много счетов и поддельные счета, даже они очень легко
смогли исчерпать что-то вроде 4 млрд. возможное значение, как Int.
>> Так больше на те виды вопросов в будущем, а также.
Ладно, так, чтобы было литье.
Это была неточность.
Несколько быстрых объявлений.
Так разделах формально начать предстоящий Воскресенье, понедельник, вторник.
Вы услышите по электронной почте в конце этой недели Что касается вашего назначение разделам.
И вы также будете здесь в этой точке как изменить свой раздел, если ваши
графика в настоящее время изменилась или ваш Уровень комфорта в настоящее время изменилась.
Между тем P-набор одного и хакерских являются одним из-за этого четверга с возможностью
продлить этот срок на Спецификации по пятницу
в типичном способом.
>> Поймите, что в комплекте с проблемой набор спецификаций Инструкции по
как использовать прибор CS50, марка, а также некоторые конкретные инструменты CS50
как стиль 50, который может предоставить вам с обратной связью динамически
качество вашего кода стиле, а также проверить 50, который может предоставить вам
динамической обратной связи, чтобы ваши Код корректности.
Прости, что мы все еще гладильные из несколько петель с проверкой 50.
Некоторые из ваших одноклассников, которые действительно начинали около 4 утра в ночь на пятницу, когда
спецификации подошел заметили с тех пор несколько ошибок, которые мы работаем
до конца, и извинения для тех, кто испытал чрезмерных разочарований.
Неисправность заключается в шахту.
Но мы будем следить за CS50 обсудить, что, когда будет решена.
>> Так что слова о себе баллы.
Так что это будет через неделю или две, прежде чем начать, чтобы получить обратную связь на домашних заданий
потому что вы еще не имеют преподавание парень.
И даже тогда, мы начнем оценивать Проблема C ставит перед нами
вернуться назад и оценить царапинам так что вы получаете больше соответствующего
обратная связь быстрее.
Но в целом в программе, CS50 Проблема наборы оценивались по длине
после четырех осей -
сферы, правильность, дизайн и стиль.
>> Область будет число обычно от нуля до пяти, что
захватывает сколько часть, которую Вы откусили.
Как правило, вы хотите, чтобы это было пять.
Вы по крайней мере, попробовал все.
И заметили, что это множителя так что делает только часть
Проблема набора не лучшая стратегия.
>> Между тем, более очевидным является Важность правильности -
просто ваша программа с правильными в отношении спецификации?
Это взвешенный намеренно больше степени, чем две другие оси с помощью
в три раза, потому что мы признаем , которые обычно вы собираетесь потратить
намного больше времени, чтобы гоняться за некоторые ошибки, Заставьте ваш код работать, то вы
отступов и выбрав соответствующие имена переменных и
как, который на другом конце спектра стиля.
>> Это не значит, что стиль не важно, и мы будем проповедовать его более
время как в лекциях и в секциях.
Стиль относится к эстетике вашего кода.
Вы выбрали хорошо названные переменные , которые являются короткими, но несколько
описательные?
Является ли ваш код отступом, как вы видели в лекцию и в соответствии
в стиле 50?
>> Наконец является проектирование права там в середине.
Дизайн, тем труднее одну, чтобы поместить пальцем, потому что это гораздо более
субъективно.
Но это, пожалуй, самый важный из трех осей с точки зрения педагогической
стоимости с течением времени и что это будет обучение стипендиата возможность
предоставить Вам качественные обратной связи.
Действительно, в CS50, хотя у нас есть эти формулы и оценки, в конце
дня это совершенно сознательно очень маленькие ведра - точка
от нуля до трех и нулевой и пять.
Мы не пытаемся привлечь очень грубых линий Проблема между наборами или между
студенты а сосредоточиться столько, сколько мы можем на качественные, обычное письмо
обратной связи, либо типизированных или устного от Вашей товарищей обучения,
Вы узнаете достаточно хорошо.
>> Но в общем, те веса что различные оси будут иметь.
Между тем, также, это стоит иметь в виду, что вы не должны считать, что
три из пяти представляет собой 60% и Поэтому примерно неудачу.
Три сознательно предназначается, чтобы быть рода середине пути хорошо.
Если вы получаете в тройках начале семестра, это
действительно предназначено, чтобы быть хорошим место, чтобы начать.
Если вы получаете двойку, ярмарках, есть безусловно, некоторые работы, чтобы заплатить немного
больше внимания, чтобы воспользоваться разделов и рабочее время.
>> Если вы получаете четвереньках и пятерками, отлично.
Но на самом деле, мы надеемся увидеть траектории Среди студентов - очень
индивидуально на одного студента, но начиная семестра здесь, в роду
от двух до трех диапазона, но окончание здесь, в 4:56 диапазоне.
Это то, что мы на самом деле ищем.
И мы иметь в виду, что дельта Вы показываете между нулем неделю и неделю
12, когда я делаю классах.
Это не имеет значения для нас совсем так, как Вы справедливым в начале, если ваш
Траектория действительно вверх и сильным.
>> Академической честности - так что позвольте мне надел более серьезным голосом на мгновение.
Так что этот курс имеет честь посылая больше студентов, чем любой другой
в истории, Доска объявлений, я верю.
У нас есть вроде потерял счет в этом точки как часто это происходит.
И это не потому, что студенты в 50 носят более нечестными, чем их
одноклассников в других местах.
Но понимаете, и то, что мы очень хороши при обнаружении такого рода вещи.
>> И это то преимущество, что информатика класс, в котором мы
может и мы сравнить все студенты Проблема устанавливает попарно против всех
другом, а не только в этом году Но все предыдущие годы.
У нас есть возможность, как студенты в класс, Google и найти код
на сайтах, как GitHub и дискуссионные форумы.
Есть абсолютно решения CS50 автора Р-множеств плавающие вокруг там.
Но если вы можете найти их, мы можем найти их.
И все это очень автоматизирован и легко, и печальные для нас найти.
>> Но я хочу подчеркнуть также, что академической политики честности курса является
очень должно быть очень много противоположностью этого духа.
Действительно, в этом году мы перефразировать вещи в учебном плане, чтобы быть этим, точка
точка точка, с более подробно в учебном плане.
Но главной темой в ходе самом деле, чтобы быть разумным.
Мы признаем, что существует значительная количество педагогических
значение в сотрудничающих, в некоторой степени, с одноклассниками, в котором вы
двух или трех или вы вам больше являются стоя на белой доске
доской, так говорят, ваши идеи -
выписывая псевдокод в картинках, диаграмм, что должно быть, если Марио
Вы должны были написать его первым в псевдокоде.
Какой должна быть жадным алгоритмом -
как он должен вести себя в Проблема сейчас одна?
>> И так понимаю, что поведение что мы поощряем очень
многое в этом направлении.
А в программе, вы увидите целую кучу под пулями
разумные категорию и не разумно категория, которая помогает нам помочь
Вы обернуть ваш разум вокруг, где мы нарисовать эту линию.
И вообще, достойный правило том, что если вы боретесь, чтобы решить
какая-то ошибка и вашего друга или одноклассника сидит рядом с вами, это
разумное для вас, чтобы показать ему или ей код и сказать: эй, вы можете помочь
мне понять, что происходит здесь не так?
>> Мы обычно не охватывают противоположной стороне.
Это не правильный ответ для ваших друга или одноклассника здесь, чтобы сказать, о,
просто посмотрите на мои и фигуры его от этого.
Это является своего рода необоснованным.
Но имея другого, другой мозг, еще одна пара глаз смотрят на
экране или смотрели ваш код и говорите, вы уверены, что хотите
иметь петли здесь?
Или Вы уверены, что хотите эта точка с запятой здесь?
Или о, это сообщение об ошибке означает это.
Это очень разумно и поощряется поведение.
>> Случаях, к которым я имел в виду ранее сводятся к тому, когда студенты
поздно вечером делает недальновидности решения и по электронной почте свой код
кому-либо или просто говорю, здесь, это в Dropbox или
Погуглить поздно вечером.
И поэтому я призываю и умоляю вас, Если у вас есть тех неизбежных
моменты стресса, вы натыкаясь против срока, у вас нет конца
день, так как это уже в пятницу на что точки, электронной почте руководители курса или
себя непосредственно.
Скажем, слушай, я в своем переломным моментом здесь.
Давайте вести разговор и понять это.
Прибегая к сети или некоторых других не разумное поведение никогда не бывает
раствора и слишком много ваших одноклассники уже не здесь, на
кампуса из-за этой недальновидности.
Но это очень легко обойти эту линию.
>> А вот маленькая картинка, чтобы подбодрить Вас из Reddit, так что теперь
все будет ОК.
>> Так быстрое резюме, то, , где мы остановились.
Так на прошлой неделе, напомним, что мы вводим условиях, а не в царапинам
но в C этого времени.
И был некоторый новый синтаксис, но Действительно никакие новые идеи как таковой.
У нас были логические выражения, что мы могли или вместе с двумя вертикальными
барах или и вместе с двумя амперсандах, говоря, что как левая
и права должны быть истинными для этого выполнить.
Тогда у нас были выключатели, которые мы смотрели в кратко, но я предлагаю действительно
просто разный синтаксис для достижения такие же цели, если вы знаете, в
заранее, что ваши случаи будут.
>> Мы смотрели на петлях.
Цикл, может быть, наиболее распространенным, или по крайней мере один, что люди
обычно достигают за инстинктивно.
Хотя это выглядит немного загадочно, вы увидите много, много примеров этого
в скором времени, у вас есть уже в конце прошлой недели.
В то время как петли могут аналогично достичь того же.
Но если вы хотите сделать какие-либо приращения или обновление
значения переменной, вы должны делать это более, чем вручную
цикл до позволяет.
А тут еще делать-то время как цикл, что позволяет нам сделать что-нибудь в
Хотя бы раз в то время что-то остальное является истиной.
И это особенно хорошо для программ или для игр, где вы хотите
предложить пользователю что-то по крайней мере, один раз.
И потом, если он или она не будет сотрудничать, Вы можете сделать это
снова и снова.
>> С переменными, между тем, мы были линий кода, как это, которые могли бы
две прямые.
Можно объявить Целочисленное называется счетчик, точки с запятой.
Или вы можете просто объявить и определить его, так сказать.
Дайте ему значение в то же время.
>> И тогда, наконец, мы говорили о функциях.
И это был хороший пример в том смысле, что она иллюстрирует
два типа функций.
Одним из них является GetString (), который, опять же, принимает строку от пользователя.
Но GetString () является отчасти интересно, постольку, поскольку мы использовали его,
потому что мы всегда использовали его с что-то на левой стороне
Знак равенства.
То есть, что GetString () возвращает значение.
Он возвращает, конечно, строки.
А потом на левую сторону, мы простого сохранения этой строки внутри
переменная с именем имя.
>> Это совсем другое, в некотором смысле, от Е Е, потому что, по крайней мере в нашем
Использование здесь, ничего не возвращает.
Как в стороне, она возвращает что-то.
Мы просто не волнует, что это такое.
Но в нем есть то, что называется побочный эффект.
И что же это побочный эффект в каждом случае мы видели до сих пор?
Что делать Е?
Он печатает что-то на экран, дисплеев текст, число или что-то
на экране.
И это только считается побочным эффектом , потому что это на самом деле не вручать
его обратно ко мне.
Это не ответ внутри черный ящик, который я могу после этого
достичь в и захватить.
Это просто делает это сам по себе, гораздо как Колтон был подключен к этому
Черный ящик на прошлой неделе, и он так или иначе волшебным был чертеж на доске
без меня на самом деле участвует.
Это было бы побочный эффект.
Но если я фактически должен был уходить в здесь и говорить, ой, вот строки
от пользователя, который бы быть возвращаемым значением.
>> И до сих пор мы использовали только функции что другие люди написали.
Но мы можем на самом деле эти вещи сами.
Так что я собираюсь идти в CS50 прибор снова.
Позвольте мне закрыть вкладку, что мы были открытые минуту назад.
И позвольте мне идти вперед и создать новый файл.
И я собираюсь идти вперед и называют его одним positive.c.
Поэтому я хочу сделать что-то с положительные числа здесь.
Так что я собираюсь идти вперед и делать Int -
К сожалению -
# Включить.
Давайте не будем делать, что же ошибка, как раньше.
Int основных (недействительными), открывающей фигурной скобки, закрытой фигурной скобкой.
>> А теперь я хочу сделать следующее.
Я хочу написать программу, которая настаивает на том, что пользователь дает
мне положительное целое число.
Так нет GetPositiveInt функции CS50 в библиотеке.
Там только GetInt ().
Но это нормально, потому что у меня есть конструкций, с которыми я могу наложить
немного больше ограничение на это значение.
Я мог бы сделать что-то вроде этого.
>> Так Int N -
и если вы набираю текст, просто понимаю, Я собираюсь вернуться и
изменить некоторые вещи в данный момент -
так Int N равна GetInt ().
И, что собирается поставить Целочисленное внутри н.
И позвольте мне быть, более наглядный.
Позвольте мне сказать что-то вроде: я требую, чтобы Вы дадите мне положительное целое число.
>> Хорошо.
Так что просто немного инструкций.
А теперь то, что я могу сделать?
Ну, я уже знаю, с моей простой условий или веток, так же, как я
имел в нуля, я не мог сказать что-то например, если п меньше или равна
нулю, то я хочу сделать что-то нравится, это не положительно.
А потом я мог сделать -
Хорошо, но я действительно хочу получить, что Int.
Так что я мог подняться здесь, и я мог отчасти копии этого и этого абзаца.
И потом, ОК.
Таким образом, если N меньше или равна нулю это сделать.
>> Теперь, что если пользователь не сотрудничать?
Ну, тогда я собираюсь заимствовать это здесь.
И тогда я иду сюда и здесь и здесь.
Так что это явно не решение, не так ли?
Потому что нет конца этому не видно.
Если я хочу потребовать, чтобы пользователь дает меня положительное целое число, я могу
на самом деле получить Int.
Затем я могу проверить, что Int.
Но тогда я хочу проверить его еще раз и проверить его еще раз и проверить его еще раз.
Так, очевидно, что является лучшим построить, используют здесь?
Ладно, некий цикл.
>> Так что я собираюсь избавиться почти все это.
И я хочу, чтобы эта Int хотя бы раз.
Так что я собираюсь сказать, делают -
и я вернусь к а через минуту -
Теперь, что делать?
Я собираюсь сделать Int N получает GetInt ().
ОК.
Так что это довольно хорошо.
И теперь, как часто делают Я хочу это сделать?
>> Позвольте мне сказать Е внутри цикла так что я могу требовать снова и снова,
в случае необходимости.
И что же я хочу, чтобы это а условие делать?
Я хочу продолжать делать это а то, что это имеет место?
Да.
N меньше или равно нулю.
Так уж, у нас значительно убрали этот код вверх.
Мы заимствовали очень простая конструкция - сделай то время как цикл.
Я украл только важные линии кода, который я начала копирования и
вставка, которая не была мудрым.
И вот теперь я собираюсь на самом деле вставьте это здесь и просто сделать это один раз.
>> И что сейчас я хочу сделать на В самом конце этой программы?
Я просто скажу, что-то простое нравится, спасибо за - и
Я сделаю% я для Int -
обратный слеш п, запятая, а затем подключите N, точка с запятой.
>> Хорошо.
Итак, давайте посмотрим, что происходит сейчас когда я запускаю эту программу.
Я собираюсь идти вперед и действительно делают положительные.
Черт.
Несколько ошибок.
Итак, позвольте мне прокручивать вперед до первого.
Не работать через них в обратном направлении.
Работать через них сверху вниз чтобы они каскадом и только
одно ошибаться.
Неявная декларация Функция GetInt ().
Да.
Так было не достаточно.
Я как бы сделал ту же ошибку, но немного по-другому в этот раз.
Мне нужно не только включать, но stdio.h Также cs50.h, который включает в себя
так называемых деклараций получить Интернешнл, которая научить прибора или учит
С того, что GetInt () есть.
>> Итак, позвольте мне сохранить.
Я собираюсь игнорировать другие ошибки потому что я собираюсь надеяться, что они
или иначе связаны с ошибкой Я уже зафиксировано.
Итак, позвольте мне идти вперед и перекомпилировать с принимать позитивные, Enter.
Черт.
Три ошибки, до сих пор.
Позвольте мне прокрутки вверх к первому.
Неиспользованные переменной N.
Мы не видели это прежде.
И это тоже, немного загадочным.
Это вывод компилятора.
И что, что выделенную строку там - positive.c :9:13 -
говорит, он говорит на линии девять из positive.c, на 13-м характера,
13-й колонке, вы сделали эту ошибку.
>> И в частности, это говорит Мне неиспользуемых переменных N.
Итак, давайте посмотрим -
линия девять.
Я использую N в том смысле, что Я даю ему значение.
Но то, что компилятор не нравится, что я не казалось бы, его использованием.
Но постойте, я использую его.
В строке 11, я использую его здесь.
Но если я прокрутите вниз дальнейшего на positive.c :11 -
поэтому на линии 11, 12 символов, компилятор говорит мне, использование
необъявленный идентификатор н.
>> Так необъявленной означает, что я не указано его в качестве
Переменная с типом данных.
Но подождите минуту.
Я сделал именно то, что в соответствии девять.
Так что кто-то действительно путают здесь.
Это либо я, либо потому, что компилятор в соответствии девять, опять же, я объявляю
Int N, и я присвоив ему вернуть значение GetInt ().
Тогда я использую эту переменную N в соответствии 11 и проверки, если его значение меньше
или равным нулю.
Но это видимо, плохо и сломанные почему?
Скажи это еще раз?
>> Ах, я должен объявить до N входа в цикл.
Но почему?
Я имею в виду, мы просто предложили немного назад, что это прекрасно, чтобы объявить переменные
все на одной линии, а затем присвоить им какое-то значение.
Глобальная переменная - Вернемся к этой идее через минуту.
Почему вы хотите, чтобы я положил его вне цикла?
Так и есть.
Именно так.
>> Так, хотя, несколько парадоксально, позвольте мне подвести итог.
При объявлении N внутри из блок DO там -
специально внутри эти фигурные скобки -
эта переменная N имеет то, что называется областью -
не связанных с нашей скоринговой системы в конечно, - но есть сферы, что это
ограничивается теми фигурные скобки.
Другими словами, обычно при объявлении переменную внутри набора
фигурные скобки, то эта переменная существует только Внутри эти фигурные скобки.
Итак, что логика одна, хотя Я объявил N в соответствии девять, он
практически исчезает из сферы, исчезает из памяти, так сказать,
к тому времени, я ударил линии 11.
Так как линия 11, к сожалению, за исключением тех, фигурные скобки.
>> Так что я к сожалению, не можете исправить это, возвращаюсь к тому, что я сделал это раньше.
Вы могли бы сначала сделать это.
Но то, что ты сейчас не делать циклически?
Вы, очевидно, не получают целочисленное циклически.
Поэтому мы можем выйти GetInt (), и мы должны покинуть GetInt () внутри
цикл, поскольку это то, что мы хотим приставать у пользователя снова и снова.
Но это достаточно, чтобы пойти до линии, скажем, шесть.
Int N, точка с запятой.
Не давайте ему значение еще и потому, Вам не нужно, чтобы только пока.
>> Но теперь здесь, заметьте - это было бы очень легко ошибкой.
Я не хочу, чтобы тень моего предыдущего Декларация N.
Я хочу использовать N, что на самом деле существует.
И вот теперь в строке 10, Поручаю п значение.
Но в соответствии шесть, я заявляю н.
И так я могу, или я могу не использовать его в линии 12 сейчас?
Я могу, потому что, между которыми фигурные брекетов п объявлен сейчас?
Один здесь, на линии пять.
Чтобы здесь, на одной линии 14.
Так что если я сейчас уменьшить масштаб, сохранить этот файл, перейдите обратно в и запустить принимать позитивные, это
составлен этот раз.
Так что это уже прогресс.
Slash. . / Положительным, Enter.
>> Я требую, чтобы вы дать мне целое положительное число.
Отрицательные 1.
Отрицательные 2.
Отрицательные 3.
Ноль.
Один.
И спасибо за один то, что сейчас печатается.
>> Позвольте мне попробовать что-то еще, из любопытства.
Мне говорят, чтобы ввести целое число.
Но что, если я вместо этого ввести ягненка?
Так что вы сейчас видите другое приглашение -
повторите попытку.
Но нигде в моем коде я написала повторить попытку.
Так где, по-видимому, это повтор подскажите откуда, бы вы сказали?
Да, от GetInt () сама.
Так что одна из вещей, персонал делает CS50 автора для вас, по крайней мере в первые несколько
недели, как мы написали некоторое количество проверки ошибок, чтобы гарантировать, что если
вы называете GetInt (), вы по крайней мере вернуться Целочисленное от пользователя.
Вы не будете получать строку.
Вы не будете получать символов.
Вы не будете получать то, совершенно иное.
Вы получите Int.
>> Теперь она не может быть положительным.
Оно не может быть отрицательным.
Мы не даем никаких гарантий, что вокруг.
Но мы будем приставать к пользователю попробовать еще раз, повтора, не повторить, пока он или она на самом деле
сотрудничает.
Точно так же, если я сделаю 1,23, , который не является Int.
Но если я ввести, скажем, 50, то дает мне значение, которое я хотел.
>> Хорошо.
Так не плохо.
Все вопросы о том, что мы только что сделали?
Ключ вынос бытия, чтобы быть ясным, не столько цикл, который мы видели
Перед хотя у нас есть на самом деле не использовали его, но вопрос о сфере, где
переменных может быть может быть использована только в некоторых указанной области.
>> Хорошо, позвольте мне обратиться к предложению вы сделали ранее, что из
глобальной переменной.
Как в стороне, то получается, что другой Решение этой проблемы, но
обычно неправильные решения или плохо спроектированные решением является
объявить переменную как то, что называется глобальной переменной.
Теперь я отчасти нарушает мое определение объемов, потому что есть
Нет фигурные скобки на самом верху и в самом низу файла.
Но последствия, что является то, что в настоящее время в четыре линии,
N является глобальной переменной.
И как следует из названия, это просто доступны везде.
>> Царапины на самом деле имеет эти.
Если вы использовали переменную, Вы можете вспомнить вам пришлось выбирать, если это для
спрайт или для всех спрайтов.
Ну, все спрайты только тем яснее способ сказать глобальным.
Да?
Ах, очень хороший вопрос.
>> Поэтому напомним, что в самой первой версии мой код, когда я неправильно
декларируются и определяются в соответствии N девять -
Я сказал, что она переменную и я дал ему значение с
Оператор присваивания -
это дало мне две ошибки.
Один тот факт, что п не был использован, и, во-вторых, что в строке 11
он просто не был объявлен.
Таким образом, первый, который я не адрес в то время.
Это не строго ошибки объявить переменной, но не использовать его.
Но одна из вещей, которые мы сделали в CS50 устройства, сознательно,
педагогически, как мы провернули ожидания компилятору сделать
Убедитесь, что вы делаете вещи не только правильно, но на самом деле правильно.
>> Потому что, если вы объявление переменной N, как и никогда не использовать его, или использовать его
Правильно, то что оно там делает?
Это действительно не имеет смысла.
И это очень легко со временем, если Вы не настроить свой компьютер в
Таким образом, просто есть код, который имеет немного здесь остатки, остатки там.
А потом месяца спустя, оглядываясь назад, вы, как, почему эта линия
код есть?
А если нет уважительной причины, он не идет на пользу вы или ваши коллеги
вниз по дороге придется спотыкаться его тогда.
>> Как в стороне, где что приходит?
Ну, вспомните, что каждый раз, когда мы составляем программы, все это вещи
в печати.
Таким образом, мы еще вернемся к этому.
Но опять же, сделать это утилита, которая автоматизирует процесс компиляции по
работает фактический компилятора называется лязгом.
Эта вещь, мы в конечном итоге увидеть, имеет делать с отладкой со специальным
программа под названием отладчик.
Это связано с оптимизацией код - подробнее об этом в будущем.
Std = C99 -
это просто означает, использовать версию 1999 С. С было вокруг даже дольше, чем
, но они сделали некоторые хорошие Изменения 10 с лишним лет назад.
>> И вот актуальными.
Мы говорим, сделать все, что Ранее было бы предупреждение
Ошибка предотвращения студента от компиляции.
И стены средств сделать это для целую кучу вещей, а не
всего связаны с переменными.
И то позвольте мне перейти к в конце этой линии.
И это тоже, мы в конечном итоге вернуться.
Это, очевидно, название файл я компиляции.
Это напоминает имя файла Я выводя в качестве имени
моей работающую программу.
Это-lcs50 просто означает использование CS50 библиотеки, и любое нулей и единиц, что
Сотрудники писал ранее и составил в этом году, интегрировать
их в моей программе.
>> А кто-нибудь знает, что это-LM?
Это математическая библиотека, которая является как раз там, даже если вы
не делаю любую математику.
Это просто автоматически, при условии нам сделать.
>> Ну, сделаем один пример Здесь, открыв новый файл.
И позвольте мне сохранить этот как string.c.
Получается, что когда мы говорим о данных Типы сегодня, есть еще больше
происходит под капотом , чем мы видели до сих пор.
Итак, позвольте мне быстро сделать быструю программу.
Включите stdio.h.
И я оставлю это.
И Вы знаете, позвольте мне не сделать же ошибки снова и снова.
Включите cs50.h.
И позвольте мне теперь идти вперед и делать тап_п (недействительными).
>> А сейчас я просто хочу сделать программу , который делает это - объявить строку
называется с и получить строку от пользователя.
И позвольте мне сделать небольшое инструкции здесь -
пожалуйста, дайте мне строку - таким Пользователь знает, что делать.
А потом здесь ниже этого, Я хочу сделать следующее -
для INT I получает нулю.
Опять же, программисты обычно начать отсчет с нуля, но мы не могли
делать что-то одно, если мы действительно хотели.
Теперь я собираюсь сделать я меньше чем длина строки из с.
Так StrLen -
S-T-R-L-E-N -
опять же, это кратким, потому что легче ввести, даже если это
загадочным.
>> , Которая является функцией мы не используется раньше, но делает это буквально -
возвращайся ко мне число, которое представляет Длина строки
, введенный пользователем.
Если они набраны в привет, он вернется пять, потому что есть пять
буквы в привет.
Затем на каждой итерации этот цикл, я плюс плюс.
Итак, еще раз, стандартный построить, даже если Вы не совсем или слишком удобно
знакомы с ним еще.
>> Но теперь на каждой итерации этого цикла заметить, что я собираюсь делать.
Я хочу, чтобы идти вперед и распечатать одиночный символ -
% С таким обратную косую черту N с новой строки.
И потом, вы знаете, что я хочу сделать?
Какими бы ни были слово в том, что пользователь вводит в, например, привет, Я хочу напечатать
H-E-L-L-О, по одному символу в строке.
Другими словами, я хочу получить в отдельных символов в строке,
которой до сих пор не имеет строки просто была последовательность символов.
>> И получается, что я могу сделать с, кронштейн, Я, закрывающую скобку, закройте
скобки, точка с запятой.
И я действительно должен сделать еще одну вещь.
Это в файле с именем string.h что StrLen объявлен.
Так что, если я хочу использовать эту функцию, Мне нужно, чтобы сообщить компилятору,
ожидать, чтобы использовать его.
Теперь позвольте мне пойти дальше и сделать Программа называется строкой.
Точки, наклонной черты строку.
>> Пожалуйста, дайте мне строку.
Я буду идти вперед и введите его.
Здравствуй, заглавными буквами, Enter.
А теперь замечаю я напечатал одному символу за другим.
Таким образом, новый деталь в том, что строка, в конце концов, может быть
доступны в виде отдельных ее символов, вводя квадратных
скобок.
И это потому, что под строкой капот действительно последовательность
символов.
Но то, что аккуратный о них в оперативной памяти компьютера -
Mac, PC, бы это ни было - они буквально спина к спине к спине -
H-E-L-L-O -
на индивидуальном, смежный байтов в памяти.
>> Так что если вы хотите получить на восьмой таких байт, который в этом цикле будет
Кронштейн нуля, кронштейн одной, кронштейн два, Кронштейн три, четыре кронштейна -
которая никогда нуля индексироваться вплоть до пяти -
, которая будет выдавать H-E-L-L-O на отдельной строке.
>> Теперь, как тизер, позвольте мне показать вам виды вещей вы в конечном итоге быть
способны понимать, по крайней мере с некоторыми близкими смотреть.
С одной стороны, то, что мы включены в сегодняшней примеры, если вы хотите, на самом деле
одна из самых первых джейлбрейк для iPhone.
Jailbreaking означает растрескивания телефону так что вы можете использовать его на
различных носителей или установить собственное программное обеспечение.
И вы заметите, это выглядит совершенно загадочные, скорее всего.
Но посмотрите на это.
IPhone видимо с трещинами цикл, если условие, еще
состоянии, куча функций мы не видели.
>> И опять же, вы не будете в первый взгляд, вероятно,
понять, как это работает.
Но все, что мы вроде как принять само собой разумеющимся в нашей современной жизни
фактически ведет к снижению даже в некоторой этих основах мы были
смотрите.
Позвольте мне идти вперед и открыть один другие программы, holloway.c.
Так что это тоже то, что вы Не должны действительно знать.
Даже никто из сотрудников или я мог вероятно, понять это, глядя на
это, потому что это был чей-то код , который был представлен к тому, что
исторически известного как затемненный C Конкурс, в котором можно создавать программы
которая компилируется и работает, но так чертовски загадочными ни один человек не может понять, что
он не будет делать, пока они на самом деле запустить его.
>> Так что действительно, если вы посмотрите на это код, я вижу переключателя.
Я вижу основной.
Я вижу эти квадратные скобки подразумевая какой-то массив.
Кто-нибудь хочет погадать, эта программа на самом деле
делает, если я бегу Холлоуэй?
Да.
ОК.
Молодцы.
Таким образом, только сотрудники и я не могу понять , что эти вещи делают.
>> И теперь, наконец, позвольте мне идти вперед и открыть одной другой программе.
Это одно -
снова, то мы сделать исходный код доступны в Интернете - это одно просто
вид красиво смотреть.
Все, что они сделали, это хит пробел совсем немного.
Но это реальный код.
Так что если вы думаете, что это красиво, если мы фактически управляет этим в командной строке
в конце концов вы увидите, как мы может делать такие вещи.
>> Таким образом, мы оставим вас на этой ноте и до встречи в среду.
>> [Музыка Воспроизведение]
>> Докладчик 2: На следующей CS50, ТФ устроить бунт.
>> Выступающий 3: Там он есть.
Взять его!
>> [Музыка Воспроизведение]