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