[Powered by Google Translate] DAVID малая: Гэта CS50, і гэта з'яўляецца пачаткам Тыдня 1.
Тое, што мы думалі, што мы робім сёння, гэта паглядзець назад на
тое, што многія з вас ужо, напэўна, прайшоў міма некаторых
час і можа выглядаць трохі знаёмыя.
Гэтая рэч тут, гэта, вядома, у -
Аўдыторыя: Навука.
DAVID малая: Навука цэнтра.
Так што гэта на самай справе адна з першых кампутараў
Назад з 1940-х.
Гэта быў адзін з першых электрамеханічных кампутараў
, Якая была здольная асабліва доўга,
самастойнага вылічэнні, і тое, што мы на самай справе бачым у
навуковы цэнтр толькі маленькі кавалачак гэтай рэчы.
Тое, што мы думалі, што мы робім, то гэта зірнуць назад на відэа
, Што было зроблена некаторы час таму, прадстаўляючы гэтую
рэч у свеце.
І вы ўбачыце, ад музыкі і галасы, які сапраўды тыя,
былі вельмі шчаслівыя часы.
>> [Прайграванне відэа]
-Трыумф матэматычных і механічных навыкаў гэта
вялікі новы аўтаматычны калькулятар ў Гарвардскім універсітэце.
Складаныя праблемы матэматыкі, прапусціць праз
Машына ў закадаваным выглядзе на стужцы, дакладна вырашана ў
хвіліна долю часу, неабходнага для чалавека
разлік.
Прызначаны для паскарэння ўсіх формаў матэматычных і навуковых
даследаванне, гіганцкі механічны мозг будзе працаваць для Арганізацыі Аб'яднаных
Дзяржавы флота да канца вайны.
>> DAVID малая: Так што вы можаце не ведаць, што гэта было ў
гэта ж прылада, што тэрмін мы ўсе зараз узяць у значнай ступені
само сабой якія разумеюцца было прыдумана, што і памылка.
Такім чынам, адзін з інжынераў, якія працуюць у гэтым кампутары
літаральна знайшоў маленькі матылёк ў машыне, якая прывяла
У некаторых няправільных разлікаў.
А так як гісторыя абвяшчае, што матылёк быў запісаны ў гэты часопіс
Часопіс сюды, назад з 9 верасня ў 1940 годзе-то,
і такім чынам нарадзіўся для свету тэрмін "памылка".
Такім чынам, у далейшым мы разгледзім памылкі быць ніякай памылкі ў
праграм, будзь то чалавека ці, у дадзеным выпадку, насякомых.
>> Так некалькі аб'яў, як мы далей.
Так CS50 мае традыцыю прапаноўваць абеды роду на
Найбольш пятніцах на працягу семестра, дзе мы бярэм ад 30 да
40 студэнтаў у агонь і лёд на плошчы для выпадковых
балбатня, размова аб кампутарных навук,
казаць пра будучыню.
Мы запрашаем выпускнікоў і сяброў ад прамысловасці балбатаць
студэнтаў.
Сапраўды да канца робячы тое, што гэта даволі вялікі клас
Тым больш інтымным, па меншай меры, адзін раз у той час як для
падмноства студэнтаў.
Так што, калі вы хочаце далучыцца да нас у гэтую пятніцу, 1:15 PM, перайдзіце да
CS50.net/lunch для RSVP.
І мы зробім гэта recurringly, так што не хвалюйцеся, калі вы не
Сярод першых 30 ці каля таго на гэтым тыдні.
>> Так пісец нот.
Слова на рэсурсы, якія зараз пачынаюць быць даступныя
для студэнтаў у класе.
Так што вашыя галовы не павінны быць ўніз падчас лекцыі
штабнаваць ўніз усё, што я кажу, і гэтак далей, тое, што мы робім
замест гэтага забяспечыць ад прафесарска-выкладчыцкага складу
кананічны набор нот.
Такім чынам, мы маем адзін з нашых таварышаў навучання, Эндру Sellergren,
хто садзіцца кожны тыдзень, агляд відэа, а затым
запісвае тое, што мы думаем, што з'яўляецца даволі
аўтарытэтнага набор нататак.
А Эндру любіў, акрамя таго, паставіць элегантнага зноскі ў
ўнізе.
Такім чынам, вы будзеце атрымліваць асалоду ад гэтага, мы спадзяемся, у якасці даведніка для
весела, а таксама, прыходзяць віктарыны час, як магчымасць перагледзець
тое, што адбылося ў асобных лекцый.
Так што тыя, якія звязаны з лекцыямі старонку.
>> Праблема мноства 0, тым часам, выходзіць.
І з пункту гледжання рэсурсаў, даступных для вас -
праходжанне гульні.
Міла правёў першае ў пятніцу.
Ён быў зняты, пакласці сайце ў суботу.
І так разумею, калі вы не зусім ўпэўнены, з чаго пачаць,
для гэтай або будучай р-мностваў, заўсёды аказваюцца першымі
Праходжанне або відэа іх.
Секционирование ў цяперашні час; на cs50.net/section, дзе вы
павінны прадставіць свае перавагі, калі ў вас няма
ўжо на сённяшні дзень.
Таму што раздзелах пачнецца ў бліжэйшую нядзелю, панядзелак
і ў аўторак.
Мы робім раздзелах гэтыя тры дні, кожны тыдзень
семестра па большай частцы.
І мы таксама прадстаўляем, зноў жа, розныя трэкі.
Так вам будзе прапанавана на гэтай формай секционирования, калі Вы
не бачыў яго ўжо, калі вы сярод тых, хто менш
зручны, больш камфортным, або дзесьці пасярэдзіне.
І калі ты накшталт на плоце, як правіла, дзесьці ў
паміж тое, што большасць студэнтаў у канчатковым выніку праверкі.
Гадзіны працы пачынаюцца сёння.
>> Так драпін даволі нізкі ключ, хоць гэта цалкам натуральна
для запуску ў розных памылак, або быць упэўнены ў тым, як
рэалізаваць нешта.
Так разумею, што мы пачнем працоўнага дня на гэтым тыдні.
Яны будуць у Annenberg панядзелак, аўторак, серада,
Чацвер, з 8:00 вечара да 11:00 вечара ў мозг перапынку.
Верхняя classmen можаце ўвайсці, і калі вы калі-небудзь праблемы з атрыманнем
у дзверы, таму што яны будуць пальцам, проста пагаварыць свой шлях
У тлумачаць і вы з CS50.
Звычайна ад 20 да 30 з нас на персанал будзе там, каб дапамагчы
Вы адзін на адзін.
>> Па прыбыцці ідэя заключаецца ў наступным: вы прыносіце свой ноўтбук,
вы будзеце мець зарадная прылада, мы будзем мець дадатковыя шнуры харчавання,
асабліва ўздоўж паўднёвай сцяны, дзе Annenberg
ёсць шмат электрычных разетак.
І асноўны кропкай ўваходу ў офіс гадзіны Q & А ісці на
cs50.net/discuss і размясціць
Ваш пытанне.
І назваць гэта з PSET 0 або PSET 1, незалежна ад тыдня
можа здарыцца, каб быць.
І што тады мы будзем рабіць гэта ёсць табліца навучання стыпендыятаў
і асістэнтаў, як правіла, 8 ці 10 ці каля таго з нас,
перажывае, уважліва сочаць на дошцы, і
выскубанне ад пытанняў сапраўды так хутка, як мы можам,
спасылаючыся вам звязаных паведамленняў, калі вы не знайшлі тых,
сябе, онлайн спасылкі, па меры неабходнасці.
І потым, калі ёсць праблемы, так як непазбежна
будзе, ці яна проста мае больш сэнсу, каб сесці адзін на адзін,
працаваць праз праблемах з кімсьці.
>> Ці вы проста прыйсці ў офіс гадзін сапраўды
жывуць у нястачы, што мысленне.
Вы ж не хочаце, каб прайсці праз электронную форму,
вельмі хачу сустрэцца з кімсьці.
Майце зносіны, што для нас, і што будзе адбывацца, калі ваш
Пытанне быў заўважаны адным з супрацоўнікаў, і мы
вызначыць, так, гэта павінна быць адпраўлены ў адну з 20 ці
30 членаў каманды тут, на месцы, вы ўбачыце ў левым верхнім кутку гэтай
мала Увядзіце чарзе кнопкі пачне міргаць cs50.net /
абмеркаваць.
І гэта кажа вам, што вы зараз былі запрошаныя, так
сказаць, каб увайсці ў чарзе.
І націснуўшы на гэтую кнопку, ваша імя з'явіцца на
Ipad, што прывітання CS50, адзін з кіраўнікоў вядома, будзе
правядзе каля ўваходу ў Annenberg, які затым
бачым, як паказана тут, студэнты, якія ёсць пытанні па
злева, супрацоўнікі, якія знаходзяцца справа.
І з дапамогай пстрычкі левай і правай, ваш вэб-браўзэр
пачынае міргаць, як толькі, напрыклад, прафесар McGonnagal
гатовы бачыць вас на стале ў прыватнасці Annenberg.
>> Так мы і зрабілі некаторыя з гэтых мінулага года.
Мы перазагрузіце працоўны час і
паўторна рэалізавана вялікая частка праграмнага забеспячэння.
Так разумею, што гэта будзе цёплым на гэтым тыдні.
Але таксама разумею, таксама ў мінулыя гады, як вы, напэўна, чулі
ад сяброў, гадзіны, сапраўды, ад 50 да
150 студэнтаў адначасова.
І гэта проста не магчыма для нас, каб справіцца з гэтым
эфектыўна, адзін на адзін, на працягу вечара.
І так, што мы сапраўды збіраемся паспрабаваць зрабіць у гэтым годзе
зарабіць на той факт, што многія пытанні
Часта задаюць і часта мага лепш адказаць
асінхронна.
Такім чынам, вы можаце сартаваць прадумаць адказ персаналу,
і мы можам прадумаць свой код, без падагрэвам
Ціск абавязкова змагаецца
праз яго бок аб бок.
Такім чынам, мы лічым, што прыкладна траціна або палову пытанняў
будзе накіраваны ў твар, і мы паспрабуем, каб абрываць як
больш, чым палова ці больш у электронным выглядзе,
ў працоўны час.
І мы будзем працягваць выкарыстоўваць Абмеркаваць
На працягу тыдня, а таксама.
>> І, нарэшце, зразумець, што гэты курс можа быць прынята прыдатны / не прыдатны.
Так што, калі вы знаходзіцеся на плоце ці проста думаю, што вы сапраўды
Не ўпэўнены, што гэта свет для вас, ці гэта сапраўды
зусім чужы табе, разумееш, што гэта выдатны спосаб
атрымання да некаторай упэўненасці, з якой ступіць у
класа, як гэта зрабіў я, шчыра кажучы, гадоў таму.
І тады ёсць пяць тыдняў, каб разабрацца фігуры за
сябе, калі вы хочаце застацца прыдатны / не прыдатны, пераключыцца на ліст
класа, ці таму падобнае.
І, як правіла, што прыдатны / не прыдатны ці, я думаю, для студэнтаў
што, калі вы пакладзеце ў тым, што 10 гадзін, 20 гадзін, якой бы яна
можа быць на некаторых праблемах, і ты б'ешся галавой
да сцяны,
і вы сапраўды проста не можа ставіць нешта ўніз, і вы
ёсць шмат іншых рэчаў, якія вы павінны зрабіць, калі шчыра, тое, што я
думаю, прыдатны / не прыдатны, яна здымае вастрыню ў
такіх сітуацыях.
Дзе вы ўзялі рэчы 90% шляху.
Вы ведаеце, гэта не зусім дасканалы.
Але вы атрымалі шмат з яго, тым не менш.
Так лічаць прыдатны / не прыдатны, як прадастаўленне вам, што
ментальная мадэль, магчыма.
>> Добра, на мінулым тыдні мы нырнулі ў Scratch, і мы
казалі аб праграмаванні на досыць высокім графічным узроўні.
І сёння мы зрабіць пераход да мовы
называецца C, ніжні ўзровень мовы праграмавання на вяршыні
якое многія сучасныя мовы ў цяперашні час пабудавана, у тым ліку
з тых, якія мы будзем выкарыстоўваць бліжэй да канца тэрміну.
І сінтаксічна, як яны выглядаюць
гэта ўсё вельмі падобна.
Такім чынам, давайце пачнем, каб зрабіць гэты пераход тут.
Такім чынам, гэта была праграма, што на мінулым тыдні быў самы просты з
прывітанне свет праграм.
Гэта проста выводзіцца на экран свет прывітанне, з
маленькі бурбалка прамовы выходзіць з кот.
Ну, калі мы пачнем цяпер, каб перавесці гэта на другі
мову, разумеем, што ідэі сёння і ў сераду
ідэнтычныя, але сінтаксіс пачынае змяняцца.
Такім чынам, у той час як на мінулым тыдні ў нас было, калі зялёны сцяг націску, скажам,
прывітанне свет.
Сёння мы збіраемся, каб мець Int, галоўнае, пустэча, Printf,
вяртанне, з другога сінтаксіс там жа.
Фігурныя дужкі, і дужкі, і двукоссі, і яшчэ шмат чаго.
Але разумею, што ядро ​​Ідэя тут складаецца ў друк,
і, нарэшце, той факт, што ў цяперашні час асноўным будзе
асацыюецца з запускам праграмы.
Галоўнае збіраецца быць там, дзе зялёны сцяг нагамі пакінуць рэчы.
>> А цяпер давайце дражняць адзін ад аднаго некаторымі з будаўнічых блокаў тут
Перш чым мы паглыбімся ў некаторыя канкрэтныя прыклады.
Такім чынам, мы назвалі гэтую заяву на мінулым тыдні, у якім ён проста
інструкцыя.
Зрабіце гэта, - у дадзеным выпадку, скажам прывітанне свет.
Ну ў C, калі мы паглядзім на толькі што лінія, гэта, як мы
збіраецца пачаць выразе, што пэўная частка галаваломкі:
Е ("прывітанне свет");.
І зараз мы будзем дражніць адзін ад аднаго гэтыя ўсё больш і больш з цягам часу,
але разумею, што ёсць заканамернасць.
Так што, у нас ёсць тое, што называецца Printf, якая з'яўляецца
па сутнасці аналагічны слова сказаць.
Вось што ён збіраецца рабіць.
Printf і F ў дадзеным выпадку азначае "адфарматаваць".
Так што гэта проста азначае, што вы можаце ўставіць
розныя эстэтычныя дэталі.
Такім чынам, канец цытаты цытаты гэта пачатак таго, што мы збіраемся
пачаць называць радок.
Словы, фразы, прапановы.
Радок у мове праграмавання, уяўляе сабой паслядоўнасць з нуля
або больш знакаў.
Такім чынам, ч-е-л-л-о, коска, і гэтак далей у тым,
канец цытаты цытаты, радка.
А цяпер зваротны слеш п, трохі сінтаксічна дзіўна, але мы
ўжо вызначана, што на мінулым тыдні ў тым сэнсе, ці што?
Гэта проста новая радок.
Гэта проста спосаб перадачы на ​​кампутар вы хочаце
эквівалент ўдару Enter там, але вы не
хочаце на самай справе ўдарыў Enter і, такім чынам, сапсаваць усе
фарматавання вашага фактычнага праграмы.
Зараз у дужках ўкласці гэтыя радкі, адкрытай і хлопец
Зачыніць хлопец, так і ўнутры, што наша радок.
Таму што гэта таму, што ў C, і іншых праграм
мовы, такія рэчы як Printf прымаць аргументы, або ўзяць
параметраў.
>> Такім чынам, пачаць думаць зараз гэтага фіялетавага блока сказаць, як
функцыі, як метад, як працэдуру.
Вы сапраўды можаце называць гэта, што вы хочаце цяпер, але
гэта свайго роду мініяцюрная праграма, якая робіць толькі адну
Па-першае, у адну лінію, не менш.
Так Printf таксама тое, што мы збіраемся пачаць называць
функцыі, а функцыі зрабіць нешта - у гэтым выпадку
выводзіць адфарматаваную радок на экране -
а таксама функцыі прымаюць аргументы або параметры.
І аргументы або параметры, дзякуй, мы маем на ўвазе
што іх паводзіны можа паўплываць тое, што вы праходзіце ў
ўнутры дужак.
Такім чынам, у дадзеным выпадку, Printf патрэбы быць сказана, што друкаваць, і мы
проста перадаць у, у падвойныя двукоссі тут, радок, што мы
на самой справе хочаце надрукаваць.
І кропка з коскі ў самым канцы гэтай лініі знаходзіцца ўсяго ў
гістарычная непрыемнасць якога ў канцы большасці радкоў кода,
Вы паставіць кропку з коскай, каб зрабіць Super Clear да кампутара
што гэты радок кода сканчаецца тут.
Цяпер гэта добра, таму што, як мы ўбачым, як праграмы атрымаць больш
Комплекс, кропка з коскі будзе зрабіць супер ясна, нас, людзей,
а таксама кампутар, дзе лініі стартавага кода і канец.
Зразумейце, што некаторыя мовы не маюць некаторы
гэтыя ж дэталі.
І на самай справе, у JavaScript, вы не заўсёды трэба нешта
як кропка з коскі.
Але пра гэта наперадзе.
>> Так завесы.
У нас было нешта накшталт гэтага, вельмі інтуітыўна, відавочна, зрабіць
нешта зноў і зноў, і зноў.
Як надзець шкарпэткі, або павітацца, і ў гэтым выпадку.
Ну, пачынаючы з сённяшняга дня ў C, мы маглі б выказаць гэтую драпінам
блакаваць, як час (праўда), Е ("прывітанне свет").
Так заўважыць, што мы пачынаем будаваць літаральна на загадку
кавалак, чым раней.
У нас жа фіялетавы блок, але гэта ўнутры гэтага
дужкі назаўжды блок, і лепшы спосаб для перакладу, што
З заключаецца ў наступным.
Там няма Назаўжды ключавое слова.
Вы не можаце проста ўвесці е-о-т-е-у-е-г у C.
Такім чынам, бліжэйшым аналагам з'яўляецца час.
>> Цяпер, калі (сапраўдная) здаецца трохі дурным, таму што робіць кошт
праўдзіва ніколі не зменіцца?
Меркавана няма.
Гэта як сказаць пакуль адзін, а з, у той час як праўда.
Гэта ўсё тое ж самае, праўда гэта заўсёды бывае.
Такім чынам, гэтая пятля на самай справе выклікаючы якой цыкл?
Толькі бясконцы цыкл, маюць рацыю.
Бясконцы цыкл або, як мы называлі яго на мінулым тыдні,
проста бясконцы цыкл.
Так што часам гэта дрэнна.
Часам гэта памылка, часам вось чаму вы атрымаеце
верціцца шар пляжы або пясочных гадзін або таго падобнае.
Але ў дадзеным выпадку мы свядома, па якой
Прычына, хацелі надрукаваць адно і тое ж зноў
і зноў і зноў.
Ці ў выпадку, як гадзіны, вы хочаце зрабіць
нешта зноў і зноў, і зноў.
Так бясконцы цыкл можа мець сэнс.
І гэта, як у C мы маглі б перавесці Назаўжды код.
>> Так што цяпер гэтая крыху больш канкрэтнымі.
Мы паўтараем 10 разоў наступнае сцвярджэнне.
Такім чынам, у той час як (праўда) не зусім там працаваць, таму што праўда, то
заўсёды дакладна.
Такім чынам, калі мы замест гэтага паглядзець на версію C, цяпер сінтаксіс атрымлівае
яшчэ крыху загадкавы.
Але, шчыра кажучы, як толькі вы пачынаеце бачыць гэта, усё становіцца
даволі добра знаёмыя хутка.
Такім чынам, гэта тое, што называецца цыкл.
Цыкл раскажа кампутар нешта рабіць
зноў і зноў, і зноў, пакуль
гэтыя рэчы з'яўляюцца праўдай.
Цяпер, што мы маем на ўвазе пад гэтым?
Ну, ёсць тры часткі цыклу, і мы збіраемся
вярнуцца да гэтага пытання ў кантэксце актуальных
Прыклады ў дадзены момант.
Так што не хвалюйцеся, калі ён не зусім патануць ва ўсіх адразу.
Але Int я = 0, карацей, кажучы, даць мне
Зменная вось цэлага тыпу, так што дайце мне нумар
завецца я, і ініцыялізаваць яго ў 0.
Гэта значыць, мне, як алгебраічная пераменная х і
ініцыялізаваць яго ў 0.
Але ў дадзеным выпадку мы называем гэта я.
Тады ў сярэдзіне, ён кажа, што я менш за 10.
Гэта кажа кампутара выканаць наступныя рэчы да тых часоў,
як я менш за 10.
І, відавочна, ён пачынае менш, чым 10, таму што
яна пачынаецца з 0.
Тады, нарэшце, вы, магчыма, можа здагадацца, што я + + сродкамі.
Гэта крыху сінтаксіс, які проста азначае, што павялічвае я.
Так што дадайце 1 да я, зноў і зноў і зноў.
>> І так, як мы ўбачым гэтую пятлю, гэты сінтаксіс, хутчэй, які рэалізуе
дакладна тое ж самае, што, шчыра кажучы, у драпін было менавіта так
Значна прасцей выказаць.
Паўтарыце 10, і вы зрабілі.
У C, і ў большасці моў праграмавання, мы павінны быць
трохі больш павучальным для кампутара і на самай справе
паказаць нешта накшталт гэтага.
Але мы вернемся да гэтага і іншым сінтаксісам.
>> Як наконт зменных?
У драпін у нас было нешта накшталт гэтых аранжавых блокаў,
дзе я мог бы аб'явіць зменную.
Давайце ўмоўна называем гэта лічыльнік.
Давайце ініцыялізаваць яго да 0, а затым
Давайце вечна нешта рабіць.
У гэтым выпадку ў драпін Я кажу лічыльніка, так
котка будзе мець маленькі бурбалка прамовы, што гэта гаворыць
лік, якое ў гэтай зменнай.
А то ў нас змена лічыльніка на 1.
Так што ўсё гэта заварочваецца ўнутр замка назаўжды.
Такім чынам, мы ўжо цяпер ёсць будаўнічыя блокі ў З
якая перавесці гэта.
>> Адзін спосаб, якім мы маглі б зрабіць гэта складаецца ў наступным.
Дайце мне цэлы лік, назавем яго лічыльнік.
Ініцыялізаваць яго ў 0
У першай радку.
У той час (праўда), так што я крадзеж гэтай ідэі толькі ад моманту
назад, ісці наперад і рабіць наступнае.
Друк лічыльніка, а затым павялічваць лічыльнік,
зноў, і зноў, і зноў.
Ці, зноў жа, + + проста азначае, дадаць 1 да чаго-небудзь.
Але ёсць новая частка сінтаксісу тут.
Што скакаць, як не сярод нашых папярэдніх прыкладах?
Так, гэта% D.
Такім чынам, вы можаце зрабіць выснову, што, можа быць, гэтага рабіць, шчыра кажучы, заснаваных
аб тым, што да драпін блок робіць.
Але зноў жа ў C, мы проста павінны быць трохі больш канкрэтна
калі справа даходзіць да выказвання сябе.
>> Такім чынам, Е ("% г \ п").
Ну большасць, што мы можам выкінуць, як знаёмыя.
Двукоссі проста азначае, што гэта радок, зваротны слеш п
гэта проста новая радок.
Такім чынам, адзіным новым тут з'яўляецца% г.
І ўсё, што з'яўляецца прататыпам.
% D будзе пазначаць дзесятковы лік.
А% г кампутарных сродкаў, пакласці дзесятковы лік тут.
Ну, які нумар вы хочаце, каб пакласці туды?
Ну, як вы, магчыма, можа зрабіць выснову, пасля коскі мы гаворым,
Лічыльнік, гэтае імя зменнай, што мы абвясцілі або
стварыў пару радкоў вышэй.
Так што гэта толькі шлях C аб падключэнні зменнай у
Радок дынамічна.
Таму што ў адрозненне, калі б я замест гэтага зрабіў нешта накшталт
гэта, Е ("Лічыльнік"), што б гэта
Праграма замест гэтага, па-відаць?
Гэта будзе літаральна друкаваць "лічыльнік".
Які не пра тое, што я хачу.
Мне трэба замяніць у некаторых лікавае значэнне.
Такім чынам, мы бачым, што функцыі, то, як Printf, можа заняць не
толькі аднаго аргументу, як
"Прывітанне свет".
Яны могуць прыняць коскі цытатай канец цытаты, а затым некаторыя зменныя
, Якая дапаможа падлучыць, як мы ўбачым папярэднюю радок
Праз гэтыя запаўняльнікі% знак.
>> Ну што ж лагічныя выразы?
Лагічныя выразы былі гэтыя каштоўнасці, сапраўднае або ілжывае.
Так ці не.
1 або 0.
Уключаны або выключаны.
Такім чынам, у драпіна яны выглядаюць так, і заўважыў, што
ніжні блок тут на самай справе разам
меншага з двух блокаў.
Такім чынам, я як бы перацягнуць тры часткі галаваломкі
разам, каб зрабіць, што больш паззл там, так што я
можа перадаць ідэю, што я хачу х быць менш, чым у і
У быць менш, чым г.
І такім чынам я магу перавесці гэтыя дзве асобных лініі наступным чынам.
Верхні можа быць вельмі трывіяльна перакладзены на C,
толькі з х <у.
Можа быць, з некаторым дужкі для добрай мерай.
І тады ў C, вы не пішаце і для абазначэння
Злучэнне нешта.
Вы замест гэтага напісаць &&.
І, як мы бачым у рэшце рэшт, адзін амперсанда адбываецца з
азначае нешта іншае.
Так && проста пазначае ідэю і.
>> Такім чынам, яшчэ раз, нават калі гэта пачынае выглядаць даволі складаная,
адной з мэтаў ўвядзення Scratch, акрамя
проста маючы свайго роду забава на рампы, дзе вы можаце зрабіць
нешта вельмі графічных і аніміраваных, і
Сумеснае і да т.п., таксама, каб перадаць ідэю, што
ўсе ідэі мы пачынаем апусканне ў сёння і далей
былі ўвасоблены ў нават, што простае
Інтэрфейс з першага дня.
Што пра гэта тут?
>> Так умовах.
Так драпін блок злева там выглядае
крыху больш складана.
Але гэта толькі некаторыя захапленні і
паніжэнне знаёмыя рэчы.
Калі х менш, чым у, скажам так.
Інакш, калі х больш у, так бы мовіць.
У адваротным выпадку, мы можам лагічна выказаць здагадку, што гэта зрабіў выснову, што
яны павінны быць роўныя.
Так што сказаць, што яны роўныя.
Зараз у C справа, сапраўды такі ж рэччу.
І заўважыў, што фігурныя дужкі будзе
Асаблівасцю C і іншых мовах, што рабіць такога роду
інкапсуляцыі.
Гэтак жа, як калі блок гэта жоўтая рэч, якая быццам
захоп фіялетавы блок ўнутры яго.
Сапраўды гэтак жа гэтыя дужкі -
гэтыя фігурныя дужкі -
павінна выклікаць ва ўяўленні, што ж ідэя ахоплівае адзін або некалькі
радкоў кода, з водступам ўнутры іх.
Такім чынам, на правай баку тут, калі х менш, чым у, Printf
("X менш, чым у").
Інакш, калі х больш у, раздрукаваць тое ж самае.
Астатняе друку, што яны роўныя.
>> Карацей кажучы, ёсць даволі прамое адлюстраванне або пераклад
мовы, які мы бачылі да гэтага часу, у тым ліку для некаторых
з больш складаных функцый.
Такім чынам, вы не маглі б выкарыстоўваць гэта для вашага праекту, ці, магчыма, не
выкарыстаць гэта для свайго праекта на гэтым тыдні.
Але мы гэтыя рэчы называюцца масівы C. У Scratch,
яны называюцца спісамі.
І мы ўбачылі іх з Fruitcraft RPG на мінулым тыдні.
Маленькі сіні хлопец, які хадзіў, падымаючы
вішні і апельсіна і таму падобнае.
Ну ў Scratch, які быў рэалізаваны з гэтым аранжавым
блок, які змяшчае словы, у дадзеным выпадку, мы літаральна
дадаўшы, што «аранжавыя», каб
зменная інвентара.
Такім чынам, у C, гэты сінтаксіс будзе атрымаць крыху больш загадкавымі.
І мы вернемся да гэтага на наступным тыдні і больш
цікавае ў свеце крыптаграфіі з ім.
Але на дне тут, гэтыя дзве лініі, у асноўным
перакладаць на тое, што мы робім у адной драпіны блакаваць там.
Але пра гэта наперадзе.
>> Такім чынам, паставіўшы яго разам, вось гэта праграма, у С. Так што давайце
хутка дражняць адзін ад аднаго некаторымі з частак сінтаксісу тут, але
тады давайце на самай справе пачаць пісаць код, азнаёміцца
Вы з некаторымі з інструментаў, якія мы будзем выкарыстоўваць, і паглядзець, калі мы
можа абапірацца на цяперашні час некаторыя з гэтых асноўных будаўнічых блокаў з
На мінулым тыдні, зараз сінтаксічна ў С. Так, у верхняй тут, гэта
з'яўляецца, бадай, адным з самых сумных праграм, якія вы маглі б
напісаць у большасці любой мове праграмавання.
Але гэта свайго роду мае асаблівае значэнне, таму што гэта
кананічных праграмы, што любы навуковец піша, калі
навучанне кагосьці мова праграмавання -
Прывітанне праграме свеце.
>> Такім чынам, на самым версе, мы бачым, гэта паняцце ўключае #
, А затым у вуглавыя дужкі, stdio.h.
Мы збіраемся вярнуцца да гэтага, але на самой справе, што гэта
азначае, што ёсць файл у гэтым свеце называецца стандартным
I / O, STDIO кропка ч, і гэта проста тэкставы файл,
хтосьці напісаў гадоў таму.
І ўнутры гэтага тэкставага файла цэлы букет
функцый або метадаў або працэдур, што хтосьці іншы
пісаў, што мы з'яўляемся бенефіцыярамі, таму што мы
Зараз можна выкарыстоўваць код гэтага чалавека.
Функцыі ён або яна пісала.
У гэтым выпадку, Printf не тое, што я напісаў, гэта
не тое, што CS50 напісаў.
Гэта тое, што нехта напісаў гадоў назад і паставіць у
файл stdio.h, а затым, як у бок, паклаў
іншая частка функцыі ў іншым файле.
Але мы туды дабрацца.
>> Такім чынам, # ўключыць толькі наш спосаб сказаць, у
C, даць мне доступ да функцый, што нехта напісаў.
І ў гэтым выпадку мяне хвалюе, таму што я хачу Printf.
Цяпер мы атрымліваем Int асноўных (несапраўднымі).
Так што гэта адна з гэтых рэчаў, шчыра кажучы, што ў дзень 0,
вельмі многа ў мяне ў выглядзе зону таму, што гэта проста
не цікава
інтэлектуальна, некаторыя з сінтаксісу.
Але цяпер ведаю, што функцыі, інакш вядомы як
працэдур або метадаў, як правіла, вырабляюць некаторую каштоўнасць.
Яны нешта рабіць.
Яны прыходзяць з адказам.
Яны вырабляюць прадукцыі.
Так Int побач з галоўным з'яўляецца толькі наша скарочаны спосаб казаць
што гэтая функцыя гэтая працэдура, у канчатковым рахунку, адбываецца
вярнуць вам нумар.
І чаму гэта так, мы будзем вяртацца.
Галоўнае толькі стандартныя па змаўчанні свету па змаўчанні
функцыя, якая збіраецца атрымаць выкананы ў праграме C, калі
вы запусціце яго.
Пустэча проста азначае, што гэтая рэч, галоўнае, не прымае
Аргументы ў гэтым выпадку.
Так што я вяду сябе супер відавочным.
Там няма радкоў там, няма косак.
Пустэча азначае адсутнасць аргументаў да асноўнага.
>> Цяпер, нарэшце, на шчасце, апошнія два радкі знаёмыя.
Усярэдзіне фігурных дужках у нас ёсць Printf
і ў нас ёсць адказ.
І вяртанне гэта свайго роду шкада, што мы павінны
паклаў яго туды, таму што ў дадзеным выпадку гэта не робіць усё, што
шмат цікавага.
Але ў камп'ютэрнай праграме, калі функцыя вяртае 0,
гэта азначае, што ўсё добра.
Нічога пайшло не так.
З іншага боку, калі функцыя вяртае 1, ці адмоўны 1, або
адмоўныя 1337, ці некаторых выпадковых лікаў такое, што
як правіла, азначае, што памылка на самай справе адбылося.
Так што калі вы знаходзіцеся на сваім Mac або ПК, калі вы калі-небудзь бачылі
некаторыя раздражняльныя паведамленні, так як кампутар выйшаў з ладу або
замарожаныя, і ёсць загадкавае паведамленне пра памылку,
, А затым код, як код сістэмы
1,2,3,4, некаторы лік,
, Што ў цэлым з'яўляецца непатрэбным падрабязна расказаць
Большасць з нас людзей, але гэта тое, што некаторыя функцыі ці некаторыя
Праграма на самай справе вярнуўся, выдатнае ад нуля значэнне.
І на карысць гэтага з'яўляецца тое, што 0 азначае, што ўсё так і
то вы, па сутнасці ёсць бясконцая колькасць рэчаў, якія
можа пайсці не так.
Менавіта таму яны выбралі 0 для добрай і ненулявое значэнне для
дрэнна, як мы хутка пабачым.
>> Так што давайце ісці наперад і напісаць гэта.
Так Нагадаем, што на днях я выкарыстаў свой Mac, каб адкрыць
акно тэрмінала, а затым я адкрыў тэксце праграмы, як
TextEdit, і я пачаў пісаць код.
Ну гэта нармальна.
Але ваш вопыт будзе па-іншаму на Mac, або
на кампутары Solaris, Linux кампутар, незалежна ад аперацыйнай
Сістэма вам здарыцца быць выкарыстанне.
І так у курсе, што мы замест таго, каб выкарыстаць тое,
называецца CS50 Appliance.
Так CS50 Appliance ўяўляе сабой загружанае частку праграмнага забеспячэння
, Што дазваляе запускаць аперацыйную сістэму пад назвай Linux,
у прыватнасці Fedora Linux, на свой уласны Mac ці PC.
І вы зрабіць гэта, загрузіўшы тое, што называецца гіпервізара.
Так што ўсё гэта будзе апісана ў праблеме набор 1.
І вы будзеце кіравацца да таго, што вам неабходна спампаваць.
Але канчатковы вынік, ці ёсць у вас Mac ці PC, гэта вы
загрузкі бясплатнага праграмнага забеспячэння.
Затым запампаваць CS50 Appliance, і вы кажаце, што
бясплатная праграма - гіпервізара -
Для запуску CS50 Appliance ў акно на вашым кампутары.
І тое, што гэта адбываецца.
>> Я зараз, заўважце, тут, здаецца, што будзе працоўны стол
навакольнага асяроддзя.
І дазвольце мне на самай справе паменшыць гэтую адным акне.
Так што гэта цяпер мой Mac, з невялікім акном тут, так і ўнутры
гэтага акна, здараецца, зусім
іншай аперацыйнай сістэмы.
Сапраўды ёсць гэта стартавае меню тут, унізе, які нагадвае
Windows, якая мае цэлую кучу падменю, у тым ліку
Спасылка на CS50 кіраўніцтва, Dropbox, і таму падобнае.
І тое, што гэта асяроддзе ў цяперашні час з'яўляецца стандартнай асяроддзем
што ўсе мы цяпер могуць выкарыстоўваць, так што незалежна ад таго, што ваш
кампутар, тое, што вы ўсталявалі на ёй, якая версія
з Mac OS або Windows, вы працуеце, усе мы цяпер маем
той жа асяроддзі.
І вось цяпер у гэтую сераду мы можам пачаць пісаць код.
>> Так што я збіраюся ісці наперад і адкрыць праграму пад назвай Gedit.
Гэта супастаўна з notepad.exe, або
TextEdit на Mac.
І гэта проста супер простая праграма рэдагавання тэксту
, Які выглядае наступным на першы погляд.
Зараз на самым версе, у мяне ёсць белая палітра, унізе я
ёсць гэта чорнае акно, якое кажа jharvard @ прыбор.
І гэта таму, што ўліковы запіс карыстальніка, што мы папярэдне стварылі
для ўсіх называюць Джона Гарварда.
У яго ёсць папка, у якой усе яго файлы збіраюцца пайсці, і
Вось, дзе мы можам пачаць пісаць код.
Такім чынам, дазвольце мне ісці наперад тут і павелічэння трохі, і я
збіраюся рабіць # ўключыць , Int асноўных (несапраўднымі), а
Затым я збіраюся зрабіць Е ("прывітанне свет")
, Вяртаецца 0.
Зараз гэта ўсё вельмі чорны і белы.
>> Дазвольце мне ісці наперад і рабіць адну справу вучыць Gedit, што я
на самай справе робіць.
Дазвольце мне перайсці да Save As.
Я збіраюся абраць у левай частцы тут jharvard.
Такім чынам, яшчэ раз, нават калі вы ніколі не выкарыстоўвалі Linux, перш чым, шчыра кажучы
у гэтыя дні, усе яны ўскладаюцца ў асноўным
жа тып інтэрфейсу -
Mac OS, Windows і Linux.
Таму я выбраў хатнюю тэчку jharvard тут.
І я хачу захаваць гэты файл як hello.c.
Такім чынам, на самым версе, я набраў hello.c, назваўшы C
праграмы з пашырэннем. з-
што звычайная практыка.
І я ўдарыў Захаваць.
І што цяпер прыемна, што я эфектыўна вучыць Gedit,
што гэта праграма C.
Звярніце ўвагу, што мой чорна-белы тэкст цяпер каляровую кадыроўку, або
падсвятлення сінтаксісу, які толькі прыцягвае маю ўвагу да
розных сэнсавых частак праграмы.
У левым верхнім куце там, як мае праграмы становяцца ўсё больш складанымі, я
будзе мець спіс усіх рэчаў, якія я напісаў.
Дык вось яно што там.
Такім чынам, дазвольце мне цяпер маштаб і спусціцца да гэтага акне тэрмінала.
>> Так што гэта, магчыма, новых для многіх людзей.
Калі вы ніколі не выкарыстоўвалі асяроддзе каманднага радка, вы ніколі не
выкарыстоўваць DOS, ці вы ніколі не выкарыстоўвалі Linux, ці вы ніколі не адкрылі
вашага Mac OS акно тэрмінала, ёсць шмат рэчаў, якія вы
мог зрабіць з GUI, напрыклад, паказваючы, а націснуўшы і
перацягвання і падзенне, і да таго падобнае, але ў цэлым -
вядома, у міры кампутарных навук -
з дапамогай каманднага радка, дзе ў вас няма мышы
Як правіла, у вас ёсць толькі клавіятуру, на самай справе шмат
больш магутны, чым інтэрфейс, як толькі вы прыстасаваліся да
розныя каманды.
А вы як бы вызваліць сябе ад неабходнасці кропку і націсніце
на ўсё.
Такім чынам, у Gedit мы будзем сартаваць мець лепшае з абодвух светаў.
Мы можам перацягваць тэкст, мы бачым, што
добры і колерам.
Але калі прыходзіць час, каб запусціць нашу праграму, мы будзем часам
проста выкарыстоўваць гэта невялікае акно тут.
>> Так што я збіраюся ісці наперад і зрабіць гэта.
У ніжняй чорна-белыя вокны, я пайду наперадзе
і пісаць ляск.
І ляск гэтае імя кампілятара.
Гэта праграма, якая пераўтворыць мой зыходны код
у, такім чынам, аб'ектны код.
0 і 1, якія мы бачылі коратка на мінулым тыдні.
Нагадаем, з мінулага тыдня, мы абяцалі, што мы збіраемся
перайсці ад нешта накшталт гэтага - мы павінны былі быць
нешта накшталт гэтага -
і гэта, вядома, не тое, што чалавек збіраецца
рабіць уручную.
Так замест гэтага мы збіраемся выкарыстаць праграму, і праграма ў
гэтым выпадку называецца Clang.
І імя маё праграму hello.c.
Такім чынам, у мэтах складання hello.c з зыходнага кода ў
аб'ектны код, або 0 і 1, гэтага павінна хапіць, каб проста рабіць
гэта і націсніце Enter.
>> Добра, нічога, здаецца, не адбылося.
Але цяпер я ведаю, ці з мінулага тыдня, што яго імя па змаўчанні
Праграма, калі напісана на C, гэта глупства называць a.out.
Самае нецікавае назва можна прыдумаць.
Першая літара алфавіту, з тое, што было
выводзіцца, але хай будзе так.
Гэта мая праграма, і цяпер кропка слэш, як мы ўбачым, з'яўляецца
на самай справе проста свайго роду функцыя бяспекі, таму што
a.out гэта праграма, якую я напісаў.
Ён не прыйшоў з майго кампутара, гэта
не ў Program Files.
Гэта не ў тэчцы Прыкладанні Mac АС.
Мне трэба быць супер відавочны з кампутарам, і казаць
гэтая праграма, a.out, знаходзіцца ў бягучай тэчцы,
бягучага каталога.
І тое, як вы ўяўляеце гэта ў сераду, як гэта
з'яўляецца пункт уяўляе іншай тэчцы, вы ў дадзены момант знаходзіцеся
І так. / Проста азначае запусціць a.out
у бягучай тэчцы.
І я выканаць гэта з дапамогай Enter, і вось, мая самая першая праграма.
>> Цяпер дазвольце мне зрабіць крок назад.
Гэта акно трохі малы, і разумеюць, што дно
злева ад прыбора вось яшчэ адзін значок.
Адным з іх з'яўляецца Chrome, якія павінны быць добра знаёмыя, толькі вэб-
браўзэры ўнутр прыбора.
І гэта чорна-белы значок проста
вялікія вокны тэрмінала.
Так што, калі гэта становіцца трохі раздражняе накшталт толькі што
гэта маленькі кавалачак акна, з якім ўзаемадзейнічае
з праграмамі, мы можам замест гэтага.
А цяпер дазвольце мне пачаць друкаваць некалькі хутка
быць знаёмым камандам.
левы бок
Так Ls гэта каманда для ўключэння ў пералік.
Такім чынам, у Mac OS або Windows, вы, як правіла, двойчы пстрыкніце
тэчку, а затым, вуаля, вы ўбачыце ўсё розныя файлы
і тэчак.
У асяроддзі каманднага радка, дзе вы можаце ўвесці толькі
каманд або тэксту, LS з'яўляецца эквівалентам.
Так пакажыце мне, што ў гэтым каталогу.
>> Зараз ёсць куча рэчаў тут, гэта і трохі
знаёмыя і незнаёмыя няшмат.
Але звярніце ўвагу, што як і Windows, і Mac OS, jharvard
мае працоўным стале тэчку.
Такім чынам, любыя значкі, якія знаходзяцца на маім працоўным стале здарыцца
быць у гэтай тэчцы.
Там у тэчцы загрузкі, рэчы, якія
Chrome можа паставіць там.
Dropbox.
Такім чынам, прыбор пастаўляецца з убудаванай падтрымкай для Dropbox
так што на працягу семестра, вы можаце сінхранізаваць з вашым Dropbox
кошт, так што ўсе вашы праграмы рэзервовага капіявання.
Яны даступныя на іншым кампутары.
Калі штосьці пойдзе не так, заўсёды з прыборам, вы можаце
Вельмі лёгка аднавіць з Dropbox.
Так што папка там для гэтага.
Там два файла, якія я зрабіў - hello.c
і a.out.
І потым направа ёсць некаторыя іншыя папкі, якія мы будзем
дабрацца да ў канцы семестра, з вэб-
праграмавання.
Так што, калі я раблю. / A.out, увядзіце, гэта кажа ісці
У каталогу я знаходжуся, бягучы каталог, і запусціце
праграма пад назвай a.out прама там.
>> Добра, так што гэта прыемна і добра, але гэта не ўсё, што
пераканаўчымі, каб напісаць праграму пад назвай дапамагчы a.out.
Так што мы сапраўды можам зрабіць гэта крыху па-іншаму.
Такім чынам, замест таго, каб проста працуе ляск, hello.c, давайце дадамо
тое, што называецца аргументам каманднага радка.
Такім чынам, аргументы каманднага радка, або выключальнік у дадзеным выпадку, гэта проста
іншага слова або фразы, якія вы ўводзіце ў радку пасля
праграмы, якую вы хочаце запусціць.
Такім чынам, у дадзеным выпадку, ляск гэта праграма, я хачу бегчы,-O
сродкі выхаду файле, які больш не называюць a.out.
Выхадны файл з імем прывітанне, і зрабіць гэта шляхам складання
Апошняе слова на лініі, hello.c.
Карацей кажучы, гэта вельмі нязначнае паляпшэнне, у выніку чаго
замест таго, каб гэта тупа імя файла a.out,
Зараз я магу рабіць ляск-O Прывітанне, то hello.c, і
затым націсніце Enter.
Здаецца, нішто не здарыцца, але зноў жа хацелася з 0 - калі
нішто, здаецца, здарылася гэта азначае, што нічога дрэннага здарылася -
Так давайце зробім Ls зараз, увядзіце, ды і цяпер я
ёсць прывітанне праграме.
Так што, калі я тыпу прывітанне зараз, каманда не знойдзена.
OK,. /.
Так дакладна.
Так што, таму што гэта праграма, якую я напісаў, і ён не прыйшоў з
кампутар,. / прывітанне, Enter, значыць,
Зараз я займаюся прывітанне.
>> Дык вось яно што там.
Цяпер тое, што мы ў канчатковым выніку атрымаць усё больш і больш каманднага радка
Аргументы, якія дазваляюць нам зрабіць больш, але толькі для тых,
якім гэта можа быць старая капялюш, дазвольце мне на самой справе ідуць у
каталог тут і проста даць вам тізер, як яшчэ мы
можа ісці аб рэалізацыі прывітанне свет.
Адпусціце мяне ў тут, і я збіраюся адкрыць яго.
Такім чынам, на самай справе, я збіраюся растлумачыць, што я раблю, так
гэта карысна.
Дазвольце мне, назад.
>> Так што я займаюся гэтым даўно.
Так заўважыць больш на права ёсць пара
каталогі, якія дзіўным імем source1m і source1w.
Гэта проста недарэчна канвенцыі мы выкарыстоўваем.
Крыніца проста азначае, што зыходным кодам, 1 азначае, што гэта тыдзень адзін, і
м азначае, што гэта панядзелак, і ш азначае, што ён у сераду.
Так што нічога загадкавага няма.
Гэта проста скарочанае пазначэнне.
Гэтыя сінія рэчы тэчкі, інакш вядомы як
каталогах.
Я хачу пайсці ў гэтую тэчку зараз, а на звычайным кампутары
Я мог бы проста двойчы пстрыкніце на значку тэчкі і
там усе мае файлы.
Але ў асяроддзі каманднага радка, я зусім не магу зрабіць
што, такім чынам, замест гэтага, я павінен змяніць каталогі ўручную.
Так што калі я Тып CD, а затым source1m, Enter, заўважылі, што
мае радкі, справа ў белым злева, проста змянілася.
І сапраўды, калі яна толькі што сказала дужках, а затым
маленькая кручок, сімвал тыльды, што проста азначала, што я быў
У хатняй дырэкторыі Джон Гарвард, яго My Documents,
яго асабістыя файлы.
Але зараз у дужках гэта кажа ~ / source1m.
Гэта проста азначае, што я знаходжуся ў тэчку пад назвай source1m
, Які ў хатнім каталогу Джона Гарварда.
Так што, калі цяпер я хачу пералічыць файлы ў гэтую тэчку, лёгка
пытанне, я проста ўвесці Ls.
І цяпер я бачу ўсе файлы, якія я папярэдне створаны для сучасных
лекцыя, кожны з якіх, ці большасць з якіх, адбудзецца
заканчвацца на. с.
>> Такім чынам, дазвольце мне цяпер ісці наперад і выканаць Gedit праграмы пад назвай
holloway.c, які напісаў некалькі выпадковых хакераў
у Інтэрнэце, што выглядае крыху як гэта.
І мы не збіраемся прайсці праз гэта адзін у любым
падрабязна, але для тых, хто больш зручным, у прыватнасці, калі
Вы хочаце зрабіць здагадку аб тым, што гэтая праграма робіць тут.
Будзьце ўпэўненыя, ці з'яўляецеся вы больш ці менш зручныя,
мы нават не патрапіць на такога роду рэчы да канца
у гэтым семестры.
Гэта тое, што прыклад конкурсе зацямненне C, які
сродкі напісаць самае загадкавае шукае праграму вы, магчыма,
можа перасягнуць іншыя разумныя людзі, якія гэтак жа
спрабую пісаць рэчы і паказаць, што яны могуць напісаць
больш загадкавыя рэчы, чым вы.
Так што гэта не прыклад добра напісаныя праграмы з
пункту гледжання стылю, гэта прыклад праграмы, якая
выйграе конкурс, для людзей, якія спрабуюць
быць расплывістым і абстрактным.
>> Такім чынам, калі мы запусцім гэтую рэч, адпусьці мяне ў маім акне тэрмінала,
так бы мовіць.
Дык вось гэты чорны і белы асяроддзі завецца
вокны тэрмінала ў цэлым.
Дазвольце мне ісці наперад і скампіляваць яго.
Я не збіраюся выкарыстоўваць ляск, таму што гэтая праграма з'яўляецца
трохі загадкава і мае патрэбу ў розных
кампілятара, адна называецца GCC.
Але ён робіць тое ж самае.
Ён прымае зыходны код аб'ектны код.
І зараз, калі я бягу a.out, што праграмы, якую вы
толькі што бачыў гэта робіць.
Так што хлопец у гэтым годзе выйграў конкурс.
Ва ўсякім выпадку, мы не будзем у гэтым кірунку, як такой.
>> Так што давайце на самой справе спрабуюць цяпер дражняць адзін ад аднаго, што можна зрабіць
з гэтымі асноўнымі будаўнічымі блокамі, каб усё больш і больш
цікавыя праграмы.
Такім чынам, мы напісалі праграму, мы запускаем праграму.
Цяпер мы сапраўды можам спрасціць і больш не пісаць
Слова звон у камандным радку.
Аказваецца, як нашы праграмы атрымліваюць больш загадкавым, мы можам, або
больш складаная, хутчэй, мы сапраўды можам выканаць гэтую каманду.
Такім чынам, дазвольце мне вярнуцца да маёй хатняй дырэкторыі, так бы мовіць, дазвольце мне
выдаліць - ГТ выдаліць каманду - я збіраюся выдаліць
файл з імем a.out і прывітанне.
А цяпер заўважаю ў асяроддзі каманднага радка, гэтак жа, як у
GUI, вы атрымаеце запыт. Я не магу націснуць кнопку, хоць, я
павінны ўвесці ў, для Так, у для так.
І зараз, калі я друкую Ls зноў, звярніце ўвагу, што гэтыя зялёныя
Праграмы - a.out і прывітанне -
сышлі ў мінулае.
Сцеражыцеся ГТ.
Ён можа рабіць дрэнныя рэчы, як вы можаце шляхам перацягвання
Заняткі на ваш смецце.
>> А цяпер давайце ісці наперад - і я магу гэта зрабіць - звон-о
прывітанне, прывітанне -
Я ўжо надакучыла ўводу гэтай каманды.
Хоць я набраў яго крыху хутчэй.
Так што мы можам замест гэтага зрабіць прывітанне.
Так што не кампілятар.
Гэта проста зручная праграма, якая пастаўляецца з Linux, у гэтай
выпадку - аперацыйная сістэма -
, Якая аўтаматызуе працэс кампіляцыі праграмы.
Такім чынам, замест запамінання звон-O імя файла і
Затым гэтак далей, асабліва калі гэтыя лініі становяцца больш доўгімі і
больш, я магу проста напісаць зрабіць.
І гэта будзе выплюнуць цэлую кучу рэчаў, якія
мы ў канчатковым рахунку бачыць у гэтым семестры.
Але звярніце ўвагу, цяпер, калі я тыпу LS, прывітанне вярнуўся ў мой каталог.
І сапраўды, я магу запусціць яго. / Прывітанне.
Так што проста аўтаматызуе працэс працы, што было,
У гэтым выпадку, значна даўжэй, больш складаныя каманды.
Так што мы збіраемся пачаць выкарыстоўваць марку, толькі таму, што шмат
больш зручнай для карыстальнікаў.
>> А цяпер давайце зробім больш цікавыя праграмы
чым проста павітацца.
Такім чынам, у праграме мы напісалі да гэтага часу ёсьць асноўныя.
У тым-та і справа, што па змаўчанні нагамі ўсё прэч.
Але ёсць і іншыя функцыі, як там добра, і
stdio.h гэта тое, што мы бачылі ў верхняй часткі нашага
Размовы раней, і гэта тое, што вядома як стандартнай бібліятэкі.
Усярэдзіне стандартнай бібліятэцы цэлая куча функцый
што нехта напісаў, і мы можам пачаць выкарыстоўваць гэтыя
Функцыі пісаць больш
цікавыя праграмы самі.
>> Такім чынам, дазвольце мне вярнуцца да прыбора.
Я збіраюся зачыніць гэта акно тэрмінала.
Я збіраюся зачыніць рэчаў, якія мы пісалі раней, і проста пайсці
у hello.c, і звярніце ўвагу, што зараз я магу зрабіць наступнае.
Прывітанне свет яшчэ не ўсё, што цікава, я хацеў бы
персаналізаванай гэтую праграму для сябе.
Такім чынам, замест таго, каб сказаць свету, я збіраюся
ісці наперад і сказаць -
Я мог бы ўвесці David - але гэта сапраўды з'яўляецца свайго роду
Прынцыпова тое ж самае.
Але давайце паспрабуем гэтую ідэю запаўняльніка.
Нагадаем, што ў C, а ў Printf, у нас былі гэтыя
запаўняльнікаў, і ёсць больш, чым проста% г.
Такім% D быў, хуткую праверку наяўнасці свядомасці.
Добра, дзесятковы лік, вось і ўсё.
Дзесятковых лічбаў, вось і ўсё.
Такім% з, як мы сутыкнемся, будзе характар.
Пакладзеце характар ​​літары тут праз г,
або знакі прыпынку знак.
Адзін знак,% F, хто-небудзь ведае з іншых моў?
Такім чынам, значэнне з якая плавае кропкай.
Рэчыўны лік.
Так што не дзесятковы лік - гэта на самай справе рэальная колькасць з
дзесятковай кропкі, і некаторай колькасці лічбаў злева
і справа ад яго.
% З, радок.
Гэта той, які мы збіраемся бачыць даволі часта.
Радок, зноў жа, гэта проста слова, фраза, паслядоўнасць
асобных знакаў.
І, нарэшце, доктар юрыдычных навук?
Так што гэта больш кута выпадку.
Доўга, доўга пасля коскі.
Так што калі вы хочаце не проста лік, якое гэтая вялікая, вы
хочуць большай колькасці, вы будзеце мець, каб паказаць
кампутар, што гэта пэўнага памеру.
>> Так што давайце змяніць гэты няшмат.
Замест таго, каб проста цяжка кода Дэвід, дазвольце мне трохі
дынамічна% кажуць с.
Так што стаўце% з тут, які з'яўляецца прататыпам для радка.
Тады дазвольце мне зрабіць коскі, а затым "Давід" тут.
Зараз гэта не ўсё, што інтэлектуальна цікавым,
таму што ўсё, што я зрабіў цяпер сапраўды стварае больш працы для
кампутар.
Замест таго, каб сказаць кампутара, рабіць гэта ўсё адразу, я зараз
кажу гэта зрабіць і ўставіць радок тут у канчатковым рахунку, коска,
тут з'яўляецца тое, што радок.
Так што гэта не лепшае паляпшэнне, але гэта па меншай меры
крок да больш цікавую праграму.
Таму што цяпер, дазвольце мне ісці наперад і зрабіць гэта акно трохі
больш, дазвольце мне ісці наперад і бегчы рабіць прывітанне.
І цяпер,. / A.out не працуе, чаму?
Добра, цяпер гэта называецца прывітанне.
Такім чынам, яшчэ раз зрабіць, а таксама з ляскам-о, пераназваны
Праграма будзе нешта больш цікавае.
І вуаля: зараз ён кажа прывітанне Давіду.
>> Добра, яшчэ дурная праграма.
А цяпер давайце на самай справе вярнуцца сюды і ўвесці паняцце
зменнай.
Хіба не было б выдатна, калі б я мог абвясціць зменную
, Тып якога з'яўляецца радок?
І значэнне зменнай на самай справе адбываецца ад карыстальнікаў
самога сябе.
Такім чынам, адвольна, я збіраюся патэлефанаваць маёй зменнай с, што
толькі агульная пагадненне, калі ў вас ёсць адна пераменная
радком.
Я збіраюся зрабіць знак роўнасці, і тады я буду называць
Функцыя называецца GetString.
Так GetString не тое, што ўбудаваны ў C. Гэта
функцыя, якая CS50 супрацоўнікі напісалі, сапраўды толькі для
гэтыя першыя пару тыдняў, каб спрасціць працэс
атрымання карыстацкага ўводу і атрымання карыстацкага ўводу ў форме
радкоў або лікаў, і такія.
Так GetString, як Printf, але, відавочна, замест таго,
раздрукаваць гэта будзе рабіць тое, што кажа яго назву, атрымаць радок.
Але выкарыстоўваць GetString, мы збіраемся, каб унесці змены
Тут, за гэтым.
Такім чынам, інтуітыўна, гэтая праграма, мы спадзяемся, будзе так ці інакш
атрымаць радок ад карыстальніка, а затым тое, што ён збіраецца рабіць
з гэтага радка, называецца S?
Гэта проста будзе раздрукаваць яго, праўда?
Яшчэ не стымулюючыя праграмы, таму што ўсё гэта будзе
трэба зрабіць, гэта падключыць гэта значэнне ў%, дзе з
кажа, што трэба ісці.
>> Такім чынам, давайце па крайняй меры, пабачыць гэта ў дзеянні.
Дазвольце мне захаваць і маштабу.
Зараз у маім акне тэрмінала тут, унізе, маленькі кавалачак аднаго,
Дазвольце мне яшчэ раз робяць прывітанне.
Добра, і ах, чорт вазьмі, я атрымаў цэлую кучу памылак.
Дазвольце мне прагортку ўверх, і мы бачым наш першы -
так што давайце на самай справе зрабіць гэта ў яшчэ вялікія вокны, каб вы
можна ўбачыць, як моцна я аблажаўся -
так што прывітанне.
Добра, што гэта катастрофа, ці не так?
Я напісаў тры радкі кода, і
гэта дае мне 12 памылак.
Дык чаму ж гэта?
Так што, на шчасце, часта, калі вы бачыце вельмі шмат памылак
выплёўваючы адразу, гэта сапраўды проста таму, што вы
блытаць кампутар тут.
І застаецца блытаюць да таго часу ён атрымлівае тут.
І таму ён проста пачынае адключэння, і спатыкаючыся, і
выплёўваючы больш страшныя рэчы, чым на самай справе ставіцца.
Такім чынам, у агульным, заўсёды пачынайце з верхняй.
>> Так на самым версе самы асобнік чырвонага,
Паведамленне пра памылку заключаецца ў наступным.
Выкарыстанне неаб'яўленых ідэнтыфікатара радкі, я
азначае стандарт?
Я гэтага не зрабіў.
Я меў на ўвазе радкі, але гэта таму, што таксама слова радкі
што я працягваць выкарыстоўваць вусна на самай справе
не існуе ў C небудзь.
Гэта тое, што мы будзем выкарыстоўваць толькі на працягу першага тыдня або двух
тут, але яно існуе ў файле пад назвай cs50.h.
Такім чынам, на дадзены момант, ведаю, што ёсць гэтая іншая бібліятэка, якая
Супрацоўнікі пісаў, так што ён быў напісаны пазней, чым
stdio.h.
Але ўнутры cs50.h з'яўляецца вызначэнне, сінонім
роду, які стварае гэтае слова радка.
>> Так што цяпер дазвольце мне вярнуцца да маёй акне тэрмінала.
Я збіраюся ачысціць ўвесь гэты бардак па Ctrl-L. Мы проста
сцерці ўсе чыстае, і я збіраюся пайсці далей і зрабіць
Добры дзень яшчэ раз, Enter.
Так што ж адбылося цяпер?
Зараз усе гэтыя памылкі сышлі.
Так што я сапраўды зрабіў?
Я толькі што навучыў кампутар, радок існуе, і гэта
у тым, што файл з імем cs50.h.
Так што перастаньце скардзіцца, таму што цяпер вы ведаеце, дзе знайсці
заяву, што функцыі, так бы мовіць.
Дзе яна існуе ў свеце.
>> Так што цяпер я буду ісці наперад і працаваць прывітанне.
Я, здаецца, бясконцы цыкл, нічога не адбываецца.
Так што мне трэба нешта тыпу тут, прама.
Першы радок кода ў маёй праграме было GetString.
Так што літаральна чакае мяне, каб атрымаць радок.
Так што ў гэтым сэнсе так, гэта бясконцы цыкл.
Мабыць, у GetString па змаўчанні паводзіны, якое мы
напісаў - персанал -
проста кажа, што чакаць і чакаць і чакаць і чакаць і чакаць,
пакуль карыстач не дае вам радок, набраўшы нешта цалі
Такім чынам, дазвольце мне ісці наперад і тыпу D - V - I-й, Enter.
І вось ён, прывітанне Давіду.
>> Цяпер гэта здаецца, што гэта проста акт?
Дазвольце мне пайсці далей і ўвесці Томі.
Калі ласка, увядзіце, добра, здаецца, працуе.
Работы для Роба, працы па Zamyla, працуе - добра.
Так што гэта будзе працаваць, хутчэй за ўсё.
Так яно і павінна надрукаваць усё, што мы на самай справе даць,
і мы можам быць трохі цяжка тут.
Давайце паглядзім, калі мы робім нешта накшталт прывітанне.
Ці можаце ісці сюды, давайце паглядзім, капіяваць, ўстаўляць.
Я не збіраюся быць у стане ўставіць, што шмат разоў тут.
Уставіць у парадку, Shift + Ctrl + V. Так што ж можа
здарыцца, што гэта дрэнна?
>> Добра, такім чынам, сегментацыі.
Такім чынам, некаторыя з вас з папярэдняга фон будзе ведаць, што
як правіла, даючы кампутараў шмат уваходаў, калі яны
верагодна, не азначала, каб атрымаць доўгія імёны, як гэта - дрэнна
рэчы.
Сапраўды, у свеце вэб-таксама, гэта адбудзецца зусім крыху,
якому пры праектаванні вэб-сайта, калі вы
Праектаванне Facebook, вы павінны зрабіць адвольныя рашэнні да
перадпакоі, напрыклад, як доўга будзе чыйсьці
Facebook імя карыстальніка можа быць?
Ці, як доўга будзе спачатку чыёсьці імя можа быць?
Як доўга будзе нумар тэлефона кагосьці быць і таму падобнае.
І калі праграмісты робяць няслушныя здагадкі, праграмы зламаць
таму што вы спрабуеце даць ім больш прадукцыі, больш уваходнага
хутчэй, чым яны маюць памяць.
Ці аператыўнай памяці, выдзеленай для яго, і таму, калі цяпер я ўдарыў Enter,
што праграма на самай справе працуе, таму што мы былі ў бібліятэцы
і мы сапраўды чакалі дадзеным канкрэтным выпадку.
Але, безумоўна, у гэтым семестры, вы будзеце пісаць па крайняй меры адзін
праграма, якая будзе казаць гэтыя словы.
Памятаеце пра гэта тыдняў з гэтага моманту, можа быць, праз два дні.
Памылка сегментацыі гэта дрэнна.
Ён будзе ставіцца да вашых робіце нешта, што кампутар
не чакаў.
І ў гэтым выпадку, вы, праграміст, не чакаў.
Шмат што спадабалася тое, што гэтую кучу шкарпэтак, існуюць розныя
вуглом выпадках мы маглі б сутыкнуцца.
Сапраўды гэтак жа ў праграмах, калі вы не прадбачыць, як доўга
чыёсьці імя будзе.
Або што, калі ў мяне ёсць зламыснік, і яго ці яе імя
на самай справе даволі кароткі, але яны проста спрабуюць
звязвацца са мной?
Што будзе ў паводзінах маёй праграмы?
Ну, у такім выпадку, нешта можа на самай справе збой.
>> Так давайце зробім гэта.
У 90 хвілін, гэта жудасна доўга
зрабіць інфарматыку.
Чаму б нам не ўвайсці ў звычку пяць хвілін
разбіць тут, і калі мы вернемся, мы будзем апускацца ў некаторых
больш складаныя і пераканаўчыя праграмы?
Пяць хвілін.
>> Добра.
Такім чынам, адзін хуткі каментар.
Мне сказалі, што, хоць гэта было на экране раней, што
выйшла з маіх вуснаў было cs50.net/rsvp.
Гэта правільна. cs50.net/lunch.
Такім чынам, зараз вы можаце паспрабаваць RSVPing для гэтага ў / абед.
Але давайце зробім гэта цяпер.
Так гэта было супер хуткі, супер новы для вялікай колькасці людзей.
Старыя капялюшы для некаторых людзей.
Так што давайце пераматаць на імгненне, і паглядзець, як мы дабраліся да
гэта прывітанне сусветнага вытворчасці імгненне назад.
>> Такім чынам, па-першае, ёсць такі CS50 Appliance.
Зноў жа, частку праграмнага забеспячэння, задача ўсталяваць 1 раскажа
Вам, як загрузіць яго, дзе яго спампаваць, то націснуць
і гэтак далей.
І вось аднойчы вы будзеце ісці гэтым інструкцыям, вы зможаце
каб павялічыць вашыя вокны, і ваш Mac ці PC будзе выглядаць
мала нешта накшталт гэтага.
Чорны фон, хатняй тэчкі на вяршыні, дзе ўсё
Вашы файлы ідуць, смеццевы бак у левым верхнім куце,
меню ў ніжняй часткі.
Такім чынам, яшчэ раз, вельмі падобныя па духу Mac OS або Windows,
нават калі яно адбудзецца, будзе Linux.
Такім чынам, што ж мы ў наступны раз рабіць?
Ну, мы пачалі пісаць праграмы.
І памятаеце з мінулым тыдні, што ўсё, што трэба напісаць
Праграма ўяўляе сабой просты тэкставы рэдактар,
як Нататнік або TextEdit.
Шчыра кажучы, вы нават можаце выкарыстоўваць Microsoft Word.
Але дрэнна, у рэшце рэшт адбудзецца, таму што гэта вельмі
жорсткія рашэнні для напісання праграмы, а таксама ён будзе
захаваць яго ў няправільным фармаце.
Але гэта проста тэкставы рэдактар, тэкставы працэсар, гэта ўсё, што
трэба напісаць праграму.
>> Такім чынам, у CS50 Appliance, мы можам зрабіць гэта ў адзін просты спосаб.
Мы можам проста націснуць на гэты значок у левым ніжнім куце.
І зноў жа, праблема ўсталяваць 1 пракансультуюць Вас пра гэта, і вуаля -
Вы атрымліваеце гэтую чорна-белы інтэрфейс, дзе мы можам пачаць
напісання кода.
Такім чынам, давайце пачнем пісаць супер проста праграму яшчэ раз.
Я збіраюся ісці да файла, захаваць, і я збіраюся патэлефанаваць
гэта, скажам так, hello2.c.
І я проста кажу, націснуўшы на jharvard, паклаў яго
У сваёй хатняй дырэкторыі, я сапраўды не клапачуся
дзе гэта не ідзе.
А затым Захаваць.
І цяпер я магу пачаць пісаць маю праграму.
І я памятаю з раней, што я павінен напісаць Int
асноўных (несапраўднымі).
Павялічыць на верхнім левым куце.
А потым я хачу сказаць, Printf, вазьміце два.
А цяпер радкі, блізкія цытата, зачыніце
дужкі, кропка з коскі.
І тады я іду сюды, каб мае вокны тэрмінала, што гэта
убудаваны ў Gedit, проста для выгоды.
І я збіраюся пайсці далей і напісаць Прывітанне зрабіць, але не
Прывітанне адна, hello2.
>> Так што мой файл называецца hello2.c. Мой файл таму
варта назваць hello2, у дадзеным выпадку.
Чорт вазьмі, што ж я зрабіў не так?
Добра, я выразна апушчаны радкі, калі ўспомніць, што
папярэдніх праграм выглядаць.
Але давайце паглядзім, калі мы не можам дражніць гэтага адзін ад аднаго.
На жаль, большасць людзей, якія пішуць праграмы, з якой
мы пішам праграмы не спрасціць ўсё, што добра.
Таму мы павінны выгляду абястлушчанага за тое, што не зусім зрабіць
сэнс тут і паглядзець, калі мы можам высветліць, што здарылася.
Самая першая радок там гаворыцца няяўна абвясціць C
бібліятэчныя функцыі Printf з тыпам Int.
Добра, я зразумеў часткай гэтага.
Але гэта, здаецца, намякае на тое, што я выкарыстаў Printf
так, як-то.
А які сэнс гэта няправільна?
Я проста не навучыць кампутар, на якім ён знаходзіцца ў файле
называецца stdio.h.
Цяпер у мяне ёсць толькі проста запомніць, што зараз гэта Printf
У stdio.h, ды і там будзе іншы
функцый у тым жа файле, што мы будзем прывыкаць.
>> Так што цяпер дазвольце мне ісці наперад і ўдарыў Ctrl-L проста зразумець, што
далёка, каб паўторныя hello2, і вуаля.
І гэтую каманду яшчэ раз, больш складаныя, чым мы будзем тлумачыць, для
сённяшнія мэты.
Але гэта запусціць ляск i звон бярэ зыходны код і
выплёўвае 0 і 1.
А тыя, 0 і 1 у гэтым выпадку называюцца што?
Добра, аб'ектны код.
І файл, які яны ў яшчэ называюць, так,
hello2, у дадзеным выпадку.
Таму што мой тэкставай файл быў hello2.c, Enter.
А цяпер я ўзяць два клічнік, клічнік
кропка, клічнік.
Добра, мы цяпер маем магчымасць атрымаць радкі,
па-відаць.
Ну, што яшчэ мы можам атрымаць ад карыстальнікаў?
>> Ну, у CS50 бібліятэкі, ёсць і іншыя функцыі,
збіраюцца спрасціць нашу жыццё ў гэтыя першыя некалькі дзён.
GetChar, GetDouble, GetFloat, GetInt,
GetLongLong, GetString.
Ну, давайце абрываць самы просты з іх у першую чаргу.
GetString літаральна робіць гэта.
Ён проста сядзіць там, чакаючы, калі карыстальнік ўвядзе што-небудзь,
і як толькі я набіраю нешта ў і націсніце Enter, гэта
робіць нешта з гэтым значэннем.
Так што давайце вернемся да гэтага прыкладу, каб убачыць менавіта тое, што
GetString рабіў.
Дазвольце мне ісці наперад і адкрываць у Gedit, hello.c, і ўспомніць
гэта права да перапынку, гэта тое, дзе мы спыніліся.
>> Такім чынам, давайце зараз дражняць адзін ад аднаго ў гэтым крыху падрабязней.
Такім чынам, у радку 6, ёсць дзве рэчы,
адбываецца ў дадзены момант.
Знак роўнасці аддзялення першай паловы і другой паловы.
Такім чынам, на левай баку знака роўнасці, мы
кажуць радкі с.
А потым, умовы проста непрафесіянала, што радок з
рабіць, як вы думаеце?
Гэта стварае Што?
Такім чынам, гэта стварэнне радкі называецца с.
Цяпер тое, што гэта сапраўды азначае?
Ну, гэта рэзервавання месцы для радкі называецца с.
Гэта не зусім дакладна.
Што гэта робіш?
Ну кампутараў, як вы ведаеце, у жорсткіх дыскаў, што, дзе
Вашы файлы захоўваюцца.
Кампутары маюць RAM, а вось дзе праграмы загружаюцца
у той час як яны працуюць.
Такім чынам, калі вы двойчы пстрыкніце значок і Microsoft Word адкрывае
ўверх, Microsoft Word працуе, так бы мовіць, у аператыўнай памяці, якая з'яўляецца
Электронная частка вашага кампутара.
Ці не фізічную, механічную частка, якая круціцца, дзе
Дадзеныя звычайна захоўваюцца ў доўгатэрміновай перспектыве.
Так радок з даволі шмат кажа кампутара, дайце мне
дастаткова аператыўнай памяці, каб адпавядаць радку.
Цяпер гэта крыху спрошчана, таму што
Наколькі вялікая радок будзе?
Ну, мы на самай справе яшчэ не ведаю, так што ў бліжэйшыя тыдні
мы на самай справе адступіць пласт, які з'яўляецца радком і
Мы вам скажу, што гэта сапраўды так.
String, на дадзены момант, гэта проста добрая спрашчэння нашага свету.
Але радок з заяўляе радок называецца с, на дадзены момант.
Аб'яўляе радок.
Гэта пакідае некаторы прастору ў аператыўнай памяці для радкі карыстальнік
Аб друкаваць.
>> Зараз давайце паглядзім на права знак роўнасці.
Так ён кажа GetString ().
І трохі разважнасці праверыць.
Справа ў тым, што няма нічога ўнутры дужак
вынікае, што пра GetString?
Ён не прымае аргументаў.
Гэта значыць, вы не можаце ўплываць на яго паводзіны ў любым выпадку.
Кожны раз, калі вы выкарыстоўваеце яго, ён будзе атрымліваць радок, вось і ўсё.
У адрозненне ад Printf, спадзяюся, яго паводзіны робіць
змяніць у любы час.
У адваротным выпадку, гэта даволі бескарысная функцыя друку, калі
ён робіць тое ж самае.
Калі яна заўсёды друкуе Дэвіда ці нешта
адвольнага ўвесь час.
Так Printf мае сэнс мець аргумент.
GetString на самай справе не патрэбныя аргументы, таму што я хацеў
, Каб атрымаць радок ад карыстальніка, і гэта карыстальнік, які збіраецца
на пастаўку дынамізм, набраўшы ў розных літар
кожны раз на клавіятуры.
>> Такім чынам, што ж рабіць у канчатковым рахунку GetString?
Думайце пра гэта як гэтая маленькая чорная скрынка.
І гэта чорны скрыню не прымае ўвод, але калі вы выбуху на
, Яна выплёўвае радок, карыстальнік увёў цалі
А тое, што там ёсць знак роўнасці азначае прыняць
што пляваць на правы і захоўваць яго ўнутры
Што злева.
Такім чынам, знак роўнасці тут, на самай справе зусім не азначае,
роўнасць, а тэхнічна азначае прызначэнне.
Возьмем значэнне справа, і паклаў яго ў
зменную злева.
Так што ўсё, што там адбываецца.
>> Цяпер у радку 7, мы выклікаем Printf.
Так Printf спадзяюся, становіцца трохі сумна ў цяперашні час.
Такім чынам, друк адфарматаваную радок.
Што радок?
Раздрукуйце, "ч-е-л-л-о, ы%
! \ П ".
Добра, так што я хачу, каб убудова для% S?
Літаральна ўсё, што захоўваецца ў с.
Такім чынам, у гэтым выпадку, мала праверку наяўнасці свядомасці, колькі аргументаў робіць
Printf ўзяць?
Добра, я чуў, як адзін.
Я чуў, як адзін раз.
Два, я пачуў два.
А як наконт трох?
Добра, тры?
Выдатна.
Тры варыянту адказу, толькі адзін з іх правільны.
Такім чынам, аргументы зноў ўплываць на паводзіны функцыі.
У мінулым Printf ж прымаюць толькі адзін аргумент.
"Прывітанне свет" быў адзіны аргумент.
Аднак, зараз, звярніце ўвагу, дзе гэтая коска.
Гэта коскі знаходзіцца за межамі цытаты / канец цытаты, што азначае,
эй Printf, вось другі аргумент.
>> Так што коскі ў большасці моў праграмавання
асобная некалькі аргументаў.
Такім чынам, адказ тут, безумоўна, не адзін, таму што
ёсць гэтая коска.
Такім чынам, мінімальна, Printf мабыць прымаючы 2
Аргументы ў гэты раз.
Але магчымасці для падступнае пытанне тут з'яўляецца тое, што
пра гэта коскі?
Ці азначае гэта, што там на самой справе 3 аргументу?
Гэта, гэта і гэта.
Так што няма, таму што коска знаходзіцца ўсярэдзіне двукоссяў, якія
азначае, што гэта сапраўды толькі эстэтычнае англійскай мовы.
Гэта не мае нічога агульнага з лікам
Аргументы ў гэтай праграме.
Так што гэта коска знаходзіцца за межамі падвойныя двукоссі.
А потым вяртаць 0.
А цяпер давайце проста як бы ўзяць гэты на веру
сёння, і дакладна ведаю, што, калі функцыі выконваюцца выканання
радкоў кода, яны павінны звычайна вяртаюць некаторы значэнне.
У гэтым выпадку, проста таму, што асноўная павінны вярнуцца INT,
што проста так на мове C працуе.
>> Такім чынам, таму што нічога не пайшло не так, як адчувае сябе гэтай праграмы
добра, я проста жорстка ў адказ 0.
Але, у адрозненне, і я збіраюся напісаць гэта ў псевдокоде
Цяпер, як і Іосіф, калі мы рабілі шкарпэтку
Напрыклад на мінулым тыдні.
Калі нешта пайшло не так - гэта не рэальны код - пайшоў
няправільна, а затым вярнуцца, скажам, 1.
Астатняе вяртаецца 0.
Дык вось дзе мы збіраемся з гэтым.
Гэта не рэальны код C, проста псевдокод.
Але гэта, як вы маглі б вярнуцца
розныя магчымыя значэння.
Але цяпер я проста збіраюся ісці наперад і вяртаць 0.
Добра, любыя пытанні да гэтага часу на сінтаксіс, функцыянальнасць,
і да т.п.?
Так, у спіну.
>> Аўдыторыя: [неразборліва]
DAVID малая: Ці можаце вы гаварыць гучней?
Чаму гэта 0 праграмы вяртання, а?
Аўдыторыя: [неразборліва]
DAVID малая: О, гэта таму, што я лянівы, прабачце.
Няма добрай акадэмічнай адказ, вяртаецца 0.
Я магу выратаваць выгляд гэтага, кажучы тэхнічна C, калі асноўны
відавочна не вяртае значэнне, то будзе вернуты 0
аўтаматычна.
Што праўда, я кажу не толькі прыкрыццё.
Але, я павінен быў зрабіць гэта такім чынам.
Няма цікавы вынас, чым іншыя, чым мая памылка.
Да?
>> Аўдыторыя: Звычайна, калі вы ўводзіце ў пустату, гэта азначае, што вы
Не вярнуць нешта.
DAVID малая: Правільна.
Калі замест гэтага вы паказаць перад імем функцыі, для
Напрыклад тут, пустэча, то функцыя
нічога не вяртае.
І таму я хацеў бы проста сказаць, вяртання або наогул нічога,
і што будзе адпавядаць.
І мы яшчэ вернемся да гэтага.
І толькі FYI, адна з ўловаў з навучаннем
праграмавання ў свеце, які мае сотні кніг і
сотні сайтаў, то там вы абавязкова
гл. іншы сінтаксіс у розных кнігах
рознымі людзьмі.
Зразумейце, мы зробім усё магчымае ў раздзелах і лекцыі, каб быць
паслядоўная.
Але часам вы ўбачыце супярэчлівыя сінтаксісу.
Таму, калі вы сумняваецеся, проста спытайце.
І наогул, мы клапоціцца у лекцыях і частак
Амаль заўсёды прадставіць яго ў правільным кірунку.
І я кажу амаль заўсёды, таму што выпадак.
Іншыя пытанні?
>> Аўдыторыя: Ці ёсць% з існуючых па-за прыбора?
DAVID малая: Ці ёсць% S існуе па-за прыбора?
Так.
Такім% S мае дачыненне да С. Той факт, што мы выкарыстоўваем яго ў
Прыбор прынцыпова не мае нічога агульнага з
асаблівасці мовы мы выкарыстоўваем.
Сапраўды, на мінулым тыдні, калі мы выкарыстоўвалі мой Mac, я напісаў
C код на свой Mac.
Я мог бы выкарыстаць% на маёй Mac, і вы можаце выкарыстоўваць яго на
Ваш Windows кампутар, калі вы ўсталюеце кампілятар, як
Visual Studio ад Microsoft.
Такім% с.
Усё, што мы робім ўнутры гэтага акна сёння павінен
рабіць з С. І прынцыпова нічога агульнага з
аперацыйная сістэма ў пытанні.
У адрозненне ад чорна-белага акна тэрмінала - пры
Я друкую рэчы, як Л.С., RM, і CD -
, Што мае справу з аперацыйнай сістэмай і
навігацыі вакол.
Так.
Аўдыторыя: Я меў на ўвазе бібліятэкі, CS50 бібліятэкі.
DAVID малая: Такім чынам, калі вы маеце на ўвазе ключавое слова радкі, што
існуе толькі ў CS50 бібліятэцы, правільна.
Гэта не існуюць у C самога, ды і ў пары
тыдняў мы будзем выкідваць CS50 бібліятэку і пачаць
рабіць рэчы з нуля сябе, так бы мовіць.
Іншыя пытанні?
Так.
>> Аўдыторыя: [неразборліва]
DAVID малая: Добры пытанне.
Ёсць каманды адчувальныя да рэгістра?
І дазвольце мне зрабіць адрозненне тут.
Такім чынам, каманды, як правіла, тое, што мы напішам на
у ніжняй частцы акна, у акне тэрмінала.
Усё, што тут было б заявы або C код.
Але ў абодвух выпадках, адказ будзе той жа, так.
Абодва гэтых асяроддзях, код C у верхняй і
рабочай радку каманднай сістэмы ў
знізу, з улікам рэгістра.
Так што вы павінны скарыстацца GetString з капіталам G,
капітал С. Вы павінны напісаць Printf ў ніжнім рэгістры.
Неабходна ўвесці Ls ў ніжнім рэгістры.
Такім чынам, амаль у кожнай сітуацыі ў гэтым семестры, справа будзе, у
Сапраўды, пытанне.
Так.
>> Аўдыторыя: [неразборліва]
DAVID малая: Ах, так добра, што калі б мы мелі файлаў
называецца hello.d.
Вось і атрымліваецца, D з'яўляецца мовай праграмавання.
І таму ў некаторых выпадках, мы маглі б на самай справе напісаць праграму, у
гэты файл і ён складзены менавіта такім чынам.
Мы, можа, і на самай справе, кароткі адказ, я не ведаю.
Так што мы збіраемся зрабіць гэта.
Дазвольце мне пайсці далей і стварыць новы файл.
І спіна тут, шчыра кажучы ў агульным, кожны раз, калі любое сумнеў
у гэтым семестры, і ў вас ёсць прылада або кампутар
адкрыць, ісці наперад і паспрабаваць нешта.
Так што я збіраюся захаваць файл пад назвай hello.d.
Захавайце гэта.
І я збіраюся запусціць зрабіць прывітанне Enter.
Здавалася зрабіць выснову, што з больш верагодна,
чым г, у дадзеным выпадку.
Іншыя пытанні.
Так.
>> Аўдыторыя: [неразборліва]
DAVID малая: Добра, кажуць, што яшчэ раз.
Аўдыторыя: [неразборліва]
DAVID малая: Як бы вы ідзяце па нагоды дыягностыкі таго ці
ліквідацыю непаладак гэта?
Так што, хутчэй за ўсё, таму, што яны на розных мовах,
Хутчэй за ўсё, вы атрымаеце цалкам
розныя праграмы выводзіцца.
Вы атрымаеце зусім розныя паведамленні пра памылкі.
А таксама толькі з пункту гледжання дызайну, гэта было б, магчыма, быць
Дрэнна дызайнерскае рашэнне для напісання двух розных
Мовы з амаль аднолькавымі імёнамі файлаў, у
сапраўды такі жа каталог, выкарыстоўваючы
аўтаматычны інструмент, як зрабіць.
Так што я магу націснуць назад і сказаць: у 15 гадоў зрабіць гэта,
ніколі не рабіў гэтую памылку.
Можа здарыцца.
Але там проста розныя, я думаю,
матэрыяльна-тэхнічнае абарону на месцы.
Плюс паведамленне пра памылку, якое наступіць, што б
у канчатковым выніку выявіць, у чым праблема.
Але магчымы выпадак куце.
>> Добра, давайце ўвядзем усяго пару іншых
асаблівасці тут, так што мы можам пачаць будаваць на большае
і больш складаныя праграмы.
Такім чынам, перш за ўсё, матэматыкі.
Такім чынам, матэматыка прыклады толькі выгляд лёгкай у першы тыдзень.
Гэта не азначае, што ўсе праграмы складае каля
матэматыка.
Вядома, разуменне розных функцый
матэматыка, алгебра, у прыватнасці,
вельмі актуальная тут.
У больш высокім узроўні CS класы, лінейная алгебра,
Вылічэнне і да таго падобнае.
Але зразумейце, большасць таго, што мы будзем рабіць у гэтым семестры не зніжае
да матэматыкі, і, вядома, не ў арыфметыцы, само па сабе, але на самой справе
проста логікі і стараннага мыслення.
І вось гэтая сувязь, што кампутарная навука ўжо даўно,
асабліва на ўзроўні сярэдняй школы, з матэматыкай, з'яўляецца
трохі ўводзіць у зман.
Паколькі большасць праграм, якія мы напішам, сапраўды,
роду высокім узроўні і засяродзіцца на вырашэнні праблем, якія,
Вядома, можна выкарыстоўваць некаторыя складання, аднімання, а таксама розныя
матэматычныя формулы і да т.п.,
але ў рэшце рэшт, гэта пра мысленне, а не
проста рэалізаваць тое, што вы маглі б зрабіць на як TI
Калькулятар ў сярэдняй школе.
>> Такім чынам, з улікам сказанага, давайце штосьці рабіць з гэтым
матэматычныя аператары, якія сапраўды існуюць, каб мы маглі паездкі
па некаторых з асноўных аспектаў праграмавання, або ў
гэтым выпадку C. Такім чынам, існуе, як CS50 бібліятэкі прапанавалі,
і сёння мы выкарыстоўваем толькі GetString - і ў адно імгненне
мабыць, адна іншая функцыя -
але ёсць розныя тыпы дадзеных у кампутар.
У рэшце рэшт, кампутары ведаю толькі 0 і 1.
Але нагадаем, што на мінулым тыдні мы казалі аб двайковай сістэме
У паданні лікаў, напрыклад, лікі 0 і 1, і 2,
на ўсім шляху ад да 8, як і ў відэа Нейт.
І тады мы можам разлічваць значна вышэй, так як мы
рабіў на сцэне тут.
Але калі вы хочаце, каб прадстаўляць не толькі ліку, але лісты,
Мы, людзі, павінны выступіць з некаторымі адвольнымі
канвенцый, згодна з якім, калі ў канцы дня ўсе мой кампутар
была гэта здольнасць выказваць 0 і 1, а нам лепш
пачаць стандартызацыю формаў 0 і 1, якія прадстаўляюць
розныя рэчы.
Карціны з 0 і 1, якая прадстаўляе лісце.
Мадэлі з 0 і 1, якія прадстаўляюць лісце г.
Мадэлі з 0 і 1, якія прадстаўляюць колер сіні, або
чырвоны, ці таму падобнае.
Мы павінны выкарыстоўваць усе гэтыя 0 і 1, каб выказаць сябе ў
розных кантэкстах, у розных спосабамі, якія не
абавязкова лікавы.
>> Так што ў плане прадастаўлення, C мае розныя тыпы дадзеных,
і мы бачылі адну з гэтых да гэтага часу.
Мы бачылі, INT, і звярніце ўвагу на тое, што на экране не адлюстроўваецца
Прама зараз з'яўляецца радком.
Радок не, на самой справе, існуе ў С. Зноў жа, гэта
Спрашчэнне мы прадставім у першым
пару тыдняў.
Сімвал з'яўляецца індывідуальны характар.
Паплавок сапраўдны лік, з дзесятковай коскі і лічбы
злева і справа ад яго.
Падвойная з'яўляецца тое, што, для тых, з задняй да фонам?
Такім чынам, падвойная два разы нешта.
Дадае ў два разы больш дакладнасці.
Дык што ж гэта значыць?
Такім чынам, у кожным з гэтых выпадкаў, у свеце ёсць роду стандартызаваныя
колькі бітаў выкарыстоўваюцца для прадстаўлення
Кожны з гэтых рэчаў.
Так што, калі вы глядзелі відэа ASCII Нейт ўжо частка
з PSET 0, альбо ў канцы гэтага тыдня вы будзеце, вы, напэўна, ведаеце
што ASCII -
характар ​​уяўленняў -
выкарыстоўваць, колькі біт?
І вы нават памятаеце з нашых дэма на мінулым тыдні пра тое, як
многія людзі былі на сцэне.
Такім чынам, 7 або 8, звычайна.
Такім чынам, у цэлым 8, і ёсць тое, што называецца ў якасці падоўжаны
ASCII, які выкарыстоўвае ўсе 8 біт, замест 7.
Але ў цэлым, мы гаворым па ступенях 2, таму ў дадзеным выпадку, 8.
Такім чынам, знак у мове праграмавання, як правіла, 8 біт.
Так Int, як правіла, 32 біт.
Паплаўком, як правіла, 32 біт.
Падвойныя, як правіла, 64 біт.
А што гэта значыць?
Гэта азначае, што вы можаце прадстаўляць вялікія ліку, або, у выпадку
рэчыўных лікаў, вы можаце мець значна больш лічбаў пасля
дзесятковага знака.
Значна больш дакладнасці, у такім выпадку.
Цяпер доўга-доўга, на жаль, ім.
Так што Int якіх складае 32 біта.
Існуе доўгі якая, няма, 32 біт.
І доўга-доўга якой складае 64 біта.
Аднак некаторыя з тых, хто залежыць ад кантэксту, яно залежыць
які кампутар у вас ёсць.
Так што ў цэлым, мы будзем паказваць у хатнюю працу або ў віктарыне, калі
яна на самай справе мае значэнне.
Але справа ў тым, ёсць усе гэтыя розныя
паданнях тут.
>> Так што давайце на самай справе пагрузіцца ў праграме.
Замест таго, каб напісаць гэта з нуля, дазвольце мне ісці наперад
і адкрыць з зыходнага кода сённяшняга дня - усё гэта з'яўляецца
онлайн - калі вы хочаце важдацца вакол у Інтэрнэце, або вяртанне на
Сераду з прыборам на вашым кампутары, інструкцыі
, Для якой будзе спасылка на галоўную старонку курса.
Вось супер просты праграмы.
Але ў яго ёсць сёе-тое новае ў верхняй, што
у нас не было раней.
Шмат сініх радкоў тэксту.
Такім чынам, гэтыя сінія лініі ўяўляюць каментары.
Так што гэта вельмі карысна ў праграме, каб мець магчымасць пісаць
некаторыя каментары да сябе, і да калегам або сябрам, або
навучанне стыпендыятаў, такога роду апісаць тое, што адбываецца ў
Гэты файл, але не маюць нічога агульнага з C самога кода.
Нічога агульнага з праграмай функцыянальна, гэта ўсяго толькі
эстэтыку.
Такім чынам, вы зрабіць гэта ў C значыць вы наогул пачаць
Каментары с / *, і вы ў канчатковым вашы каментары з
* /.
І калі вы сапраўды анальны і хацеў бы звярнуць роду карцін,
Затым трэба пакласці кучу зорак, трэба зрабіць
скрыначцы, як гэта.
Але ні адзін з гэтых пытанняў.
Адзінае, што мае значэнне самага першага
і самае апошняе.
Гэта тое, што называецца шматрадковы каментар.
І гэта толькі чалавечыя канвенцыі часта робяць зоркі і скрынкі
рэчы, як гэта, калі ў вас ёсць шмат вольнага часу.
>> Такім чынам, пасля таго, як напісана ў некаторых каментарах, як правіла, прыходзяць
фактычныя кішкі праграмы.
Вось наш знаёмы # ўключыць .
І так жа хутка, гэта трэба ці не трэба?
Аўдыторыя: неабходна.
DAVID малая: Так гэта на самай справе не трэба.
Дык чаму ж, тым не менш, гэта не трэба?
Такім чынам, няма Printf.
У самай справе.
Усё, што мы робім у гэтай праграме з'яўляецца матэматыка.
Так што я магу на самой справе выдаліць гэта.
Такім чынам, вы не заўсёды павінны ўключаць у сябе нічога
у верхняй частцы праграмы.
>> Так давайце спросцім гэта няшмат.
А цяпер заўважце, што гэтая праграма робіць.
Не шмат цікавага.
Int х = 1.
Ну, што гэта робіш?
Ну, думаю, назад у ментальнай мадэлі, чым раней.
У левай часткі гэтага выказвання, што робіць?
Стварыць прастору для цэлага ліку.
Так як шмат месца?
Ну, мы, аказваецца, ведаем цяпер, што гэта 32 біт.
Раней, радок была тэхнічна 32 біт, але больш
пра гэта ў будучыні.
Але Int складае 32 біта.
Такім чынам, гэты выраз злева тут, Int х проста кажа, эй
аперацыйная сістэма, дай мне 32 біт аператыўнай памяці -
інакш вядомы як 4 байта аператыўнай памяці -
так што я магу пакласці цэлы лік у гэтай прасторы.
Што цэлага ты хацеў паставіць?
Ну, проста нумар 1.
Int у атрымлівае 2, не адно і тое ж, хоць
Нумар вялікі, з пункту гледжання яго велічыні.
Колькасць сама яшчэ толькі 32 біта.
Гэта проста ўзор біт адрозніваецца ад
складаюць 1 супраць 2.
Int Z цяпер кажа, дайце мне яшчэ 32 біта, назавем яго Z, і пакласці
Сумаванне 1 і 2 у там.
Так што зараз г меркавана захоўвання значэння 3,
, А затым вяртаць 0.
>> Зараз гэтая праграма, яна робіць што-небудзь цікавае?
Так што на самай справе не робяць нічога цікавага, у любым
сэнсу, таму што навошта? Гэта робіць некаторыя матэматыкі.
Але гэта не вяртаўся адказ, маеце рацыю.
Ён вяртаецца 0.
Гэта не друк адказу.
Такім чынам, гэтая праграма з'яўляецца прынцыпова бескарысным, так як ён
каштуе цяпер.
Гэта робіць некаторую працу.
Гэта зойме некаторы колькасць секунд, або мікрасекунд, каб
працаваць, але гэта на самай справе не робяць нічога
карысныя для чалавека.
>> Так што давайце на самай справе цяпер адкрыць math2, дзе цяпер я на самой справе
друк вынік.
Так што гэта таксама можа быць выведзена з нашага папярэдняга прыкладу.
Калі я хачу зрабіць некалькі простых матэматыцы, Int х = 1, у
= 2. г складае 1 плюс 2 цяпер.
Што гэта будзе раздрукаваць відавочна?
Толькі 3.
Так хутка санітарнай праверкі.
Дазвольце мне перайсці ў гэты каталог.
Так кд source1m.
Дазвольце мне пайсці далей і ўвесці зрабіць math2.
Няма паведамленняў пра памылкі выйшаў, так што дазвольце мне бегчы -
Ня a.out--дайце мне працаваць math2. Enter.
І сапраўды, ён раздрукаваў 3.
Ну, давайце паглядзім на варыянт гэтага.
У math3.c, цяпер у нас гэта прыклад.
>> Так што гэта свайго роду цікава.
Такім чынам, у гэтым тут, адказ будзе атрымаць 1 дзеліцца на 10,
і звярніце ўвагу, я сказаў, што яна з якая плавае кропкай.
Чаму я хачу быць з якая плавае кропкай?
Ну, гэта фракцыі.
Гэта збіраецца быць рэальным лікам.
Так што гэта будзе 0,1, спадзяюся - 10%, у гэтым выпадку.
І што ж я тады хачу, каб раздрукаваць?
Ну, гэта адказ.
Ну, давай дражніць гэтым, акрамя першага.
Такім чынам, на левай баку заявіць,
плаваць, называюць гэта адказаць.
З правага боку, зрабіць 1 дзеліцца на 10 і пакласці, што
адказаць ўнутры зменнай.
Зараз гэтая лінія выглядае крыху больш загадкавымі.
Але заўважыць некаторыя знаёмыя рысы. % Азначае, што тут ідзе
запаўняльніка.
F азначае вось значэнне з якая плавае кропкай, толькі рэальныя
лік, то з коскі.
0,2 гэта азначае?
Кожны ведае, з папярэдняга вопыту?
Два знака пасля коскі.
Такім чынам, мы не бачылі гэтага раней, але гэта ўсяго толькі спосаб
ажыццяўленне трохі больш кантролю над Printf і
кажу, не дай мне 30 ачкоў пасля коскі,
замест гэтага даць мне толькі 2.
>> І тады давайце ісці наперад і выканаць гэта.
Так што матэматыка 3, а цяпер дазвольце мне выканаць матэматыку 3, Enter.
І гэта не правільна.
Мы, здаецца, сутыкнуўся наш першы сапраўдны памылка.
Ну, можа, я проста не глядзела досыць блізка.
Такім чынам, дазвольце мне ісці сюды, і дазвольце мне пакласці 20 дзесятковых
кропка месцамі.
І дазвольце мне скласці гэты, зрабіць math3, бяжы.
Упэўнены, 1, дзеленай на 10 не роўна 0.
Так што ж адбываецца?
Ну добра, так што на самай справе ён не мае да гэтага дачынення.
Гэта добрая думка.
Гэта сапраўды проста супадзенне
што мы робім гэта.
Але толькі, каб даказаць, што гэта не ён, я буду
вярнуць нешта выпадковае.
Не рабіце гэтага дома, таму што гэта проста няправільна.
Але зрабіць math3, дазвольце мне запусціць яго.
Такім чынам, не мае нічога агульнага з тым, што я вяртаюся, толькі рабіць
з тым, што я друкую.
Але я чуў, што тут, унізе.
Што?
Аўдыторыя: Так што мы павінны пісаць ліку ў
падзел, як -
>> DAVID малая: Добра добра.
Так што мы павінны пісаць ліку якія ўдзельнічаюць у
падзел тут як значэнні з якая плавае кропкай сябе.
Такім чынам, праблема тут у тым, як раней: C, як і многія
мовамі, мае розныя тыпы дадзеных.
А тыя тыпы дадзеных, напрыклад, гэтыя тут.
І тыпы дадзеных у пытанне тут, калі я тыпу 1, а затым я
Тып 10, верагодна, якія тыпы дадзеных?
Так што гэта, верагодна, INT, ці не так?
Гэта вызначана не плаваць, таму што няма дзесятковай
кропка ці што-небудзь падобнае.
Так на самай справе, у мяне ёсць цэлы лік дзеліцца на унутр.
>> Так самае цікавае пра матэматыцы і кампутара з'яўляецца тое, што
калі вы робіце падзел выкарыстаннем цэлых лікаў -
1 дзеліцца на 10, так, складае 0,1.
Тым не менш, калі вы дзялення цэлага ліку на цэлы лік,
Адказ павінен быць цэлым лікам толькі таму, што, на дадзены момант.
А што маецца на ўвазе то?
Ну, калі адказ 1 дзеліцца на 10 роўных 0,1, што
Кампутар збіраюся зрабіць, гэта я паняцця не маю, як
ўяўляюць сабой 0,1, таму што гэта значэнне з якая плавае кропкай, а не
цэлы лік, ён збіраецца адсекчы ўсё пасля
дзесятковай кропкі і проста паказаць вам, 0 у пачатку.
А тое, што гэта друк у выглядзе плавае кропкай
значэння, гэта проста эстэтычная рэч.
Гэта таму, што я прымусіўшы кампутар для друку гэтым
якая плавае кропкай.
І сапраўды, я сказаў, што яна з якая плавае кропкай, але матэматыка
адбываецца тут.
>> Таму дазвольце мне на самай справе выправіць гэта ў адзін даволі просты спосаб.
Чаму я не проста раблю 10,0 і 1,0, хоць
Тэхнічна я мог бы сысці з рук толькі робіць адзін з іх.
Цяпер дазвольце мне пайсці далей і зрабіць math3.
Дазвольце мне ісці наперад і цяпер працуюць math3, Enter.
А цяпер, о хлопчык.
Цяпер у нас ёсць новая праблема наогул.
Так што лепш, права, мы бліжэй да 0,1, але тое, што, безумоўна, з'яўляецца
тут не так?
Калі мы хлусілі вам на працягу многіх гадоў, так?
1, дзеленай на 10 на самай справе не зусім 0.1, так што
на самой справе тут адбываецца?
Ну вы можаце збольшага прычына праз гэта лагічна.
Калі кампутар мае толькі канчатковае колькасць аператыўнай памяці, каб пачаць
с, ды і кампутар выкарыстоўвае толькі 32 біта для
якая плавае кропкай, само сабой зразумела, што з
канечны лік біт, 32 у гэтым выпадку, так, вы можаце
ўяўляюць сабой шмат рэчаў.
На самай справе гэта 4000000000 розных значэнняў можа быць
прадстаўлена 32 біт, ад 2 да 32, але гэта ўсё яшчэ канчатковая.
Так што праблема існуе бясконцую колькасць сапраўдных
нумары, маюць рацыю.
Калі вы дасце мне сапраўдны лік, я заўсёды магу знайсці вам адзін
крыху больш, крыху менш, проста налады
нумары, якія пасля коскі.
Так што, калі вы не маеце бясконцую колькасць бітаў, вы
не можа ўяўляць сабой бясконцую
Колькасць сапраўдных лікаў.
>> Так што гэтая ўласцівая недакладнасць у кампутарах, і
гэта атрымлівае спатыкнуўся ўвесь час, нават у самых простых
падобных праграмах.
Але і ў вельмі рэальным свеце праблемы.
На самай справе, давайце момант, каб проста зірнуць на
тое, што на самой справе адбылося ў рэчаіснасці.
Мы будзем глядзець толькі першыя некалькі хвілін, а затым
мы размесцім спасылку ў Інтэрнэце.
Але гэта сведчыць толькі тое, што можа пайсці не так, зусім
шчыра кажучы, у вельмі трагічным шляху, калі гэтыя рэчы не
ацэненыя або проста мы, людзі робяць памылкі, калі справа даходзіць да
гэтыя віды дэталі рэалізацыі сучасных кампутараў.
>> [Прайграванне відэа]
-Вернемся зараз да інжынернай бедстваў на сучасных цудаў.
Кампутары.
Мы ўсе прыйшлі да разумення часцяком расчароўвае праблемы
якія ідуць з імі.
Памылкі, вірусы, збоі праграмнага забеспячэння і малых цэны
плаціць за зручнасць.
Але ў вобласці высокіх тэхналогій і высокай хуткасцю ваеннай і касмічнай
праграмных прыкладанняў, найменшая праблема можа быць
павялічаная ў катастрофе.
4 чэрвеня 1996 года, навукоўцы гатовыя пачаць беспілотнага
Ракета Ariane 5.
Было правядзення навуковых спадарожнікаў для
ўсталяваць, як менавіта магнітнае поле Зямлі
ўзаемадзейнічае з сонечным ветрам.
Ракета была пабудавана для Еўрапейскага касмічнага агенцтва і
адарваўся ад свайго аб'екта на ўзбярэжжа Французскай Гвіане.
>> -Прыкладна каля 37 секунд у палёце, яны спачатку
заўважыла, што нешта ідзе не так, што сопла былі
паваротныя такім чынам, яны сапраўды не павінны.
Каля 40 секунд у палёце, выразна аўтамабіля
трапіў у бяду, і вось, калі яны прынялі рашэнне
знішчыць яго.
Афіцэр дыяпазон бяспекі з велізарным кішкі націску
Кнопка, ўзарвалі ракету перш чым ён зможа стаць
небяспека для грамадскай бяспекі.
>> -Гэта быў першы рэйс з Ariane 5, а яго
разбурэння адбыліся з-за памылкі, убудаваныя ў
Ракета праграмнага забеспячэння.
>> -Праблемы на Ariane, што не было побач, што
патрабуе 64 бітаў, каб выказаць, і яны хацелі, каб пераўтварыць яго
для 16-бітных ліку.
Яны выказалі здагадку, што колькасць ніколі не было
Будзе вельмі вялікі,
што большасць з гэтых лічбаў у 64-разрадныя ліку былі 0s.
Яны мелі рацыі.
>> -Няздольнасць адну праграму, каб прыняць
выгляд нумар, які генеруецца іншы быў у корані
правал.
Распрацоўка праграмнага забеспячэння стала вельмі дарагой часткай
новыя тэхналогіі.
Ariane 4 ракеты былі вельмі паспяховымі.
Так што вялікая частка праграмнага забеспячэння, створанага для яго таксама быў выкарыстаны
У Ariane 5.
>> -Асноўнай праблемай было тое, што Ariane 5 быў хутчэй,
паскорыўся хутчэй.
І праграмнае забеспячэнне не даводзілася для гэтага.
>> -Знішчэнне ракеты быў велізарным фінансавым
катастрофа, ўсё з-за хвіліне памылка праграмнага забеспячэння.
Але гэта быў не першы раз, праблемы пераўтварэння дадзеных было
пакутуюць сучасныя тэхналогіі ракеты.
>> DAVID малая: Мы пакінем усё як ёсць.
Але гэта з'яўляецца сведчаннем таго, наколькі дастасавальныя нават некаторыя з
гэта самы нізкі ўзровень дэталі, якія мы пачалі
даследаваць сёння.
Такім чынам, нават, як вы атрымаеце трохі адцягнуцца, магчыма, некаторыя з
сінтаксіс і Арканест тут, разумееш, што за
Тэрмін мы будзем сканцэнтраваны толькі на тым, як гэта стасуецца да
светы далёка за межамі CS.
Мы будзем бачыць Вас у сераду.