>> ROB: Хорошо.
Добро пожаловать в первой секции.
Я Роб.
>> ИОСИФ: Я Иосиф.
>> Роб: Так мы будем нырять право дюйм
Первое, что нужно говорить о является Appliance.
Так что, надеюсь, большинство из вас есть скачал его уже.
Но вы можете видеть инструкциям в cs50.net/appliance.
О, Боже, теперь я застенчивым.
Я все еще слышу его.
>> ИОСИФ: Ничего себе, это звучит как это дезориентирован.
>> Роб: Таким образом, некоторые люди были с проблемы с ней, так что не ждите, пока
последняя минута проблемы установлен в попытаться решить Appliance и
узнав, что она не работает.
>> ИОСИФ: И если что-то не работает и вам нужна помощь, вы можете пойти в
cs50.net/discussion где мы есть форум, где вы
может задать свои вопросы.
И мы вернемся к ним в конце концов.
>> ROB: Хорошо.
Так что это то, что прибор выглядит.
Опять же, это просто совершенно отдельная операционная система, работающая в рамках
что операционная система установлена ​​на работают на вашем ноутбуке.
И основные вещи, которые вы будете использовать в Gedit.
Так мы надеемся, это уже стать знакомый сайт.
Терминал.
>> И вы также можете запустить Chrome в Appliance.
Там было несколько человек которые сообщили Интернет
не работает в Appliance.
И некоторые из них просто предположил, что там не должно быть
Интернет в Appliance.
Но да, там, как предполагается быть интернет.
>> Я скажу это прямо сейчас, но это не так действительно значат.
Если Интернет не работает, это то, что вы, как правило, нужно
для запуска, чтобы исправить это.
Если у вас возникли вопросы, Интернета, не помню, просто разместить его на
Обсудить, и мы будем говорить, работать, что.
Но Интернет должен работать.
>> не так единственное, что - да, ничего остальное действительно актуальны.
Но я просто хотел бы отметить, что -
см. в этом нижнем правом углу.
Таким образом, каждый из ваших приборы должны есть IP-адрес.
А позже в семестр, это IP- адрес станет более актуальным, когда
вы работаете на веб-р-набор, потому что вы сможете получить доступ к
сайт вы работаете на от вашего местный Chrome с помощью этого IP-адреса.
>> Но что мне нравится использовать IP-адрес для - и вы не должны делать это, я
просто хочу указать на это -
здесь.
Так что это окно терминала на мой Mac, это не в
Appliance вообще.
И вы можете посмотреть, что эта команда делает.
Но я собираюсь SSH непосредственно к моему Appliance.
Я не знаю, что IP является.
>> ИОСИФ: 168 -
>> 168.224.1.0.
>> Роб: Поэтому, как только я сделал с этим, войдите
Теперь, в основном, это идентично окно терминала в моей Appliance.
Так что я в значительной степени никогда не работал из самого Appliance.
Я просто всегда это работает в фоновом режиме свернутого
и SSHed в нее.
>> Вопрос с это вы не собираетесь , чтобы иметь возможность использовать Gedit легко
непосредственно от этого.
Но если вы хотите быть настоящим круто хакер, то вы должны привыкнуть к
командной строки текстовый редактор в любом случае.
Так Вим и Emacs и нано, все эти различные альтернативы.
Нано, как правило, самый простой.
И я думаю, что это не имеет себе подсветка синтаксиса.
О, нет, это полностью делает.
Таким образом, вы можете использовать Nano, потому что что один довольно легко.
>> Вы видите все эти команды в нижней части.
Этот маленький символ морковь.
Если вы еще не видели его раньше, вы будете , вероятно, увидеть его много сейчас.
Это обычно означает, управления морковь, как снизу слева от клавиатуры
управляющий символ.
Так вот он говорит мне, сюда -
О, это не отрезали, если я увеличения масштаба
Таким образом, управление, X, как Я собираюсь выйти.
И это говорит, что я могу ударить Y для Да, для экономии, N для Нет.
Так вот Nano.
>> Вим и Emacs имеют тенденцию быть немного более сложным и подавляющим.
Но вы можете привыкнуть к нему, и тогда вы будете любить его.
Так вот, что.
>> ИОСИФ: Нет необходимости делать это.
>> Роб: Да.
Вы можете свободно использовать Gedit для Остальная часть семестра.
Таким образом, любой прибор, связанных вопросы?
Или у вас есть какие-нибудь мысли на то, что еще необходимо говорить о том, о
прибор?
Да.
>> Выступающий 1: Когда вы SSHed в ваше вещь, был пароль Багровый?
>> Роб: Да.
Пароль для почти все, в Appliance собирается
быть Багровый.
>> СПИКЕР 2: Установка как настоящий IDE на приборе, будет ли он работать?
>> Роб: Я представляю себе Затмение имеет Fedora версия, и в этом случае, да,
Вы можете сделать это.
Это, вероятно, на самом деле не стоит.
>> СПИКЕР 2: ОК.
Так что, наверное, проще, если бы я хотел использовать Eclipse, просто использовать родной и
затем загрузить на -
>> Роб: О, это также, вероятно, проще.
Но вы можете заставить его работать в Appliance.
>> ИОСИФ: И для камеры, вопрос было, вы можете установить другой
IDE внутри Appliance?
>> ROB: Затмение быть Примером IDE.
Любые другие вопросы бытовой?
Хорошо.
>> Таким образом, мы теперь перейдем к командной строке интерфейс, связанных вещей, так CLI.
И опять же, я просто хочу работать в здесь, потому что это идентично
работает в терминальном окне в Appliance.
Как это шрифт глядя?
Это достаточно большой?
Хорошо.
>> Таким образом, есть много команд, которые вы должны получить довольно использоваться для
в течение семестра.
Большая два для навигации являются лс, список файлы в этом каталоге, а также
кд, поэтому изменить каталог.
Так что я могу изменить, чтобы рабочий стол, а затем очень распространенная картина перейдите в
каталог и сразу Ls Что в каталоге.
>> Люди также иногда не понимают, что завершение Tab является вещью.
Так как CD, VH, а затем я ударил Tab.
Я почти никогда не впечатать вся вещь.
И потом, если я держать удар Tab снова, оно будет автоматически
начать листинг для меня.
Так что я могу кд виртуальных доменов, локальный хост.
И это только собирается -
в случае, если вы еще не слышали термин раньше, каталог просто другое слово
для папки.
Так что теперь, если вы видите -
приведем, что на самом верху.
>> Так что теперь, если вы видите в скобках, вы увидеть маленький тильды, слэш, виртуальный хост,
слэш, локальный хост.
Так тильды, что называется в моем домашнем каталоге.
Это каталог вы когда вы SSH дюйма
Это каталог, который вы находитесь в, когда Вы откройте терминал.
Это место, где вы начинаете.
И поэтому я внутри моей домашней директории, и я внутри виртуальный хост
каталог внутри моей домашней директории.
А потом я внутри местный пройдет каталог внутри этого.
>> Таким образом, некоторые другие полезные вещи с CD -
или ну в общем, так точка всегда относится к текущей директории.
Cd, точка является довольно бесполезной команда.
Но все меняется в текущий каталог.
Более полезным, с точки зрения кд является точка, точка, которая является
просто пойти на один каталог вверх.
>> И заметьте, что это -
Я хочу сказать, псевдонимы, но они символы, точка, и точка, точка, эти работы
для почти любой команды вы находитесь будет думать работать.
Так как кд, вероятно, где вы будете с использованием самых, но они не
вещи, которые просто кд понимает.
Это в значительной степени то, что ваш весь командной строки понимает.
Много программ понимаю точка и точка, точка.
>> Так что другие полезные из них - CD, тире.
Так что собирается принести меня Последний каталог, что я был внутри
Так что иногда я буду делать что-то вроде, ой, я работаю здесь.
И я вижу некоторые ошибки с чем-то, и Я пойду исследовать его, перейдя в
некоторые случайные каталог где-то.
И я не знаю, если это будет пусть меня туда.
Это будет.
Так же делаю все, что хочу в этом каталоге.
Бла, бла, бла, бла, бла.
И я подумала: все в порядке, я хочу чтобы вернуться туда, где я был.
кд, тире, и это приносит мне назад.
>> Так что я собираюсь бросить много из них на вас сегодня.
Я не ожидаю, что вы запомните все из них.
Это своего рода просто знаю, что они существуют.
А потом, когда вы, как, хм, я хочу вернуться к
каталог, который я был просто в, о, подождите, что-то вроде этого существует.
Вы не должны просто введите весь каталог снова.
>> ИОСИФ: И в конце концов вы будете просто использовать их снова и снова, и
это станет мышечная память.
>> Роб: Да.
Итак, как я уже говорил, что Тильда Ваш домашний каталог.
Так что я могу CD, тильды.
Но я даже не придется сделать это, если я просто -
Я вернусь в каталог так это не бессмысленно пример.
Но если я просто делаю кд, это также же, как и перейдите моем домашнем каталоге.
Я делаю Command, К.
>> ИОСИФ: Можно также ввести ясно, слово, и он должен очистить его.
>> Роб: И я думаю, также управления, L также делает это.
Так много разных способов.
Я думаю, что есть некоторые различия, где ясно и управления, L будет просто
действительно подтолкнуть его к вершине и Я все еще могу прокрутить назад.
Команда, К буквально уничтожает все, и вы
не может прокрутить назад.
По крайней мере, это как это работает в iTerm2.
Я не знаю, как другие вещи -
о.
>> С SSHing, так что если вы находитесь на Windows, вы будете иметь, чтобы скачать PuTTY
для того, чтобы СШ с ОС Windows не делает есть как встроенный SSH инструмента.
С Mac, вы можете просто SSH непосредственно из окна терминала.
ОК.
Вопросы?
>> С Л. С., так что-то, чтобы привыкнуть к с большинством из этих команд -
ну, я просто выполните одно.
Ls, тире, л.
Так тире, л то, что мы собираемся вызвать флаг Ls.
И многие из этих команд есть флаги что вы можете передать им.
Таким образом, в этом случае, тире, л это флаг что говорит его дать мне полный
перечень всей информации из этих файлов.
>> Таким образом, мы видим, что рабочий стол был изменение 30 июля в 12:54.
Загрузки была изменена на 6 сентября.
Это текущий размер и байт этих каталогов.
Вы не должны понимать, все это.
>> Этот материал слева, эти drwx х, что станет гораздо более актуальны
позже, когда вам приходится иметь дело с -
, что связано с тем, кто имеет разрешения смотреть на эти файлы.
И поэтому, если вы не были единственным пользователем на этот компьютер, вы были бы в состоянии
скажем, хорошо, я должен быть только один разрешили смотреть на этот файл или я
собирается позволит каждому посмотреть на этот файл.
Так кто-то на моем компьютере можете посмотреть на этом файле.
Я даже не знаю, что это - что же это сделать?
>> ИОСИФ: Я не совсем уверен, на самом деле.
>> Роб: Не знаю.
>> ИОСИФ: Но если вы не знаете, есть полезными команда, которую можно использовать
чтобы сказать вам, что средство вывода.
И если вы введете в человеке перед командой -
так М-А-Н. Роб: Человек.
Так человек является еще одним что является очень полезным.
И человек, л.с.
Таким образом, мужчина страницы, они оба команды, которые вы собираетесь использовать
в командной строке, и они также имеют функций, которые будут иметь отношение
с С. Таким образом, вы можете человеку -
и я проигнорировал 3.
Но человек 3 Е собирается принести до версии C из Printf.
Но если я просто делаю мужчина Printf, это собирается вывести на экран командную Printf
что происходит в командной строке.
>> Так человек, л.с.
Человек страницы может быть довольно подавляющим.
Здесь, однако, вы увидите это перечисление всех этих флагов, которые Ls
понимает.
Так что, если мы идем в тире, л, и -
Я просто хочу, чтобы бросить это на вас.
Но в целях поиска, вы хотите первым касанием вопрос
знак или кнопку слэш.
Так слэш.
>> И тогда я могу искать для все, что захочу.
Так что я собираюсь сократить для панели, л.
И там это было.
Так использовать длинный формат листинга.
Это не поможет мне понять, что что конкретный столбец имел в виду, но я
Предположим, где-то здесь было бы объяснить, что.
Так что используйте справочные страницы для любой команды что вы не сразу понял.
>> Я вполне уверен, вы можете даже мужчина, человек.
Интерфейс к онлайн справочники.
О, одна последняя тот, который, может быть, немного актуальным является лс, тире,.
Так заметить, если я просто делаю Ls, Я получаю эти пять файлов.
Если я это сделаю Ls, тире, я получить намного больше файлов.
Таким образом, общая черта между всеми этими новые файлы является точка заранее.
>> Таким образом, конвенция является то, что файл, который начинается с точки скрыт.
Таким образом, вы не хотите, чтобы посмотреть файл, вы не хотите, чтобы он возиться с
позицией в каталоге каталог.
И только когда вы явно задать, Все в порядке, Ls, тире, покажи мне.
Стоит для всех файлов, в том числе скрытые.
Таким образом, некоторые другие команды.
О, вопросы в этой точке?
Да.
>> СПИКЕР 3: Когда вы делаете Ls, , что точка, точка?
>> ROB: Ох.
Так что это то, что я имел в виду.
Это то же самое, где Я могу, например, компакт, точки, точки.
Технически, точка и точка, точка являются файлы, которые существуют в каждый
каталог, где находится файл точка относится в текущем каталоге.
Так что если я кд, точка, я просто хочу, остаться в каталоге.
И точка, точка всегда относится к предыдущая каталог на один уровень выше.
Так что, если я иду в журналах и Ls, тире, др., Увидимся точка, точка. кд расставить все точки, точка
приносит мне в предыдущий каталог.
Да.
ОК.
>> Так еще один довольно важный команда РМ.
Так вот что мы собираемся использовать для удаления.
И позвольте мне на самом деле делают другое Команда в первую очередь.
Так MkDir.
Mkdir, как вы можете создавать каталоги.
И я создам временный каталог и войти в эту временную директорию.
И, как и следовало ожидать, она пуста.
Но если я Ls, тире, а, я до сих пор точка и точка, точка, потому что точка относится к
текущий каталог.
И точка, точка относится к предыдущая каталог.
А те, всегда будет существовать независимо от того, каталог вы внутри
>> И это совершенно не нужно Команда, но сенсорный.
Я просто использовать его, потому что это простой способ для создания файлов.
Так коснуться, прикоснуться б, прикоснуться с просто собирается создать три файла называемые,
б, в, что абсолютно пусты.
Таким образом, точка мне создавая те, в первое место занимает именно так, что гт
как мы можем удалить их.
Так гт,.
Это собирается спросить меня, снимите регулярное пустой файл?
А потом я скажу Да.
>> Так что если я точно знаю, что я хочу стереть файл без необходимости
предложено, удалить регулярную пустой файл?, то гт, тире, е будет
Флаг, который говорит, заставить удалить без даже побудило меня, о, ты
уверены, что хотите удалить файл?
Да, я уверен.
Так RM, тире, FB будет просто сделать это, не спрашивая.
>> Так давайте сделаем еще несколько каталогов.
MkDir, tmp2, CD, tmp2, коснуться, сенсорный б.
ОК.
Так что теперь я хочу, чтобы удалить tmp2 как каталог.
Так гт tmp2.
Вы не можете удалить TMP2, это каталог.
Так что вопрос в том, что РМ не сразу работать с каталогами.
Он используется лишь для для файлов, таких как файлы, не являющиеся каталог.
>> И так, что мы можем сделать вот гт, тире, г.
Это означает рекурсивно, которые могли бы ничего не значит для вас еще.
Но когда вы получаете на рекурсии, это будет означать больше.
Так RM, тире, г, tmp2 собирается рекурсивно перейти в этот каталог.
Так спуститься в каталоге TMP2?
Да, пойдем на это.
Хотим ли мы, чтобы удалить TMP2 /?
Да.
Хотим ли мы, чтобы удалить TMP2 / B?
Да.
Теперь мы хотим, чтобы удалить tmp2 каталог?
Да.
И вот теперь каталог и все, что внутри
из она была удалена.
>> Существует технически команда удалить каталог что вы можете использовать для удаления
каталоги, но это работает только на пустых каталогов в любом случае.
И видеть, что, давайте просто сделать MkDir, TMP2 снова.
TMP2 коснитесь.
ОК.
Так что, если я пытаюсь удалить dirtmp2, оно будет говорят, каталог не пустой.
Так что я не в значительной степени не используйте удалить Команда реж любом случае, потому RM, тире,
г будет работать на пустых каталогов и не-пустые папки.
>> А также, если я не хочу, чтобы пройти через это всего процесса
убывания в каталог и удаления каждого отдельного файла, RM,
тире, ВЧ, tmp2.
А теперь его нет.
>> Что-то быть осторожным о том, RM, тире, ВЧ.
И это пугает меня даже ввести его, потому что, если я случайно
нажмите Ввод или что-то.
Так RM, тире, ВЧ, Тильда бы, без побудило меня, е не запрашивает
меня, он автоматически удалит вся моя домашняя директория и
все в нем.
Таким образом, вы можете думать, что это глупый поступок.
И хорошо, что это.
>> Но это может произойти очень легко аварии, если, скажем, я хотел, чтобы удалить
моя черта, каталог виртуальный хост.
И только в быстрой набора текста, Я случайно это сделать.
Это снимет рекурсивно как мой домашний каталог и каталог виртуальный хост
в данном конкретном каталоге, просто случается не существует сейчас.
Но это было бы еще удалить вся моя домашняя директория.
По крайней мере, не имея е, это вызвало бы меня в первую очередь.
И я был бы как, о, нет, я не хочу этого делать.
Но люди, слэш, в том числе мне, как правило, попадают в
Привычка всегда ВЧ-ния.
Даже обычные файлы, которые я могу просто RM, с, я, как правило, просто гт, тире, ВЧ, с.
Только будьте осторожны, когда вы ВЧ-Ing.
>> СПИКЕР 4: Что C делать?
>> Роб: С Я говорю о том, что C-файла в этом каталоге, что гт, с.
>> ИОСИФ: И что более опасно, если вы используете звездой, это относится ко всему в
каталог.
Так что я обычно, как правило, сделать, это я буду перейти в каталог, и я хочу
удалить все файлы там.
Так RM, тире, ВЧ, звезда.
>> Роб: Да.
Кт, тире, ВЧ, звезда.
>> ИОСИФ: И если вы не будете осторожны какой директории вы находитесь в -
Я не был в темп, но я был случайно в моем домашнем каталоге,
то я удалю все в моем домашнем каталоге.
И я на самом деле сделали это раньше, и Я думаю, что вы сделали это до или
Джей перед сделал это.
>> Роб: Я случайно удалил -
так что игнорировать эту команду на некоторое время.
>> ИОСИФ: Не весело.
>> Роб: Так в каталоге бен слэш является куча бинарных файлов, где будете
быть знакомые них, как лязгом.
Ну, лязг и в основном все они вещи, которые я бегу по команде
линия в этой косой бен каталог.
>> ИОСИФ: Как Ls находится здесь.
>> Роб: Так точка, слэш, лс бы список этот каталог.
>> ИОСИФ: Rm также в этом каталоге.
>> Роб: Я случайно RM, RF-е изд бен, которые удалены любую команду, что мог
возможно только мечтать.
Какие тогда я просто переустановить Новая техника в этой точке.
>> ИОСИФ: Так что будьте очень осторожны, когда Вы используете эту команду.
>> АУДИТОРИЯ: [неразборчиво]?
>> Роб: Да.
Это также плохая привычка попасть.
Если вы заметили, я теперь -
хорошо, вы не можете заметить, но мой зум-в, может быть, может.
Так что я теперь корень @ прибор.
Так jharvard является пользователь мы хотим Вам всегда использовать.
Корневая является пользователь, который имеет разрешение сделать абсолютно ничего.
>> Так заметить, когда я jharvard, если я пытаюсь кд -
что каталог, который?
О, корень является хорошим примером.
Так кд, корень.
Доступ запрещен.
Потому что, если мы посмотрим на этот список -
и опять же, вы не должны полностью понять это.
Но эти три черты говорят что не позволяйте любой другой
Пользователь в этот каталог.
И каталог случается принадлежать корню пользователя.
>> Поэтому тот факт, что я jharvard и нет тот, кто не корень допускается в
этот каталог, что означает, что я собирается получить доступ запрещен, когда я
попытаться кд в нее.
Поэтому, когда я корень, у меня есть разрешение на делать абсолютно все, в том числе
удалить важных файлов к и Appliance
уничтожить всю вещь.
>> Так что это плохая привычка, чтобы попасть в просто бродил вокруг
Операционная система как корень.
Я делаю это в любом случае.
Вопросы?
И я буду выйти корень, остаться, как jharvard.
ОК.
>> Более соответствующие команды.
Так возвращаясь в наш темп, Команда мв выступает за ход.
Вы можете перемещать.
Теперь мы хотим назвать это б, так что теперь это называется б.
Или, может быть мы хотим двигаться б на один каталог вверх.
Так что теперь пуст каталога файлов.
Я вернусь в моем домашнем каталоге, и мы видим, что б это здесь, потому что
домашний каталог был один каталог вверх от каталог, б был дюйма
>> Там также ср.
Так ср копирования супер раздел, точка, текст.
Я могу назвать это с, точка, текст.
Теперь у нас есть и супер раздел, точка, текст, и с, точка, текст.
Это также работает с каталогами.
Я RF-ED один файл.
Так ср -
Ну, во-первых давайте попробуем CP, ТМР, TMP2.
Так опуская каталога TMP.
Так похоже на RM, поведение по умолчанию , чтобы не работать с каталогами.
>> И снова, как и РМ, по умолчанию поведение - ну, заставить его работать
с каталогами является, тире-р от отеля.
Так скопировать рекурсивно темп Каталог, в TMP2.
И вот теперь у нас есть и TMP и TMP2, и это не то, что полезно, так как TMP
был пустым в первую очередь.
TMP2.
>> Теперь давайте копировать TMP в TMP2.
И мы видим, что tmp2 также имеет файл , поскольку каталог и
все внутри, что Каталог был скопирован.
И это может быть кое-что полезно если, скажем, вы работаете
по проблеме установить один -
или на самом деле, более поздние домашних заданий являются еще более важно, потому что
будет целая куча файлов и вещей.
>> Но вы просто хотите, на долю во-вторых, вы, как, все в порядке, я
собирается попробовать что-то другое.
Позвольте мне просто скопировать всю свою pset1 Каталог, в pset1 резервного копирования, так что если
Я в конечном итоге завинчивания вещи, я могу вернуться в мою каталоге резервных копий.
Есть более подходящие способы версиями резервное копирование кода, но
это всегда быстрый способ просто сделать что у вас есть копия чего-то
что вы собираетесь изменить.
>> Так эхо также команда одноразовым, что вид sillily просто печатать на
командной строки, что именно вы хотели бы повторить.
Так эхо привет.
Мы просто напечатать привет.
Эхо привет мир.
Мы напечатаем привет мир.
Это входит в употребление, когда вы начать объединения команд.
>> И опять же, не ожидают, что вы полностью понять этого, но это
что посмотреть.
И потом, если вы погуглить примеры или вы понимаете что вы хотите сделать
что-то, это может быть полезно.
Так что давайте, в качестве примера, так лс, тире, л.
Так вот я вижу выход Л., тире, л.
И я говорю, хорошо, я хочу, чтобы хранить, что в файл.
Все это выход здесь, я хочу положить в отдельный файл.
>> Так что это немного больше, чем символ это то, что мы собираемся, чтобы звонить.
Мы перенаправления выход в файл.
Давайте назовем файл бла, потому что это то, что я, как правило, всегда называют его.
Так что теперь мы видим, у нас есть подать бла прямо здесь.
И если я открыть его, я буду видеть, что это точно так вывода команды
что я просто бежал.
И точно так же, можно -
если это выход в файл, этот будет получить данные из файла.
Что такое команда, что я -
>> ИОСИФ: Я думаю, что вы можете использовать меньше или больше, наверное.
>> Роб: А как насчет просто менее бла?
Я не знаю.
Если вы приехали в этот сценарий, как и есть psets, что это полезно для.
>> ИОСИФ: Можно передать его в эхо.
Труба файл в эхо, чтобы увидеть его.
>> Роб: Это труба.
>> ИОСИФ: Извините.
>> ROB: Хорошо.
Таким образом, это выход в файл.
Это получить текст из файла и передать его в программу.
И вы также увидите этого парня.
Так что это своего рода то и другое сразу.
А на самом деле, я познакомлю два новых команды просто использовать его.
>> История представляет собой удобный команда, которая просто собирается распечатать список
все, что я когда-либо в командной строке.
Итак, мы видим здесь все, что у меня есть управляет этим все время.
Много Ls годов.
>> И еще один полезный команда Grep, что его цель заключается в поиске более
текст ищете моделей, ну, ищу все, что вы
хочу его искать.
И так удобно использование здесь, скажем мы хотим, чтобы захватить историю.
И я хочу, чтобы искать команд где я - то, что
полезный искать?
>> ИОСИФ: [неразборчиво]?
>> Роб: Или давайте просто посмотрите на все касается, по какой причине.
Так что это, что это будет выглядеть.
И вы не должны полностью понять, что.
Но идея здесь, история дает тот же вывод, что сделал здесь
где это распечатка всей История всего, что я когда-либо работать.
Мы тогда, кстати, что -
так что вместо того, чтобы печатать его на экране, мы хотим передать, что к
Команда Grep который ищет все экземпляры слова ощупь.
>> И это, используя эту комбинацию История инструменты и Grep, я вижу, в порядке,
вот все команды я когда-либо бежать, и вот несколько распространенным.
Мы на дне.
И это также дает мне команду Я просто побежал, что было
Слово сенсорный в нем.
Но труба является довольно полезная вещь для объединения нескольких программ.
А на самом деле, это ярлык для аренды мне выход История подать бла, и
позвольте мне вычленить использованием файловой бла как то, что я хочу, чтобы просмотреть.
Так труба просто ярлык для этих двух команд.
Да.
>> СПИКЕР 4: [неразборчиво]?
>> Роб: Да.
Что такое -
О.
Давайте проверим.
Так кошки, собаки, рыбы.
Поэтому я хочу, чтобы вычленить.
Даш, г, опять же, будет рекурсивно, поэтому я хочу, чтобы спуститься вниз
все каталоги.
Я хочу рекурсивно вычленить информацию о всех - и позвольте мне временно получить
это из пути.
Игнорировать меня.
ОК.
>> Поэтому я хочу, чтобы временно вычленить информацию о все экземпляры слова рыбы.
И вот, что я делаю это оглавлению рекурсивно для слова рыбы.
И звезда означает по всем из них файлы в этом каталоге.
И так он дал мне доступ запрещен, потому что это не разрешено читать, что
конкретный файл.
Но он нашел рыбу в файле, испытания.
>> Я мог бы также сказать, в частности, только я хочу посмотреть в файле бла, в
этом случае он ничего не найдете.
Я только хочу посмотреть в файле, испытания.
Он найдет рыбу.
Это довольно полезная команда знать в целом.
Есть несколько альтернатив для Grep , которые должны быть более
программист доброжелателен, но я, как правило, по-прежнему падать обратно на Grep.
Вопросы?
ОК.
>> Есть ли другие команды?
О.
Просто одноразовым тот, который я всегда найти будет весело будет кал.
Так замечают, когда я нахожусь в этот прекрасный полноэкранный режим, у меня нет, как верх
Панель инструментов или что-нибудь.
Так кал просто дает мне миленький календарь, правильно
теперь отрезаны, я полагаю.
Но миленький команда.
>> ИОСИФ: Это [неразборчиво].
Другие команды, которые вы, возможно, видел включают лязг и сделать.
Мы пойдем на них в более подробно позже.
Но если вы работаете на PSET, вы должны быть
знакомы с тех.
>> ROB: Хорошо.
Вопросы по командной строки вещей?
Хорошо.
Так давайте перейдем к некоторым С-связанные вещи.
Переменные математика.
ОК.
Так же, как мы должны были математику в пустом, Вы можете также использовать математику в С.
>> Прежде чем мы перейдем к тому, что полностью, так переменные.
Помните, что всякий раз, когда вы объявляете переменная, например целое х или флоат у, вас
должны дать это ввести до имя переменной.
Так типы, которые мы видели до сих пор, внутр, поплавок, дважды, долго долго, что я
на самом деле не знаю, если мы в Видно, что до сих пор.
>> Есть некоторые остальные.
Мы видим символ.
Там в короткий, которая, как это противоположностью долго долго, где это
меньше, чем целое.
Мы также видели, строку.
Так что особенного в строку?
Почему я говорю, что это не совсем, как межд?
>> СПИКЕР 4: Это действительно не существует.
>> Роб: Да.
Таким образом, единственная причина, у нас есть строка объясняется тем, что, когда вы делаете
хэш, включают cs50.h.
И мы увидим примеры этого позже - о, что не справиться с этим хорошо -
где cs50.h делает что-то вдоль линий типа
определение, символ звезды, строка.
>> И так это говорит, что мы даже не знаю, что символ звезды еще.
Но это говорит мы хотим строку.
Любое место, вы используете строку, вы можно было бы с помощью сЬаг звезду,
который на самом деле является одним из видов, что существует в языке Си.
Но мы вернемся к этому.
Да, и это идет обратно.
Аккуратные.
>> Так же и с BOOL где истинные и ложные.
Это действительно не встроенный тип в С. Вместо этого, это просто, это имеет
нулевое значение?
Тогда мы просто рассмотреть это ложными.
Имеет ли это значение -
ну, это имеет любой значение, которое не равно нулю?
Тогда мы будем учитывать, что это правда.
Так одна правда, два, правда, ничего нуля верно.
Итак, это те,.
Вопросы об объявлении переменных и типы переменных и все, что?
Да.
>> СПИКЕР 4: Для долго долго, в книге, он сказал, что должен был быть длинный длинный внутр.
Но просто долго долго работать?
>> Роб: Таким образом, эти модификаторы типов.
Так внутр х.
Таким образом, мы можем также сказать, без знака Int х.
Мы можем сказать, короткая внутр х.
Мы можем сказать, долго долго внутр х.
Но в значительной степени любой из этих вещей, которые я только что сказал, без знака Int, короткий интервал,
долго долго внутр, вы можете избавиться от внутр и он просто будет считать,
что вы имели в виду Int.
Так неподписанных х, которые просто означает -
Вы знаете, как правило, с междунар, Вы можете сказать х равна негативное 3?
С без знака Int, вы не можете.
>> ИОСИФ: И снова, для камеры, Вопрос был, в чем разница
между долгого долгого междунар и просто долго долго?
>> Роб: Да.
Так что я почти никогда не написать длинный длинный Int.
Я напишу долго долго.
>> ИОСИФ: Есть вопросы?
>> Роб: ОК.
Так глупо немного напоминанием о том, что, как мы объявляем переменную и инициализировать
переменная и объявить еще один переменной и инициализации
все в одном шаге.
Таким образом, объявление переменной и переменная инициализации нет
к, но может быть на той же строке.
>> Поэтому у нас есть стандартные математические операторы что вы привыкли к -
плюс, минус, деление, раз.
Там также модулю, который мы будем видеть.
Существует нет, по крайней мере, С встроенный блок
возведение в степень вставки оператор.
Ну, есть оператор вставки, но это не власть.
>> ИОСИФ: Но это не возведение в степень, Да.
>> Роб: Не используйте каретку предположить, что это означает
как квадрат или любой другой.
Таким образом, некоторые вещи, чтобы иметь в против о разделении.
Я буду стоять.
Так заявил инициализации ответ.
Так мы говорим, поплавок ответ равен 1, деленной на 10.
Распечатать ответ до двух десятичных знаков.
>> И это та вещь, что я бы человеку Printf чтобы выяснить, что
какого черта делает%, точка, 2f значит?
И это просто означает,, ну, игнорируя 0,2.
И%, е то, что мы используем печатать плавать.
0.2 говорит, печати, плавать до двух десятичных знаков.
Так эта программа имеет ошибку, и вы, возможно, видел это раньше в некоторых
до CS Конечно.
Но что это за ошибка?
>> СПИКЕР 5: Ноль.
>> Роб: Да.
Поэтому, когда мы говорим, ответ равен 1 делится на 10, мы хотим, чтобы
ответить равным 0,1.
Но 1 делится на 10, 1 Целое число, 10 является целым числом.
И поэтому, когда мы делаем целое разделенное на целое число, мы собираемся вернуться
целым числом.
Так 1 делится на 10 составляет 0,1.
>> Поскольку она должна дать нам целое, это просто собираетесь выбросить, что
запятой и сказать, что ответ 0.
И поэтому, когда мы печатаем ответить здесь, он собирается напечатать 0,00.
>> ИОСИФ: И как примечание, это на самом деле отбрасывает то, что после того, как
десятичной точки.
Так что если вы вместо этого должны были 6 делится на 10, можно подумать, что это даст вам
0.6, а затем вы бы округлить до 1.
Но на самом деле, что происходит, когда она введите Задачи так, что она падает, что является
после запятой.
Так 0,6 действительно становится 0.
>> Роб: Да.
И мы будем говорить TRUNCATE для этого.
Поэтому, когда вы приведен к междунар, десятичная обрезано.
Таким образом, исправление, что - есть на самом деле два.
И я собираюсь сделать, что второй, потому что это одно гораздо легче исправить.
>> Так что исправление использовать поплавки в дивизионе.
И в самом деле, у вас есть только сделать один из них с плавающей точкой.
Но это несколько яснее всего сделать оба плавает.
Так 1,0 деленное на 10,0 является деления двух поплавков.
Таким образом, ответ будет в конечном итоге поплавок, и так вы будете
Правильная печать 0,10 здесь.
>> То, что не работает так хорошо О том, что, ну, конечно, это было легко
достаточно, чтобы преобразовать 1 до плавать, сделав его 1.0.
Но что, если вместо того, чтобы у нас было два целых числа как Int х равна 1 и INT у
равна 10, а затем мы хотели чтобы у х, деленное на у?
Так что это не легко просто сделать X.0 или что-то.
>> Таким образом, исправить, чтобы, что бросает.
Так литья является способом в C для преобразования от одного типа переменной к другому.
Таким образом, здесь, 1 является целым числом.
И, поставив этот поплавок перед это, мы литья 1 к поплавку.
И таким образом, это будет конвертировать 1 к 1,0.
И это будет конвертировать 10 к 10,0.
>> И тогда все ведут себя подобно предыдущая версия, которую мы только что показали
где, как и ожидалось, мы получаем 0,10 и он будет печатать, что.
И мы можем сделать это с переменные, тоже.
Так что можно сказать, поплавок х деленное на число с плавающей точкой у.
>> ИОСИФ: Есть вопросы?
>> Роб: Так же, как в обычной математике, у нас есть приоритет операций.
Таким образом, в математическом классе, вы, скорее всего называть его порядок операций.
Здесь, официальный термин приоритет операторов.
Но приоритет операторов, или наиболее операторы, является, как вы ожидаете.
>> Так же, как в математике, 2 раза 10 собирается быть сгруппированы более тесно, чем
это 10 разделить на 2, а затем 2.
Порядок операций, он будет делать 2 раз 10, 10 делится на 2, а затем
он будет делать 20 плюс 5 плюс 2.
Так что это, как и ожидалось, и вы можете использовать скобки для группирования выражений.
Вы не можете использовать квадратные скобки для группирования выражений.
Да?
>> СПИКЕР 5: Не могли бы вы на самом деле просто вернуться одну секунду?
Можете ли вы бросить Int в строку?
>> Роб: Так что в C, можно привести ничего Вы хотите все, что угодно.
Это не значит, что это хорошая вещь, чтобы сделать.
Поэтому, когда вы разыгрываете Int чтобы строка, что означает -
и мы получим в этом гораздо более тщательно -
>> ИОСИФ: Много позже.
>> Роб: Я не хочу сказать, много позже, поэтому я попытался изменить свой приговор.
Мы войдем в него гораздо более тщательно позже, где действительно, когда у вас есть
Переменная строка -
поэтому строка может быть сколь угодно долго, не так ли?
И мы говорили, что внутр является четыре байта и долго долго восемь
байт и поплавок на четыре байта.
Так строкой, так же, как Int, имеет только определенное количество байтов к нему.
И это будет четыре байта.
>> Но строка может быть довольно неограниченно долго, не так ли?
Так привет мир уже, если это 10 символов или любой другой, что уже
будет в течение 4 байта Я может поместиться в строку.
И так, как струны действительно работает в том, что они находятся там, где в памяти, что строка
в настоящее время хранится.
>> И так здесь, когда я говорю, строка х равно привет мир, внутри х является
просто говорю, о, привет хранится мир именно в это место в памяти.
Так что, если мы пытаемся бросить целое число строка, то мы пытаемся интерпретировать
некоторые случайные часть памяти в виде строки.
И это почти всегда ломает вещи.
>> ИОСИФ: Но если это смущает Вы, мы будем покрывать его
более подробно позже.
>> Роб: Да.
Это где вы собираетесь чтобы попасть в указатели.
И, что является значительным кусок две недели этого курса.
>> СПИКЕР 6: Работает ли это как объекты на других языках или нет на самом деле?
>> Роб: Так на других языках, объектов будут представлены с помощью указателей.
Это не одно и то же, все же.
Любые мысли?
>> ИОСИФ: Нет.
Никаких мыслей.
>> Роб: ОК.
>> ИОСИФ: Следующая.
>> Роб: Просто идти с этим.
Хорошо.
Так по модулю.
Так же, как у нас есть плюс, минус, разделить и умножить.
Так по модулю является одним вы можете не видели раньше.
И это как раз говорит, дают мне остаток.
Так +55% 10.
Остальная часть делает 55 делится на 10 будет 5.
Так 55% 10 5.
И 3% 5 будет 3.
8% 8 будет 0.
16% 15 будет 1.
>> ИОСИФ: Одна вещь, с этим отметить, тоже может не работать, как ожидалось
если вы используете отрицательное число.
Так отрицательная 5% 4, некоторые люди Можно подумать, что это -
что бы вы подумали отрицательный 5% 4 будет?
>> СПИКЕР 5: Один.
>> ИОСИФ: Таким образом, некоторые люди говорят, что один, некоторые люди говорят, отрицательную.
Но то, что -
>> Роб: Я бы даже не имеют сказал один из них.
>> ИОСИФ: Два, извините.
Некоторые люди говорят, -
>> Роб: Три.
>> ИОСИФ: Три?
>> Роб: Отрицательный -
то, что было - отрицательный пять -
>> ИОСИФ: Три, три, три.
Извините.
Потому что по модулю, вообще говоря, когда вы видели его в другом месте, это обычно означает,
вернуться положительное число, не так ли?
>> Роб: Так что, когда мы говорим в математике,% 10 х, они, как правило, хотят, чтобы дать вам -
если мы мод на 10, то мы ожидаем, что получить номер от 0 до 9.
В здесь, что это не так, что вы получите вернулся отрицательные числа.
>> ИОСИФ: Так отрицательная 5% 4 будет отрицательным 1.
>> Роб: Но это редко, что вы мо-Ing отрицательные числа с самого начала.
Пропустите это.
>> ИОСИФ: Да.
>> Роб: Мех.
ОК.
Так что последнее, что нужно отметить, о поплавки является это опасное поведение,
но поплавки не точная представление.
Так возвращаясь к байт снова, помните что внутр всегда четыре байта и
Поплавок всегда четыре байта.
Так пример Лукаса довольно хорошо.
>> Так что думайте из 1 разделен на 3.
Так 0,3333333.
Если у меня есть только 32 бита, как может Я храню 0,33333 именно?
И, может быть, по какой-то причине, вы говорите, Все в порядке, хорошо, давайте просто скажем,
что именно этот 1011001, давайте просто сказать, что должно быть 0,333333.
Ну, у вас есть только конечное число эти биты, так что это невозможно
представляют каждый с плавающей точкой ценность, данная всего 32 бит.
>> Ну, это невозможно представить любой с плавающей точкой ценность, данная бесконечная -
хорошо, учитывая любое конечное число битов.
Так что вопрос здесь, ну, когда мы использовали печатать до двух десятичных знаков,
мы правильно получить ответ 0,10.
Но под капотом, это действительно храниться как можно ближе к
0.10 как тех битов может представлять.
Является ли это на следующем слайде?
Или не так ли?
>> ИОСИФ: Да, это то, что.
>> Роб: Blegh, blegh.
>> ИОСИФ: Да, вы можете просто тянуть ноты немного.
>> Роб: Я просто собираюсь для увеличения в на последнем на что.
О, черт возьми, это [неразборчиво].
Так что число.
Это то, что будет напечатано если мы запустим эту программу.
И заметьте, что на самом деле не имеет большого значения если мы только заботясь о как
2:58 знаков после запятой.
Как мы только первоначально напечатаны 0,10, и именно поэтому мы не видели ничего плохого.
Но как только мы начинаем получать в точнее, точное число, что это
представляя, мы видим, что она не может точно представляют 0,1.
>> И часть проблемы здесь, как, Все в порядке, все в порядке, но, хорошо,
во-первых, что, если мы попытались сделать, Ответ равна равна 0,1?
Разве что собирается вернуться верно или неверно?
И поэтому трудно сказать.
Я думаю, что это на самом деле может вернуться верно.
Будет ли первый -
Я не знаю.
Ответ как только вы начинаете дело со значениями с плавающей запятой, вы в значительной
много не должны использовать равенство из-за этого неточности.
>> И все вы знаете, что это сотая после запятой, что
с плавающей точкой не смог правильно обрабатывать.
И так равенство только не увенчаются успехом, даже хотя число - если бы Ты был
используя точные цифры, цифры должны были точно такими же.
Это в течение как 50 расчеты с использованием этих плавающих
значения точки, ошибка может построить все выше и выше и выше, и
вещи просто ошибиться.
>> ИОСИФ: И были действительно известные примеры этого случая.
Как инженеры НАСА получили это неверно, что приведет ракеты взорваться в
воздух после того как они были начаты.
И много таких вопросов, как, что.
Так что да.
>> СПИКЕР 6: Когда вы говорите, 0,3 п, это усечение остальное?
Или это округлить вверх или вниз?
>> Роб: Будет Printf вокруг него?
>> ИОСИФ: Я думаю, что Е Усекает.
>> Роб: ОК.
Так что мы можем так же идут в противоположном Направление этого, где в этом случае
ближайший она может представлять 0.1 была с этим номером.
Ближайший он мог бы представляют 0,2 находится в противоположном
направление, +0,199999996356 или что-то.
Так что, если мы пошли в этом направлении вещи, то Е 0.3 е вернется
1.99 вместо 2.00.
>> ИОСИФ: И я не совсем уверен на что.
Возможно, вы захотите написать небольшой, немного Программа просто проверить, что.
>> Роб: Хотя, то, что мы уверены в том, что если бы вы попытались бросить, что в
внутр, и литья к междунар собирается привести к его усечение десятичные, если
попытке привести 1.9999999 к междунар, вы получите 1.
И поэтому нужно использовать круглый функция в математической библиотеки.
Вопросы?
ОК.
>> ИОСИФ: Так как перейти к условиям и логических выражений.
Таким образом, вы видели их прежде.
А на самом деле, позвольте мне убедиться, что мои компьютер в нужном формате здесь.
Пространство.
К сожалению, мы собираемся иметь дело немного с обрезанием по краям.
>> Но да, вы, ребята, видели это прежде в пустом.
Так что это прямо здесь является выражением , который используется в
условный оператор.
Так ответить больше нуля воли сказать вам, истинным или ложным.
И это действительно важно, потому что они позволяют нам представить
Логика в наш код.
>> Так, например, эта программа написано в пустом, который просит пользователя
для целого числа и говорит им ли целое число, которое они дали вам было
положительное или отрицательное число.
И преобразование сюда, чтобы увидеть это Вы сначала распечатать заявление,
дайте мне целое.
А потом вы просите у них целое число.
>> И тогда вы использовать условную логику над здесь, чтобы проверить, является ли это число
на самом деле больше нуля или нет.
Так вот у нас есть логическое выражение внутри условного Если заявление.
Есть ли какие-либо вопросы?
Есть ли вопросы о том, что?
ОК.
>> Таким образом, есть больше, чем просто больше, чем, конечно.
Вы можете построить логические выражения используя большинство видов вещей, которые вы
будет думать о в математике.
Так больше.
Это должно быть меньше.
Извините.
И расстояние.
>> Роб: не дай Бог вы оставите его.
>> ИОСИФ: Хорошо.
Так больше чем, меньше чем, больше чем, или равно, меньше
чем, или равно.
Мы используем двойные равных для проверки равенство, потому что один равняется средства
Назначение, верно?
Да.
И тогда мы сможем также не равна по используя восклицательный знак, на равных.
>> И этот символ восклицательный знак может также быть продлен так, чтобы, если вы хотите
инвертировать какой-либо Boolean выражение, вы можете сделать это.
Так что это будет оценить в верно только если ответ менее
или равно нулю.
Есть вопросы по этому поводу?
ОК.
>> Таким образом, вы можете также комбинировать их выражения, используя логические И и
Логическое ИЛИ.
Так что это просто символ А, который должен быть сдвиг, 7.
И это символ труба, которая не строчная Л. Это один
вот прямо над входной ключ.
Таким образом, вы используете два из них, чтобы символизировать логично И логично Или.
>> Так что это будет возвращать только верно, если ответ является один, два, три или четыре.
И это будет возвращать только верно, если ответ выходит, что с обеих сторон.
Так что это не один, два, три или четыре.
И то, как вы будете использовать что в выражении -
>> Роб: Или ноль или пять.
>> ИОСИФ: Ноль или пять.
Извините.
Да, да, да.
ОК.
И здесь сейчас, так же, как будет использовать это выражение, меньше
выражение сторона Если условно заявление, вы бы также использовать его в
Точно так же просто положить его внутрь скобки из заявления If.
Так что это Е только стрелять, если ответ является один, два, три или четыре.
Любые вопросы по сочетая выражения?
>> Так что есть еще один условный конструкт мы называем If / Else.
Так в основном, это теперь означает, ОК, если то, что я хотел проверить, не был
правда, затем перейти к другой, и выполнить эту другое действие.
Таким образом, в данном конкретном случае, я спросил пользователь для целого числа.
Является ли целое число, большее нуля?
Да?
Ну, тогда они выбрали положительное число.
Если нет, то он должен иметь был отрицательным или нулевым.
Таким образом, вы выбрали отрицательное число или ноль в этом случае.
Да.
Или нулю.
>> А потом у нас также есть If / Else, Если и остальное.
Так что это позволяет нам выполнить последовательность вещи только тогда, когда первыми неудачу.
Таким образом, в этом случае, в настоящее время мы делаем последний вы выбираете нулю.
Так что, если они ни выбрали положительной, ни отрицательное число, то они должны
выбрали нулю.
Так что просто идет вниз цепи, как это.
>> Так пример того, как Если отличается от -
If / Else отличается от просто последовательность Иф.
И это общий вопрос, который люди спрашивают, ну, если вы получаете, как
95 в CS50, что это будет Программа сказать вам?
>> СПИКЕР 5: Вы получили А.
>> ИОСИФ: Да.
У тебя каждый один из тех, правильно.
Вы получили А, у тебя есть B, вы получил счет и D, не так ли?
Так все это получить оценку для того.
Таким образом, в то время как 95 больше, чем 90, это также больше 80, это также
больше, чем 70, и это также больше, чем 60.
Таким образом, вы получили все эти сорта.
И я предполагаю, что вы бы только хочу А.
>> Способ исправить это, чтобы заменить те, с остальное / Если 'ы.
Таким образом, в этом сценарии, он видит, что 95 является больше, чем 90, и затем он делает
не оценить остаток из утверждений.
Любые вопросы о том, что?
>> Так что есть еще один условный вид структура, которую мы имеем здесь, который мы
вызвать переключатель заявление.
Так что это позволяет в принципе проверить что значение ряда вы положили
в распределительном заявлении есть.
Таким образом, в этом сценарии, мы переводим от п и мы говорим, о, если п
один, а затем распечатать это заявление.
И затем перерыв, а это значит, выход из переключателя заявлении.
>> Если это не был один, то, ну просто в конце концов проверить все эти случаи.
И так он проверяет, если это один или два или три, и он печатает соответственно.
И то, что это ключевое слово по умолчанию здесь средства, если они не ввести любой
из тех, то говорят Неверный.
Так скажем, я прошу п и пользователь дает мне четыре.
Ну, это не соответствует ни одной из тех случаев, так что это будет распечатать то, что в
раздел по умолчанию.
Да, вопрос?
>> СПИКЕР 5: Можно ли использовать Boolean выражения вместо
один, два, или три?
>> ИОСИФ: Таким образом, вопрос вы можете использовать Логические выражения вместо одного,
два, и три?
А в С, я считаю, вам не могу этого сделать.
Но на других языках, которые вы, возможно, столкнуться в конце
семестр, как JavaScript, вы можете.
Ну, вам придется вычислить первый что значение, а затем использовать его в
переключения заявление.
Да?
>> Роб: Так что часть в пользу коммутатора заявления будет думать о если вы сделали это
как If / Else, так как, если п равно равен единице или любой другой.
Остальное / Если п равно равняется два, что угодно.
Остальное / Если п равно равна трем.
Так образом программа будет работать это будет последовательно снижаться, что список
и проверить, является н один?
Не-а.
Является н два?
Не-а.
Является н три?
Да.
Сделайте это.
>> В то время как с выключателем заявлений, это на самом деле в состоянии собрать, чтобы это было
очень быстро.
И как только он говорит переключатель, это говорит, все в порядке, п два, я
немедленно собирается прыгнуть туда, где Я должен начать выполнение.
Я не собираюсь сначала проверить, является п один, п два?
Он может сразу начать делать что он должен делать.
>> И по этой причине, он не может принять логические условия.
Или же она должна была бы сделать последовательное, вроде бы, все в порядке, это н
больше нуля?
Остальное п больше 10 или любой другой.
>> ИОСИФ: В этом случае, если вы использовали Если / иначе, если, то переключатель будет
запустить примерно в три раза быстрее, чем если / иначе, если.
Мы можем организовать переключатель в таких образом, что мы не ломаются
после каждого из случаев.
Так что в этом случае, я разбиения Номера, которые мы выбираем в один и
две из которых не высокие цифры и три из которых большое количество.
>> Таким образом, в этом случае, если п равно одному или двум, это выйдет на случай, а затем он будет
провалиться, потому что нет перерыва.
И это будет в конечном итоге здесь.
Так что, если мы выбираем один, он будет делать Printf а затем разбить так что ни один из
это выполняется.
И, конечно, если они входят в трех или что-то еще, то это будет пропускать
те, а не пойти туда, и это будет выполнять вместо
соответствующие линии.
Есть ли вопросы о том, что?
Да?
>> СПИКЕР 4: Не могли бы вы получите ошибку, если вам был перерыв после случае, если один, но это
не есть что-то для него сделать?
>> ИОСИФ: Таким образом, вопрос бы вы получаете ошибка, если у вас есть перерыв после
случае, если один, но нет ничего, чтобы сделать?
И ответ будет отрицательным.
Вы не будете на самом деле получите ошибку.
Да, мм хм.
>> Так как своего рода небольшие изменения здесь, Я собираюсь поставить Printf здесь.
Упс.
Итак, что бы это напечатать, если Я положил одну в качестве входных данных?
Да.
Это скажет вам, это не займет много большое количество в два раза, не так ли?
Потому что это будет хит, что первый случай, она не будет ломаться, и она упадет
через ко второму случаю.
Любые вопросы о том, что?
>> Роб: Было ли у вас еще один вопрос?
>> ИОСИФ: Хорошо, охладить.
Хорошо.
Так что есть что-то еще мы называем тройной оператор, который в основном
альтернативный синтаксис делать Если и тогда остальное.
И это позволяет делать все это в одной строке.
Таким образом, в этой конкретной программе, Я прошу у пользователя п.
И если п больше 100, я говорю их они выбрали большое количество.
Остальное я скажу им, что они взял небольшое число.
>> Так что мы можем использовать эту очень долго синтаксис, Строка, S, а затем проверить, если п
более 100 и назначить это соответствующим образом.
Но мы можем сделать это гораздо более кратким С помощью этой тройной синтаксис оператора
который включает в себя вопрос Торговая марка и двоеточие.
Таким образом, знак вопроса по существу задать вопрос, не так ли?
>> Роб: Может быть, увеличить на что.
>> ИОСИФ: Да.
Хороший вопрос.
Так что это тройной оператор.
Я сначала задать вопрос, п больше, чем 100?
Если это так, то я исполню первый часть перед двоеточием.
Если это не так, то я исполню Вторая часть после двоеточия.
Так, если п больше 100, Затем он выбирает высокое и ставит
что в строку с.
Если п меньше 100, он выбирает низкий а затем помещает это в строки с.
Так что будет конденсироваться этот большой кусок вниз, в той единственной строки.
>> СПИКЕР 5: Это популярны?
>> ИОСИФ: Да, это является довольно популярным для вещи, где, по существу, которые вы хотите
у задание на основе своего рода состоянии.
И в этом случае, мы пытались чтобы присвоить значение строки с.
Это не так -
Я думаю, я на самом деле не предпочитают это в других случаях.
Но это особенно полезно для этого задания.
>> Роб: Это довольно распространенная схема где у вас есть переменная, которая
вы собираетесь сказать, если что-то, установите эта переменная одному значению; иначе положить
эта переменная на другое значение.
И это сценарий где использовать тройной.
>> ИОСИФ: И вы экономите много линий, верно?
И это только делает ваш код, возможно, немного более читабельным.
Да, вопрос?
>> СПИКЕР 6: Для тройных, могли бы вы пойти, равно строку с сек, знак вопроса?
И тогда вы могли бы, скажем, пять различных вариантов.
И в зависимости от того, что количество п был, что бы вы выбрали один из тех?
>> ИОСИФ: Так вопрос в том, есть ли рода синтаксиса где вы можете сделать строку
с равно п, а затем более двух опции после этого знак вопроса?
И простой ответ: нет, нет действительно хороший способ сделать это, если только
Вы хотите гнездо многократного тройных операторы внутри друг друга.
>> Вы могли бы сделать, как п больше 100, вопросительный знак, а потом еще
тройной оператор, п больше 50, вопросительный знак, и гнездо его таким образом.
Но в этом сценарии, ваш код это получать вид нечитаемым, и грязный,
и было бы лучше просто пойти в If / Else заявление в этой точке.
>> Роб: А также, как примечание стороны, PHP неправильно реализует тройной
оператор, что вложенные тернаров даже не работают так, как должны.
>> ИОСИФ: Да.
Так что становится немного запутанным, особенно, когда вы идете
на разные языки.
>> Роб: Это заблуждение достаточно, что языки неправы об этом.
>> ИОСИФ: Так на самом деле, просто чтобы уточнить, все ли знают, что это
% С делает здесь?
Любые вопросы о том, что?
Я думаю, только для камеры,% с в основном позволяет нам поставить заглушку
на строку.
А потом в конце, мы указываем, что Переменная мы хотим поставить в это
место держатель с.
Так что в основном принимает сек и это ставит его в здесь.
И тогда это будет распечатать, вы выбрали высокая или вы выбрали меньшее число.
ОК.
>> Так петли позволяют выполнять вещи круговыми движениями, не так ли?
Вы, возможно, столкнулся с этим в Царапины в виде Навсегда петли
или Повторяйте До или Повторить частности количество раз.
Так почему это хорошо для нас?
Ну, в С,, у нас есть это песня реализованы в пустом, что
поет, это песня который никогда не заканчивается.
Это просто идет вперед и вперед и на веки веков.
Ну, вы не можете действительно сделать программу что имеет бесконечное число Printf
заявления в это, правильно?
>> Таким образом, в данном конкретном случае, в одну сторону что вы могли бы сделать эту работу и
для того чтобы вывод навсегда является вместо этого использовать то время как цикл.
Так Хотя цикл будет выполняться что в теле двух фигурных скобок, что
принадлежит ему на основании того, что условие.
Таким образом, в этом конкретном примере выше, если мы хотим напечатать это навсегда, что
мы могли бы сделать?
Ну, конечно, не так ли?
>> Так что это своего рода сочетает в себе идею некоторого логического выражения
вместе с петлей.
И мы узнали о булевых выражения ранее.
Поэтому, когда условие внутри что то время остается верным, этот цикл
будет выполнять дальше и дальше и дальше.
И в этом случае, если мы просто поставить его с правдой, это вызывает бесконечное
петля, которая печатает песню и на и на как мы желали, прежде чем без
имеющий программу, которая имеет бесконечное количество Printf отчетности, которая является
невозможно.
>> Так более убедительно, хотя, Вы можете использовать это с
переменной и состояние.
Так скажем, мы хотим повторить Фраза, совершенно невменяемым, 10 раз.
Так что вы можете сделать с While петли Вы можете инициализировать счетчик
переменная за пределами В то время как цикл до 10.
И то в основном, каждый раз вы идете через время цикла, вы распечатать
заявление, а затем вы уменьшаете переменная-счетчик до в конце,
в какой-то момент, как только мы вычитаем I достаточно раз, 1 из I достаточное количество раз -
и просто уточнить, я минус минус означает, что я равна I минус 1.
>> Это будет в основном приносят I до Точка, в которой, как только я попал нулю, это
не состояние уже не так и так что выходит из петли.
Так совершенно невменяемым печатает только 10 раз.
Любые вопросы о некоторое время цикла?
ОК.
>> Так что есть способ, которым мы можем делать то, что мы просто сделал в более сжатой форме с
что мы называем Для цикла.
Так петля Для состоит из инициализация, условие, и
обновление, так же, как у нас было раньше в это время цикла.
Так что давайте взглянем.
В этом время цикла, у нас были инициализации, тогда мы должны были
состояние, что мы проверили.
И тогда мы должны были обновления шаг на самом верху.
>> С петлей для, это в основном берет эти три вещи и конденсируется
вниз, в одной строке.
Таким образом, первое, что он делает в Для цикла является инициализация.
А потом вы с запятой, а затем Вы делаете условие, которое я
больше нуля идет туда, и затем шаг обновления.
Так что это получает осуществляется на самого конца тела цикла.
Таким образом, эти две программы по существу, эквивалентны.
>> Есть вопросы?
Так что одно отличие между этими двумя?
Может кто-нибудь указать на это?
Это может быть немного тоньше.
Это просто очень небольшая разница.
Да?
>> СПИКЕР 5: Вы не могли бы использовать переменная Я пределами цикл
[Неразборчиво]?
>> ИОСИФ: Совершенно верно.
Так что это то, что мы доберемся до позже назвал переменная область.
Но по существу, это десятичного I жизнь за пределами этого время цикла.
Поэтому, как только это Хотя петля делается выполнения, я буду в состоянии использовать я позже
на в программе.
>> В то время как с этим Для цикла, это внутр Я задается область внутри этого цикла.
И поскольку он находится внутри этой части петли для, который начинается
в скобках и заканчивается фигурная скобка там.
Все, что объявляется внутри здесь не может быть использована вне.
Так что, если я пытаюсь использовать I пределами, оно будет скажите, необъявленную символ.
И по сути, я бы не стал быть в состоянии использовать его.
>> Роб: И хорошо, 10 лет назад, в буквально все случаи, фигурные скобки являются
что вы использовали, чтобы определить, видимости переменной.
Так там, Int я равна 10 объявлен внутри этого
набор фигурные скобки.
И так то до тех пор, как вы пытаетесь использовать I до этого фигурной скобки, это прекрасно.
Вы можете увидеть, когда вы набираете сделать, вам см. тире, тире, STD, равно, C99.
>> Так что это более поздняя версия C, что GCC реализовал, что также дает
этот ярлык.
Так что это используется для не пустят в С. А Вы можете понять, почему, потому что это внутр
Я находится за пределами этого фигурной скобки, но он по-прежнему считается в
Масштабы этих фигурные скобки.
Но это очень удобная вещь, и поэтому он является хорошим продолжением.
>> ИОСИФ: Есть вопросы?
ОК.
Так в чем же полезнее, что иногда Вы хотите рода динамизма в
ваш цикл, не так ли?
Вы же не хотите, чтобы просто обязательно печатать полностью невменяемым все время, вы
хотите отсчитывать от 10 или что-то.
И поэтому вы можете использовать переменную счетчик Внутри этого цикла, а также.
И в этом случае, эта программа просто отсчет от 10 до упора.
И что это не печатать?
Это не печатает нулю, Хорошо, потому что, когда -
Да, это также не печатает 11.
>> Так что не печатает нулю, потому что, когда Я равен нулю, помните, он оценивает
условие прежде чем он идет на выполнить тело цикла.
И когда я равна нулю, это неверно, так он не распечатывать отсчет
нулю, он просто печатает счета вниз 10 все, вплоть до 1.
Если мы на самом деле хотели, чтобы распечатать нулю, то мы бы поставить знак равенства
после этого больше, чем знак.
ОК.
>> Так один из способов сделать проверку входных данных, которые когда вы попросите пользователя делать
что-то, вы хотите убедиться, что они следовать вашим указаниям, заключается в использовании
В то время как цикл, не так ли?
Таким образом, в данном конкретном случае, я прошу для положительного числа, а затем я
ожидает ввода.
>> А потом я проверил Хотя вход меньше нуля, продолжают спрашивать их.
Так что, пока они дают мне номер что не является положительным, спрашивают,
продолжать спрашивать, продолжают спрашивать.
Но то, что является своего рода странно об этом?
Или то, что, кажется, не оптимальная о эта структура прямо здесь?
Любой?
Да?
>> СПИКЕР 6: Вы повторяя инструкция дважды.
>> ИОСИФ: Верно.
Поэтому у нас есть два Printf заявления здесь, не так ли?
Так что есть способ, которым мы могли бы получить это просто до одного, что бы сделать наш
Код легче читать и немного более чистой.
И тогда мы не должны были бы уже Получить в два раза, а также.
И один из способов вы можете сделать это с помощью Сделай то время как цикл.
>> И Сделай Хотя цикл в основном другая форма какое-то время цикла, где
все, что внутри фигурных скобок запускается на выполнение по крайней мере, один раз.
Так здесь, я заявляю, внутр вход, вне первой.
А потом я просто сказать, сделать это Инструкция в то время как вход
меньше нуля.
Так он попадает в делать в первую очередь.
Он всегда будет выполнять это по крайней мере один раз, так будет всегда попросить пользователя
для ввода хотя бы раз.
А потом он оценивает этот вход, и это продолжается по кругу.
Да, вопрос?
>> СПИКЕР 6: Есть ли способ сделать это [Неразборчиво] типы, как, если вы говорите,
GetString, и кто-то [неразборчиво]
есть ли способ, чтобы [неразборчиво]
>> ИОСИФ: Так вопрос в том, есть ли способ сделать проверку входных данных, если пользователь
не ставит в праве тип переменной?
Так что, если мы просим для междунар и они дать нам строку вместо.
И в функциях, которые мы реализуем для вас, GetInt, GetString во всех
те функции, они на самом деле уже делать такого рода базовой системы ввода типа
проверка под капотом.
Так что если вы используете функции, которые мы дал вам, вы действительно не должны.
>> Но если вы хотите, чтобы выглядеть более о том, как вы реально можете сделать это, вы можете посмотреть
под капотом на файл I/O--
не подать, стандартные функции ввода / вывода как чтение из стандартного ввода и
стандартный вывод.
И вы можете получить лучшее представление о том, как вы могли бы сделать это.
>> Роб: Один из вопросов, тем не менее, именно на примере вы
сказал, вы ожидаете строку и я ввести Int.
Как бы вы сказать, разница между намеренно желая
Строка 123 против желая десятичного 123?
не так строка, это в значительной степени нет никакого проверка, это просто то, что они
вступил вы интерпретировать в виде строки.
>> Int легче, потому что независимо от того, вход вы берете от пользователя, вы
всегда принимая строку.
И так, что строка, которую вы можете затем проверить, все из них
фактически цифрам?
>> ИОСИФ: ОК.
Любые вопросы о сделай то время как цикл?
>> Роб: Да, и это тоже -
возвращаясь к области, несколько общих ошибка пытается использовать некоторые местные
переменная изнутри этой Do-While петля внутри этого условия.
А на самом деле, если мы просто избавились от это и сказал, внутр вход равна
GetInt, то компилятор будет кричать на нам, потому что вход не существует
за пределами рамки эти фигурные скобки.
>> ИОСИФ: И именно поэтому мы нужен этот модельный ряд здесь.
ОК.
Таким образом, вы можете также выйти из цикл рано, если вы хотите.
Так что это другой способ реализации, что мы просто реализуется.
И вместо того, используя условие в скобках, мы используем
Если заявление внутри тела из Сделай то время как цикл.
>> А в принципе, когда вход наконец больше нуля, то мы будем
вырваться из петли.
И поэтому мы будем изо всех вплоть здесь.
И вы можете видеть, что это будет вероятно быть предпочтительным в этом
сценарий, потому что это немного немного чище и немного
бит легче читать.
В то время как это, вы как бы есть лишние строки в нем.
Это просто немного уродливее, Я думаю, в некотором смысле.
Да, вопрос?
>> СПИКЕР 4: ломается только получить Вы из одного набора скобок?
>> ИОСИФ: Верно.
Таким образом, вопрос сломает только чтобы вы из одной петли?
И ответ будет положительным.
Так что если у вас есть вложенные циклы, для Например, если у меня есть Для внутр я равна 0
до 10, а затем Для Int J не равен 0 до 10, если я вырваться из внутренней
цикл, я все равно буду идти к внешней петле.
Так что буду продолжать выступать операции на улицу.
Любые вопросы о том, что?
Да?
>> СПИКЕР 5: Но сломать только функции для фигурных скобках, не для других
заявления?
[Неразборчиво]
>> ИОСИФ: Таким образом, вопрос будет перерыв только функция для петель в отличие от
другие заявления, если бы?
И да, это так, потому что вы нарушаете из цикла, справа,
в некотором смысле.
>> Роб: В подавляющем большинстве случаев, это это своего рода, если что-то,
затем перерыв.
Так что вам не придется ломать обратиться в Если это оборачивает вокруг него.
А также, это не так много из петли, но помните, что переключатели также
вырвался из перерывами.
Мы видели перерывы используются с переключателями раньше.
>> ИОСИФ: И вы также можете использовать их в то время как петли и для петель.
Есть вопросы?
ОК.
Так что в следующий до является функции.
Таким образом, вы, возможно, использовал один из этих BYOB блоки в вашей царапинам проекта.
И это в основном позволяет определить набор
инструкции, которым необходимо следовать.
>> И то, что я имею в виду, что это давайте подумаем вернуться к математике, право, алгебра.
У вас есть то, что мы называем функцией х, некоторая переменная, и скажем, это
функция е х равно х плюс 5.
Таким образом, вы можете думать о е х а эта черная окно, в котором примут 15 в, а затем
производит 20.
>> Так более общо, функция то, что занимает несколько входов и
затем производит некоторые выходы.
И почему функции хорошо?
Они хороши для целого ряда причин.
Значит ли кто-то хочет принять удар на то, что организация означает?
С точки зрения того, почему функций полезным?
Да?
>> СПИКЕР 4: Это делает ваш код более читабельным.
>> ИОСИФ: Верно.
Таким образом, одна из вещей, это делает Ваш код более читабельным, не так ли?
Вместо того, как Int х равно х раз х раз х, у меня может быть куб х,
который является более удобным для чтения и более понятной для читателя.
>> Организация также с точки зрения разделив свой код в управляемой
части, так что вместо того, чтобы реализовать это все в одном длинный отрезок
в основном, вы можете рода разделить его в, как, в порядке, давайте напишем функцию
в куб что-то, давайте напишем функционировать в квадрат что-то.
Таким образом, вы можете разбить его на крошечные, маленькие детали, которые вы можете решать
в отличие от пытается бороться большая проблема все сразу.
>> Роб: Или даже крошечные, маленькие детали, которые Вы и партнер может решать.
>> ИОСИФ: Да.
>> Роб: Таким образом, вместо обоих Вы пытаетесь внедрить один
функционировать одновременно.
>> ИОСИФ: Упрощение.
Кто-нибудь хочет сделать предположение?
Да?
>> СПИКЕР 5: Больше повторение.
>> ИОСИФ: Верно.
Таким образом, одна вещь, которую вы можете сделать с упрощение в том, что это своего рода на
той же схеме, повторного использования в том, что как только я написать функцию куба, я могу
просто использовать, что снова и снова и снова снова в моей программе, а не вводить
х раз х раз х более и снова и снова.
И упрощение здесь также просто означает, что она делает ваш код рода
проще отлаживать, как только вы разделить это до по функциям.
Потому что тогда вы можете локализовать WHERE Ваши проблемы рода являются.
Есть вопросы?
>> Так еще одна идея является абстракцией, не так ли?
Это черный ящик.
Как вы знаете, что GetInt делает получать ввод от пользователя?
Мы еще не сказал вам, не так ли?
Все, что мы сказали вам, GetInt делает именно то, что он говорит, что делает.
Таким образом, даже если мы не расскажем вам, как это работает, вы будете знать.
>> Таким образом, в данном случае, это четверка функция, которая делает
разные вещи для входа для получения вывода.
И вы можете в четыре раза ряд путем умножения его на четыре.
Или вы можете, что мы называем немного сдвинуть его на два.
И мы поговорим об этом чуть позже.
И нет никакой необходимости знать, как это Функция на самом деле работает, пока его
работает как заявлено.
>> Так под капотом, я мог бы быть как, вернуться входные раз
восемь делится на два.
И вы не знаете, не так ли?
Все, что вам нужно знать, это то, что он говорит.
Так вот полезная вещь о абстракции.
>> И вот еще что является своего рода эта идея локализовать свой код к одному
Отдельный раздел.
Так что если у вас есть проблемы, вы не должны пойти на всем протяжении Вашего кода пытается
исправить, где проблема была.
Таким образом, в этом случае, я реализовал куб неправильно.
Я думал, куб был умножения на три.
>> Таким образом, в данном случае, это одна программа что просто уже умножения на три
везде.
И есть еще одна программа, которая имеет факторизованное куб из в функцию.
И вот теперь, если я хочу, чтобы исправить свою ошибку здесь, я должен исправить каждую линию
кода в этой программе.
В то время как, с другой стороны, если я использую Функция, мне нужно только изменить
что было не так в одном месте.
>> Таким образом, в области информатики, мы позвонить входы и выходы.
Входы называются параметры или аргументы, и выходы называются
возвращать значения.
И мы увидим, как это помогает нам разобраться из определения функции в секунду.
Так что это определение функции для Cubing.
Таким образом, он принимает входной сигнал, а затем он возвращает, что число раз
Сам три раза.
Так что давайте разорвать этот вниз.
>> Поэтому у нас есть заголовок функции, которая в основном состоит из трех вещей.
Поэтому у нас есть параметры, которые , как я уже говорил,
Входы в этой функции.
А потом мы даем функции имя.
В этом случае он называется куб.
А потом мы определяем, какие типа из возвращается значение.
>> Таким образом, в этом случае, моя функция куб берет в виде целого числа, и это также
возвращает целое.
Так что, если я прохожу в два, два является целым числом, она возвращает восемь мне, что
является целым числом.
Так возвращать параметры имя типа.
Вопросы о том, что?
>> А потом возвращается значение на самом деле указано в конце, говоря возвращение
, а затем возвращаются все содержит возвращаемое значение.
Таким образом, в этом случае, если мы поставить все это вместе, функция принимает в
параметры, это называется и то, и она возвращает что-то, что тип
что мы говорим, что это собиралось быть.
Есть вопросы?
>> Так как же нам использовать функцию?
Ну, мы напишем функцию, а затем мы используем его в нашей программе, не так ли?
Так что я назвал его куб, и то я могу использовать куб.
>> Но, что важно отметить, является то, что порядок важен.
Если у меня есть куб ниже основной, это собираетесь работать в кубе.
И в этот момент, нет ничего называется куб в программе, и это
просто будет похоже, у меня есть никакая идея, что куб не.
>> Так он расскажет вам, неявная декларация функции.
Это ошибка, что появляется.
И поэтому в данном случае, куб ниже Основной, так что не собирается
знать об этом.
>> СПИКЕР 5: Так главный, как правило, последняя функция определена?
>> ИОСИФ: Так вопрос в том, является основным обычно последний
вещь, которую вы бы определить?
И нет.
Это потому, что мы обычно нравится главный чтобы быть на вершине, не так ли?
Потому что это первое, что вы хочу открыть программист
Программа видеть.
И так как мы решить эту проблему мы хотите основной, чтобы быть на вершине, но
функции, которые мы хотим, мы хотим их быть ниже основной еще быть в состоянии использовать
их внутри основной?
>> Ну, мы используем то, что мы называем прототип функции.
Так что прототип функции существенно является ли это первым берет то, что
подпись или заголовок функции из того, что мы хотим реализовать вниз
здесь, и мы разместили его на верхняя часть программы.
>> Так что в этом случае говорят, что, мол, позже в нашей программе, мы собираемся
давать обещание реализовать это Функция называется внутр куб, который принимает
целое вход.
Так что теперь, потому что это выше основной, Главный, он собирается сказать, ой, ну,
позже в программе, что будет там, чтобы я мог обращаться к нему, так что я буду
просто дайте ей пройти через на данный момент.
>> А потом на дне, мы реализуем куб.
А потом главный просто скажу, ну, это будет своего рода ссылку
эти два символа вместе.
И мы расскажем, что это означает в дальнейшем.
И так будете знать, что это Функция куб, который он должен использовать.
>> Роб: [неразборчиво] о желании Основной внизу или
лучших, я видел и другое.
Есть вещи, которые так же, как поставить основной внизу.
Но как только проект получает особенно большой, обычно основной находится в
подать все свои собственные.
И в этот момент, как внутр куб линия будет -
внутри stdio.h куча линий просто так междунар
куб внутр линейный вход.
>> И поэтому эти прототипы вещей, которые вы как правило, положить в файлы заголовков, в
чего, это не имеет значения.
Ну, это не имеет значения.
Те, всегда идут в верхней части.
И если основной не является файлом все свои собственные, Вы не должны волноваться о помещении
Отдельные прототипы функций в файле.
>> ИОСИФ: И мы вернемся к этому немного Чуть позже, когда Роб начинает говорить
о компиляции.
И таким образом, есть также разница между параметром и аргумента.
И параметр именно то, что мы называем эти входы, когда
определим функцию.
И мы называем это аргумент, когда мы на самом деле передать его в функцию.
>> Таким образом, в данном случае, это параметр, как мы уже говорили раньше.
И когда мы на самом деле использовать его там, куб х, то х само по себе является
что мы называем аргумент к функции куба.
>> Роб: Так аргументы параметра являются -
есть это различие, очень путать взаимозаменяемые.
На данный момент, для меня, это как один из эти слова, что, когда я вижу его в
дикий, я не могу помочь, но сразу Вопрос о том, что они используют его в
правильный контекст, потому что Разница в том, достаточно тонкие, что просто
все склонны -
Я почти всегда говорю аргумент независимо от того, что я имею в виду.
>> Иосиф: и функции также полезны за то, что мы называем побочные эффекты.
Так функция не может принимать никаких входов, и он не может также произвести ни одного выхода.
Таким образом, в данном случае, я определения подпрограмму, которая имеет еще
возвращать значение.
А для того, чтобы указать, что мы используем что мы называем пустоту здесь.
И так побочный эффект этой функции является то, что он просто печатает материал
к этой странице.
Это на самом деле не принимать какие-либо входы, и это не делает
на самом деле производят никаких выходов.
>> Но это может быть полезным в том смысле если вы хотите, например, отладки
что-то в вашей программе, если вы хотите написать небольшой подпрограмму, которая
печатает, скажем, содержание памяти или что-то.
И так эти побочные эффекты иногда полезно вне контекста
просто нравится входы и выходы.
Есть вопросы?
>> И в конец данный конкретный участок, что же это программа?
Я дам вам, ребята пару секунд, чтобы прочитать его.
На самом базовом уровне, что мы хотим сказать, что это меняет х и у, не так ли?
>> Так как многие из вас на самом деле думаю, это будет обменять х и у?
Поднимите руку.
Никто.
ОК.
Кто думает, что он будет не поменять х и у?
И сумма, которая была не вся комната.
Таким образом, некоторые люди не уверены.
ОК.
Это разумно.
>> Так что давайте идти через то, что происходит, когда вы на самом деле вызывать функции сначала в
для того, чтобы ответить на этот вопрос.
Так что это то, что память рода выглядит.
Это вроде как упрощенной модели о том, что память выглядит, когда
вы запускаете программу.
Так что то, что называется стек сюда и
то, что называется кучу.
И эти растут навстречу середина памяти.
>> Таким образом, в данном конкретном случае, когда Вы вызываете функцию, это
получает положить в стек.
И тогда все, что содержится в том, что Функция остается в том, что мы называем, что
кадр стека функции.
И так, чтобы получить хороший визуализацию это, let's - например, у нас было
Программа основной ранее.
И внутри основной, мы назвали куб.
Так главный бы сначала пойти в стеке кадр, потому что это первая функция
это называется.
>> А потом, когда куб называется внутри Главный, он получает поставить на вершине главной
внутри памяти.
Так что вы заметите в том, что куб есть свои собственные параметры и ее
собственные местные жители.
Поэтому, когда вы на самом деле что-то передать функция, параметры, которые он
получает копии того, что было передается из основной.
>> И вроде объяснить это, давайте пройти через программы.
Поэтому у нас есть стек, это только часть стека.
И то, что мы делаем, мы сначала инициализировать х и у в один и два.
Поэтому у нас есть эти маленькие коробочки.
Они сидят в стеке Главная автора кадр в стеке.
Они содержат один и два.
>> Сейчас мы называем подкачки.
Что происходит, является проходим х и у в своп и своп создает свои копии
из тех переменные для использования внутри ее кадра стека.
Так что теперь там, у нас есть, которые содержит значение, х имел, и б,
который содержит значение, которое у имели.
Так один, два.
>> И вы заметите, что это отдельный от х и у, внутри основной.
Таким образом, мы теперь создать временный переменная содержит.
Положим а равно б, так что изменения от одного до двух.
И то положим б равную к темп, который является одним.
>> И то сейчас мы выходим из из этой функции.
При выходе из функции, кадр стека получает из стека.
Мы называем это нажать.
Вы нажимаете кадра стека в стек и вы поп, если из стека.
И так, что происходит это все, что был в этом кадре стека рода просто
идет в огне.
не И так, что больше не существует.
>> Но что мы заметили?
Мы никогда фактически изменил значения х и у, верно?
Так что те, остался локальным для основной.
И, передав вещи в своп, мы на самом деле никогда не менял эти ценности.
И что же мы называем это?
Мы называем это прохождение по значению.
>> Таким образом, в C, когда вы проходите вещи в Функции, он передает их по значению и
делает копию них функция в использовании.
А мы будем знать о чем-то под названием передача по ссылке позже, но это
как вы можете решить эту проблему.
Но мы не будем беспокоиться о что до позже.
>> Роб: А на самом деле, этот термин, прохождение по ссылке, и С не имеет даже
проходя мимо ссылки.
С исключительно имеет передача по значению.
Независимо от того, что вы делаете, вы не всегда проходя копию чего-то.
Это просто, что, как и я, конечно, упомянул что раньше с указателями
и что строка на самом деле просто четыре байт указывая куда-нибудь в памяти.
>> Ну, если у меня есть эта строка, и это говорил мне, что то, где строка -
хорошо, если у меня есть этот указатель, чтобы это разместить в памяти, то я могу передать
Копия этого указателя на функцию, и что функция все еще знает, где в
памяти это.
Так как из этих указателей должны быть обращены на то же место в памяти и
вот как мы собираемся быть в состоянии изменить вещи вне
текущий кадр стека.
>> ИОСИФ: Вы хотите сделать компиляции?
>> Роб: Нет, это 5:30.
>> ИОСИФ: ОК.
Это 5:30.
ОК.
Так мы покроем компиляции Я думаю, в Следующий раздел, или ваш раздел
лидер будет в этой точке.
И -
>> Роб: Есть вопросы?
>> ИОСИФ: Есть вопросы?
Да?
>> СПИКЕР 5: Использование строк из CS50, любая функции, которые мы хотим использовать для
те, что будет, как функций C.
CS50 не пошел в и сделал любые дополнительные.
>> ROB: Правильно.
Любой из С, как вы [неразборчиво] будет использовать те на наших струн.
>> ИОСИФ: И последний, что я хочу Упоминание в том, что у нас есть руководство по стилю
для этого класса.
>> Роб: О, да.
>> ИОСИФ: Так что, если вы приехали из программирование фон и прежде, вы
могут иметь определенные соглашения, когда вы пишете код, как положить
скобки на одной строке или частности способы отступов
или именования переменных.
В этом классе мы хотим следовать конкретных стиль руководства только потому, что,
хорошо, если вы выходите и работать в промышленность, вы собираетесь ожидать
следовать руководству стиля Компания, с которой вы идете в.
>> Как, например, Facebook, я думаю, имеет особое рода именования
Конвенция.
И есть различия между верблюда обсадные переменные и так же, как
разделяя их подчеркивания.
А также, я думаю, самое главное, как например, отступы, не так ли?
>> Мы фигурные скобки начать, где условие, и они
являются на следующей строке.
И мы также положить фигурные скобки в даже если это только одна линия.
И много раз, есть способы сделать это где вы можете оставить эти скобки
, если бы это только одна линия по утверждению If.
Но в этом классе, мы хотим следовать конкретных стиль руководства только так вы получите
используется для такого рода вещи.
>> Роб: Да, и стиль 50 собирается жизнь это руководство по стилю, и мы
собираетесь использовать стиль 50 до степени коде.
Так что делает вещи проще для нас, и надеюсь, не должны делать вещи, которые
гораздо хуже для вас, учитывая стандартизированный стиль не должно быть,
нереально.
>> ИОСИФ: И, наконец, найти свой стиль гид, перейдите к manual.cs50.net/style.
И да.
>> СПИКЕР 4: Вы собираетесь провести в жизнь любые символы в строке?
>> Роб: Да.
>> ИОСИФ: Извините, ребята.
>> Роб: Это как один из единственных.
На данный момент, я в порядке с 120.
Я в порядке с высказыванием 120 символов в строке.
Я понимаю, что быть некий предел.
Я думаю, что 80 настолько мала, но мы в жизнь его.
>> ИОСИФ: Лично я думаю, с С 80 символов больше ОК.
Как только вы начнете получать в другом Языки, как JavaScript и PHP, а не
так разумно просто ограничить это до 80 символов.
ОК.
Ну, это было супер разделе.
Кто-нибудь хочет конфетку?
>> СПИКЕР 4: Да.