[Powered by Google Translate] David J. малая: Усё правільна, гэта CS50, і гэта
пачатку тыдня дзве.
Дзякуй.
Давайце пачнем вось з тэлефоннага званка.
Я збіраюся набраць 617-BUG-CS50.
CS50: Гэта CS50.
Для Shuttle Boy, націсніце 1.
Каб пачаць спачатку, націсніце кнопку 9.
David J. малая: Так ён сказаў на Shuttle Boy, націсніце 1.
Такім чынам, мы збіраемся націсніце 1.
CS50: Якое ваша паходжанне?
Для чацвярых, націсніце 1.
Mather, націсніце 2.
Boylston, націсніце 3.
Ламонт, націсніце кнопку 4.
Сувеніры зала, прэс 5.
Каб пачаць спачатку, націсніце 0.
David J. малая: Мы будзем націсніце 1 для чацвярых.
CS50: Наступны шатл сыходзіць у гэтую самую хвіліну ў PM 1:10 і
Затым у 1:20 вечара, 1:30, 1:40 вечара.
Гэта CS50.
>> David J. малая: Так што гэта голас CS50 ст.
І гэта прыклад выгляду канчатковага праектаў,
Напрыклад, вы можаце адкусіць да
Да канца семестра.
Напрыклад, што shuttleboy.cs50.net існуе -
на самай справе праект, які я ўпершыню напісаў пасля таго, CS51
назад, калі я быў студэнтам.
І натхненне тут было тады, усё, што яны мелі, было
друкаваныя аўтобус расклад, і не было
Паняцце шукае рэчы ў Інтэрнэце.
А так я накшталт голуба ў адзін уік-энд, наліў праз
друкаванай графіку, і перанёс яго ў кампутарнай праграме.
У той час, кампутарная праграма здарылася быць напісана
у C. І вы на самой справе бег, увёўшы Shuttle Хлопчык на
міргаць падкажуць, як мы рабілі да гэтага часу.
Але за гэтыя гады, яна ператварылася ў імгненне
паведамленнямі бот.
Яна ператварылася ў апошні час у гэтым вэб-сайце, у
SMS-прылады, а таксама ў гэты голас-інструмент.
І гэта намякнуць на віды рэчаў, якія вы можаце
зрабіць для сябе да канца семестра.
>> Напрыклад, там, версія СМС Shuttle Boy адбываецца
працаваць як след.
Калі, на ваш мабільны тэлефон, адправіць тэкставае паведамленне на 41411 і
затым адправіць адмысловую sboy сімвал, для Shuttle Boy,
варта А і В, дзе А і B паходжання з'яўляецца
пункт прызначэння -
Напрыклад, Boylston касмічнай Quad -
тое, што вы павінны вярнуцца на працягу некалькіх секунд тэкст
Паведамленне ад Shuttle Boy кажу вам дакладна, калі
Наступныя некалькі шатлы, з гэтага пункту збіраюся, што
кропцы В.
І гэта больш агульны прыклад таго, што вядома як
выкарыстаннем API.
>> Так, напрыклад, гэта тут проста shuttleboy.cs50.net,
фактычны вэб-ўвасабленне гэтага.
Але дадзеныя, якія падкрэсліваюць гэтую і іншыя прыкладанні, якія CS50
распрацаваныя ўсе схільныя ўсім тут ў выглядзе
з API-інтэрфейсы, інтэрфейсы прыкладнага праграмавання.
І гэта толькі мудрагелісты спосаб сказаць, што людзі, як мы на
Інтэрнэт і іншыя правялі некаторы час на стварэнне
Праграмнае забеспячэнне, якое можна выкарыстоўваць для таго, каб атрымаць дадзеныя ад нас і
затым пабудаваць ўласныя прыкладанні па-над
гэтага набору дадзеных.
Так, напрыклад, гэты API Shuttle Boy старонцы тут, якія
аказваецца ў CS50 кіраўніцтва, па сутнасці дакументаў
як вы можаце ісці аб высвятленні CS50 серверы для захоўвання дадзеных.
Напрыклад, калі вы знаёмыя з CSV файламі, коска
значэння, падзеленыя, гэта проста як бы хутка і брудна
Excel-падобныя файлы.
Такім чынам, вы можаце папрасіць Shuttle Boy для ўсіх дадзеных на ўсіх
дамоў і іх GPS каардынаты, і вы атрымаеце
назад, па сутнасці, электроннымі табліцамі так, што
Вы можаце чытаць у праграму уласных, а затым
атрымання вынікаў, як Shuttle Хлопчык сам
, Здараецца, робяць.
Для тых, хто больш знаёмыя, больш сучасныя прадстаўлення дадзеных
ўключаюць JSON, JavaScript Object Notation.
Нешта прыйдзе да вас на
Да канца семестра.
>> Але зноў жа, гэта ўсяго толькі адна з некалькіх уласных API, CS50 ст.
І захапляльная рэч цяпер, у гэтыя дні, Facebook і
Twitter і Google, і амаль кожны з папулярнага вэб-сайта
там ёсць нейкая API, які азначае, што калі вы праглядаеце
Дакументацыя на іх сайце, вы падпішыцеся на
ўліковага запісу, вы можаце пачаць пісаць праграмы на вяршыні
ўсе прылады і дадзеныя, якія прадастаўляе кампанія існуе.
І вось адзін з нашых хлопцаў выкладання пару гадоў таму
напісаў версію Mac пра гэта.
Такім чынам, па спасылцы пад назвай Mac тут, у левым верхнім куце, вы можаце на самой справе
спампаваць фішкі Mac OS, якая працуе на ўласнай Mac, каб зрабіць
такія ж рэчы.
Так што гэта ўсё аб будаўніцтве ў верхняй частцы набору дадзеных, як гэтыя.
Але пра гэта ў канцы семестра.
>> Так давайце пагрузіліся ў рэальным хутка памылка, проста каб атрымаць від
рэчы разаграваецца сёння, і ўспомніць аб некаторых
рэчы, якія мы паглядзелі на мінулым тыдні.
У прыватнасці, дазвольце мне ісці наперад і вырываць, скажам,
гэты прыклад тут.
Buggy1.c, гэта даступна на вэб-сайце Вядома, калі вы хочаце
хацелася, каб загрузіць яго і тыкаць вакол сябе.
Але давайце павялічыць тут, на гэтым даволі кароткую праграму, а проста
Супер-хуткае паўтор некаторых з асноўных будаўнічых блокаў, якія
мы сапраўды збіраемся проста пачаць прымаць як належнае.
>> Такім чынам, сінія рэчы, у радках з 1 па 9, усяго толькі
софтбол пытанні.
Так што гэта проста каментар.
Яны не маюць ніякага функцыянальнага сэнсу.
Але яны каментар у тым сэнсе, што яны адзначаецца, што
Я, чалавек, зрабіў сабе так, што ў лекцыі і пасля
лекцыі, я магу фактычна памятаць, што гэтая праграма
не абыходзіцца без таго, каб прачытаць яго радок за радком і
аднаўлення гісторыі, на мой погляд.
Больш за тое, калі я ўручаю гэтую праграму, каб хто іншы, як
Вас, гэта значна ясней для вас, таму што каментары, як гэта,
тое, што праграма на самай справе робяць, або, па крайняй меры тое, што
Праграмы павінны рабіць.
Ці не, гэта правільна, гэта зусім іншая справа.
Цяпер, З, шматрадковага каментары, успомнім, што на лініі
адзін тут з'яўляецца магічным сімвалам, / *.
Гэта значыць, што вось ідзе пачатак каментара.
І нішто іншае не мае значэння, пакуль вы не дойдзе да канца тэрмінатар,
які * /, наадварот.
Таму той факт, што ў мяне ёсць 80-дзіўныя зоркі тут з
Злева направа на самай справе проста эстэтычная дэталь.
Ён не мае функцыянальнае значэнне.
>> Цяпер, як пра лініі 11?
Што гэта рабіць з пункту гледжання непрафесіяналы?
Што гэта?
Аўдыторыя: Уключае ў сябе стандартны.
David J. малая: Добра, добра.
Такім чынам, яна ўключае ў сябе бібліятэку stdio.h.
Дык што ж гэта значыць?
Ну, унутры гэтага файла, stdio.h, якія цэлы букет
Функцыя дэкларацыі -
то ёсць код, які напісаў нехта іншы.
І выдатны прыклад функцыі, якая аб'яўлена ў
stdio.h гэта -
якая любімы цяпер?
Так Printf, адным з найбольш распаўсюджаных з іх выкарыстаць, вядома,
на ранняй стадыі, з гэтай бібліятэкі ёсць.
Калі я выключаю, што радкі кода, Clang будзе крычаць
у мяне нешта аб выкарыстанні неаб'яўленых знак.
Нешта неаб'яўленай, напэўна, ключавое слова, таму што
Мы не паведаміў кампілятару, што выглядае Printf
падабаецца, калі мы ўключым гэтую лінію.
І яшчэ на Зямлю, на самай справе, тое, што гэтая лінія кажу,
адкрыць гэты файл, stdio.h, дзе ён знаходзіцца на серверы
жорсткі дыск або жорсткі дыск прыбора, і скапіяваць яго
тут жа ў маім файле, без майго
таго, каб зрабіць гэта ўручную.
>> Цяпер, калі мы прыступім тут да асноўнай, у хуткім часе мы пачнём
дражняць адзін ад аднаго, што Int і тое, што пустэча.
Але цяпер, давайце паглядзім на тры лініі
у межах ад 15 да 17.
Такі вось я сцвярджаю, як багі.
Лінія 7 у сваім камэнтары кажа: "Павінна друку 10
зорачкамі, але не ". Чаму гэта не друк, на самай справе,
10 такіх зорак?
Аўдыторыя: [неразборліва].
David J. малая: Цалкам дакладна.
Такім чынам, заўважылі, што мы пачынаем лічыць ад 0.
І гэта на самай справе канвенцыі ў галіне праграмавання і
камп'ютэрныя навукі ў цэлым, пачынаючы разлічваць
ад 0 замест 1.
І гэта сапраўды проста вынікае з таго факту, што для
Напрыклад, калі ў нас было восем чалавек на сцэне, калі
ніхто не ўздымаў свае рукі, яны былі
Усе эфектыўнага нулі.
А так гэта проста выгляд кампутара канвенцыі, з тым,
Такім чынам, каб пачаць адлік з 0.
Калі гэта найменшае лік можна прадставіць у двайковым выглядзе.
>> Дык вось мы пачалі ініцыялізацыі я да 0.
Мы ўсталявалі я роўная 0.
Але потым я зрабіў гэтую памылку тут, кажучы, што я менш або
роўна 10.
Але калі вы думаеце, што з дапамогай, калі ў мяне пачынаюцца з 0, а затым я іду
да 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, на самай справе я збіраюся
раздрукуйце 11 зорак на экран, таму што я вырасла
да і роўна 10.
Так лёгка выправіць, вось тады гэта што?
Аўдыторыя: [неразборліва].
David J. малая: проста зменіце яго менш.
Калі вы сапраўды хочаце, вы можаце зрабіць гэта.
Але ў цэлым, гэта няўхвальна.
І так пачынаем лічыць ад 0 толькі тое вы павінны
Звычайна прывыкнуць.
Цяпер, што ўся гэтая канструкцыя сама па сабе?
Гэтая лінія 15 demarks цыклу.
Так, не з'яўляецца функцыяй.
Гэта проста заяву.
Гэта цыклічнай канструкцыяй, як мы бачылі ў Scratch.
І яна складаецца з трох частак.
Звярніце ўвагу, што гэта першая частка, каб
Злева ад кропкі з коскі.
Там у сярэдняй частцы паміж двума кропкамі з коскі.
А тут яшчэ правая частка справа
2. коскі.
Цяпер, першая з гэтых што робіць?
Аўдыторыя: [неразборліва].
David J. малая: Back туды?
Да?
Аўдыторыя: ініцыялізацыя.
>> David J. малая: ініцыялізацыя.
Дык што ж гэта значыць?
Мы абвясцілі зменную я.
Гэта тыпу INT, таму што я паказаў Int я.
І я ініцыялізацыі я са значэннем 0.
Дык што ж гэта на самай справе казаў?
Гэта фактычна кажа на кампутар Гэй, дай мне дастаткова
памяці, дастатковы аб'ём аператыўнай памяці, каб адпавядаць шэрагу, а затым пакласці
нумар 0 у тым, што кавалак памяці.
І як у бок, наколькі вялікая Int звычайна, па меншай меры ўнутры
з прыбора?
Аўдыторыі: 32 біт.
David J. малая: 32 біт.
Значыць, мне 32 біт, інакш вядомы як 4 байта,
і змясціць значэнне 0 у ім, што даволі лёгка, таму што
Гэта проста азначае, ўсталяваць усе біты ў 0.
>> Дык вось, другая частка тут з'яўляецца стан.
І стан, як вынікае з назвы, з'яўляецца тое, што праверана
зноў і зноў, і зноў, ці будзе гэта праўда ці хлусня.
Так што гэта проста кажу, выканайце наступныя радкі кода -
а менавіта радок 16, таму што гэта адзіны водступам
унізе -
Пакуль я менш за 10.
І пасля кожнай ітэрацыі гэтага цыклу, зрабіце
прырашчэнне, якое ў дадзеным выпадку я + +.
Цяпер, яна не павінна быць я + +.
Гэта можа быць я -.
Але калі б я зрабіў гэта, то, што паводзіны збіраецца
каб быць гэтая праграма?
Аўдыторыя: Гэта будзе бясконцы цыкл.
David J. малая: Гэта будзе свайго роду бясконцы цыкл,
калі нам пашанцуе пасля негатыўнага 2000000000 або каля таго.
Можа быць, усё будзе абгарнуць вакол, проста па сваёй прыродзе канчатковай
лік бітаў, якія мы выдзелілі для унутр.
Але гэта, вядома, збіраюся паўтараць значна больш, чым 10 і
вядома, больш чым у 11 разоў тут.
>> А цяпер, як і ў бок, разумееш, што я + +, і я -
на самай справе проста сінтаксічны цукар.
Гэта проста скарочаная запіс для таго, што крыху больш
відавочна запісаць наступным чынам:
I = I + 1.
Гэта значыць ідэнтычныя я + +.
Гэта проста нейкая выглядае прыгажэй сказаць, што я + +.
Гэта больш лаканічным, больш чытэльным.
І таму большасць людзей робяць гэта замест гэтага.
Але гэта ідэнтычных функцыянальна
тое, што мы толькі што бачылі.
Карацей кажучы, хуткіх рашэнняў тут проста сказаць, я ітэрацыя
ад 0 аж да менш чым 10.
І тады мы сапраўды атрымалі 10 зорак.
>> Так давайце паспрабуем гэта.
Дазвольце мне адкрыць тэрмінал у ніжняй часткі.
Дазвольце мне перайсці ў каталог, што гэта цалі
І я збіраюся сабраць яго ўручную з дапамогай Clang на дадзены момант.
І я збіраюся сабраць гэта як buggy1.c, Enter.
А цяпер buggy1, чаму няма такога файла ці каталога
buggy1 называецца?
Аўдыторыя: [неразборліва].
David J. малая: Так.
Так што гэта на самай справе называецца a.out.
Так Нагадаем калі вы проста запусціце Clang, дзе Clang з'яўляецца
кампілятар, а не паказаць імя, якое вы хочаце
даць вашай праграмы, гэта будзе па змаўчанні a.out.
Так бо калі я Ls -
упс.
І я didn't - чорна-белы пытання некаторыя з
Вы сутыкаліся была выпраўленая.
Але дазвольце мне зрабіць гэта.
Там у нас ёсць a.out на левай баку.
Таму мы павінны працаваць a.out замест buggy1.
>> Такім чынам, дазвольце мне ісці наперад і рабіць гэта.
. / A.out, Enter.
І я, мабыць, не рабіць?
Аўдыторыя: Захаваць.
David J. малая: Ратуйце маю файл.
Так што лёгка вырашаецца, націснуўшы Control S, ці збіраецца
Файл, Захаваць як і ў большасці праграм.
Адпусці мяне сюды, ачысціць экран, запусціце яго зноў.
І ёсць яшчэ памылка.
Так што ж адбываецца -
Аўдыторыя: Вы не кампіляваць.
David J. малая: А, добра.
Я не кампіляцыі.
Як ідыёт, я гляджу на код, каб паглядзець, што здарылася.
Такім чынам, ляск buggy1.c, цяпер a.out.
І уф, захаваныя.
>> Так гэта выглядае трохі невыносны, таму што няма новай лініі
у любым месцы праграмы.
Але зноў жа, гэта толькі эстэтычная дэталь.
І па крайняй меры, калі лічыць тыя, мы павінны
зараз бачым 10 такіх зорак.
Ну, што гэта другая размінка, напрыклад?
Такім чынам, у buggy2, я сцвярджаю, што гэтая версія таксама будзе друкаваць
10 зорак, па адным на радок.
Таму ў гэты раз, у мяне ёсць сімвал новага радка, проста каб пераканацца,
рэчы крыху прыгажэй.
Але замест таго, што я атрымліваю гэта.
Такім чынам, дазвольце мне зрабіць ляск buggy2.c, Enter.
Цяпер ён зноў заклікаў a.out.
Enter.
Я бачу толькі адну новую лінію, толькі самая апошняя новая лінія, якая
перамяшчае маё запрашэнне на наступны радок.
І ўсё ж ясна я пячаткай *, то новая лінія,
*, То новая радок.
Але тое, што памылка тут?
Да?
Аўдыторыя: [неразборліва].
>> David J. малая: Цалкам дакладна.
Такім чынам, у адрозненне ад некаторых моў, як Python, дзе водступы
на самай справе мае функцыянальнае значэнне, у
мову, як C -
Як мы ўбачым, PHP, JavaScript -
водступ на самай справе проста для карысці людзей.
Таму той факт, што я чырвоная радок 16 і 17 выдатна выглядае,
але ён не мае функцыянальнае значэнне тут.
Калі я хачу абедзве лініі для выканання як частка для
пятля, то я павінен укласці іх у фігурныя дужкі, робячы гэта.
Вы можаце толькі скараціць гэты кут і апусціць фігурныя дужкі, калі
у чым справа?
Аўдыторыя: Толькі адна радок.
David J. малая: Толькі адна радок.
Вось толькі выгляд добры выгляд сінтаксісу падрабязна, каб
Вы не марнуеце час на напісанне тры лініі, дзве з якіх з'яўляюцца
фігурныя дужкі, абы напісаць ні аднаго радка кода.
Але калі ў вас дзве або больш ліній, мы
сапраўды трэба гэта зрабіць.
>> Так што цяпер дазвольце мне захаваць гэта.
Дазвольце мне ісці наперад і паўторна запусціць Clang.
Тады дазвольце мне паўторна a.out, і цяпер я атрымліваю іх па адным на радок.
Цяпер, a.out зноў гэта свайго роду нямы імя для праграмы.
Як я магу сказаць Clang на самай справе даць мне імя файла
, Што больш зручна, як buggy2 сябе?
Яшчэ трохі ясней?
Аўдыторыя: [неразборліва].
David J. малая: ОК, так што я магу на самой справе ўзяць вельмі
зручны ярлык і проста напісаць зрабіць buggy2.
Я не ўдакладняюць. C у гэтым выпадку, і націсніце Enter.
І тое, што робіць робіць, ён кампілюе buggy2.c для мяне
Clang просяць гэта зрабіць.
У прыватнасці, ён называе Clang, ён працуе Clang выкарыстанні нашмат больш,
Аргументы каманднага радка або перамыкачы, чым я на самой справе трэба.
У свой час мы вернемся да таго, што ўсе гэтыя розныя
загадкавыя выразы праз злучок азначае.
Але цяпер, вось толькі што выратаваў мяне ад працы
таго, каб памятаць і таго, каб уводзіць ўсе гэтыя
розныя злучок выразаў.
І верх у канчатковым выніку і з'яўляецца
што зараз у мяне ёсць buggy2.
Калі я хачу зрабіць гэта ўручную, хоць, я
можа замест гэтага -
ляск-о buggy2, а затым buggy2.c.
І гэта будзе гэтак жа даць мне файл з імем buggy2.
>> Карацей кажучы, Clang гэта кампілятар.
Зрабіць гэта проста зручны інструмент, які мы будзем выкарыстоўваць больш
і больш, таму што яна толькі пачынае
спрасціць рэчы для нас.
І мы вяртаем 0, нарэшце.
На дадзены момант, толькі таму, што, але мы пачнем дражняць, што частка
Сёння і ў сераду.
Любыя пытанні па любой з гэтага?
Да?
Аўдыторыя: [неразборліва]
Ls ў двукоссях там?
David J. малая: OK.
Калі я набраў Ls ў двукоссі, што было мне рабіць некаторыя магіі
за кулісамі, каб выправіць памылку.
Я забыўся, як мы казалі многія з вас на
дошкі абмеркаванняў рабіць -
Мы зробім гэта цяпер - Суда ням-у абнаўленне appliance50.
Ой, што гэта пішацца справа.
Такім чынам, прыбор, як аперацыйная сістэма.
Гэта працуе гэтая аперацыйная сістэма пад назвай Fedora.
А цяпер з-за маёй павольнае падлучэнне да Інтэрнэту, у мяне
сапраўды аблівалі яго.
Так працуе Суда абнаўленне ням, як мы кажам вам, каб зрабіць у
Праблема набору, па сутнасці, як працуе аўтаматычнае абнаўленне
У Mac OS або Windows.
І прычына для выканання гэтага ў самым пачатку
Праблема набору таму што, калі мы стварылі прыбор, я
пераблыталіся, і я выпадкова зрабіў усё Вашы праграмы выглядаюць
чорнае на чорным экране, які з'яўляецца, чаму вы не бачыце іх
па змаўчанні.
Але апошняя версія прыбора фіксуе гэта.
І я палатаю, што падчас перапынку, калі я ў Інтэрнэт
падлучэнне.
>> Такім чынам, каціроўкі проста хавае сваю памылку, вельмі асцярожна,
па-відаць.
Іншыя пытанні?
Да?
Аўдыторыя: Дзе зрабіць ўзялося?
[Неразборліва]
David J. малая: Добры пытанне.
Дзе зрабіць ўзялося?
Гэта Linux праграма, якая існуе ўжо шмат гадоў, задоўга
Перад CS50.
І ён прыходзіць з аперацыйнай сістэмы, як Fedora.
Ён не прыходзіць з CS50 бібліятэкі.
На самай справе, адзінае, што ад CS50 бібліятэкі
да гэтага часу, што мы бачылі, з'яўляюцца GetString, GetInt, усё
Атрымаць гэтыя функцыі, і слова радка, і некаторыя
ступені, слова BOOL.
Але мы будзем дражніць, што, акрамя, калі мы пагрузіліся ў CS50
сам прыбор.
>> Так што, так, яшчэ адно пытанне.
Аўдыторыя: Калі вы сказалі зрабіць, а затым багі, якім чынам
кампутар ведаю [неразборліва]?
David J. малая: Добры пытанне.
Такім чынам, калі вы проста запусціце зрабіць buggy1 ці зрабіць buggy2, як
робіць ведаеце?
Такім чынам, па змаўчанні, калі вы ўвядзеце зрабіць buggy1, зрабіць выгляд для
Размовы называецца buggy1.c.
І тады яна выконвае адпаведныя каманды Clang,
тым самым перакрываючы файл па змаўчанні, выхадны файл з імем a.out.
На самай справе, калі мы паглядзім на тое, што зрабіць, што -
Давайце выйсці з гэтага.
Калі мы паглядзім на тое, што робіць на самай справе робяць, робяць buggy2,
ён ужо ў курсе.
Такім чынам, дазвольце мне выдаліць RM каманды,
праграмы я напісаў раней.
Увод Y-E-S, каб пацвердзіць, што я хачу, каб выдаліць яго.
Калі я зараз робім, звярніце ўвагу, што ў гэтай вельмі доўгай лініі,
ёсць гэта апошняя рэч тут,-о buggy2.
Усе робяць гэта робіць, дарэчы, што аргумент, так бы мовіць,
Clang, так што я не прыйдзецца ўводзіць яго сабе.
>> Добра, пару хуткіх адміністрацыйных
аб'явах.
Такім чынам, для частак, якія афіцыйна пачаліся мае быць
Нядзеля, вы заўсёды хочаце прынесці, калі
ў вас ёсць, ноўтбук.
Калі ў вас няма ноўтбука, не дацягнуцца да мяне
падзенне мне ліст.
І мы будзем высвятліць працоўнага працэсу.
Што наогул вы знойдзеце ў раздзеле з'яўляецца тое, што яны з'яўляюцца часткай
канцэптуальных, частка практычны.
Мы спецыяльна выкарыстоўваць частка пытанняў, частка з
Праблема тыдні набору, каб прайсці праз некаторыя з
канцэптуальнага матэрыялу лекцыі.
І гэта ўсё, што ў бягучым наборы праблемы.
І мы таксама пагрузіцца ў некаторых практычных дзеяннях, часам
якія павінны будуць быць прадстаўлены, часам
якая не будзе.
Напрыклад, гэта першы тыдзень, яны прызначаны як
размінку практыкаванні.
І вы ўбачыце, што гэтыя праблемы сапраўды так.
Яны прызначаны, каб быць даволі маленькім, але не абавязкова
трывіяльных праграм, каб напісаць, што не абавязкова
захапляльных і самі па сабе, але добрыя магчымасці для
практыкавацца з сінтаксісам, з новымі функцыямі, у камфорце
раздзел, дзе ў вас ёсць некалькі сваіх аднакласнікаў прадставіць у выглядзе
а таксама вашыя TF.
>> І што мы будзем рабіць на працягу доўгага часу, гэта выкарыстоўваць інструмент пад назвай CS50 прасторы,
якой замест простага выкарыстання CS50 Appliance, вы
Замест пераходу на вэб-старонку ў браўзэры, дзе вы зможаце
пісаць код, у акне браўзэра пры падзеле.
І потым, калі вы вылучыце, ваш хлопец навучання можна паказаць,
тое, што гэта вы друкуеце на экране ў Вашым браўзэры
вокны на фронце класа, няхай гэта будзе ананімна ці
публічна, так, каб ён або яна можа прайсці праз з
аднакласнікамі, што ты зрабіў добра, што вы не вельмі добра.
І яшчэ, будзьце ўпэўненыя, усё гэта можа быць прыгожа выдаецца.
Але гэта будзе добрая магчымасць для значна больш
інтэрактыўнасці, чым нешта накшталт лекцыі дазваляе.
>> У той жа час, мы будзем мець гэтыя рэчы называюць супер
раздзелах, якія не з'яўляюцца абавязковымі, але адкрытыя для ўсіх у
клас, так што вы можаце зрабіць гэта ў сукупнасці для больш
Праблема ўсталяваць адзін.
Вось графік.
Гэта таксама размешчана на хатняй старонцы cs50.net.
Звярніце ўвагу, што там будзе хакера канкрэтных
заўтрашні дзень.
І мы будзем здымаць да сённяшняга дня і адну заўтра, і апублікаваць гэтыя
Інтэрнэт на працягу 24 гадзін.
Так што, калі вы не можаце зрабіць любы з гэтых часоў, каб не хвалявацца.
І зноў, расклад на форуме ў cs50.net.
>> З пункту гледжання секционирования сябе, вы павінны былі атрымаць
па электроннай пошце з інструкцыямі па перайдзіце на галоўную старонку курсу, каб знайсці
Вашы раздзеле.
Калі жыццё змянілася, і вы павінны змяніць свой профіль,
не праблема.
Вярніцеся ў той жа URL, cs50.net/section, адзінае,
і вы будзеце запоўніць падобную форму, так што вы можаце
Затым дайце нам вашыя перавагі.
І мы будзем прытрымлівацца да да канца тыдня аб тым, што мы можам
размясціць.
На мінулым тыдні, нагадаем, што мы прапанавалі выкарыстоўваць Абмеркаваць CS50,
абмеркаванне курсу прылады, у лекцыі.
Так што мы былі на 40 пытанняў, якія былі зададзены і
адказаў падчас лекцыі.
Так што, здавалася, працавала добра, таму мы будзем працягваць
спрабуе гэта зрабіць.
Калі падчас лекцыі, вы не проста адчуваць сябе камфортна павышэнне
Вашу руку, не праблема.
Да cs50.net/discuss, размяшчаць там, і адзін з нашых навучанне
стыпендыяты будуць альбо адказаць на яго ў электронным выглядзе або павысіць іх
рукі ад вашага імя ананімна, каб спытаць, у залежнасці
ад характару пытання.
І з пункту гледжання зваротнай сувязі, як правіла, psets будзе
вернутыя на працягу тыдня.
Таму што гэта займае некаторы час для секцый для дасягнення
раўнавазе, першыя PSET, 0 і 1, будзе крыху
адкладзенае, паколькі рэчы супакоіцца.
Але сочыце за абнаўленнямі, што ў бліжэйшыя тыдні.
>> Добра, так што дазвольце мне паставіць на мой сур'ёзны
Голас на імгненне.
Так што гэта на самай справе цікавы клімат, каб быць
якія маюць гэтую дыскусію, што з усімі іншымі рэчамі
адбываецца на тэрыторыі кампуса, якія адносяцца да іх.
Але CS50, безумоўна, былі свае гісторыі дадзенага
тэмы, у той меры, кожны год, гэта, вядома, для многіх
гадоў, Ad-платы прыкладна на 3% у класе.
Гэта самы апошні год, 2011, CS50 Ad-селі 35 студэнтаў.
Гэта не так, я думаю, з-за адсутнасці яснасці.
Зразумейце, што ў праграме курсу, ёсць старонкі
заяву, якое тлумачыць, дзе лініі.
У тым жа заяве паўтараецца на кожным з
Праблема задае на першай старонцы.
>> Таму я кажу пра гэта сёння на самай справе проста зрабіць
Людзі памятаць пра гэта.
І мы паспрабавалі розныя рэчы.
І тое, што я думаў, што мы робім сёння проста скарыстацца момантам, каб
рэальна зірнуць на некаторыя з мінулых спраў, якія прыдумалі.
Замест таго, каб трымаць іх як брудныя маленькія сакрэты, на самай справе
Адзначым, што студэнты зрабілі і як мы выявілі
ён і на самай справе, што ўсёабдымная матывацыі для
нават гэты размова.
Такім чынам, з улікам сказанага, лініі па сутнасці гэта -
Згодна з праграмай, вы вітаецца, рэкамендуецца, каб
пагаварыць з аднакласнікамі.
Вось і ўвесь сэнс наяўнасці гэтых сумесных
Прыёмныя гадзіны ў Annenberg і заахвочванне людзей да
Канчатковы праект для сумеснай працы.
Але лінія, калі прыходзіць час, каб сапраўды напісаць
ваша канчатковае рашэнне.
Гаворачы на ​​англійскай, цалкам нармальна, выступаючы ў псеўда-код,
цалкам нармальна.
Адпраўка вашага аднакласніка PSET, дазваляючы ім выглядаць больш
Экран, як рукі працягваюць друкаваць,
на лініі, а таксама.
Вы паглядзіце на праграму для канкрэтнай лініі.
>> Але толькі, каб намаляваць карціну таго, як гэта, на жаль,
рэальнасць, разумеюць, што ёсць сайты, якія там
маюць вырашэння гэтага класа і шмат іншых класаў.
Справа ў тым, што вы або каля 3% з вас ведаюць, што гэта такое
азначае, што мы ведаем, што гэта існуе.
Справа ў тым, што ёсць сайты, як гэтая, дзе вы
можа плаціць камусьці, каб на самой справе зрабіць ваш мноства праблем - гэта было
рэальны выпадак, які прыдумаў у мінулым годзе.
Гэта вэб-сайт пад odesk.com.
І Тиму было імя чалавека, хто быў на аб'яву
па гэтаму сайту і спытаў кагосьці, каб зрабіць яго PSET 7 у
дадзеным канкрэтным выпадку.
Ну, odesk.com вельмі Google-магчымасці, і мы таксама
вельмі добра на пошук у Google.
Тут таксама ёсць сайты - і гэта адна даволі
зверскі, шчыра кажучы.
[Смех]
David J. малая: Самае смешнае аб гэтым сайце, калі
Вы чыталі пра старонку, яны кажуць аб сваіх карпаратыўных
культура і як абслугоўванне кліентаў з'яўляецца іх нумар адзін
прыярытэт, каб пераканацца, што вашы заданні атрымаеце
Аказалася своечасова.
>> Але з усёй сур'ёзнасцю, зноў жа, той факт, што гэтыя сайты
існуе, разумееце, мы таксама дасведчаныя аб
гэтыя віды сайтаў.
І каб даць вам адчуванне таго, што гэта ў цэлым ўтварае
бярэ, мы наогул не маюць вялікі скандалаў, дзе людзі
супрацоўнічаюць у любы масавы, а хутчэй
менавіта гэтыя начныя хвіліны слабасці, калі ў вас так
шмат чаго трэба зрабіць, гэта 4:00 раніцы, вы вычарпаныя, і вы
думаць пра сябе, ну, дазвольце мне зірнуць на маё
суседа або код майго сябра ці таму падобнае.
І праявы гэтага, на жаль ўключаць Студэнцкая
Прадстаўленні нешта накшталт гэтага і прадстаўленне студэнцкіх B
нешта накшталт гэтага, што, безумоўна, у кампутары
навука класа, дзіўна лёгка для кампутарных навукоўцаў
выявіць з дапамогай праграмнага забеспячэння.
Гэта яшчэ адна агульная парадыгма, дзе вы роду
працаваў побач з кімсьці, можа быць, кажуць у
Англійская, проста выдатна, псевдокод.
Але потым прыходзіць час, каб сапраўды ўявіць, і psets
проста атрымаць абмяняліся па электроннай пошце ці Dropbox ці таму падобнае.
Але ў спробе зрабіць яго менш відавочна, што гэта
што здарылася, то гэта тое, што прадстаўлена.
Гэта таксама не спрацаваў да добра напісаныя кавалкі
праграмнае забеспячэнне, як мы ёсць на самой справе выяўлення
такія рэчы.
І на самай справе, што мы робім, гэта запусціць праграмнае забеспячэнне, якое параўноўвае ўсё
У гэтым годзе ў паданнях супраць усіх мінулым годзе
уяўленняў, супраць усяго, мы знайшлі на
Інтэрнэт, супраць кожнай працы сайта там.
Гэта ўсё вельмі аўтаматызавана.
І так мы робім гэта сапраўды вялікая справядлівасці ў адносінах да 97%, якія
сапраўды працуюць іх азадкаў ў гэтай і ў іншых
Класы і пакласці ва ўсіх гэтых намаганняў, так што праца
у канчатковым рахунку яны ўяўляюць, з'яўляецца іх уласным.
І я магу пайсці на цэлую вечнасць.
>> Гэта ўсяго толькі некалькі выпадкаў у мінулым годзе.
Некалькі студэнтаў прадставілі гэтыя файлы аднолькава для PSET 2,
PSET 3, PSET 4, PSET 5, PSET 6, PSET 9.
У гэтым выпадку, гэта быў тэст 0 і ў мінулым годзе, калі два
Студэнты прадставілі аднолькава гэтую прапанову сярод многіх
іншыя ", запыт тыпу -" кропка, кропка, кропка.
Такім чынам, нават у класе з 600 ці мы выявіць гэтую
на прадстаўленых віктарыны.
Карацей кажучы, гэта - шчыра кажучы, я вельмі не хачу мець такую
гутарка - але гэта сапраўды мэтанакіраваныя намаганні
У гэтым годзе, каб паспрабаваць знізіць гэтую лічбу.
Таму што нават калі мы гаворым такія рэчы кожны
год, я думаю, што рэальнасць у тым, спыніўся на ім на працягу некалькіх
Яшчэ секунд чым звычайна, і на самай справе проста паказваючы
што тое, што можа здацца, ці што, не такая вялікая праблема, па меншай меры,
ўспамінаю гэты момант, як у справядлівасці ў адносінах да
сябе і сваіх аднакласнікаў тут.
Так што калі вы калі-небудзь ў вас узніклі пытанні аб тым, дзе лінія
гэта, калі ласка, проста выйсці на мяне асабіста.
Але адказ заўсёды, цалкам падкрэслілі ў
апошнюю хвіліну, грашовыя сродкі ў канцы дня.
Або, калі гэта справа не маючы ніякага канца дзён,
шчыра кажучы, напішыце мне асабіста.
Мы што-небудзь прыдумаем.
Калі ласка, не стаўце свой час тут, у Гарвардзе ў небяспецы.
>> Зараз, я думаў, што мы павінны падняць настрой, таму я
ўключыць гэта як наступны слайд.
[Смех]
David J. малая: Гэты сайт быў вялікім.
Я на самай справе стала крыху адцягнуўся.
Там у гэта.
А потым гэты быў дзіўным.
Добра, думаю, што Кацяня позна ўвечары, калі рабіць
гэтыя рашэнні.
Добра, вярнуцца да больш прыемным і менш сур'ёзныя рэчы, як
умовах.
>> Добра, такім чынам, мы коратка казалі пра гэта.
Гэта тое, што, напэўна, добра знаёмыя з
Свет Scratch.
І ў свеце Scratch, у нас ёсць гэтая патрэба часам
пайсці зрабіць скрыжавання.
Альбо зрабіць тое ці гэта, ці гэта іншая рэч тут.
І калі мы хочам гэта зрабіць, мы можам выкарыстоўваць у C зараз, гэта, калі
яшчэ пабудаваць.
А то вось у нас ёсць лагічныя выразы.
Напрыклад, лагічныя выразы тут, мы можам ці
іх разам, у тым сэнсе, што ў нас ёсць гэта ўмова або
гэта ўмова.
Мы можам і іх разам, у тым сэнсе, што мы хочам
праверыць гэта стан і гэта ўмова.
І тут у нас ёсць перамыкач заяву цяпер, што гэта не так
сінтаксічна падобныя на тыя віды умоў, але
дазваляе нам рабіць эквівалент, калі, інакш, калі, інакш, калі яшчэ
калі і да таго падобнае проста пералічваючы іх індывідуальнай
ад выпадку да выпадку.
Такім чынам, мы ўбачылі тых, хто ў мінулы раз.
І тады мы пачалі дакранаючыся рэчаў, як завесы.
Мы бачылі адну з гэтых імгненне назад.
Але ёсць тыя, іншыя цыклічныя канструкцыі.
>> Напрыклад, гэта тут.
Так што пакуль (ўмова), зрабіць гэтую рэч зноў і зноў.
Такім чынам, прынцыпова, што, здаецца, розных паміж гэтым
цыкл, і гэта ў той час як пятля тут?
Гэты цыкл, і гэта ў той час як пятля.
Да?
Што гэта?
Аўдыторыя: [неразборліва].
David J. малая: Добра.
Такім чынам, у той час як у цыкле ўмова, там выразна
больш сінтаксісу.
Там гэтая ініцыялізацыі, там гэта абнаўленне.
У той час як цыкл, там проста гэта ўмова.
Таму здаецца, што гэта крыху ўрэзаны ў параўнанні з для
цыкл, які азначае, што калі мы хочам мець зменныя, і мы хочам
мець прырашчэнне, мы на самай справе трэба
гэтага зрабіць самі.
>> Такім чынам, дазвольце мне ісці наперад і адкрываць Gedit.
Дазвольце мне перайсці на прыбор.
І давайце проста зрабіць хуткі маленькі прыклад, што
адрознівае адно з іх ад іншага.
А ў глыбіні майго свядомасці тут, я павінен сказаць адну рэч.
Я адмыслова згадаў імя Ціма.
Цім быў на самай справе хтосьці, што студэнт спрабаваў знайсці, каб зрабіць
хатняе заданне для іх.
У нас не было Тиму ў дадзеным раздзеле.
Так разумею, каб мне не раскрытае студэнтам, гэта быў не студэнт.
Гэта быў выпадковым чалавекам у інтэрнэце рабіць рэчы
па даверанасці ў мінулым годзе.
Такім чынам, мы бачым, што, таксама.
Таму ў дадзеным выпадку тут, дазвольце мне ісці наперад і
адкрывае новы файл.
File, New.
Гэта дае мне ўкладцы тут.
Дазвольце мне ісці наперад і захаваць яго як loop.c.
Дазвольце мне пайсці і націсніце кнопку Захаваць.
А потым сюды, давайце ісці наперад і пачаць пісаць
# Уключыць .
Дазвольце мне змяніць маштаб малюнка
Цяпер мы будзем рабіць Int асноўных (несапраўднымі).
Цяпер дазвольце мне ісці наперад і рабіць для (INT = 0; I <
ой, 10; я + +).
А зараз я збіраюся ісці наперад і не друкаваць зоркі, што я
рабілі раней.
І тады ў канцы гэтай праграме, мы проста збіраемся
Друк на новую радок, проста так, што мае радкі
не выглядае брудным.
вяртаць 0.
Здавалася сінтаксічна правільныя?
Да гэтага часу.
Такім чынам, давайце паглядзім.
>> Такім чынам, дазвольце мне маштаб, перайдзіце ў маім акне тэрмінала.
І дазвольце мне ісці наперад і запусціць цыкл, таму што я назваў гэтую
рэч loop.c.
Так што зрабіце пятлю.
Здаецца, для кампіляцыі OK.
Дазвольце мне запусціць цыкл, і цяпер Enter.
І гэта, здаецца, надрукаваны 10 зорак.
Так што давайце проста пераўтварыць гэта ў той час як цыкл і паглядзець, што
віды пытанняў, якія мы спатыкнуцца.
Такім чынам, замест гэтага, адпусьці мяне сюды і сказаў, пакуль я ёсць
менш чым 10 -
Дазвольце мне пазбавіцца ад цыклу.
Такім чынам, у нас ёсць некалькі праблем ужо.
Такім чынам, умовы тыя ж, але я відавочна не хапае
ініцыялізацыі.
Мне не хапае прырашчэння.
Так што ж кампілятар верагодна, скажы мне, калі я спрабую
скампіляваць гэтую праграму?
Да?
Аўдыторыя: [неразборліва].
>> David J. малая: Добра.
Такім чынам, ён збіраецца сказаць нешта накшталт неаб'яўленай - у гэтым
выпадку, зменная я.
І сапраўды, выкарыстанне неаб'яўленай ідэнтыфікатар я.
І гэта ў адрозненне ад моў, такіх як PHP і
Python і Ruby, з якой некаторыя з вас могуць быць знаёмыя,
дзе вы можаце проста нейкая пачатку выкарыстання зменных
воляй-няволяй, а не прыйдзецца турбавацца аб аб'яўленні іх
відавочным заўсёды.
У C і ў мовах, як Java і C + +, вы павінны быць
Супер відавочным.
І калі вы хочаце зменнай я, вы павінны сказаць мне,
якія зменныя ён.
Такім чынам, мы будзем мець, каб выправіць гэта наступным чынам.
Я збіраюся пайсці ўверх тут і ўвядзіце Int я, такім чынам,
Я абвясціў зменную я.
Зараз, я прапусціў адзін крок.
Я, відавочна, не ініцыялізуецца, але давайце паглядзім, што ў
меры робіць Clang спыніць скардзіцца.
Такім чынам, дазвольце мне перарабіць гэтую праграму.
>> Добра, зараз гэта проста скардзіцца
па іншай прычыне.
"Пераменная 'я' не ініцыялізаваны пры выкарыстанні тут". Добра,
гэта даволі відавочна.
Initialized проста азначае, паклаўшы яе роўнай каштоўнасці.
І мы не зрабілі гэтага, таму дазвольце мне паспрабаваць роўная 0.
Зараз давайце паспрабуем гэта зноў і зноў запусціць Clang.
Складальнік гэтага часу.
І я збіраюся запусціць яго.
Але вялікі стары бясконцы цыкл, таму што я зрабіў
ініцыялізацыі, я зрабіў стан, але я ніколі не рабіў
любое прырашчэнне.
Так як жа я магу зрабіць прырашчэнне?
Ну, у той час як цыкл, ён адчувае, як я буду мець
зрабіць гэта ўнутры цыклу, таму што так жа, як першы
тыдзень прыкладаў робяць цыклічных канструкцый, як з
шкарпэтках і з уласным рахунку, мы павінны былі зрабіць
нешта ў самым канцы, хацелася вярнуцца да наступнай радку.
Што рабіць, калі я іду наперад і раблю гэта я + + тут?
Давайце нават не кампіляцыі гэтага.
Злаві мяне ўжо.
Што тут не так?
Аўдыторыя: [неразборліва].
>> David J. малая: Так што гэта дакладна не Int.
Гэта я.
І фігурныя дужкі, як і раней,
водступ не дастаткова.
Так што цяпер я гэтую канструкцыю.
Так што, хоць я менш за 10, раздрукаваць зоркі,
Затым павялічваем я.
І тое, як час цыклу работ з'яўляецца тое, што, як толькі вы націснеце
канцы цыклу, які ў дадзеным выпадку выглядае як лінія 10,
ён збіраецца вярнуцца ў радку 6, у які момант
Ўмова будзе яшчэ раз праверана.
І калі я ўсё яшчэ менш за 10, мы зробім лініі 8 і
то 9, то мы ударым 10, і вярніцеся да 6, зноў і
зноў і зноў, і зноў, пакуль я менш за 10.
Так што давайце паўторна запусціць зрабіць тут.
>> Добра, мы сабралі усё ў парадку.
Дазвольце мне паўтор цыклу.
І цяпер ён на самай справе, здаецца, працуе.
Такім чынам, плюсы і мінусы тут?
Ну, да гэтага часу там на самай справе не ўсё ООП -
так міла.
Добра, што было - Ах, гэта быў няшчасны выпадак.
Добра, давайце вернемся да цыкл.
Такім чынам, для завесы добрыя, таму што яны вельмі выразна.
І хоць яны трохі нязграбным, каб напісаць, што гэта
вельмі магутны, і гэта дазваляе зрабіць
некалькі рэчаў адразу.
У той час як завесы, здаецца, не маюць велізарную суму кошту за ўсё
Пакуль, таму што яна адчувае, што мы проста павінны рабіць больш працы.
Мы павінны паставіць ініцыялізацыі тут,
абнаўляць сюды, і мы павінны памятаць, каб рабіць усё гэта.
Такім чынам, мы ўбачым ў часе, у той час як на самой справе завесы надаюць
сябе проста розныя кантэксты, розных дадзеных
структур, як спісы і Хэш-табліцы, тое, што мы дабяромся да
сярэдзіне семестра.
Але цяпер, ведаю, што ёсць гэты трэці тып, вядомы як DO-
час цыклу.
І мы бачылі гэта ненадоўга.
І гэта можа быць вельмі карысным з PSET 1.
Кожны раз, калі вы жадаеце нешта зрабіць, а затым праверыць, калі
Карыстальнік супрацоўнічалі, і калі яны гэтага не зрабілі, зрабіць гэта зноў, рабіць-
час цыклу паддаецца такой логіцы.
Таму што, як заказ зверху ўніз тут мяркуе,
зрабіць літаральна азначае гэта зрабіць.
І рабіць гэта зноў і зноў, што гэта можа быць?
Можа быць, гэта азначае выклік GetInt або GetString, а затым
праверыўшы значэнне GetInt або GetString, а затым крычаць
на карыстальнікаў, калі яны не супрацоўнічалі, папрасіўшы іх
зноў і зноў, і зноў.
Калі вы хочаце зрабіць нешта адзін раз,
Затым праверыць некаторыя ўмовы.
>> Так давайце паспрабуем гэта.
Дазвольце мне на самай справе змяніць гэтую сітуацыю да DO-цыклу.
І я збіраюся пайсці далей і зрабіць наступнае.
Такім чынам, выканайце наступныя дзеянні.
Давайце зробім Int я = GetInt (), але давайце спачатку паведаміць карыстачу
што рабіць.
Так мала чым адрозніваецца гэты раз.
"Дайце мне Int".
Так што я буду выкарыстоўваць Printf для гэтага.
А цяпер я пайду сюды, і я збіраюся гэта зрабіць
у той час як я ёсць, скажам, больш -
Давайце паглядзім, у мяне ёсць, скажам так, менш чым 0, ці я гэта
больш за 10.
Іншымі словамі, я хачу лік ад 1 да 9, усяго
адвольна.
Так што я з дапамогай камбінаванага лагічны выраз для
пераканацца, што я менш 0 або больш за 10, у якой
выпадку я буду рабіць гэтага цыклу тут зноў.
Такім чынам, яшчэ раз, зрабіць гэта -
а я менш 0 або я больш за 10.
>> А цяпер давайце ісці наперад і зрабіць гэта адзін раз мы зрабілі гэта.
Давайце проста зрабіць хуткую праверку наяўнасці свядомасці.
Е ("Дзякуй, я гэта% D", I).
Так што гэта простая праграма запытвае ў карыстальніка Int,
робіць упэўнены, што гэта ў пэўным дыяпазоне ад 1 да 9 уключна,
, А затым дзякуе карыстальнікаў, нагадваючы ім, што яны проста
набралі, гэтак жа, як невялікі праверкі наяўнасці свядомасці.
Але давайце паглядзім, калі гэта працуе, як меркавалася.
Адпусці мяне галавой ўніз тут і паўторна запусціць зрабіць пятлю.
Хм.
"Выкарыстанне неаб'яўленай ідэнтыфікатар" я "". Гэта дзіўна.
Я думаў, мы вырашылі, што.
Тое ж сімптом, але іншы код.
Да?
Аўдыторыя: [неразборліва] у два, мы павінны
[Неразборліва].
>> David J. малая: Цалкам дакладна.
Так што гэта на самай справе прыводзіць нас да тэмы вядомыя як сфера.
Аказваецца, C, зноў жа, гэта сапраўды бярэ вас у літаральным сэнсе.
І калі вы робіце нешта накшталт гэтага, дзе вы аб'яўляеце Int
, А затым прысвоіць яму нейкае значэнне, але вы, што ўнутры
пара фігурных дужак, што C робіць гэта прадугледжвае, што вы
Толькі хачу, каб гэтыя 32 біта вядомага як я існаваць у
кантэксце гэтых фігурных дужак, у рамках лініі
З 6 па 9. Так што я аб'яўлены, і яму прысвойваецца
Значэнне ў радку 8, але як толькі вы атрымліваеце за межамі
радок 9 ніжэй фігурнай дужкай, я ўжо не ў
сферы, так бы мовіць.
S-C-O-P-E. Гэта ўжо не ў правільным кантэксце.
Так што цяпер няма я, так што гэта як бы ў нас не было нават
заявіў на ўсіх.
>> Так што выпраўленне то нешта накшталт гэтага, калі
Прычына ў тым, што я аб'яўлены ў фігурныя дужкі, якія
мабыць дрэнна?
Тут?
Аўдыторыя: [неразборліва].
David J. малая: Так.
Такім чынам, мы можам ініцыялізаваць яе межамі.
Такім чынам, дазвольце мне ісці наперад і выдаліць аб'ява частак якой
Я пазначыць тып, і дазвольце мне зрабіць гэта тут.
Такім чынам, у радку 5, цяпер ён кажа: "Дайце мне Int." Назавіце гэта я.
Звярніце ўвагу, у радку 9, я не хачу гэтага рабіць, таму што я
ўжо ёсць 32 біт.
Я не хачу папрасіць кампутар
рознымі 32 біт.
Я хачу выкарыстоўваць тыя ж 32 біт.
І цяпер, таму што я аб'яўлены ў радку 5, яна па-ранейшаму законна
выкарыстоўваць яго ў радку 11 і радку 12.
>> Такім чынам, дазвольце мне паспрабаваць перакампіляваць і паглядзім,
калі Clang спыняе крычаць.
зрабіць пятлю.
Так што зараз гэта "невідавочнае аб'яву функцыі
"GetInt" недапушчальны ў C99. "Што гэта такое?
Да?
Аўдыторыя: [неразборліва].
David J. малая: Так.
Так што цяпер я на самой справе выкарыстанне GetInt, гэта не тое,
што проста прыходзіць з C. Гэта адбываецца ад CS50.
Так што мы павінны гэта тут.
І дазвольце мне вярнуцца ў радок ўніз
Тут і паўторна запусціць зрабіць.
Добра, у рэшце рэшт.
Цяпер мы вырашылі, што і іншыя памылкі.
Дазвольце мне цяпер запусціць цыкл і паглядзець, што адбываецца.
"Дайце мне Int." Я дам яму 11.
Я дам яму -1.
Я дам яму Foo.
Я дам яму 5.
І цяпер гэта сапраўды працуе.
Але радку змяніўся з прычыны тут.
Чаму ён сказаў паўтарыць адзін з гэтых раз, але дайце мне
Int іншыя тры разы?
Чаму гэта паводзіны адрозніваецца?
Аўдыторыя: Кінуў ў яго радок.
David J. малая: Прабачце?
Залы: Вы далі яму радок.
David J. малая: Так.
Такім чынам, мы далі яму радок у гэтай трэцяй спробы,
калі я набраў Foo.
Foo з'яўляецца радком.
Відавочна, што гэта не Int.
І тое, як CS50 рэалізаваны GetInt тым, што мы
не правяраць, калі нешта не менш 0 або больш за 10
для вас, таму што, як мы ведаем загадзя, які выгляд
Int вы хочаце?
Але мы можам мінімальна праверыць цябе, не карыстач па крайняй меры,
Калі ласка, увядзіце лік?
А калі яны гэтага не зрабілі, мы крычаць на карыстальнікаў, набраўшы "паўтарыць" на
экран.
>> Так што цяпер у нас ёсць праграма, якая цыклаў. Добра.
Цяпер, які з іх з'яўляецца свайго роду лепш пабудаваць?
Дык вось дзе ўсё становіцца трохі брудным,
Тое, што вы павінны памятаць, каб абвясціць зменную тут
калі вы хочаце выкарыстоўваць яго ўнутры некаторых
фігурныя дужкі і за яе межамі.
Але нават калі гэта выглядае крыху загадкавы на першы
погляд, проста яшчэ раз, памятаеце, простая логіка.
Для таго, каб выкарыстоўваць усе, што ў C, ці з'яўляецца гэта функцыя або
гэта зменная, вы павінны ўключыць яго, калі гэта функцыя
У некаторых бібліятэк, або вам трэба аб'явіць.
Але цяпер вы павінны быць вельмі памятаючы пра тое, што
Вы абвясціўшы яго ў патрэбным аб'ёме.
Вы не паставіўшы яго занадта моцна ўнутры дужак.
>> Таму дазвольце мне на самай справе адкат.
Калі мы вернемся да нашага напрыклад, ад раней, і я іду
Вярнуцца да для Int, Int = 0; I <10; + + я, і я
зрабіць Printf зорак, як гэта, і затым зачыніце хлопец, і цяпер
Printf я цяпер -
у адпаведнасці з той жа логікай, што адбудзецца, калі я спрабую
скампіляваць гэтую праграму?
Аўдыторыя: Няправільны ідэнтыфікатар.
David J. малая: Так што гэта яшчэ адзін няправільны ідэнтыфікатар,
Неабвешчаная ідэнтыфікатар.
Цяпер, прычына крыху іншая.
Там, відавочна не фігурныя дужкі тут, але тое ж самае
Ідэя тая ж гісторыя сфера ставіцца.
Калі вы абвясцілі зменную, як я ўнутры
цыкл, нават калі вы не напісаны фігурныя
дужкі, думаць пра іх думках усё яшчэ знаходзіцца там, у якіх
выпадку, калі я сапраўды толькі ўнутры цыклу.
Гэта не сапраўдныя, як толькі вы атрымаеце на наступным радку, якая ў
гэтым выпадку ў цяперашні час 10.
Такім чынам, усяго за некалькі пытанняў сферы і таму падобнае.
Добра, ёсць пытанні?
>> Добра, гэта накшталт трывіяльная невялікую праграму,
друк толькі трохі зорак.
Але давайце паглядзім, калі вы памятаеце гэтую песню тут.
Гэта неверагодна раздражняе песню дзеці будуць спяваць на
Школьны аўтобус і да таго падобнае.
Але тое, што добра пра яго, што ён мае гэтую цыклічнасць,
якому гэта "99 бутэлек піва на сцяне,
99 бутэлек піва.
Вазьміце адну ўніз, перадаць яго вакол, 98 бутэлек піва на
сцены ". І тады песня паўтараецца 97, то 96, то
95, затым 94, усё, аж да 0, калі вы сапраўды атрымалі, што
далёка на аўтобусе.
Так што гэта добрая праграма для сартавання з прылады, таму што мая
Бог, калі можна проста рэалізаваць гэта з дапамогай некалькіх
радкоў кода, вы маглі б выплюнуць ўсю лірыку да гэтай
Песня даволі хутка.
Але на гэтым шляху, мы можам пачаць зараз дражняць адзін ад аднаго некаторымі
з гэтых асноўных канструкцый цыклаў, а цяпер і
Увядзем функцыі, што мы пішам самі, вяртаць значэння
што мы абыйсці.
Але, па-першае, чаму б нам не пайсці далей і прыняць нашы пяць хвілін
разбіць тут?
А калі мы вернемся, мы будзем спяваць гэтую песню.
>> Добра, такім чынам, мы вярнуліся.
І калі я кажу, што мы цяпер будзе спяваць гэтую песню, я маю на ўвазе
праграмна, а не ў вуснай форме.
Такім чынам, тут мы маем beer1.c, які з'яўляецца адным ажыццяўленне гэтага
канкрэтнай песні.
І каб было ясна, для тых, хто незнаёмы з тым, што
гэтая рэч выглядае, дазвольце мне ісці наперад
і зрабіць beer1, Enter.
Цяпер дазвольце мне выканаць beer1, і што мы ўбачым - колькі бутэлек
піва будзе?
Я буду ўводзіць у 99, як спяваецца ў песні.
Enter.
І зараз, калі мы прагорткі -
упс - калі мы пракручваем праз усё гэта, мы ўбачым, што
гэта сапраўды спяваць ўсю песню.
Пачакайце хвіліну.
Мой пракруткі трохі пераблыталіся.
Давайце выкарыстоўваем вялікія вокны.
Так beer1, 99, там мы ідзем.
Так што тут у нас ёсць цэлая песня, праспяваць значна хутчэй,
кампутар, чым гэта магло б быць намі.
Так заўважыць, аднак, цыклічнасць тут.
Гэта кажа 99, а затым 99, затым "ўзяць адну з іх, перадаць яго
вакол ", то 98.
І цяпер яна паўтараецца зноў і зноў.
>> Так што на самой справе гэта выдатная магчымасць для нейкай
Пабудуем цыкл.
Звярніце ўвагу, што я крыху рэзка кута тут.
Звярніце ўвагу, што я кажу "98 бутэлек піва на сцяне,
97 бутэлек піва на сцяне ", і гэта было проста так
што, калі мы дабрацца да адной бутэлькі піва, у мяне няма
турбавацца аб граматыцы англійскай мовы.
Але мы таксама можам выправіць гэта з трохі, калі
Ўмова, магчыма.
Калі гэта лік асаблівых, ісці наперад і сказаць: "Бутэлька",
у адваротным выпадку, калі гэта множны лік, скажам, "бутэлькі".
Але цяпер я цалкам рэзкі гэтым кутку.
Такім чынам, давайце паглядзім, што мы маем тут.
Такім чынам, у нас ёсць некаторыя каментары ў верхняй частцы.
Я ў тым ліку гэтыя дзве бібліятэкі, а
Мы часта былі.
А цяпер дазвольце мне пракруціць ўніз да першага
фактычныя радкі кода.
Радок 17 стартуе асноўны.
Line 21 і 20 мае, колькі бутэлек піва будзе?
І тады я называю GetInt.
І зараз у мяне ёсць трохі разважнасці праверкі.
>> Такім чынам, гэта пагадненне, па якім мы будзем пачынаць з прыняцця
больш старанна праверыць уведзеныя карыстачом дадзеныя.
Часам вы проста не хочаце, каб заахвоціць іх зноў
і зноў і зноў.
Калі карыстальнік шрубы і не супрацоўнічае, добра.
Выйсці і проста не мець з імі справа.
І вось што я тут раблю.
Калі п менш за 1, то я проста буду крычаць на карыстальніка,
"Выбачайце, што не мае сэнсу". А потым я збіраюся
адвольна вяртае 1.
Такім чынам, зноў жа, гэта ўсяго толькі ўмоўнасць, каб прывыкнуць.
На дадзены момант, прыняць яго на веру.
Але да гэтага часу, мы заўсёды вярталіся 0, так як
Мы ўжо казалі вяртаецца 0 азначае што?
Аўдыторыя: Поспех.
David J. малая: поспех, вось і ўсё.
Так што цяпер мы, нарэшце, пачынаем думаць аб
без поспехаў -
Іншымі словамі, кут выпадкі, памылкі умовах -
Цяпер у мяне ёсць бясконцы запас, або па крайняй меры 4000000000
магчымых рэчаў, якія могуць пайсці не так у маёй праграмы.
І я магу пачаць прысваенне ім індывідуальных нумароў.
Цяпер, як правіла, дастаткова проста вярнуцца
нешта іншае, чым 0.
Такім чынам, мы збіраемся, каб проста вярнуць 1 на дадзены момант.
Але прычына для вяртання 1, што, як толькі вы вернецеся
1, адгадайце, што адбываецца з астатняй часткай праграмы?
Ён спыняецца.
Вось і ўсё.
Такім чынам, той факт, што я вяртаюся 1 з'яўляецца эфектыўным
кароткае замыканне выканання гэтай праграмы такім чынам, каб
нічога ніжэй лініі 27 будзе працягваць выкананне.
Як толькі асноўная вяртаецца, што гэта такое.
>> Добра, калі карыстальнік робіць супрацоўнічаць і мы дасягнем лініі 30
таму што яны ўвялі ў законную нумар, вось мой
ажыццяўленне гэтай песні.
Так я ўпершыню раздрукаваць сімвал новага радка, толькі для
эстэтыку.
Цяпер у мяне ёсць цыкл.
І звярніце ўвагу, што я раблю рэчы трохі
у іншым накірунку.
Я не павінен рабіць менш, я не павінен рабіць + +.
Я магу сказаць замест ініцыялізацыі зменнай я, ўсталюйце яго роўным
п, колькасць карыстальнікаў набралі, выканайце наступныя дзеянні, каб
Пакуль я больш 0, то я -
як толькі вы скончылі адну ітэрацыю гэтага цыклу.
Такім чынам, мы можам разлічваць ўніз з дапамогай цыклу, а таксама.
Цяпер, гэта ў значнай ступені тыдні адзін матэрыял зараз, з Printf.
Такім друку "% D бутэлек піва на сцяне". Друк "% D
бутэлек піва. "" Вазьміце адну ўніз, перадаваць яго ". для друку
"% D бутэлек піва на сцяне". Так што гэта яшчэ% D, але
заўважыць, што аргумент Printf мяняецца.
Пасля коскі, у мяне ёсць я, таму што я хачу сказаць 99.
Пасля гэтага коскі, у мяне ёсць я, таму што я хачу сказаць 99.
Пасля гэтага коскі, у мяне ёсць я - 1, таму што я хачу сказаць, 98 у
гэта першая ітэрацыя, і гэтак далей.
І цяпер тут, я проста дурныя маленькія заўвагі.
І тады лінія 42, я вяртаць 0 у адпаведнасці з пагадненнем, паказваючы, што
усё ў парадку.
>> Так што, калі я goofed?
Што можа распаўсюджаная памылка тут можа быць?
Ну, а калі я выпадкова сказаў добра, я хачу, каб падлічыць
да 0, я хачу, 0 бутэлек піва на сцяне?
Таму я кажу, я больш або роўная 0.
Што гэта будзе прыкметай таго, што я цяпер бачу, калі я перакампіляваць
beer1 і запусціць яго?
Аўдыторыя: Адмоўна.
David J. малая: Так, гэта пойдзем адмоўным.
Гэта не зусім па адной памылцы, неверагодна
Распаўсюджанай памылкай зрабіць.
Давайце на самай справе вярнуцца ў акно тэрмінала і зрабіць гэта
Тут, такім чынам, мы можам убачыць у большым часу.
Калі ласка, увядзіце, 99 бутэлек піва.
Блізка, але мы пайшлі ледзь-ледзь занадта далёка.
Мы спявалі песні занадта далёка, так, што мы цяпер патрапілі ў
адмоўны лік.
Так што не зусім працуе.
>> Добра, так што мы можам лёгка выправіць, што, вяртаючыся да
як гэта было раней.
Але тое, што некаторыя магчымасці цяпер
паляпшэнне?
Добра, дазвольце мне адкрыць beer2.c і пракруціць ўніз, тут і прыняць
паглядзіце на гэтую версію.
Што першае, што кідаецца ў вочы вам, як розныя
У гэтай версіі тут?
Аўдыторыя: [неразборліва].
David J. малая: Так, так не я, таму што прыйшло ў галаву,
Мне ведаеце што, я пытаюся ў карыстальніка п, і тады я
мяркуючы ў роўнай п, а затым я мяняю я, але я ніколі не
дакранаючыся п раз.
Дык якога чорта была кропка Вы выдзяленні яшчэ 32
бітаў называецца проста мне так, што я магу мець розныя зменныя?
Такім чынам, у дадзеным выпадку, я, вядома, прызнаць, што непатрэбнае
Асаблівасцю канструкцыі.
І я зараз збіраюся сказаць у той час як п больш, чым 0, перайдзіце
наперад і раздрукаваць тую ж песню, праходзячы п да Printf як
Другі аргумент, і п - 1 у якасці другога аргументу тут.
І тады на кожнай ітэрацыі гэтага цыклу, ісці наперад і толькі
памяншэння п сабе.
Цяпер, функцыянальна, гэтая праграма
будзе аднолькавым.
Калі я друкую ў 99, п пачынаецца на 99.
Я зніжэнне, змяншэнне, зніжэнне, памяншэнне.
Я збіраюся прайсці ўвесь шлях да "Адна бутэлька піва
сцены, адна бутэлька піва.
Вазьміце адну ўніз, перадаваць яго.
0 бутэлек піва на сцяне ". Канца, таму што я і зрабіў
атрымаем ўмова правільнай.
Гэта больш 0.
Я не рабіце гэтую памылку.
>> Так што ж лепш, версія адной або другі варыянт?
Я чуў кучу нараканьні на дваіх.
Чаму два?
Што гэта?
Аўдыторыя: [неразборліва].
David J. малая: О, усё ў парадку.
Такім чынам, ён не будзе апускацца ніжэй 0, але памятайце, у першай версіі,
Арыгінальны правільная версія не апускалася ніжэй 0 небудзь.
Таму памятайце, што гэта правільная версія.
Так давайце хоць бы параўнаць два правільных версій.
Што аргумент на карысць версіі
два з якіх, ммм, лепш?
Да?
Аўдыторыя: Ён выкарыстоўвае менш прасторы.
David J. малая: Так, гэта займае менш месцы, дакладна?
У той час як версія, якая выкарыстоўваецца 32 біт для п, а потым яшчэ
32 біта для мяне.
Версія другая выкарыстоўвае толькі 32 біта для п, так што
здаецца, гэта плюс.
Іншыя думкі?
Хто-небудзь хоча спрачацца на карысць аднаго?
Да?
Аўдыторыя: Вы павінны выкарыстоўваць дадатковыя радкі кода пры п -.
>> David J. малая: Добра, вядома.
Так што гэта справядліва.
Так што гэта проста, па меншай меры для мяне -
Я маю на ўвазе, гэта на самай справе адчувае сябе крыху брудней, тым, што
Я не магу сартаваць інкапсуляваць ўсе мае логікі ў адным
прыгожыя лініі, завесы для, так як цыкл можа.
Вось, я як бы павінны лавіраваць на гэтым п -
У канцы цыклу, таму што
гэта лагічна неабходна.
Але гэта накшталт трэцца мяне няправільна, проста таму, што
Здаецца, асобная ад логікі тут, хоць,
зноў жа, гэта неабходна.
Іншыя думкі?
Да?
Аўдыторыя: [неразборліва].
>> David J. малая: Так.
Так што, калі вы замест гэтага, у канцы песні, хацеў
раздрукаваць яшчэ раз назва песні?
Як "Дзякуй за гульню 99 бутэлек піва", ці нешта
дурное, як гэта?
Але справа ў тым, што вы хацелі доступ да зыходнага значэння.
Той факт, што вы мутаваў ці змяніўся п на кожным
ітэрацыі і, такім чынам, знішчыць сваё першапачатковае значэнне
азначае, што вы проста не можаце зрабіць гэта ў канцы.
Цяпер, мабыць, мы, відавочна, не хочуць рабіць
, Што ў гэтай праграме.
Так каго гэта хвалюе?
Але гэта вельмі правільны момант.
І, шчыра кажучы, там сапраўды ніхто не
Права адказу тут.
Яны абодва аднолькава правільныя.
Я мог пераканацца ў любым выпадку.
Я скажу, што, у агульным, гэта добры прынцып, калі Вы
спытаў у карыстальніка некаторую каштоўнасць, і вы захоўваецца ў зменнай
як і я, толькі выгляд у прынцыпе, гэта, напэўна, добры
захаваць, што вакол.
І любыя дадзеныя, якія вы хочаце мутаваць зноў і зноў, толькі
даць сабе копію гэтай зменнай, проста так, што вы
мець доступ да арыгіналу.
Вы марнуеце яшчэ 32 біта, але на самой справе гэта
Кампутар, як, двума гігабайтамі аператыўнай памяці ў гэтыя дні,
і мы спрэчка з нагоды 32 біт?
Сапраўды не такое ўжо вялікая справа.
І нават на гэтай прыладзе тут, з паловы канцэрта ці
гігабайтам аператыўнай памяці, 32 біт і 64 біт,
Не такое ўжо вялікая справа.
Вядома, сёння, гэта будзе шлях здзіўлены памерам
самой праграмы, якая будзе некалькі сотняў
кілабайт, калі б не некалькі мегабайт, у гэтыя дні.
>> Такім чынам, разумная заклапочанасць, ні адзін правільны адказ.
Але па крайняй меры тыя думкі, якія павінны пачаць
прайсці праз ваш розум?
Таму што ў PSET 0, хоць мы сапраўды толькі чакаецца
Правільнасць ці, па крайняй меры здымае з рознымі памылкамі, што
Вы, магчыма, сутыкаліся, як мы прасоваемся наперад, дызайн
будзе яшчэ адзін ключавы аспект, абодва напісання кода
а таксама нашы ацэнкі кода.
І так па крайняй меры даць думаў нешта накшталт гэтага.
І толькі таму, што нешта працуе не азначае, што гэта добра,
не азначае, што гэта добра распрацаваны.
І гэта адна з рэчаў, навучанне стажораў і
Праблема набору дапаможа нам дражніць частка з цягам часу.
>> Ну, што, скажам, гэтая версія тут?
Дазвольце мне зрабіць што-небудзь сэксуальнае тут у дадзены момант.
Перш за ўсё дазвольце мне пазбавіцца ад гэтага.
А цяпер давайце выправім гэтую граматычную пытанне.
Такім чынам, у гэтай версіі, я хачу, каб выправіць граматыку, так што,
, А не проста сказаць дужках з, як "бутэлька"
або "бутэлькі", -
Я не хачу, каб скараціць гэты кут -
Я таксама хачу, каб дынамічна раздрукаваць слова "бутэлькі"
або "бутэльку", тым самым выкарыстоўваючы гэтыя запаўняльнікі% сённяшніх.
Так што мне трэба ўмоўна праверыць, што гэта значэнне я.
І калі гэта 1, я хачу сказаць "бутэлька", і калі гэта нічога,
яшчэ, я хачу сказаць "бутэлькі". Так давайце паспрабуем гэта зрабіць.
Так што, калі я == 1, то дазвольце мне пайсці далей і абвясціць -
Мне патрэбна радок, таму дазвольце мне зрабіць радок s1, таму што гэта
Першы радок мяне хвалюе прама цяпер.
Я збіраюся сказаць: "Бутэлька". І потым, давайце паглядзім, струнны
s2 - і я растлумачу, куды я іду ў дадзены момант -
"Бутэлькі". Так Нагадаем, што ў гэтай песні, мы павінны быць у стане
друкаваць рэчы, два розныя словы патэнцыйна.
Такім чынам, калі мы азірнемся таму тут, заўважылі, што калі мы дабяромся да
гэты прыклад тут ", дзве бутэлькі піва на сцяне,
дзве бутэлькі піва, вазьміце адну ўніз, перадаваць яго ", я хачу
гэтая чацвёртая лінія цяпер кажуць, "адна бутэлька піва на
сцяна ". Такім чынам, я павінен вырашыць, я хачу сказаць" бутэлькі "ці
"Бутэлькі"? Так што я збіраюся калі заўгодна казаць, усё ў парадку,
Я збіраюся зараз абвясціць зменную s1, радок
адно, што збіраецца атрымаць падлучаныя тут, а таксама тут,
таму што гэтыя словы заўсёды аднолькавыя, толькі таму, што
характар ​​песні.
І я буду называць s2 ўсе словы я хачу
у рэшце рэшт з'явіцца тут.
Цяпер, літаральна, у 99 выпадках з 100, то гэта будзе
у абодвух гэтых выпадках, так як 3 множны лік, 2,
множным ліку, 4, множны лік.
Але ў гэтым кутку выпадак, калі мы дабяромся да 2, а затым 1, або
нават 1 і 0, мне патрэбна гэтая логіка.
Так што я павінен правесці некаторы час у маім кодзе атрыманне гэтага права.
Так што, калі я гэта зраблю, калі я == 1, то мноства S1 роўна "бутэлька"
і s2 роўныя "бутэлькі", таму што гэта будзе на працягу 1
бутэлькі, і гэта будзе для 0 бутэлькі.
І гэта тут, што гэта ўяўляеце?
Проста каб быць ясна.
Гэта проста каментар.
Таму той факт, што вы можаце мець Аднарадковае каментары азначае, што вы
Каментаваць могуць кодзе, як гэта, але іншага агульнага
парадыгмы, таксама з'яўляецца тое, што калі ў вас ёсць супер-кароткія фразы,
Вы хочаце паставіць сябе, і гэта проста больш зручным для чытання, каб пакласці
гэта права ў канцы радка кода, вы можаце
Абсалютна зрабіць нешта накшталт гэтага.
>> Так што цяпер, калі я зраблю гэта? Інакш, калі я не роўная 1.
Так выбуху роўная -
Клічнік вядомы як "выбух".
Такім чынам, выбух = 1.
Так што, калі я не роўная 1, што я замест таго, хочаце зрабіць?
Ну, першае слова, якое я хачу быць што?
Такім чынам, радок 1 павінна быць "бутэлькі" для множнага бутэлькі,
і тады гэта будзе множны лік "бутэлькі", а таксама, на дадзены момант.
І мы ўбачым, калі гэта на самай справе прымушае нас
куды мы хочам ісці.
Так што цяпер, калі я пракруціць ўніз тут, заўважылі, што я падключэннем
Не толькі я, але s1.
Я падключэннем я і s1.
А потым сюды, я мінус 1, які гэтак жа, як
раней, але s2.
Іншымі словамі, я хачу, каб ангельскае слова, каб змяніць аснове
На гэтай логікі.
Цяпер, ужо ёсць некаторыя праблемы ў гэтым кодзе.
Што разбіта ўжо з варот тут?
Да?
Аўдыторыя: [неразборліва].
>> David J. малая: Цалкам дакладна.
Так што я ўжо парушыў ўрок з вобласці бачнасці.
Такім чынам, я заявіў S1 і S2, але я зрабіў гэта ўнутры
фігурныя дужкі, што азначае, што так, гэты код будзе працаваць да
да лініі 42, але як толькі я патрапіў лініі 43, думаю, што няма
больш не існуе?
Ну, думаю, што гэта больш не па маштабе - ні S1 і S2.
Таму мы павінны гэта выправіць.
Такім чынам, дазвольце мне выдаліць дэкларацый.
І я пакіну імёны зменных і выдалення гэтага тут
і выдаліце ​​гэта тут.
І ў якім кірунку я павінен сапраўды аб'явіць гэтыя рэчы?
Аўдыторыя: [неразборліва].
David J. малая: Так, так, верагодна,
прама тут, 33-иш.
Такім чынам, радкі s1 і радкі s2.
І аказваецца, я магу гэта зрабіць.
Калі вы аб'явы двух зменных такога ж тыпу,
вы можаце проста выкарыстоўваць коску і зрабіць гэта ў С. Усе
Права, так што зараз у мяне ёсць дзве зменныя -
S1 і S2.
Я прысваення ім значэнняў у гэтых
Умовы тут, або тут.
І тады я выкарыстоўваю іх уніз.
Як яна цяпер будзе працаваць?
>> Ну, гэта яшчэ трохі глючыць, але давайце хаця б пабачыць
як далёка мы атрымалі.
Такім чынам, дазвольце мне пайсці далей і зрабіць beer3.
Гэта beer3?
Так, гэта beer3.
А цяпер дазвольце мне ісці наперад і працаваць beer3.
399 99.
Мы, верагодна, можа прапусціць большасць з іх.
І сюды, паглядзі на гэта.
"Адна бутэлька піва на сцяне, адна бутэлька піва, прыняць
1 ўніз, перадаваць яго, 0 бутэлек піва на сцяне ".
Але я звяртаю вашу ўвагу толькі палова рашэнні.
Выгляд аблажаўся тут.
Так што, падобна, што кут выпадкі ўзнікаюць, калі я роўна, што
два значэння?
Аўдыторыя: 2, 1.
David J. малая: 2 і 1.
Гэта не 1, а не 1.
Гэта сапраўды проста гэтыя апошнія два строфы гэтай песні.
Такім чынам, што я замест гэтага хочаце зрабіць?
Так што я, здаецца, злавіў выпадак, калі, калі г == 1,
то першае слова "бутэлька", а другое слова
з'яўляецца "бутэлькі". Але тут, я хачу змяніць гэта, каб быць == 2.
І калі гэта так, то, што я хачу
Першае слова быць?
Аўдыторыя: "Бутэлькі".
David J. малая: "Бутэлькі", так і для двух бутэлек.
І тады гэта слова тут павінна быць -
Аўдыторыя: "Бутэлька".
David J. малая: "Бутэлька", адмысловая.
>> Добра, давайце маштаб, вярнуцца сюды, паўторныя зрабіць,
паўторныя beer3, Тып 99 раз.
Добра, "Памылка сегментацыі (ядро скідалі)".
Што я зрабіў не так?
Аўдыторыя: Вы не маюць значэння [неразборліва].
David J. малая: Ах, выдатная кропка.
Добра, так што тут не так?
Такім чынам, сегментацыя віна, і мы фактычна ўбачым
гэта даволі шмат разоў у будучыні, свядома.
Але цяпер, што гэта на самай справе азначае?
Сегментацыя віна амаль заўсёды азначае, што ў вас ёсць
неяк спрабаваў атрымаць доступ да памяці, аператыўнай памяці ў кампутары,
што ў вас няма, што вы, уласна, не прасіў
аперацыйная сістэма для.
Такім чынам, у гэтым выпадку, звярніце ўвагу, што я зрабіў, што
недахопы ў маёй логіцы.
Я прызначаны S1 і S2 значэнне, калі я роўная 1.
Я таксама зрабіў, што калі я роўная 2.
Але я не зрабіў гэта ў бясконцую колькасць іншых
Магчымасці -
У прыватнасці, 3 ці 4 або кропка, кропка, кропка, 99.
Так што выправіць гэта можа быць проста давайце
ёсць іншы стан.
І адпусьціў мяне сюды і сказаў s1 роўна -
якой яна павінна быць тут?
Аўдыторыя: [неразборліва].
>> David J. малая: "Бутэлькі", таму што ў агульным выпадку,
гэта проста тое ж самае.
Так роўная цытата, канец цытаты ", бутэлькі". Так што для множнага
бутэлькі, а затым тут, на множны лік бутэлек.
Такім чынам, цяпер дазвольце мне вярнуцца да маёй акно тэрмінала,
перакампілявання, зноў запусціць яго.
99.
Вось так.
І давайце зробім хуткую праверку наяўнасці свядомасці.
Тэхнічна, мы хацелі б, каб прачытаць усё з іх, каб пераканацца, што
яны маюць рацыю, але давайце паглядзім на
найменш вядомых злачынцаў.
3 бутэлькі, 2 бутэлькі, 2 бутэлькі, 1
Бутэлька, 1 бутэлька, 0 бутэлькі.
Мы, здаецца, па меншай меры, усталяваў яго на дадзены момант.
Але загваздка ў тым, што тое, што Бог жудасны беспарадак, гэта
проста вырашыць дурное
адзін знак граматычных дэталяў.
Так што збольшага прычынай таго, што я выразаў гэты куток
Раней, таму што яна проста цалкам раздражняе неабходнасць
напісаць столькі кода.
Але аказваецца, што ёсць крыху больш элегантным спосабамі
выказваюць адно і тое ж.
І мы можам зрабіць гэта наступным чынам.
>> Дазвольце мне пакінуць гэта на экране на імгненне і
ўвесці нешта, вядомае як патройны аператар.
Гэта свайго роду адзін радок, што проста хацеў зрабіць нашу
Жыве трохі сэксуальней, як і абяцаў.
І я збіраюся зрабіць гэта наступным чынам.
Дайце мне радкі называецца s1, і дазвольце мне
прызначыць яго наступным чынам.
(Я == 1)?
"Бутэлька", інакш "бутэлькі". String s2 атрымлівае (я == 2)?
"Бутэлька", інакш "бутэлькі".
Такім чынам, што ж тады розніца?
Гэтыя два радкі кода, я лічу, можа
замяніць ўвесь гэты бардак.
Так я называю гэта беспарадак, толькі таму, што яна як бы трэцца мяне
няправільным чынам, што ён так шмат радкоў кода.
Ня няправільна.
Гэта не дрэнны дызайн.
Маўляў, гэта цалкам правільны і выдатна.
Але кадаваньне становіцца стомным, калі ў вас ёсць, каб выказаць сябе так,
Чорт адмыслова зноў і зноў, і зноў з простым
Сцэнар, як гэта.
Так што C мае некаторыя цэтлікі, як гэта.
Так што гэта па сутнасці кажа абвясціць радок называецца S1 і
прызначыць яго альбо гэта значэнне ці гэта значэнне, калі г == -
Прабачце, я павінен сказаць, што гэта больш выразна.
Аб'ява зменнай s1, прысвоіць яму гэта значэнне, калі гэта праўда.
У адваротным выпадку, прысвоіць яму гэта значэнне.
Такім чынам, іншымі словамі, гэта свайго роду адна лінія спосабам
кажуць, калі іншае рабіць саступкі па шляху.
Так што, калі я роўная 1, а затым пайсці далей і называюць гэта "бутэлькі". І
то гэта іншае, называюць яго "бутэлькі". Між тым, s2,
Другое слова, што мы павінны вызначыць, калі я роўная 2, мы будзем
ўсталюеце перамыкач S2 ў "бутэльцы". У адваротным выпадку, ўсталюйце яго ў "бутэлькі". І тое, што
гэта азначае, што зараз я магу прайсці праз гэта і выдаліць усе
гэтыя радкі кода.
І калі я кажу, крыху смешна, што гэта зараз
сэксуальней, гэта сэксуальней ў свайго роду стылістычныя сэнсе.
Той факт, што функцыянальна гэты код на самай справе адбываецца ў
зрабіць сапраўды такую ​​ж рэч.
І хоць гэта можа выглядаць трохі загадкавыя на першы
погляд, таму што мы не бачылі гэтую канструкцыю раней, я б
сцвярджаюць, што гэта ў канчатковым рахунку будзе значна больш
чытання і нашмат прасцей для людзей, каб мы накшталт
зразумець, таму што цяпер вы можаце проста прачытаць
Код усё на адной лініі.
Ён па-ранейшаму блізкія па духу, калі там, дзе гэта
стан і тады, гэта тое, што ўсярэдзіне, калі і гэта
гэта тое, што знаходзіцца ўнутры іншага.
Але мы можам зрабіць гэта, толькі значна больш элегантна.
>> І калі я цяпер вярнуцца да маіх тэрмінал, выдаліўшы ўсе
з гэтых ліній і замянілі іх толькі тыя два,
перакампілявання, паўторныя бутэлькі піва з 99 Звярніце ўвагу, што мая
граматыкі з'яўляецца, па сутнасці, па-ранейшаму верныя.
Такім чынам, яшчэ раз, нешта пачаць.
2 бутэлькі піва, 1 бутэльку піва.
Выглядае права.
Так.
Так што ў нас ёсць значна больш ёмістыя рашэння.
Так што гэта таксама, як вы атрымаеце больш камфортна з C, не
абавязкова з першага PSET ці нават секунды, але
разумею, што гэтыя канструкцыі можа дазволіць нам рабіць рэчы, калі-небудзь
больш элегантна.
Зараз давайце зробім яшчэ адну рэч тут.
Дазвольце мне ісці наперад і адкрываць return1.c.
Зараз давайце пачнем вырашыць яшчэ адну праблему такім чынам, што
дазваляе напісаць больш складаны код.
>> Такім чынам, вось простая маленькая праграма, мэта якой у жыцці
гэта для павелічэння значэння.
А на самай справе, давайце зробім крок назад.
Дазвольце мне зрабіць гэта ўручную.
Дазвольце мне зрабіць ўключаць і Int асноўных (несапраўднымі).
І дазвольце мне называць гэта increment.c.
І тое, што я хачу рабіць?
Я збіраюся ісці наперад і сказаць нешта накшталт -
мы будзем называць ліку ж -
Int х.
Так Int х атрымлівае 2; Printf х% й, новая лінія, х.
Так што я друкую хутка, але накшталт знаёмыя рэчы цяпер.
Тады я буду рабіць X + +.
Тады я іду да друку ў тым жа прапанову яшчэ раз.
А потым я збіраюся вяртаць 0 толькі для выхаду з праграмы.
Добра, так гэта праграмы, якія
прырашчэння ліку.
Гэта першы выхад для ініцыялізацыі нешта 2, а затым гэта
збіраецца павялічваць яго і раздрукаваць яго зноў.
>> Так што давайце працаваць прырост, неверагодна просты праграмы.
Але выкажам здагадку цяпер, што я хачу куб значэнне, так што
нешта некалькі адвольна.
І я на самой справе хачу рабіць х атрымлівае куб яе.
Так што я мог бы выкарыстаць тое, што завецца функцыяй ваеннапалонных, але я не
сапраўды ведаю, дзе гэта пакуль.
Так што я збіраюся зрабіць гэта старамодным спосабам.
х раз у гэтым роўных х раз х раз х.
Так што я кубатуры значэнне, памножыўшы яе на сябе зноў
і зноў і зноў, так што мы атрымліваем ўлада
3-у гэтым выпадку.
Так што цяпер ліку я павінен раздрукаваць і павінна быць, як мы ўбачым
тут - зрабіць крок, так што гэта на самай справе не зусім павялічыць
больш, але мы пакінем толькі назва -
2, а затым 8.
Цяпер у нас ёсць зародкі магчымасць для ўдакладнення
Тут, у якой гэтая рэч вымярэння кубатуры множання ліку
сама па сабе сама па сабе сама па сабе адчувае, як гэта можа быць проста
Карысна мець як функцыя, гэтак жа, як хтосьці вырашыў,
гадоў назад - Вы ведаеце, накшталт карысна, калі адзін з нас садзіцца
і піша Printf, так што астатняй свет можа яго выкарыстоўваць,
Чаму б нам не сесці і напісаць функцыю, называецца кубам
, Што робіць гэта вымярэння кубатуры для нас, таму мы не павінны ўручную
ажыццяўленне паняцце кубатуры значэння тут?
>> Такім чынам, просты прыклад, але давайце ісці наперад і выкарыстоўваць гэта ў якасці
магчымасць напісаць сваю функцыю.
Такім чынам, да гэтага часу мы выкарыстоўвалі толькі асноўныя, і мы выкарыстоўвалі іншыя
Народны функцыі, але мы яшчэ не напісалі наш уласны.
Такім чынам, тут мы ідзем.
Я збіраюся пайсці далей і напісаць функцыю, называецца кубам.
І я буду мець гэта зойме ўваход.
Такім чынам, яе ўваход будзе цэлае лік.
І тое, што ён збіраецца рабіць?
Гэта збіраецца абвясціць Int выхад = ўваход разы ўваход
раз ўваход.
А потым ён збіраецца вярнуцца, што выхад.
І тады я павінен быць канкрэтным цяпер.
Гэтая функцыя будзе вяртаць Int.
Дык вось тое, як Вы бы напісаць свае ўласныя функцыі.
Спачатку вырашыце, што імя
Функцыя будзе.
І наогул, нешта тлумачальнай добра, так што я
называюць яго куб.
Затым вы павінны паказаць, што ён збіраецца вярнуцца, што
яго выхад будзе.
І мы не так ужо шмат варыянтаў пакуль няма.
Int, Char, дробны, лагічны, радок.
А зараз я збіраюся прытрымлівацца Int, таму што я хачу,
для вяртання цэлага ліку.
Тады вы павінны паказаць, што яго уваходаў, калі такія маюцца.
І калі куб прымае аргумент, бярэ штосьці паміж
дужкі, вы павінны даць аргумент, што імя, каб
Вы можаце назваць гэта тое, як вы рэалізуеце або запісы
гэтую функцыю, і вы павінны даць яму тыпам, які ў гэтым
выпадку будзе Int.
Карацей кажучы, куба гэта функцыя, якая прымае цэлае
якасці ўваходных дадзеных і вяртае цэлы лік у якасці высновы.
>> Так што ж рабіць з гэтым уваходам?
Ну, а ў радку 14, я абвяшчаю зменную выхадныя, і я
прысвоіць яму значэнне, уваход раз ўваходныя раз ўваход.
А потым я вярнуся выхад.
Так як я магу выкарыстоўваць гэта тады?
Што я магу змяніць гэтыя падкрэсліў знакаў у радку
7 павінна быць, як вы думаеце?
Аўдыторыя: [неразборліва].
David J. малая: Так, так кубе х.
Так што х з'яўляецца зменнай, якая азначае, што яна мае нейкае значэнне.
На шчасце, гэта тып цэлага ліку.
І таму х INT, гэта азначае, што я магу перадаць яго ў куб.
І хоць я пераазначэння значэння х са значэннем
куба х, як гэта было ў выпадку да гэтага часу, у любы час
маюць знак роўнасці і радкі кода, матэрыял на права
запускаецца на выкананне, а затым атрымлівае прызначэнне ў
Значэнне злева.
Такім чынам, парадак аперацый так, як мы хацелі б спадзявацца.
Так гэта працуе?
Ну, адпусьці мяне сюды.
Дазвольце мне адкрыць маё акно тэрмінала.
Дазвольце мне зрабіць крок, Enter.
"Няяўна аб'яву" куб "функцыя не працуе ў
C99. «Як у баку, C99 ставіцца да мовы C, як гэта было
вызначаны ў 1999 годзе, якое было абнаўленне на версію з
1989 года, які з'яўляецца абнаўленнем ў параўнанні з першапачатковай.
Так што ўсё гэта значыць.
>> Дык што ж гэта значыць, што "невідавочнае аб'яву
"Куб" функцыя не працуе? "Гэта прама тут.
Гэта прама там, у радку 12.
Аўдыторыя: [неразборліва].
David J. малая: Што гэта?
Аўдыторыя: Гэта не раней.
David J. малая: Гэта не раней.
Дык вось у чым справа.
З выглядам дурны, ці кампілятараў з'яўляюцца свайго роду дурным.
Яны сапраўды толькі тое, што вы кажаце ім зрабіць.
А яны, у прыватнасці, толькі чытаць ваш код зверху ўніз,
злева направа.
Так што, калі кампілятар, Clang, чытае ваш код, лінія 1,
высвятляе, як гэта зрабіць.
Ах, вось ідзе асноўны.
Добра, дазвольце мне пайсці далей і абвясціць зменную х.
Дазвольце мне надрукаваць што-небудзь.
Лінія 7, што ж такое куб?
Гэта не аб'яўлена ў stdio.h.
Ён не прыходзіць з С. Я паняцця не маю, што рабіць.
І так Clang проста спыняецца і выходзіць з паведамленнем пра памылку.
Такім чынам мы можам выправіць гэта ў некалькі спосабаў.
Мы можам навучыць Clang, што куб з'яўляецца проста перасоўванне якіх
дэкларацыя.
Так што я выразаў і ўставіў яе па-над асноўнага.
Цяпер разумею, што толькі таму, што галоўнае, ужо не першы, гэта
па-ранейшаму выконваецца па змаўчанні.
Галоўныя з'яўляецца асноўнай.
Гэта імя па змаўчанні функцыя.
Не мае значэння, дзе ён знаходзіцца ў файле.
Але па крайняй меры цяпер Clang бачыў куба, перш чым выкарыстоўваць яго.
Такім чынам, давайце паглядзім, калі Clang з'яўляецца шчаслівым цяпер.
Зрабіце крок, яна кампіляцыі гэтага часу.
>> Дазвольце мне выканаць прырашчэнне.
І на самай справе, здаецца, працуе.
Цяпер вы можаце прыдумаць сцэнары, дзе ў канчатковым выніку
гэта не магчыма паставіць любы функцыі
вышэй за ўсіх іншых функцый.
Вы затрымаліся ў гэтым бясконцым цыкле ў рэчаіснасці,
дзе гэты хлопец хоча быць тут, але гэта
хлопец павінен быць там.
Так што не заўсёды працуе.
Так што, на шчасце, C мае больш элегантнае рашэнне.
Я збіраюся паставіць гэта туды, дзе яна была, проста таму, што
аддаюць перавагу, як у прынцыпе, што галоўнае заўсёды быць
у верхняй частцы, таму што гэта проста прыемна бачыць, што гэтая праграма
робіць па змаўчанні.
І тое, што я збіраюся зрабіць тут гэта аб'явіць, што называецца
прататып.
Я збіраюся паўторна заяўляю аб сваім кубе функцыі, літаральна
капіявання і ўстаўкі.
На самай справе, гэта не ў літаральным сэнсе.
Такім чынам, літаральна капіюючы і ўстаўляючы лініі 15
да вышэй лініі 6.
Гэта не мае значэння, якой лініі гэта заканчваецца на.
Гэта здараецца, у радку 4.
Але гэта павінны быць, перш чым асноўная.
Але заўважыце розніцу.
4 лінія сканчаецца кропкай з коскі, што азначае, эй,
Clang, паверце мне на слова, што існуе функцыя
называецца кубам, які прымае і вяртае Int Int.
Але я не скажу табе, што гэта такое.
Проста ведаю, што я абяцаю, што раскажу вам у рэшце рэшт.
І сапраўды, цяпер гэта нармальна, што гэта ўнізе.
>> Так што гэта, як правіла, лепш, таму што тады ў верхняй частцы
Ваш файл, вы можаце проста отбарабанить, хуткага агню, адным радком
кожная, што імёны вашыя функцыі, якія іх
Ўваходы, што іх выхады.
А калі быць больш ясным, як правіла, азначае ўвод аргументаў або
Параметр, сінонімамі.
Выхадны азначае вяртанне кошту, што робіць гэта
рукі да мяне спіной.
Таму ў дадзеным выпадку тут, куб быў абвешчаны ў верхняй часткі, але
вызначана, інакш вядомы як рэалізаваны, у ніжняй часткі.
Такім чынам, цяпер давайце вернемся сюды і зноў запусціць гэты.
Так што цяпер дазвольце мне ісці наперад і паўторна запусціць зрабіць, паўторна запусціць прырост.
І цяпер, здаецца, працуе проста выдатна.
Такім чынам, зараз мы можам ісці наперад і ўлічваць нешта накшталт
Піва прыклад у гэтай чацвёртай версіі.
Такім чынам, дазвольце мне пракруціць ўніз тут.
І заўважыў, што я як бы прыняў гэты ўрок блізка да сэрца толькі цяпер.
Той факт, што я спяваў той жа строфы зноў і
зноў і зноў, у той жа радку хору ў песні, адчуваў сябе
Напрыклад, чаму не я фактару, што з у функцыю?
І сапраўды, гэта павінна быць адным з матываў.
Акрамя таго, што нехта яшчэ ў свеце можа запатрабавацца
выкарыстоўваць куб функцыю -
гэта добрая нагода, каб раскласці нешта і напісаць
ўласныя функцыі -
калі ёсць кавалак кода ў вашай праграме, якая проста робіць
канцэптуальным сэнсе, што вы, здаецца, хочаце, каб даць яму
імя - як у дадзеным выпадку, хору -
Вы можаце так жа напісаць, што ў якасці асобнай функцыі.
Вы не павінны напісаць усё, у асноўным, калі ён толькі
адчувае сябе чыстай, каб аддзяліць яго і даць яму імя.
>> Таму ў дадзеным выпадку тут, заўважылі, што ў мяне ёсць каментар на вяршыні
гэта функцыя, якая проста спявае пра
паказана колькасць бутэлек.
Заўважце, што тут мне не трэба называць гэтыя
рэчы ўваход і выхад.
На самай справе, на гэты раз я проста патэлефанаваў мой ўклад б за бутэльку.
І звярніце ўвагу, тут, пустэча прапануе тое, што?
Гэта хор -
Аўдыторыі: Не вярнуць яго.
David J. малая: не вяртае значэння.
І на самай справе, функцыі не павінны вяртаць значэння.
Яны проста могуць нешта зрабіць.
Яны могуць мець так званыя пабочныя эфекты, якія ў гэтым
выпадку гэта проста цэлая куча друку на экране.
Так заўважыць, што гэты код тут, я літаральна толькі што скралі ў
у папярэднім прыкладзе.
Розніца толькі ў тым, замест выкарыстання я, як мая
зменных, я зараз, выкарыстоўваючы б, як мой зменнай.
Так што я б сюды, я б сюды, я б
мінус 1 тут.
Але код сапраўды гэтак жа.
Але толькі, каб паказаць вам, як мы можам выкарыстоўваць гэта, адпусьці мяне
наперад і фактычна змяніць гэта будзе цыкл.
для (INT я = п;> п, I -).
>> Так што я выкраў, што з нашага папярэдняга прыкладу.
Раней ён знаходзіцца ў радку 37, што я б пачаў
спяваць гэтую песню раздражняе.
Але замест гэтага, я проста хачу, каб зараз называюць хорам я.
Гатова.
Так што цяпер у кожнай ітэрацыі гэтага цыклу, я называю гэта іншым
Функцыя, хор, які мне давялося пісаць.
Яна не была напісана кімсьці яшчэ год таму.
Але хор, тым часам, выкарыстоўвае Printf для друку
з гэтых чатырох ліній.
Але тое, што я тэлефаную хор зноў і зноў
пятля азначае, што я збіраюся атрымаць, у самым канцы,
дакладна такую ​​ж песню, як у мяне да гэтага часу.
Карацей кажучы, цяпер, калі я азіраюся на свой код, нават калі
функцыянальна гэта тое ж, звярніце ўвагу, што гэта
пачынаюць атрымліваць яшчэ больш чытэльнымі.
Я сапраўды не ведаю, як GetInt
рэалізаваны.
Шчыра кажучы, я не ведаю, як хор рэалізаваны.
Але гэта не мае значэння для мяне.
Мяне не хвалюе, таму што цяпер я магу сартаваць, як чалавек, чытаць
гэта ад верху да нізу.
І таму, што функцыі называюцца па тым, што яны
рабіць, мой код больш чытэльным.
А так як нашы праграмы атрымаць значна больш складанай -
Да канца семестра, вы будзеце пісаць сотні радкоў
кода ў мовах, як PHP і JavaScript і да т.п. -
Вы ўбачыце, што гэта значна прасцей, чым сачыць за
што вы зрабілі.
І калі вы пачынаеце супрацоўніцтва з сябрамі або
партнёрам або калегам, вы будзеце мець магчымасць пісаць значна больш
масіўных праграм, пачынаючы ажыццяўляць гэтыя асноўныя
будаўнічыя блокі.
>> Такім чынам, з улікам сказанага, чаму мы не называем гэта дзень?
І мы будзем бачыць вас у сераду.
[Апладысменты]