background top icon
background center wave icon
background filled rhombus icon
background two lines icon
background stroke rhombus icon

Скачать "CS50 2017 - Lecture 0 - Scratch"

input logo icon
Обложка аудиозаписи
Подождите немного, мы готовим ссылки для удобного просмотра видео без рекламы и его скачивания.
console placeholder icon
Оглавление
|

Оглавление

0:00
Introduction
5:08
Binary
10:30
Binary Lamps
11:34
ASCII
14:10
RGB
16:05
Thinking with Peanut Butter
21:46
Finding Mike Smith
24:38
Computational Complexity
27:11
Pseudocode
31:04
Staff Introductions
33:40
Course Teaser
35:45
Introducing Scratch
42:57
meow
48:01
Oscartime
51:36
counting sheep
52:56
pet the cat
53:33
don't pet the cat
54:03
threads
55:21
events
56:14
hi hi hi
57:45
Ivy's Hardest Game
Теги видео
|

Теги видео

cs50
harvard
computer
science
david
j.
malan
Субтитры
|

Субтитры

subtitles menu arrow
  • enАнглийский
Скачать
00:00:09
хорошо, это
00:00:12
введение Гарвардского университета cs50 в
00:00:14
интеллектуальные предприятия
00:00:15
информатики и искусства программирования, и
00:00:17
это, по-видимому, было у меня примерно в то время,
00:00:21
когда я сказал, что вы, ребята, теперь сказали
00:00:23
спасибо преподавателю, который потратил
00:00:25
немного больше, это слишком много времени
00:00:26
тратится на троллинг в библиотеке, где,
00:00:28
по-видимому, все еще находятся списки первокурсников 1995 года,
00:00:30
и я отмечаю это, потому что
00:00:33
это было для меня большим делом, когда я
00:00:36
был первокурсником и, в конечном итоге, второкурсником,
00:00:38
рассматривающим возможность пройти курс, подобный этому,
00:00:40
cs50, но в более общем плане информатика,
00:00:42
и если вы, как и я, имеете такое представление
00:00:44
о информатике еще в старшей или
00:00:46
даже средней школе, у вас может сложиться
00:00:47
впечатление, что она полностью
00:00:49
основана на программировании, возможно, это
00:00:51
немного антисоциально, возможно, это что-то вроде
00:00:54
компьютерной лаборатории.
00:00:56
кодируя что-то, что вы не
00:00:57
обязательно понимаете, и все же у меня тоже было
00:00:59
такое восприятие на первом курсе этого
00:01:01
курса, и там говорилось, что эта область в
00:01:02
целом действительно имела такую
00:01:04
репутацию, и я определенно
00:01:05
предполагаю, что большинство всех вокруг меня
00:01:07
определенно знали больше, чем Я так и сделал, и
00:01:09
для меня это касалось не только компьютерных наук, это было
00:01:11
верно для большинства областей в Гарварде в
00:01:13
каталоге курсов, с которыми я не был знаком,
00:01:15
и поэтому вместо этого я тяготел к
00:01:17
более комфортным, я посещал много государственных
00:01:19
занятий и экономики. и историю только
00:01:21
потому, что это то, что я знал и
00:01:22
любил в старшей школе. Я бы не сказал, что мне
00:01:24
это нравилось, но я знал это, и это было в
00:01:26
моей зоне комфорта, и только на
00:01:27
втором курсе я набрался смелости
00:01:30
взять этот класс cs50, и я сделал это только
00:01:33
потому, что профессор в то время позволил мне
00:01:34
пройти его / не пройти, теперь называется «сиделка на сесть»,
00:01:37
и это позволило мне преодолеть такого
00:01:38
рода умственные препятствия, которые я наложил
00:01:40
на себя, своего рода страх неудачи или
00:01:42
просто не так хорошо, как я мог бы
00:01:44
привыкнуть, и поэтому до тех пор я был там, где был
00:01:47
такой класс, и я всегда
00:01:49
как бы сожалел, что не изучал
00:01:51
раньше, и это не обязательно, этот
00:01:52
класс не обязательно должен быть CS, но на
00:01:54
самом деле это может быть любая область в более широком смысле, но
00:01:56
это действительно были мои выводы примерно в
00:01:57
то время, когда я выглядел вот так, и
00:01:59
с тех пор я почувствовал себя комфортно, возглавив этот
00:02:02
класс, и нашел вдохновляющим то, что в
00:02:04
наши дни 68% студентов в этой
00:02:07
комнате и затем эта комната Астра
00:02:09
никогда раньше не проходила курс CS, поэтому, если у вас
00:02:11
есть эта мысленная модель всех
00:02:14
слева и справа от вас, наверняка, вы должны
00:02:15
знать больше, чем вы, шансы на колене, на
00:02:17
самом деле это не так, на самом деле в CSP
00:02:19
мы есть разные треки, разные
00:02:21
типы разделов для студентов, которым менее
00:02:23
комфортно, студентам, которые чувствуют себя более комфортно,
00:02:24
и студентам где-то посередине, и у
00:02:26
этих ярлыков нет формального определения,
00:02:27
вы просто знаете это, если
00:02:29
да, и если вы сегодня мысленно стоите одной ногой
00:02:31
за дверью потому что
00:02:32
вы не совсем уверены, что это для вас,
00:02:34
вы, вероятно, относитесь к числу тех, кому менее
00:02:35
комфортно, но поэтому вы входите в
00:02:37
большинство 56% студентов прошлого курса, если,
00:02:40
напротив, вы занимаетесь программированием с
00:02:41
8 лет 10 лет
00:02:43
что бы то ни было, но вы в основном самоучка,
00:02:45
и поэтому, возможно, у вас много
00:02:46
пробелов в знаниях или вы не совсем
00:02:47
понимаете все формальности, вы просто
00:02:49
как бы разбираетесь во всем, возможно, вы относитесь к числу
00:02:51
тех, кому удобнее, а если нет, то,
00:02:52
возможно, вы где-то посередине и
00:02:54
в разделах cs50 есть ли у нас одинаковые
00:02:56
студенты, одинаковый уровень комфорта,
00:02:58
схожий опыт, чтобы каждый мог
00:03:00
чувствовать себя комфортно, говоря, не
00:03:02
зная вещей, зная вещи и многое другое,
00:03:04
потому что в конечном итоге курс оценивается
00:03:06
и оценивается в конечном итоге в значительной степени
00:03:08
вручную, в значительной степени очень деликатно по
00:03:12
отношению к предшествующему образованию студентов или
00:03:13
его отсутствию; на самом деле, самое
00:03:15
важное в конце семестра - это
00:03:16
не столько то, где вы окажетесь по отношению к
00:03:18
своим одноклассникам, сколько то, где вы окажетесь на
00:03:20
11 неделе или на самой последней неделе по отношению к
00:03:23
себе сегодня в Неделя 0, и на самом деле
00:03:26
благодаря Хейли Джеймс из CS50 и
00:03:30
целому ряду членов команды CS50 этим
00:03:31
летом они провели некоторое время, путешествуя
00:03:33
по стране, привозя людей обратно
00:03:34
в университетский городок с выпускниками, бывшими студентами и
00:03:36
сотрудниками, которые имели какие-то связи в изучении или
00:03:39
преподавании CS50 в в какой-то форме, я имею в виду, если
00:03:41
вы хотите увидеть истории некоторых из
00:03:43
ваших предшественников и людей, которые
00:03:44
случайно нашли свой путь даже к
00:03:46
информатике,
00:03:47
находя проблемы на этом пути, проверьте
00:03:49
эту область, которую команда
00:03:50
собрала в проекте 5050 dot org, теперь
00:03:54
сам курс, в конечном счете, не посвящен
00:03:57
программированию как таковому, это действительно
00:03:58
инструмент, который мы будем использовать, он действительно об
00:04:00
этом, и это действительно то, что CS является
00:04:02
областями в более общем плане, начинаете ли вы с
00:04:04
аппаратного обеспечения, графики, теории
00:04:06
или любого количества областей. и что
00:04:07
искусственный интеллект в наши дни,
00:04:09
машинное обучение и не только, на самом деле
00:04:10
сводится к решению проблем, и что
00:04:12
действительно круто в CS, я обнаружил на раннем этапе, так это то, что
00:04:14
это не обязательно, это не
00:04:16
самоцель, это область, которая
00:04:18
дает вам возможность заниматься более интересными
00:04:20
или мощные вещи в гуманитарных науках,
00:04:22
социальных науках, физических науках,
00:04:24
искусстве, что угодно, потому что у вас есть эта новая
00:04:25
ментальная модель того, как вы можете решать
00:04:27
проблемы лучше и эффективнее, как вы
00:04:29
можете решать их правильно и как вы можете
00:04:31
анализировать большие данные,
00:04:33
говорит, что мы решаем проблемы в противном случае это могло бы
00:04:35
быть за пределами вашего понимания, так
00:04:37
что же это значит, что такое
00:04:39
решение проблем? Ну, мы могли бы, возможно, выделить это
00:04:41
просто как большой черный ящик, какой-то
00:04:44
секретный соус, в который поступают входные данные, такие как
00:04:46
проблема, которую мы хотим решить, результат,
00:04:48
из которого приходит, выводит решения,
00:04:50
которые нам нужны, поэтому это очень общий способ
00:04:52
описания, но то, что изображено здесь,
00:04:54
в черном ящике, - это так называемые
00:04:56
алгоритмы, и мы вернемся к этому
00:04:58
чуть позже, фактические ингредиенты для
00:05:00
решения проблем, но как это сделать мы представляем
00:05:02
входные и выходные данные, шансы равны, даже если
00:05:04
вы не разбираетесь в компьютерах и на самом
00:05:07
деле не думаете так, как вы, вероятно, знаете,
00:05:08
что компьютеры понимают только очень
00:05:10
ограниченный словарный запас, например, что такое
00:05:12
алфавит, так сказать, что они говорят,
00:05:15
спрашивая, может быть, но больше двоичный двоичный, что
00:05:19
означает четыре нуля и один, поэтому, тогда как
00:05:21
мы, люди, обычно используем десятичную дробь,
00:05:24
означающую десять, от нуля до девяти, это, конечно, в нашем
00:05:25
алфавите букв на компьютерах,
00:05:27
поскольку вы, возможно, слышали, что используются только
00:05:29
нули и единицы, теперь почему это мощный
00:05:32
колодец, он оказывается как только
00:05:34
в вашем алфавите появятся хотя бы две цифры, вы
00:05:36
сможете начать представлять вещи гораздо
00:05:38
мощнее и эффективнее,
00:05:40
например, сколько, если бы я хотел посчитать
00:05:42
людей в этой комнате, на скольких из вас
00:05:43
я мог бы рассчитывать только на одну рука, надеюсь,
00:05:46
пять, чтобы я мог сосчитать пять, будь ты один, два, три,
00:05:48
четыре, пять, но ты знаешь, что, если бы
00:05:52
я был немного умнее, держу пари, что я
00:05:53
мог бы использовать ту же руку и сосчитать
00:05:56
целых тридцать два, может быть, тридцать один из
00:05:58
вас, ну, как это ну, сейчас я вроде
00:06:01
как использую унарную систему, которая знает,
00:06:03
что означает единица, так что это всего лишь одна цифра в
00:06:05
вашем алфавите, палец или отсутствие пальца,
00:06:07
это не совсем то же самое, что ноль или один,
00:06:09
поэтому один человек два три четыре пять, но
00:06:11
что, если вместо этого я per
00:06:14
каким-то образом приглушил мои пальцы, так что рисунок
00:06:15
поднятых пальцев на самом деле имеет значение, а не
00:06:17
только количество, так что, возможно, это все еще
00:06:19
ноль, теперь это один, и вместо двух это
00:06:23
может быть два, так что, если
00:06:26
мой второй палец поднят Я
00:06:28
тоже это назову, и если мои первые два пальца подняты
00:06:30
вверх, я могу назвать эти три несколько
00:06:32
оскорбительно, если только этот палец вверх, я
00:06:34
могу назвать это четыре, а затем пять, и
00:06:37
тогда это становится своего рода болезненным шестью семью
00:06:40
и что я на самом деле делать
00:06:42
теперь считается в двоичном формате, что могло бы выглядеть
00:06:43
совершенно загадочно, но оказывается, что
00:06:46
как только у вас есть
00:06:47
цифры, которых достаточно, чтобы представить
00:06:48
все, что вы хотите, и делать это
00:06:50
чертовски эффективно, но почему такие шансы, если
00:06:53
вы похожи на меня, вы, вероятно, выросли
00:06:55
Конечно, вы изучили десятичную систему от
00:06:56
нуля до девяти, и вы могли бы
00:06:58
написать на доске некоторые точки, например,
00:07:00
число 123, но почему вы думаете об
00:07:03
этом как о 123, на самом деле это просто красивый
00:07:05
узор из символов, так сказать, глифов на
00:07:07
экране, который мы приписать какой-то
00:07:10
математический смысл 123, но на самом деле
00:07:12
это похоже на то, как будто кто-то нарисовал чернилами на
00:07:15
экране какие-то символы, ну, если вы
00:07:17
похожи на меня еще в начальной школе, вы,
00:07:19
вероятно, узнали, что самое правое
00:07:20
число здесь находится в так называемом
00:07:23
месте единицы размещаются правильно, поэтому, если бы мы
00:07:26
хотели пометить эти вещи, мы могли бы
00:07:27
поместить туда единицы, а затем, конечно,
00:07:29
места десятков в сотнях,
00:07:31
может быть, тысячи, 10 000 и так далее,
00:07:33
поэтому у нас были такие мысленные модели
00:07:34
для столбцов, и обратите внимание на них.
00:07:36
оказываются степенями 10, от 10 до 0 — это 1, от 10
00:07:40
до 1 — это 10, от 10 до 2 — это 100 и так
00:07:43
далее, так что это закономерность, даже если ваш
00:07:45
учитель в начальной школе
00:07:46
в то время не говорил о возведении в степень, так почему
00:07:49
это число 123, ну, это потому, что у нас
00:07:53
есть 1 в столбце сотен, поэтому 100
00:07:56
раз по 1 у нас есть 2 в столбце десятков,
00:07:58
у нас есть 3 в столбце единиц, и,
00:08:01
конечно, если мы сейчас начнем выполнять арифметику,
00:08:02
это будет сто плюс 20 плюс 3 или,
00:08:05
очевидно, 123, и все мы воспринимаем это как нечто само собой
00:08:08
разумеющееся в наши дни. на
00:08:19
самом деле понятия не имел, что значит, что
00:08:20
компьютеры говорят только нули и единицы,
00:08:22
все, что вам нужно сделать, это обновить места
00:08:24
вместо степеней 10, что означает
00:08:27
десятичное число, у нас будут степени 2 для
00:08:29
двоичных чисел, так что теперь у нас будет 2 к
00:08:31
0 2 к 1 2 к 2 2 к 3
00:08:34
та же идея, это просто другая база, мы
00:08:37
изменили десять на два, и теперь у нас есть такие
00:08:39
места, как это 1 2 4, и если мы
00:08:43
продолжим 8 16 32 64 и так далее Итак,
00:08:46
какое это число на экране в
00:08:48
двоичном виде, если вы преобразуете его в своей голове в
00:08:50
десятичное, это просто число 1,
00:08:53
потому что у вас есть 1 в одном месте,
00:08:54
а затем 0 в каждом другом месте, так что
00:08:57
это просто 1 раз 1
00:08:58
1 теперь, если бы я использовал эйри или
00:09:01
руки традиционным способом 2, это
00:09:02
было бы так, когда вы поднимаете два
00:09:04
пальца, но не в том случае, если вы пытаетесь использовать
00:09:07
шаблоны, а также количества и т. д. в
00:09:09
двоичном формате, как мне это сделать представлять число два
00:09:13
ноль один ноль, это эквивалентно тому, чтобы
00:09:16
положить сюда только указательный палец, и
00:09:18
если я хочу посчитать до трех сейчас, мне нужно
00:09:20
добавить единицу в смесь, поэтому я добавляю
00:09:22
единицы на место, и теперь, если вы вроде как начинаете
00:09:24
представьте себе, это как одни из тех
00:09:26
старинных часов, где
00:09:27
цифры переворачиваются и переворачиваются, теперь
00:09:30
эти цифры перевернутся и
00:09:31
станут нулями, а ноль
00:09:33
станет 1, и теперь у нас есть 5, а затем
00:09:36
6 а потом 7, а потом, черт возьми, как
00:09:40
компьютер считает до восьми, да, тебе просто
00:09:45
нужно добавить еще одно место, точно так же,
00:09:47
как у нас, людей, нет бесконечного
00:09:48
количества чисел, когда мы
00:09:49
что-то записываем, мы как бы останавливаемся, когда в этом
00:09:50
нет необходимости, все нам нужен еще один бит
00:09:53
нам просто нужно добавить еще один ноль или единицу
00:09:55
слева конкретно единицу тогда все
00:09:57
эти единицы могут стать нулями и мы можем
00:09:58
делать это до бесконечности но
00:10:01
откуда берутся эти биты это все очень
00:10:03
абстрактно и просто картинки экран,
00:10:05
ну, оказывается, мы развлекаемся,
00:10:08
физические ингредиенты, все наши
00:10:10
компьютеры, может быть, это наш ноутбук, или
00:10:11
настольный компьютер, или ваш мобильный телефон, в конце
00:10:13
дня, в наши дни они питаются
00:10:14
от батареек или как шнур, вставленный в
00:10:16
стену, где электричество вырабатывается,
00:10:18
и даже если вы мало знакомы
00:10:19
с электричеством, вероятно, знаете, что это
00:10:21
похоже на движение маленьких электронов, поэтому существует
00:10:23
какой-то физический ресурс, который может
00:10:25
течь или не течь, вы можете включать или
00:10:27
выключать его, как вот эти настольные лампы, вот
00:10:30
здесь, у меня есть три физических источника света,
00:10:32
они, конечно, подключены к
00:10:34
электричеству, поэтому у меня есть некоторый физический
00:10:35
вход, и теперь, когда я это сделал, я могу
00:10:37
реализовать свой собственный компьютер, используя эти
00:10:39
простые настольные лампы, если я хочу представлять
00:10:41
какую-то ценность, какой-то вход или выход, ок, вот
00:10:44
0 это 0 в двоичном формате. Мне просто
00:10:48
нужно оставить 3 лампочки выключенными, если я
00:10:50
хочу представить 1. Мне нужно включить
00:10:52
это, и вот теперь, если единицы на месте,
00:10:55
если я хочу представить 2, мне просто нужно
00:10:58
включить этот индикатор, если Я хочу
00:10:59
представить 3, это появляется, если я хочу
00:11:02
представить 4, которое продолжается 5 6 7, а
00:11:09
затем, конечно, нам нужно около 8, если мы хотим
00:11:11
представить,
00:11:12
отключите их для общего количества бит вместе,
00:11:15
и вот все, что происходит внутри
00:11:17
ваши телефоны и ваши компьютеры, телефоны,
00:11:19
компьютеры и устройства в эти дни
00:11:20
я назвал транзисторами, которые представляют собой
00:11:22
крошечные переключатели, которые включаются или выключаются,
00:11:24
и это все, что нам нужно, если у нас есть какой-то
00:11:26
источник, например электричество, чтобы просто хранить
00:11:28
информацию, нам просто нужно много и много много
00:11:29
выключателей, много-много лампочек,
00:11:31
конечно, намного меньше, чтобы
00:11:33
представлять информацию, но компьютеры,
00:11:36
конечно, могут делать гораздо больше, чем просто представлять
00:11:38
цифры, а как насчет писем, электронных писем
00:11:40
и тому подобного, ну, для этого нам на
00:11:42
самом деле нужно как бы решить, как
00:11:44
люди, как мы мы будем интерпретировать такие вещи,
00:11:46
как эти лампочки, в одном контексте,
00:11:48
например, в калькуляторе, они могут представлять
00:11:50
числа, десятичные числа, что угодно, но в
00:11:53
почтовой программе Microsoft Word Google
00:11:55
Docs вам, вероятно, нужны эти лампочки или
00:11:57
эти транзисторы в компьютерной истории,
00:11:59
а не просто числа, вы могли бы просто занимайтесь
00:12:01
математикой, вы хотите, чтобы они хранили буквы,
00:12:03
предложения, абзацы и т. д.,
00:12:05
и поэтому нам нужно иметь какое-то
00:12:07
сопоставление, и мы сделаем это следующим образом
00:12:09
ASCII, который является просто аббревиатурой,
00:12:11
описывающей сопоставление чисел с
00:12:13
буквами, люди много лет назад просто решили
00:12:16
вы знаете, что в контексте, где нам
00:12:17
нужны буквы, давайте просто сохраним набор
00:12:19
битов, равный числу 65, если
00:12:22
мы хотим, чтобы буква была набором битов,
00:12:24
равным десятичному числу 66, если
00:12:26
мы хотим сохранить число B, перемотаем вперед
00:12:28
до H и I, если вы хотите сохранить
00:12:30
H или I 72 73 и просто сохранить столько
00:12:33
битов, и теперь в этой истории меня больше не волнует,
00:12:36
как вы представляете 65 или 73, мне
00:12:39
просто нужно знать, что вы можете как-то
00:12:41
с лампочками на сцене с
00:12:43
транзисторы в моем телефоне или какое бы то ни
00:12:45
было устройство, мы можем начать абстрагироваться от
00:12:47
этих низкоуровневых деталей, на самом деле
00:12:49
мы не собираемся тратить много времени после
00:12:51
сегодняшнего разговора о двоичном коде в cs50,
00:12:53
потому что здесь концептуально у нас есть своего рода электричество
00:12:55
поверх что мы можем построить
00:12:57
понятие двоичных нулей и единиц, и
00:12:59
как только мы придумаем это соглашение,
00:13:00
мы сможем начать говорить о буквах
00:13:02
алфавита, но это не единственное, о чем
00:13:05
мы можем говорить, мы также можем говорить о
00:13:07
графике, видео и всем остальном.
00:13:09
например, вещи, которые мы сегодня считаем само собой разумеющимися,
00:13:11
и просто подытожим, какое сообщение
00:13:14
я закодировал здесь, на экране, если вы
00:13:17
помните, да, оно высокое, потому что 72 и 73, которые
00:13:21
я заявил минуту назад, или просто
00:13:22
числа, которые мы, люди, придумали много лет назад,
00:13:24
чтобы обозначают H I, я не
00:13:26
знаю, что такое 33, вам придется поискать это значение,
00:13:27
иначе вам скажут, что это
00:13:29
восклицательный знак, потому что действительно люди
00:13:32
решили выражать числовые коды, а
00:13:35
также все клавиши на клавиатуре,
00:13:36
к сожалению, они были не очень
00:13:38
поначалу они были дальновидными, они использовали всего семь
00:13:41
бит, а позже около восьми бит,
00:13:43
но даже несмотря на то, что это дает нам
00:13:45
более 200 возможных значений, 256 существует
00:13:49
множество языков, которые не написаны,
00:13:50
как английский алфавит, азиатские
00:13:53
языки и свет, которые намного
00:13:54
больше символов, чем вы можете
00:13:56
выразить всего лишь семью или восемью битами,
00:13:57
и поэтому теперь на смену ascii пришло
00:13:59
что-то, называемое юникод,
00:14:01
и, короче говоря, люди начали
00:14:03
решать проблемы, которые изначально были
00:14:05
созданы из-за того, что они не предвидели значения или
00:14:07
хотели еще больших значений. чем эти,
00:14:10
но в других контекстах, таких как Photoshop или
00:14:13
любая графическая программа, вы можете увидеть
00:14:15
тот же набор битов 72 73 33, но в
00:14:19
этих программах они знают, как интерпретировать
00:14:21
эти числа в определенном количестве цветов, если
00:14:23
вы когда-либо слышали о RGB красный зеленый синий
00:14:26
это это просто аббревиатура, описывающая,
00:14:28
как можно смешать три разных
00:14:29
цвета, в духе краски или,
00:14:31
более технически, источники света объединяют эти
00:14:33
три разных цвета и получают любой цвет
00:14:36
радуги, поэтому каждое из этих чисел, которые
00:14:38
я утверждаю, может быть от 0 до 255 и 72
00:14:44
из 255 это как среднее количество
00:14:46
красного это как среднее количество
00:14:47
зеленого и немного синего, и
00:14:49
если вы объедините эти три цвета,
00:14:51
смешав их вместе в одну точку
00:14:53
или пиксель, как это называется в на компьютере
00:14:55
вы получаете какой-то мутный оттенок
00:14:57
желтого, но в контексте Photoshop
00:15:00
или какой-либо графической программы это то, как
00:15:02
будут интерпретироваться те же самые три шаблона битов,
00:15:05
и
00:15:07
бывает, что говорить в терминах отдельных
00:15:09
битов - это еще не все это полезно для вас с
00:15:11
одним битом, вы можете посчитать до одного, поэтому
00:15:13
люди давно также стандартизировали
00:15:15
номенклатуру байт. Байт
00:15:17
- это всего лишь восемь бит, и если вы когда-либо
00:15:19
слышали в жизни о килобайтах, мегабайтах,
00:15:21
гигабайтах и ​​терабайтах, то
00:15:22
это просто кратные им,
00:15:24
как правило, порядки
00:15:26
тысячи или тысячи 24 или больше,
00:15:29
используя всего три байта 24 бита, можем ли мы
00:15:32
представить буквы, числа и тому подобное,
00:15:34
и в конечном итоге это всего лишь примеры
00:15:36
абстракции, и это
00:15:37
будет тема, которая пронизывает не только этот
00:15:39
курс, но информатика в
00:15:40
целом берет очень простые идеи, которые на
00:15:44
первый взгляд кажутся не такими уж интересными, но как только вы используете
00:15:45
их в качестве ингредиентов для решения проблемы,
00:15:48
вы можете затем как бы повторно использовать этот инструмент, чтобы
00:15:49
создать что-то более интересное повторное использование
00:15:51
этот инструмент для создания чего-то более
00:15:52
интересного, пока вы не приступите к
00:15:54
разработке приложений, а не к решению
00:15:56
реальных проблем, которые вас волнуют, принимая как
00:15:58
должное люди, которые были до
00:15:59
вас, так сказать, решили множество этих
00:16:02
деталей реализации более низкого уровня,
00:16:05
так что же внутри этого черный ящик, это
00:16:09
то, что мы будем называть алгоритмами, а
00:16:11
алгоритм, если знаком, это какое-то
00:16:13
причудливое слово, но это
00:16:15
простая вещь, что такое алгоритм, если
00:16:18
кто-нибудь знает, просто пошаговые
00:16:22
инструкции по решению проблемы, вот и все, что
00:16:24
такое алгоритм
00:16:26
пошаговые инструкции по решению какой-то
00:16:28
проблемы, какая может быть проблема, которую
00:16:30
мы хотим хорошо решить, о которой я вспоминаю,
00:16:32
и плету, плету, мне вспоминается 5-й
00:16:34
класс, моя классная руководительница пыталась
00:16:38
научить нас как можно эффективнее, как
00:16:40
следовать указания были правильными, и в то
00:16:42
время это было полной катастрофой, но я
00:16:43
всегда помнил из этого примера
00:16:45
демонстрацию, которую она проводила, потому что она
00:16:47
подходила, хотя в то время она не использовала это
00:16:49
слово для обозначения понятия
00:16:50
вычислительного мышления или мышления, подобного
00:16:53
компьютеру, если вы будет, посредством чего вы хотите
00:16:55
что-то решить правильно, но для
00:16:58
этого вам нужно дать очень точные
00:17:00
инструкции, и это легче сказать,
00:17:02
чем сделать, и поэтому на самом деле, чтобы воссоздать
00:17:04
это, спасибо команде, вот у нас есть
00:17:06
тарелка, у нас есть буханка хлеба, мы у нас есть
00:17:11
банка сливочного арахисового масла «Скиппи», и у
00:17:14
нас есть банка «Смакерс Конкорд», виноградный
00:17:18
джем, а для неизменного понадобится
00:17:22
много бумажного полотенца и этот единственный
00:17:25
нож, и поэтому позвольте мне предложить, что
00:17:27
я на минутку поиграю в роль
00:17:29
компьютера или, может быть, в такой форме, как
00:17:30
робот, реализующий какой-то алгоритм,
00:17:32
где вы, ребята, программист,
00:17:35
человек, который должен давать мне
00:17:36
инструкции, чтобы я мог решить
00:17:38
проблему, и проблема здесь будет ее
00:17:39
реализацией, возможно, неудивительно, мелочь
00:17:41
бутерброд с маслом и желе легко
00:17:43
сделать интуитивно, если вы выросли, питаясь
00:17:44
этими вещами, но если вы никогда по-настоящему не
00:17:46
задумывались о том, как научить кого-то это
00:17:47
делать, и что кто-то другой не
00:17:50
прощает, как другой человек, в отличие от нас,
00:17:54
людей. соглашения о простом
00:17:56
чтении между строк, компьютеры
00:17:58
не могут сделать, что они будут делать только то, что вы
00:17:59
им скажете, и поэтому
00:18:01
в некотором смысле они менее мощны, чем мы,
00:18:03
люди, так что каков первый шаг для
00:18:06
создания этих
00:18:08
входных данных из этих ингредиентов, если вы сэндвич с арахисовым маслом и
00:18:09
желе откроет пакет с хлебом Я
00:18:13
правильно понял, но, возможно, это не совсем то, что вы
00:18:18
имели в виду, но это нормально,
00:18:20
пакет открыт, так что может быть более
00:18:22
точный шаг, который мы предпримем, уберите
00:18:27
два ломтика, хорошо,
00:18:31
положите их два ломтика на тарелке урони
00:18:37
что урони нож
00:18:39
окей открути варенье окей возьми нож
00:18:52
поставь нож подожди ох спасибо
00:18:57
окей хватай нож с другого конца
00:19:00
кто-то из дальних мест возможно воткни
00:19:05
нож в варенье что это возьми
00:19:10
ладно, еще раз вставь нож в варенье,
00:19:16
как
00:19:17
его зачерпни
00:19:22
[Смех]
00:19:26
окей, мы уже на полпути, что намажьте
00:19:33
ореховое варенье ножом по
00:19:35
хлебу О, даже Ли, давай здесь будем осторожны,
00:19:39
ладно, ладно, дальше, ладно, думаю, мы сделали
00:19:52
это сначала мы сделали это, потом сделали это,
00:19:58
потом ладно, я позволю себе некоторые вольности,
00:20:04
окей, а теперь мы кладем это снова,
00:20:09
вычерпайте немного, как я слышал, на этот раз, на
00:20:12
другой кусок хлеба, спасибо,
00:20:14
распределите его равномерно, мед, в следующий раз попросите меня
00:20:20
воспользуйся моей правой рукой, пожалуйста, ладно, ладно,
00:20:24
и спасибо, положи сторону варенья на
00:20:32
арахисовое масло и вкусно, ага, спасибо, это
00:20:42
глупый пример, чтобы быть плохим, но просто
00:20:46
пойми, сколько возможностей было у Вира
00:20:47
даже в такой простой вещи, как эта, из-
00:20:49
за двусмысленности или сценарии, которые вы не
00:20:51
ожидали, и среди того, что
00:20:53
мы собираемся сделать сегодня, мы собираемся
00:20:54
формализовать эти идеи с помощью кода с
00:20:56
программным кодом или как вы думаете о
00:20:58
разбиении проблем на
00:21:01
составные части, учитывая то, что
00:21:03
произошло, что мне делать если это
00:21:04
произойдет, что мне делать, если это произойдет,
00:21:06
что мне делать, если это произойдет, потому что,
00:21:08
если вы не ожидаете, какую
00:21:09
глупость я намеренно действовал,
00:21:11
кто знает, что в конечном
00:21:13
итоге может сделать компьютер, ведь
00:21:15
все в этой комнате, скорее всего, такие Я видел,
00:21:17
как вращающийся пляжный мяч или
00:21:18
песочные часы на вашем компьютере, или ваш Mac
00:21:20
или ПК зависают или выходят из строя, и почти
00:21:22
всегда это просто результат какой-то
00:21:24
человеческой ошибки, которую кто-то в Google,
00:21:26
Microsoft или Facebook или где-то еще допустил
00:21:28
какую-то ошибку, которой он или она не совершал.
00:21:29
предвидеть какую-то ситуацию не
00:21:31
ожидал, что вы наберете слово, которое вы
00:21:33
не ожидали, что вы запустите 20
00:21:35
программ, которые не предвидели какой
00:21:36
-то сценарий, и поэтому
00:21:38
поведение компьютера было фактически
00:21:40
неопределенным, и поэтому
00:21:43
было выведено неправильное решение, так как начнем ли мы
00:21:46
думать об этом? Что было бы идеально, если бы
00:21:48
мы каким-то образом формализовали это
00:21:51
с помощью реального кода и сделали бы это
00:21:55
с помощью еще одной проблемы старой школы,
00:21:57
которая в наши дни гораздо более цифровая,
00:21:59
но она все еще актуальна? сегодня, независимо от того, есть ли у нас
00:22:01
телефон Android, iPhone или
00:22:02
что-то еще,
00:22:03
скорее всего, у вас есть небольшое приложение для
00:22:04
ваших контактов или адресной книги, и
00:22:06
там целая куча имен, вероятно, в
00:22:08
алфавитном порядке по имени или фамилии,
00:22:10
и целая куча телефонных номеров. номера
00:22:12
и, возможно, дополнительная информация, такая как электронные письма
00:22:13
и т. д. сегодня, но физическое
00:22:15
воплощение этого значка на вашем телефоне
00:22:18
- это целая телефонная книга, и если бы
00:22:20
я хотел найти старого друга,
00:22:22
например, Майка Смита, как бы я мог
00:22:24
найти его в эта старая школьная телефонная
00:22:26
книга, ну, точно так же, как в моей цифровой форме я
00:22:28
мог бы просто пролистать список в
00:22:29
поисках его, так что я мог бы посмотреть на
00:22:31
первую страницу, посмотреть вниз, не видеть, как он переворачивает страницу, смотреть вниз,
00:22:33
не видеть, как он переворачивает
00:22:35
страницу, смотреть вниз по этому шву и так далее,
00:22:37
правильный ли этот алгоритм,
00:22:40
да, он правильный, это немного глупо, потому что
00:22:45
до Майка потребуется целая вечность, если здесь тысяча страниц,
00:22:46
но он правильный, и это его
00:22:48
эквивалент, на самом деле это своего рода медленная
00:22:49
методичная прокрутка вашего списка
00:22:51
контакты без такой роскоши, как
00:22:52
поиск, автоматическое
00:22:53
завершение или свет, ну, я могу делать это
00:22:55
немного лучше, еще в начальной школе я
00:22:56
обычно учусь считать по два, поэтому вместо этого я
00:22:58
могу вместо этого делать два, четыре, шесть, восемь, десять,
00:23:01
двенадцать, я сейчас просматриваю телефонную книгу
00:23:03
явно быстрее, но правильный ли этот алгоритм
00:23:06
нет, почему
00:23:09
да, я могу что-то пропустить, например, Майк
00:23:12
случайно может быть зажат
00:23:13
между двумя страницами, так что это каламбур
00:23:15
между двумя страницами, тогда я пролетаю
00:23:18
мимо и могу пропустить его, но я могу, по
00:23:20
крайней мере, исправить эту ошибку или ошибку, так
00:23:23
сказать, ошибка - это ошибка в программе,
00:23:24
просто человеческая ошибка, если я нажимаю, как
00:23:26
раздел T. T идет после Смита, так что я мог
00:23:29
бы вернуться хотя бы на одну страницу и
00:23:30
исправить эту ошибку, так что это будет стоить мне немного
00:23:33
немного больше времени, чтобы вернуться назад, но если я
00:23:34
все сделаю правильно, это будет стоить мне всего лишь одного дополнительного
00:23:36
перелистывания страницы, так что лучше, и теперь правильно, но
00:23:38
очевидно, что никто в этой комнате не будет
00:23:40
искать Майка Смита, начиная с
00:23:42
первой страницы, где вы собираетесь примерно
00:23:43
смотри, ты знаешь, что я посередине, может быть,
00:23:45
немного ближе к концу, потому что ты знаешь,
00:23:46
где находятся буквы S, и открываешь книгу
00:23:48
до середины, смотришь вниз и видишь
00:23:49
раздел М, так что я не зашел
00:23:52
достаточно далеко, но что приятно Что касается этой
00:23:53
технологии старой школы, то теперь мы можем
00:23:55
разорвать эту проблему пополам, выбросить половину
00:23:59
и остаться с по сути той
00:24:01
же проблемой, но в уменьшенной версии,
00:24:04
теперь это может быть не тысяча,
00:24:06
а пятьсот страниц, но это то
00:24:08
же самое проблема, и я могу применить ту же
00:24:10
логику, перейти примерно к середине, посмотреть вниз. На
00:24:12
этот раз я зашел слишком далеко, Т-образная
00:24:14
секция, но я могу снова, но оторвать
00:24:17
почти четверть этой проблемы, оставив
00:24:20
теперь общий размер, возможно, более
00:24:22
250 страниц после разделения пополам дважды,
00:24:25
и теперь я могу повторять, повторять и
00:24:28
повторять, и пока Майк находится в
00:24:30
телефонной книге,
00:24:31
я в конечном итоге найду его один и
00:24:34
только один раз на последней странице телефонной книги, и в
00:24:37
этот момент я смогу позвонить ему Итак, реальный
00:24:39
вопрос тогда в том, насколько это было лучше.
00:24:41
Это немного расточительно, и вы не можете
00:24:42
отменить это здесь, в аналоговом мире,
00:24:44
но давайте подумаем, как мы можем подумать
00:24:46
о том, насколько хорош тот алгоритм,
00:24:49
который мы все, вероятно, считали само собой
00:24:50
разумеющимся и следовало бы начать с
00:24:51
хорошо, если вот простой график, и по оси
00:24:53
X или горизонтальной оси указан размер
00:24:56
проблемы, то есть количество страниц в
00:24:57
телефонной книге или как вы хотите
00:24:59
ее измерить, а затем по оси Y или вертикальной
00:25:01
оси пора решать так что, возможно, количество
00:25:03
секунд, количество переворотов страниц, но вы
00:25:05
хотите посчитать, это
00:25:06
отношение размера ко времени, и
00:25:09
первый алгоритм. Я нарисую вот так
00:25:12
прямую линию красным цветом и
00:25:14
назову ее n, где n - это просто например,
00:25:16
количество страниц в телефонной книге,
00:25:17
ученые-компьютерщики склонны использовать n в качестве
00:25:18
переменной, так сказать, просто символа, и
00:25:20
это прямая линия по следующей
00:25:23
причине,
00:25:24
если телефонная книга станет немного длиннее в
00:25:26
следующем году немного длиннее в следующем году
00:25:28
примерно на одну страницу это означает, что мне, возможно, придется
00:25:30
потратить еще один шаг на поиски Майка, поэтому
00:25:32
наклон этой линии линейный, существует
00:25:35
соотношение один к одному между количеством
00:25:37
страниц, которые Verizon или компания телефонной книги
00:25:39
помещает в книгу, и количеством
00:25:40
перелистываний страниц, которые мне нужно сделайте второй
00:25:42
алгоритм, хотя он также представляет собой прямую линию,
00:25:43
но здесь он нарисован ниже желтым цветом, а
00:25:46
n больше двух означает, что он в два раза быстрее или,
00:25:49
что эквивалентно, занимает вдвое меньше времени,
00:25:51
потому что для задачи заданного размера, если вы
00:25:54
как бы следуете за моей рукой прямо вверх по
00:25:56
желтому линия должна быть ниже красной линии,
00:25:59
потому что я просматриваю телефонную
00:26:00
книгу по две страницы за раз, поэтому это должно
00:26:03
занять у меня вдвое меньше времени, но если я использую
00:26:05
первый алгоритм, мне придется пройти весь
00:26:06
путь до красной линии, которая измеряет это
00:26:08
количество секунд, но третий
00:26:11
алгоритм имеет принципиально другую
00:26:12
форму, и именно здесь проявляется
00:26:14
красота компьютерных наук, в
00:26:16
частности, алгоритм, он не становится
00:26:19
прямым, в конечном итоге кажется, что он
00:26:20
постепенно ослабевает, но он будет делать
00:26:22
это вечно, это просто становится настолько
00:26:24
медленным увеличением во времени, что вы даже не можете
00:26:27
этого увидеть, особенно если бы экран
00:26:28
был еще шире, и мы будем называть этот
00:26:29
логарифмический логарифм, об этом подробнее в
00:26:32
будущем, но форма принципиально
00:26:33
другая, она изогнута, и что
00:26:35
в этом такого мощного это, и вы можете думать
00:26:36
об этом гораздо легче интуитивно, если
00:26:38
рост в следующем году удвоит размер
00:26:40
телефонной книги, потому что, например,
00:26:42
Кембридж в другом городе
00:26:43
объединится в одну книгу, ничего страшного,
00:26:45
потому что, если Verizon удвоит размер
00:26:47
телефонной книги в следующем году сколько еще
00:26:49
страниц мне нужно, чтобы найти Майка хотя бы
00:26:52
одну правильную, потому что я просто разделил
00:26:53
задачу пополам еще раз, ничего
00:26:55
страшного, вместо того, чтобы пролистать
00:26:57
еще тысячу или пятьсот
00:26:59
страниц, и поэтому эта интуиция, с которой
00:27:02
вы пришли сегодня к Сандерсу, имеет шансы
00:27:04
Можете ли вы уже использовать его для
00:27:06
более эффективного решения проблем, если начнете
00:27:08
замечать закономерности и виды
00:27:09
полезных входных данных, с помощью которых вы можете решать
00:27:11
проблемы, но нам нужно начать
00:27:13
формализовать процесс, который нам нужен, чтобы быть в состоянии
00:27:14
выразить себя немного менее
00:27:16
органично, чем мы это сделали с арахисовым
00:27:18
маслом и желе, так как
00:27:19
мы могли бы более методично выразить
00:27:22
этот алгоритм телефонной книги,
00:27:24
все для которого мы, тем не менее,
00:27:25
имеем интуитивное
00:27:27
понимание, что ж, позвольте мне начать считать
00:27:29
с нуля только потому, что программисты и
00:27:31
ученые-компьютерщики склонны начать
00:27:32
считать с нуля, потому что это похоже на то, что все
00:27:34
лампочки выключены, так что вы можете
00:27:35
начать с этого, а затем нулевым шагом
00:27:37
будет получение телефонной книги, это своего рода
00:27:39
действие, сделайте этот шаг, первый открыт до
00:27:42
середины телефонной книги, это
00:27:43
довольно много то, что я сделал минуту назад,
00:27:45
шаг второй, это посмотреть на имена, другое
00:27:47
действие или глагол, шаг третий, если
00:27:49
среди имен есть Смит, так что это другая
00:27:51
конструкция, и это ключевое слово здесь
00:27:54
будет, если это вопрос, который вы задаете
00:27:56
себе, это своего рода пресловутая развилка
00:27:58
дорог. Если Майк есть среди имен
00:28:00
на странице, которую вы просматриваете, то позвоните
00:28:03
Майку, и я намеренно сделал отступ,
00:28:04
потому что во многих компьютерных языках
00:28:06
отступ логически означает, что вам
00:28:08
следует выполнять четвертый шаг только в том случае, если третья строка
00:28:11
верна или ответ на этот вопрос -
00:28:14
да, иначе, если Смит находится в начале
00:28:17
книги, он должен быть слева от меня, затем
00:28:19
шестой шаг, открытый до середины левой
00:28:22
половины книги, поэтому именно тогда я разорвал
00:28:23
ее пополам, выбросил, а затем
00:28:25
повторил в левой половине иначе, если Смит
00:28:28
извинит, тогда вернитесь ко второму шагу, ключевой
00:28:32
шаг теперь, когда я разделил проблему
00:28:34
пополам и смотрю в середину
00:28:36
левой половины, проблема в
00:28:38
основном такая же, как я утверждал
00:28:39
ранее сделайте то же самое, но для решения
00:28:41
меньшей задачи, и что прекрасно
00:28:42
в этом алгоритме, так это его рекурсивность,
00:28:45
как мы увидим в будущем, это то,
00:28:46
что вы продолжаете делать одно и то же, одно и то
00:28:49
же, но поскольку
00:28:51
проблема со временем становится все меньше,
00:28:53
вы Я не собираюсь делать это вечно,
00:28:55
ты найдешь ответ, который
00:28:57
ищешь, и поэтому мы вернемся к шагу
00:28:58
второму, шагу восьмому, если еще, если Смит
00:29:01
позже в книге, справа от меня, открытая до
00:29:03
середины правую половину книги,
00:29:05
а затем снова вернитесь ко второму шагу,
00:29:08
иначе какой четвертый сценарий следует
00:29:11
рассмотреть, да, что, если Майка нет в
00:29:14
телефонной книге, его нет в списке, нам лучше
00:29:16
ожидать, что моя программа выйдет из строя или
00:29:18
мой компьютер зависнет, потому что типа он
00:29:20
не знает, что делать, если Майка нет
00:29:22
рядом, поэтому в данном конкретном случае я уйду,
00:29:24
а теперь давайте разберем это на части,
00:29:26
выделив желтым те рабочие
00:29:28
глаголы или действия, впредь мы будем
00:29:30
называть такие вещи, как эти желтые слова,
00:29:32
функцией
00:29:33
так сказать на языке программирования,
00:29:34
это глаголы или действия, и я
00:29:37
назвал их, хотя и на английском,
00:29:38
потому что здесь нет единого языка,
00:29:40
это не похоже на формальный словарь, который
00:29:41
мы вводим, это просто мой самый
00:29:43
краткий способ выразить этот
00:29:44
алгоритм и вот что такое псевдокод, это
00:29:46
синтаксис, похожий на английский, которому,
00:29:49
надеюсь, сможет
00:29:50
следовать любой в комнате, если вы вежливы, аккуратны и
00:29:52
точны в этом, но здесь есть другой
00:29:54
тип ключевого слова, и это
00:29:56
if и the else if и else если и
00:29:58
еще это ключевые слова, которые
00:30:00
язык обычно использует для обозначения
00:30:02
этих развилок на дороге, иди налево, иди направо,
00:30:04
иди сюда, иди туда,
00:30:05
делай разные вещи, и каждое из этих
00:30:07
решений, если хочешь, основано на
00:30:10
ответе на вопрос и эти вопросы.
00:30:13
мы будем называть логические выражения,
00:30:14
названные в честь человека, которого звали bool несколько лет
00:30:17
назад, и логическое выражение — это просто
00:30:19
вопрос с ответом «да/нет» или,
00:30:21
более технически, истинный/ложный ответ, и
00:30:24
обратите внимание на тот факт, что все разбивается
00:30:26
на несколько ведер по два. да/нет
00:30:29
истина/ложь означает, что мы можем использовать эти
00:30:31
лампочки действительно в наших интересах, может быть, выключено,
00:30:33
Шелби знает, или ложно, может быть, включено, будет
00:30:37
правдой или да, просто используя одну лампочку,
00:30:39
можем ли мы представить любой из этих ответов на
00:30:42
эти вопросы, и таковы логические
00:30:44
выражения и, наконец,
00:30:46
эти вещи переходят ко второму шагу, который,
00:30:48
пожалуй, наиболее явный, он вызывает
00:30:50
какой-то цикл или цикл, делайте что-то
00:30:53
снова и снова во всех этих идеях,
00:30:55
функции, условия, логические выражения,
00:30:57
циклы и многое другое будут пронизывать
00:30:59
их несколько языков который мы исследуем
00:31:01
в течение семестра, но,
00:31:04
конечно, это само по себе еще не настоящий
00:31:07
код, и сегодня
00:31:09
мы немного углубимся в реальный программный
00:31:10
код, хотя и графически, с использованием языка
00:31:12
под названием Scratch, а затем продолжим это
00:31:14
позже. неделя с
00:31:16
языком программирования под названием C, но перед этим позвольте мне
00:31:18
рассказать всего пару слов
00:31:19
о cs50, его лекциях,
00:31:22
разделах, рабочих часах и многом другом - это
00:31:23
целая команда, почти сотня сотрудников каждый
00:31:26
год, которые здесь, чтобы сделать этот курс
00:31:28
успешным для вас. так что, независимо
00:31:30
от вашего предыдущего опыта или его отсутствия,
00:31:31
вы тоже можете добиться успеха, особенно если вы
00:31:34
были среди этих 68%, и позвольте мне
00:31:36
пригласить Марию, Брайана, Дуга и
00:31:39
Роба прийти поздороваться с курсов
00:31:42
[Аплодисменты]
00:31:51
всем доброе утро, мое имя это Дуг
00:31:54
Ллойд, я старший наставник
00:31:56
и менеджер курса двенадцать лет назад, теперь
00:31:59
я сидел, образно говоря, там, где сидели вы, это было
00:32:01
в лекционном зале Лоуэлла, прямо через
00:32:03
дорогу, я был среди тех, кто чувствовал себя менее
00:32:04
комфортно, я никогда
00:32:07
в жизни не программировал, я взял cs50 это полностью
00:32:10
изменило мое представление о
00:32:11
решении проблем. Вскоре после этого я перешел на специальность CS,
00:32:15
и я работаю в
00:32:17
штате с Дэвидом уже 11 лет, так что
00:32:20
здорово быть здесь еще раз, спасибо
00:32:21
всем за то, что вы здесь, привет всем, меня зовут
00:32:29
Мария, я старший ливийский Кэбот,
00:32:31
и это мой четвертый год на курсе. Я
00:32:34
поступил на него на первом курсе в прекрасное время,
00:32:37
и это мой третий год обучения, и мне
00:32:39
это очень понравилось, персонал потрясающий,
00:32:41
работает со всеми вами это потрясающе, и мне
00:32:43
не терпится провести
00:32:45
с вами потрясающий выпускной год, ребята, всем привет. Я Брайан,
00:32:52
я ассистент курса, я учусь на
00:32:54
первом курсе, живу в Уинтропе, и я
00:32:57
посещал этот курс на первом курсе два
00:32:58
года назад, и очень рад, что все
00:33:01
вы были здесь, и с нетерпением жду
00:33:02
фантастического семестра и
00:33:03
работы со всеми вами, эй, ребята, я Роб,
00:33:09
я аспирант четвертого курса, живу на
00:33:12
ярмарке, и это мой восьмой год обучения на этом
00:33:17
курсе и каждый Я думаю, что курс
00:33:19
становится лучше, и этим летом мы приложили много усилий,
00:33:22
создавая новые инструменты и создавая новую
00:33:24
учебную программу, и я действительно думаю, что вам,
00:33:25
ребята, он понравится,
00:33:30
спасибо, у нас есть традиция в CS50
00:33:32
заканчивать первая неделя с тортом или
00:33:34
кексами, и поэтому после сегодняшней лекции
00:33:36
вы можете присоединиться к нам и в
00:33:38
трансепте, чтобы встретиться с еще большим количеством
00:33:39
сотрудников курсов, но сначала и до того, как мы
00:33:41
перейдем на один из этих первых настоящих
00:33:44
языков программирования, мы думали, что мы
00:33:46
приглушим освещает и рисует картину
00:33:47
не только структуры поддержки курсов,
00:33:49
но и их культуры или
00:33:51
сообщества, на чем мы
00:33:52
все больше внимания уделяем в последние годы,
00:33:54
чтобы учащиеся в классе чувствовали, что
00:33:56
это не только возможность
00:33:58
познакомиться с информатика, но
00:33:59
также и введение в Гарвард, и, как
00:34:01
вы видели, в Йельском университете и за его пределами, они представляют собой
00:34:04
сообщество поддержки, так что каждый из вас может
00:34:07
опираться друг на друга, решая
00:34:08
проблемы недели, и в конечном итоге закончить работу,
00:34:10
получив очень общий аналогичный
00:34:12
опыт. это сообщество cs50 s
00:34:18
[Музыка]
00:34:43
[Музыка] [Аплодисменты]
00:34:46
[Музыка]
00:34:50
[Аплодисменты]
00:34:53
[Музыка]
00:34:58
[Аплодисменты]
00:35:01
[Музыка]
00:35:10
[Аплодисменты]
00:35:13
[Музыка]
00:35:18
[Аплодисменты] [Музыка]
00:35:37
[Аплодисменты]
00:35:38
[Музыка]
00:35:39
все в порядке вскоре так
00:35:47
будет выглядеть код, и,
00:35:49
честно говоря, он чертовски загадочный и
00:35:50
чертовски отвлекает от
00:35:52
точек с запятой, как мы увидим в фигурных скобках, круглых скобках
00:35:54
и тому подобном, и, честно говоря,
00:35:56
такие синтаксические отвлекающие факторы
00:35:58
имеют тенденцию проникать внутрь. способ изучения
00:35:59
действительно интересного
00:36:01
интеллектуального контента о программировании
00:36:03
и информатике в целом,
00:36:04
поэтому вместо этого мы начнем сегодня, а на
00:36:07
следующей неделе перейдем к этому языку
00:36:09
с нуля - очаровательного языка, который
00:36:11
был изобретен неподалеку в
00:36:12
медиалаборатории Массачусетского технологического института несколько лет назад, что
00:36:14
чудесно содержит все концепции, которые
00:36:17
мы рассматривали до сих пор в форме
00:36:18
Майка Смита в форме
00:36:19
арахисового масла и желе, а также еще больше
00:36:21
идей и позволяет нам сегодня программировать,
00:36:24
перетаскивая кусочки головоломки, которые соединяются друг с другом
00:36:26
только в том случае, если это имеет
00:36:29
логический смысл, и
00:36:30
по совпадению, как вы, возможно,
00:36:32
заметили, будучи частью сообщества cs50, это то, что
00:36:34
вы, возможно, видели, как на этой неделе открылась дверь.
00:36:36
День головоломки cs50 - это возможность не
00:36:38
решать проблемы с помощью компьютеров и
00:36:40
программ, а скорее решать проблемы с помощью коллег и формировать
00:36:43
команды из двое, трое или четверо за
00:36:45
рекой в ​​лаборатории искусственного интеллекта на день головоломок cs50,
00:36:47
возьмите одно из приглашений на выходе,
00:36:49
цель состоит в том, чтобы сообщить, что
00:36:51
информатика сама по себе действительно не
00:36:52
о программировании, а, в конечном счете, о
00:36:54
решении проблем, и в данном случае о пицце
00:36:57
а также призы, так что это
00:37:00
скретч, и что хорошо в скретче, так это
00:37:02
то, что с помощью этого языка мы можем разложить
00:37:04
предыдущую, более загадочную программу
00:37:07
всего на пару частей головоломки, и давайте
00:37:09
посмотрим на сравнение, если мы оглянемся на
00:37:11
мгновение назад, вот эта программа C -
00:37:13
довольно старый язык программирования, но он
00:37:16
хорош тем, что он довольно маленький. Вскоре мы увидим,
00:37:18
что изучим почти все аспекты
00:37:20
этого языка, но как
00:37:22
вы думаете, что он дает, особенно если вы
00:37:23
никогда раньше не программировали и даже не
00:37:25
узнайте некоторые слова на
00:37:26
экране, какое ключевое слово, возможно,
00:37:29
бросается в глаза, что это за печать, так что
00:37:31
технически это печать F, что я
00:37:33
сейчас не совсем понимаю, что это значит,
00:37:34
но печать звучит знакомо, и что она,
00:37:36
вероятно, будет печатать, привет, мир когда
00:37:39
я запускаю эту программу на своем Mac или ПК, скорее всего,
00:37:41
она просто напечатает привет,
00:37:43
мир, как еще не знаю, но мы доберемся до
00:37:45
этого, но сейчас ту же программу на
00:37:47
другом языке можно
00:37:49
реализовать графически путем
00:37:51
перетаскивания - сложить вместе два кусочка головоломки,
00:37:52
чтобы поцарапать их, и вы скоро
00:37:54
встретитесь, как кот говорит «Привет, мир» в
00:37:57
мультфильме, как пузырь на экране, и поэтому
00:37:59
на самом деле мы сможем исследовать с
00:38:01
нуля все эти же самые идеи,
00:38:03
функции, условия, логические значения выражения
00:38:04
и циклы, а затем множество других,
00:38:06
которые затем снова увидят на C, а
00:38:09
затем в семестре на Python, а
00:38:10
затем в семестре в сиквеле и
00:38:12
JavaScript и далее, и поэтому мы начнем
00:38:14
с их изучения следующим образом, позвольте мне продолжить
00:38:16
и откройте эту программу.
00:38:18
Она существует в двух формах: автономная
00:38:20
версия, которую я обычно использую в классе,
00:38:22
чтобы у нас не было проблем с Wi-Fi, а также
00:38:24
онлайн-версия на Scratch.mit.edu,
00:38:26
которую вы будете использовать для Курсус,
00:38:28
конечно, в этой первой задаче на задание
00:38:30
указано ноль, и вот как
00:38:32
выглядит окружающая среда в левом верхнем углу,
00:38:34
где находится этот кот, назовет эту
00:38:36
стадию царапин. Это его
00:38:38
двухмерный мир, в котором он может
00:38:39
перемещаться вверх вниз влево или вправо посередине.
00:38:42
это целая куча категорий
00:38:44
частей головоломки, здесь написано, что нужно двигаться на десять шагов,
00:38:46
поворачивать на 15 градусов и так далее, и вверху
00:38:49
разные категории с цветовой кодировкой, другие
00:38:51
категории других частей головоломки, которые мы
00:38:53
можем захотеть использовать, а затем прямо здесь это
00:38:55
так называемая область сценариев,
00:38:57
здесь я могу программировать, здесь я буду
00:38:59
перетаскивать эти кусочки головоломки
00:39:00
сюда, если мне нужно больше одного кота или
00:39:03
какого-то другого персонажа, я также могу создавать другие
00:39:04
спрайты или персонажей, и как
00:39:07
мне это сделать? в этом случае мы сначала заметим,
00:39:09
что в мире царапин есть зеленая стрелка
00:39:12
и красный знак остановки. Зеленая стрелка будет
00:39:14
означать, что знаки остановки будут означать остановку, поэтому
00:39:16
я запускаю и останавливаю свою программу
00:39:18
здесь, прямо над нулями, тем временем, если
00:39:21
я хочу начну программировать, я собираюсь сделать
00:39:24
это, и я знаю, что это только из-за того, что я
00:39:25
раньше использовал нуля, где все обстоит, если
00:39:27
я нажму на категорию событий, заметьте
00:39:30
здесь этот кусок головоломки, когда нажат зеленый флажок,
00:39:32
я могу перетащить этот
00:39:35
кусок головоломки в любое место справа и
00:39:37
мои программы пока ничего не сделают,
00:39:38
потому что я закончил эту мысль, но если я
00:39:40
теперь перейду к другой категории, выделенной
00:39:42
фиолетовым цветом, я мог бы сказать что-то вроде «скажи»,
00:39:45
и теперь заметьте, когда я подхожу достаточно близко,
00:39:46
они как бы притягивают, и они хотят
00:39:48
блокировка, чтобы я мог отпустить, а затем ввести
00:39:50
здесь привет, мир запятой. Я уменьшу масштаб,
00:39:53
теперь подведу курсор к зеленому
00:39:56
флажку и щелкну, и теперь я правильно написал свою
00:39:59
первую программу, это не так уж и
00:40:01
сложно, конечно, все, что я сделал, это
00:40:03
перетащите пару
00:40:04
графиков, но логически он делает
00:40:06
именно то, что я ему сказал, прежде чем
00:40:09
мы продолжим, давайте посмотрим, как
00:40:10
будут выглядеть некоторые из этих блоков,
00:40:12
чтобы у нас была мысленная
00:40:13
модель для этих различных категорий с цветовой кодировкой.
00:40:15
фиолетовым цветом мы увидим
00:40:16
функции, действия или глаголы, как мы видели в
00:40:19
примере с телефонной книгой, здесь у нас
00:40:21
будут условия, это еще несколько
00:40:23
частей головоломки, но они очень красиво
00:40:24
соединяются друг с другом, и это ветвь
00:40:26
или условие, и обратите внимание - просто как и в
00:40:29
моей текстовой программе, я делал отступы,
00:40:32
нажимая клавишу пробела или клавишу Tab, так что вот
00:40:34
он как бы с отступом, потому что
00:40:36
желтый цвет обволакивает весь
00:40:37
кусок головоломки, поэтому будет сказано, что X
00:40:40
меньше Y, только если эти оранжевые
00:40:42
кусочки головоломки x и y которые мы будем называть
00:40:43
переменными, которые, как и в алгебре,
00:40:45
содержат значения, такие как 1, 2, 3 или 4, мы
00:40:48
скажем, что X меньше, чем Y, в этом случае
00:40:50
мы можем вкладывать эти вещи, поэтому,
00:40:52
даже если они выглядят как фиксированный размер,
00:40:54
они на самом деле вырастет, чтобы соответствовать другим
00:40:55
блокам, если вы хотите втиснуть больше, поэтому
00:40:58
здесь у нас есть трехсторонняя развилка на
00:40:59
дороге, просто объединив эти идеи, если X
00:41:02
меньше Y, то скажите, что X меньше Y,
00:41:05
иначе, если X больше чем Y, тогда скажите, что X
00:41:09
больше, чем Y, иначе третий
00:41:10
сценарий, конечно, X должен быть равен
00:41:13
Y, так что вот насколько хорошо программа будет просто
00:41:15
перетаскивать эти кусочки головоломки
00:41:16
вместе, как здесь называется этот зеленый блок,
00:41:18
вообще говоря, хорошо,
00:41:22
условие технически будет называть
00:41:23
желтый цвет, который использует этот зеленый блок,
00:41:25
это логическое выражение, и это потому, что
00:41:28
это да/нет или правда, ложный
00:41:30
ответ X меньше, чем Y, это либо правда,
00:41:34
либо его ложь, это не может быть и то, и другое, и поэтому у нас
00:41:38
может быть больше как правило, если мне меньше
00:41:40
50, вам не нужно сравнивать переменные,
00:41:41
как в математике, вы можете сравнивать
00:41:43
числа с переменными, но здесь
00:41:46
другой контракт, мы называем это циклом,
00:41:48
своего рода циклом, который в этом
00:41:49
случае делает что-то навсегда, например, «Привет,
00:41:51
мир» или мы можем сделать это конечное число
00:41:53
раз, например, 50 раз сказать «Привет, мир», а
00:41:55
затем остановиться, вот как мы можем установить
00:41:57
переменную, в этом оранжевом блоке написано: установите
00:41:59
переменную с именем I по соглашению, потому что
00:42:01
я обозначаю целое число, например число, присвойте ему
00:42:04
значение 0 и затем эти две вещи
00:42:06
демонстрируют более мощную
00:42:08
функцию многопоточности, которую имеют Scratch и языки.
00:42:09
Это
00:42:12
причудливый способ сказать, что программу можно
00:42:14
написать таким образом, чтобы она делала две
00:42:15
вещи одновременно, как просто вы
00:42:17
двое из этих частей головоломки, так что, когда
00:42:19
вы нажимаете на зеленый флаг,
00:42:21
одновременно происходит несколько событий, таким образом, поддерживаются
00:42:24
потоки, а затем есть еще одна
00:42:26
интересная функция, но ее относительно
00:42:27
легко использовать, она называется обработкой событий,
00:42:30
и мы вернемся к этому, когда
00:42:31
представить веб-программирование позже в
00:42:32
семестровой трансляции, и когда я получу
00:42:35
просто этот спрайт, один персонаж,
00:42:37
например, кот, может как бы прошептать
00:42:40
другому спрайту в программе и
00:42:42
отправить ему сообщение, которое он сможет услышать или,
00:42:44
точнее, принять, а затем сделать
00:42:46
что-то на его основе, поэтому вместо того,
00:42:48
чтобы ваша программа делала что-то только тогда, когда
00:42:50
вы нажимаете на зеленый флаг, вы можете заставить
00:42:52
один спрайт разговаривать с другим, сообщая ему,
00:42:54
когда начинать, или что-то в этом
00:42:56
роде, и поэтому, используя только эти
00:42:58
основы, мы можем начать
00:43:00
реализацию любого количество программ на
00:43:03
самом деле, давайте продолжим и сделаем это, позвольте мне
00:43:04
пойти дальше и сделать это более
00:43:06
интересным, не просто говоря это на
00:43:08
экране, позвольте мне пойти дальше и перейти к звуку
00:43:10
и воспроизвести звук «мяу» с немного большей
00:43:16
громкостью О, с немного меньшей громкостью
00:43:23
восхитительно, это простая программа, и если я
00:43:26
хочу, чтобы она мяукала три раза, мне просто нужно
00:43:29
нажать на нее три раза, но я могу добиться
00:43:30
большего, верно, я не хочу
00:43:32
перезапускать программу, какой контракт
00:43:33
позволит мне теперь три раза да,
00:43:36
как цикл или повтор, так что позвольте мне перейти к
00:43:38
управлению. Я увеличу повтор по умолчанию,
00:43:41
это десять раз, поэтому я собираюсь изменить это
00:43:42
на три, я могу перетащить это и теперь
00:43:45
поместить это внутрь, обратите внимание, что он хочет подключиться
00:43:47
внутри, и это растет, чтобы соответствовать, и теперь я могу
00:43:50
позволить ему подключиться, позвольте мне снова нажать кнопку воспроизведения,
00:43:52
хм, что там произошло, моя первая
00:43:58
ошибка, это незаметная вещь, но это такая
00:44:01
вещь, которая должна заставить вас задуматься,
00:44:02
особенно если вы столкнетесь с этим
00:44:04
самостоятельно, я должен был подумать немного
00:44:07
подробнее о том, какие блоки использовать,
00:44:11
подсказка вроде бы на экране, хотя
00:44:13
она очень тонкая, пока не будет выполнена, как будто есть
00:44:17
альтернативный блок, и вы знаете, что
00:44:19
я пока не знаю, почему это будет правдой,
00:44:21
но позвольте мне сделать это и избавьтесь от
00:44:24
этого, просто перетащив его, посмотрим, решит ли
00:44:25
это проблему, даже если мы
00:44:27
не уверены, почему
00:44:29
это звучит не очень естественно, но
00:44:33
это вроде как исправило ошибку, так что можем ли мы ретроспективно сделать вывод,
00:44:36
почему раньше он был
00:44:39
глючным и как это было глючно, да, вроде
00:44:43
как воспроизводилось все три одновременно, а не
00:44:45
технически в одно и то же время, но
00:44:47
мой Mac в наши дни чертовски быстр, верно,
00:44:49
Intel Внутри у вас есть гигагерцовый процессор
00:44:51
или мозг внутри компьютера, или 2
00:44:53
гигагерца, эти цифры буквально означает, что
00:44:55
ваш Mac или ПК может выполнять миллиард действий
00:44:56
одновременно или, извините, миллиард действий
00:44:59
в секунду, что все еще довольно хорошо,
00:45:01
или 2 миллиарда операций в секунду, что все
00:45:03
еще довольно хорошо, так что, конечно, теперь он может сделать это
00:45:05
три раза, и все просто своего рода
00:45:07
путешествие друг мимо друга, но если
00:45:09
вместо этого мы воспользуемся блоком с надписью «играть
00:45:10
до завершения», тогда вы действительно услышите все
00:45:13
три, и мы действительно сможем добиться большего,
00:45:14
потому что это был не
00:45:15
совсем обычный кот, я могу перетащить этот блок
00:45:18
подожди секунду и посмотрим, станет ли это немного
00:45:20
более естественным, окей,
00:45:27
неплохо, чертовски мило, но что, если мы
00:45:29
захотим добавить какое-нибудь движение, теперь позвольте мне
00:45:31
удалить это и позволить мне сделать
00:45:32
вечный блок, чтобы я не Мне нужно
00:45:34
заранее выяснить, как долго это делать, и
00:45:36
позволить мне начать движение, пройти 10 шагов,
00:45:39
а затем щелкнуть зеленый флажок, окей,
00:45:44
к счастью, в MIT поняли, что это может
00:45:45
быть плохо, поэтому они дают нам достаточный
00:45:47
доступ к его хвосту, чтобы его вытащить. назад, но
00:45:49
это не лучшая программа,
00:45:51
вероятно, было бы лучше, если бы он отскочил в
00:45:54
сторону или обнаружил обнаружение столкновений,
00:45:55
верно, мы сейчас живем в мире
00:45:57
беспилотных автомобилей, очевидно, было бы
00:45:58
неплохо, ну, может быть, если бы они это сделали не
00:46:00
отскакивают друг от друга, но они
00:46:01
вообще избегают чего-либо, так что все в порядке, у меня есть
00:46:04
словарный запас, с помощью которого можно это сделать, позвольте
00:46:06
мне увеличить масштаб, и какую конструкцию я
00:46:08
хочу придумать, чтобы решить эту проблему, например, если вы
00:46:11
доберетесь до края, развернитесь, это немного вроде
00:46:14
как, если да, то позвольте мне вытащить это,
00:46:16
а затем сказать, хорошо, если теперь мне нужно
00:46:21
закончить предложение, и я могу сделать это
00:46:23
быстрее, просто из опыта, так что я
00:46:24
перейду к ощущению, а затем
00:46:26
возьму это логическое выражение, выделенное синим цветом, и
00:46:28
обратите внимание, что оно слишком велико, но оно вырастет
00:46:30
до заполнения, и теперь из этого раскрывающегося списка я
00:46:32
могу вместо этого задать этот вопрос,
00:46:34
если дотронусь до края, что я могу сделать,
00:46:39
может быть, повернуть вот так, и я поверну вот
00:46:42
так Поверните на 180 градусов, чтобы полностью
00:46:44
обернуться, и теперь мне нужно переместить это обратно,
00:46:46
и снова похоже, что оно может не
00:46:47
подойти, но оно вырастет, чтобы соответствовать этому, иначе
00:46:50
продолжайте и переместите десять шагов, так что позвольте мне
00:46:53
продолжить и нажать кнопку воспроизведения сейчас, ладно,
00:46:56
еще немного глючит, но, по крайней мере, он
00:46:58
динамичен, и он делает это вечно, теперь
00:47:00
мы можем отклониться от академичности этого
00:47:03
примера и сделать что-нибудь вроде этой глупости,
00:47:04
просто чтобы вы знали, какие у него функции
00:47:06
это микрофон, который я
00:47:11
записывал, это микрофон здесь мы
00:47:12
выходим, окей, вот как слово out
00:47:18
выглядит в виде волны,
00:47:19
давайте теперь вызовем это, и теперь мне нужен
00:47:25
звук, упс, сценарии, звук, воспроизведение звука
00:47:29
логически, так что просто чтобы дать вам
00:47:33
представление о том, что мы делали, если коснуться края,
00:47:35
воспроизвести звук, ой,
00:47:36
развернитесь на выходе это
00:47:42
немного запоздалая реакция, но теперь мы
00:47:44
как бы объединили эти разные идеи
00:47:46
и уже как бы быстро продвинулись за
00:47:48
пределы того, с чего начали, все, что мы
00:47:49
сначала сделали, это сказали что-то, затем мы
00:47:51
передвинули кошку, теперь мы переехали это навсегда,
00:47:53
тогда мы переместили его навсегда, если только вы не дойдете до
00:47:55
края, и в этом случае вам следует
00:47:57
развернуться, поэтому, просто основываясь на этих очень
00:47:58
простых идеях, мы можем продолжать создавать более
00:48:00
сложные программы, и
00:48:02
лучше всего на мгновение передвинуться вперед, прежде чем мы
00:48:04
разберем некоторые из более
00:48:05
сложные функции, чтобы
00:48:07
оглянуться на самую первую программу, которую
00:48:09
я сам написал еще в аспирантуре,
00:48:12
когда впервые появился скретч. Я назвал ее «
00:48:14
Время Оскара», так как мне всегда нравилась «
00:48:16
Улица Сезам», и это была программа, которую я создал,
00:48:19
которая сочетает в себе
00:48:20
много-много-много через несколько часов после первого
00:48:22
начала с нуля целая куча таких
00:48:24
же идей, и вместо того, чтобы я
00:48:26
играл в это, было бы веселее, если бы кто-то
00:48:28
другой, возможно, играл, могли бы мы найти смелого
00:48:30
волонтера немного дальше, да,
00:48:32
как тебя зовут,
00:48:33
Монти, давай, Монти, все хорошо,
00:48:36
спасибо Монти,
00:48:42
и тебе должно быть комфортно находиться в
00:48:45
Интернете сейчас, так как есть камеры,
00:48:47
приятно познакомиться, заходи, и вот, когда пришло
00:48:49
время Оскара, обратите внимание, что есть
00:48:52
целая куча спрайтов, так что вы увидите
00:48:54
кучу вещей, происходящих сразу и
00:48:55
осознать, что я не начал писать эту
00:48:57
программу с реализации этой игры, я
00:48:59
реализовал ее по частям,
00:49:01
пока конечный эффект спустя много-много-много
00:49:02
часов не превратился в игру, которую вы сейчас
00:49:04
увидите, позвольте мне продолжить и
00:49:06
развернуть ее в полноэкранном режиме. и через мгновение мы увидим некоторые
00:49:08
направления на экране,
00:49:09
и вы можете управлять
00:49:10
перетаскиванием клавиатуры. Много мусора падает, как
00:49:14
вы можете, в его мусор, очень хорошо, так что, пока она
00:49:27
играет, давайте посмотрим, из каких
00:49:29
строительных блоков состоят некоторые из них. программа,
00:49:31
поэтому первое, что я сделал, когда
00:49:33
реализовал эту игру, которая будет
00:49:35
становиться все более и более сложной, это то, что я просто
00:49:36
понял, как переместить кусок мусора
00:49:38
сверху вниз, и это что-то вроде того, что
00:49:39
мы просто сделал с
00:49:41
котом, хотя и сверху вниз, а не
00:49:43
слева направо, а затем после этого я
00:49:46
думаю, что, вероятно, реализовал часть
00:49:48
Оскара, и Оскар очень просто
00:49:51
анимирован, это не похоже на видео, это
00:49:53
примерно три или около того разных изображения, поэтому
00:49:55
мусорная корзина закрыт он частично открыт
00:49:57
он полностью открыт он выскакивает это просто
00:50:00
куча разных изображений или костюмов, как
00:50:01
их называет Массачусетский технологический институт, в которые я играю с интервалом в
00:50:04
полсекунды, чтобы создать
00:50:06
иллюзию, как в тех старых
00:50:07
книжках-раскладушках, где что-то происходит в анимации
00:50:10
мода, тем временем он четко считает,
00:50:15
поэтому использует переменную, одну из тех
00:50:17
оранжевых частей головоломки, которые мы ранее видели, есть
00:50:19
какая-то случайность,
00:50:21
оказывается, программы, включая царапины, могут
00:50:23
использовать псевдослучайность, своего рода
00:50:25
случайное значение, так что мусор иногда
00:50:27
падает здесь или здесь или здесь, и многие
00:50:29
видеоигры делают это правильно, многие
00:50:31
игры, на которых вы, возможно, выросли,
00:50:32
были бы довольно отстойными, если бы они были
00:50:34
одинаковыми каждый раз, когда вы в них играете, вы
00:50:36
хотите, чтобы компьютер или процессор
00:50:38
действовали немного по-другому или
00:50:40
случайным образом
00:50:46
[Музыка]
00:50:49
теперь имейте в виду, что эта песня длится около трех
00:50:52
минут, и наличие всего одной ошибки в
00:50:55
середине этой программы было
00:50:57
абсолютным кошмаром для отладки, ожидание
00:50:59
минуты или двух, пока это не произойдет
00:51:01
снова, это никогда не прекращается, примите
00:51:09
поздравления,
00:51:11
спасибо, позвольте мне поблагодарить у вас тоже есть маленький
00:51:15
мяч для стресса CS50, не меньше, так что
00:51:17
тогда настало время Оскара, но что хорошо в
00:51:19
этом, помимо того, что вы «мой, мой, мой ребенок», так это то, что
00:51:23
это дает нам возможность подумать,
00:51:25
как вы могли бы создать что-то довольно
00:51:27
сложное на вид и, надеюсь, красивое
00:51:29
в конце весело, но только из этих
00:51:30
составных частей, и давайте посмотрим, какие
00:51:32
еще ингредиенты, например, у нас на
00:51:34
самом деле есть, позвольте мне пойти дальше
00:51:36
и открыть, например, овцу, это
00:51:40
пример и это, как и все сегодняшние
00:51:42
или на веб-сайте курсов, если вы хочу
00:51:44
поиграть, в этом случае я меняю кота на овцу,
00:51:45
и если я нажму кнопку «Играть», вы увидите, что
00:51:47
здесь происходит: Овца, упс,
00:51:50
овца вообще не в счет, позвольте мне
00:51:52
взять другую версию
00:51:55
овцы, так как я сломал его минуту назад,
00:51:57
извиняюсь, сейчас появится овца, и вот у
00:52:04
нас есть овца с очень простым
00:52:06
скриптом, в котором также отсутствует его программа,
00:52:10
ох, как неловко, и здесь у нас есть
00:52:14
онлайн-версия нуля, и, конечно же,
00:52:16
поскольку сейчас все браузеры в мире
00:52:17
блоки мигают, мы должны включить его здесь,
00:52:20
и теперь, наконец, у нас есть
00:52:24
подсчет овец, так что это очень неприятно, это
00:52:26
буквально просто подсчет овец, хорошо,
00:52:29
поэтому я потратил на это много времени, поэтому я
00:52:32
рад, что у нас это работает так на вверху
00:52:33
справа, хотя вы можете рассмотреть части,
00:52:36
которые вошли в это, когда нажат зеленый флаг,
00:52:37
установите счетчик, который является просто
00:52:39
переменной, это более интересно, чем
00:52:40
называть его X или Y. Я вызываю счетчик, устанавливаю
00:52:42
его равным нулю, а затем навсегда говорю
00:52:45
счетчик в течение одной секунды как в
00:52:46
маленьком мультяшном пузыре, подождите одну секунду,
00:52:48
а затем измените счетчик на единицу,
00:52:50
просто добавив к нему единицу, и мы получим
00:52:52
эффект вечного подсчета, используя
00:52:56
эту переменную, мы также можем сделать что-то еще,
00:52:58
например, позвольте мне сейчас продолжить
00:53:00
и снова получить немного динамического ввода от
00:53:02
персонажа, такого как кошка, и этот
00:53:05
называется «погладить кошку», поэтому в «погладить кошку» у
00:53:08
нас нет ничего следующего,
00:53:14
хотя я нажимаю «играть», но подождите минутку,
00:53:16
давайте посмотрим на программу, как мне сделать
00:53:18
эта программа делает что-то, я поглажу
00:53:21
кошку, так что там есть условие if,
00:53:23
которое задает вопрос,
00:53:24
касаетесь ли вы указателя мыши, так что
00:53:26
давайте попробуем, это вроде как здорово, что мы можем сделать
00:53:33
нечто противоположное, хотя мы не гладим
00:53:36
кот, вы увидите, что у меня есть
00:53:37
if-else, так что по умолчанию кот теперь
00:53:41
[Музыка]
00:53:42
мяукает, но если вы погладите этого кота, так что не
00:53:52
ставьте этого кота, как это сработало хорошо, вам
00:53:54
просто нужна еще одна развилка на дороге если
00:53:55
вы гладите кошку, издайте
00:53:57
звук льва, иначе просто мяукайте гораздо приятнее и
00:53:59
спокойнее, и мы можем пойти дальше
00:54:02
- позвольте мне продолжить и теперь открою
00:54:04
темы, которые являются примером программы,
00:54:06
выполняющей несколько действий одновременно в данном
00:54:08
случае у нас есть другой тип кошки
00:54:10
и птицы, и они, кажется,
00:54:13
умнее из двух, кот знает
00:54:17
немного больше, чем птица, о том, что
00:54:19
происходит, своего рода ИИ, если вы согласны,
00:54:25
там тот же звук, но обратите внимание, что теперь у нас есть
00:54:28
взаимодействие между ними, кот,
00:54:30
честно говоря, это своего рода обман, на самом деле это не искусственный
00:54:31
интеллект, это просто указание на птицу,
00:54:33
и вот у нас есть кусочек головоломки, который
00:54:35
говорит навсегда, если прикоснуться к птице, воспроизвести
00:54:37
звук льва, вот как программа
00:54:39
заканчивается но внизу там точка
00:54:41
птицы птица переместится на один шаг точка в сторону
00:54:43
птица переместится на один шаг и что это будет
00:54:47
делать, если я стану немного нетерпеливым
00:54:49
и наделю кошку здесь некоторыми богоподобными способностями,
00:54:52
просто чтобы ускорить ее перемещение на десять
00:54:55
шагов за раз время и все снова,
00:54:57
анимация заключается в том, чтобы вместо перемещения на одну точку
00:54:58
или выбора времени двигаться десять, эффект
00:55:01
от которого для нас, людей, заключается в том, что на
00:55:02
самом деле она движется намного быстрее, конечно, мы
00:55:04
можем дать преимущество в ношении, поэтому
00:55:06
птица, по-видимому, перемещается на три шага
00:55:08
давайте увеличим это количество до тридцати, что
00:55:13
тоже не очень хорошо сработало,
00:55:15
но в этом случае два спрайта
00:55:17
взаимодействуют, потому что один проверяет,
00:55:18
касается ли он другого,
00:55:20
а вы можете это сделать, позвольте мне
00:55:23
представить события, которые тоже являются другой
00:55:25
программой она не очень длинная, но
00:55:28
здесь снова есть два спрайта, две маленькие марионетки, и если я нажму «играть», ничего не
00:55:31
произойдет, пока я не нажму пробел, когда, если
00:55:34
вы играли в эту игру, когда росли, один говорит «
00:55:36
Марко», а другой говорит «поло», но
00:55:39
один говорит «поло» ответ на
00:55:41
другое высказывание Марко, позвольте мне взглянуть на
00:55:43
спрайт оранжевой марионетки здесь, и
00:55:44
вы увидите это навсегда, сделайте следующее,
00:55:46
если нажата клавиша пробел, поэтому, если нажата клавиша пробела,
00:55:49
скажите «Марко» в течение двух
00:55:51
секунд и в трансляции событие и
00:55:53
изобрести для наших целей сегодня, это похоже на
00:55:54
шепот, который
00:55:56
могут услышать только другие спрайты, а не люди,
00:55:59
между тем, если я смотрю на синюю марионетку,
00:56:01
там мало что происходит, когда вы
00:56:03
получаете это событие, которое шепчет, скажем, поло,
00:56:06
и поэтому у нас есть взаимодействие между ними
00:56:08
два спрайта, очень похожие на то, как Оскар
00:56:10
реагировал на мусор, который перетащили
00:56:12
и бросили на его мусорную корзину,
00:56:14
наконец, у нас есть вот этот, привет-привет,
00:56:17
который также сочетает в себе некоторые из этих идей и
00:56:19
позволяет вам реализовать,
00:56:22
возможно, знакомую идею, например, из
00:56:24
видео игра на вашем телефоне или компьютере,
00:56:26
эта штука просто очень раздражающе лает
00:56:29
бесконечно, пока вы не поймете, как она
00:56:32
работает, как мне это остановить, поэтому, если вы
00:56:36
посмотрите на код в правом верхнем углу, он
00:56:39
упоминает пробел и останавливается,
00:56:43
почему что делает нажатие пробел
00:56:45
на самом деле, кажется, работает логично, это в
00:56:52
этой левой программе, если
00:56:54
нажата клавиша, что я делаю, если да, если звук отключен,
00:56:57
что выглядит как переменная, потому что это
00:56:58
оранжевый блок, если звук отключен, это ноль, установленный
00:57:01
отключенный звук на один, другой установлен отключенный звук на ноль, так
00:57:04
что же делает это означает, что это своего рода
00:57:05
программный эквивалент этого: если
00:57:07
лампочка выключена, включи ее, иначе
00:57:11
выключи, и это просто способ
00:57:14
изменения состояния или изменения ответа
00:57:16
с ложного на истинное или с истинного на ложное, и
00:57:18
тогда я Я использую эту информацию, чтобы
00:57:20
решить справа, если отключен звук 0, поэтому 0
00:57:23
означает выключено или ложно, поэтому, если звук не отключен,
00:57:27
если звук равен 0, означает, что звук не отключен, воспроизведите
00:57:30
звуковую строку C, и именно так
00:57:31
программа останавливается, пока я не отменю ее,
00:57:33
фактически нажимая на это Итак, у нас есть все
00:57:36
эти кусочки головоломки, если вы примените все
00:57:38
эти ингредиенты и все эти
00:57:40
способности, чтобы сплести эти идеи воедино,
00:57:42
и вы, в конечном итоге, сможете сделать некоторые довольно
00:57:44
удивительные вещи, и фактически в духе
00:57:46
объединения наших двух кампусов
00:57:48
здесь и в мире. Нью-Хейвен,
00:57:50
мы думали, что закончим одной финальной
00:57:51
игрой, для которой нам нужен
00:57:53
еще один волонтер, который будет играть за нас здесь,
00:57:56
например, самая сложная игра Б, давайте попросим вас
00:57:58
подойти, потому что в прошлый раз ваша рука была поднята -
00:57:59
как вас зовут, Люк, подойди сюда, так что
00:58:02
вот приходит Люк, чтобы сыграть в самую сложную
00:58:05
игру Айви. Это было написано одним из ваших
00:58:07
предшественников по CS50, бывшим студентом, и
00:58:10
вы увидите инструкции здесь, на
00:58:12
экране, всего через минуту,
00:58:14
мы переходим в полноэкранный режим. Я собираюсь
00:58:17
продолжить и играть за вы и вы будете использовать
00:58:18
клавиши со стрелками в этой игре, начнем.
00:58:20
Люк
00:58:21
[Музыка]
00:58:44
очень приятно, обратите внимание на две переменные на
00:58:47
третьем верхнем уровне и на нулевом уровне смерти, в то время как
00:58:53
на экране, конечно, есть несколько спрайтов,
00:58:55
три йельских, им нравится,
00:59:00
кот подпрыгивает с края продолжай идти
00:59:11
продолжай идти
00:59:12
смерть теперь та, которая теперь до бесконечности
00:59:18
все в порядке, уровень шесть, ясно, что
00:59:42
рядом с Гарвардом есть F, отойди, хорошо
00:59:57
[Аплодисменты]
00:59:58
давай, ты можешь сделать это
01:00:05
предпоследний уровень,
01:00:12
это до семи, хорошо
01:00:17
[Аплодисменты]
01:00:33
еще попытки
01:00:38
[Аплодисменты]
01:00:57
давайте закончим на этой ноте, это
01:01:00
торт CS50 с персоналом, который уже подан,
01:01:02
увидимся на следующей неделе.

