[Гуляе музыка] ANDI Пэн: Гэта CS50, і Сардэчна запрашаем у тыдзень два часткі. Гэта на самай справе ў той час як тыдзень два нашых class-- фактычна, першы тыдзень у нас была падзел. Паказаць рук, як многія з вас усё прыйшлі да супер падзелу на мінулым тыдні? ОК, гэта нармальна. Гэта нармальна. Як многія з вас глядзелі супер падзел на мінулым тыдні? ДОБРА. А вы, хлопцы, зрабілі добра па праблеме ўсталяваць адзін? Так што я збіраюся ўзяць яго, што мы маем куча сапраўды разумных дзяцей у гэтым класе і ўсё будзе ў парадку. ДОБРА. Так first-- Па-першае, мы толькі збіраемся коратка перайсці ў парадак дня на сёння. Мы будзем казаць аб курсавых лагістыкі. Многія з вас, напэўна, ёсць пытанні, якія тычацца як рэчы працуюць у гэтым курсе. Мы на іх адказаць. Мы збіраемся коратка перайсці завес ў выпадку любы з вас, хлопцы прапусцілі супер падзел. Мы будзем казаць аб адлюстравання ASCII. Мы будзем казаць пра масівах, функцыі, аргументы каманднага радка. І, нарэшце, тое, што вы, хлопцы, напэўна, усё сапраўды хочаце быць тут, каб даведацца пра, Ваш pset2. Мы будзем мець некаторыя цікавыя трукі і парады аб тым, як гэта зрабіць. ДОБРА. Акрамя таго, па-другое, мы маем шмат цукерак тут. Той, хто любіць цукеркі, проста прыйсці сюды. Захопіце некаторыя. У мяне ёсць куча. У нас ёсць тоны ў офісе. Я сапраўды не хачу з'есці цукерку ўвесь дзень. Вы, хлопцы, павінны з'есці ўсё цукеркі, таму што я прынёс яго тут для вас, хлопцы. Проста ёсць цукеркі. Там будзе цукеркі кожная секцыя. Такім чынам, спачатку, хто я? Мяне клічуць Эндзі Пэн. Я з'яўляюся кіраўніком ТАЯ CS50 тут у Ельскім універсітэце. І ў дадатак да што, я таксама be-- калі хто-то like-- свой ход прыяцель, плячо, каб крычаць на. Калі ноч перш з вашага Pset, у Вы паняцця не маеце, што адбываецца, ўдарыў мяне. Мы паспачуваць разам, і гэтак далей. Проста ведаю, што я тут, як рэсурс для вас, як лініі фронту дапамагаючы вам, хлопцы, высветліць, як для вырашэння праблем у CS50 і за яе межамі. Мая электронная пошта andi.peng@yale.edu. Я таксама адправіць індывідуальны па электроннай пошце з мой нумар тэлефона ў ім так што не ўсё на Інтэрнэт можа ўбачыць свой нумар тэлефона. Не саромейцеся тэлефанаваць мне ў любы час. Сур'ёзна, мой тэлефон як правіла, прыкладаецца да маёй руцэ. Я не можа адказаць на працягу некалькіх хвілін. Я не можа адказаць на працягу некалькіх гадзін. Але я магу гарантаваць вам, калі Вы па электроннай пошце мне, калі вы тэлефануеце мне, напішы мне, я адкажу на працягу 24 гадзін. Часта, я адкажу, перш чым што, таму што я разумею што кожны атрымаў некаторыя праблемы, і вы хочаце, каб вашы адказы даць адказ вельмі хутка. Тым не менш, калі вы тэлефануеце мне 30 хвілін да што кавалак, які з-за чацвер night-- быць, як Эндзі, дапамажы мне, Я не started-- я магу даць Вы што плячо, каб крычаць на. Але гэта можа быць час, каб думаць аб як не рабіць, што ў наступны раз. ДОБРА. Ай. Як ён можа вярнуцца? Там мы ідзем. Такім чынам, у гэтым, вядома, у нас ёсць тона падтрымкі для ўсіх. У дадатак да толькі што раздзелы тут, якія вам кожны тыдзень атрымліваю выдаткаваць 90 выдатныя хвіліны са мной, у нас таксама ёсць прыёмныя гадзіны. Як многія з вас, хлопцы, ужо быў у працоўны час па дапамогу? Выдатна. Гэта сапраўды прыемна бачыць, таму што мы мець штат больш за 45 ТП і сертыфікацыі падрыхтоўку для гэтага, вядома, што тут знаходзяцца за дапамогу, вы, хлопцы з psets. Па панядзелках яны праводзяцца ў ТЭАл клас у 17 Hill House тут у Ельскім універсітэце. Па аўторках і чацвяргах, яны праводзяцца ў звычайныя. З 8:00 да 11:00 у значнай ступені кожны будні дзень. Заходзьце, выйсці. Любая праблема, няма problem-- проста заходзьце, і тады мы вам дапаможам ў гэтым. Па-другое, у дадатак да офісных гадзін і секцыі, у нас таксама ёсць шорты. Хто-небудзь калі-небудзь бачыў пару з шорты ці пакрокавыя відэа ў на вэб-сайце? ДОБРА. Такім чынам, яны на самой справе, вельмі карысна. Наш цудоўны вытворчасць Гарвардскага каманда там на гэтай школе да поўначы, яны знялі і вырабляецца гэтыя неверагодныя Праходжанне відэа. Яны возьмуць Вас крок за крокам праз як ісці аб рашэнні праблемы. Часта, калі вы блытаць аб простая канцэпцыя, асаблівая канцэпцыя, зірнуць, таму што мы, верагодна, кароткі на яго дзе-то на нашым сайце. І гэта, як правіла, вялікі рэсурс глядзець, калі вы знаходзіцеся ў першую чаргу страцілі аб тым, як справіцца з праблемай. Па-трэцяе, у нас таксама ёсць study50 і reference50. Так што вучыцеся на 50 Сайт гэта ўсяго толькі спасылка. Гэта, мне здаецца, study.cs50.net ці нешта падобнае. Проста Google гэта. У нас ёсць шмат слайдаў, падрыхтаваных. У нас ёсць шмат шорты і walkthroughs-- рэчы ўсё скампіляваныя вельмі прыгожа і акуратна для вас усіх, хлопцы праглядаць, якія паняцці см што вы збянтэжаныя аб. Гэта, напэўна, будзе пакрыта там, у study50. Reference50-- падобныя. У нас ёсць шмат розных нот лёгка даступныя для вашым распараджэнні. І, нарэшце, у нас ёсць тое, што называецца CS50 Абмеркаваць, форум, у якім, калі ў ноч перад вы робіце вашыя праблемы, скажам, ў вас ёсць пытанні. Увайсці ў CS50 Абмеркаваць. Задайце сваё пытанне. І тады адзін з hundreds-- магчыма, thousands-- аднагодкаў прымаючы гэты клас онлайн будзе ўвайсці. І, можа быць, хто-то можа атрымаць Ваш адказ перад слоікам TA. Па сутнасці, гэта проста онлайн форум, які мы ўсе можам выкарыстоўваць, каб абмеркаваць нашы праблемы. Гэта крута. ДОБРА. Так праблема ўсталёўвае. Мы збіраемся прама ў таўшчынёй праблемы ўсталюйце два. Многія з нас ужо змагаліся з праблемай ўсталяваць адзін. Мы ўжо ведаем, што, магчыма, чакае на працягу мінулай ночы, каб зрабіць вашу PSET не самы разумны, што трэба зрабіць у CS50. Саветы і падказкі па сутнасці для Поспех чытаюцца ўвесь спец. Як многія з вас ужо чытаць спецыфікацыі для PSET 2? ДОБРА. Гэта цвёрдае колькасць. Я ведаю, вы хлопцы, напэўна, прызналі зараз спецыфікацыі сапраўды доўга. Яны сапраўды, сапраўды доўга. Гэта сапраўды цяжка чытаць кожную радок гэтага асцярожна слова за словам. Вы хочаце, каб проста бегла, дзе ён кажа вам што-то рабіць. Я магу гарантаваць вам, не рабіце гэтага. Калі вы зробіце гэта, вы, верагодна, буду сумаваць-то дзе ён кажа вам, як пачаць праблему ці кажа вам, што імя ваша праблема, ці гэта кажа вам, гэта, мабыць, лепшы спосаб каб пачаць рабіць вашу праблему. І тады вы будзеце страчаныя. Пры спробе прачытаць вашу спекуляцыя на паўдарогі, шмат важнай information--, што вы не будзе ў стане сапраўды доступу. Так што чытайце ўсю спецыфікацыю. Паспрабуйце прачытаць усю спецыфікацыю на перш чым прыйсці да падзелу, таму што тады, калі мы казаць пра PSET, мы ўсе можам мець уяўленне што адбываецца. Па-другое, гэта канцэпцыя што я буду спасылацца на падабаецца шмат на працягу ўсяго семестра. Але па сутнасці, нам насустрач, праўда? Мяне, як ваш ТАЯ і Джэйсан, вядома менеджэр і Scaz якасці прафесара і Дэвід, як ваш прафесар і ўсё іншыя мілыя ТП у гэтым працэсе, памочнікамі ў гэтым course-- мы зробім усё магчымае, каб гарантаваць, што вы ўстаноўлены да поспеху ў гэтым працэсе. Мы будзем праводзіць падзел. Мы будзем праводзіць працоўныя гадзіны. Мы адкажам ваш тэлефон званкі, адказваць на электронную пошту, зрабіць усё, што ад нас залежыць, каб зрабіць упэўнены, што вашы пытанні адказвае. Тым не менш, дапамагчы нам таксама. Нам насустрач. Калі вы прыехалі ў працоўны час ня сыдучы ў раздзеле ня убачыўшы лекцыі, маючы ніякага Ідэя, што адбываецца, быць, як мне дапамагчы. Я збіраюся быць, як добра, я прашу прабачэння. Гэта можа быць час, каб аказаць што плячо, каб крычаць на, таму што я не ўпэўнены, што я магу зрабіць, каб дапамагчы вам калі вы не спрабуеце па меншай меры, дапамога самі трохі ў пачатку. Нам насустрач. Вы ведаеце, калі ласка, прыходзьце гатовы адказаць і атрымаць гатовы ўдзельнічаць у матэрыяле. Гэта робіць рэчы нашмат прасцей для ўсіх удзельнікаў. Так, гэта даволі шмат яго. Класіфікацыя. Так на праграме, гэта даволі у глыбіні адносна, як мы клас. Але па сутнасці, пробай у гэта 50% Вашага гатунку будуць psets, якія выдатны, таму што гэта дзе вы марнуеце велізарная Большасць свайго часу курс на. Віктарыны 40%, і ваш Канчатковы праект будзе 10%. Там будзе два віктарыны па ўсім курс семестра. Я думаю, што раз і даты таксама пералічаныя на праграме. Такім чынам, што мы будзем быць сартавання вашыя psets з'яўляецца тое, што ў нас ёсць, па сутнасці чатыры каштоўнасці, якія мы прыпісваем кожнага гатунку. У нас ёсць значэнне аб'ёму, Правільнасць, дызайн, і стылю. Такім чынам, як вы бачыце, што гэта свайго роду наш Формула для разліку psets. Тры мы даем найбольш Вага правільнасці, таму што відавочна, ваш трэнер павінны адчуваць за выключэннем выпадкаў, што мы хочам, каб праверыць. Вы, хлопцы, усе маюць check50 ў вашым распараджэнні. Гэта вельмі карысная функцыя што вы, хлопцы, усё гэта можа загрузіць код да нашых сервераў, дзе мы будзем правяраць яе для вас. І вы бачылі тых, frowny асобы, ўсмешлівыя асобы. Яны сапраўды, сапраўды карысна. Калі ласка, не будзьце студэнт, які хацеў спробаў жорстка ва ўсіх адказаў на іх. Я вызначана бачыў PSET дзе хто-небудзь бачыў усё значэння check50 і яны проста жорстка, калі in-- гэты лік, раздрукаваць гэты нумар. Калі гэты лік, раздрукаваць гэтага ліку. Не рабі гэтага. Нават калі тэхнічна check50 правільна, Ваш спосаб рашэння Праблема не правільна. Так проста выкарыстоўваць check50 эканомна. Але і пераканайцеся, што вы зразумець, як гэта працуе, Праграма функцыянуе у дадатак да check50, таму што мы не можам праверыць кожны магчымы выпадак check50. Мы будзем тэставаць некаторыя з іх. Дызайн па сутнасці справы, як добра распрацавана ваш код? Калі вы капіявання ўстаўкі некалькіх радкоў кода шмат, шмат разоў. Можа быць, вы не маюць цалкам лепшы дызайн у кодзе. Можа быць, прыйшоў час дадаць, што цыкл. Па сутнасці, тут гэта проста ўсё аб спробе зрабіць ваш код, спрабую напісаць код, як эфектыўна як можна так, што ваша праграма працуе як мага хутчэй. Нарэшце, у нас ёсць стыль. Так стыль свайго роду адвольным, суб'ектыўным. Я ведаю, што мы афіцыйна ёсць стыль 50 кіраўніцтва для CS50, дзе ён кажа табе, о, вы, павінен мець месца тут. Вы павінны роду фармаце код такім чынам. Вы павінны назваць гэта такім чынам. Я сапраўды не хвалюе, як такой, як Вы выбіраеце для афармлення кода, як доўга, як вам заставацца паслядоўным. Напрыклад, калі вы хочаце пакінуць прастору пасля вашых чатырох да вашага чатыры цыклу, проста рабіць, што кожны раз. Не від гэта зрабіць. Не зрабіць гэта ў іншы час. Калі вы хочаце захаваць кучаравыя дужкі прастору пэўным чынам, проста заўсёды зрабіць гэта такім чынам. Не від зрабіць гэта дзесьці тут і дзе-то не там. Калі мы класіфікацыі, гэта сапраўды цяжка калі ў мяне няма ідэі, як Вы фарматаванне кода, рэчы дурныя і не да месца. Калі вы проста трымаць яго ў адпаведнасць, гэта значна лягчэй для мяне, як вялікая каб мець магчымасць чытаць ваш код. Гэта значна прасцей для вас, як студэнту каб мець магчымасць праглядаць код і паглядзець, што здарылася з гэта скараціць чаму ёсць праблемы. Стыль з'яўляецца адным з самых простых рэчаў, вы, хлопцы, можаце зрабіць, каб атрымаць поўны ацэнкі. Па сутнасці, калі вы проста клапоцяцца, калі Вы плаціце пяць хвілін увагі каб ваш код кожны тыдзень, вы павінны быць поўны стыль ачкоў. Нарэшце, у нас ёсць тое, што называецца множнік маштабу. Scope-- Я ведаю, што гэта вялікі Слова, асабліва ў гэтым класе. Але сфера, усё, што сродкі з'яўляецца тое, што вы спрабуеце у psets да лепшага вашай здольнасці. Калі вы ўключыце ў трох з з вашых чатырох праблем і нават не спроба Апошні, вы, верагодна, збіраецца губляць некалькі кропак на сферу. Нават калі вы толькі пачынаеце праблему, зрабіць усё магчымае, каб прайсці праз гэта. Нават калі гэта не працуе, выключыце яго, таму што паказвае і дэманструе нам, што вы спрабуеце, што Вы паспрабавалі ўсталяваць праблему да лепшай з Вашай здольнасці. І тады мы можам даць вам поўная ачкоў за рамкі. Вобласць з'яўляецца таксама вельмі важным, калі мы казаць аб нізкай кроплі адзнака PSET. Так на працягу з семестр, вы, хлопцы, ёсць дзевяць psets. І мы на самай справе будзе падаць самая нізкая адзнака з тых дзевяці, але толькі калі ў вас ёсць поўны пункту размах. Так што, калі вы ўключыце ў няпоўным PSET, На жаль, мы не можам адмовіцца, што адзін, таму што Вашай вобласці не былі завершаныя ачкоў. Такім чынам, нават калі ў вас ёсць жудасны тыдзень дзе вы паміраеце і вы хворыя ці ваша сабака памірае, ваша котка памірае, і вы перагружаныя хатнімі заданнямі, проста паспрабаваць PSET. Зрабіце гэта ў меру вашых магчымасцяў. Калі гэта не працуе, гэта не мае значэння. Проста уключыце яго ў. Прынамсі, мы можам даць Вы ачкі за намаганні. А пры спробе ў гэтым класе. Прынамсі, нізкай кроплі адзнака для намаганні. Так што, так. Гэта даволі шмат яго. Хто-небудзь ёсць пытанні, каб далёка, як мы гатунку ў класе? Або любы з іх? Любы з іх так far-- Раздзелы, офісная гадзін? Прахладны. ДОБРА. Так што гэта пытанне, які не чалавек сапраўды любіць пагаварыць. Я сапраўды не хацеў, каб пра гэта казаць. Вы, хлопцы, сапраўды не хачу каб пачуць мяне гаварыць пра гэта. Але, на жаль, мы ўсе павінны гаварыць пра гэта. Дэвід правёў 20 хвілін у лекцыі казаць пра гэта. І гэта з'яўляецца прадметам акадэмічнай сумленнасці. Такім чынам, мы ўсе тут, верагодна, напісана эсэ-то ў нашай Ельскага кар'еры. Мы, верагодна, атрымалі размова, дзе мы сказалі не займацца плагіятам наш нарыс, таму што праца не наша. У кампутарнай навуцы, у нас ёсць такі ж канцэпцыі. Усе працы, якія вы дае, увесь код, які вы пішаце павінна быць код, які вы напісалі. Не павінна быць код, які Вы скапіяваныя з іншага. Не павінна быць код, які Вы гугле і пляснуўся ў і вы сапраўды не ведаю, ці працуе ён. Вы накшталт ёсць пачуццё што ён робіць, але не зусім. Калі вы сумняваецеся, па сутнасці, гэта проста быць разумным. На нашым навучальным, у нас ёсць цэлы спіс рэчаў, мы бачым, як разумна у параўнанні з не разумна. Напрыклад, разумна гэта вы і ваш сябар абмяркоўвалі, што лепшы спосаб пайсці аб логіцы вырашэння праблемы. Гэта даволі разумна. Тое, што не было б разумна, калі вы Хлопцы сабраліся, набралі такі жа код, і аказалася ў тым жа кодзе. Гэта не разумна. Тое ж самае, свайго роду эсэ. Калі вы хочаце, каб абмеркаваць з вашым сябрам, эй, гэта тое, што я хачу напісаць пра. Гэтыя крокі, якія я хачу часу, каб напісаць пра гэта, вялікі. Гэта выдатна. Калі ласка, супрацоўнічаць адзін з адным. Калі вы, хлопцы пачаць напісаць тое ж самае, ўключыць у тым жа артыкуле, што менш ОК. Таму, калі ёсць сумневы, проста не зрабіць гэта. Тут мы ў CS50, у нас ёсць сцэнары якія працуюць для аўтаматызацыі, каб праверыць не толькі правільнасць кода, але таксама унікальнасць вашага кода. Таму, калі ласка, не стаўце нас у становішча таго, каб звярнуцца ваша справа EXCOMM. Калі ласка, проста для ўсіх, давайце проста зрабіць гэта выдатны вопыт. Кожны вучыцца лепш, усе мы шчаслівейшыя, і мы ўсе настроеныя на дамагчыся поспеху ў гэтым працэсе. Нешта, што вельмі Унікальнасць гэтага класа Я думаю, што кожны павінен сапраўды звярнуць увагу на тое, што ў нас ёсць тое, што называецца шкадаванне агаворка ў нашай праграме. Так па сутнасці, на працягу 72 гадзін, калі Вы ўпэўненыя, што вы зрабілі нешта Вы не ўпэўненыя, быў сапраўды неабходнасці, калі ласка, прыходзьце да нас. Мы абяцаем вам, што на працягу 72 гадзін мы будзе апрацоўваць самі справы ня звяртаючыся да вышэй ўлада ў адміністрацыі. Так што, калі вы прыйшлі да мяне і кажуць, Эндзі, эй, я сапраўды шкадую, але я думаю, што ёсць пара радкоў па маім Код учора ўвечары, што я накшталт гугле, сышоў з стэка Перапаўненне, скапіруйце і ўставіць, і я вельмі, вельмі шкада аб тым, дайце мне ведаць. Калі ласка, не проста дазволіць ёй тлець і толькі спадзяюся, што я злавіць яго. Мы злавіць яго. Проста прыходзьце да мяне. Дазвольце мне ведаць, на працягу 72 гадзін. Мы высветліць, рашэнне. І мы абяцаем, што мы не будзем спасылацца на універсітэцкія ўлады па сутнасці. Так што гэта ў вашых інтарэсах проста быць сумленным з усімі удзел у працэсе. ДОБРА. ДОБРА. Так што цяпер, хутка, перш чым Я рухацца далей, хто-небудзь ёсць пытанні, якія тычацца лагістыкі ад таго, як курсы мы збіраемся працаваць, як секцыі збіраюцца бегчы, любы з што? ДОБРА. Так. АЎДЫТОРЫЯ: [неразборліва]? ANDI Пэн: Так. Так як quizzes-- многія з вас у раздзеле панядзелак / сераду? Як многія з вас у аўторак / чацвер? ОК, так што гэта цвёрдае спліт тут. Такім чынам, шлях, які мы запускаем гэта ў Ельскім універсітэце, што мы будуць мець два асобных quizzes-- адзін для кожнага section--, што будуць прынятыя падчас заняткаў. Я думаю, што гэта Кастрычнік канец кастрычніка, нешта падобнае, а тыдня адзін віктарыны. Так, так проста прыйсці ў клас. На гэтай панядзелак ці ў сераду, вы будзеце прымаць тэст. На гэтай аўторак або чацвер, вы будзеце прымаць розныя віктарыны. Але той жа матэрыял будзе пакрыта. Так. Добры пытанне. Так. АЎДЫТОРЫЯ: Дзе мы пайсці праверыць нашы ацэнкі? ANDI Пэн: Так. Так што я буду пасылаць па-за адрас электроннай пошты ўсе, што кожны тыдзень калі віктарыны graded-- або прабачце, калі psets ацэньваюцца. Psets звычайна аказалася апоўдні або ў пятніцу. Так што я абяцаю, што я буду паспрабаваць атрымаць іх назад да вас да поўдня наступнага пятніцу. Кожны раз, калі я Grade A PSET, я пашлю з апавяшчэння пра кнігу класа што кажа вам ваш рахунак можна глядзець анлайн. Так прама на гэтым тыдні, пасля таго як я завяршыць класіфікацыі psets на мінулым тыдні, вы, хлопцы, атрымаеце па электроннай пошце Апавяшчэнне кажу вам, Эй, гэта дзе вы перайсці праглядаць ацэнкі. І вы можаце бачыць кожны Аналіз вашых класах. Вы можаце бачыць каментары. Аб, хутка, што таксама. У раздзеле каментароў у вялікі Кніга, дзе я, напэўна, праводзяць большую частку свайго часу класіфікацыі. Так адна рэч, якая Вельмі важна, калі Вы, хлопцы, прагляду Вашы гатункі на вашых psets не толькі шукае на фізічным кошт але таксама знайшлі час, каб сапраўды прачытаў мае каментары. Часта гэта дае вам зваротную сувязь пра тое, як вы вырашаеце праблему. Калі вам трэба зрабіць, што-то крыху лепш, канструктыўная крытыка звычайна лепш прызначаць у тых раздзеле каментароў. Так што калі ласка, калі ласка, я збіраюся правесці час на напісанне каментароў. Калі ласка, я б вельмі ўдзячны калі вы, хлопцы, будзе чытаць гэтыя каментары. ДОБРА. Прахладны. Добра. Такім чынам, мы збіраемся, каб пачаць гаварыць і проста разгляд хутка некаторыя з матэрыялу з нуля проста так мы тыдзень на правай старонцы для пачынаючы праблемы на гэтым тыдні. Такім чынам, у той час як пятля з'яўляецца адным з трох тыпаў завес мы абмяркоўвалі раней у гэтым класе. Некаторы час цыклу істотна напісана ў сінтаксісе дзе, у той час як пэўны стан, Зрабіце гэта некалькі разоў, праўда? Думайце пра яго, у гэтым графіку тут. Вы збіраецеся пачынаюцца ў пэўная кропка ў кодзе. Вы збіраецеся увайсці ў ўмова цыклу if-- я не знаю-- х менш, чым адзін. Калі гэта праўда, што вы збіраецеся для выканання цела цыклу. І вы збіраецеся працягваць рабіць што зноў, зноў, зноў, зноў і over-- таму гэта loop--, пакуль ваш ўмова не стане ілжывымі. Так што ў гэтым шляху, у той час як завесы з'яўляецца адным з самых простых спосабаў напісаць які-небудзь ўмове, што Неабходна паўтарыць зноў і больш. Толькі будзьце асцярожныя, калі Вы пішаце якой-небудзь завесы што ў вас ёсць выхад у стан а таксама абнаўленне для б там ні так што ваш цыкл не проста прыйдзецца зноў і зноў бясконца. У любым выпадку, вы будзеце хочуць, каб пераканацца, што вы змяняеце некаторы аспект код або ў канцы цыклу проста каб пераканацца, што ў вас ёсць спосаб прагрэсавальнай да стане што вы хочаце, каб задаволіць да канца. Ці мае гэта сэнс для ўсіх? Мы проста не хочам быць якія апынуліся ў гэтай спіралі дзе мы ідзем вакол і вакол і няма ніякага спосабу, каб разарваць пятлю. І кожны цыкл па сутнасці ёсць спосаб зрабіць гэта. ДОБРА. Па-другое, многія з вас у вашых psets Марыё верагодна, выкарыстоўваць Гэты тып цыклу. Гэта называецца рабіць падчас цыклу. Перш за ўсё, хто можа сказаць мне, у чым розніца паміж спраў у той час як цыкл і ў той час як цыкл? Так. Аўдыторыя: зрабі той час як цыкл працуе на першы [неразборліва]. ANDI Пэн: Так, менавіта так. Так зрабі той час як цыкл заўсёды робіць тое, што знаходзіцца ўсярэдзіне спраў, у дужках там і робіць, што ўмова да праверкі the-- прабачце, робіць што-код перад праверка стану. І гэта асабліва актуальна для нас Тут у гэтым класе, таму што большасць часу мы збіраемся хочаце, каб заахвоціць карыстальнік на працягу некаторага роду уваходам. А потым, у залежнасці ад уваход яны даюць нам, то мы можам ацаніць, ох, зрабіць мы павінны заахвоціць іх зноў? Такім чынам, у Марыё, калі карыстальнік даў вам адмоўны рост, напрыклад, Вы збіраецеся першым радку і рабіць усё, што знаходзіцца ўнутры. Тады вы ідзяце, каб праверыць час. Вы ведаеце, гэта адмоўны 1, з'яўляецца тое, што станоўчае лік? Калі гэта не так, я збіраюся пайсці таму і паўтарыць рабіць і паўтарэння і паўтараць і паўтараць, пакуль яны нарэшце, даць вам нумар, які вам падабаецца, што ўсе мы можам выкарыстоўваць у нашым кодзе. Гэта вельмі важна для па сутнасці, любы карыстацкі ўвод. Я магу гарантаваць вам, любы раз у PSET дзе мы просім вас ўвесці якой-небудзь кода, мы верагодна, каб даць вам тэст выпадак, у якім мы збіраюся даць вам нешта дрэннае, што гэта будзе спрабаваць зламаць ваш код. Калі мы спрабуем спытаць вас Для ўводу лік, мы можам проста даць вам радок і паглядзець, як вы б справіцца з гэтым. Калі мы просім вас выкарыстоўваць ўзрост, мы можам даць вам адмоўнае лік каб паглядзець, як вы б справіцца з гэтым. Проста пераканайцеся, што вы, хлопцы, тэставанне на выпадкі, у якіх вы не атрымаеце лепшы ўваход, давайце проста сказаць. І зрабі той час як цыкл гэта часта лепшы спосаб стварыць свой код так, што ён адказвае, што аб'ём. ДОБРА. ДОБРА. Так што гэта, верагодна, найбольш Комплекс цыкл з трох што мы глядзелі на да гэтага часу. І, здаецца, вельмі страшна на першы погляд. Але я гарантую вам, пасля таго, як вы, хлопцы, атрымаць навык, як выкарыстоўваць цыкл, гэта адзін з самых карысных рэчаў, найбольш карысных інструментаў у вашым арсенале для прасоўвання наперад у гэтым класе. Так, напрыклад, у пустым, у нас была гэтая вельмі просты блок што толькі што сказаў, паўтараць гэта напэўна фразы пэўную колькасць разоў. Дарэчы, SAJ-- гэта Scaz Эндзі Джэйсан. Мы часта увайдзіце нашы лісты Сай. Калі мы кажам, Сай, не блытаць. Вось толькі мы. Такім чынам, у пустым, мы былі ў стане мець блок, які сказаў, што я люблю паўтараць Сай! 10 разоў. Вельмі проста. Логіка, якая з'яўляецца вельмі, вельмі проста, праўда? Я хачу, каб спачатку прайсці праз першы час і бачыць, што ў другі раз і бачыць, што ў трэці раз, і гэтак далей і гэтак далей, пакуль вы не націснеце 10. І тое, як мы будзе прадстаўляць, што ў Код проста праз просты цыкл. Такім чынам, для, вы збіраецеся абвясціць пераменная тут, у гэтым выпадку, з унутр. Мы збіраемся назваць гэта я. Мы збіраемся, каб ініцыялізаваць яго ў 0. І прыпынак выданне будзе я менш 10. І абнаўленне будзе я ++. І ў цыкле, гэта адбываецца ня выконваць пакуль у рэшце рэшт яго парад канец condition--, у якім так, ён збіраецца разарваць пятлю. Там павінна быць рэчы, якія вы Хлопцы ўсё быццам бачыў і павінен быў зрабіць для вашай праблемы ўсталюйце адзін. Хто-небудзь ёсць якія-небудзь пытанні у дачыненні, завес прама цяпер? ДОБРА. Выдатна. ДОБРА. Так што для тых з вас, хто чытаць Pset спецыфікацыі на гэтым тыдні ведаеце, што мы будзем мець на працу тое, што называецца ASCII і табліцы ASCII. Давід у лекцыі падышоў коратка як кампутары ўсе essentially-- кадуецца ў кампутары ў двайковы, у нулёў і адзінак. І тое, кампутары здольныя для захоўвання розных каштоўнасцяў, у дадатак у нулёў і адзінак з'яўляюцца адлюстраваннем праз гэтыя лічбы ўяўляюць іншыя лічбы або істотна іншыя характары. Такім чынам, у гэтым выпадку, ASCII-table-- усё гэта робіць гэта сімвалы карту, або сімвалы, на нумары. Так файла зыходнага кода ў Ваш computer-- ён бачыць, эй, куча нулёў і адзінак, нулёў і адзінак, нулёў і адзінак. Гэта тое, што захоўваецца ў фактычны аб'ём памяці вашага кампутара. Але калі мы, людзі, хочам мець зносіны з кампутарам, мы want-- сказаць, напрыклад, калі я хачу загалоўную A, Я збіраюся трэба нейкім чынам распавядаць кампутар, ох, калі я друкую ў верхнім рэгістры A, я маю на ўвазе гэта прадстаўленне ў двайковай сістэме. І так, як мы робім, што кінуў адвольнае, што называецца табліцу ASCII, дзе, як людзі, так як праграмісты, некаторы час таму, мы адвольна вырашыў, што мы збіраліся прызначыць гэтыя нумары Значэння гэтых знакаў ст. Такім чынам, вы, хлопцы, можаце Google гэта ў Інтэрнэце. Я думаю, што ёсць спасылка на яго ў вашай pset-- проста ASCII табліца карты, ASCII Табліца. Гэта проста перакладае двайковы нумары ў знакаў. І гэта будзе вельмі карысна для вашай праблемы набору кожны раз, калі вы хочаце, каб разлічыць што-небудзь або калі вы хачу, каб адлюстраваць пэўны сімвалы або цэлыя лікі або маніпуляваць пэўныя сімвалы. Гэта збіраецца быць вельмі Важна, што вы ўсё ведаеце, як перамяшчацца табліцу ASCII. Так, напрыклад, у верхнім рэгістры A прадстаўлена на лік 65. І ў ніжнім рэгістры прадстаўлена 97. Таму важна ведаць, што Розніца паміж гэтымі двума значэннямі 32. Часта, калі вам трэба канвертаваць з адзін да аднаго, розніца 32. І не хвалюйцеся, калі вы выгляд зьбянтэжаны пра гэта спачатку. Мы пойдзем над тым, як мы б выкарыстоўваць гэта ў рэальным кода. ДОБРА. Так што для тых з вас з наўтбукамі па-за, не саромейцеся, каб падцягнуць табліцу ASCII, таму што яны, верагодна, патрабуюць вы, хлопцы, каб спасылацца на тое, што персанажы. ДОБРА. Так, ведаючы, што некаторыя сімвалы адлюстроўваюцца на пэўныя нумары, калі б я працаваць толькі першы лінія, што code-- ў PRINTF а, ніжні рэгістр ў мінус, прапісныя А. Хто-небудзь ёсць здагадка аб тым, што будзе друк з экрана прама цяпер? Такім чынам, перш за ўсё, тое, што робіць Малыя ўяўляюць? Які лік з'яўляецца тое, што кадуецца ў табліцы ASCII. На жаль? АЎДЫТОРЫЯ: 97? ANDI Пэн: 97, вялікі. І тое, што ў верхнім рэгістры A? АЎДЫТОРЫЯ: 65. ANDI Пэн: Так што 97 мінус 65? АЎДЫТОРЫЯ: 32. ANDI Пэн: ОК. Так што вы, хлопцы, думаеце, што адбудзецца, калі я ўваход, радок кода у маім кампутары? АЎДЫТОРЫЯ: [неразборліва]. ANDI Пэн: На ​​жаль, гаварыць. Не турбуйцеся. Гэта вельмі бяспечна серада, мінус камера. Мы ўсе, мэтай якіх без клопатаў. Проста мы ўсе збіраемся рабіць выгляд, як гэта проста нам астуджэння ў гэтым пакоі. Не турбуйцеся. Ні адно пытанне не з'яўляецца занадта глупства. Адказу не дурны адказ. Я, верагодна, будзе рабіць памылкі падчас майго навучання. Сур'ёзна, хлопцы, проста ляпнуць гэта. Будзьце ўпэўненыя ў сабе, вы ведаеце? Так што гэта было? Хто сказаў, што апошні адказ? ДОБРА. Крычыце, што прыгожа і зразумела. АЎДЫТОРЫЯ: 32? ANDI Пэн: 32. ОК, давайце запусцім гэты код і ўбачыць, калі гэта тое, што адбываецца. ДОБРА. Такім чынам, як вы, хлопцы, можаце выгляд см, тыповы абазначэння Я наладзіць тут, як мы будзе выкарыстоўваць якой-небудзь праграмы ў нашым кампутары. У нас ёсць асноўнай функцыяй ў нашай асноўнай функцыі. Я проста хачу, каб скапіяваць і устаўце гэты радок кода. Таксама будзьце асцярожныя, калі вы, хлопцы, капіяванні і ўстаўкі код. Часам некаторыя аператары ня абклейваць правільна. У гэтым выпадку, мінус Знак быў на самай справе працяжнік. І таму кампутар не забраць яго. Так што мне прыйшлося вярнуцца і фізічна перадрукоўваць, што. Толькі будзьце асцярожныя, калі вы, хлопцы, робіце гэта. ДОБРА. Мы збіраемся запусціць гэта тут. Такім чынам, мы збіраемся, каб кампакт-дыска ў нашай раздел2. Я назваў гэтую праграму asciimath. Так што памятаеце, калі мы бяжым любы Праграма, мы хочам, каб скампіляваць яго запусціўшы яго праз наш маркі. І тады мы сапраўды хочам працаваць Праграма робячы кропка-слэш. Такім чынам, мы збіраемся, каб ./asciimath. Права, мы ідзем. І мы бачым, 32. Добра зроблена. Вы заслугоўваеце цукерку. Цукеркі для вас. Выбачайце. Добра. ДОБРА. Такім чынам, мы можам вярнуцца да нашага прыкладу тут. Ааа, няма. Ааа. ДОБРА. Я проста хачу, каб трымаць яго так. ДОБРА. ДОБРА. Такім чынам, як вы, хлопцы, можаце ўбачыць, што мы можам зрабіць шмат вельмі цікавых рэчаў, шмат вельмі цікавых рэчаў, шмат вельмі складаныя рэчы з удзелам Сімвалы ASCII і лічбы. Пасля таго, як вы сядайце на лінію пяць, што гэта шмат, каб прытрымлівацца. Мы не збіраемся ісці праз секцыю. Не саромейцеся, калі вы можаце, Прычына гэта на паперы у першую чаргу на тое, што павінна быць, калі адбываецца Вы ўвялі такога радка значэнняў. Напрыклад, у апошнім лініі, мы маем z-- які ўяўляе пэўны number-- a-- які таксама ўяўляе сабой некаторыя number-- плюс 1 модулю 26 плюс ніжні рэгістр а. Калі вы, хлопцы, працягвайце чытанне праз іх, вам можна ўбачыць ўзор прыдумаць у як мы маніпуляваць код. Я вельмі, вельмі рэкамендую пасля падзелу вы ўсё хлопцы ісці наперад і ўваход тыя, усё ў вашым кампутары і паглядзець, якія нумары выходзяць і разважаючы, чаму праз тыя адбываецца, таму што для psets гэта будзе сапраўды важна для вас, каб зразумець, чаму некаторыя рэчы здараюцца. Усе гэтыя слайды будзе онлайн. Так што не турбуйцеся пра спробу фізічна капіяваць нататкі. Онлайн Усе ст. Гэта само па сабе падзел будзе онлайн. Усе мой зыходны код, што Я бягу будзе онлайн. Так. Ты ўсё яшчэ ёсць пытанні? АЎДЫТОРЫЯ: Што модулю? ANDI Пэн: ОК. Так модулю з'яўляецца аператарам, які збіраецца даволі важна PSET вашы хлопцы гульнявая тут. Такім чынам, шлях, які аператары у З і ў праграмаванні працы з'яўляецца тое, што ў вас ёсць тое, што называецца сімвал падзелу і сімвалам модуль, які гэтак жа, як знак адсотка. Такім чынам, у C, калі вы робіце цэлае падзяліць на цэлы лік з касой рысы, З мае тэндэнцыю патрабуецца выразаць ад усіх дзесятковых знакаў, таму што цэлае хоча пераўтварыць у цэлы лік. Гэта не захоча быць двайны з кучай знакаў пасля коскі ўсе пасля яго. Так што, калі я 3 падзелены на 2, гэта будзе адрэзаць 0,5 і проста даць вам 1. Дык вось што-то, каб быць вельмі асцярожныя, калі вы рабіць якой-небудзь матэматыкі ў праграмаванні, з'яўляецца тое, што колькасць вы атрымаеце можа быць лік што вы думаеце, таму акругленне ў вашым Апошняе PSET так важна. Модулю дае рэшту. Так, напрыклад, калі б я зрабіў 3 модулю 2-- так 3 знак адсотка 2-- гэта дасьць вам астатнюю частку гэтага. Так 3 дзеліцца на 2 1,5. Гэта 1 рэшту 1. Гэта дасць вам 1, які з'яўляецца астаткам гэтага. Так што, калі вы, хлопцы, рухаецца па табліцы ASCII, па модулю будзе ў канчатковым выніку тое, што вельмі важна, і мы абмяркуем, што пазней. ДОБРА. Так што-то, што з'яўляецца даволі, даволі новы і даволі унікальны што мы абмяркоўвалі на гэтым тыдні канцэпцыя аб тым, што масіў з'яўляецца. Так масіў першым тып структуры дадзеных што мы збіраемся сутыкнуцца ў гэтым класе. Усе структуры дадзеных з'яўляецца свайго роду адвольным, літаральна рэчы, як структуры што мы, як праграмісты стварылі, што мы ўклалі ў нашым кодзе, што можа ўтрымліваць іншыя кавалкі кода. Так што ў гэтым сэнсе, array-- думаю пра яго, як картатэцы, дзе, калі вы адкрыць адрозніваецца паліцы вашага картатэцы, Вы можаце атрымаць доступ розныя рэчы. У памяці масіў проста робіць тое ж самае на вашым кампутары. Вы можаце мець рознае blocks-- мы называць іх indices-- масіва. Гэта проста, як блок, палка памяці што мы стварылі ў вашай кампутар, вы можаце ўвесці некаторыя рэчы ў розных прасторах. Так з масівам, вы заўсёды павінны specify-- Вы павінны паказаць аб'яўленні Масіў у наступным фармаце. Вы збіраецеся спачатку пазначыць тып дадзеных што вы хочаце стварыць масіва. Калі я хачу масіў цэлых лікаў, Я збіраюся паставіць Int прама там. Калі я хачу масіў радкоў, Я збіраюся паставіць струны там, імя вашага масіва, а затым Вы будзеце мець квадратныя дужкі. А ўнутры квадратных дужак, вы будзе мець памер вашага масіва. Нешта, што сапраўды важна для майце на ўвазе, калі стварэння масіваў што, як толькі вы ствараеце Масіў, што памер не можа змяніцца. Так што, калі вы ведаеце, што зараз ў вас ёсць масіў памерам 10, Вы ведаеце, што я буду мець 10 вочак у межах або 10 паказчыкаў у межах гэтага масіва, і гэта ніколі не збіраецца пашырыць або паменшыць незалежна ад таго, што, і што ёсць У цяперашні час за ўсё ў 10 кварталах прасторы выдзелена ў вашай памяці, якая можа захоўваць да 10 рэчаў, таго, што вы ўклалі. Такім чынам, у гэтым выпадку, тып дадзеных масіва, структура дадзеных, якая з'яўляецца масівам вельмі адрозніваецца ад некаторых іншых мы пакрываць пазней у гэтым курсе. Так. Напрыклад, калі вы хочаце, каб стварыць масіў памерам 3, змяшчаюцца зменныя integer-- ой, прабачце, з temperature-- і тэмпература, з Вядома, гэта цэлы лік. Такім чынам, мы стварылі б Int, якая з'яўляецца Тып дадзеных, што мы хочам захаваць. Мы збіраемся называць гэта тэмператур дзеля наменклатуры назваў тое, што мы ўсе зразумелі. І мы збіраемся, каб мець квадратныя дужкі. І мы хочам, тры нумары. Такім чынам, мы збіраемся паставіць тры ўнутры яго. Нешта, што сапраўды Важна мець на ўвазе, з'яўляецца тое, што масівы роўныя нулю індэксуюцца. Усё гэта азначае, што вы пачаць з індэксам 0, і вы падбеглі праз памер масіва мінус 1. Так, напрыклад, тут, мы ёсць масіў памерам 3. Гэта збіраецца быць у стане правесці тры значэнні. Але лічбы, якія themselves-- Колькасць масіў, што індэкс, масіў, з'яўляюцца ад 0 да 2. Так хлопцы, сапраўды, на самай справе асцярожныя пры Вы збіраецеся праз вашыя праблемы, усталяваным і стварэння якіх-небудзь масіва, таму што шмат часу гэта сапраўды, вельмі лёгка забыцца, што. Я на самой справе не маюць індэкс з 3, што я ў цяперашні час толькі маюць індэкс 2. І калі вы паспрабуеце доступ да трэцяга індэкс, гэта будзе тое, што называецца нуль-тэрмінатар. Гэта не збіраецца на самай справе існуе ў масіве. І кампутар не спадабаецца, што. Так што будзьце асцярожныя, калі вы звяртаецеся рэчы толькі каб пераканацца, што вы памятаеце што масівы роўныя нулю, індэксаваная. ДОБРА. Такім чынам, першы прыклад з'яўляецца толькі адзін са спосабаў стварэння масіва. Другі прыклад у мяне ёсць Ніжэй толькі асобны шлях стварэння што тое ж самае дадзеныя Структура, што мы толькі што ўведзены. Такім чынам, замест фізічна працуе праз і пакласці ў тэмпературы ад 0 роўная б там ні было, тэмпература 1 роўная заўгодна, тэмпературы 2 роўных усе, я мог на самай справе проста непасрэдна ствараць усё гэта ў адным радку ў квадратных дужках тэмпературы роўная. І заўважце, у гэтым выпадку, вам не трэба каб паказаць, як вялікі ваш масіў, таму што кампутар збіраецца прайсці і паглядзець, што там тры элемента ў гэтых фігурных дужках. І гэта будзе ведаць, ОК, Мне патрэбен масіў памерам 3. Вы не будзеце мець патрэбу, каб уваход гэта наступным чынам. А таксама, так, менавіта так. Хто-небудзь ёсць пытанні пра тое, як мы робім масівы ці як структура з масіва працуе? Так. АЎДЫТОРЫЯ: [неразборліва]? ANDI Пэн: Так, менавіта так. Так што, калі вы былі аб'явіць і ініцыялізаваць масіў наступны метад, які з'яўляецца другім спосабам, Вы можаце проста пакінуць іх. І кампутар аўтаматычна ведае, што гэта трэба палічыць, колькі элементаў якія ў тыя фігурныя дужкі, падзеленыя коскамі. Дык вось яны бачаць 65, 87, 30. Такім чынам, кампутар ведае, пра, ёсць тры колькасці. Я ведаю, каб стварыць імя масіва Тэмпература з трыма элементамі ў ім. Добры пытанне. Так. АЎДЫТОРЫЯ: Хіба гэта не магчыма, каб стварыць масіў з рознымі тыпамі дадзеных якія могуць быць у яго ўвайшлі? Напрыклад, з цэлымі лікамі [неразборліва]? ANDI Пэн: Для мэтаў гэтага класа, няма, прама цяпер. Пры стварэнні дадзеных структураваць як масіў, вы кажаце кампутар, эй, ты мне патрэбен вылучыць столькі памяць у маім цвёрдым дыску, з кожнага вочка быць Пэўную колькасць бітаў. Памятаеце, што мы даведаліся ў тыдзень нуля, што розныя дадзеныя тыпы маюць розныя памеры? Так, напрыклад, радкі гэта рознае колькасць прасторы, чым гольца, які гэта іншае аб'ём прасторы ад цэлага ліку. І так, калі вы не пакажаце, і вы зьмешваць і спалучаць, якія віды зменных ў вас ёсць кампутар-х будзе вельмі зьбянтэжаны. І гэта не будзе ведаць, колькі памяці, каб даць вам. Такім чынам, для мэт правы Цяпер, кампутары могуць толькі прызнаць адзін тып масіва. Добры пытанне. ДОБРА. Так натуральна, Другое пытанне ў нас ёсць , Ну, цяпер, калі мы стварылі Масіў і мы паставіць усе гэтыя рэчы у масіве, як мы будзе ў стане атрымаць доступ да яго? Такім чынам, тыповая структура, што мы заўсёды доступ да масіву наш цудоўны цыкл. Я абяцаю вам, хлопцы, што мы будзем бачачы шмат гэтага чалавека тут. Па сутнасці, у любы час вы хочаце для ўводу значэння ў масіў ці вы хочаце, каб доступ да іх, то Лепшы спосаб зрабіць гэта для цыклу, таму што ў цыкле, вы ведаю, колькі разоў вы збіраецца хочаце запусціць праз масіў, таму што ў вас ёсць прыпынку выданне, ці не так? І кожны раз, калі вы запусціце праз, вы можаце атрымаць доступ іншы элемент масіва. А таксама, гэта прычына, чаму, як правіла, мы пачынаем для завес на значэнне 0, таму што, калі вы атрымліваеце доступ масівы, Вы можаце атрымаць доступ да нулявой індэкс. І так паралелі вельмі прыгожа. Вы, хлопцы, магчыма, хацелі пісаць для INT я роўная 1. Я менш або роўна 3. Але гэта не будзе працаваць зусім як Ну вось, таму што вы толькі ёсць элементы 0, 1, і 2. І таму, калі вы былі, каб пачаць ваш I у элеменце 1, 2 і 3, Вы збіраецеся ў канчатковым выніку працуе з межаў вашага масіва, і дрэнныя рэчы будуць адбывацца. Таму я спадзяюся, што вы, хлопцы ўбачыць Segue чаму ў папярэдніх класах мы вучылі вас, хлопцы, як запусціць і адфарматаваць цыкл так, што мы былі. Гэта таму, што, зараз мы перайшлі ў масівы, Вы можаце бачыць, чаму надае 0 Сама вельмі прыгожа доступу. Такім чынам, як мы робім гэта that-- Я проста друкуючы яго тут дзеля друкаваць яго. Але ў мяне ёсць запаўняльніка, коску. І фактычная Доступ частка адбываецца. Назва масіва назвалі тэмпература. Так што гэта тэмпература і я-й элемент масіва. Так як цыкл праходзіць праз, ён збіраецца пачаць з 0. Гэта адбываецца, каб раздрукаваць 0-й індэкс масіва. Тады гэта будзе друкаваць з першага элемента. Тады гэта будзе друкаваць з другога. А потым мы збіраемся зламаць. Гэта ўсё ясна, на як гэта адбываецца? Выдатна. Добра. Так вось у нас ёсць спосаб кажа, што калі мы не хочам, на жорсткі-код in-- мяне як праграміста. Я не хачу, каб на самой справе фізічна пакласці ў кожную асобны элемент гэтага масіва. Калі б я хацеў, каб замест ёсць карыстацкі ўвод значэння, што лепшы спосаб зрабіць гэта? Ну, вось я стварыў гэта выдатны функцыя, у якім я магу аб'явіць масіў. Так INT scores-- давайце проста сказаць, што мы хочам зрабіць масіў, які правёў ацэнкі ўсіх 18 адсюль у гэтым раздзеле студэнтаў. Я думаю, што мы атрымалі крыху больш за 18 дзяцей сёння. Але дзеля атрыманымі ў прыклад, у давайце выкажам здагадку, у нас было 18 гадоў. Я б стварыць дзесяткі імя масіва з Тып Унутраныя, таму ацэнкі, вядома, з'яўляюцца колькасці. І я збіраюся мець 18 ў квадратных дужках, таму што гэта, колькі студэнтаў я хачу, каб мець магчымасць захоўваць мноства. І тое, як я запоўніць масіў, што я запусціць яго праз цыкл, з Вядома, з 0 мой 0-я індэксам. А потым з 18 Быць маім прыпынку выданне, таму што ёсць 18 элементаў у масіве. А потым я збіраюся зрабіць Printf, увядзіце забіў student-- балбатня балбатня. Можа хто-небудзь сказаць мне, чаму тут я друк I плюс 1 і няма? Гэта свайго роду хітрасць Пытанне, на самай справе не. Гэта на самай справе не фізічна ўплывае на ход кода. Так. АЎДЫТОРЫЯ: [неразборліва] 0? ANDI Пэн: Так, менавіта так. Гэта крыху няёмка сказаць, эй, ты студэнт 0-я ў гэтым класе. Гэта крыху дзіўна. Так нас, як людзей, на самай справе не як думаць пра тое, як кампутары думаць. Так што, хоць у кампутар, гэта захоўванне значэнняў у 0-й, калі індэкс мы людзі, мы сапраўды ня хацеў бы спаслацца на сябе нуля. Таму, калі я проста раздрукаваць, што Я збіраюся друкаваць і дадаваць 1 толькі для яснасці. Так што, калі я друкую, я буду магчымасць друку студэнтаў з 1 па 18. Гэта на самай справе не ўплываюць на бег кода у любым выпадку, то, як я друкую. Але будзьце асцярожныя, калі вы фактычна доступу масіва. Калі вы бачыце вынікі я, заўважыць тут на самай справе я доступ да 0-й індэкс і ня 1 плюс 0-- або 1 плюс 1, У гэтым выпадку, так індэкс што гэта на самай справе зразумела. Гэта ўсё накшталт ОК як гэта праходзіць праз і з кожным індэксам Я пакласці значэнне ў масіў і стварэнне масіва з 18 лікаў што карыстальнік будзе ўводзіць? ДОБРА. Прахладны. ДОБРА. Цяпер мы пераходзім у тое, што гэта даволі стаўленне да гэтай часткі устаноўленага таксама. Я ведаю, у лекцыі, David-- прабачце, у вас пытанне? АЎДЫТОРЫЯ: Ці можаце вы павялічыць яго? ANDI Пэн: Так, таму я паспрабаваў. Але я не ведаю. Па нейкай прычыне, гэта версія PowerPoint сапраўды не працуе а з дысплеем. Такім чынам, мы проста збіраемся трымаць яго, як гэта. Усё гэта будзе загружаны ў Інтэрнэце. Выбачайце, хлопцы. Так. ДОБРА. Такім чынам, мы можам таксама радка. Так што, калі вы, хлопцы, на самой справе notice-- I ведаю, Роб падышоў гэта ў той лекцыі што ён did-- радок на самай справе проста масіў сімвалаў, калі вы думаеце пра гэта, праўда? Радок гэтае імя або прапановы, альбо слова, праўда? Калі б я быў, каб стварыць радок з імем у Andi-- толькі маё імя, А-Н-Д-я. Вы думаеце, што з проста як адной зменнай. Але на самой справе, гэта разбіваецца у толькі масіў знакаў. Так ён атрымаў персанаж захоўваемая ў значэнні масіва. Ён атрымаў характар ​​п захоўваецца ў Другі індэкс і гэтак далей, і гэтак далей. Так такім чынам, мы на самай справе ёсць такі структуры ўсталяваць у месца для нашых струн. Дык вось, калі б я, каб увесці ў Слова "ёсць" - так радок слова роўная атрымаць радок. Калі б я быў, каб увесці слова "ёсць", што фізічна так, што мой кампутар захоўвае гэтую радок у маёй памяці. І калі б я хацеў, каб прабегчы, што і друк, што out-- так і для I ў роўная нуля, памятаеце, у лекцыі, мы тое, што пакрываецца называецца StrLen, або даўжыня радка. Таму што я на самой справе не ведаеце, як вялікі масіў з якой inputting-- карыстальніка Напрыклад, я ўводзяцца слова "ёсць", і я ведаю, гэта доўга трох знакаў, праўда? Так што я мог бы паставіць у тры там і ўсё будзе ў парадку. Але калі ваш карыстацкі ўвод чагосьці што гэта рознае колькасць значэнняў, Вы збіраецеся не зможа па-сапраўднаму ведаю, што калі вы программируете свой код. Такім чынам, шлях, які мы апрацоўваем тэстаў так гэта тое, што мы нешта называецца StrLen, што гэта проста функцыя які кажа вам, як доўга радок. Так STRLEN словы. Маё слова, гэта ёсць. п роўная STRLEN ў словы. Можа хто-небудзь сказаць мне, што гэта значэнне на самой справе тут? Што н які ўяўляе права Цяпер, у гэтым прыкладзе, калі б мне прыйшлося з'есці? АЎДЫТОРЫЯ: 3. ANDI Пэн: 3, дакладна. Такім чынам, мы маем для INT я роўная нуля, п роўны 3, па сутнасці ,. І я маю намер запусціць пакуль гэта не менш, чым 3i ++. І гэта адбываецца, па сутнасці, перайсці праз і рабіць тое ж самае. Гэта адбываецца, каб раздрукаваць кожнае значэнне і дасць вам E-А-Т. Гэта проста, якія абазначаюць Іншы спосаб напісання. Гэта будзе вельмі карысна. Так. АЎДЫТОРЫЯ: Што перавагі здачы п роўная STRLEN слова ўнутры, што для контуру [неразборліва]? ANDI Пэн: Так. Так што, калі б я быў, мэтай якіх, напрыклад, сказаць, калі б я быў зрабіць гэта, а затым do-- oop--, што ў маім кодзе, было б на самай справе рабіць, як тое ж самае. Аднак, спосаб, якім патлумачыў Дэвід гэта падчас лекцыі, калі якія-небудзь з вас, хлопцы памятаеце, было тое, што, паколькі людзі, як праграмісты, Мы сапраўды імкнемся, каб Наша праграма Код, каб наш кампутар мае працаваць як мага менш, так што наш код не вельмі эфектыўным. Так што, калі я, што там, што будзе адбывацца праз мой цыкл з'яўляецца тое, што я ўпершыню абвясціць Пераменная з імем я будзе 0. Я збіраюся праверыць, ох, што такое StrLen словы? О, StrLen 3. Так я менш, чым тры? Так. Я збіраюся бегчы. А потым другі раз таму вакол цыкл, я іду, каб павялічыць I. я будзе адзін. І я маю намер праверыць, ох, але тое, што StrLen словы? О, гэта тры. І робіць гэта, здаецца, выгляд марнатраўна, кожны раз, калі вы запускаеце праз пятлю, каб правяраць функцыю, нават нягледзячы на ​​тое STRLEN словы ніколі не змяняе? Такім чынам, гэта дадатковае харчаванне для кампутара. Калі вы пачынаеце казаць пра рэчы, што мільярды і мільярды і мільярды месцаў доўга, уявіце кампутар таго, каб фізічна перажыць і праверыць усе, што кожны раз. Менавіта таму, каб проста дзеля эфектыўнасці, мы, як правіла, толькі зрабіць гэта, таму што такім чынам мы толькі выкліку функцыі адзін раз у пачатку, і што кожны раз, калі ён праходзіць праз гэта адбываецца для захоўвання значэння 3 там, што вы не павінны пастаянна правяраць кожны раз. Так. АЎДЫТОРЫЯ: Выбачайце. Проста [неразборліва]. Можа вы Int N роўны StrLen і пакласці што вышэй вонкавага боку для контуру а? ANDI Пэн: Так. Вы можаце зрабіць гэта, абсалютна. Прычына, чаму мы павінны яго ў тут таму што шлях для цыклу прац з'яўляецца тое, што гэта называецца лакальная пераменная у тым сэнсе, што ўсе вы стварэнне ўнутры цыкл існуе толькі ўнутры для цыклу. Такім чынам, пераменная я толькі існуе ў тых дужках. А вось зменныя п таксама існуе толькі ў тых дужках. Так што, калі вы былі ў выкарыстанні STRLEN з Слова некалькі разоў ўнізе, абсалютна лепшы спосаб зрабіць гэта будзе аб'явіць яго на вяршыню так што вам не прыйдзецца зрабіць гэта адзін раз. Так. АЎДЫТОРЫЯ: Чаму ў вас ёсць Новая лінія пасля адсотка бачачы, калі вы хочаце, каб паставіць усё літары побач з ім падзяляюць? ANDI Пэн: О, я хацеў друкаваць іх усё на кожнай лініі. Гэта не мае значэння. Так, гэта фарматаванне. Гэта добры пытанне, хоць. Так, калі б я хацеў, каб надрукаваць усё толькі на адной лініі, што, Я б не працяжнік ст. ДОБРА. Усё добра? ДОБРА. Прахладны. Так што я думаю, што я казаў дастаткова. Паварот, вы, хлопцы, каб запусціць праз Код і скажыце, што гэта не так. Дзе памылка? Такім чынам, як вы бачыце, я аб'яўлены Новы масіў радковага тыпу па імі класа. І я ўводзяцца Сэм, Джэс, і Кім у яго. І я спрабую раздрукаваць ўсе элементы масіва. Можа хто-небудзь сказаць мне, чаму гэта збіраецца даць мне праблемы? Я дам вам хлопцы 10 секунд, каб думаць пра гэта. ДОБРА. Да? АЎДЫТОРЫЯ: Ці з'яўляецца левы цэнтральны роўным 3 ці [неразборліва]? ANDI Пэн: Права. Так колькі разоў гэта на самай справе збіраецца запусціць праз гэтую пятлю? АЎДЫТОРЫЯ: Чатыры. ANDI Пэн: Точно. Гэта будзе праз чатыры разы. Гэта збіраецца бегчы праз на 0, 1, 2 і 3, таму што іх элементам з'яўляецца я менш або роўна 3. Гэта не збіраецца спыняцца, калі гэта 2. Гэта будзе трымаць адбываецца, пакуль не дасягне 3. І як мы ведаем, ёсць толькі тры элементы нашага фактычнага масіва. Калі мы паспрабуем адкрыць чацвёрты элемент або індэкс 3, Вы збіраецеся кудысьці ўдарыў у памяці, што не існуе. Гэта называецца нуль-тэрмінатар. Нішто не збіраецца быць там. Ваш кампутар не будзе быць вельмі шчаслівы з табой. Так. Хто-небудзь ёсць пытанні аб тым, чаму, што адбываецца? Гэта агульная плошча, каб пазбегнуць. Так. АЎДЫТОРЫЯ: Не першы слізгаць таксама радок 2? ANDI PENG: Няма Так па сутнасці, калі Вы робіце масіў, што кранштэйн правай там, што ўсе number-- гэта кажу вам як шматлікія элементы ў мяне ёсць. Гэта на самай справе не казаў мне індэксы небудзь. Такім чынам, у гэтым выпадку, я ведаю, што я хачу пісаць трох месцах, з трох фізічных месцаў для правесці ўсё, што я хачу, каб трымаць. Дык вось, чаму нумар тры ёсць. Тым не менш, калі б я хацеў на самой справе атрымаць да яго доступ, калі я хацеў сказаць, Printf нумар класа кранштэйн, затым Вы збіраецеся на самай справе паклаў індэкс фізічнага там. Так, добры пытанне. АЎДЫТОРЫЯ: Дык гэта фізічнае Індэкс павінен быць [неразборліва]? ANDI Пэн: Мне вельмі шкада. Ці можаце вы гаварыць трохі? АЎДЫТОРЫЯ: Так індэкс фізічнага [Неразборліва], кожная з скрынкі? [Неразборліва]? ANDI Пэн: Так. Так што я збіраюся вярнуцца да прама тут. Падумайце прама тут. У нас ёсць масіў памерам 3. Там тры месцы, як і, фізічныя запаўняльнікі тут. Але яны назвалі 0, 1, 2 і. Так што, калі я хацеў, каб атрымаць да іх доступ, так, што я да іх доступ гэта Printf за ўсё, што я хацеў тут. Вы павінны надрукаваць з імя ёй, Таму што тады кампутар ведае, пра, мне трэба паглядзець у гэтым масіве на 0-й індэкс. Так. Але памер гэтага не мяняецца. Памер 3, незалежна як вы іх пазначыць. ДОБРА. Усё добра? АЎДЫТОРЫЯ: Так што кожны раз я [неразборліва]? ANDI Пэн: ОК. Такім чынам, у гэтым выпадку, мы на самай справе не патрапіць у яго цяпер у працэсе. Але ведаю, што string-- як I казаў раней, радок па сутнасці масіў знакаў. Так што, калі я ствараю масіў радкоў, я накшталт ёсць масіў масіў сімвалаў, праўда? Такім чынам, у гэтым выпадку, таму што я ёсць масіў радкоў, калі б вы былі на ўваход сапраўды доўгае слова, якія да гэтага часу займае толькі адно месца, таму што гэта адна струна. Але калі вы былі думаць аб героі гэтага масіва, тое, што гэта займаючы шмат больш сімвалаў, чым любы з іншых слоў ёсць. Не вельмі важна для прама цяпер. Але гэта толькі ў цэлым як гэта працуе. ДОБРА. Так што гэта тое, што я дам вам зрабіць шмат на працягу семестра. Мне трэба, каб адпачыць мой голас. Вы, хлопцы, трэба, каб стымуляваць сябе. Многія з вас, напэўна, прыйдзецца спаць прама цяпер. Я ўводу выпадковых праблем дзе мы, як клас, ці вы з партнёрам побач з вамі збіраемся правесці пару хвілін абмеркавання аб тым, як мы ісці аб рашэнні або стварэнне праграмы, такія, як гэты. Так што цяпер, мы хочам стварыць program-- мы збіраемся называць яго upper.c--, што новазвернутыя маленькая слова да верхняй класа string-- верхні рэгістр, прабачце. Слова ў радках, прабачце, гэта сінонімы. Я збіраюся іх мяняць азначае тое ж самае. Так. Вазьміце пару хвілін. Гэта не павінны быць напісаны на любой мове. Проста ў кодзе або псевдокода лагічна, як мы б нават хадзіць рабіць такой праблемай. Так. [БОК РАЗГОВОР] Я таксама заўважыў, што вы, хлопцы can-- Я накшталт ўжо бачым праграму. Я думаю, маё адсутнасць Рэжым вядучы праблема. Але гэта нармальна. [БОК РАЗГОВОР] Так, калі ласка, хлопцы. Прыходзьце атрымаць цукерку. Прыходзьце атрымаць цукерку. АЎДЫТОРЫЯ: Так! [БОК РАЗГОВОР] ANDI Пэн: Акрамя таго, ды, Я пачну кідаць цукеркі на людзей, якія не адказваюць на пытанні. Такім чынам, вы павінны адказаць на пытанні ўсіх. Ці я мяркую, людзі, якія у адказваць на пытанні. Так, наадварот. [БОК РАЗГОВОР] АЎДЫТОРЫЯ: [неразборліва] ANDI Пэн: Так. Так. [БОК РАЗГОВОР] Добра, хлопцы. Вазьміце, напрыклад, яшчэ 10 секунд. [БОК РАЗГОВОР] ОК, хлопцы. Таму, перш чым мы пачнем, спрабуючы на самай справе фізічна напісаць код, добрая звычка развіваць тое, што мы хочам, каб першага роду прычынах лагічна, як мы зробім гэта. Вы хочаце, каб пераканацца, што, перад вамі фізічна пачаць спрабаваць кадзіраваць ў Марыё, што вы робіце Пераканайцеся, што ў вас ёсць псевдокод. Гэта значыць прымаючы вас праз тое, што вам трэба, каб стварыць так што, калі вы фізічна напісаць праграму пазней, вы лепш у стане злавіць памылкі у кодзе і да таго падобнае. Такім чынам, мы збіраемся, каб проста пачаць по-- на англійскай мове, у псевдокоде, Хто-небудзь хоча, каб даць мне радавое тлумачэнне аб тым, як мы б пра гэта? Так. АЎДЫТОРЫЯ: [неразборліва]. ANDI Пэн: Вядома, не варта турбавацца. АЎДЫТОРЫЯ: Ці можаце вы папрасіць яго ці папрасіць хтосьці атрымаць радок 1-- Так, радок, і then-- ANDI Пэн: Так, так што гэта добры пачатак. Я пачну набіраць, прабачце, як вы кажаце. So-- АЎДЫТОРЫЯ: --the малыя лічбы вышэй, праўда? Ці малыя літары маюць высокія лічбы? ANDI Пэн: Точно. АЎДЫТОРЫЯ: Такім чынам, мы адымаем 32 ад таго, што [неразборліва]. ANDI Пэн: Выдатна. Так мы накшталт ёсць агульны сэнс пра тое, як працаваць з гэтай праблемай. Ведаючы, што мы даведаліся выгляд фізічнае так, што радкі захоўваюцца ў памяці, Што вы ўжо ведаю, што вы збіраецеся, верагодна, трэба напісаць у кодзе для таго, каб рухацца па радку? АЎДЫТОРЫЯ: Для цыклу. ANDI Пэн: для цыклу, дакладна. Выдатна. Так мы накшталт ёсць агульны псевдокод запісана што выгляд дае Вы адзначае, як вы будзе рухацца аб рашэнні праблемы. Зараз у вас ёсць гэта, вам можа спасылацца на потым калі вы спрабуеце на самай справе пісаць код. Такім чынам, мы можам на самай справе ісці тут. І я атрымаў функцыю пад назвай upper.c-- там is-- толькі з пустога пра шаблон Прама зараз, што вы, хлопцы, збіраецеся дапамагчы мне высветліць пра тое, як напісаць гэтая лінія code-- ня радок кода. Гэта будзе некалькі радкоў кода. Пры запуску якой-небудзь нарыхтоўкі PSET, што Першае, што мне трэба памятаць, каб рабіць? АЎДЫТОРЫЯ: [неразборліва]. ANDI Пэн: Вялікі Так. Ўключыць. stdio.h. Часта гэта з'яўляецца адным з Самы просты памылкі людзі зробіць, калі яны пісаць, што яны будуць забудзьцеся ўключаць Важна бібліятэка ім трэба. Так што, калі гэта офіс гадзін, і вы, як, Я не ведаю, чаму мой код не працуе. Ці можаце вы сказаць мне, чаму гэта не працуе? Мы збіраемся сказаць ты #include? Вы павінны #include яго. ДОБРА. Такім чынам, мы атрымалі стандарт I / O тут. Хіба што толькі бібліятэка мы збіраемся тут трэба? Што яшчэ мы будзем рабіць? Выбачайце. Хтосьці проста крычыце гэта? АЎДЫТОРЫЯ: [неразборліва]. ANDI Пэн: Там вы ідзяце. ДОБРА. І як я магу ісці аб запуску якой-небудзь функцыі, любы від асноўнай функцыі ў нашай праграме? Int асноўнай. ДОБРА. Што я магу пакласці ўнутры тут? Што першае, што вы хочаце зрабіць? Калі мы хочам, каб атрымаць радок ад карыстальніка, што мы будзем мець каб зрабіць на гэтым першай лініі? На жаль, вы, хлопцы, проста адчуваю, свабодна гаварыць і гучна. Проста крычаць што заўгодна. АЎДЫТОРЫЯ: Папытаеце карыстальніка? ANDI Пэн: Як мы гэта робім? Ask-- я збіраюся ўвесці "задаць карыстачу"? АЎДЫТОРЫЯ: Printf. ANDI Пэн: ОК. Printf. Што я хачу, каб PRINTF? АЎДЫТОРЫЯ: Тып ў нечым. ANDI Пэн: Як што? Хлопцы, рабіць выгляд, быццам я кампутар. Фізічна скажыце мне кожны крок што мне трэба ўвесці тут? Я раблю нешта няправільна? Ці павінен я нешта набралі? АЎДЫТОРЫЯ: Вы павінны двукоссі. ANDI Пэн: Мне трэба двукоссі? ДОБРА. ДОБРА. АЎДЫТОРЫЯ: А потым новая лінія. Кропка з коскі. ANDI Пэн: кропкай з коскі? ДОБРА. Добра. АЎДЫТОРЫЯ: А можа быць, пазначыць што вы хочаце, у ніжнім рэгістры? ANDI Пэн: Выдатна. Вы, хлопцы, трэба мной смяяцца забываючы паставіць кропку з коскі. Я гарантую вам, дзе У ходзе гэтага класа, Вы забудзецеся паставіць кропка з коскі, і гэта Вам спатрэбіцца тры гадзіны, каб высветліць чаму ваш код не працуе. Гэта здарылася з усімі намі. Гэта, верагодна, здарыцца з вамі. Атрымаць у добрую звычку з коскі. ДОБРА. АЎДЫТОРЫЯ: Вы хочаце зрабіць зваротны слеш ў? ANDI Пэн: Вядома. Вы хочаце, каб зрабіць зваротны слеш? АЎДЫТОРЫЯ: Так. ANDI Пэн: Выдатна. ДОБРА. Што мне рабіць далей? АЎДЫТОРЫЯ: Атрымаць радок. ANDI Пэн: Атрымаць радок. Так што я тыпу? Хто? АЎДЫТОРЫЯ: String s. ANDI Пэн: Радок с. АЎДЫТОРЫЯ: GetString. ANDI Пэн: Нехта, Вы можаце сказаць мне, дзе гэтая функцыя GetString прыходзяць? АЎДЫТОРЫЯ: string.h. ANDI Пэн: string.h? Вы думаеце, што гэта з string.h? АЎДЫТОРЫЯ: [неразборліва]. ANDI Пэн: Там вы ідзяце. Гэта ад CS50.h. Калі вы заўсёды блытаюць ад таго, дзе Файл бібліятэкі або файл загалоўка, Google літаральна string.h, і я скажу вам, якія ўсе функцыі якія знаходзяцца ў string.h. ДОБРА. Так што цяпер я стварыў радок а ў мяне прапануе карыстачу для яго, Я захаваў яго ў зменнай названыя ёй, што мне трэба рабіць цяпер? АЎДЫТОРЫЯ: Праверце, калі ён знаходзіцца ў ніжнім рэгістры. ANDI Пэн: На ​​жаль? АЎДЫТОРЫЯ: Праверце, калі ён знаходзіцца ў ніжнім рэгістры. ANDI Пэн: Добра, давайце зробім гэта. Як мне гэта зрабіць? На самай справе, для мэтаў класа прама цяпер, мы толькі збіраемся Выкажам здагадку, што ўсе што мы ўваход ўжо ў ніжнім рэгістры. Калі вы хочаце, каб праверыць, вы б проста дадайце ўмоўную што правяраецца, што пабег праз кожны элемент масіва і правяраецца, калі гэта паміж пэўнымі значэннямі. Я забыўся, што колькасць значэнняў малыя літары. Вы можаце паглядзець яго на стол ASCII. Але так, гэта сапраўды добрая кропка. Але прама цяпер, мы проста збіраемся Выкажам здагадку, што ўсе радкі ўводу мы у ніжнім рэгістры. ДОБРА. Так як я пайшоў бы каля гэтая праблема ў наступным? АЎДЫТОРЫЯ: Для цыклу. ANDI Пэн: Для цыкла? ДОБРА. Скажы мне, што друкаваць. АЎДЫТОРЫЯ: Для Int я роўная 0. ANDI Пэн: ОК. АЎДЫТОРЫЯ: Так, на самай справе, то вам зрабіць коску і рабіць н роўная STRLEN. ANDI Пэн: Так важна што я думаю, што яна заўважыла, тут з'яўляецца тое, што мы не павінны сказаць Int н другі раз мы зрабілі гэта. Проста ведаю, што на працягу цыкл, калі вы заявіўшы, вы на самой справе не трэба Int ў другі раз, калі вы зменную. Вы можаце сказаць, н STRLEN. АЎДЫТОРЫЯ: З с. ANDI Пэн: с. ДОБРА. АЎДЫТОРЫЯ: Тады кропка з коскі. ANDI Пэн: Вядома. АЎДЫТОРЫЯ: І затым [неразборліва] п. Тады я ++. ANDI Пэн: Выдатна. Добра. Што мы хочам ўнутры гэта цыкл цяпер? Памятаеце, што калі мы збіраемся запусціць праз радок і запусціць праз масіў, мы хочам, каб праверыць рэчы ў ім. Што мы збіраемся трэба? Гэта свайго роду складаная частка ў цяперашні час. Любы, ёсць здагадка? ДОБРА. Такім чынам, спачатку, як мы нават атрымаць доступ? Як мы нават першая праверка або доступу да элемента ў масіве? Як мы гэта робім? Што абазначэнне мы выкарыстоўваем, каб зрабіць гэта? Што імя гэтага масіва называецца? Гэта называецца з, правільна? Памятаеце, любы радок заўсёды з'яўляецца масівам. Так ёй кранштэйн я, праўда? Таму што гэта бягучае значэнне ці значэнне індэкса, мы праверкі. І мы збіраемся ўсталяваць, што роўна , Мэтай якіх мы хочам маленькую значэнне, праўда? Мы хочам, каб ператварыць гэта lower-- прабачце, мы хочам загалоўнымі літарамі. Мы хочам, каб уключыць ніжні рэгістр значэнне ў верхнім рэгістры. І так like-- я прашу прабачэння, як цябе зваць? АЎДЫТОРЫЯ: Хайдзі. ANDI Пэн: На ​​жаль? АЎДЫТОРЫЯ: Хайдзі. ANDI Пэн: Хайдзі. Як сказаў Хайдзі Першапачаткова, мы, верагодна, спатрэбіцца the-- мы верагодна, прыйдзецца адняць 32 з любога charc, што, праўда? Таму што на ASCII стол, розніца паміж малой літары і прапісная літара 32. Таму, калі мы робім гэта, мы, верагодна, захоча, каб адняць 32, праўда? Так што мы збіраемся рабіць S I. Ці ўсё разумеюць, чаму я гэта зрабіў? Таму што цяпер, у нашым масіве, мы праверкі 0-й індэкс, праўда? А ў 0-й індэкс Радок, гэта першы знак. І, што персанаж, якога мы збіраемся каб выказаць здагадку, што гэта ў ніжнім рэгістры. Калі мы хочам, каб зрабіць яго ў верхнім рэгістры, мы павінны адняць 32 з яго кошту, таму што ў нашай ASCII стол, вось як мы атрымаем яго на наступны адпаведнай Значэнне, якое робіць яго ў верхнім рэгістры. Усе разумеюць, ці што? Так. АЎДЫТОРЫЯ: Ці маглі б вы таксама у ніжні рэгістр ў minus-- ANDI Пэн: Так, так вось на самай справе вельмі добра. Я збіраюся вярнуцца да таго, што Пытанне пасля таго як мы гэта зрабіць. Так. І потым, калі я хачу бачыць, што адбываецца, Я, верагодна, будзе хочаце надрукаваць, праўда? Хто-небудзь сказаць мне, што Я хачу надрукаваць тут. АЎДЫТОРЫЯ: Printf адсоткаў З адваротнага касой [неразборліва]. Гэта значэнне [неразборліва] S I. ANDI Пэн: я ёй, прабачце? АЎДЫТОРЫЯ: [неразборліва]. ANDI Пэн: я не ведаю. Што ты думаеш? АЎДЫТОРЫЯ: Ну, я wouldn't-- Я думаю, я б не bring-- Я б яно па-за ўнутры, таму што [неразборліва]. ANDI Пэн: О, вы б зрабілі гэта? АЎДЫТОРЫЯ: Так. ANDI Пэн: Давайце пакінем гэта так, як яна ёсць, і я растлумачу, чаму пазней. Памятаеце, нават калі вы ёсць трымальнік месца, Вы хочаце, каб пакласці дужкі вакол яго. Добра. Такім чынам, гэта павінна быць цвёрдае функцыю тут. Давайце запусціць яго і паглядзець, калі ён кампілюе. Зрабіце верхні. Ой-ой. Гэта не выглядае занадта добра. Чаму гэта адбываецца? Як і ў любой памылкі, вы хочаце пайсці таму і пачаць з першага, таму што звычайна выклікае адну памылку шмат іншых памылак пасля яго. Тут мы бачым, upper.c: 18: 25, што кажа мне ў гэтай праграме імя upper.c, у радку 18, памылка няяўна аб'явы бібліятэка функцый STRLEN з тыпам unassigned-- бла, я не ведаю, што адбываецца пасля гэтага. Усё гэта кажа мне прама цяпер што нешта адбываецца на STRLEN. І гэта блытаць кампутар, таму што гэта як, я не ведаю, што гэта StrLen? Што, што, верагодна сказаць, што вы не хапае? АЎДЫТОРЫЯ: Вы прапусцілі [неразборліва]. ANDI Пэн: Вы маеце рацыю. Дакладна. Так што гэта, дзе гэта Важна, каб пераканацца, што кожная функцыя вы карыстаецеся ў вашай код, які мае правільны загаловак файл для бібліятэкі, ці ж Вы збіраецеся атрымаць шмат памылак і ваш код ня будзе ведаць, што адбываецца. Такім чынам, мы збіраемся ўключыць string.h тут. Цяпер, калі мы спрабуем скласці верхняй. Кампіляцыя правільна. Давайце запусціць гэтую праграму. Так што-то тыпу ў ніжнім рэгістры. Што вы, хлопцы, жадаеце, каб увесці? Выгукнем нешта. Добра, Чарлі проста ўвайшоў. Мы увядзіце імя Чарлі ст. Чарлі ў ніжнім рэгістры. І, спадзяюся, мы спадзяемся, гэта збіраецца крычаць і выплюнуў Чарлі ў верхнім рэгістры. Ура! Ці ўсё разумеюць, як Я пайшоў аб рашэнні, што? Такім чынам, што я магу маніпуляваць з дапамогай цэлых лікаў вырашыць тое, што Я хачу зрабіць у радках, таму што персанажы і цэлыя можаце спасылацца такім жа чынам, таму што адлюстравання ASCII. Такім чынам, каб вярнуцца да кропкі, калі я хацеў паставіць тут замест 32 прапісныя мінус ніжні рэгістр справядлівы, як што, што будзе працаваць аднолькава добра, таму што гэта проста толькі Розніца паміж гэтымі двума значэннямі. Калі я хачу, каб зрабіць гэтую again-- Charly. О, няма. Я думаю, што мы пайшлі не ў той бок, так? АЎДЫТОРЫЯ: [неразборліва] ніжні рэгістр а. ANDI Пэн: Там вы ідзяце. Так. І з плюе Чарлі. Так што будзьце асцярожныя, калі Вы аднімання значэння памятаць, які з больш, чым іншая. Напрыклад, тут я забыўся што ў ніжнім рэгістры а з'яўляецца на самой справе больш, чым у верхнім рэгістры A. Таму, калі я спрабаваў адымаць іх у іншы бок вакол, я атрымаў адмоўны 32. І мой кампутар, як, Я не ведаю, што гэта такое. Гэта толькі некаторыя верагоднасць выпадковага Значэнне, якое не вельмі добра. І таму пераканайцеся, што вы аднімання ў правільнай даўжыні знайсці сімвал, які вы хочаце. ДОБРА. Хто блытаць, як мы Ці пайшоў аб напісанні гэтай функцыі? ДОБРА. Так на самой справе, функцыя ўжо існуе ў бібліятэцы называецца ctype.h. Называецца ctype.h бібліятэкі. Гэтая функцыя на самай справе ўжо напісана для вас. Гэта называецца ў верхняй. І так для мэт гэта PSET, вы збіраецеся каб знайсці, што вы сапраўды хочаце выкарыстоўваць шмат функцый, якія змяшчаюцца у бібліятэцы CTYPE. Для верхняй, знізіць, зверху, з'яўляецца lower-- тыя усе функцыі што вы зможаце выкарыстоўваць вельмі, вельмі хутка ў сваім кодзе, што робіць менавіта, што гэта робіць. Мы напісалі, як пераўтварыць радок у верхні рэгістр. Але гэта на самай справе код што нехта напісаў і што вы можаце атрымаць доступ да з дапамогай іншай функцыі. Да? АЎДЫТОРЫЯ: Такім чынам, вы проста скапіяваць гадоў там і зрабіць гэта для кожнага лісты? ANDI Пэн: Так, таму што я не клапаціцца аб значэннях а. Я проста ўсё роўна, што розніца паміж імі 32, праўда? Розніца паміж малымі б і ў верхнім рэгістры B таксама 32. І розніца паміж C а верхні З заўсёды 32. Мне проста трэба клапаціцца пра Розніца паміж гэтымі двума, таму што ўсе літары па той жа схеме, праўда? Калі ў мяне ёсць розніца паміж адным з іх, Я ведаю, што розніца паміж усімі з іх. Добры пытанне. Так. Усё добра? ДОБРА. ААП. ДОБРА. Так яшчэ адно паняцце, што гэта будзе вельмі карысна, як вы працягваць развіваць код гэтая ідэя стварэння функцыі або абстракцыю. Так што цяпер, мы ўсе прынялі алгебру. У алгебры, вас вучаць, што ёсць гэта выдатная рэч называецца функцыяй машына, дзе, калі вы уваход адзін від колькасці, яна праходзіць праз гэтага выдатнага функцыі і па-за пляскае іншае выйсце, праўда? У кодзе, тое ж самае адбываецца у якой-небудзь функцыі. Так што я мог фізічна напісаць у маім целе майго кода галоўная зацвярджэнне, што на самой справе усё цела кода робіць. Але за межамі гэтага, я магу таксама напісаць мноства розных функцый што рабіць шмат розных рэчаў. Напрыклад, мы ўжо пачалі выкарыстоўваць некаторыя з іх. Printf--, што з'яўляецца Функцыя што хтосьці ўжо напісана, што мы можам назваць ў нашым кодзе. Для upper-- ў гэтым выпадку, upper-- іншая функцыя мы напісалі, што мы можна патэлефанаваць у наш код. І таму я думаю, чаму у нас нават ёсць функцыі? Чаму б нам проста не пляснуць яго усё ў той жа радку кода? Гэта робіць яго лёгкім для ўсіх. Ну, што абгрунтаванне гэта, у першую чаргу, арганізацыі. Гэта сапраўды раздражняе збіраецца праз чыю-то код і адна функцыя, як Printf. Калі вы, хлопцы, на самай справе ведаў, што Функцыя Printf што пацягнула напісаць, гэта, быццам бы, 1000 радкоў кода. Калі кожны раз, калі я хацеў каб PRINTF тое, Я павінен быў напісаць 1000 радкоў кода, Гэта было б сапраўды раздражняе, каб чытаць, дакладна? Вось чаму мы толькі стварыў гэты абстрактная функцыя што ў нас ёсць хто-то ўжо яшчэ напісаў дзесьці яшчэ. І кожны раз, калі мы павінны выкарыстоўваць яго ў наш код, мы проста павінны сказаць Printf. І гэта магчымасць выкарыстоўваць функцыю хтосьці напісаў у кодзе. Гэта палягчае арганізацыйна чытаць код. Па-другое, гэта спрашчэнне. Гэта спрашчае крокі, якія мы прыняць, каб вырашыць нашу праблему. Printf, функцыі, такія як Printf, функцыі, такія як у верхняй усе рэчы, якія дазваляюць нам спрасціць код ўніз так лягчэй. І апошняе, што з'яўляецца магчымасць шматразовага выкарыстання. Так на тое, што ў нас ёсць функцыя называецца Printf што мы можам назваць шмат розных раз і дазваляе яму быць шматразовага выкарыстання. Калі б мне давялося пісаць Printf, Я пішу толькі адзін раз. Яна існуе толькі ў гэтым адным месцы. Калі б я хацеў, каб зрабіць гэта зноў, я б павінны скапіяваць і ўставіць усё, што у маёй другой радку кода. Вось чаму, калі мы створым функцыю што існуе па-за нашага галоўнага, мы можам толькі заклікаць гэта і выкарыстоўваць яго, калі мы павінны так, што гэта нашмат прасцей, для нас, як праграмы для запісу. Такім чынам, шлях, які мы б на самай справе пісаць функцыя вельмі падобная, так? Гэта свайго роду першы выпадак, у якім мы будзем см функцыю бяруць на стыль адрозніваецца, чым наш асноўны Int пустэчу. У гэтым выпадку, калі б я хацеў, каб напісаць функцыю з імем д, праўда? І тут значэнне INT гэта ўсё распавядаў мне, што я хачу, каб гэта функцыянаваць, каб вярнуцца да мяне? Калі я хачу, каб куб цэлае, Я збіраюся хочаце ўвесці. Гэтыя параметры. Я збіраюся уводзіць значэнне тыпу Int. І я збіраюся вярнуцца іншае значэнне тып Int. І тут, як вы бачыце, усё, што я раблю з'яўляецца тое, што ў куб мой ўваход як мой выхаду і вяртання яго. Так што ўсё гэта робіць функцыя з'яўляецца займае нейкае лік. Гэта памнажае яго на сабе два разы так, каб ён кубоў ў дзеянне. А потым ён вяртаецца усё, што выхад. Такім чынам, у гэтым выпадку, гэта дзве лініі код, які мы павінны былі напісаць асобна. Але калі мы хацелі назваць На гэтым некалькі разоў, гэта нашмат прасцей набраць, што адзін лінія прама тут, што гэта ў кубе, чым павінны прайсці некалькі разоў. Такім чынам, спосаб, што практычна любы фарматаванне для любога віду функцыі будзе існаваць, як тут. Такім чынам, мы маем імя функцыі. У гэтым выпадку, гэта называецца куб. І мы называем гэта, таму што куб гэта лёгка запомніць. Вы можаце назваць гэта квадрат і гэта на самай справе можа быць у кубе. Не мае значэння. Проста імя, што ты прысваення вашу функцыю. Гэта прама тут, INT, з'яўляецца тып параметру трэба. Такім чынам, што ж гэтую функцыю трэба для таго, каб працаваць? Ну, яна павінна ўваход. Я назваў яго ўводу. Вы можаце назваць гэта, што вы хочаце. Але мне трэба нешта тыпу Int. Гэта адбываецца на самай справе выканаць усё, што ўсярэдзіне тут, цела функцыі. І тады тып якое вяртаецца прама тут, у гэтым int-- Усё гэта кажа мне, гэта што гэтая функцыя збіраецца вярнуцца да мяне ў міжнар. Такім чынам, гэта зойме ў INT, і ён збіраецца даць вам назад у Int. Усе разумеюць ці, як фарматаванне гэтага роду працы? Прахладны. ДОБРА. Так што не хвалюйцеся, калі гэта здаецца трохі абстрактны прама цяпер. Гэта тое, што мы будзем казаць пра. Мы ныраць глыбей пазней у курсе. Такім чынам, што які-небудзь больш высокага ўзроўню абстракцыя гэтыя рэчы працуюць з'яўляецца тое, што, у памяці, у кампутар, усё захоўваецца ў гэтым тыпе стэка, я павінен сказаць. Дык там на самым версе. Я не ведаю, калі вы хлопцы, можаце ўбачыць, што добра. Я паспрабую, каб павялічыць. Тут на вяршыні, мы маюць фізічны тэкст што кампутар interpreting-- усе нулі і адзінкі, якія існуюць у нашым кампутары. А потым мы ініцыялізаваць Дадзеныя дадзеных і неинициализированных, што мы называем глабальныя зменныя. Так зменных, якія існуюць ўсіх праграм і па ўсёй вашай, па сутнасці, код. Не турбуйцеся, калі вы, хлопцы, выгляд незразумела пра гэта. Гэта сапраўды не мае значэння прама цяпер. І тады ў нас ёсць тое, што называецца куча ў стэку. Падумайце аб стэку літаральна гэтак жа, як стэк рэчаў, стэк адрозніваецца рэчы штурхаюць зверху адзін ад аднаго, што захоўваць розныя Зменныя і сінтаксіс ў кодзе. А потым тут, у самым нізе, у нас ёсць зменныя асяроддзя што вы выконваеце ў проста ваш маленькі радкі кода. І мы толькі збіраемся, каб павялічыць У ад фактычнага часткі стэка. Дык вось тут, калі б мы былі, каб павялічыць У толькі на гэтай галіне стэка, гэта тое, што ён выглядае. І гэта на самай справе вельмі важна калі вы, хлопцы, казаць пра функцыі, таму што паведамленне аб тым, што памяці кампутара захоўвае зменныя і функцыі і параметры як ваш функцыі і вашы асноўныя зменныя у розных месцах. Так што цяпер, галоўнае, фактычная функцыя што вы выкананне ў кодзе. Вы яго параметры захоўваюцца тут і яе лакальныя зменныя захоўваюцца тут. Лакальная пераменная проста азначае любую зменную што існуюць толькі ў гэтай функцыі. І на ім, у вас ёсць гэта асобная функцыя называецца куб. Вы павінны гэта параметры а таксама тых мясцовых жыхароў. І прычына вы можаце бачыце тут тое, што адбываецца, калі куб займае ў Значэнне з асноўнага функцыі з'яўляецца тое, што на самой справе гэта капіяванне што на працягу. Так што, калі я хацеў куба 2 і вярнуцца 8, што 2 фактычна ўводзіцца ў якасці параметру, і гэта скапіяваныя, так што ў вас ёсць гэта існуючая у двух розных месцах у памяці. І вы павінны быць вельмі асцярожныя, на запамінанне, якія адзін з тых, вы на самой справе маніпулявання. І прыклад таго, што адбылося гэта было б вельмі, вельмі дрэнна існуе прама тут. Так прама тут, у мяне, у тэорыі, Праграма прама тут, галоўным функцыя што я абвясціўшы Int х роўны 1. Я аб'яўляю яшчэ адзін INT ў роўны 2. І тады я бягу яго праз гэтую функцыю называецца падпампоўкі, куды я мяркую, што гэта абмен двух значэнняў. А потым я збіраюся друкаваць іх, праўда? Гэта тое, што я хачу, каб гэтая праграма рабіць. Такім чынам, давайце спусціцца і паглядзець. Так што, калі я на самой справе напісаць адрозніваецца Функцыя, як вы можаце бачыць, у нас ёсць асноўныя функцыі тут. І тады ў нас ёсць нашы Другая функцыя тут. Пустата падпампоўкі. Пустата азначае толькі тое, што гэта не збіраецца нічога вяртаць. Назва Функцыя называецца своп, і гэта збіраецца впускных двух зменных, Int А і INT B, з вашай [неразборліва] функцыі. Так па сутнасці тут, мы праходзячы х і у ў гэтую функцыю. І калі б мы стварыць this-- таму мы хочам стварыць часовае значэнне, праўда? Мы збіраемся прызначыць, што а. А потым будзе сапраўднае роўнай б. І б збіраецца вярнуцца дзе значэнне тэмпературы было, якая ўяўляе сабой, таму што, калі Вы хочаце, каб абмяняць рэчы, Вы не можаце проста падабаецца памяняць іх месцамі. Вы павінны трымаць аднаго з іх тут, так што ён памятае, што гэта такое, таму што, калі Вы памяняць адзін, вы забыліся што гэта першапачатковае значэнне было, праўда? Так у тэорыі, гэтая праграма павінна працаваць, ці не так? Калі б я хацеў, каб памяняць месцамі два, яны павінны памяняць. Такім чынам, давайце запусціць яго і паглядзець, ці працуе ён. Такім чынам, як вы, хлопцы, можаце ўбачыць, х калісьці быў 1 і ў 2 быў калісьці. І калі я раздрукаваць яго, х яшчэ 1 і Y 2. Хм, гэтая праграма не здаюцца працуе так, што я хачу, каб працаваць. Хто-небудзь хоча, каб зрабіць здымак на гадаць, чаму гэта адбываецца? Гэта мае дачыненне да шляху што розныя рэчы захоўваюцца ў розных месцах у памяці. ДОБРА. Такім чынам, вы, хлопцы, не трэба турбавацца занадта шмат пра гэта прама цяпер. Але ведаю, што куб Гадзінны зменныя былі б, таму што тут, у нашай функцыі, мы абвясцілі А і У а зменныя, якія існуюць у кубе, што функцыя. Але, як вы бачыце, параметры, якія ён прымае ў захоўваліся тут. Але мы не былі на самай справе вяртанне нічога. Мы не былі на самай справе змены х і у. Мы былі толькі ў замене і б. Мы скапіявалі х і у ў то называецца і б. Але мы ніколі фактычна маніпуляваць х і ў саміх сябе. Вы, хлопцы, бачачы як гэта адбываецца? Гэта мы проста скапіявалі іх скончылася, але мы на самай справе не захоўваецца трэк, дзе яны былі ў памяці. І вось цяпер кампутар шукае, О, я запусціць гэтую рэч праз гэта выдатны функцыя. Але х і ў яшчэ х і у. Нічога не здарылася ім з-за таго што гэтых параметраў і лакальныя зменныя захоўваюцца ў іншы месца ў памяці. І гэта вышэй за ўзровень Канцэпцыя, што мы будзем пачаць бачыць пазней у курсе. Але дакладна ведаю, што гэта праблема, якая можа здарыцца і што мы будзем высветліць спосабы аб тым, як мець справу з гэтым пазней у курсе. ДОБРА. Добра. Такім чынам, апошняе паняцце мы на самай справе адбываецца, каб пакрыць што будзе карысна для PSET на гэтым тыдні тое, што называюць Аргументы каманднага радка. Так Роб ў сваёй лекцыі прайшлі выгляд коратка, як гэтыя працы. Па сутнасці ведаю, што калі вы пішаце як асноўнай функцыі, калі мы напісаў функцый да і ў мінулым, у нас было Int асноўны пустэчу. І прычына ў нас было несапраўдным ёсць таму, што нашы праграмы не зрабіў трэба ўваходных значэнняў для запуску, праўда? Калі я пабег Марыё, мне не трэба на самай справе проста увядзіце тое калі я бег Марыё. Я мог бы падказаць карыстальніку ў далейшым. Але не заўсёды будзе так. Напрыклад, у гэтым Праблема тыдзень ўсталёўвае, Вы збіраецеся быць прапанавана, што ў Акрамя запуску вашай праграмы, Вы збіраецеся хочаце, каб увесці некаторыя рэчы ў прама, як вы запусціць праграму. Такім чынам, як мы робім, што называецца аргумент каманднага радка, што гэта як аргумент Вы можаце ўвесці непасрэдна як вы спрабуеце запусціць вашу праграму. Такім чынам, пазначэнне для гэтага, гэта даволі складаны выгляд, але гэта сапраўды не тое, што цяжка. Так INT main-- гэта проста ваш галоўны функцыя. У ARGC коскі радок ARGV дужках. Такім чынам, усё, што кажа, што гэта INT argc-- ўсё, што кажу вам, з'яўляецца тое, што тыя лік Аргументы кампутар павінен чакаць. Так адна рэч, якая сапраўды Важна сачыць з'яўляецца фізічная імя вашай праграмы лічыцца адным з тых аргументаў. Так што, калі я хацеў, каб мая праграма запусціць адзін дадатковы плюс каманднага радка Аргумент, на самай справе я будзе мець два. ARGC на самай справе будзе два. І тады радок ARGV bracket-- усё, што робіць, гэта дае мне Масіў радкоў, гэта збіраюся проста паказаць і захаваць тое, што усе гэтыя аргументы каманднага радка. Так, напрыклад, калі б я хацеў, каб гэта Праграма, ./copy входной_файл выходной_файл, праўда? Гэта проста Тыповая каманда Linux. Што на самой справе ARGC? Колькі аргументаў каманднага радка ёсць на самай справе ў гэта? Усё гэта робіць, гэта зрабіць копію входной_файл імя аднаго файла і капіюе яго ў іншы файл, праўда? Вось усё гэта робіць. Як вы можаце бачыць, я раблю гэта па адной лініі фактычна не маючы патрэбу ў праграму. Што наша ARGC ў гэтым выпадку? Колькі аргументаў ў нас? АЎДЫТОРЫЯ: Тры? ANDI Пэн: У нас ёсць тры, дакладна. Так што гэта вельмі інтуітыўна проста думаю, што гэта проста входной_файл і выходной_файл. Але ведаю, што фізічнае імя з Праграма вы працуеце разлічвае як адзін. Такім чынам, у гэтым выпадку, на самай справе ARGC тры. Як наконт таго, што ARGV 0? Памятаеце, што ўсё з Аргументы каманднага радка былі захаваны ў масіве радкоў. Так што, калі я спрабую атрымаць да яго доступ, тое, што будзе ARGV кранштэйн 0 даць мне? АЎДЫТОРЫЯ: [неразборліва]. ANDI Пэн: Точно. Гэта дасць мне кропку скараціць копію, таму што гэта 0-я стыхія, Першы элемент майго масіва. Што пра ARGV 1? АЎДЫТОРЫЯ: входной_файл. ANDI Пэн: входной_файл, дакладна. Што пра ARGV 2? АЎДЫТОРЫЯ: OUTFILE. ANDI Пэн: OUTFILE. Гэта крыху больш складана ў цяперашні час. Што вы, хлопцы, думаю, ARGV 3 будзе даваць мне калі б я паспрабаваў надрукаваць, што з? АЎДЫТОРЫЯ: [неразборліва]? ANDI Пэн: Ці было ў вас рукі ўверх? Так. АЎДЫТОРЫЯ: альтэрнатыва. ANDI Пэн: Точно. Так што памятаеце, у лекцыі, што мы значыць у канцы гоначнага то называецца нуль-тэрмінатар? Мы ўвойдзем у гэта таксама далей у класе. Але ведаю, што ў пазначэннях, спосаб кампутар ведае, што гэта канец масіва з'яўляецца тое, што гэтым ставіць тое, што называецца нулявым тэрмінатар або працяжнік роўная нуля. Так што, калі вы спрабуеце атрымаць доступ ARGV 3, Вы збіраецеся ударыць гэтую рысу 0. Гэта нават больш пытанне з падвохам. Што пра ARGV 4? Так гэта мінулае нуль тэрмінатар, міма межах масіве. Што вы думаеце, што адбудзецца, калі мы спрабуем зрабіць? АЎДЫТОРЫЯ: [неразборліва]? ANDI Пэн: На ​​жаль? Скажыце, што крыху гучней? АЎДЫТОРЫЯ: [неразборліва]. ANDI Пэн: Так. Гэтае імя з плошчу вы хутчэй за ўсё, атрымаеце. Але ведаю, што ARGV 4-- што дазваляе атрымаць доступ да месца вашага кампутара памяці, што вы на самай справе не павінна быць кранальным, таму што Прама зараз вы ведаеце, што гэта ARGV. Вы ведаеце, што гэта масіў памеру 3 што мае кропка капіявання, INFILE і выходной_файл. Калі вы паспрабуеце пайсці так далёка за межы, што што вы міма пустога тэрмінатара, Ваш кампутар мае, верагодна, захоўваць нешта ў ARGV 4. І вы сапраўды не павінны быць дазволены доступ у ARGV 4, таму што ў вас ёсць файл шафа, і вы толькі дазволены доступ да гэтых трох паліц. Але калі вы спрабуеце дасягнуць далёка за межы шэльф, дзе вы маеце права, Вы збіраецеся пачаць важдацца з іншыя рэчы ў памяці кампутара. Гэта будзе вельмі, вельмі дрэнна. Так проста ведаю, што. Будзьце вельмі асцярожныя, што вы не проста выпадкова пачаць доступ да элементаў масіва, што не ў тым, што вы хочаце стварыць. Так. ДОБРА. Так што мы збіраемся зрабіць яшчэ адзін Тэрмінал прыклад тут. ДОБРА. Так Роб хутка ў лекцыі другі дзень пайшоў праз гэты прыклад, дзе была INT INT асноўны ARGC радок ARGV кранштэйны, якія кажа мне, што я будзе мець аргументы каманднага радка. Ён, калі ARGC роўная роўны 2-- памятаеце, роўная роўна азначае параўнанне. Калі ён роўны 2, то я да друку прывітанне, што было першай элемент масіва з'яўляецца. Інакш друк, прывітанне свет. Што гэта збіраецца адбылося ў асноўным? Можа хто-то проста растлумачыць Англійская што гэтая праграма робіць? Так. АЎДЫТОРЫЯ: Калі нехта набраў у каманду і сказаў, што іх імя і прозвішча, гэта будзе не проста друкаваць Першы і сказаць, прывітанне, усе ваша імя ёсць. ANDI Пэн: Добра, давайце яго запуску. Так, напрыклад, калі б я, каб зрабіць гэты файл зрабіць прывітанне прывітанне, мэтай якіх , Мэтай якіх тое, што ты хочаш, каб увесці? АЎДЫТОРЫЯ: імя і прозвішча. ANDI Пэн: імя і прозвішча? Прасторы? АЎДЫТОРЫЯ: Так. ANDI Пэн: Можа хто-небудзь сказаць мне прама зараз, што ARGC? Проста тут? Ой, прабачце. Дазвольце мне вярнуцца. Колькі аргументаў каманднага радка are-- вы, хлопцы, не магу бачыць. Але я паспрабую, каб павялічыць. Я спрабую. Так, ёсць тры, ці не так? Гэта кропка слэш прывітанне, гэта Эндзі, і гэта Пэн. Так што вы, хлопцы, думаю, што гэта Праграма будзе раздрукоўкі? Ох. О, прабачце. Няправільнае імя. Гэта раздрукоўкі, прывітанне свет. Хто-небудзь хоча растлумачыць чаму гэта адбываецца? Да? АЎДЫТОРЫЯ: [неразборліва]. ANDI Пэн: Точно. Дык вось, з'яўляюцца ўмоўнымі ёсць, калі ARGC роўная роўная 2. Такім чынам, толькі ў тым выпадку, існуе два аргументу каманднага радка. Тады я іду да друку, прывітанне, што гэта такое. А яшчэ, я збіраюся надрукаваць толькі, прывітанне свет. Гэтак жа хто-небудзь хоча каб даць мне прыклад аб тым, як я мог бы на самай справе зрабіць гэта, каб надрукаваць значэнне ARGV 1? Што б я, каб ўваход тут? Толькі адна рэч, дакладна? Паколькі кропка прывітанне да ўжо лічыцца як першы аргумент. У мяне ёсць яшчэ адзін толькі. Так кропка прывітанне, калі я проста зрабіць Эндзі. Добры дзень, Эндзі. Ці разумее ўсё чаму гэта адбываецца? Так. АЎДЫТОРЫЯ: Так прастора паміж Каманда line-- гэта [неразборліва]? ANDI PENG: Няма Так прасторы ў камандным радку Аргумент, х, сказаць кампутар што гэта пачатак новага радка. Так радок ARGV here-- гэта крамы усе вашы аргументы лініі каманд у радках. І таму прастору ў камандным радку argument-- ўсё, што робіць вам сказаць, гэта ў канцы аднаго радка і гэты час, каб перайсці да іншай. Так. Гэта вельмі важна для Ваш PSET, таму што вы будзе адчуваць іх. Дык хто-небудзь ёсць якія-небудзь пытанні па гэтай нагоды? ОК, крута. Да? АЎДЫТОРЫЯ: Так што прычына вам будзе змясціць цэлае аргумент вапнавае замест з [неразборліва] будзе, калі вы хочаце ўвесці дадатковую інфармацыю [Неразборліва]? ANDI Пэн: Так, менавіта так. Некаторыя праграмы патрабуюць для ўводу аргументу каманднага радка што яна праходзіць у і які выкарыстоўвае гэта. Так. АЎДЫТОРЫЯ: Так што, калі [неразборліва]? ANDI Пэн: Ну, тое, што ў мяне ёсць каб затым змяніць у маёй праграме? АЎДЫТОРЫЯ: Проста 3. ANDI Пэн: Чаму гэта адбываецца, як вы думаеце? АЎДЫТОРЫЯ: Таму што [неразборліва]. АЎДЫТОРЫЯ: Вы павінны былі б змяніць яго на 2 [неразборліва]. АЎДЫТОРЫЯ: 1 і 2. ANDI Пэн: 1 і 2, дакладна. Такім чынам, у гэтым выпадку, вы, верагодна, хочуць мець двух Printf statements-- які друкуецца ARGV 1 і той, які друкуецца ARGV 2. Вось. Я можа рэальна зрабіць што рэальны хуткі. Там вы ідзяце. Ох. Не зусім тое, што вы хацелі. Але калі вы, хлопцы, важдацца з фарматаванне, ён выйдзе. Так. Прахладны. Я ведаю, мы крыху кароткі па часе. Але я проста хачу, каб хутка правесці пару хвілін, якія праходзяць праз helpful-- АЎДЫТОРЫЯ: У вас ёсць дзве хвіліны. ANDI Пэн: у мяне ёсць дзве хвіліны? Дзякуй. Некаторыя хуткія падказкі Pset. Такім чынам, для гэтай PSET, я настойліва рэкамендую, як я ўжо сказаў, усё чытаць спецыфікацыі. Вы будзеце пісаць тры programs-- адзін называецца initials.c, адна называецца caesar.c, адна называецца vigenere.c. Некаторыя важныя парады, якія вы, хлопцы, сапраўды хочуць захаваць у mind-- так ёсць гэтая функцыя называецца atoi--, як я люблю казаць, Труа. Незразумела, калі гэта на самай справе, як вы гэта кажаце. Але ўсё, што ён робіць, гэта ўвод. Ён пераўтворыць радок у Int. Такім чынам, уяўляе ASCII для цэлага я. Гэта проста пераўтварэнне ASCII значэння ў цэлае значэння. Так што памятаеце ARGV, масіў, які захоўвае усе вашы каманды выстройваюцца arguments-- ён захоўвае іх усіх, як струны. І таму, калі вы хочаце, каб мець магчымасць у аднаго з іх сталі цэлы лік, Вы будзеце мець выкарыстоўваць тут гэта значэнне. Модулю, як мы разгледзелі раней у класе сёння, дазваляе мець Астатняя частка, што вы ёсць. Так што, калі ў нас ёсць вельмі, вельмі вялікія нумара ў Цэзар, што, калі ў нас ёсць канец з радка Vigenere? Як вы збіраецеся быць у стане каб атрымаць, што абгарнуць вакол? Калі я ўдарыў г і я хачу гэта, каб вярнуцца да, як я збіраюся атрымаць што, каб абгарнуць вакол? Магчыма хочаце выкарыстоўваць модулю недзе там. Па-другое, праглядаць вакол Ваша бібліятэка. ctype.h. Гэта новая бібліятэка ў нас ёсць. Вы знойдзеце шмат вельмі, вельмі карысна functions-- ISUPPER, ISLOWER, ToUpper, ToLower, ISALPHA, і гэтак далей. Усе функцыі, якія будуць вельмі карысныя калі вы спрабуеце высветліць ,, гэты персанаж маленькай літарай? Як пераўтварыць гэта радок загалоўнай літары? Усе гэтыя рэчы будуць вельмі, вельмі карысна для вашага PSET. ДОБРА. Гадзіннік сёння ўвечары 8:00 да 11:00 у ТЭАЛ класе заўтра а таксама ў сераду і ў чацвер ноччу. Гадзіны працы офіса ў звычайныя. Настойліва рэкамендую вам, хлопцы ўсё пачаць прама зараз, таму што вы не хочаце быць, што Дзіця, які ў чацвер вечарам ёсць праблемы прадставіўшы свой PSET і як, я не ведаю, што рабіць. Я пачаў, я скончыў, я прадставіў. Паспрабуйце даць сабе некаторыя магчымасці, таму што ў заўсёды адбываюцца праблемы кода. Вы хочаце, каб пераканацца, што вы даеце сабе шмат часу, каб быць у стане для завяршэння psets. Прахладны. Я павешу тут. АЎДЫТОРЫЯ: Гэта онлайн ўжо? ANDI Пэн: Я не ведаю, калі гэта ужо ў Інтэрнэце, але ён будзе. Я павешу тут, калі хто- ужо якія-небудзь пытанні. Дзякуй, што прыйшлі.