JASON Hirschhorn: Добре дошли в CS50 точка, всеки. Моето име е Джейсън Hirschhorn. Аз съм много твои TFS, но много хората ще се надяваме да се присъедини към нас онлайн, удължителен ученици или студенти се опитва да търси чрез секция, ако те изпусна точка тази седмица или Просто се изравнят, ако искат да направи преглед на някои материали. Така, както на учебната програма, която всички на сте прочели, нали? Виждам много на главата кима. Секции ви предостави възможности за опознаването на курса материал в по-интимна обстановка, както и се потопите в практически дейности. Така че това е основно това, което сме ще се прави всяка седмица. Отиваме да мине през това, което имаме трябваше да бъде най-важният темите, включени в лекцията, и тези, вероятно и най-полезните и най-вероятно ще излезе на проблемните комплекти и викторини, и във вашата кодиране живот извън CS50. Така че ние ще отидем в тези теми, ги обсъждат, отидете над тях, отговори на всички въпроси вие имате, и След това ние ще направим много практика проблеми в кодиране. Всички вие, подадена лаптопи, което е фантастично. Това е един клас компютърни науки. Въпреки това, много от упражненията, които правим, няма нужда вашите лаптопи. Можете да ги направите върху лист хартия. Ето как започваш да се им правя на викторини. И наистина, това е чудесен начин да се наистина знаете, че как да се направи нещо, ако не разполагате Проверете 50 до разчитат или да направите да се разчита на, казва сте направили някакви грешки. Значи вие сте добре дошли на код на уреда или run.cs50.net, което е друг инструмент, който ви позволява да се кодира онлайн, но аз също бих препоръчал, ако не сте го опитвали, с помощта на лист хартия и се опитва тези практики проблеми на лист хартия. Защото отново, това е в крайна сметка това, което ще бъде помоли да направя на викторини. Така че нека да започнем с нашия дневния ред за днес. Отиваме да разясни някои норми за нашата секция, след това ние ще се потопите в масиви, функции и от команден ред аргументи, което е това, което вие са обхванали миналата седмица в лекция и след понеделник, и това, което ще обхваща още от утре. И накрая, ние ще да се говори за pset2. Ако мога да получа с вдигане на ръка, ако не са разглеждали проблема набор две спецификация. Ще кажа на всички. Fantastic. Ще говорим за проблемните групи в малко, но ако прочетете проблем набор спецификация, това е всичко, което трябва да се направи. Ако сте чели, че преди да дойде клас и раздел във вторник, ще ви бъде чудесна позиция. Ние можем да минем през проблема набор, което е това, което ще да се направи в края. Отиваме да мине през логиката, уверете се, всички са на същата страница. Искам да бъде в състояние да напусне вторник чувства много комфортно с това, което трябва да направите, за проблем в стаята тази седмица, и ако не го направиш, аз с радост ще след престой и работя с вас. Но това е едно нещо, което трябва да направи, но мисля, ще бъде наистина интелигентен, просто да прочетете набор проблем спецификация от клас във вторник, което звучи като много от вас го направи. Ще започна с дневен ред, всеки клас така че знам къде отиваме. Това също е полезно за хората, които гледат онлайн, защото всеки раздел е означен с различен цвят, така че ако искате да се назад и просто гледате 10 минути по-скоро от целия 90-минутен раздел можете може просто да отидете на цвят кодирани раздела и погледнете тази част. Така че аз се опитах да ги разделите на хубаво модули, които ще ви позволи да - ако искате да се върнете и да преразгледа, или други студенти, които са само гледане на раздела за преглед - да намерите нещо специфично те Искам да се обърне внимание на и да научат повече за това. Sweet. Норми. Аз съм лидер FOP на територията на колежа. Аз не знам дали някой е FOP. Някой направи FOP? Един човек е FOP. Двама души направил FOP. Awesome. Така FOP е първата година, Открит Ориентация програма. Ние приемаме първокурсници в гората и да направи най-магическите преживявания на живота си, нали? Да. Звуци за правото. Така че аз просто исках да започне първият ни секция с обсъждане на някои норми за класа и нашата връзка защото мисля, че те са много важни. Първо и преди всичко, като тези от вас, които са ми раздел са получили и е обсъдено с това, че имейл, обичам тази. Това е любимата ми част от годината. Бях толкова развълнуван. Аз съм тук от час днес. Не е оставил тази сграда, освен да да ядем, защото обичам CS50 раздел I обичам преподаването, аз обичам да работя с вас, момчета. Един от моите най-важните приоритети, ако не ми приоритет номер едно, не само за този клас, но включително и другият ми класове и извънкласни, е да подкрепят вас, и ви помогна, и направя всичко възможно да се уверите, че момчета имате прекрасна, забавна, продуктивна, ангажиране, вълнуващо опит в този клас. Това е, което аз съм ангажиран с. Ето защо аз обичам да правя това. Това е моят номер едно нещо, подкрепа на вас, момчета. Ако имате някакви въпроси за лекцията, проблемът комплект, секция, живот, дори и да искам да говоря за живот, моля не се колебайте да се достигне. Трябва ми редица мобилни телефони, имате моя имейл адрес, трябва ми Gchat. Можете да се свържете с мен по всяко или всички тези, по всяко време, но най-вероятно няма да получи отговор, когато. Опитвам се и да се върнат в рамките на 24 часа. Често ще бъде в рамките на 20 минути или 24 минути. Трябваше да кажа, че и направи паралел. Но вие ще получите отговор доста бързо. Ако ме текст час преди Проблемът е набор дължи, аз ще ви успокоя надолу и направи дълбоки дихателни упражнения с вас, но ако не са започнали, най-вероятно няма да завърши, и Наистина не мога да ти помогна там въпреки че аз ще направя всичко възможно. Така че аз ще направя всичко Мога да ви подкрепят. Моля не се колебайте да се достигне дали това е в раздел отново, в Приемно време ако ме види, или дори навън. Щастлив съм да определите време да се срещнат и се осъществяват чрез проблеми със или разясни материал. Така, че е номер едно, подкрепа. Аз ще направя всичко може да ви подкрепят. Номер две, среща в центъра. Колкото и да искам да бъде, аз съм не всемогъщ или всемогъщ или всезнаещ, така че аз не знам всички време, ако това, което правя е да намира, ако начинът, аз преподавам темата ви помага да го научат, или ако са объркани по темата, но не вдигнете ръката или ме питат или да ми изпратите имейл. Или дори, ако отново са объркани за нещо по проблема в стаята. Ако не се достигне до мен, Не мога да знам, че със сигурност. Аз ще направя всичко възможно да се настаните на момчета, уверете, че всичко е върви добре, опитайте се да науча неща, по начин, това ще доведе до по-голямата част Вашите стилове на учене, но ако има мога да направя нещо, да ме уведомите. От тези редове, ако искате някаква помощ с проблема набор, аз съм по- от щастливи да ви помогне с проблема в стаята. Отиваме да направим много че към втората половина на тази секция. Но ако не сте прочели проблема определя архивирате и не са гледани на разходка чрез и не са гледали шорти и да очакваш от мен да те науча всичко, което е заснел онлайн или на които можете да намерите най-CS50 проучване, това не е много честно да мен или за другите си връстници. Така че, моля, аз съм повече от щастлив да помогне вас, но вие трябва да ми отговори в средата. Ние имаме тон на ресурси за можете достъпно на CS50. Споменах някои от тях. Моля, да се възползват от тях. Ако сте объркани, аз съм повече от щастлив да ви помогне да ги обясни в по друг начин, но това не е честно, ако студентите се появи в работно време, не започва нещо, и това е Четвъртък вечер и те очакваме на TF да ги преведе през всеки един нещо за проблема зададете поради на обяд на следващия ден. Има ли смисъл? Отново, моля свържете се срещнат в средата. И накрая, високи очаквания. Ще бъде сортиране всеки, който е в моята секция, или оценка на вашите проблемни групи. Не сте се върнали проблем зададете нула или едно, все още. Съжаляваме за това. Отне ни известно време, най-накрая уреждане секции, а сега можем да започнем оценяване. Ще им се обадя възможно най-скоро. Това са някои от моите advisees там. Ще им се обадя възможно най-скоро. И за проблем набор две, ще бъде на график и ние ще започнем повдигайки да ви доста бързо след да ги включите инча Когато получите вашия проблем върна, вие ще получите резултати, както знаете от четене на учебната програма - коректност, проект, обхвата и стил резултати. Вие ще получите също коментират. Коментарите са по-важни от оценките. Мисля, че е безопасно да се каже, че. Рекорди са само няколко от едно до пет. Трудно е да се чете на такива. Трудно е да се подобри от тези. Но коментарите, ще посочи конкретна неща, които се справиха добре или области можете да подобрите върху и ще ви даде някои идеи за бъдещето или алтернатива начини за правене на нещата. Така че, моля, моля, моля, прочетете всички коментари. Сложих доста време в тези коментари. Моля, прочетете ги и не само превъртете надолу до дъното на PDF, потърсете резултата си, или да отидете онлайн и да намерят своя гол, а след това игнорира коментарите. Това не е начина, по който си ще получите по-добро. Това няма как започваш да се увеличи вашите резултати в крайна сметка, просто , като погледнете в оценките. Моля, погледнете тези коментари. И по линия на високите очаквания, отново, както казах, могат да бъдат отбелязани от едно до пет. Двойки, тройки, четворки и са Огромното мнозинство от резултати ти започваш да бъдат намалени. Ones и петици са и двата наистина рядкост. Винаги има неща, можем да направим по-добре. Всеки път, когато се кодира програма, има винаги нещо, което би могъл да направи по-добре. Така че вместо да каже имаш пет през цялото време за всичко и не всичко перфектно, аз не мисля, че някой от нас наистина вярвам, че ние - или Надяваме се, че ние не правим всичко перфектен през цялото време. Така че не се притеснявам, ако не получи пет. А пет не върху картата на A, а четири не картата върху B, три прави не на картата върху C. Това не е как оценките работи. Както Давид каза много пъти, в семестър в края на всички ваши резултати и вход от мен, си TF, се събират и определяне на окончателна оценка за вас. Но пак, това не е пет, A, четири, B, и така нататък. Така че аз ще да имат високи очаквания за вас, момчета. Отивам да се очаква добро проблем набори и аз отивам да се даде ви обратна връзка като такива. И това няма да означава, че си Ще получите по-лошо качество. Вие се оценяват от гледна точка на напредъка си от седмици нула до края курса. И накрая, по отношение на висока очаквания в клас, Обичам, когато хора участват. Разбирам, някои хора се чувстват повече или по- по-малко удобни участие. Други хора участват не чрез повишаване на тяхната страна и говорим през цялото време. Но ние в този клас ще бъдат прави много малки проблеми, много на мини въпроси, а след това някои по-голям кодиране проблеми. Така че определено работят тези упражнения се когато ги правите на компютъра ви или на лист хартия. Но аз ще ви дам малко време, преди да Някой някога трябва да отговори на някои от въпросите, които задавам. Така че, защото аз ще ви дам малко време, за да мисля за това, защото ще да правят неща в партньори понякога, Ще очакваме всички да бъдат ангажирани до известна степен. И за липсата на по-добър термин, има вероятно ще бъде студено призвание, което е мястото, където всеки ще има възможност да се мисли за отговор, а след това Ще се обадя на вас, а след това ще кажа отговора. Не се притеснявайте, или се плаши от това. Правил съм го в миналото и ние открихме че това е много по-успешни, прочетете също педагогическите изследвания върху него да се определи дали това е добра тактика. Това е много полезно, особено ако даде време на учениците да се замислят за отговори и не ги правят просто елате го кажа право на разстояние бухалката. Но ако не се чувстват комфортно отговори, аз също съм доста добър в Усещайки, че навън, и ние няма да ви постави на място, особено по камерата, въпреки че нито един от вие сте на камерата в момента. Така че това са норми, които имам. Още едно нещо, по подобие на заседанието си в средата. Аз ще ви дам момчета много на обратната връзка. Моля, дайте ми обратна връзка, както добре. Има един сайт, sayat.me/cs50. Така че това е един честен обратна връзка. Ако искате да му се даде време на секцията, I получите имейл всеки път, когато това се случва. Ние ще си вземе почивка след малко, така че ще погледнете през обратна връзка след това. Ако някога имате отзиви, моля да ми го дадеш там. Ако ми дадеш мнение за Q, че е чудесно, но това е за употреба , което правите в края. Но това ще бъде в края на семестъра, така Аз няма да могат да вземат нищо от това обратна връзка и да го превърне в преподаването вие по-добре. Така че, моля, ако имате някакви обратна връзка, да ми го дадеш. Обичам обратна връзка. Обратно към FOP, получаваме обратна връзка през цялото време. Вие може да ми даде плюсове, добри неща, делти, неща, които може да подобри. Вие можете да си тоалети. Това няма да е толкова полезно, но ти си добре дошъл да коментира всеки и всичко. Моля, моля да ми даде обратна връзка. Аз го ценя много и тя означава много за мен. Още една норма, забавно. Ще имате много забавно. Надяваме се в този курс, ще са много забавно. Ще имаме бонбони в раздел. Ще има музика. Ние ще се надяваме да се опознаят един друга донякъде добре, така че аз искам това да бъде забавно, ангажиране опит. Знам, че някои от вас са починали в лекциите, които сте имали по-рано днес, така че се надяваме, че няма да е случаят сега. И ако това е така сега, просто не хърка, защото това може бъде уловен от камера. Sweet. Всякакви въпроси, коментари или притеснения преди да се премине за всичко, което сме говорихме? Great. Така че ние ще отидем в масиви първо. Ето как да се направи масив. Виждали сме това и преди. Имате тип данни, имате име и след това имате размер. Точно тук, създавам два масива. Първият от тях е масив от символи, и има 26 места. Вторият е масив от резултати, и тя е три Само за три числа. Да? Студентът: Има всички тези слайдове наличен някъде за нас? JASON Hirschhorn: Great въпрос. Въпросът е, са всички Тези слайдове на разположение? Да. Всички тези слайдове ще бъде на разположение, и за в бъдеще, ще ги изпратите на вас преди раздел. Но днес, защото това е първият седмица ще започна късно. Така че, обикновено, ще получите тези слайдове, но те ще бъдат достъпни онлайн и Ще ги имейл до вас веднага след клас. Някакви други въпроси? Така че, отново масиви са кутии, поради липса на по-добра дума, че притежават по няколко елементи от един тип данни, и те са една до друга в паметта. И така, отново, това е как можете да направи два типа масиви. Така че, след като си направил масив с че първа линия - вътр резултати, скоба три, в близост скоба - ти искам да го инициализира. Вие искате да сложите някои стойности в там. А това е как ви постави някои стойности в там, просто избора на indice и писането на брой. Да се ​​изготви този на дъската. Всеки ли може да видите? Всеки може да види. Sweet. Така че това ще бъде моята масив наречен рекорди. Както можете да видите, че е размер три. Има три кутии в там. Всяка от тях може да се побере това, което тип тип данни? Студентът: Integer. JASON Hirschhorn: Цяло в този. Писахме вътр резултати, а първата дума е типа на данните, които ще се излиза в кутии в този масив. Така че може да се побере три. Защо имам нула има на борда? Защо излиза оценка нула е равно на 1? Напомни ми за името си. Студентът: Kurt. JASON Hirschhorn: Kurt. Студентът: Да. JASON Hirschhorn: Защо? Студентът: Защото първата индекс е нула, ние започнем да броим на нула. JASON Hirschhorn: Така че да започнем преброяване на нула. Това е точно така. Това е объркващо част и пътуването ще вие нагоре, особено когато сте се опитва да превъртите през масиви, което ще направим след малко. Започваме преброяване на нула. Така че, ако аз искам да се позова на първия кутия, това не е една кутия. За съжаление, това е кутия нула. Вторият е един прозорец, и по този случай, третият е полето две. Ами кутията три? Къде е кутията три? Или ако искате да направите резултати, скоба три, в близост скоба, какво е това? Като казахте нулевата характер. Всякакви други мисли? Какво е точкова група три скоба? Студент: Това в действителност не съществува, защото само определя като резултати, скоба три. JASON Hirschhorn: Така ще кажеш той в действителност не съществува. В някои случаи, когато си имаме работа с низове, обикновено ще сложим нула характер в края. Ще стигнем и до това след секунда. Но в този случай, има не е третото поле тук. Така последните кутия във всеки масив размер е минус 1. Така че, ако имаме масив с размер М, на първото поле да е на нула, последното от които е в N минус 1. И в този случай, че тя не съществува. Има нещо тук, в памет, но това не е наша. Ние не го притежават. Не питам за това. Така че, ако ние се опитваме да го отворите, които ние ще направи в малко, ние вероятно сме получите в беда. В този случай, аз съм инициализиране ми масив с три променливи. Ние удар от един в клетка нула, две в кутия една страна, и три в клетка две. Дали някой има някакви въпроси за инициализиране на масив? Така че отидохме през този току-що. Рекорди, скоби, близо три скоби , което не съществува. Ние сме нула индексира по компютърни науки, така че ние започнем да броим на нула. Последният прозорец на разположение за нас, то е третото поле, но тя се нарича прозорец номер две. Долу Това е алтернатива начин за инициализиране на масиви. Така че, вместо да създавате масив от едната линия, запълване на първата клетка, а след това второто поле, а след това на третия прозорец можете да направите всичко това в една линия. Така че в този ред, двата масива. Това създава абсолютно същата като масив това, което сме създали точно тук, но просто го прави в един ред. Сега ние създадохме нашия масив. Обикновено, след като се създаде масив, можете Искам да направя нещо с него, независимо дали Това е. запълване или се неща от него и да ги изкарваме на екрана. В този случай, ние ще чрез нашия резултати масив, който инициализира на на първа линия до тук в сиво. И след това на втора линия, започваме итерации чрез масив. Дали някой има някакви въпроси относно структурата на за цикъл? Така че това е за линия. Ние разполагаме със първоначалното състояние, и след това крайната ни състояние, а след това обхождане, аз, всеки кръг. И в големи скоби в тази за линия, какво ще стане, ако аз трябваше да тичам тази програма? Някой може ли да ми каже какво ще получим? [? Зрялост? ?] Зрялост: Отпечатайте всички резултати на всеки ред. Това ще отпечата всеки резултат на отделен ред. JASON Hirschhorn: Какво точно ще го отпечатате? Студент: Това ще отпечата един, после две, после три. JASON Hirschhorn: Точно така. Това ще отпечата един, а след това две, а след това три, всяка на отделни редове, защото отиваме чрез масив и ще се види, че на второ място, ФОРМАТ Изявление, аз резултати. Така че на първия кръг в нашия за линия, аз равна на нула, което означава, че сме получаване на стойност към резултата нула - които, ако се върнем към нашата схема, е един - и попълване - О, това казва в. Това трябва да е г%. Аз ще се определи, че след малко, когато I ръка, която към вас, момчета. Но ние представяне цяло число, така че трябва да бъде г% точно тук, а не в%. Какъв е% в продължение на? Студентът: Character. JASON Hirschhorn: Character, точно така. Каква е другата? Ако не искате да направите, г% за цяло число, какво друго можеш да направиш? Студентът: Аз. JASON Hirschhorn: I%, точно така. Така че всякакви въпроси за итерации чрез масив? И така, какво ще стане, ако направя това? Вместо това, че е по-малко от три, ние мога да е по-малко малка или равна на три. Какво се случва, когато ще свършим този код? Да, Ани? Студентът: Те ще разпечатате странни неща, на четвъртия ред. JASON Hirschhorn: Като казахте, че е ще отпечата странни неща на четвърта линия? Дали някой има отговор на въпроса си? Така че шансовете са, че когато стигнем до - така че на четвъртия кръг в нашия за линия, точно както си мислех, Ани, тя ще бъде десетки скоба три, които вече сме измислили не съществува, и ние ще се опитаме и достъп до този, да го отпечатате , тя използва някакъв начин. Така компютърът ще вероятно се сърди на нас. Ти си точно така. Може спиране на програмата като цяло. Може да разпечатате нещо наистина странно. Вие не може да каже със сигурност. Коефициенти това са най-вероятно ще се сърди ти и просто се откажат веднага. Но това е често срещана грешка, ще трябва от къде си точно по един в края, а това е грешка, която ще тормозят вас във кодиране. Един от начините обичам да правя е само на бяла дъска, проверете всяка итерация на цикъла на ръка, или на хартиен носител, за да видите какво се случва, а след това обикновено осъзнават, О, чакайте, че не трябва са отишли ​​в по-малка или равна на три. Трябваше да спра на две, което е какво се случва, ако състоянието ви се е по-малко от три. Всякакви въпроси досега? Sweet. Така че всички вие имате вашите компютри отворена. Ще ви дам 02:58 та да напише програма, която създава масив с числа едно през пет и след това отпечатва всяка число на нов ред. И ако имате някакви въпроси, вдигнете ръката си. Аз съм щастлив да дойда. Както казах, нека да вземем три минути, за да напиша това. Всички ли са наред, ако отида на нов прозорец и да затворите тази? Съжалявам, ако не сте имали шанс да завърши, но ние ще го направим заедно сега. Така на екрана, аз съм # включват cs50.h, # включват stdio.h. Може ли някой да ми каже какво тези две линии да направя? Майкъл? Студентът: Те включват библиотеки че CS50 направени и че Steve има запазена, за да използвате, за да ще направят живота ви по-лесно. JASON Hirschhorn: Значи ти каза, че те включват библиотеките, че един CS50 направени, cs50.h, и този, който е просто стандарт, идва с опаковката C, stdio.h. Какво искаш да кажеш включват библиотеките, че? Можеш ли да бъдеш малко по-конкретен? Студент: Това го прави така, че да можете да използвате някои кодови думи да има функционира стане без да се налага да отидете и да направи функция в себе си. JASON Hirschhorn: Можете да дайте ми един пример? Студентът: Like ФОРМАТ е един можете да използвате. JASON Hirschhorn: ФОРМАТ. Като казахте ФОРМАТ е една от тези, функции в което вместо да напиши ФОРМАТ по своему, ФОРМАТ е включени всъщност в stdio.h, така че може просто да я използват и да поемат че той ще работи. В stdio.h, ако отвори този файл, ще го включа как ФОРМАТ произведения, целият код за ФОРМАТ? Защо се разклаща главата си? Студентът: Тъй като заглавния файл просто включва функцията декларация. JASON Hirschhorn: Точно така. Ред, който включва само декларацията на функцията. Така че основно, когато съставянето на настоящия, удари смятайте, което ще направим в Второ, компилаторът знае, че ако използвате ФОРМАТ, ФОРМАТ съществува. Ще бъдат определени някъде. Това не е проблем за вас да го използвате. И след това по-късно, тя ще включва единици и нули, които всъщност съдържат ФОРМАТ на изпълнението и сливат ги с вашия код. Как да се уверете, че тя включва единици и нули, за, да речем, да низ? Студентът: Връща низовата е в cs50.h. JASON Hirschhorn: Точно така. Така че, който казва получите низ съществува, декларацията на функцията. Но тогава единици и нули, на двукомпонентни файл, който всъщност включва изпълнението на взимането? Как да се уверите, че отива с вашата програма? Студентът: Прекарайте линкер в аргументът командния ред. JASON Hirschhorn: Прекарайте линкер в аргумент на командния ред. Как се прави това? Студент: Това е най-л линия в звън JASON Hirschhorn: Точно така. Вие казвате-л CS50, нали? Това включва нули и единици. Студентът: Но Уверете прави това за вас, нали? JASON Hirschhorn: Точно така. Направи ли това за вас, но в крайна сметка, Вие няма да имате Направи, или ще трябва да се направи Направете на собствения си, така че е добре е да се запомни. Ако щяха да използвате една от тези други библиотеки, не само, че имате да напише # включват и След това библиотеката. Можете също така трябва да го свърже инча И тези две неща са различни. L-CS50 е различен от # включват cs50.h. Тогава ние имаме вътр основните невалидни фигурни скоби, и сега ние ще се код вътре главната. Първият ред имам тук е коментар който казва, да се създаде масив с цели числа от едно до пет. Какво е една добра дума да се опише това, което има в момента на екрана, просто коментари вътре в главната? Какво наричаме това? Студентът: Pseudocode. JASON Hirschhorn: Pseudocode. Благодаря ти, Джефри. Това е точно така. Pseudocode. Били ли сте виждали pseudocode преди? Вдигнете ръка, ако сте използвали pseudocode преди проблем зададете една. Около половината от вас. Бих силно препоръчваме да използвате pseudocode да се съборят проблеми в по-малки, по-лесно да отхапват парчета. Също така, ако правите pseudocode, можете коментарите си вече до голяма степен вградена, така че не е нужно да се се върна и да се опитвам да разбера това, което правиш. Така че някой може да ми даде тази първа линия да се създаде масив с целочислени един през пет? Вие? Студентът: Int и след това можете да се обадите каквото и номер, а след това площада скоба пет. JASON Hirschhorn: Така вътр номера, квадратна скоба пет. Студентът: равни, и тогава фигурни скоби. JASON Hirschhorn: равно, фигурни скоби. Студентът: Едно, две, три, четири. JASON Hirschhorn: Едно, две, три, четири, пет. Студентът: А после фигурни скоби и след точка и запетая. JASON Hirschhorn: И къдрава скоби и запетая. Excellent. Отпечатайте всяка Int на нов ред. Може ли някой друг да ми се, че кода, моля? [? Зрялост? ?] Давай напред. Студент: За ( JASON Hirschhorn: За ( Студентът: Int I = 0 JASON Hirschhorn: Int I = 0 Студентът: Точка и запетая и по-малко от пет. JASON Hirschhorn: Точка и запетая, и по-малко от 5. Студентът: Точка и запетая, аз + +. JASON Hirschhorn: Точка и запетая, аз + +. Студентът: Затворени скоби, след това отворете презрамки. JASON Hirschhorn: Затворени скоби и две скоби. Вътре в скоби? Студентът: А после ФОРМАТ "% г / N" JASON Hirschhorn: Съжаляваме, задръж. ФОРМАТ "% г / N, затворен цитат. Студентът: А после затворен цитат, запетая, брой, скоба аз. JASON Hirschhorn: Comma, брой, скоба аз. Студентът: Съжаляваме, номера и скоба. JASON Hirschhorn: Numbers, скоба аз. Студентът: Извинете. И след това се затваря скоби, точка и запетая. JASON Hirschhorn: Затворена скоби, запетая. Отивам да спаси. Отиваме, за да се брои. И как да го стартирам брой? Студентът: Обратно наклонена черта. Студентът: Dot наклонена черта - JASON Hirschhorn:. / Брои, точно така. Благодаря. . / Брои. Едно, две, три, четири, пет нови линии. Изглежда, че тя работи. Да, Ной? Студентът: Вие също може да направите по-малка или равен на четири, като I е по-малко от или равен на четири? Има ли някакво предимство за по-малко се от пет, или просто различен начин на да я пиша? JASON Hirschhorn: Така че въпросът ви е би могъл да направи, че е по-малко от или равен на четири, вместо I е по-малко от пет. Бихте, които са работили на едно и също? Студентът: Той трябва. JASON Hirschhorn: Да. Това напълно би работят по същия. Стилово, това е обикновено по-малко, и ще видите в секунда, когато ние струни, можете да използвате нещо нарича strlen, които сте виждали преди това, за да получите дължината на низа. И не можеш да направиш по-малко от или равна strlen. Може да се направи по-малка или равна strlen минус един. Така че това е просто хубаво да направи по-малко от strlen. Да? Студентът: А по отношение на реалното викторини, направете ние трябва да представи коментари относно нашата код, както и? JASON Hirschhorn: Въпросът е в викторини, нали трябва да предоставят коментари? Така че ние ще говорим повече за тестове, когато те идват, но като цяло, добра правило е, когато сте писане на код, да представят коментари. Ако получите код погрешно но коментира право, може да получите някои кредити, както от мен, ако бях класификация ви върху един проблем набор или на тест. Така че коментарите са винаги добре да се осигури. Sweet. Графе. Отлична работа. Нека да преминем. Strings. Strings. Виждали сме това и преди в лекция. Това ме зашемети, когато първо разбрахме за това. Това вероятно не взриви на никого против тук, но това е ОК. Strings са масиви от символи, и те завършват с, както каза по-рано, нулевата терминатор, който е това / 0 характер. Ако ще да тегли въжето на борда, ние ще го изготви тук. От колко време е този низ? Извинете. Колко е дълъг този низ? Студентът: [недоловим]. JASON Hirschhorn: Четири? Защо е четири? Студентът: Тъй като петата място е за нищожна характер. JASON Hirschhorn: Така петата място е за нищожна характер. Така че, ако аз трябваше да тичам strlen на това, че ще ми даде четири. Вярна. И на масива, все пак, ако трябва да инициализира този масив, колко пространства ще трябва да поискам? Студентът: Five. JASON Hirschhorn: Five. Аз ще трябва да поиска пет, но не мога само постави четири знака тук защото трябва да се сложи това нула терминатор в края. Така че отиваме да пиша в "Ohai" и постави нищожна терминатор в края. Ще кажа това е низ S се равнява това. Какво е и скоба нула? S скоба нула, Ани? Студентът: O. JASON Hirschhorn: О, точно така. S скоба един? S скоба пет? S скоба пет? Студентът: не съществува. JASON Hirschhorn: не съществува. Точно така. Cool. Всякакви въпроси за разбиране низове като масиви от символи? OK, а след това. Още една програма за вас, момчета. Напишете програма, която пита потребителя за низ принтира всеки символ на нов ред. Така че нека да се вземат три минути, за да напишете тази програма, и след това ще го кодира като група. Извинете. Смятате ли, трябва да се види това? Студентът: Не. JASON Hirschhorn: OK. Да вземем още една минута, за да кодира това, или поне да започнем с това. Така че може да продължи да работи, но ще до начало минава през нея. Така както преди, имам на екрана # Включват cs50.h, # включват stdio.h. INT главната невалидни. Inside фигурни скоби основните е, имам два коментара, pseudocode. Един от тях е да поиска низ от потребителя. Вторият се разпечатва всеки символ на нов ред. Така Anna, може да ви даде ме питат за низ от потребителя? Студентът: ФОРМАТ. JASON Hirschhorn: ФОРМАТ? Студентът: Да. ( JASON Hirschhorn: ( Студент: "дайте ми низ. JASON Hirschhorn: "даде ми ул. - Извинете - низ. Студентът: / п ") и запетая. JASON Hirschhorn: края на низа, затворени скоби, запетая. Студентът: Да. И тогава следващия ред, низ S = получите низ. JASON Hirschhorn: String S = получите низ. Студентът: Да. И тогава () JASON Hirschhorn: () Студентът: запетая. JASON Hirschhorn: запетая. Fantastic. Така че аз ще се низ и Отивам да се спести това в какво? Какво е променлива наречена , който сте създали? Студентът: String S. JASON Hirschhorn: Променливата се нарича S. Това е тип низ. Точно така. Следващото нещо, което искаме да се отпечата всеки знак за нов ред. Кой може да ми даде този код? [Недоловим]? Можеш ли да ми го дадеш? Студентът: Разбира се. JASON Hirschhorn: Да го направим. И съжалявам. Аз не обичам да повтарям това, което казваш защото си я направим, но аз трябва да го повтарям, така че когато те преписвам това, те могат да получат всички текста въз транскрипции. Така че можете просто да продължаваш да говориш. За съжаление, имам да го кажа на теб. Съжалявам, но - Студент: Това е добре. За Int I = 0 JASON Hirschhorn: За Int I = 0 Студентът: I-малко от - JASON Hirschhorn: запетая. Студентът: Преди това, може ли да сложите променлива, така че можете да получите Int наименование дължина? JASON Hirschhorn: О, не знаеш Искам да сложа точка и запетая? OK. И така, какво искате да направите, след като нула? Студентът: Аз искам да отида на низ дължината на S и зададете, че на променлива? JASON Hirschhorn: OK, И така, как да го направя? Студентът: Ти също Int дължина = JASON Hirschhorn: Int дължина = Студентът: S-T-R-L-E-N. JASON Hirschhorn: S-T-R-L-E-N - Студентът: Of ите. Скоби. JASON Hirschhorn: (а). Студентът: А след това мисля, че трябва да сложи точка и запетая между двете цели числа. JASON Hirschhorn: Точка и запетая след нула? Студентът: Да. След това слагам точка и запетая след това, и ви кажа, че по-малко от дължината. и по-малко от дължината, които е променлива. Студентът: А после и запетая. JASON Hirschhorn: запетая. Студентът: Аз + +. JASON Hirschhorn: Аз + +. Има ни за линия. OK, вътре в за линия. Студентът: А след това направете ФОРМАТ. JASON Hirschhorn: ФОРМАТ. Студентът: скоби. JASON Hirschhorn: скоби, кавички. Студентът: Скобите, цитати,% C / N. JASON Hirschhorn:% С, OK. Студентът: / п. JASON Hirschhorn: / п. Студентът: Затворени кавички. JASON Hirschhorn: Затворени кавички. Студентът: Comma. JASON Hirschhorn: Comma. Студентът: S. JASON Hirschhorn: S. Студентът: Bracket аз. JASON Hirschhorn: Bracket аз. Студентът: и след това затворени скоби. JASON Hirschhorn: Затворени скоби. Студентът: А после и запетая. JASON Hirschhorn: запетая. Fantastic. Така че нека да запишете това. Направи заклинание. О, момче. Имам няколко грешки. Първо грешка на ред 11, се казва: Очаква израз, и то дава ми грешка, че втората Int, там е грешката. Има някаква грешка около там. Някой знае ли какво грешка е това? Kurt? Студентът: Мисля, че това е трябвало да се поставя запетая, а не точка и запетая. JASON Hirschhorn: OK, запетая вместо точка и запетая. Така е, че всички ние трябва да се определи? Студентът: Не. JASON Hirschhorn: Какво друго имаме нужда да се определи? Студентът: Ние трябва да включват string.h. JASON Hirschhorn: Включи string.h. Когато е необходимо да включват това? Студентът: На същото място, което включително другите неща, нали след включват stdio.h. JASON Hirschhorn: Да видим дали това работи първо, защото като цяло, харесва ми да се определи едно нещо, а след това работи него, след което видите грешките, които получаваме. Така че отиваме да изчисти терминал с контрол н, нека да правят заклинание. Така че друга грешка на ред 11. Очаквано и запетая. И аз съм все още се грешки на тази линия. Така че това не ми е дал грешка го казвам да не разбира какво е strlen, но тя ми дава грешки при линия, така че какво друго не е наред? Марк? Marcus. Студентът: Трябва ли да се премахне втората Int декларация? JASON Hirschhorn: Отстранете втората вътр. Нека се опитаме това. Сега изчистване на терминала. Направи заклинание. Грешка. Мълчаливо обявяване библиотека функцията strlen. Така че сега виждаме, че грешка. Какво трябва да включва? Студентът: String.h. JASON Hirschhorn: Включи string.h, Ние ще направим # включват string.h на върха на екрана. Да спасим, да пише. Сега събирам. Така че, отново нещата, които е необходимо да се запомни линия 12 в за нашата верига, когато ние сме го настройвате, Int I = 0, дължина = strlen (а). Това е фантастична стратегия. Стилът на това е страхотно, на Дизайнът на този е страхотно. Можем да отидем в тези причини по-късно, но по този начин само трябва да се обадя strlen веднъж вместо всеки един път, когато стартирате през примката. Въпреки това, трябва да се използва запетая там и не е нужно Int отново. Ако се обявяват степента на тези променливи заедно, не се нуждаят средно отново. И след това, ако ти започваш да се използват strlen, което е друга библиотека функция не са включени в stdio.h или cs50.h, да че сте включили string.h. Kurt? УЧЕНИК: Значи, ако не трябва да каже какъв тип е с дължина, прави това означава, че тя трябва да бъде едно цяло число? Вие не може да има две различни видове там? JASON Hirschhorn: за да можете да има два различни вида. Дължина е Int тук, все пак. Дължина е едно цяло число, защото това е запетая и след това едно и също нещо. Студентът: Така че това предполага, че това ще да бъде същата като първата? JASON Hirschhorn: Точно така. Ние няма да направим това сега, но може да включва двете променливи, свързани една и съща линия с помощта на един тип данни. Така вътр X, Y би създало две променливи. Така Int X, Y, ако направим това, тя дава ми неизползван променлива х и у, защото ние не ги използваме. Така пускането невалидни преди е просто фантазия трик, ако не използвате нещо, за да го използвате. Но както виждате, създавам х и у на една линия със запетая. Те създават две цели числа точно там. Така че, да, напълно възможно да се създаде две неща на една и съща линия разделени със запетая. Да се ​​отървем от тези, все пак. Така че има магия. Благодаря ви момчета за това кодиране за нас. Да го направи още един път, да го стартирате. Дай ми една струна. [Недоловим], нали голямата част от него. Каква е низ? Студентът: Hello. JASON Hirschhorn: Здравейте. Н-Е-Л-Л-О, всеки един от героите на една линия. Изглежда страхотно. Нека да го стартирате отново. Винаги ще пасува за ъглови случаи. Какво е добро дело ъгъла, за да проверите? Студентът: А броят? JASON Hirschhorn: A номер. Така че аз ще кажа едно, и го отпечатва 1. Той не пита за писма, така че тя изглежда като номера работа. Добър случай ъгъл, за да проверите. Какво е друг добър ъгъл случай да се провери? Студентът: A празен низ. JASON Hirschhorn: Hm? Студентът: Like празен низ. JASON Hirschhorn: празен низ. Така че нека да не се поставя в нищо. И това, което се отпечатва? Студентът: Нищо. JASON Hirschhorn: Нищо. Изглежда, че тя работи. Може да опитате повече случаи от корнер, но общо номера, различен данни страхотно да се опита, както и не е нищо. Нищо, нула, негативите са винаги велики неща за да се опита и неща, които следва тест, нещата със сигурност ще тестваме Проверете и за 50 ще тества за. Всякакви въпроси за spell.c? Добре, да се връщаме. Имам още една програма за вас, момчета да пиша. Тя се нарича students.c. Това е програма, която пита потребителя за пет имена, а след това произволно избира и отпечатва едно от имената. Тази програма е малко по- състоеше от последните две писахме, така че защо да не отнеме пет минути, за да Кодекса има индивидуално, и след това ще кодира го като група. Тази програма включва също някои неща може да не сте виждали преди, така че ако имате въпрос за, как Да направя това, вдигнете ръката си. Ще дойда и да ви насочи в правилната посока. Но ние също го правят, защото това ще бъде един добър начин да се въведат някои теми, които са трудни. Така че тя работи, нали? Студентът: Да. JASON Hirschhorn: Всеки път, когато се превърне в Проблемът комплект, има много начини да го , но някои са по- елегантен, отколкото други. Нека да се потопите инча # Включват cs50.h. # Включват stdio.h. Int основната невалидни, фигурни скоби. Вътре в фигурни скоби, Имам два коментара. Първият от тях е, да поиска от ръководство за пет имена. Втората е, случайно избират и разпечатате едно от имената. Така че нека да направим първата, попитайте ръководство за пет имена. Кой е поискал от потребителя за срок от пет имена и може да ми каже как да го направя? Само двама души направил първата част. Трима души направил първата част. Четири, пет. Том, как да го направя? Студентът: Вие ще декларират низ и след това име, скоба пет. JASON Hirschhorn: String назовем скоба пет. Така че каква е тази линия прави, скоба низ име пет? Студентът: Вие ще декларират масив от низове. JASON Hirschhorn: Това е масив от низове. Колко струни ще да се поберат тук? Студентът: Five. JASON Hirschhorn: Five. Excellent. Ще го наречем Имена защото ние ще получим множество такива. OK, след това? Студентът: А след това имат за линия - JASON Hirschhorn: За цикъла. Студентът: - за I = 0. JASON Hirschhorn: За (Int I = 0. Студентът: запетая. JASON Hirschhorn: запетая. Студентът: I-малко от пет. JASON Hirschhorn: Аз по-малко от пет. Студентът: запетая. JASON Hirschhorn: запетая. Студентът: Аз + +. JASON Hirschhorn: Аз + +. Студентът: и след това затворени скоби. JASON Hirschhorn: Затворени скоби, и след това някои фигурни скоби. Вътре в фигурни скоби? Студентът: А после ФОРМАТ. JASON Hirschhorn: ФОРМАТ. Студентът: Отворени скоби, името% г. JASON Hirschhorn: Моля? Студентът: Name. JASON Hirschhorn: Name. Студентът: А след това пространство, а след това г%. JASON Hirschhorn: Име, пространство,% г. Студентът: А след това / N, и след това се затваря. JASON Hirschhorn: Така името, пространство, % D / N, затворени скоби. Студентът: Comma, аз + 1. Съжалявам. Затворен цитат, а след това запетая, аз един. JASON Hirschhorn: Затворена цитат, запетая, аз 1. Студентът: Да. И след това на следващия ред - JASON Hirschhorn: Аз + 1. Студентът: Да. И след това на следващия слайд е имената скоба аз. JASON Hirschhorn: Следващия ред е имената скоба аз. Студентът: = получите низ. JASON Hirschhorn: Вземи = - капитал G-E-T - низ. Опа, съжалявам. Студентът: Отворени, затворени скоби и след това - JASON Hirschhorn: Open, затворена скоба. Студентът: запетая. JASON Hirschhorn: запетая. ОК, така че се инициализира масив от низове, имена, а след това да премине през за линия, и пет пъти разпечатате някои подкани за потребителя и след това се съхранява пет струни. Дали някой има някаква корекции на това? Том, мисля, че всички съгласен с теб. Изглежда доста добре. OK. Защо аз правя едно, все пак? Студентът: Искам да кажа, не трябва да, но аз един, така че това е име едно да назове пет. В противен случай това би било име нула да назовем четири. JASON Hirschhorn: Така че аз направих една защото в противен случай ще трябва отпечатани нула през четири, защото това е начина, компютри мисля, но хората наистина не се чете така. Това е друго нещо, ще се сблъска. Понякога, когато се отпечата нещо на потребителя, вие ще искате да го правят малко по-хубава, и прави Аз едно в този случай е начин да се направи по-красива. Виждам също, пет два пъти, името низ е пет, и е по-малко от пет. Знам, че когато имаш пет. Имаш я от мен казвам ви пет имена. Но ако искаме да направят кода по малко по-силен, едно нещо, което може да е тук, извън Int, бихме могли да направим нещо подобно, # Определят, и бихме могли да направим ИМЕНА 5. Така че основно, когато пиша капитал N, столицата A, M капитал, капитал E, капитал S, че низ, той ще замени че с 5 в кода. Или нека просто го наречем - ние ще просто го наричат ​​номер. Така че аз съм дефиниране на всички капачки Номерът да бъде 5. Така че сега, когато имам номер 5, I може да го замени с всички НОМЕР капачки. И сега, ако искам да променя броя на имената, всичко, което трябва да направите е този ред, четвърти ред, където имам # Определят номер 5, промените, които до 10, или промените, които до 4. Когато вашият код получава по-дълго, не си Ще помня всички места, сложи колко имена искаш, и по- за да можете да не пропуснете един, това е добър начин да го направя, за да се намери нещо до върха и след това просто да използвате тази фраза навсякъде през целия си код. Marcus? Студент: Това ли е стилистично предпочитан от световен мащаб определяща постоянни п? JASON Hirschhorn: Така е, че стилистично удобно, отколкото в световен мащаб определяне на постоянна п? Значи казвате, че бихте могли да направя, вътр брой = 5? Студентът: Имат ли съгласни в C или не? JASON Hirschhorn: Or Конст - в равни. Значи казваш, че само глобална променлива? Студентът: Да. JASON Hirschhorn: Така стилистично, че няма непременно едно право отговори, но и двете тези са по-добри от просто хвърлят тези случайни номера през вашия код. Ние ги наричаме магически числа. Когато погледна в кода си или когато някой чете през него, те не искам само тези случайни числа че няма смисъл. Дори броят 26, което по принцип е броя на буквите в азбуката, е по-добре да се определят ПИСМЕНОСТ отгоре и запишете номера 26 в тази поредица, ако това има смисъл. Или проблемът зададете една, а не - отново, ние не говорим за това в време, но вместо просто хвърляне в 25 навсякъде или на 10, можете да запишете номера 25, както тримесечие или 10, както Стотинка, а това го прави по-лесно за всеки, който чете през вашия код за разбирам защо сте избрали този номер. А също и за вас, ако някога искате да актуализирате кода си, той го прави малко по-стабилна. Да? STUDENT: До този код също ще да бъде на разположение за нас след това? JASON Hirschhorn: Всички тези кодове че сме написали заедно са ще бъде изпращана към вас момчета и достъпна информация. Да. Така че, да поиска ползвателят на пет имена. Произволно изберете и принтиране един от имена. Кой направи тази линия? Това е най-трудната линия. Съжалявам, Том. Ти свърши наистина добра работа, но това е малко по-сложни. Marcus, давай. Студентът: Ами първо, ти започваш да се трябва да включват stdlib.h и time.h. JASON Hirschhorn: Значи казваш, че най- на върха, включват още две библиотеки. Искаш ли да се включи S-T-D-L-I-B точка H, Standard Library, и това, което е другият? Студентът: Time.h. JASON Hirschhorn: # включват time.h. Така че това са още две библиотеки. Предполагам, че сега ще трябва да се използва функции, които се съдържат в тях две, поради което е необходимо да бъдат включени? УЧЕНИК: Значи, първо, че си ще искам да пиша srand. JASON Hirschhorn: Srand. Студентът: (време (0) JASON Hirschhorn: Извинете. Srand (време ( Студентът: 0. JASON Hirschhorn: 0. Студентът:)), точка и запетая. JASON Hirschhorn: Друга затворена скоба? Точка и запетая. Аз съм просто ще замени си с нула NULL. Ще направя същото нещо, но като цяло, ще видите, NULL, които ние ще говорим за това линия в секунда. Студентът: Стилистично по-добре? JASON Hirschhorn: Като цяло, хората за нищожна, но едно и също нещо. Студентът: А после Int име. JASON Hirschhorn: Int име. Студентът: = JASON Hirschhorn: = Студентът: Rand. JASON Hirschhorn: Rand. Студентът: () JASON Hirschhorn: () Студентът: Modulo номер. JASON Hirschhorn: Какво е модул? Характерът? Процентът характер? Студентът: Процент характер. Modulo номер, който определя до върха. JASON Hirschhorn: Modulo номер. Студентът: А после и запетая. JASON Hirschhorn: запетая. Студентът: А после нова линия, ФОРМАТ. JASON Hirschhorn: ФОРМАТ. Студентът: ( JASON Hirschhorn: ( Студент: " JASON Hirschhorn: " Студентът:% S / N JASON Hirschhorn:% S / N Студент: " JASON Hirschhorn:% S / N " Студентът: Comma, космически имена. JASON Hirschhorn: Space - Студентът: О, предполагам, това, което е ние го наричаме тук? JASON Hirschhorn: Ние го наричат ​​имена. STUDENT: Open скоба, име. JASON Hirschhorn: Open скоба, име. Студентът: Затворена скоба. JASON Hirschhorn: Затворена скоба. Студентът:) JASON Hirschhorn:) Студентът: запетая. JASON Hirschhorn: запетая. OK, нека спаси. Да направим този код. Ученици. Нека да тече този код. Ученици. Не. / Ученик. . / Студенти. Името на един. Ще кажа, Дейвид. Име две, RJ. Име три, Роб. Име четири, Lucas. Име пет, Джоузеф. И тогава се отпечатва Joseph отново. Така че нека да тече отново. Позволете ми да направя същите имена. David, RJ, Rob, Lucas, Джоузеф. И тя ми даде David това време. Така и направих едно и също нещо, но го даде ми различно нещо, и това е защото, разбира се, ние искаме за произволно име. Така че аз мисля, на базата на разстояние от мен скитащи из стаята, че повечето хора вероятно има първата дясна част, създаване на този масив и след това да всички имена. Говоря за линии 10 до 16. Но линии 18 и 21 са вероятно някои неща, които не сте виждали преди, така че нека да мине през тях. Тази линия, srand време NULL е по същество - Съжалявам, да прескочите линия, ранд (). Това дава случайно число, случайно число. И ако ви удари човек Ранд, които много от Вас - М-А-М пространство R-A-N-D - в терминала, подобен на този, М-А-М пространство R-A-N-D, натиснете Enter. Вие ще излезе на потребителя и ще може да прочетете, че ранд командни изходи бр псевдо случайни байта след засяване на случайни числа Генератор веднъж. Така че това описание. Това е, което Ранд прави, дава ти случайно число, когато ти се обадя тази функция. За съжаление, това не е наистина случаен защото, ако просто се обадете случаен без да го някои семена, някои отправна точка, тя винаги ще избере същото, и да го използва формула за определяне на следващия. Така че, ако ти се обадя Ранд, той просто ще ще ви даде едно и също нещо. Ще бъде много предвидими. То всъщност няма да е случаен. И така, какво трябва да направим, за Марк инструкции за мен, бяха семена ранд с нещо друго, което е това, функцията srand прави. Той семена ранд с нещо малко по- Случаен от едно и също нещо, и той го засяване с времето NULL, които е, само по силата на споразумение, сегашната времето в секунди. Значи ако приемем, че всички, не е ще стартирате код в точния същата секунда, така че това е безопасно залог, че време NULL ще бъде различен всеки път, този код се изпълнява. Безопасно залог, че по този начин, srand воля семена ранд с нещо различно всеки еднократно. Така по силата на споразумение, когато искам случайно число, пишем тази линия, srand време NULL, за да ни даде много по- повече случайни семена, а след това ще свършим Ранд, което ни дава случайно число. Да? Студентът: Можете ли да кажете какво искаш да кажеш чрез семена? JASON Hirschhorn: Seed като в - така че Ранд ще вземете някои номер и то се случва да използвате някои формула, за да стигнем до там. Така че ще започнем с нещо и след това да го превърне в нещо, което според на разстояние от тази формула. Ако винаги го даде едно и също нещо, тя винаги ще го превърне в едно и също нещо. Така че първото нещо, което да го е семето. Значи вие искате да му се даде нещо различно да се започне с, и така ще го превърне в нещо по-различно. И накрая, ред 20, този% се нарича модул, както и че е объркващо. Това е нещо, което е малко по- различно тук, че наистина не има в реалния живот математика. Но по същество, когато правите гигант номер и разделите в C, което се случва в останалата? Студентът: Той получава пресечен. JASON Hirschhorn: Той получава пресечен. Така 20, разделена на три е какво? Какво значи това се върнете към ти, 20, разделена на три. Съжаляваме, 10, разделена на три. Какво означава, че се върна при теб? Студентът: [недоловим]. JASON Hirschhorn: 10, разделена на три просто връща 3, не три останалата 1. И така, какво по модул 10 3 декларации е само на остатъка 1. Така че, ако искате да знаете какво 10 разделя от 3 всъщност е, нали направи 10, разделена на три, ще получите 3, и след това, че ще направиш 10 по модул 3, и ще получи един. Така щеше да осъзнаеш, че 10 разделени от 3 е 3, останалата 1. И в този ред, Ранд може да бъде е цяло число, по същество. Така че по модул се казва, го разделете на номер, който в този случай е 5. И ако някога се разделят с един номер, цяло число, винаги трябва да бъде по-малко от този номер. Така че, ако се раздели с номер 5, останалата част е винаги ще бъде нула през четири. Това е просто начина, по математика наред. Така че голям брой moduloed с по-малък номер винаги ще се връща остатъците и винаги ще се връща някои число, което е по-малко от вас номер разделен. Дали някой има някакви въпроси относно модул, защото това ще дойде в много, много удобен, така че искам да се уверите, Всички го разбират? Cool. И видяхме, че тази програма работи. OK, да преминат. Така че следващия, ние ще отидем в функции, и ние ще тръгнем през останалата част от тези неща доста бързо, защото искам да стигна до аргументите на командния ред. Така функции са по същество, Както виждате, черни кутии. Те вземат нещата в наречени параметри, те направи нещо за тях, или ги промените или да създадете някои странични ефекти, и накрая, те плюят нещо, което е върнатата стойност. Някой може ли да ми даде една причина Затова ще използваме функции? Има ли някой? Една от причините, че ще използвате функции? Някой? Видях две ръце. Какво е една добра причина? Marcus? Студентът: Ако трябва да се обадите на същия парче код няколко пъти. JASON Hirschhorn: OK, ако имате нужда да се обадя на същия парче код няколко пъти. Джеф, нали имат различна причина? Студентът: Просто така, че Можете да пишете по-малко. JASON Hirschhorn: Можете да пишете по-малко. Точно така. Ако искате да направите нещо много - в предишния код, мога да имам писмено взимането пет пъти, но за линия прави да изглежда по-хубав и Вие трябва да напишете по-малко код. Функциите са подобна идея. Ако искам да направя същото нещо много, го преместете към функция и се обадете, че функционира всеки път. Това ще направя нещо за вас. Това е чудесна причина за използване функции. Така че анатомията на функция. A функция обикновено изглежда така. Тя ще започне с връщането тип, След това ще получите име. Ще отнеме аргументите, в противен случай известни като параметри, и вътре тези фигурни скоби, ще напишете кода. Видяхме една функция много. Това е основното. Тук е основната наслагва че анатомията имах по-рано. Какво означава Int тук означава? Какво означава Int предвид? Когато пиша Int основни (свободна). Студентът: Върни тип? JASON Hirschhorn: Моля? Студентът: типът на връщане. JASON Hirschhorn: Int е върнете тип, точно така. Main връща Int. Какво е основното? Студентът: Function име. JASON Hirschhorn: Main е името на функцията. Точно така. И невалидни? Какво е невалидна в скобите? Студентът: Тя не взема всяка външна стойност. JASON Hirschhorn: Така нищожен - Добре. В скобите, ще се постави на параметри или доводи функция може да отнеме, какво се случва вътре в черната кутия. Когато пишете невалидни, казваш това отнема нищо инча Така Int основната невалидни означава основната си не приемате нищо инча Вътре в фигурни скоби, ние имаме някои кода, след което ние виждаме в края върнете нула. Какво означава връщане нула означава това? Е, ние говорихме за връщане тип. Main трябва да се върне на вътр. Това е, което прави тази линия. Тя връща Int, нула. Разбира се, не сме видели, че много защото в програмирането правим с машините, които правим и съставителите ние използваме днес, вие не се нуждаят от тази линия. Main е специален достатъчно, че тя знае когато стигнете до края на главната, само върнете нула, ако всичко мина добре. В действителност, ако нещо не върви добре, Основната често ще върне различен брой показваше, че нещо се обърка с вашата програма. Така че, като цяло, когато видите код, не пишете връщане нула, но е добре да знаят, че това се случва зад сцени, защото всеки път, когато ви пиша друг тип функция, вие ще трябва да включват възвращаемост. Ако казваш, че ще връща Int, трябва да се Свържи се върне нещо. Ако кажеш невалидни тук в началото, невалидни основни невалидни, за Например, тя не е и връщане нищо - празнота не означава нищо - така че не е нужно тази линия замяна. Но сте някога напиша нещо, че не е анулира за връщането тип, трябва линия, която казва, завръщането и трябва да се сложи нещо там , който съответства на вида. Всякакви въпроси за това? Sweet. Обхват. Това е нещо, което съм засегна, както добре. Всяка променлива, както знаем, има определен обхват, и това е основно говориш, когато променливата могат или не могат да бъдат споменавани. И аз искам да кажа това, което се случва във фигурни скоби, остава във вътрешността на фигурни скоби. Така например, ако се вгледаме в този кодекс, ние дефинира глобалната променлива извън основната, вътр а, тук горе на върха. Ние се обаждате друг INT вътре главната. Ние имаме някои по-големи скоби, и ние се обаждате друг Int а. В момента има три са в кода. Това не са едно и също нещо. Съм създал три различни променливи. След това вътре в тези вътрешни къдрава скоби, казвам а = 4. Което е, че говорим за това Първият, вторият, или третият? Студентът: третия. JASON Hirschhorn: Той говори за третата. Всички тези, а всъщност може да бъде говори в този конкретен например защото техният обхват всичко върви в тези най-съкровените фигурни скоби. Въпреки това, когато се обадите на нещата по същия име, има нещо, наречено крие. Така че се занимават само с, или да определи или да използвате Последната променлива, или една най-близо до вас. Така че тук вътре, това е най-близо една трета на тази линия, а = 4, така че засяга една трета. И на последния ред, а = 2, което е че говорим за, първо, второ, или трети на? Студентът: Втори. JASON Hirschhorn: Той говори за втората а. Разбира се, третият е най-близо до то в кода, но третият не съществува извън тези фигурни скоби. След като стигнете до тази затворена къдрава презрамки, това е като го няма, същество. Така че само две са ти останали, са тези, първите две, и разбира се, сега това е най-близо до втория. Така че това е нещо добро да не забравяйте за обхвата. Например, аз съм сигурен, че сте срещани това по правите, докато линия. Ако се инициализира променлива вътре на линия, докато се и след това се опитате да достъп до него отвън, най-вероятно имам някои предупреждение като това променлива не съществува. Това е, защото на обхвата идея, че нещата съществуват само в тези фигурни скоби. Фигурни скоби са като гигантски прегръдка, че , което дава на своя код, е друг начин да се мисли за това. Така че това е още една функция, нещо за вас, момчета до код, hellofunction.c. Отиваме, за да пропуснете, че за сега, но това е нещо, което аз ви насърчавам да практикуват по своему. Напишете програма, в която основните повиквания друга функция, която отпечатва поздрав за потребителя. Това е по същество като здравей свят и абстрахиране, че ФОРМАТ в друга функция. Но ние няма да го направя точно сега защото ние нямаме толкова време остави като ми се искаше. Така че декларацията на функцията. Виждали сме това и преди, както добре. Ако искате да напишете друга функция, , което трябва да оставите компютъра знаят и Основната знам, че той съществува. Така че това, което правим е над основната, пишем типът на връщане, името и параметри, а след това по-долу основна, тук, ние всъщност копирате този ред и след това да напишете действителният код. Така че по този начин, ако се обадите на функцията в основния отгоре, основната знае, че Здравейте съществува, например, ако бях да се обадя здравей, а след това тя изглежда да изпълнението по-долу. Какво ще стане, ако не включват тази линия до върха, анулира Здравейте (свободен)? Ако не включват тази линия и основни повиквания Здравейте, аз съм Ще получите съобщение за грешка. Ще получите съобщение за грешка, защото компилаторът не знае че това нещо съществува. Това е подобно на защо ние се # включват cs50.h. Какво по същество cs50.h прави поставя се низ там. Тя слага получите INT там. Тя се съберем всички тези функции прототипи, преди основното, така че когато и да ги наричате в главната, основната знае че тези неща съществуват. Това е, което тези файлове. Ч направя. И така, ако вие ще направите своя собствена функция, трябва да се уверите, се сложи този прототип там. Всякакви въпроси за това досега? Аргументите на командния ред. Това е, което ние ще завърши на, и след това се надяваме, ние ще прокара в някои PSET. Аз не знам дали ще можем да прокара че поради времето, но с вас, момчета, които са тук, и ако момчета искам да кажа, след като за малко, ние може да отиде над него отвън. Но ние ще завърши с аргументите на командния ред за последните 15 минути. Ние буден, Майкъл? Ти си буден? Добре. Не знам ако спите със затворени очи. Би било трудно. Аргументите на командния ред. Тези, които са един от начините за предаване на информация в програмата. В крайна сметка, ние ще срещнете други. Но по същество, ние ще спрем написването Int основни (свободна), ако искаме да вземат някои аргументи на командния ред. Ще напиша това нещо нарича Int основни (Int argc, низ ARGV, скоби. Това е объркващо. Това е много писма, които не са в човешкото английски, така че ние ще разопаковам тях точно сега. Argc означава аргумент брой - и отново, всички от тях ще бъдат достъпни онлайн - и това е броят на аргументите. ARGV означава аргумент вектор и тези, които са самите аргументи. Това е масив от низове. Ние сме виждали масив на струните преди днес. Ние създадохме един в последната програмата, която кодира. Така че ето един пример. Аз пиша. / Ohai CS50 раздел на моя командния ред. Argc в този случай се равнява 3. ARGV скоба 0 е Ohai, ARGV скоба 1 е CS50, ARGV скоба 2 е точка. Отново argc е броят на аргументите, и да ви пътуване до малко малко, ние винаги се разчита на името на функция като първи аргумент. Така че в този случай, има три аргументи, името на функцията и след тези две, които аз напечатани инча След това ние ще спести тези аргументите си в ARGV. И отново, както видяхме преди, направихме това в последния програмата, която кодира. Можете да се движите през масива на ARGV и да получите тези струни. Това е по същество това, което направихме в В края на миналата нашата програма. Избрахме произволно име и след това заминава за имена скоба каквото и печатни от низа намира там. На върха на само един масив, защото струни самите са масиви, като говори, че може да има масиви на масиви, което е по същество това, което е ARGV. Един начин да мислите за това е редове и колони. I може да се направи, че точно сега. Така ARGV - това не е изтриване. Да се ​​изготвят под Ohai. Така че, ако съм написал в, Ohai раздел CS50, Отивам да се съкрати секция за този пример. Но по същество, си многоизмерен масив, Ohai CS50, ние ще направим секта. Така че тук, мога да получите достъп - ако просто даде ARGV един номер - това е погрешно. Какво не е наред в тази схема? Студентът: Старт на нула. JASON Hirschhorn: тя трябва да започнем с нула. Може би трябва да го върти, но тъй като аз вече го прави на, аз съм Ще го оставя там за сега. Но тя започва от нула. Точно така. Съжалявам, ако това е малък. Можете ли да видите нещо? Така че, ако го направя ARGV 0, аз ще получите всички Ohai. Ако го направя ARGV 1, ще получите всички CS50. Ако го направя ARGV 2, ще получите всички от сектата. Но сега, както казахме, конци са масиви самите. Така че, това, което мога да направя е, че може да лекува тази като многомерен масив, и аз може да направи нещо по подобие на ARGV 0, 0, което ми дава само характер 0. ARGV 0, 1, който ми дава само з. ARGV 1, 3, което ми дава само този 0 тук в CS50. Така че, тъй като самите струни са масиви, ние сме пускането че в друг масив. Сега имаме масив от масиви, и ние може да индексира в първата ни масив и след това индекс в нашия втори масив. И както може да се очаква, ще го направим като просто поставя тези две - правим квадратните скоби просто в непосредствена близост един до друг. Така че в този пример, ARGV 1 е CS50 и ARGV 1, 2, както казахме, е само 5. Дали някой има някакви въпроси относно многомерни масиви? Вие, момчета, правят страхотно. Sweet. Така че ние имаме друга програма точно тук, и това е последно нещо сме ще направя точно сега. Така че аз искам да се напише програма, която отнема пълното име на потребителя, две и само две командни аргументи, и най-накрая, разпечатате поздрав към ръководство, което включва тяхното име. Така че, защо не си вземеш три или четири минути, за да направи това, а след това ще отидем над него като група, и после ще приключи? И отново, тук, когато казваме вземе пълно ръководство за името на описанието на този проблем, той трябва да бъде команда аргументи, които не използват получите низ. Да, Маркъс? Студентът: Като казвате, две команда аргументи, е, че в допълнение към . на / тичам, или - JASON Hirschhorn: Добър въпрос. Да, включително. / План, три аргументите на командния ред. Или включително. / Индивидуално, в този случай, защото това е Името на този файл. Така argc ще бъде три. Но аз искам само два аргумента даден на програмата. I следва да уточни, че. Ще направя тази промяна, преди да публикувате тях и ги изпраща до вас. Студентът: Какво става, ако имат бащиното име? JASON Hirschhorn: Ако имате средата име, вие сте изложени на късмет. Съжалявам. Или, ако имате само минават Shakira, ти си също късмет. Да? Студентът: Така че, когато хората нямат cs50.h, те определят ARGV като знак звезда ARGV? Или е все още нарича низ ARGV? JASON Hirschhorn: Да. Така низ, отново, ние маскира над това, което точно се случва там. Това ще бъде разопакован може би в сряда, но скоро. Това е като помощни колела. Защото по същество, това е едно и също нещо. Така че нека да вземе още една минута за програмата това, а след това ние ще отидем че като група, и след това както казах, приключи. И аз мисля, че все още са допълнително бонбони, така че вие ​​трябва да се надяваме това, или да взема това. За съжаление, ако сте все още писане, но аз искам да се потопите в и ние може да го завършим заедно. Така че съм написал в, # включват cs50.h, # включват stdio.h. Int основни (свободна), фигурна скоба, къдрава презрамки, вътре в три реда на pseudocode, се пълното име на потребителя, две и само две команди аргументи, отпечатайте поздрав към ръководство, което включва тяхното име. Така че първото, се пълно име на потребителя. Кой може да ми помогне да взема пълно име на потребителя? Как да го направя тази част? Смятате ли, момчета направя първата част? Вземете пълното име на потребителя. Е, за това един команден ред аргумент, какво трябва да пиша? Какво трябва да се промени за ми декларацията на функцията? Студентът: Вие не искате да са невалидни вече. JASON Hirschhorn: Точно така. Аз не искам това да се анулират. Какво ми го искат да бъдат? Студентът: Int argc. JASON Hirschhorn: Int argc. Студентът: String ARGV. JASON Hirschhorn: String ARGV. Студентът: Bracket, скоба. JASON Hirschhorn: Bracket, скоба. Точно така, и това е всъщност как ще да се пълно име на потребителя. Те ще го сложи там. Така че едно е направено. Така че сега искам две и само две аргументите на командния ред. Така Ной, това, което е един от начините мога проверите броя на командата аргументи имам? Студентът: Можете да направите един, ако изявление. JASON Hirschhorn: Ако изявление, точно така. Какво искам като условие? Студентът: Ако argc-голямо от 3. JASON Hirschhorn: Ако argc е по-голямо от 3. Ако argc по-голяма от 3, какво да правя? Студентът: Върни 1. JASON Hirschhorn: връщане 1. Това ще гарантира, имам две и само две? Студентът: Не. Ако argc е по-голяма от 3 и по-малко от 2. JASON Hirschhorn: Ако argc е по-голяма от 3 и argc е по-малко от 2. Какво е един начин мога да напиша това в току-що един ред, или без да се използват, че и Булев оператор? Студент: Това не е равно на две. JASON Hirschhorn: Ако argc не е равно на 2. Точно така. Така че, ако argc не е равно на 2, че ще ми даде тази програма, персонализирано, когато го стартирате, и че ще ми даде колко аргументи на командния ред? Колко ще проверя за? Извинете. Позволете ми да преформулира това. Ако argc = 2, за колко неща направи ръководство пиша в ред? Студентът: One. JASON Hirschhorn: Само един. Така че, преди, ти беше прав, Ноа. Какво всъщност трябва да се сложи там? Студентът: това се равнява на три. JASON Hirschhorn: Argc не е равно на 3. Искам да се изравни три, защото искам персонализирано плюс другите две. Така че, ако argc не е равно на 3, се върнете 1. Защо каза върне един? Студентът: Защото това означава, че е грешно. JASON Hirschhorn: Това означава, че не е наред, И какво е то ще правиш? Студентът: Re-напомни на потребителя. JASON Hirschhorn: Всичко ще се откажат на програмата, така че ще трябва да тичам отново, но ние нямаме нищо тук да питам за тях отново. Не съм питал за това. Така че това е точно така. Върни едно просто затваря програмата. Great. И разпечатате поздрав на потребителя което включва тяхното име. Как мога да направя това? Anna? Студентът: ФОРМАТ. JASON Hirschhorn: ФОРМАТ. Студентът: (" JASON Hirschhorn: ( Студент: "здравей JASON Hirschhorn: "здравей Студентът:% S JASON Hirschhorn:% S Студентът: / п JASON Hirschhorn: / п Студент: ", JASON Hirschhorn: ", Студентът: ARGV JASON Hirschhorn: Моля? Студентът: ARGV JASON Hirschhorn: ARGV Студентът: Квадратни скоби 1. JASON Hirschhorn: Квадратни скоби? Студентът: 1. JASON Hirschhorn: 1. Студентът: А) и запетая. JASON Hirschhorn:) и запетая. Нека да стартирате тази. Направете персонализирана. . / Персонализирана. Тя просто се откажат. Защо го напусна? Студентът: Не сте поставили никакви аргументи. JASON Hirschhorn: Не съм постави никакви аргументи инча Изглежда страхотно. Вие го прикован. Така че отново, отиде в ARGV и проверява в началото argc. Това са две важни Какво трябва да запомните. Така че в последните ни две минути преди ние напусне, ние няма да стигнем до PSET два, но както казах, ако искате да останете след в продължение на 10 минути, че ще го направи щастлив да отида повече с вас, момчета на логически за тези проблемни групи. Имахме много за покриване днес така че аз не се получи с тях. Като цяло, аз обичам да включват че в края. Така че, ако искате да си наоколо, останете в продължение на 10 минути. Ще го направя. След това, както споменах в началото, PSET нула и единица, ще се получи, че обратна връзка с вас като възможно най-скоро. Целта е да се получи един PSET обратна връзка, на коментари страна, преди PSET две се дължи. Така че, ако сте направили някои грешки или стилистично, нещата могат да бъдат по-добре, ще имате тази информация, така че няма да правя същите неща в PSET две. И тогава в бъдеще, вие ще получите всичко на вашия PSET обратна връзка и коментари обратно, преди следващата се дължи. И накрая, ако би могло да постави в друга съединители за обратна връзка. Това е първата част. Това беше първият ми точка преподава тази година. Отиди там. Напиши неща, добри и лоши, и аз ще го използвате, за да точка по-добре следващия път. И на последно място, отново, ако имате нужда нищо, нека да знаят. Аз съм повече от щастлив да ви помогна. Ако просто искате бонбони, I ще има допълнително бонбони. Щастлив съм да ви я предоставим. Това ще бъде невероятно, разбира се. Това е един от, ако не и любимото ми Разбира се, съм направил през целия си живот, и аз се надявам, че ще бъде, че чудесно за вас. Така че аз искам да направя всичко по силите ми да направи това страхотно за вас. Отивам да изпрати имейл, ако сте в моята секция или Ной, и Ще се опитам и график с всяка от вие на време за проверка в продължение на следващите няколко седмици, така че може да се получи смисъл на това, което си CS фон е, и това също ще ми помогне шивач тези секции за по-добро според вашите нужди. Така че това е, което аз имам наредени. Отново ще се видим извън ако искате да бъде там. Това беше седмица два раздела. Благодаря ви момчета толкова много.