Описание:

00:00:00 - Introduction 00:05:08 - Binary 00:10:30 - Binary Lamps 00:11:34 - ASCII 00:14:10 - RGB 00:16:05 - Thinking with Peanut Butter 00:21:46 - Finding Mike Smith 00:24:38 - Computational Complexity 00:27:11 - Pseudocode 00:31:04 - Staff Introductions 00:33:40 - Course Teaser 00:35:45 - Introducing Scratch 00:42:57 - meow 00:48:01 - Oscartime 00:51:36 - counting sheep 00:52:56 - pet the cat 00:53:33 - don't pet the cat 00:54:03 - threads 00:55:21 - events 00:56:14 - hi hi hi 00:57:45 - Ivy's Hardest Game

Готовим варианты загрузки

popular icon
Популярные
hd icon
HD видео
audio icon
Только звук
total icon
Все форматы
* — Если видео проигрывается в новой вкладке, перейдите в неё, а затем кликните по видео правой кнопкой мыши и выберите пункт "Сохранить видео как..."
** — Ссылка предназначенная для онлайн воспроизведения в специализированных плеерах

Вопросы о скачивании видео

mobile menu iconКак можно скачать видео "CS50 2017 - Lecture 0 - Scratch"?mobile menu icon

  • Сайт http://unidownloader.com/ — лучший способ скачать видео или отдельно аудиодорожку, если хочется обойтись без установки программ и расширений. Расширение UDL Helper — удобная кнопка, которая органично встраивается на сайты YouTube, Instagram и OK.ru для быстрого скачивания контента.

  • Программа UDL Client (для Windows) — самое мощное решение, поддерживающее более 900 сайтов, социальных сетей и видеохостингов, а также любое качество видео, которое доступно в источнике.

  • UDL Lite — представляет собой удобный доступ к сайту с мобильного устройства. С его помощью вы можете легко скачивать видео прямо на смартфон.

