Роб Боуден: Гэта больш камфортна раздзел, але гэта не значыць, што калі вас адчуваць, што вы не зручней Вы не даведаецеся рэчы тут. Так што давайце пачнем. Ці ёсць у вас слайды ладзіцца ў рэчы. Ці магу я збіраўся проста ўзяць яго прама цяпер? Пераключэнне наўтбукі. Элісан: Вы не хочаце, каб представьтесь, Роб? Роб Боуден: О, я Роба. Гэта мой пяты год TF-ING CS50. Габрыэль: Я Гаўрыіл. Я кіраўнік TF з CS50. Я быў TF ў мінулым годзе і ў гэтым годзе. Элісан: А я Элісан, і гэта мой другі год TF-ING CS50. Роб Боуден: Добра, так гэтая рэч злева, спадзяюся, вы бачылі гэта раней. Калі не з-за вас спампаваць яго для сябе, Вы б бачылі яго ў лекцыі. Так што гэта CS50 прыбор, і ён зрабіў некалькі з апісання яго ў лекцыі. Але ў асноўным гэта проста вы працуюць пад кіраваннем аперацыйнай Сістэма ў вашай аперацыйнай Сістэма так што мы можам даць вам праграмы без неабходнасці турбавацца, пра гэта будзе працаваць як на Windows, і Mac, або калі некаторыя з вас ўжо з выкарыстаннем Linux, Linux. Гэта проста, як мяркуецца, быць агульнай гульні поле, так што кожны мае сапраўды такі ж асяроддзя. Так што калі ў вас ёсць ня запампаваў гэта ўжо, Вы павінны загрузіць яго, таму што ты спатрэбіцца яго для мноства задач. І гэта два гігабайта спампаваць, так гэта можа заняць некаторы час. На Гарвардзе ён будзе ісці хутка. Так CS50 прыбор. Цяпер у пачатку, мы збіраемся гаварыць аб проста набор каманднага радка матэрыял, і так з тым, што я маю на ўвазе працы ў гэтай маленькай навакольнага асяроддзя на працягу тут. І заўважце, усе рэчы Я кажу тут і цяпер будуць працаваць, калі вы ўнутры Тэрмінал ўнутры машыны, або калі вы ўнутры акно Gedit тэрмінал ўнутры прыбора. Так гэтыя асяроддзя з'яўляюцца ідэнтычнымі. Але я збіраюся пайсці ў трэці маршрут. І звярніце ўвагу, тут гэта трохі IP адрас прама тут. Такім чынам, вы не павінны зрабіць гэта, але гэта IP- address-- цяпер, калі i-- выключэннем ён заблякаваны з дапамогай гэтай рэчы. ОК, так што IP-адрас больш у тэрмінале here-- так гэты тэрмінал за вось тэрмінал у маёй Mac. Так што гэта ні ў якай меры ў цяперашні час звязаны з прыборам на ўсіх. І калі вы на Windows, то вы спатрэбіцца што-небудзь спампаваць спецыяльна для гэтага, у прыватнасці, людзі, як правіла выкарыстоўваць шпатлёўкі, Р-U-Т-Т-Y. Так што я збіраюся зрабіць, гэта ўвесці SSH, а затым, што IP-адрас. Ну, jharvard у той IP-адрас. Так 192.168.24.220. Гэта страшна паведамленне, ігнараваць яго. Проста увядзіце так. Гэта CS50 ў скрынцы. Ён просіць пароль. І так у многіх умовах, дзе ён просіць ўвесці пароль, [неразборліва]. У нас ёсць шмат пытанняў, дзе ён кажа, што на самой справе не набраўшы. Яна не паказвае вам характары пароль пры ўводзе, ва ўсякім выпадку, у аперацыйнай сістэме, таму што, калі хто-то шукае праз плячо і яны бачаць зоркі зоркі зорка зорка, то яны ведаю, што ваш пароль гэта чатыры знака. Такім чынам, ідэя гэта папросіць Вы для вашага паролю тыпу. Гэта не збіраецца паказваць Вы героі, але гэта на самай справе прыняць іх. У гэтым выпадку, у любы час вам калі-небудзь убачыць запрашэнне ўвесці пароль справу з прыладай, Пароль будзе малінавы. Так малінавы. І вось ўнутры гэтага Акно, якое знаходзіцца ў маім Mac, Я ў асноўным маюць сапраўды такі ж выгляд як унутры тэрмінала ў прыборы. Такім чынам, вы не павінны рабіць гэта. Вы можаце рабіць усё, што хачу ўнутры машыны. Я амаль ніколі не робяць што-небудзь ў прыборы. Я амаль заўсёды мінімізаваць, што і зараз Я працую SSH ў прыбор. Ва ўсякім выпадку, калі вы ёсць павольны кампутар, Вы можаце заўважыць розніцу. Я раблю гэта, таму што я аддаю перавагу гэта акно тэрмінала. Ён мае некаторыя функцыі, такія як Я магу падзяліць акно, і цяпер я магу SSH ў праз прыбор. Я атрымаў два SSH адбываецца адразу. Калі ваш кампутар з'яўляецца асабліва павольным і вы працуеце ў прыборы, і вы разумееце, што гэта сапраўды тармозіць, усё. Як правіла, значна хутчэй, калі вы SSH-е выд ст. Але ў адваротным выпадку вы можаце працаваць у любым выпадку. АЎДЫТОРЫЯ: Што гэта значыць SSH? Роб Боуден: Бяспечныя снарады, што-то падобнае? Што SSH на ўвазе? Габрыэль: Бяспечная абалонка. Элісан: Гэта проста бяспечная абалонка. Роб Боуден: Бяспечная абалонка. Гэта пратакол, які you-- гэта бяспечны пратакол, так шыфруецца. Людзі не могуць шпіёніць сеткі і паглядзім, што вы кажаце, да чаго Вы SSH-е выд к. І на самай справе, у даўніну дні CS50, таму ў 2009 калі я быў на першым курсе, так што Вы працавалі на CS50 праблемных набораў, было ў вас SSH-е выд, каб нейкі сервер што мы далі вам доступ да, і вы працавалі там. Такім чынам, вы не павінны гэта Графічны прыбор. Вы не павінны Gedit. У вас не было ўсе гэтыя рэчы, якія Вы маглі візуальна кропку і націсніце. Вы павінны былі працаваць у гэтым інтэрфейсе. Я аддаю перавагу працаваць у гэтым інтэрфейсе. Так частка таго, што мы збіраемся каб ісці на працягу прама зараз куча Каманды, якія вы павінны пачаць азнаямленне з як Вы прасоўваецца ў курсе. І, шчыра кажучы, як толькі вы прывыкнуць да іх, ён так нашмат хутчэй, каб працаваць у гэтым асяроддзі чым гэта працаваць з шукальнікам, перацягвання і націснуўшы рэчы. Дык вось мы тут. Цяпер я проста SSH-е выд ў, і так па змаўчанні location-- вас бачыў некаторыя з гэтых каманд у класе, але мы пойдзем па ўсіх з іх зноў. Па змаўчанні мы ў гэты хатні каталог. І каталог, проста іншае слова для тэчкі. Такім чынам, мы знаходзімся ў хатнім каталогу. Калі ласка, увядзіце Ls, спіс файлаў У гэтым каталогу. Я, мабыць, стварылі blah.c раней. Таму ў нас ёсць каталог працоўнага стала. Вы заўважыце падсвятленне сінтаксісу? Светла-блакітны падсвятлення паказвае каталог і прама белы паказвае толькі просты файл. Так што збіраемся быць некаторыя іншыя колеры, якія вы бачыце. Выкананы файл, верагодна, будзе каб быць зялёным ці нешта падобнае. Такім чынам, мы знаходзімся ў хатнім каталогу. Цяпер, калі я хачу пайсці ў іншае каталог, CD з'яўляецца каманда, якую я хачу. Так змяніць каталог, а затым вы перадаць імя каталога што вы хочаце пайсці ў. Так вось у нас ёсць чатыры варыянты. Я магу пайсці ў запамповак, і зараз мы бачым, тут ён абнавіў гэты дужках сказаць, што я ў ~ / загрузкі. Дык што ж такое Тыльда? Гэта скарачэнне для ваш хатні каталог. Такім чынам, практычна ўсё, што вы робіце збіраецца быць па адносінах да вашай хатняй дырэкторыі, і PWD проста каманда Я выкарыстоўваю адзін раз у год, што проста друкуе бягучы каталог. Такім чынам, вы бачыце тут, што ~ / Загрузак сапраўды вырашае к / дома / jharvard / загрузкі. Так / дома / jharvard мой хатні каталог. Такім чынам, мы можам кд кропка кропка. Цяпер кропка кропка знаходзіцца спецыяльны каталог, які заўсёды ставіцца да адной дырэкторыі ўверх. Так што, калі я знаходжуся ў ~ / загрузкі, затым кампакт пункту кропка збіраецца давесці мяне да тыльды. Што мы думаем кд кропка кропка збіраецца прынесці мне цяпер? Гэта будзе прыносіць мне / дома. Так Тыльда па працоўнай дырэкторыі друку, Я ў цяпер / дома / jharvard. адзін каталог уверх ад гэтага, Цяпер ён кажа тут / дадому. Цяпер кд кропка кропка. Цяпер я знаходжуся ў каранёвым каталогу, і вы не можаце зрабіць гэта зноў. Вы проста застацца ў Каранёвай каталог назаўжды. Каранёвай каталог мае цэлы букет рэчы, якія, калі вы хочаце зірнуць на, ты можаш. Напрыклад, калі я іду у бункер, які ўтрымлівае усе гэтыя двайковыя файлы, такія як Л.С., і кд, і ўсе гэтыя рэчы. Такім чынам, гэтыя каманды павінны існуе дзе-то ў сістэме, і гэта ў каталогу / бен. Але амаль усё, што вы робіце гэта будзе ад вашай хатняй дырэкторыі. І кд без якіх-небудзь аргументаў б там ні было, Вы маглі б сказаць, кд ~, ня трэба. кд збіраецца прынесці вам вярнуцца да вашай хатняй дырэкторыі. Адзін апошні. кд - збіраецца вярнуць вас да апошні каталог, што вы былі ў. Так што я проста cd'd два разы запар, так што мая Апошні каталог быў хатні каталог. Калі я іду ў слэш смеццевае вядро, і цяпер давайце і ў карыстальнікам. Доля карыстальнікаў. Пойдзем у акцыю карыстальніка. Цяпер я цяпер ў акцыю карыстальніка. кд - яшчэ ў смеццевае вядро. Такім чынам, гэта становіцца асабліва карысным калі вы have-- і ён будзе перамыкацца. Так доля карыстальнікаў, задняй бен, доля смеццевае вядро. Такім чынам, гэта становіцца карысным. Вы можаце знайсці сабе таго, многія, шмат, шмат ўкладзеных каталогаў. І вы хочаце, каб нешта зрабіць рэальны хуткі ў верхняй дырэкторыі. Вы ідзяце ў гэты каталог, зрабіць змены і ўсё ў такім духу, што, і зараз вы хочаце пайсці туды, дзе вы былі. кд -. Я заўсёды засмучаны калі я, аказваецца, ідзяце для гэтага каталога I хацеў зрабіць працу ў. Я заўсёды хвалююцца, калі я зрабіў яна ў два этапы, а не адзін крок, таму што гэта азначае, што кампакт-дыск - збіраецца прывесці ў гэтай прамежкавай месцы замест дзе я хачу пайсці. Такім чынам, мы бачым усё файлы спісаў. Мы ведаем, як абысці гэтага часу. Так што цяпер давайце пагаворым пра рэдагаванне файлаў. Такім чынам, у гэтым, вядома, вы амаль заўсёды будзе выкарыстоўваць Gedit. Калі вы хочаце, вы можаце зрабіць наступны крок і пачаць вывучаць тэкст каманднага радка рэдактар. Так існуюць розныя варыянты. І тыя, якія, верагодна, будзе стаўленне да вас, у нас ёсць Nano, Vim і Emacs. Так Nano з'яўляецца пачаткоўцы каманднага радка тэкставы рэдактар. Так Nano пойдзем на blah.c я стварыў раней. Гэта проста гэта стандартны файл C. І вы ўбачыце цэлую кучу рэчаў адбываецца ў ніжняй частцы экрана, і, мабыць, blah.c ўтрымлівае гэты код на Сі. Такім чынам, у дадзеным канкрэтным рэдактара, тое, што ён казаў на bottom-- Цяпер гэты сімвал ўстаўкі, мы бачым, гэты ^ G, ^ X, ^ O. Так, што практычна ва ўсіх Кантэкст, што вы бачыце, Вы маглі б бачыць, што сімвал курсора ў у іншых месцах у Інтэрнэце, на перапаўненне стэка, што-то падобнае. Гэта амаль заўсёды азначае кантраляваць. Такім чынам, каб выйсці я хачу зрабіць Кантроль X. кіравання X, выходзіць. І я магу выкарыстоўваць маю стрэлку Клавішы для перамяшчэння. Звярніце ўвагу, я не магу назваць і націсніце лёгка. Вы павінны выкарыстоўваць ваш стрэлку Клавішы для перамяшчэння. Там можа быць налада каб клікаць. Але давайце зробім некаторыя змены. Зараз кантроль X ісці выхад. Гэта скажа Захаваць зменены буфер. Цяпер падказка, к для так, н для не. Кантроль C для адмены. Я проста скажу, так. Імя запісу ў файл. Па змаўчанні файл што яна ўжо ёсць. Націсніце Enter. Добра. Цяпер я проста рэдагаваць файл, выратаваў яго, і ён змяніўся. Так Nano з'яўляецца самым простым тэкставы рэдактар ​​прывыкнуць. Альтэрнатывы Вім і Emacs. Тыя, тэкставыя рэдактары вышэй ўзроўню што ёсць вельмі круты крывой навучання. Так маё асабістае перавагу з'яўляецца Вім. І гэта мае вялікае разнастайнасць варыянтаў. І як толькі вы абвыкнеце да яго, вы ніколі не будзеце хачу пайсці ў любы іншы тэкставы рэдактар, таму што вы проста ёсць так шмат рэчаў, даступныя для вас у іх, але гэта займае вельмі доўгі час, каб вучыцца. Так, можа быць, вы проста хочаце, каб прымусіць самі прама зараз, каб прывыкнуць да яго, але я б сказаў, гэта таго варта. Але гэта цяжка. І тады Emacs. Я заўсёды барацьба ў Emacs, таму што Я ведаю, як гэта зрабіць абсалютна нічога. Мабыць Emacs ня па змаўчанні устаноўлены на прыборы. Мы, верагодна, дадаць, што як установак па змаўчанні. Як толькі вы навучыцеся адзін з Вім або Emacs, ёсць няма важкіх прычын для калі-небудзь даведацца з другога боку, але гэта зусім іншы стыль. ОК, так што гэта рэдагавання тэкставых файлаў. АЎДЫТОРЫЯ: Калі вы затрымаліся ў Vim прама зараз, як зрабіць we-- Роб Боуден: Ёсць некалькі рэжымаў у Vim, і ёсць уся падручнікі па навучанні Vim. Так што, калі вам здарыцца быць ў рэжыме ўстаўкі ў парадку для ўводу тэксту, які вы можаце увядзіце што рознымі спосабамі, але я, як вы атрымаеце ў рэжым ўстаўкі. У або выйсці з нейкі адмысловы рэжым, які вы ў проста Уцёкі. І вы проста біць Уцёкі атрымаць з усіх ўкладзеных рэжымаў ваш ст. Нармальна, зараз я вярнуўся ў нармальны рэжым. І так у нармальным рэжыме, двукроп'е. Вы бачыце гэта з'явіцца ў ніжняй. А потым кв. Так кв сыдзе, калі вы ўнеслі змены, якія я-- ёсць я ўнёс змены? Я зрабіў змены, па-відаць. Так што калі вы ўнеслі змены, гэта будзе кажуць, што вы можаце паставіць клічнік. Я буду называць яго выбуху. Такім чынам, вы можаце накласці забарону на проста кінуць, нічога не робячы, або тоўстай кішкі WQ будзе захаваць і выйсці. Так ж наогул пісаць. Так запісаць файл. Я магу напісаць і кінуць. Ці вы маглі б проста дх шлема, в выбуху проста каб выйсці туды, незалежна аб любых зменах, якія Вы зрабілі. Добра, так што цяпер давайце go-- мы можам стварыць файлы. Пачнем выдалення файлаў. І я проста кінуць у адным Хуткі новая каманда, сэнсарны. Так закрануць Foo. Сэнсарны бар. Сэнсарны Баз. Калі I Ls, зараз мы бачым, што існуюць гэтыя файлы. Яны зусім пусты. Так сэнсарным проста лёгка спосаб адзін, [неразборліва]. Па-другое, тэхнічна проста стане гэта, ён абнаўляе пазнакі. Такім чынам, любы файл, які вы ствараеце мае адзнака, звязаныя з ім. Так Баз быў створаны на 14 верасня ў 16:21. Гэта зараз 16:22, таму, калі Я дакранаюся Баз зноў, мы бачыць, што Баз быў найбольш Нядаўна зменены ў 16:22. Але інакш я амаль ніколі паглядзець на часовыя пазнакі на файлы. Так навобмацак, тут я толькі з дапамогай гэта стварыць некалькі хуткіх файлы. Добра, так што цяпер ГТ Каманда, што мы клапоцімся пра тут. І мы можам ГТ бу. Скажам выдаліць рэгулярны пусты файл бу. І мы можам ўвесці у, і цяпер ён выдаляе. ГТ Баз. Выдаліць звычайны пусты файл Баз і тып н для не. Цяпер ён не выдаляецца. Так бар і Баз ўсё яшчэ існуюць. Foo сышоў. Габрыэль: Працягвайце гаварыць. Роб Боуден: Вялікі. Так назойлівага паведамлення тут, выдаліць рэгулярны empty-- што ты там робіш? Выдаліць звычайны пусты файл. Так што, калі мы не хочам, каб быць занепакоеныя гэтым паведамленнем, мы можам кінуць у гэтым -f Сцяг, і такім чынам, гэта сіла. І зараз, калі я ГТ -f, ён не збіраецца кажуць вы хочаце выдаліць гэты файл. Гэта будзе проста зрабіць гэта. І Ls, я не бачу бар там больш. Цяпер, калі гэта магчыма, небяспечна каманда. Яна, як правіла, не так ужо дрэнна. Мы вернемся ў секунду, як гэта можа стаць сапраўды небяспечным. І давайце створым некаторыя часовы каталог. MkDir, іншая каманда. Так MkDir гэта каманда што робіць каталог. А цяпер Л.С. мы бачым гэты добры святло сіні падкрэсліў часовы каталог. Я магу кампакт-дыск у тэмп. І я магу MkDir Foo. перайдзіце ў Foo. MkDir бар. перайдзіце ў бары. Такім чынам, мы бачым, мы можам лёгка атрымаць у нейкай даволі глыбокай ўкладзенасці. Зараз, як я выдаліць каталог? выдаліць каталог. Так што, калі я проста прама спрабуюць ГТ, як мы гэта рабілі з звычайнага файла, ГТ бар збіраецца сказаць не магу выдаліць бар. Гэта каталог. Там у адмысловай каманды для выдаленні каталогаў, выгляд. Так выдаліць каталог бар. Цяпер бар сышоў. Такім чынам, выдаліць каталог, я не вельмі шмат і не выкарыстоўваць. Прычына being-- цяпер давайце зрабіць звычайны бар файла тут. Так выдаліць каталог бу. выдаліць каталог. Не атрымалася выдаліць Foo. Каталог ня пусты. Такім чынам, вы не можаце выкарыстоўваць выдаліць дырэкторыю ў Каталог, ёсць рэчы ў ім. Так у вас ёсць некалькі варыянтаў. Вы можаце перайсці ў гэты каталог, выдаліць усё ўручную, а затым выйсці і RMDIR каталог. Гэта, безумоўна, гучыць раздражняе. Што рабіць, калі ёсць тысячы файлаў у там? Ну, вы маглі б ГТ *. Мы будзем казаць аб * у секунду. Гэта ў асноўным азначае, што ўсе рэчы. Але яшчэ лепш, так ГТ -г. Так ГТ -r-- ў вялікай колькасці кантэксты, -r азначае рэкурсіўны, які мы будзем казаць аб тым, што рэкурсіўныя сродкі ў некалькі тыдняў. Але гэта ў асноўным азначае, траверс паўната гэтага каталога і выдаліць усе. Так ГТ -г Foo скажа спусціцца ў каталогу Foo? Так. Выдаліць звычайны пусты файл Foo / бар? Так. Выдаліць каталог Foo? Так. Так што цяпер Foo і ўсё у межах яна была выдаленая. Цяпер, можа атрымаць асабліва раздражняе when-- давайце дакранацца 1, дакранацца 2, дакрануцца 3. Можа ёсць цэлая куча файлаў. Калі б я хацеў, я мог бы стварыць тысячы файлаў у тут. І ГТ -г Foo збіраецца каб быць вельмі раздражняе. Так, так, так, так, так, так. З значна больш файлаў вы бачыць, як шмат разоў Я павінен быў бы набраць так. Ну, мы толькі што бачылі раней, як мы можам пазбавіцца ад неабходнасці набіраць так, -f. Так MkDir Foo кд Foo сэнсарным 1 2 3. Такім чынам, ГТ -rf Foo збіраецца выдаляйце запар Foo цалкам. Няма хуткае. Няма нічога. Foo сышоў. Так што я аддаю перавагу выкарыстоўваць гэта Каманда ўвесь час. Тым не менш, гэта вельмі небяспечна каманда, таму што, калі я раблю нешта накшталт гэта, ён не запытае. Гэта ўжо не будзе. І гэта адбываецца даволі часта, і нават у больш высокага ўзроўню CS курсаў. Часам мы ўбачым што-тое, дзе хто- кажа, што я выпадкова наш ГТ ВЧ-е выд мой дом каталог і ўсе мае P набору сышоў. І гэта разбуральнае, але няма смеццевае вядро. не Там няма там нічога каб вы маглі атрымаць. Гэта проста сышоў. Яшчэ горш будзе нешта накшталт ГТ -rf /. Такім чынам, мы толькі што абмяркоўвалі што каранёвай каталог. Ён праводзіць усе файлы на вашай сістэме. Рэчы, як правіла, атрымаць даволі брудна пры выдаленні рэчы, як Ls, і кд, і ўсе з іх. АЎДЫТОРЫЯ: У чым розніца паміж РМ, РФ, і ГТ * Роб Боуден: Так ГТ * - Элісан: Пытанне было ў чым Розніца паміж РМ, РФ, і ГТ *. Роб Боуден: Так ГТ *. Зорка ў агульным азначае, што ўсе змесціва гэтага каталога. Спроба думаць пра іншае спосабы паказваючы зорку. Ну, зорка на самай справе наогул азначае адпаведнасць любы малюнак. Так што, калі ў мяне ёсць файл з імем dog1, закрануць dog2, дакрануцца cat1, дакрануцца КАТ2. Так Ls * 1 збіраецца друкаваць cat1 і dog1, таму што зорка можа быць запоўнена у with-- трэба быць там, але зорка можа быць альбо котку або сабаку. Гэта дзікая карта. Гэтае слова я шукаю. Дзікі карты. Ці я мог Ls сабака *, і Я дабраўся, каб бачыць dog1, dog2. Так што тыя, якія пералічаныя файлы якія адпавядаюць гэтай канкрэтнай схеме. Можна выкарыстоўваць Ls такім чынам. Ls * зорка адпавядае чаму-небудзь. Дык гэта будзе друкаваць усё змесціва гэтага каталога бо ўсе яны супадаюць. Гэта не збіраецца друкаваць што-небудзь у каталогах верхняга ўзроўню. Калі ў мяне ёсць падкаталог, Foo, і дакрануцца студзені 2 3-- так што цяпер, калі ГТ * зоркі, выдаліць cat1, КАТ2, dog1, dog2. Не магу выдаліць Foo. Гэта каталог. Так зорка пашыраецца да ўсяго файлы ў каталогу. Так тэхнічна ГТ *, як кажуць ГТ cat1, cat2, dog1, dog2, нешта. У той час як ГТ -rf, тэхнічна зорка будзе зрабіць тое, што мы хочам, але ГТ -rf-- калі я выходжу з гэтага каталог, ГТ -rf тэмпература, што збіраецца пайсці ў тэмпературы і рэкурсіўна выдаліць усе. Так зорка асобны ў тым, што, што Зразумела, по-- так гэта справа што я бягу ў гэтую справу што падахвочвае мяне для каманд а затым выконвае і робіць ім, я называю гэта мая абалонка. І так гэтая абалонка сама праграма. І калі б я хацеў, я можа працаваць у / бен / баш. Абалонка называецца баш. І зараз мы бачым, што-то змянілася нязначна, і гэта таму, што мае налады для абалонка некалькі адрозніваюцца. Але цяпер я тэхнічна працуе Абалонка ў маёй арыгінальнай абалонкі, і я магу выйсці з гэтай абалонкі, і цяпер Я вярнуўся да сваёй ракавіны верхняга ўзроўню. Мэта кажучы што is-- зорку. Так зорка з'яўляецца тое, разумеюць баш. Так ГТ -rf, -rf сцяг зразуметыя толькі ГТ. Ён ведае, што, калі вас прайсці -rf што вам хочаце, каб ён рэкурсіўна выдаліць усе файлы без выдачы запыту. Зорка-то зразумеў па баш, што, калі вы кажаце, ГТ *, Баш не збіраецца казаць эй ГТ *, зняць зорку. Bash збіраецца сказаць ГТ * выдаліць cat1, КАТ2, dog1, dog2. Гэта аўтаматычна будзе пашырацца усе файлы ў каталогу. І сапраўды гэтак жа тыльды яшчэ адзін Сімвал, які Баш разумее. Калі вы кажаце, кд ~, баш пашырае што ў вашым хатнім каталогу. Іншыя пытанні да гэтага часу? ОК так што мы збіраемся пачаць ісці хутка. Ўкладка завяршэнне. Проста, каб кінуць яго там. Шмат людзей не разумею, што гэта існуе. Так што, калі я друкую кд Доу, я хачу пайсці ў загрузак. Мне не трэба, каб увесці nloads. Я магу проста націсніце Tab. Так яна прызнае, што Dow з'яўляецца прэфіксам, што нічога не супадаюць яшчэ ў гэтым каталогу, так што гэта будзе завяршыць, што для вас. Цяпер я магу ўвайсці. Я таксама, што рэкурсіўна. Так MkDir нешта. Пойдзем у Foo. MkDir бар. Так вяртаючыся да майго дома каталог, я бачу, запампоўвалі. Цяпер патрапіўшы ўкладку зноў, аўтаматычна збіраецца запоўніць Foo. Гэта адзіны даведнік. Удар ўкладку зноў, аўтаматычна збіраецца запоўніць бар. Так што цяпер я ў (~ Спампаваць / Foo / бар). Так што гэта завяршэнне ўкладка, кожны раз, калі я дабраўся да працоўнага дня, і я стаю над чыё-то плячо, і яны збіраюцца ГТ D-O-W-N-L-О-A-D-S, я памірае. Проста ўкладка, ўкладка, ўкладка, ўкладка. Так вызначана выкарыстоўваць ўкладку. І сапраўды гэтак жа і ўніз, шмат людзей Проста здарылася ніколі не ўдарыў уверх і ўніз. Гэта будзе прайсці папярэдні Каманды, так што калі вы проста пабег што-тое, і вы хочаце, каб запусціць яго зноў, проста затрымаць, пакуль вы атрымаеце да яго. Добра. Так хутка, некаторыя іншыя рэчы. Давайце вернемся ў тэмп. Давайце створым некалькі файлаў. Так тут, я проста буду пералічваць нейкія словы. сабака, котка, мяў. Давайце зробім сабаку, рыбу. Так што цяпер рэпутацыя з'яўляецца вельмі карысныя каманды, што вы выкарыстоўваць для пошуку ва ўсім файлы для канкрэтнага тэксту, і тэхнічна гэта можна зрабіць сапраўды складаныя выразы для таго, каб адпавядаць. Дык вось, калі я вычленіць, і тое, што я хачу, каб шукаць? Скажам Я шукаю котак, і Я хачу, каб шукаць усе гэтыя файлы. Так як я раблю ўсе гэтыя файлы? Зорка. Такім чынам, у файле адной, у мяне ёсць кот. Я, верагодна, маглі б называецца яна што-то лепш, таму што выглядае як нумары радкоў ці нешта. Але ў файле аднаго мяне ёсць радок з коткай. У файле дзве ў мяне ёсць радок з коткай. Так што цяпер я магу зазірнуць ўнутр файла аднаго і см, о, так, што файл сапраўды котку. Апавяшчэнне файл тры ня быў падабраны таму што котка не там. Я магу вылучыць інфармацыю аб мяу. Толькі файл два мае мяўканне. Так што гэта можна сумясціць, зноў, з -r, якая як я ўжо казаў часта азначае рэкурсіўны. І таму я магу прыйсці сюды, Grep -r для любой асобнік of-- давайце рэдагаваць гэты проста выкінуць котку ў там. Так вычленіць -r для любога асобніка Котка ў дадзеным каталогу. І гэта будзе рэкурсіўна пошук паддырэкторыяў. Такім чынам, у Baz, ёсць котка. У TEMP / 2, ёсць котка. І ў тэмпературы / 1 ёсць котка. Дык вось пошук у файлах. Цяпер вы можаце таксама выкарыстоўваць знаходку. І так знайсці канкрэтна пра пошук файлаў з зададзеным імем. Так давайце зробім некаторыя больш. Пойдзем у загрузак. Сэнсарны dog1. Сэнсарны КАТ2. Сэнсарны cat_dog. Сэнсарны CatCat. Таму я хачу, каб знайсці ўсе Файлы з сабакам у імя. Так знайсці, і на самы доўгі раз, калі я не памятала, як знайсці не працаваў, пакуль я, нарэшце, чытаць нешта, што прымусіла яго так ясна. Так што знайдзіце, аўтаматычна рэкурсіўна. Вам не трэба, каб прайсці -r. Так што знайдзіце кропку. Мы не казалі аб пункце яшчэ. У той час як кропка кропка заўсёды азначае адзін каталог уверх. Dot заўсёды азначае бягучы каталог. Так што я мог ГТ -r кропку ў Сапраўды гэтак жа я магу ГТ -rf *. У канчатковым рахунку яны зрабіць тое ж самае. ГТ -rf кропка збіраецца зняць ўвесь бягучы каталог. ОК, якія я не хачу, каб зрабіць там. Але знайсці кропку. Так рэкурсіўна шукаць току каталог, і зараз усё пасля гэтага куча сцягоў, якія вы выкарыстоўваць, каб выключыць рэчы ад вяртання. Так што знайдзіце кропка вяртае ўсё тое, што яго можна знайсці ў бягучым каталогу. Такія ўсе файлы рэкурсіўна шукаць. Мы ўбачым, некаторыя з тых, хто ў секунду. Але ў выпадку, калі вам цікава, як я раблю што, такім чынам, каманднае Да, па меншай меры ў маім тэрмінале ў Mac ачышчае яго. Кантроль L звычайна ачышчае гэта для якой-небудзь тэрмінал. Вы таксама можаце ўвесці ясна. І калі вы калі-небудзь ў дзіўную scenario-- гэта здарылася са мной пару time-- дзе колеру вашых падказак усіх сапсаваў, ці вам не ў стане ўбачыць што-небудзь набіраючыся калі вы друкуеце, таму што часам як колер фону усталёўваецца гэтак жа, як колеру пярэдняга плану і зараз вы не можаце бачыць шрыфты. Скід гэта тое, што проста скідае Вам змаўчанні чорным фоне з, белы спераду, або тое, што Вы ўсталёўваеце іх. Так, дзе мы былі? Знайсці кропку. Так што цяпер усё гэта ў мінулым Кропка абмяжоўвае вынікі да чаго-тое, што адпавядае дадзеная мадэль. Дык вось, я хачу, каб пошук усё з імем кошкі. Я нічога не атрымаў. Чаму гэта так? Ну, я проста шукаю што-то з сапраўды такім імем ката. Калі я хачу, каб шукаць што-то што ёсць некаторы шаблон, і cat-- каціроўкі тэхнічна не з'яўляюцца неабходнымі, але я кідаў іх туды. Так што цяпер ён знаходзіць CatCat, таму што гэта адзінае, што мае некаторае адвольнае карціна з наступным кошкі. Я магу паставіць кошка *, і цяпер знайсці CatCat, cat_dog, КАТ2, таму што тыя ўсе рэчы з коткай у пачатку наступным небудзь. Вы можаце сумясціць гэта. Калі вы хочаце знайсці ўсе файлы C што ў вас ёсць, вы можаце зрабіць * .c. Мы blah.c тут. Дык вось знаходка работ. Вы можаце шукаць. Ён мае цэлы букет сцягоў для далейшых абмежаванняў. І адзін на іх, скажам -d. Так састарэлым. О, гэта не тое, што я хачу. Ня -d. Тып d. Так што знайдзіце кропку - тып d. Так што, што толькі што зрабіў гэта Я шукаю для ўсіх файлаў у бягучым каталогу з a-- d пазначае directory-- тыпу каталогаў. Гэта вяртае ўсе каталогі у бягучым каталогу. І тыпу F ўсе рэгулярныя Файлы, усё не каталогі. Так што гэта проста Прыклад іншых спосабаў можа абмежаваць пошук іншы чым проста імя файла. Гэта было 30 хвілін. Усё яшчэ. Элісан: Я вецер праз. Усё будзе добра. Роб Боуден: Такім чынам, некаторыя іншыя рэчы. Цяпер бац, клічнік. Так што ў цэлым азначае: добра, давайце паглядзім прыклад. Так! Е, што, што будзем рабіць? Ну гэта, здаецца, паўтарыў знаходка кропка -тыпу е. Што о! Г? Гэта проста адлучыць -r котку *. Так бац вы можаце выкарыстоўваць, каб паўтарыць Нядаўна зрабіў каманду. Так што, калі я друкую! GRE, ён збіраецца зноў запусціць каманды, якія пачаліся з GRE найбольш у апошні час. І вы можаце бачыць усё гэта Каманды з гісторыяй. Так гісторыя. Гэта ўсё Каманды Я бег сёння. І добра, што гэта не ў літаральным сэнсе абмяжоўваецца сёння, але я выкарыстаў толькі гэта Прыбор на сённяшні дзень. Гэта ваша паўната Гісторыя вашай абалонкі Bash, за выключэннем таго, адсякае на нейкі момант. АЎДЫТОРЫЯ: Што адбудзецца, калі вы робіце Гісторыя каманды [неразборліва] і пра памылку у выніку ўсё роўна будзе друкаваць the-- Роб Боуден: Так, калі ёсць Памылка ў адным з гэтых commands-- так скажам, што гэта памылка каманды не знайшоў. Тым не менш з'яўляецца ў гісторыі. Добра. Іншыя пытанні па тэме? Дык вось выбух. Цяпер, сапраўды карысная каманда, чалавек. Так што дае дапаможнік для дадзенай каманды. Так скажам, чалавека Ls, так гэта паказвае мне Ls. У ім пералічаныя змесціва каталога. І гэта тое, дзе я бачу, што ёсць гэтыя розныя сцягі, якія існуюць. Такім чынам, мы бачым, што Ls -l існуе калі б мы павінны былі прачытаць, што. Ls -l дае мне гэта поўны спіс каталог з тым, хто з'яўляецца ўладальнікам файла, памер файла, мадыфікаваная пазнака. Так Ls -a яшчэ адзін, што вы маглі б на самай справе выкарыстаць некалькі часцей. -al мой самы агульны прыкмета гэтыя мінулыя Ls. Так -а, звярніце ўвагу, што ёсць шмат больш файлаў, чым проста Ls. Ls -a. Што агульнага з усімі гэтымі файламі? Яны пачынаюцца з кропкі. Так што гэта пагадненне ў Linux, што файлы, якія пачынаюцца з пункту схаваныя. Дык гэта проста азначае, што калі мы проста прамыя Ls, ці мы шукаем гэты каталог, выкарыстоўваючы які знайшоў эквівалент, або для Windows Правадыр эквівалент, што мы не хачу, каб гэтыя кропкавыя файлы. Яны проста забруджваюць погляд на рэчы. Такім чынам, яны схаваныя калі вы адмыслова прасіць іх нешта накшталт -а. Так што я магу кд ў .local, і я бачу, што, што само па сабе з'яўляецца каталог з агульны каталог, і прыкладання і бла-бла-бла. Так кропка, файлы, яны проста схаваныя. ОК, так што іншыя важныя. У мяне ёсць пара, я магу прапусціць. Давайце проста рэальны хуткі размова аб Перанакіраванне файла рэчы. Такім чынам, ёсць цэлы комплекс серыя рэчаў, якія вы можаце рабіць з імі, але толькі, каб убачыць іх, скажам, рэха. Яшчэ адна каманда. Сапраўды нямы каманда. Усё гэта робіць друк, што я кажу гэта, каб. Так рэха прывітанне. Гэта проста паўтарыў прывітанне экране. Прывітанне свет. Адгалоскі прывітанне свет. Так адна каманда або адзін Сімвал, які Баш разумее гэта больш, чым сімвал, і то ёсць выхадны сімвал для файла. Так што, калі я выхадны, каб гэта Фу, ёсць цяпер файл называецца Foo, усярэдзіне які з'яўляецца прывітанне свет. Так заўважыць, што, калі я рэха прывітанне свет труб у Foo, гэта не рэха прывітанне свет. Замест гэтага ён быў уведзены ў файле Foo. І іншая каманда проста кінуць яго на цябе, кот. Гэта просты спосаб, каб проста цалкам спіс змесціва файла так што ў мяне няма, каб адкрыць тэкставы рэдактар, для яго прагляду. Так змесціва Foo файл з'яўляюцца прывітанне свет. І я мог котка blah.c, змесціва гэтага. Зноў жа, гэта каманды, якія, не чакаюць, што вы іх усіх на памяць. Ідэя вы бачылі іх. Можа быць, вы працуеце на што-то, і ты як я стаміўся ад адкрыцця гэтага файла. Я хацеў бы проста паглядзець на ўтрыманне сапраўды хутка. Вы можаце зрабіць гэта, то азірнуцца назад і сказаць пра I памятаю нешта накшталт што існуе, і гэта котка. Так што адбываецца ў файл. Зараз ёсць на самой справе не любы добры Прыклад чытання з файла яшчэ. Што-тое, што бярэ што-то ад стандарту ў? Любая простая каманда Linux? Калі мы дабіраемся да яго, праз пару тыдня ўсё piece-- добра, што, На гэтым тыдні ў вас ёсць кавалак, дзе вы пачаць прымаць ўвод ад карыстальніка. І так, як правіла, пры ўводзе што ўвод з клавіятуры. Замест таго, каб друкаваць, што паступаюць на клавіятуры, Вы можаце замест трубы з файла так што, калі вы робіце Марыё, ./mario, Труба ў ад якога-небудзь файла, і што збіраецца запусціць праграму Марыё. Ня чакаючы ўводу ў клавіятура, а не гэта проста зачытаю радкі з файла Foo. Так больш Foo змяшчае яго ў файл Foo, і менш, чым Foo бярэ матэрыял з файла Foo і выкарыстоўвае ў якасці ўваходных дадзеных, што да гэтай праграме. І толькі, каб убачыць яго, мы маглі б таксама паўтарыць Foo бар Баз, а затым замест аднаго больш, давайце зробім два ў Foo. Што гэта рабіць? Гэта проста дадае ў файл. Такім чынам, замест заўважылі, калі я рэха-бла ў Foo, а затым котка Фу, гэта проста бла. Такім чынам, калі вы выснова ў файл, яго цалкам перазапісвае файл. Калі вы проста хочаце дадаць, двойчы [? грэйдэр. ?] І апошняе, гэта труба. Труба становіцца нашмат больш складаным, дзе ён прымае выснову адной каманды і падае яго ў наступнай камандзе. Такім чынам, некаторыя звычайная справа, гісторыя. Так, цьфу, я не хачу глядзець на гэта. Паказаць усе каманды ў маёй гісторыі дзе я вычленіць-рэд за нешта. Не, гэта зман. Паказаць усе каманды, дзе я знаходжу. Усе знаходзяцца каманды я калі-небудзь кіравалі. Так гісторыя. Цяпер гісторыя выводзіць на экран гэты спіс каманд, але я не хачу, каб Выхад яго на экране. Замест гэтага я збіраюся трубы яго ў Grep. Так што давайце адлучыць інфармацыю аб усіх выпадках знаходкі. Так што цяпер замест GREP ўзяцця ўваход, замест of-- Grep здольны апрацоўваць як input-- мы з дапамогай Grep крыху па-іншаму тут. Такім чынам, замест таго, каб друкаваць спіс рэчы, якія мы хацелі шукаць і сказаў Grep прымае ў якасці ўваходных дадзеных. Так што, калі я проста Grep знайсці, яго чакае, каб я тыпу рэчы. Так кот прывітанне знайсці. Добры дзень. Знайсці. Звярніце ўвагу, кожны раз, калі я друкую знайсці ён прызнае, што я набраў знаходку. Такім чынам, замест гэтага, будзе пошук файлаў для знаходцы. Так гісторыя цяпер збіраецца Выхад спіс усіх каманд. Мы пакласці, што выхад, і мы кормім яго адлучыць, і таму ён выплёўваючы усе асобнікі знайсці. Таму я сказаў, што гэта быў бы заблытаным гэта калі я-- гэта ўсё ж такі заблытанай. Калі я адлучыць інфармацыю аб Grep. Звярніце ўвагу, што гэта ў значнай ступені заўсёды паказваючы каманду I проста пабег, таму што гэтай камандзе Сам мае Grep ўнутры яго. ОК, так што любыя пытанні па тэме? І я буду перадаваць яго па ў гэты момант. Спадзяюся, гэта добры Агляд ўсіх каманд што вам не трэба мець запомніў, але яны складаюць цвёрды 95% таго, што я зрабіць у камандным радку. Таксама майце на ўвазе, што ў камандным радку Сам, баш гэта мова праграмавання, і таму, калі вы сядайце на яго, вы магчыма, захочаце зрабіць сапраўды складаныя рэчы. І таму ён мае нешта накшталт завес, і IFS, і ўсіх тых, што вы збіраецеся, каб прывыкнуць да са сваімі мовамі праграмавання. Але што знаходзіцца за межамі Аб'ём дадзенага падзелу. ОК, так што ніякіх пытанняў? АЛЛИСОН: Не? Габрыэль: Вы збіраецеся to-- Элісан: Я магу зрабіць гэта на шахце, калі вы хочаце. Мы можам бачыць, што адбываецца. Роб Боуден: Off для Allison. Элісан: Ву. Ты недасягальны, Роб. Ты хочаш, каб пераключыцца з вамі? Ці вы атрымалі, ОК. Я збіраюся паспрабаваць і ня цалкам можа быць як доўгім там. Давайце паглядзім, калі гэта воля працаваць так, як я хачу, каб. Можа быць? Ха-ха! Так. Так што я проста хачу, каб вельмі хутка ісці праз зменныя, цыклы, умоўныя, і трохі ад кампілятара. Калі ў вас ёсць пытанні па у любы час, калі ласка, спыніце мяне. Гэтыя хлопцы будуць нагадваць мне паўтарыць Ваш пытанне ў выпадку, калі я забыўся, але не павінна быць занадта дрэнна. Так зменных, так. У нас няма аднаго з вашых Скрэтч часткі тут. Я ўпэўнены, што большасць з вас, калі Вы былі нейкія гульні што вы стварылі з нуля, вы мелі адсочваць тое, як ацэнка, або час, ці нешта падобнае. Так што тыя, ярка-аранжавы штук, якія мы бачым там проста драпін форма зменныя, і вы, безумоўна, быць з дапамогай зменных на працягу вашых праграм. Калі вы не, я не вельмі упэўнены, што вы робіце. Але ў любым выпадку, вялікую справу, вызначэння зменных. З З кожная пераменная мае мець тып, абвешчаны, так што я даў вам вельмі Наогул адзін у верхняй частцы. Такім чынам, вы будзеце мець вашы увядзіце, а затым усё, што Вы вырашылі назваць вашу зменную. Такім чынам, у гэтым выпадку неабходна ўвесці ў вашым спісе зменных. У нас ёсць тры прыклады. Чар некаторай ступені, з А, які з'яўляецца тое, што Я ўпэўнены, што вы ўсё хочаце каб атрымаць у гэтым класе. Вы можаце вызначыць некалькі зменныя па адной лініі пакуль яны ўсё той жа тып, якая з'яўляецца нашым другім прыкладам ёсць дзе ў вас ёсць тры Зменныя, х, у, г. Яны ўсе паплаўкі. І тады вы можаце таксама, у гэты апошні Прыклад з INT лікам і колькасці каманд, вы можаце ініцыялізаваць іх прама там. Такім чынам, у сярэднім, напрыклад, дзе мы проста паплавок х, у, і г, тыя, якія яшчэ не ініцыялізаваны. Яны не маюць ніякай каштоўнасці. Або яны маюць значэння для смецця. А калі паспрабаваць і выкарыстоўваць іх, кампілятар будзе крычаць на вас. Вы павінны як аб'яўляць і ініцыялізаваць зменныя. Так што ў гэтым апошнім, мы робім іншае. Мы аб'яўляем зменныя з забіць і колькасць каманд, і мы ініцыялізацыі іх, даючы ім іх пачатковыя значэння 7 і 4 адпаведна. Прахладны. Усё добра? Дзіўны. Такім чынам, некаторыя канвенцыі. Калі вы, хлопцы, чыталі праз стылі 50, гэтыя проста рэчы, якія мы хацелі б для Вам рэалізаваць у вашым стылі. Так значныя імёны. Калі вы пачнеце называць рэчы толькі х, у, г, асабліва як вы атрымаеце ў працяглы праграмы, вы верагодна, заблытаць сябе і быць як тое, што гэта зменная, якая адносіцца да. Я паняцця не маю, што гэта значыць. Так што, калі гэта маецца на ўвазе правесці ацэнка, называюць яго забіць. Калі гэта маецца на ўвазе правесці нейкі адказ або прывесці, даць яму імя, як, што. Для завес, якія мы будзем трапіць у на наступным слайдзе, Адна літара зменныя выдатныя. Роб Боуден: I, J і К. усяго пагаднення для для завес што ўсе чакаюць іх называцца I, J і К. Вы можаце патэлефанаваць them-- я бачу шэраг слупок або радок выкліку часам на працягу двух ўкладзеных цыклаў, і гэта таксама свайго роду стандарт. Але я і J цалкам зразумеў. Элісан: Так, я і J ты зусім нармальна. Для яснасці, як у некаторых з вашых набораў P, магчыма, мае сэнс, каб мець больш апісальныя рэчы ў там проста каб адсочваць яго. Але я думаю, I, J і К я думаю, Пераважная большасць з нас усё выкарыстоўваюць. Роб Боуден: З гэтым канвенцыі, так стыль мае важнае значэнне. Гэта адзін з чатырох восяў на якім вы ацэньваюцца, і гэта так лёгка проста перайсці Ваш P усталяваны ў канцы і пераканайцеся што ёсць не стылістычныя памылкі. Таму пераканайцеся, што вы табулируя правільна. Пераканайцеся, што вашыя зменныя называюцца. Пакіньце некаторыя каментары. Гэта вельмі лёгка атрымаць тыя пункты. Вам не давядзецца думаць пра тое, што-небудзь для таго, каб атрымаць гэтыя акуляры. Вам не трэба, каб зразумець што-небудзь з. Гэта проста робіць яго выглядаць даволі. Элісан: На ​​самай справе, мы ёсць стыль 50, які раскажа вам, дзе вы Месінга , Калі вы сапсаваць па стылі і скажу вам дакладна, што вам трэба выправіць і як вам трэба, каб выправіць гэта. Гэта таксама проста добра адзначыць што гэта палітыка, вядома што калі вы ў офісе гадзін і ваш код з'яўляецца беспарадак, мы можам адмовіць у дапамозе Вы пакуль не выглядае лепш. Так што пачніце прама, трымаць адзіны стыль, Вы таксама проста збіраецца зрабіць ваша жыццё нашмат прасцей, калі Вы спрабуеце прайсці адладкі. Калі вы спрабуеце высветліць, дзе Вы прапускаеце фігурная дужка і яны паўсюль, вы проста зрабіць сваю ўласную жыццё больш складана. Так адпавядаць стылю. Я абяцаю, што гэта будзе зрабіць вашу жыццё прасцей. Гэта зробіць наша жыццё прасцей. Усё будзе значна больш шчаслівым. І гэта тое, што вы хочаце. Габрыэль: Ваша ацэнка будзе вышэй. Элісан: Так, і ваша ацэнка. Калі TF гэта, як вы, мае тэндэнцыю быць спрыяльным. Добра, а затым проста Другі момант тут. Паслядоўныя ініцыялізацыі. Так, як мы бачылі, можна абвясціць і ініцыялізаваць рэчы. Некалькі зменных у адным радку. Адна рэч, мы б не хацелі вас зрабіць, гэта абвясціць некаторыя зменныя а не ініцыялізаваць іх на тое ж самае лінія, што вы ініцыялізацыі іншых. Такім чынам, у выпадку, што зроблена не мае сэнсу наогул, мы маем прыклад тут дзе мы абвясціўшы цэлымі ў зменных кварталаў пятакоў і пені, але кварталы і пені няма пачатковага значэння. Мы не ініцыялізаваць іх, але прама ў сярэдзіне там мы ўжо ініцыялізаваны пятакоў на 0. Так што альбо рабіць, чвэрцяў і дзесяць цэнтаў, драбяза. Або чвэрці раўняцца 0. Dimes раўняцца 0. Пені раўняцца 0, або што-то тыя пачатковыя значэння. Вялікі рэч са стылем, быць паслядоўным. Калі вы сумняваецеся, быць паслядоўным. Але прытрымлівацца нашым гідам стыль таксама. Прахладны. Ўсё там добра? АЎДЫТОРЫЯ: Дзе стыль кіраўніцтва? Элісан: гід па стылі з'яўляецца on-- што сайт? Габрыэль: Я думаю, што гэта manual.cs50.net/-- Элісан: Стыль? Габрыэль: Стыль. Так. Элісан: Так. Так пытанне, дзе гэта стыль 50. manual.cs50.net/style. Так? АЎДЫТОРЫЯ: Калі мы вызначаем Зменныя, гэта ОК калі пакласці, як [неразборліва], як INT ацэнка, а затым інтэрвал мэта. Так бы вы сказаць, што зараз мы атрымаў вызначыць іх разам? Элісан: Так пытанне, варта ў вас ёсць залішняя код калі вы вызначаеце зменныя, такія як Int лікам і На наступным радку INT гульні? Роб Боуден: Ёсць, безумоўна, выпадкі, калі залішняя код дрэнна. Я не буду разглядаць што залішняя код. Я амаль ніколі не заяўляюць кратнае зменныя па адной і той жа лініі калі-небудзь. І калі што-небудзь, гэта таму, што Звычайна я пакідаю свайго роду каментар тлумачачы, што пераменная з'яўляецца для. Так што я буду казаць, INT брамніка слэш слэш. Адсочвае б там ні было. Увогуле слэш слэш. Так што гэта значна хмулацей такім чынам паставіць іх усё на адной і той жа лініі. Я проста ніколі не ставіў іх на адной лініі. Элісан: Я адчуваю, што гэта асабістае перавагу на дадзеным этапе. АЎДЫТОРЫЯ: Ці значыць гэта, пайсці на для завес і іншае таксама? Роб Боуден: Як ўнутры? Як міжнар я роўная 0 коску даўжыня роўная-то? Гэта ў вас няма выбару. З для завес ініцыялізацыі part-- так што вы, магчыма, бачылі толькі INT I роўны 0 коскі я менш чым тое, што кропка з коскі я плюс плюс. Гэта INT I роўны 0, тэхнічна можна таксама рабіць тое, што мы бачылі раней з сінтаксісам коскамі. INT I роўны 0 коскі J роўная 3 коска да роўная 5. Вы не маеце выбар, каб падзяліць што на некалькі ліній, і гэта стандарт. Бачачы гэта ёсць добра. АЛЛИСОН: Awesome. Ну, зручна пераходзіць у пятлі. Так што так, вось у нас ёсць некалькі прыкладаў з пятлі, што вы, хлопцы, бачылі ў пустым. І, вядома, усе гэтыя можа проста быць адноўлены ў С. І яны ў асноўным дазваляюць вам паўтарыць якой-небудзь ўчастак кода да пэўнага стану задавальняецца, якія мы будзем трапіць у праве пасля размовы аб завесы з умоўных. Такім чынам, мы маем тры асноўных тыпу. Для, у той час, і зрабіць час, якое мы ўсё пойдзе праз прама цяпер. Такім чынам, спачатку адзін для завес. Такім чынам, для некаторых умоў, выканаць гэты блок кода. У нас ёсць трохі прахалоднай Графік тут унізе. Але ў асноўным у вас ёсць у Ваш для, што першай лініі, вы збіраецеся ініцыялізаваць зменныя. Так як мы казалі, я гэта роўна 0 або I, роўная 10. Усё, што трэба, што Пераменная быць гэта збіраецца ініцыялізаваць там, аб'яўляць і ініцыялізаваць да некаторага значэння. Такім чынам, мы маем некаторыя стан, што адбываецца быць праверка нашага Пераменная супраць чагосьці. Такім чынам, у гэтым выпадку тыповы выпадак, дзе можа быць, вы хочаце, каб гэтая частка кода каб выканаць пяць разоў. Такім чынам, мы павінны былі б INT I роўны 0, і мы хачу, каб гэта было, калі я менш 5. Так што стан проста збіраецца праверыць, што кожны раз, калі. Калі гэтага ўмовы праўдзіва, гэта збіраецца запусціць код, які дакладна што гэтая маленькая схема паказвае. І так ён выконвае яго. Ён абнаўляе зменную, якая з'яўляецца тое, што мы бачым у апошняй частцы нашага за ініцыялізацыя кольцы ёсць. Так што будзем проста працягваць рабіць гэта пакуль што ўмова не выканана, і затым ён выходзіць цыкл і працягнуць перайсці з астатняй часткай вашай праграмы. Ўсё там добра? Прахладны. Дык вось прыклад, вельмі падобныя на тое, што я толькі што казаў пра. Такім чынам, мы проста хочам, каб раздрукаваць гэта CS50 ў 10 разоў. Такім чынам, вы бачыце тут у нас ёсць наш для, а затым мы ініцыялізацыі зменнай Я роўным 0. Наша ўмова праверкі што гэта менш, чым 10. Так ацэньваюць у дакладна, калі мы ўпершыню пачаць, а затым абнаўляе нашу зменную кожны раз, што ён на самай справе выконвае і выводзіць гэта CS50. І скончыцца пасля 10 разоў. Прахладны. Такім чынам, хоць завесы ў наступны раз. І, як вы бачыце тут, мы проста павінны некаторыя ў той час як гэта condition-- пытанне? АЎДЫТОРЫЯ: Як я магу скакаць на самай справе проста не адно лік, але два нумары [неразборліва] Я плюс плюс плюс? Элісан: Так што пытанне ў тым, як вы можаце абнавіць зменную больш чым адной за адзін раз. Так што я плюс плюс будзе абнаўленне на адзінку кожны раз. Калі вы хацелі, каб абнавіць яго, два, вы маглі б зрабіць, я плюс роўная 2. Роб Боуден: Вы бачылі плюс роўна ў лекцыі яшчэ? АЎДЫТОРЫЯ: [неразборліва]. Элісан: Гэта эфектыўна Тое ж самае, як я раўняецца я плюс 2. Так што збіраецца ўзяць яго і абнавіць яго на два кожны раз. Плюс роўная як раз тое, мы называем сінтаксічны цукар. Роб Боуден: Так, тых, існуюць амаль усе арыфметычныя аперацыі. Так што я раз, роўнае падвоіць лік. J разрыў роўны 3 такая ж, як J роўная J дзеліцца на 3. Элісан: Ці мінус раўняецца 2 будзе памяншэння I на два кожны раз. Роб Боуден: Нават сучасная роўна. Вы яшчэ не бачылі бітавых аператараў, але ўстаўкі роўная і Ампэрсанд роўна, усе тыя, існуюць. Элісан: Так шмат разоў, асабліва з першых двух набораў P, Вы будзеце, верагодна, павялічваецца на адзін, так што я плюс плюс, J плюс плюс усе рэчы, якія вы збіраецеся каб, як правіла, быць з дапамогай. Але што стан абнаўлення цалкам пад вашым кантролем. Вы можаце абнавіць яго любымі крокам або ў якой бы шлях вы вырашыце. Можа быць, вы нават хочаце, каб гэта было выпадковае лік часам. Але так, ёсць шмат рэчы, якія можна зрабіць з гэтым. Вы не абмежаваныя I плюс плюс. Роб Боуден: Проста так вас ведаю, што гэта існуе, гэта таксама існуе ў іншай форме, плюс плюс я. Так што калі вы калі-небудзь пошуку ў Інтэрнэце і здарыцца ўбачыць плюс плюс я, ў значнай ступені азначае тое ж самае. Элісан: Прахладны. Добра? Дзіўны. Такім чынам, хоць завес. Вельмі падобна. У вас ёсць якое-небудзь ўмова. Галоўнае, каб заўважыць Тут замест таго, тры розныя часткі ўсталяваць, у нас ёсць адзін. Мы проста ёсць ўмова які правяраецца. І такім жа чынам, як доўга, як што стан ацэньваецца як ісціна, Ваш код будзе працаваць. І калі гэта хлусня, гэта спыняе, крок на наступным частцы вашай праграмы. Так што гэта свайго роду like-- што добры прыклад праверкі па нейкай нармальны стан? Габрыэль: У той час як дакладна. Элісан: Вы маглі б зрабіць у той час як дакладна. Добра, 1 роўны 1. Роб Боуден: Вы можаце зрабіць while-- толькі замест выкарыстання для завесы, Вы заўсёды можаце закадаваць для цыклу у той час як пятля, так што я больш, чым 0 або у той час як я менш за 10. АЛЛИСОН: Awesome. І тады мы робім падчас завесы, якія выдатна падыходзіць для праверкі карыстальніка, дзе Вы хочаце, каб атрымаць што-то ад Ваш карыстальнік, убачыць, калі яна дзейнічае, а затым працягнуць адтуль. Так, адна з рэчаў, каб ведаць, з'яўляецца з зрабіць у той час як у тым, што ён збіраецца выканаць, і тады ён будзе паўторна выканаць калі гэта ўмова выканана. Так, верагодна, лепшы спосаб зрабіць гэта гэта проста, каб убачыць прыклад тут. Так як я толькі што згадаў, карыстальнік праверка сапраўды useful-- або зрабіць whiles сапраўды карысна з праверкай карыстальніка. Так што гэта проста будзе паўторна запытваць некаторую карыстальніка пакуль яны не паказаць станоўчае лік, якія могуць быць карысныя для вашага P набору на гэтым тыдні. І таму ў дадзеным выпадку, калі мы першапачаткова запусціць гэтую праграму, ён збіраецца друкаваць увядзіце станоўчае лік. Гэта збіраецца атрымаць некаторыя ўвод ад карыстальніка, а затым ён збіраецца праверыць што ўваход на ўмове што вы ўсталявалі для яго. Такім чынам, у дадзеным выпадку гэта будзе правяраць. Гэта будзе сказаць, у парадку, гэта наш ўклад адмоўны, ці гэта 0 або адмоўны, які будзе несапраўдным. Так то яно будзе паўторна запрашэнне. Пытанне? АЎДЫТОРЫЯ: Гэта тое ж самае, то, як у той час як завесы, калі вы проста скапіявалі гэты код і паклаў яго [неразборліва] завесы а? Элісан: Так пытанне было б гэта можа быць такім жа, як толькі час цыкл, калі б мы павінны былі проста скапіяваць той час як цыкл вышэй. Такім чынам, у гэтым выпадку, ваш час пятля збіраецца праверыць стан у першую чаргу. Такім чынам, у гэтым выпадку, калі мы паспрабавалі напісаць проста як час цыклу, было б сказаць, у той час як ўваход складае менш за адзін. Але мы не павінны ўваход для яго. АЎДЫТОРЫЯ: Калі вас [неразборліва] у той час як цыкл у тым ліку гэты код, але тады вы справіліся код вышэй той час цыклу таксама. Проста трэба было гэты код [Неразборліва] у той час як цыкл. Элісан: Было б тое ж самае, так. Такім чынам, вы маглі б проста write-- замест таго, каб do-- так. Габрыэль: Але гэта больш элегантна. Элісан: Так, гэта больш элегантна. Вы можаце патрапіць у дызайне і яшчэ шмат чаго, але так, вы можаце цалкам зрабіць гэта. Яшчэ пытанні? Добра, прахалодна. Такім чынам, мы шмат гаварылі аб умовах з усімі гэтымі завесамі, якія мы маем, так што мы на самай справе трапіць у ўмовы ў лагічных выразаў. Зноў жа, вы выкарыстоўваеце іх у C, так толькі збольшага пераход ад больш графічным інтэрфейсам на самай справе кадавання. Крута, так вялікі, калі. У асноўным толькі дазваляе ўвесці нейкая логіка ў нашу праграму і праверкі SYS ўмовы. Такім чынам, у дадзеным выпадку, у парадку, п больш 0? Так, гэта, так што вы можаце выканаць гэта. Гэта проста праверка некаторых стан, што ў Вас ёсць ўсталяваць, што я думаю, мы ўсё камфортна з праверкі ўмовы. Прахладны. Так што, калі яшчэ ваш іншы, Вы можаце сказаць, у парадку, калі гэта праўда, зрабіць гэта перш за ўсё. У адваротным выпадку я хачу, каб вы па змаўчанні і зрабіць што-то яшчэ. Як у гэтым выпадку, вы альбо выбраць станоўчае лік ці адмоўнае лік. У вас ёсць толькі два варыянты. Вы павінны гэта выканаць незалежна аб тым, што вашыя карыстальнік ўводзіць. Такім чынам, вы можаце сказаць, добра, гэта больш, чым 0? Прахладны. Раздрукаваць станоўчае лік. Калі гэта не так, раздрукаваць адмоўны. Усё добра? А потым адна справа прызнаць, што калі, калі ўмова выканана, яшчэ ніколі не таксама выканаць. Толькі адзін з іх будзе выканаць за адзін раз. Так што гэта кампраміс. Вы не можаце мець абодва. Вы павінны альбо першая ўмова. Вы павінны альбо калі або ў іншым месцы, не так. Які тады можа зрабіць рэчы яшчэ больш складанай, таму што вы можаце зрабіць, калі, інакш ён, а затым яшчэ. Такім чынам, у дадзеным выпадку, мы ёсць тры ўмовы. І зноў, толькі адзін з іх з'яўляецца будзе ў канчатковым выніку выконваецца. Такім чынам, вы можаце быць здзіўлены, добра, што, калі вас ёсць што-тое, што можна сустрэць два з іх. Можа быць, усё, што вы ўводу сустракаецца як ўмова бо, калі і яшчэ калі. Адзінае, што збіраецца бегчы Элісан: Як толькі ён знаходзіць нешта што ён адказвае умове, што праўдзіва, што да чаго гэта будзе не бегчы і нічога больш. Так што, калі ў вас было гэты лік паміж 0 і 5 для вашага першага, ці гэта лік паміж 3 і 5 для яшчэ, калі частка, і вы ўводзіце number-- Я сказаў 0 і 5 и-- 4. Гэта ударыць першы. Гэта скажа ОК, гэта лік паміж 0 і 5. Выканаць і пакінуць. Ён ніколі не будзе ударыць, што другі варыянт. Прахладны? Дзіўны. ОК, мы таксама мелі перамыкачы справаздачнасці, калі Вы хочаце атрымаць яшчэ more-- або шкада, Перамыкач знаходзіцца побач. Я забягаю наперад тут. Зноў жа, шматразовае калі блокаў дзе, як я толькі што сказаў, гэта, як толькі вы знойдзеце ўмова што сустракаўся і калі яшчэ, калі ў іншым месцы, яна пакідае. Калі вам трэба праверыць некалькі рэчаў, вы захоча выкарыстоўваць гэта, таму што яна будзе правяраць кожны раз тут. Так што гэта будзе працаваць праз і, калі гэта больш, чым або роўна 90, ён збіраецца друкаваць што. І ён будзе працаваць праз і праверыць кожны адзін з іх. АЎДЫТОРЫЯ: Так што гэта будзе больш памылак, чым [неразборліва]. Ці будзе гэта як [неразборліва]? Элісан: Пытанне ці будзе гэта багі ці гэта рабіць тое, што вы хочаце. Гэта сапраўды залежыць ад таго, што вы хочаце ад вашай праграмы. Аўдыторыя: Я маю на ўвазе, калі б вы паклалі 90 ст. Элісан: Калі паставіць 90-- АЎДЫТОРЫЯ: [неразборліва]. Габрыэль: Вы збіраецеся атрымаць дзве рэчы. Элісан: Вы збіраецеся атрымаць дзве рэчы. Так, два. Роб Боуден: Два? Элісан: Не. Роб Боуден: Чатыры. Калі паставіць 90, ён збіраецца сказаць вам атрымаў A, вы атрымалі B, вы атрымалі C, Вы атрымалі D. АЎДЫТОРЫЯ: [неразборліва]. АЛЛИСОН: справа. Так што я, залежыць ад таго, што хачу ад вас праграмы. Часам вам трэба праверыць некалькі рэчаў. Вы атрымаеце значна глыбей у тое, што добры дызайн, як вы ідзяце наперад. Важна разумеюць, што гэта будзе правяраць усе чатыры ўмовы тут. У той час як калі б гэта было, калі яшчэ, калі яшчэ калі яшчэ, было б ударыць, што першы выпадак, было б надрукаваць вы атрымалі A і зрабіць. Роб Боуден: нават калі мы вырашылі змяніць гэта, калі і больш або роўная 90, Калі і больш або роўная да 80, і менш, чым або роўна 89, калі N больш або роўна 70, і п менш або роўны 79, так, што будзе правільным. Гэта будзе рабіць тое, што мы хочам, але ён па-ранейшаму правярае кожны гэта. Так у той час як у першым выпадку, калі мы увядзіце 90 з толькі калі інакш, калі яшчэ, калі, і мы ўваходзім 90, то ён збіраецца выправіць. Ён праверыць першы адзін, друк вы атрымалі A, прапусціць усё, таму што гэта ўжо знайшоў той, які працуе. Усе выпадкі з'яўляюцца ўзаемавыключальнымі на аснове, калі яшчэ, калі яшчэ, калі. Так што буду выконваць Першы, калі, то гэта будзе зроблена. Гэта будзе ісці да канца. У той час як, калі мы зменім гэта будзе тое, што я быў кажучы з менш чым або роўна 89. Гэта збіраецца праверыць першы. Гэта будзе друкаваць. Гэта будзе праверыць другі. Гэта не збіраецца друкаваць. Праверце трэці. Не ў друк. Праверце чацвёртую. Цяпер у друк. Такім чынам, у гэтым выпадку, калі яшчэ версія, так як гэтыя выпадкі з'яўляюцца ўзаемавыключальнымі, гэта лепш выкарыстоўваць, калі яшчэ, калі яшчэ, калі, таму што будзе мець менш праверак умоў чым гэтая версія. АЛЛИСОН: Awesome. Так яшчэ адна рэч, мы можам зрабіць, гэта перайсці заявы. У асноўным Пераключальнік займае ў якой-небудзь зменнай, у дадзеным выпадку гэта п і вызначае гэтым выпадку выканаць. Такім чынам, гэта таксама з'яўляецца адным дзе вашыя выпадкі павінен быць свайго роду ўзаемавыключальнымі. Такім чынам, у гэтым выпадку, калі мы атрымліваем адзін, гэта збіраецца адпавядаць усё, што переменная-- незалежна ад значэння п заключаецца ў адным з гэтых выпадкаў, так 1, 2, або 3, і раздрукаваць адпаведны радок. І тады, калі вы заўважылі, тут, у нас таксама ёсць па змаўчанні, якія вы можаце з думаем як ваша яшчэ. Так што, калі вы выбіраеце любое іншае лік да таго ж 1, 2, 3 і ў гэтым выпадку гэта проста будзе друкаваць несапраўдным. Рашэнне, калі выкарыстоўваць ўмоўнага ладу ў параўнанні калі ELSES супраць перамыкачоў збіраецца быць што-тое, што вы, хлопцы, будзе см праектаваць мудрыя, як вы пачнеце пісаць больш складаныя праграмы, і няма ніякіх жорсткіх правілаў пра тое, калі выкарыстоўваць іх. Гэта сапраўды залежыць ад кантэксту. Роб Боуден: І толькі каб кінуць яго там так як гэта больш зручна раздзеле. Выключальнікі, яны, як правіла, be-- так вы абмежаваныя у шэрагу кірункаў вы можаце выкарыстоўваць іх, таму што IFS, ўмова можа быць даволі усё, што вы хочаце. З перамыкаецца выпадкі павінны быць лікамі, або тэхнічна яны могуць быць сімвалы, але сімвалы, як мы ўбачым, гэта ўсяго толькі колькасці. Такім чынам, яны павінны быць лічбы, але перамыкачы сапраўды больш эфектыўным, чым калі б яшчэ калі яшчэ, калі, таму што нават беручы прыклад before-- добра, Прыклад класа здаецца добрай. Ну, скажам, вось, мы замест таго, каб рабіць гэта як калі яшчэ, калі яшчэ, калі сцэнар. Так што, калі н роўная роўная 1, раздрукаваць вы выбралі невялікая колькасць. Калі яшчэ пры п роўная роўная 2, Вы выбралі сярэдні шэраг. Інакш, калі роўна раўняецца 3, высокі. Інакш несапраўдным. Так скажам, гэта было нашым сцэнаром. Так скажам, мы ўваходзім 4, таму мы чакаем, несапраўдным. Такім чынам, што, калі яшчэ, калі яшчэ калі падыход будзе працаваць гэта правярае першая ўмова. Гэта не задаволіў. Такім чынам, мы праверыць другая ўмова. Гэта не задаволіў. Праверце трэцяя ўмова. Не задаволеныя. Так мы ідзем у іншым месцы і раздрукаваць несапраўдным. Тое, як перамыкач працы гэта кампілюе у тое, што мы збіраемся называць табліцу пераходаў. Асноўная ідэя ў тым, што пры ўводзе 4, ён можа адразу перайсці ў стан па змаўчанні. Для гэтага не трэба, каб праверыць я такі выпадак 1? Неа, гэта не ён. Выпадак 2? Не-е. Выпадак 3? Не-е. Па змаўчанні. ОК, гэта павінна быць, дзе я хачу, а затым выканаць гэта. Не, гэта адразу ж пераходзіць у стан па змаўчанні. Ці гэта я ўваходжу 2, гэта адразу пайду да 2 без неабходнасці праходзіць праз выпадку 1. Так што ў гэтым шляху, рэальна ў наш час гэта не тое, што вялікая частка прыросту эфектыўнасці. Звычайна кампутары даволі хутка, і гэта не так ужо вялікая. Але гэта той выпадак, калі перамыкачы хутчэй. Калі вы сапраўды спрабуеце аптымізаваць, выкарыстоўваць перамыкач. Элісан: Прахладны. А то ў нас патройны аператар. Так што я ведаю, я ўжо згадваў раней слова сінтаксічны цукар. Так што гэта проста рэчы, якія робяць ваш код значна больш кароткім. Так што гэта адзін з тых выпадкаў. Так патройны аператар знак пытання тоўстай кішкі, як мы бачым, у радку лініі ы роўная п больш, чым 100 Пытальнік высокай тоўстай кішкі нізкая. Так у асноўным, як гэта працуе, гэта N больш, чым 100 ўяўляе сабой стан. Так што я думаю, што гэта можа мець сэнс. Гэта як задаць пытанне. Гэта сведчыць аб, п больш, чым 100. Хто ведае? І калі гэта мае значэнне праўда, ён збіраецца даць вам Першае, што гэта пералічаныя ў ім, які з'яўляецца высокай. У адваротным выпадку гэта будзе даваць вам нізкі. Так што гэта проста вельмі просты і эфектыўны спосаб зрабіць як калі ў іншым месцы. Вось і ўсё гэта. І калі б мы павінны былі напісаць гэта як калі яшчэ умоўны, было б, калі п больш 100, вярнуцца высокая. У адваротным выпадку, вярнуцца на нізкім узроўні. Гэта проста значна больш кароткім спосаб напісання яго. Роб Боуден: Так што гэта прыватны прыклад з'яўляецца кожны раз, калі вы робіце нешта як гэта, гэта шаблон дзе я выкарыстоўваю патройных вельмі часта. Такім чынам, мы не казалі пра рамках яшчэ, але я ненавіджу бачыць коскі струны с. Калі п больш, чым 100, з роўна высокім. У адваротным выпадку, з роўным нізкім. Так што карціны, гэтыя пяць ліній кода літаральна 100% часу могуць быць перададзены ў якой быў там з патройных. Так патройны, адной радкі кода. Калі яшчэ, пяць. Вось прыклад, які я пазначыць з кожнага часу. Гэта будзе выдатнае месца для патройны аператар. Гэта так чыста. Але людзі, як правіла, ніколі не выкарыстоўваць яго. Элісан: Прыбярыце гэта Гейб. Габрыэль: Такім чынам, зараз вы, хлопцы, усе даведаўся ў лекцыі на гэтым тыдні што ўсё ў Кампутар у двайковай, ці не так? Гэтак жа, як лямпы тут. Вы можаце быць уключаны і выключаны. І па ўсім, я маю на ўвазе літаральна ўсё. Некаторыя лічбы і сімвалы і радкі, і нават код, які вы пішаце, калі гэта будзе скампіляваны на машыне Код і ўсё ў такім духу, што, так што ўсё гэта зводзіцца да 0 і 1 ". І таму, калі мы маем справу з цэлымі лікамі, якія з'яўляецца тое, што гэта тэхнічна вельмі проста, мы павінны быць у стане рабіць такія рэчы, як дадаваць іх, што з'яўляецца верагодна, адзін з самых простых рэчаў Вы можаце зрабіць, каб два цэлых чысла, ці не так? Так складанне і адніманне працуе толькі як гэта працуе ў дзесятковай сістэме злічэння, акрамя вось гэта двайковы, ці не так? Так што гэта ў базе два. Так што дадайце 1 плюс 1. Гэта дае 0 і 1 пераносіцца. І проста працягваць рабіць, што, Так што цяпер прыходзіць больш цікавае пытанне. Мы ведаем, як прадстаўляюць усе цэлыя станоўчыя колькасці ў кампутары, але давайце зробім гэта практыкаванне. Уявіце, што вы, хлопцы, усе ў 1960 годзе, або што-то спрабуе стварыць кампутар, і вы павінны прыдумаць з спосаб захоўвання мінус 1, Напрыклад, любая ці мінус лік у гэтых адносінах. Як бы вы гэта зрабілі? Любыя ідэі? Проста кінуць што-небудзь на мяне. Так? АЎДЫТОРЫЯ: [неразборліва] прызначыць спецыяльная калі ваш [неразборліва]. Габрыэль: Вы можаце прызначыць спецыяльны біт, які будзе 0 або 1. Скажам адно, калі гэта станоўча і 0, калі ён адмоўны. І тады як астатняя частка біт проста, каб захаваць нумар. Прахладны. Так што гэта вельмі добрая ідэя. У нас ёсць, я не ведаю ,, 200. І калі першы біт роўны уключаны, то гэта плюс 200. Калі выключаны, гэта мінус 200. Прахладны. Існуе толькі адна невялікая Праблема з гэтым, які, калі мы паспрабуем падвесці вынік рэчаў. Такім чынам, уявіце, у нас ёсць 11111 тут, і мы падводзячы гэта з 00100 заўгодна. Калі гэтыя двое будуць станоўчымі, гэта нармальна. Але тады, калі адзін з іх адмоўнае, як скажам, што гэта трохі тут гэта той, які адказвае for-- я збіраюся зрабіць separate-- такім чынам, гэты азначае, што гэты лік тут дадатная. Гэта азначае, што адзін гэты лік тут адмоўны, ці не так? Але потым, калі ты збіраецца падвесці іх, вы трэба, калі заяву кажучы пра, калі гэта 0, Затым мая сума будзе нешта іншае, ці не так? Такім чынам, ёсць трохі больш разумны спосаб зрабіць што, што называецца ў дадатковым. Таму ў асноўным тое, што мы зрабіць, мы вызначаем мінус 1 быць рэч, што калі мы дадаем да 1 дае нам 0. Дазвольце мне паўтарыць гэта. Так скажам, што гэта тут 1. Што гэта тое, што натуральна ў станоўчых лікаў дадаў да гэтага дае нам 0? Што рабіць, калі мы спрабуем, каб дадаць яго да гэтага ліку? Мы збіраемся have-- Такім чынам, давайце дадамо. Мы збіраемся мець 1 плюс 1 0, а затым ён пераносіцца. А потым мы збіраемся, каб атрымаць 0 раз. Я атрымліваю блытаць. І вы збіраецеся атрымаць 0 і 0 і 0 і 0 і 0 і 0. Шмат 0.. У самы апошні адзін, мы не будзе ў стане несці яго на, таму што, скажам, мы толькі справа з аднаго байта, так што толькі 8 біт. Так што кампутар робіць па змаўчанні проста забывае аб тым, што [неразборліва], Добра? Так што гэта тое, што называецца ў ў дадатковым. Мы проста вызначаем мінус 1, каб быць рэч тут, што калі дадаць, што да 1 дасць вам 0. І гэта вельмі выдатна таму што мы на самай справе не трэба позна рэалізаваць іншы тып суму у залежнасці ад таго, ці з'яўляецца што адмоўнае або станоўчае лік. Ці мае гэта сэнс? Так што, адно, што мы робім тут для таго, каб пераўтварыць паміж станоўчым і адмоўным цэлы лік, то мы перавярнуць усё, а затым дадаць 1 да гэтага ліку. Калі вы паспрабуеце зрабіць гэта самастойна на лістку паперы, Вы будзеце бачыць, што мае сэнс. Але калі я вазьму гэты нумар тут, гэта пяць. Так што, калі я перавярнуць усё Тут, так 1, 1, 1, 1, 1. Flip, фліп, фліп. А потым я дадаю да яго 1. Я збіраюся мець дакладна мінус 5. Добра? Гэты выгляд мае сэнс, таму што, калі Вы спрабуеце падвесці гэта з лікам што ў нас было раней, што was-- давайце перавярнуць гэты раз. Гэта быў 101 і шмат 0-х. Пры спробе дадаць іх два ліку разам, Вы будзеце мець дакладна 0. Добра. Ёсць пытанні? АЎДЫТОРЫЯ: [неразборліва] Габрыэль: Што ты маеш на ўвазе? АЎДЫТОРЫЯ: Адмоўныя да станоўчы [неразборліва]. Габрыэль: Не, вы перамыкае і дадаць 1 заўсёды. Так. ОК, так што персанажы таксама кадуюцца двайковыя файлы. У нас ёсць табліца ASCII, як вы Таксама бачыў у лекцыі, ці не так? Так што гэта ў асноўным адлюстраванне рэчаў. І тут я не магу не падкрэсліць, што за кампутарам, і 65 літаральна тое ж самае. Так што, калі я пішу нешта накшталт паўкокс з роўна, я мог у той жа час проста напісаць 65 вось, і гэта будзе сапраўды такі ж, ОК? Там няма ніякай розніцы. Мы, як правіла, маюць тэндэнцыю ставіць сімвалы ў зменных тыпу. Чар, не таму, што яны па сутнасці зрабіў для гэтага, але таму, што з канвенцыі чалавека. Але вы можаце проста мець справу з цэлымі лікамі замест зменных тыпу CHAR, і вам будзе добра. Толькі фактычная розніца паміж паўкокс з і INT I з'яўляецца тое, што інтэрвал мае чатыры байта ў найбольш сістэмы, у той час як сімвал мае адзін байт. Яны, па сутнасці, Тое ж самае з пункту гледжання дадзеных. Так што будзе друкаваць тут? Тут мы друку лічбу пры дапамозе Printf з плюсам 1, і гэтак жа, як цэлыя лікі, сімвалы могуць быць падведзены, так сімвалы могуць быць падведзены. Так што гэта сапраўды 65. Так што гэта будзе 66, і тут у нас ёсць 65 плюс трохі мінус вялікі, які будзе, я не ведаю. Але гэта будзе дакладна разрыў паміж загалоўнымі літарамі і і больш дробныя літары, так мы збіраемся, каб атрымаць малое а, ці не так? Так. Дык гэта будзе раздрукаваць характар, які з'яўляецца дакладна, гэта адзін. Добра? Ёсць пытанні? Тут мы маем кучу розныя Тыпы лікавых зменных. Мы ўжо гаворым пра міжнар. Паплавок гэта проста спосаб to-- гэта сапраўды Пацешна, таму што, калі я ўпершыню даведаўся, праграмаваць таму ў дзень з Python, першая праграма, я калі-небудзь спрабаваў пісаць, я ўбачыў, што там было тып называецца ў і тып завецца паплавок. І паплавок быў для ўсіх сапраўдных лікаў. Тады я спытаў, чаму Я ніколі выкарыстоўваць Int тады? Таму што, калі я магу выкарыстоўваць усе сапраўдныя лікі з якая плавае кропкай, Я б проста спыніць выкарыстанне цэлымі, ці не так? Таму што рэальныя лічбы гэтак жа, як больш агульны. Аказваецца, што гэта не мае месца ў кампутарах таму што яны па сутнасці розныя рэчы. Так лікаў і плавае, аперацыі, якія вы робіце з імі істотна адрозніваюцца, таму што шляху, што яны захоўваюцца, добра? Мы збіраемся пагаварыць трохі трохі больш аб тым, што ў адну секунду. Так двойчы проста больш паплавок. Звычайна ў большасці сістэм, паплавок чатыры байта, гэтак жа, як міжнар. І двойчы ў восем байт. Доўга доўга на самай справе ўсяго толькі сімвал што вы дадаеце да тыпу як міжнар. Вы кажаце, што даўным-INT, як гэта. Даўным INT х, каб зрабіць яго больш. Такім чынам, у большасці сістэм, што дасць восем байт замест звычайных чатырох. І вы можаце ўпасці у, так што ён можа проста сказаць доўга доўга, і што працуе занадта, ОК? Вы таксама можаце рабіць іншыя рэчы, як непадпісаных INT, ці зноў толькі без знака таксама будзе працаваць. І, што б зрабіць х быць зменнай як усё станоўчае, так што вы не можаце на самой справе маюць адмоўны Лічбы ў шляху, што мы бачылі тут. Так наступны выдатны з якая плавае кропкай і дакладнасць. Гэта адна з прычын, чаму вам хочаце выкарыстоўваць цэлымі, а не плавае, таму Інтс 100% дакладным, ці не так? Гэта менавіта тое, што лік. Для плаваюць кропак, калі вас сказаць адказ роўны 1 над 10-- Я, аказваецца, ёсць дакладная Праграма тут, float.c. Гэта выводзіць да 20 знакаў пасля коскі. 1 дзеліцца на 10, і што звычайна складае 0,1, ці не так? Але вось калі мы робім плаваць, а потым мы запусціць яго, мы бачым, што гэта не зусім 0,1. Гэта 0,149-то. І чаму? Таму што вы не можаце на самой справе ўяўляюць сабой кожны адзіна магчымым рэальнае лік у памяці таму што ёсць незлічоная многія з іх. Так што мы тэхнічна толькі ў стане ўяўляюць сабой канчатковае колькасць з іх з канчатковым колькасцю дадзеных. Але гэта сапраўды цікава. Зараз гэта моліць Пытанне аб тым, як вы б ісці аб прадстаўляюць гэта з бітамі, ці не так? Так як захоўваюцца плавае? З цэлых было лёгка. Але з паплаўкамі вы хочаце Для максімальнага павелічэння, і вы хочаце, каб мець магчымасць прадстаўляць Велізарныя нумары і вельмі маленькія нумары, як 0.000001 адначасова. Такім чынам, яшчэ раз, тая ж гульня. Хто-небудзь ёсць ідэі, як мы маглі ісці аб прадстаўляюць паплавок у памяці? Проста выкінуць што-небудзь. Так, калі ласка. АЎДЫТОРЫЯ: [неразборліва], як калі гэта было два цэлых і адзін быўшы [неразборліва] і адно істота усе пасля коскі. Габрыэль: ОК, крута. Так два розныя колькасці. Вы можаце мець 12,45, так што гэта 12 і 45. Добры. Што перш чым вы збіраецеся казаць? Тое ж самае? Так? АЎДЫТОРЫЯ: [неразборліва] абазначэння дзе вы аддзяліць базу. Габрыэль: Навукова абазначэння, так, гэта, як правіла, тое, што адбываецца. Так што гэта тое, што называецца мантисса. Вось што на самой справе лік, а затым паказчык ступені проста дзе коска, ці не так? Так што гэта будзе нешта выгляду 1, 2, 3, 4, 5 разоў 10 у мінус 4. Я проста зразумеў, that-- так, дакладна. І тады гэта 10 у мінус 4 з'яўляецца будзе вызначаць, дзе коска, ОК? У Бразіліі мы выкарыстоўваем коску. Вось вы, хлопцы, выкарыстоўваць кропку. Так кропка. І гэта выдатна, таму што тады вы можаце засяродзіцца шмат вашых бітаў на гэтага хлопца тут, на мантиссы, і тады гэта будзе фактычная дакладнасць. І вы можаце зрабіць гэта альбо ў дзесятковай або ў сістэме, заснаванай двайковай. Існуюць розныя спосабы ажыццявіць гэта. Пытанні? Так? АЎДЫТОРЫЯ: Колькі месцаў пасля дзесятковай [неразборліва]? Габрыэль: Гэта складанае пытанне, таму што гэта ніколі не сапраўды на 100% дакладным, таму што, як вы бачыце тут, на некаторыя нумары гэта 100% дакладным. Я лічу, калі мы ставім 0,5 тут, гэта будзе 100% дакладным. Гэта будзе 0,500000. Так што ў гэтым выпадку, гэта выдатна. Але ў іншых выпадках, гэта значна менш дасканалым. На маю вопыту, як да чатырох, пяць знакаў пасля коскі даволі дакладным. Калі вы карыстаецеся двайны, ён збіраецца быць спосаб дакладней, чым, ОК? Роб Боуден: Так проста кінуць больш пэўны кантэкст на паплаўках, Я не памятаю, 100%, як у Спецыфікацыя паплаўкоў на самай справе працуе, але я заўсёды памятаю, што плавае пачнеце атрымліваць брудны. Такім чынам, ідэя ў тым, што, калі вы атрымліваеце сапраўды, сапраўды вялікія колькасці або вельмі, вельмі малыя колькасці, мы пачынаем ўсё горш і горш дыферэнцаваць паміж двума блізкімі паплаўкоў. Так як мне падабаецца думаць пра тое, з пункту недакладнасці плавае, Ёсць два паплаўкі, што калі я спрабую паказаць іх у С, нягледзячы на ​​тое, што яны розныя лічбы, яны збіраюцца быць інтэрпрэтаваць як той жа нумар, таму што мы не можам захоўваць іх па-рознаму. Мы павінны выкарыстоўваць тыя ж біты. І таму, калі мы дабяромся да сапраўды, сапраўды вялікая колькасць, казаць, як 10 да 300 або што-тое, што гэта на той момант што ад 10 да 300 або 5 разоў 10 на 300 не могуць быць дыферэнцыраваны ад 7 разоў 10 на 300. Так што гэта даволі вялікая розніца паміж дзвюма лічбамі. Але затым, калі вы атрымліваеце ўніз у нармальных рэчаў далёкасці, Вы, як правіла, даволі добра дыферэнцыяцыі. А потым, калі вы сядайце на самай справе мала, вы таксама атрымліваеце даволі дрэнна зноў. Так як цэлым букетам 0.0000, гэта становіцца даволі дрэнна. Габрыэль: Так, так хутка запіску. Ніколі не рабіце гэтага. Ніколі паспрабаваць параўнаць паплаўкі з дапамогай роўных з роўнымі, таму што нават калі яны амаль ж, амаль такі ж, не тое ж самае. Так што вы звычайна робіце гэта вы Вылічаная ім, прыняць абсалютная значэнне, што, і паглядзець, калі гэта менш, чым 0.0001 ці нешта падобнае, ОК? І выдатна. Я ведаю шмат людзей, у некаторыя фон на яве, асабліва тыя, хто зрабіў AP інфарматыка, праўда? І Java з'яўляецца мовай што ў асноўным грунтуецца на C, у гэтага ёсць некалькі вельмі вялікія розніцы. Але для завес, і IFS, і ўсё ў такім духу што, яны ўсё ж сінтаксіс. У мяне ёсць некалькі праграм тут, каб паказаць гэта. Так, напрыклад, просты прывітанне свет. Гэта прывітанне свет у С, што вам Хлопцы, безумоўна, знаёмыя з, і гэта, і гэта адзін знаходзіцца ў Java. Такім чынам, у Java ёсць гэта грамадскага класа, прывітанне свет, і дзяржаўнай статычнай сілы Асноўны, і струнныя аргументы. Струнныя аргументы ідуць з'яўляцца ў C у самы бліжэйшы час. Але давайце не будзем ісці туды яшчэ. Цяпер у нас ёсць пустата тут, а гэта азначае, што галоўны ня прымае аргументаў. А то ў нас System.out.println, і гэта выгляд эквіваленце для Printf. Тут мы на самай справе не патрэбен зваротны слэш н таму друку зав зробіць гэта за вас. Гэта дадае зваротны слэш н на канцы лініі. Але калі вы ідзяце ў нешта накшталт А для, вы можна ўбачыць, што яны ў значнай ступені тое ж самае. Так ініцыялізацыі, і стан і абнаўленне is-- я прапусціў прабел here-- яны ў значнай ступені тое ж самае, за выключэннем таго, Java ёсць таксама некалькі больш высокага ўзроўню рэчы. Тут мы можам зрабіць плюс я і Java аўтаматычна зрабіць гэта, я тут, які з'яўляецца цэлы лік, у радок, а затым дадаць два радкі разам. Тут, у C мы павінны зрабіць і% d. Лінія тут, для выглядае сапраўды гэтак жа. І калі мы паглядзім на тое, калі, МСФ Таксама выглядаць дакладна так жа, праўда? Так сапраўдныя вялікія адрозненні ў тых рэчах, якія вы бачыце тут. Грамадскі статычны, пустата, і Затым грамадскага класа, калі. Так Java мае тое, што называецца віртуальнай машынай. І гэта вельмі моцна на падставе якіх называецца аб'ектна-арыентаванага праграмавання, што з'яўляецца вельмі, вельмі распаўсюджаны парадыгма для праграмавання ў цяперашні час. І гэта класная рэч, што вы бачыце, што-то ад арыентацыі аб'екта, у стварэнні класа, а затым вам можна вывесці аб'екты з гэтага класа. Мы не збіраемся казаць занадта шмат пра тое, што ў CS50, але гэта, безумоўна, што-то сапраўды выдатна, асабліва калі вы хочаце пайсці ў Больш складаны вэб-распрацоўкі У канцы курсу, як прадставіць канчатковы праект і некаторыя добрыя рамкі і іншае. Таму ў асноўным ідэя ў тым, што вам не хачу, каб паўторна рэалізаваць нешта, так вы ствараеце што-небудзь вельмі агульны характар, як форма, а затым вы ствараеце розныя формы ад яго, а затым з кожнай з гэтыя формы, вы ствараеце некаторыя больш канкрэтныя формы ў трох памеры ці нешта падобнае. І ў іх ёсць гэтая іерархія яны ўспадкуюць ад астатніх, так усе функцыі і ўсе зменныя, якія вялікая форма тут мае, усе яны будзем мець, і ўсе яны з'яўляюцца будзе мець, і гэтак далей і да таго падобнае. Дык вось асноўная ідэя. З не мае, але C ++ сапраўды ёсць такі функцыяй. І Java знаходзіцца пад моцным уплывам па аб'ектна-арыентаванага падыходу, так вось чаму вы бачыце клас тут увесь час. І іншая справа, гэта віртуальная машына Java. Так што гэта, як мне здаецца, гэта вельмі разумная ідэя. Так што людзі, якія вынайшаў Java зрабіў гэта яны не хацелі, каб кампіляваць свой код двойчы калі б ім прыйшлося запусціць яго ў Windows, ці Mac, або Linux, так што яны робяць будзе літаральна бегчы нешта накшталт прыбора, але вы сапраўды не бачыце, што адбываецца. Такім чынам, яны запусціць віртуальную машыну ўнутры вашага кампутара, якія у асноўным, як міні-аперацыйная сістэма. І што аперацыйная Мэта сістэмы ў жыцці проста запусціць тое, што называецца байт-код. Таму замест таго, у C, тое, як мы б скампіляваць гэта зрабіць, калі, а затым запусціць ./if. Я забыўся зваротны слеш ст. У Java, вы маглі б зрабіць першы Java C скампіляваць яго, if.c. Гэта не кропка Java C. Гэта. І тады вам давядзецца ўцякаць ня ./. Вы атрымаеце гэты новы файл if.class, але вы не можаце сапраўды запусціць if.class зараз проста як мы рабілі раней. Гэта не з'яўляецца выкананым. Вы павінны запусціць. Вы павінны карміць яго ў Праграма называецца Java, і што праграма з'яўляецца віртуальнай машыны, а затым вы if.class, або, калі. Так. І тады гэта працуе. ОК, так што гэта свайго роду Віртуальная машына адбываецца. З не мае, што, такім чынам, калі б я быў у паставіць гэтую праграму ў машыне АС Windows, ён не будзе працаваць у С. У Java гэта робіць. Пытанні? Прахладны. Вось калі для супер раздзеле на сённяшні дзень.