mobile menu iconКакой формат видео "CS50 2017 - Lecture 0 - Scratch" выбрать?mobile menu icon

  • Наилучшее качество имеют форматы FullHD (1080p), 2K (1440p), 4K (2160p) и 8K (4320p). Чем больше разрешение вашего экрана, тем выше должно быть качество видео. Однако следует учесть и другие факторы: скорость скачивания, количество свободного места, а также производительность устройства при воспроизведении.

mobile menu iconПочему компьютер зависает при загрузке видео "CS50 2017 - Lecture 0 - Scratch"?mobile menu icon

  • Полностью зависать браузер/компьютер не должен! Если это произошло, просьба сообщить об этом, указав ссылку на видео. Иногда видео нельзя скачать напрямую в подходящем формате, поэтому мы добавили возможность конвертации файла в нужный формат. В отдельных случаях этот процесс может активно использовать ресурсы компьютера.

mobile menu iconКак скачать видео "CS50 2017 - Lecture 0 - Scratch" на телефон?mobile menu icon

  • Вы можете скачать видео на свой смартфон с помощью сайта или pwa-приложения UDL Lite. Также есть возможность отправить ссылку на скачивание через QR-код с помощью расширения UDL Helper.

mobile menu iconКак скачать аудиодорожку (музыку) в MP3 "CS50 2017 - Lecture 0 - Scratch"?mobile menu icon

  • Самый удобный способ — воспользоваться программой UDL Client, которая поддерживает конвертацию видео в формат MP3. В некоторых случаях MP3 можно скачать и через расширение UDL Helper.

mobile menu iconКак сохранить кадр из видео "CS50 2017 - Lecture 0 - Scratch"?mobile menu icon

  • Эта функция доступна в расширении UDL Helper. Убедитесь, что в настройках отмечен пункт «Отображать кнопку сохранения скриншота из видео». В правом нижнем углу плеера левее иконки «Настройки» должна появиться иконка камеры, по нажатию на которую текущий кадр из видео будет сохранён на ваш компьютер в формате JPEG.

mobile menu iconСколько это всё стоит?mobile menu icon

  • Нисколько. Наши сервисы абсолютно бесплатны для всех пользователей. Здесь нет PRO подписок, нет ограничений на количество или максимальную длину скачиваемого видео.