[Музика свири] ALLISON Бухгольц АС: Еј секого. Добредојдовте на вашиот прв официјална CS50 секција. Како што можете да, видете ова е секција CS50-like, само да се повлече до нашата агенда за денес. Значи, кој сум јас, што јас сум сигурен вие сте сите се прашувате. Јас сум вашиот ТФ. Јас не сум само случаен студент кој преставува вашиот ТФ. И јас одам да се оди преку вид на мора делови ќе тече, очекувањата што ги имаме, ресурси, така натаму и така натаму. Ние се случува да се зборува за низи, ASCII функции, командната линија аргументи, и тоа не е за тука, но Јас исто така ќе биде помагање можете вид на мисли преку вашиот следен PSET за оваа недела. Кои јас сум сигурен дека сите ќе го цениме. Значи, прво question-- кој сум јас, освен вашата темпераментен ТФ тука. Јас сум Алисон Бухгольц-о. Ова е мојата втора година TFing CS50. Јас, исто така ТФ CS51 во пролет. Може да видите таму повторно ако решите да го земе. Јас сум исто така СУП, па секоја Freshmen-- и ако не сте Новак, ова е мојата трета година како советување колеги. Јас сум многу добро обучен во советување вие ​​на живот и курсеви во рок од CS и не е во рамките CS. Јас сум компјутерски науки концентратор. Јас сум висок во Адамс куќа, најдобар куќа. И пред се префрлив на CS ми Сафомор Пролет, Бев навистина биомедицински инженер. Јас требаше да се оди на Мед училиште. Јас требаше да биде траума хирургот. И дека има целосно променети од Зедов CS50. Зедов разбира мојот Сафомор есен. Тоа беше мојот прв вовед во ЦС било кога. Јас бев еден од 78% од вас кои е нула искуство доаѓаат во, и тоа целосно се промени мојот живот. И сега јас работам на Microsoft, и вашата прекрасна ТФ. И CS50 е веројатно една од најдобрите искуства дека јас сум имал тука во Harvard-- двете преземање на класа и да биде во можност да им помогне на ги учат учениците како тебе. Па јас сум навистина возбуден дека сте сите тука. Во случај да дојде во доцна, има бонбони, кои треба да се чувствуваат слободен да дојде грабне, или да испратите некој друг да го дофати за вас. тоа е во ред. Не сакам да се јаде тоа. Мојата соба има доволно чоколадо, па y'all треба да се обиде, а заврши тоа. Знам дека има 100 парчиња, но како, 04:00 на Понеделник, Мислам дека секој би можел да се користи некои шеќер. Така што сите од вас кои се официјално во мојот оддел треба да имаат добивано и-мејл од мене со мојот телефонски број, е-пошта address-- се чувствуваат слободно да ме додадете на Gchat, се чувствуваат слободни да ме додадете на Фејсбук, и, исто така, за остатокот од вас, можете да ми пишете во право тука. Существуют две H е. Секој секогаш го прави како две L's или две Ц е. Две Н в презиме. Инаку тоа се случува за отскокнување, и Јас не одам за да се добие вашата e-mail. Па се чувствуваат слободни да ми мејл, да ме контактирате во секое време. Јас не може да се вратат на вас во рок од 24 минути, но јас ветувам дека ќе се вратам за вас во рок од 24 часа. Ако ми се јавите, половина час пред Вашата PSET се должи, ќе биде како, Јас немам идеја што правам Алисон. Да ми помогне. Одам да ви се смири, но на крајот на денот, ако сте ме вика, половина час пред Вашата PSET се должи со ништо напишано, Одам да се биде како, добро, можеби тоа е време да го користите дека кон крајот на денот. Па јас ќе одговори на сите ваши барања во многу навремено. Мојот телефон е обично во прилог на моите раце. Јас обично реагираат многу побрзо од 24 часа, но можам само гаранција 24-часовен одговор. Добре. Па зошто сме тука? Исто така, ако имате прашања на секое време, молам да ме известите. Зборувам многу. Зборувам брзо, но ве молам се чувствуваат слободни да ме прекинеш. Тоа ми дава дишење соба, како и. Па секции се време за нас да се навистина само се нурне во, се некои практично искуство, да се одат преку темите што ги споменавме во клас или во наставни материјали што ви препорачуваме да ви момци онлајн. И ние всушност ќе одат преку некои од овие ресурси во малку. Па некои белешки за делот за поддршка. CS50-- една од работите што го прави тоа е една од моите омилени класи е чувството дека никогаш не сте сами. Имаме персонал од над 100 луѓе кои се тука да ви помогнат. Имаме канцеларија часа Од понеделник до четврток. Па така постојат толку многу луѓе кои сакам класа исто како и правам и кои се навистина тука затоа што тие сакаат да бидат тука. Повеќето од нас се студенти, а ова е како петти класа во прилог со остатокот од нашата работа. И тоа е многу работа, но ние го направи тоа затоа што ние тоа го сакаат, и ние навистина сакам да ве научи и да им помогне го споделат нашата возбуда за оваа тема и оваа класа. Па ве молиме да ги искористат предностите. Доаѓаат да разговара со нас. Да се ​​добие осамен кога моите студенти не разговара со мене, па ако сакате, доаѓаат закачам со мене. Тоа ќе биде одлично. Така дел е очигледно еден од вашите најголеми нешта. Ќе одиме преку нешта што го научиле во предавање, направи некои кратки примери кога имаме време, и, генерално, вид на добиете идеја за работи што треба да се размислува за за вашиот проблем во собата. Shorts-- колку луѓе, всушност, гледав видеото од вашиот нулата кратко? Никого признае мене? Па тие се многу голема. Ти дефинитивно треба да се види оние. А многу работа е ставен во нив. И тие се само значи да се биде залак големина парчиња за да се види само за три или четири минути и да добијат подобро разбирање на концептот. Прошетка throughs-- како многу луѓе се одвиваа прошетка низ тие за претходните? Zamyla е неверојатно, нели? Како, посакувам да сум Zamyla понекогаш. Значи дефинитивно го користите вашиот прошетка низ тие. Таа ќе го срушат во мали, залак големина парчиња. И кога ќе имаат овие огромни спецификации од вашиот проблем сетови, тоа се случува да биде навистина важно за да биде во можност да само најдам некаде да се започне и да работат бавно низ него. Сите во право, ние исто така имаат Study50, која е study50.harvard.edu, верувам. Можете само Google учат, и тоа ќе излезе. Оваа е една од најдобрите ресурси имаме. Тоа е PowerPoints со белешки и пракса проблеми за вас со решенија кои ви всушност може да одат преку. Значи, ако некогаш сакате повеќе пракса, повеќе од нас во делови или повеќе од вашиот проблем сетови, ова е навистина место јас ве охрабруваме да се оди. Таа била изградена минатото лето од страна на некои од моите навистина добри пријатели. И тоа е неверојатно. Всушност, голем број на слајдови дека јас ќе биде со користење на раздел ќе дојде од Study50. Па многу од TFS го користите. И, конечно, како I споменато, работното време. Ако имаш проблеми со домашната работа, вие сте има проблеми со концепт, дојде до работното време. Одат рано во недела, ако можеш. Излегувај на четири, поради тоа што е вид на далеку. Никој не сака да одиме таму. Но, тоа е за да ги искористат, затоа што тогаш сте случува да ги имаат сите овие TFS, [Нечујни] можете опкружуваат. А особено сега, само врвот, четврток се многу студ во моментов во Mather бидејќи вашиот psets се должи во четврток. И знаејќи сака да го користите вашиот доцна дена сеуште. Значи, ако имате проблеми со концепти, постојат многу TFS кои се таму за да ви помогнат. Па дојде до Mather во четвртокот. Ако сакате да ме види, Одам да се биде таму. Јас сум обично прави мојата домашна задача, бидејќи никој не сака мојата помош. Па дојде нè видат. Среќавајте нас на половина пат. Значи колку луѓе присуствуваа предавање или гледав на интернет? Колку луѓе отиде на супер делот минатата недела? Кул. Тоа е всушност фер број. Колкумина од вас ја прочитате вашата спецификации за оваа недела, за вашиот PSET? Ох, јас сум горд на вас момци! Повеќе бонбони за y'all. Добро, па она што ние подразбираме "Задоволат нас на половина пат", е тој дел е навистина само ќе биде супер корисни за вас ако дојде во прочитав вашата спецификација за вашиот PSET. Затоа што кога ќе одам преку преглед на работи што треба да се грижи за, тоа не се случува да се направи колку смисла ако не знам што ти е проблемот поставени се случува да се побара од вас да го стори. Ако не дојде до делот, очигледно Јас не може да биде дека корисни за вас. Јас не одам за да го сваќате тоа лично, ако да не дојде до мојата делот токму сега, но дефинитивно ви треба. Ако не можете да ги гледате онлајн. Тие се таму со причина. Рудникот ќе бидат во право таму. Како што можете да забележите, ние сме се снима, па тоа ќе биде во право, таму за вас момци. Како и, да одиме lectures-- тоа е очигледно каде што сте добивање на започнете на вашиот материјал тука. Па јас дефинитивно ќе се обиде и да ви помогне колку што можам, но можам само да ви се исполнат досега. Мора да се вид ги исполнуваат ни на половина пат таму. Grading-- така, сите од вас кој доби е-мејл од мене, ти си ми официјален дел. Јас ќе биде оценување на вашата psets. И јас само сакам да кажам, едно нешто што навистина треба да се обрне внимание на се за коментари. Коментари често се корисни од вистинскиот резултат ние ви даде. И коментарите се, всушност, каде што Јас поминувам многу од моето време кога сум оценување. Па јас ќе ја цениме тоа ако ги прочита. И тие се всушност како сте ќе да дознаете повеќе за дизајн и стил и работи кои се малку помалку намалување и суви. Значи, навистина се обрне внимание да овие коментари. Ако имате прашања во врска со нив, или прашања во врска со вашиот резултат, ве молиме да дојде разговара со мене или пред секција, Јас веројатно ќе се дружење во фоајето, или потоа. Ако сакате да се закаже еден-на-еден средби за тоа како можете да помогне да се подобри подоцна проблем сетови, само да ме известите. А потоа само неколку совети за вас момци. Така еден од најголемите работи Јас секогаш се нагласи на мојот оддел кога сте учење како да кодот е да пишувам нешта на хартија прво. Ако имате игра план за каде што е вашиот код треба да оди и тоа што треба да се направите и тоа е расчленети во малку делови од псевдокод кодот што сум напишал надвор, си оди за да биде помалку веројатно да се направи синтаксички грешки или создади ако јамка дека не имаат друг. Ако знаете каде сте случува во целост, сте со помала веројатност да се направи овие мали грешки кои понекогаш ќе ве однесе часа да се поправи, бидејќи сте како, каде сум јас недостасува овој заградата? На тој белешка, ве молиме користете го Style50. Особено кога сте случува да се работното време, ако вашиот код е за сите вклучен во текот на една страна, тоа е се разбира политика дека ние може да се каже, да го поправам така што изгледа како Style50 вели што треба, а потоа ние ќе ви помогнат. Па тоа ќе го направат вашиот живот полесно. Тоа ќе го направи нашите животи полесно. Сите се посреќни. Секој добива подобри оценки. Зарем тоа не е она што сите ние сакаме? Така пишувам нешта на хартија пред Дали некогаш сте се допре вашиот компјутер. Разговарајте работи надвор на високо ниво, и бидете сигурни дека знаете каде одите. И ако не сте сигурни, седнам со некој и ги прошетка низ чекор по чекор она што вашиот код би требало да се направи. И девет пати од 10, ќе биде како, о, заборавив ако состојба или сум заборавил точка-запирка тука или Јас сум ажурирање на оваа променлива не е во ред. Па тие се моите совети за успех. Па од околу половина ќе се погледне како тебе присуствуваа супер секција, Јас сум само ќе да се многу накратко одат преку петелки, кои не беа на нашата изворна агенда. Но тие се навистина важни. И така јас ќе одам да се вид на брзина преку оние пред да се влезе во нашите вистински секција. Пред јас да го правам тоа, се таму било questions-- логистички, лично, е таму нешто друго што сакате да знаат за мене или за дел или класа воопшто? Сите добри? Добро, кул. Убава. Така loops-- вие момци треба сите признае овие парчиња од нула. Така петелки се во основа само начин за нас да се направи нешто некои број на пати, некои се повторува акција врз основа на некои условен. Па ние имаме три различни типови. Имаме за телефонска линија, а и не-време. Значи за loops-- ние само имаат многу општиот распоред тука на за телефонска линија. И ова е одлично за кога знаеш како многу пати нешто треба да се изврши. Кога зборуваме за други петли, ќе види зошто тоа е важна разлика. Но, за петелки се за нешто во собата. Што знаете, можете или пресмета бројот или го знаете бројот на пати можете сакаме ова се повторува на почетокот. Па ако го гледате тука, ние има само еден општ вид на скелетот рамка за за јамка тука. Па за-иницијализација, ова е местото каде Вашата променливи се иницијализира. Со Марио, сигурен сум дека вие момци го направи нешто како int i е еднаква на 0. Тоа е каде што ќе се случи во сина боја. Имате вашата состојба, која е она што се проверува секое време. Ако овој услов не е точно, тогаш Остатокот од кодот се извршува. Тогаш тоа ќе работи again-- и да побарате. И тогаш ние треба ажурирање, каде што сте ажурирање на вашиот променлива. Значи, повторно, со како Марио, јас сум сигурен вие момци направиле нешто како јас плус плус. Па секој пат на јамка Ран, добив ажуриран така дека кога сме биле тоа проверки против некој услов, тоа се менува. Затоа што ако само имаат статична променлива, ако тоа се извршува прв пат, тоа е само ќе се изврши бесконечно. Па мора да бидете сигурни дека сте надградба на вашиот променлива правилно. И ние исто така имаат само визуелно претставување таму. Секој добар? За петелки. Треба да го виделе овие во вашиот PSET. Кул. Па тука е само лесен пример. Печати Ова е CS50! 10 пати. И така ние си имаме иницијализација, како што гледаме таму, со int i е еднаква на 0, за i е помалку од 10, и i плус плус. И тоа ќе печати од 10 пати. Така, додека loops-- додека петелки се голема кога ќе не мора да треба да се знае колку пати тоа е се случува да се ажурира на почетокот. Вие само треба некои услов е проверено. И тоа би можело да биде нешто како while-- ајде да се земе пример од вашата PSET. Ако Марио, ќе се обидат да внесување на негативен број. Нели? Што требаше да повторно го натера вашето корисничко. Па може да се каже, добро, ако корисникот влезови нешто помала од нула, повторно брза нив. И јас сум сигурен дека би можеле да имаат е нешто што некои од вас се користат во вашиот код. Така, тоа е едноставна работа. Имате време, некои условен што е обележана секој пат на код оди да се изврши. Ако го оценува за да точно, ние го работи. Инаку ние не се направи. И она што е навистина important-- нешто што јас мислам дека Давид зборуваше за во lecture-- се загради. Што и е во рамките на загради е она што се извршува. Ако го заборавите оние загради, тоа е само ќе за да биде на линија директно по додека бил погубен. Значи, ако имате три работи кои би требало да се случи кога овој состојба оценува на true, и вие не мора оние загради, само Првото нешто да се случи. Така да бидат многу осведомен на каде што ќе ги ставаш загради. Ако се држиме со Style50, ова дефинитивно ќе ви помогнат. Кул. Па ова е одбројувањето од 10 до нула. И како што гледате тука, ние се иницијализира некои контра надвор од него. Едно нешто што е различно е ние не сме иницијализацијата нашата променлива во рамките на нашите додека јамка. Тоа е иницијализирана надвор од него. Ние едноставно се само ставање состојба во за нашите време. Значи во овој случај, тоа е, додека број е поголем од нула. И ние печати од она што нашите Грофот е, а потоа ние декрементировать нашата променлива. И тоа е, исто така, уште нешто да се забележи. Нашите ажурирање не се случи во рамките на дека првиот дел од додека јамка. Тоа, всушност, ќе се случи во рамките на загради, на телото на вашиот текст. Така не се прави додека loops-- не-додека петелки се одлични за корисник валидација. Па некои од вас може да има исто така се користи овој во вашиот PSET. Може да се каже, дали, како, побара од корисникот за влез. И тогаш, додека, како, на влез е помалку од некои број. Значи за експлицитна случај со Марио, го ќе биде направите printf, внесете број, а потоа некои цел број е еднаква на GetInt. И тогаш тоа ќе всушност изврши тој код во прв план. Всушност ќе има некој вид на број. А потоа може да се каже, додека дека цел број е помал од нула. Па што се случува да се направи, е тоа е и оди да се изврши барем еднаш. Тоа се случува да се провери состојбата. Ако состојбата е точно, тоа ќе се кандидира повторно. Така не се прави додека петелки се одлична за корисник валидација, затоа што знаете код се случува да се изврши најмалку еднаш, додека со додека петелки, вие не сте гарантира дека тоа е оди да се изврши само еднаш. Тоа се случува да се провери состојбата прв, а потоа се одлучи да го изврши, додека не-време ќе изврши код прв и потоа проверете да се види дали што треба да го повтори. Дали таа дистинкција да има смисла за секого? ОК. Кул. Значи во овој случај, тоа е вид на она што јас зборувам за, ова повторно го поттикнува додека не добие позитивен број. Па знаеме дека printf "Внесете позитивен број" и всушност прашуваат за тоа input ќе се случи барем еднаш. Ако корисникот е зло и го задржува влегуваат негативен број, кој знае колку пати тоа ќе се изврши. Но овој код е загарантирана да се изврши барем еднаш. И тоа е причината зошто тоа е одлично за потврдување на влез. И ќе го искористите дека доста. Сите права, било какви прашања досега? Сите ние сме добро? Сум јас станува премногу брзо? Ние сме добро? ОК. Страшен Значи ние се случува да се оди напред и зборува за низи. Кул. Така низи се во основа само структури на податоци кои ни овозможуваат да ги чувате работи на ист вид. Значи, ако некогаш имате низа, тоа е или само ќе треба целочислените или тоа е само случува да имаат плови или тоа е само ќе треба карактери. Вие нема да има int со Чар со пловка со двојно. Една работа. Низи се само една големина, или тие се само еден вид. Па тука имаме низа на големина три со три цели броеви во неа. Тие би можеле да лебди, но ние сме случува да се каже дека се целочислените. Така што едно нешто да се реализира е тоа што низи се збир големина кога ќе се иницијализира нив, и тие не се easily-- бидејќи сите вие ​​сте помалку удобно, вие само треба да мислам на нив како не се во можност да се прошири во големина. Сепак голема што е утврдено Вашата низа на почетокот, тоа е големината тоа се случува да останат, бидејќи низи се континуирани блокови од меморијата. И кога ќе ви плаќа во малку повеќе како меморијата е всушност изложени на дискови и во грамада и магацинот, тоа ќе се направи малку повеќе смисла. Но вие може само да мислам на како, тоа е само ред на празни места на Вашиот диск. И не може да гарантира дека има случува да биде слободен простор и по него. Вие би можеле да се иницијализира низа од три и тогаш можеби иницијализира друга низа од пет подоцна, и тоа е право, по тоа. Значи, ако сте во ситуација да одат минатото место три со тоа, што првата низа, ќе бидат писмено над нешто друго. Така низи are-- за вас момци, само мислам на нив како фиксен размер. Па создавање array-- си оди да треба да го направите тоа доста. Па во истиот начин на кој ние имаат општа структура за нашите за петелки, имаме убав општо структура за нашата низа. Затоа што тие се на еден тип, сите елементи во низа се на еден тип, што треба да се иницијализира она што тип е. Значи, како што гледате тука, имаме убаво малку држач тип на податок. Значи, ако ние сме создавање int низа, која ќе биде int. Ако ние сме создавање на Чар низа, тоа ќе биде знак. Ако ние сме создавање на низа низа, тоа ќе биде стринг. А потоа името на вашиот низа, што и да би сакал да биде. Па можеби тоа е теста или можеби тоа е на студентите, или можеби тоа е бонбони. Што и да одлучи да го именува вашиот масив, тоа е она што ќе биде. А потоа во заграда, ќе има големина што сакате. Значи, ние чување на 10 студенти или сме чување на 15 видови на бонбони? Што не. Значи, во нашиот пример овде, ние сме создавање на низа на големината на три, кои вие момци види токму тука на правото. И кога првпат се иницијализира тоа, се што е поставена на нула. Така, тоа е само мислев на како празен лист. Ние ги имаат сите овие простори, сите ние имаме овие кутии ние би можеле да се стави на нашите податоци во, но тие се само празен засега. Значи, ако сакаме да се, всушност, ги додели овие вредности, ние го стори тоа како право според тука покажува. Па имате што и името на вашиот низа е и тогаш она индекс што го сакате. Па индексот само се однесува на, како, што слот ние сме во потрага по. И важна работа е да се забележи е дека низи се нула-индексирани. Значи, ако сакаме првиот простор во меморијата на нашата низа, тоа се случува да биде нула. Ако сакаме второ, тоа ќе биде еден. Ако сакаме трето, тоа ќе биде два. Така натаму и така натаму. Кој е, исто така, зошто, конвенционално, кога тоа го правиме за loops-- јас сум сигурен вие момци се прашувате, зошто да почнеме 0 наспроти 1? И тоа е затоа што кога ние транзиција во користење на низи, тоа карти правилно. Значи, ако сакате да iterate во низа, тоа го прави многу повеќе смисла да се можам да е еднаква на 0, затоа што ние се знае дека ќе одговараат на првата на самото место во меморијата. Секој добро со тоа? Кул. А потоа на дното тука е само друг начин за да се иницијализира низа. Се 'уште ве тип на податоци и за името, но наместо всушност ставање на големината во таму, вие само може да го направи празен загради. А потоа со овие кадрава загради на дното, можете само внесување на податоците дека сакаш да бидат одделени со запирки. И дека автоматски ќе кажам, ОК, гледам дека имате три нешта во овие загради. Па знам дека јас треба да се доделат три блокови од меморијата, а потоа да се сместат оние. Така првата верзија можете да го користите ако сте барајќи вашето корисничко да го внесете вредности, така што ќе може да iterate преку низа и ask-- добијат некои int да го внесете нив. Ако знаете вредности претходно, тоа го прави многу повеќе смисла да се користи вториот начин. Но во повеќето случаи, вие не може да знае она што тие вредности се случува да биде. Кул. Било какви други прашања? В ред. Така пристапува elements-- така еден од големите нешта за низи е дека тие се случаен пристап, што значи дека не мора да се погледне преку секој блок. Ако знаете дека ви сакаат она што е во блок две, вие само може да се каже, дај ми го блокираат две. И тоа е причината зошто овие индекси се толку важни, а тоа е како ние всушност им пристапите. Значи во овој случај, како што видовме претходно, кога ние беа доделување вредности, во еден пред имавме име и индекс сакавме да пристап, нели? Па во истиот начин, тоа е сите ние направите за да всушност се повлече дека податоците надвор. Ние имаме име, а ние имаат индекс што го сакаме. Па во овој случај, за јамка овде долу на дното, секој знаете што таа го прави, она што би испечатите? Mmhmm? Точно. Така да, тоа е само итерации. i е еднаква на zero-- можеме да одиме преку код само брзо. i е еднаков на нула, i е помала од три во овој момент, во ред? Така што проверки. И ние се каже, во ред, печат е што и да е во температурата на i. i е нула, токму тука кога првпат се iterate, па одиме на ова прво место, и ние се каже, во ред, 65 е бројот што сакате да испечатите. Па тоа ќе печати од 65 а потоа направи нов ред. Јас ќе се ажурира, така што отпечатоци 87. Тој ги ажурира еднаш, и тоа ќе печати 30. Секој кул? Страшни. Добре. Па тука е вид на еден нешто што ми велеше како можете да ги пратите на нечиј рејтинг и зошто ќе се користи првата начин на иницијализацијата тоа наместо на тој втор пат. И тоа само оди преку. И ќе забележите имаме класа големина од 30. И ние сме иницијализацијата ова низа на целочислените дека е од големина 30. И тогаш се итерации преку и ние сме прашува корисникот за да го внесете резултати за секоја од овие и после тоа ја доделуват на еден специфичен простор во меморијата некаде во таа низа. Кул? Дали тоа се направи смисла на сите? Mmhmm? Така hashtag дефинира класа големина 30 е директива препроцесори, кои само значи дека gets-- го има да ми се допаѓа процесот на составувањето. Можете да мислам на тоа како глобална променлива. Начинот на кој ние го направи тоа е typically-- тоа им овозможува на вашиот код повеќе лесно да се промени. Па да речеме дека нашата класа големина одеднаш оди с 30 до 15, ако јас не го дефинира овој начин, јас би мора да одат преку целата мојата програма и промена на секој пример од 30 до 15. Но, со ова, да се добие за да се промени една самото место, а сè друго промени. Ако некогаш сакате да го направите хаш се дефинира во случај каде сте следење на некои го поставите бројот на оценките за класа или сте со помош на бројот кој ќе се користи, како на пример, во текот на многу долга програма, тоа е подобро да се дефинира дека на почетокот така што, ако некогаш се менува, ќе добиете да се промени едно место наместо на 100. Да? СТУДЕНТСКИ: Помеѓу тоа го прават и само прогласување [нечујни] во текот на врвот. ALLISON Бухгольц АС: Па тоа има врска со efficient-- тоа е вид на надвор од опсегот на она што ние може да ги покрие во овој дел. Што треба да направите повеќе со ефикасност и тоа како работите всушност работи во процесот на составувањето. Ако сакате навистина да знаете во врска со тоа, јас сум среќен да ти пратам е-маил со ресурси во врска со тоа. Хаш дефинираат тенденција да биде најпосакувана за нешта. И како што се кодира повеќе, може вид научат нијанси од кога ќе треба да се користи глобалната наспроти хаш се дефинира. Но, за тоа време, вие навистина не треба да се грижите за тоа е дека на краток одговор. Секој добро со тоа? И, исто така, ако сакате да го користите хаш се дефинира, тоа е навистина важно да се забележи дека името треба да биде во сите капачиња. Ние не сме само прави Класа големина да биде драматичен. Тоа всушност треба да биде во сите капи. Кул. Ништо друго таму? Ние сме добро? Убава. Добредојдени. Добро, па сакам вие момци да ги погледне во оваа и види дали може да се најдат на ошибка. Јас ќе ви даде совет. Тоа е некаде со тоа, што за-loop. Mmhmm? СТУДЕНТСКИ: Треба да биде помалку од еднаква на 2. ALLISON: Па тоа може да биде помалку од или еднакво на 2, или пак може да биде помалку од 3. И она што е размислување за тоа? STUDENT: на [нечујни], 0, 1, 2. ALLISON: Токму така. Па во низа на големина n, ние имаат само индексите на n минус 1. Кул. И тогаш може да се добие навистина луд и да добијат мулти-димензионален низи. Еден од проблемите кога го зеде во мојата година бара мулти-димензионална низи, и мислам дека еден од нив може да бара тоа што оваа година, така да биде удобно. Заврши вашата глава околу тоа сега. Тоа ќе се врати да ја прогонува вас, но во кул начин. Па можете да навистина само мислам на мулти-димензионална низа како низи на низи. Па можете вид на може да се мисли на овој врвот ред како прв парче на меморија. И овој е на втората парче на меморија, и последниот ред е трето парче на памет. И во рамките на тоа, има низа. Но, се разбира, тоа е полесно да ги отслика како оваа. Па ти тоа иницијализира на ист начин. Оваа е лик одбор на три од три. Па имате три реда и три колони. Ние сме го претставувајќи на тој начин. И ќе го достигнете ист начин, колона од страна на ред. И така 1,1 како што гледаме тука. Ние доделите нула, нула до таму. 2,0 и 0,2. Така да само ќе пристапите them-- ако некој е досега направено линеарна алгебра, на ист начин да пристапи елемент во Matrice, тоа е истата идеја тука. Па можете да го се однесуваат назад кон математиката. Вие не треба да се грижите премногу многу за ова право сега. Тоа е добро да имаат изложеност, да знаете дека можете да го направите. Можете да креирате некои луд number-- можете создаде луд низи се сите јас ќе одам да се каже. [Нечујни] Го добива малку луд, но тоа е навистина кул. Страшни. И тогаш, па ние имаме еден пример тука. Се пресметува стринг должина. Па колку луѓе знаеше дека жици дека сте користење се само низи од карактери? ОК, да. Па вие момци можат да мислат дека не сте used низи пред тоа, но било кое време го користите GetString во CSView библиотека, вие сте всушност само прашува за низа од карактери. И ние сме се грижи за сите дека во back-end за вас. Но сте биле користење низи откако почнавте. Вие само не го знае. И секогаш кога ќе имаат карактер низа или низа што е чување низа, последно нешто е секогаш она што е наречен нула терминатор, која е ова право тука. А тоа е, на крајот на секој збор што сте чување. Значи, ако сакаме да дознаам должина на стринг, можеме да кажеме, и, знаете, содржината на тој блок не е еднаква на нашата null терминатор. Тоа значи дека постои некоја карактер таму дека ние, всушност, се грижат за тоа е дел од зборот. Да се ​​зголеми својата должина. И тогаш кога ние всушност го крајот на збор, тоа ќе го прекине и тоа ќе се врати нашиот должина за нас. Mmhmm? СТУДЕНТСКИ: Дали простор се смета како нула терминатор? ALLISON: Значи простор е не нула терминатор. Значи, ако сте multiple-- имаат простор е всушност специфичен ASCII вредност. СТУДЕНТСКИ: Што е извичник еднаков повторно? ALLISON: Значи, тоа е она што се однесуваат на. Ако некогаш ме чува во работното време, Јас секогаш го нарекуваат, како, бам еднакви. Така тресне не е. Па ова е не е еднаква на. Значи, ако сте се обидува да види дали нешто е лажно, знаете секогаш го правам, бам без оглед на променлива е, и ако тоа е false, го оценува за да се оствари и можете може да се направи кул работи со тоа. Повеќе за тоа подоцна. Кул. Сето добро таму? Страшни. Па сега е време вашата момци ", за да работи, бидејќи јас сум бил зборува. Па сакам да само се создаде низа со цели броеви еден, два, и три, а потоа ги отпечатени. Вие не треба да се направи, како на пример, Основната, бла, бла, бла, сеедно. Јас само сакам да се иницијализира низа и потоа се создаде за јамка за да ги испечатите out-- или додека јамка, зависи од вас. Јас само ќе ви даде неколку минути за да се работи на тоа. Одам да се одморат мојот глас. Ако имате било какви прашања, јас сум среќен да дојдат околу и да разговараат со вас момци. Слободно да се разговара еден со друг. Добиете повеќе бонбони. Всушност, јас само ќе се шетаат со бонбони. Како е тоа? Дали сакате да има? Некој друг во оваа соба сакаат слатки? Вие исто така може да потрае повеќе од еден, момци. Земете еден грст, ако сакате. Мај, како и. Секој друг добро? ОК. Исто така, јас ќе одам да се создаде анонимен Google Форма, а вие момци само можат да ги достават повратни информации по секоја секција ако има нешто што сакате да подобрување на или нешто што сакате да се направи. Ако јас сум малку премногу весел за вас, можам да го ублажи. Јас ќе се создаде тој и испрати дека до сите вас потоа. Добре. Па ајде да започнете мал. Како би ја иницијализирам нашата низа? Што е од типот на нашите низа? Int, нели? Добро, па што сакаш да го повикате вашиот низа? Int низа, кул. Сите права, па ние имаме int int низа е еднаква на, и она што го имаме после тоа? СТУДЕНТСКИ: [нечујни] загради. ALLISON: Протезите. А потоа во внатрешноста на протези? Една запирка два запирка три. Кул. Па тоа е во ред. Па сега ние имаме за телефонска линија. Па во првиот дел од нашиот за телефонска линија, што имаме? СТУДЕНТСКИ: i е еднаква на 0? ALLISON: Значи int i е еднаква на 0, а потоа она што е наша состојба? Какво јас нема да биде помалку од? На помалку од три, и како ние сме јас се ажурираат? i плус плус, тоа ажурирање по еден. А потоа ние ќе треба да имаат некои printf на цел број, и што е тоа последната делот кој е всушност случува да се каже она што ние треба да се печат? Тоа ќе биде името на низа, што е int низа, нели? И она што е во загради на int низа? з. [? Па јас?] Јавив пример, но таму да одите. Не е толку лош. Секој добар? Кул. Значи ние сме направиле со низи. Congrats. Ти успеа да iterate низ сите the-- да? СТУДЕНТСКИ: [нечујни] ALLISON: Да. СТУДЕНТСКИ: Имам едно прашање. Дали сте би требало да вовлекувате протези? ALLISON: Значи загради треба да се редат со за телефонска линија, а потоа се внатре во загради треба да се вовлечен. СТУДЕНТСКИ: Добро, треба за телефонска линија се вовлечен? ALLISON: за телефонска линија не треба да биде вовлечен во овој момент. Ако сте биле во главните, ако ние всушност имале главна функција овде, тоа ќе биде вовлечен од главните. Но, во овој случај, тоа е во ред. Да, станува збор. СТУДЕНТСКИ: Дали ви е потребна за да имаат голема заграда по пример? ALLISON: Да, ако сте иницијализацијата на тој начин. Па, се сеќавам, ова е втор начин на иницијализацијата низа каде имаме загради, а потоа нашите вистински податоци разделени со запирки во рамките. СТУДЕНТСКИ: Мислев дека биле држачи за што пример. ALLISON: Не, тие се загради. Тие се загради. Ако сте го иницијализацијата дека вториот начин, тоа е загради. Ако бевме да се каже, int example-- ако ние само сакав празно низа за целочислените, тоа ќе биде int пример загради три. Заградите претставуваат големина. Кога имате загради, тоа е вистински податоци сте пуштање во него на овој начин. Можеме да дојдете назад навистина брзо. Така што во овој еден, ова е само нашата почетна низа, иницијализација. И тука, ние сме индивидуално доделување на дамки на нив, така што ова претставува индекс на нашите низа, која е причината зошто имаме голема заграда. Но, еве, ако забележите, ние сме лево нашите загради без големина, и ние го иницијализира со вистинските податоци на сите-во-едно со загради. СТУДЕНТСКИ: Па зошто да не имаме загради во овој пример? ALLISON: Значи, во кој дел? СТУДЕНТ не би ние да речеме, int пример загради е еднаква загради [нечујни] држачи за пример. ALLISON: О, жалам. Во право си. Ние немаме загради таму. Жал ми е момци, мојата лоша. Да, треба да имаат голема заграда по пример. Вие сте апсолутно во право. СТУДЕНТСКИ: [нечујни] не го прави тоа. ALLISON: Не, вие мора да имаат загради, бидејќи во спротивно тоа е нема да се декларира низа. СТУДЕНТСКИ: [нечујни]. Жал ми е за тоа. ALLISON: За жал, ви треба голема заграда по пример. Печатна грешка. Добар улов, злато ѕвезда за вас. Исто така, ако сте поставување на прашање, ако вие момци само ќе ми кажете вашите имиња, Јас би сакал тоа. Јас би сакал да биде во можност да знаат сите ваши имиња. Јас не одам на студ ти се јавам, јас, всушност, не само сакате да знаете вашите имиња. Па ве молиме всушност ми кажете вашите имиња. Леа: Лија. ALLISON: Лија. Добро, така functions-- знам во кратко тие разговаравме за тоа во текот на предавањето. Така функции се вид на само како овие малку залак големина работи каде што ќе помине во влезови, нешто магичен случува, и ќе добиете резултати. Кул. Така што всушност се користи Многу од овие веќе. Добие int, се стринг, печат е. Овие се сите функции каде што само ги нарекуваат има многу магични работи случува во позадина дека вие не мора да се види, и ќе излезеш она што го сакате. Или барем ќе се добие што се надевате дека вие сакате. И во основа на точката на функции, и една од главните теми на CS, е да се скрши вашиот код во податлив парчиња. Кога ќе почнете да пишување овие навистина долго програми, или гребење кога сте имале оваа голема идеја за игра, што треба да биде во можност да се скрши надолу, за да, како, добро, како можам да започнете? Кои се малку парчиња кои ми е потребно? О, јас треба да побара од корисникот за нешто. Сега е потребно да се печати нешто. О, јас треба да се пресмета оваа вредност. И учење како да се пробие до вашиот код и големи проблеми може имаат во овие мали парчиња и создавање на функциите е всушност еден од голем камен-темелниците на CS. Така што може да мислам на функција само како како црна кутија, магичен црна кутија, што ќе се стави работите во и ќе добиете некои излез. И остатокот на програмата не мора да ги знае она што се случува во рамките на таа црна кутија. Сето тоа се грижи за се она што оди во и она што излегува. Кул. Па зошто функции? Organization-- како што реков, кога сте справување со многу големи код бази, како да ги организирате вашиот код ќе биде многу полесно ако користите функции. Затоа што ќе биде во можност да биде, како на пример, OK ова, е она што оваа функција го прави и тука е она што друг го прави тоа. И лесно може да се види како сите тие се вклопуваат заедно. Па тоа растурање на сите овие податлив подделови. Така simplification-- сигурен сум дека вие момци сите го виде тоа, како што рече, со гребење. Имате оваа голема идеја, и сте како, како не сето ова работа? Но, ако го пријде дробни, велиш, во ред, како можам да се направи една самовила плови низ екранот? Тоа е малку полесно. Така добар употреба на функцијата марки вашиот код многу полесно за читање. Тоа го прави полесно да се debug која што се ќе го добиете во вашиот подоцна проблем сетови, си оди за да навистина сакаат да бидат во можност да се направи. И тие се исто така лесно да се дизајнира и имплементира. Можете да го кодот до мали функционираат релативно брзо и бидете сигурни дека тоа функционира наспроти обидуваат за да се создаде целата оваа долга програма а потоа вид на оди преку и види она што е работа и она што не е. А потоа повторна употреба. Така функционира само треба да биде напишан еднаш, а потоа можете да ги користите онолку пати колку што е можно. Така, тоа е, како, еко-пријателски во некоја смисла. Ако сте имале работи како печат е, каде што мораше да напишете магија што оди зад печати е секој пат сакавте да печати нешто, вие ќе биде прилично болна и уморна од неа до крајот. Една од работите дека ќе учат во подоцна CS класи, или еден од најдобро совети да се добие е, ако сте копирање и вметнување код, тоа веројатно ќе треба да биде во функција. Ако имате точно ист линии во текот на целата вашиот код, ако ги факторизовали, Вашиот код најверојатно ќе да биде, како на пример, пет пати пократко и да биде многу повеќе лесно да се прочита. И наместо да се обидува да се смена сите овие различни места, каде што работи може да тргне наопаку, ќе имаат една функција дека ќе го добиете да се смена. И јас ветувам дека, многу од ова може да изгледа вид на абстрактна сега, но како што се добие во подоцна а подоцна проблемот поставува, тоа ќе се направи многу повеќе смисла и навистина да се вози дома. Дали постојат било какви прашања за функции досега? Зошто ние сме ги користите? Знам, ние не сме добиле во гнидав тврд уште. Па дефинирање function-- исто како низи, ние треба некој вид of-- ова е само на општата излез. Па ова е функција која е само ќе се коцка некои влез. И на следната страница, всушност, имаме сите овие страшни мали нешта тука. Значи, секој може да се прочита што, од љубопитност? Знам, виолетова и црна може да биде малку тешко. Но големи работи да знаю-- па првото едно право тука е нашето враќање тип. Така што ова зборува за излез на оваа функција, кога, во овој случај, ние се стави во некои број, она што ние сме добивање е дека бројот на коцки. Па тоа би требало да биде int во овој случај. Можеби тоа ќе биде двојно или нешто друго подоцна, но во овој случај, тоа е int. Со в, секогаш треба да се врати тип. Тоа ќе биде int. Тоа ќе биде плови. Тоа ќе биде двојно. Но мора да се определи што оваа функција ќе се вратат. Во спротивно ќе се развикам ви, и тоа нема да ги собере. Вие ќе бидете тажни, а јас ќе биде тажен. И тоа е само не е добро. ОК. А потоа ние си имаме име на функција. И како што можете да ја видите тука, со в има оваа многу конзистентни парадигма. Што е вашиот тип, што е името, и потоа некои други нешто на крајот. Па ние имаме враќање тип, нашите име на функција, а потоа ние си имаме заглавието со нашите параметар листа. Така на листата параметар е, она што е оваа функција се случува да се земе во? Параметарот листа е едноставно синоним за, она што се нашите влезови? И во истиот начин на кој ние треба да се дефинира нашата функција и му се даде враќање тип, секој од нашите влезови треба да има тип поврзани со неа. Па знаеме што ни функција всушност може да работи со. Значи во овој случај, имаме некои int влез. Значи, повторно, тоа ќе биде од типот и она што сте го повикуваат. А потоа, како што гледате тука, ние имаме нашето тело. Па ние имаме некои int излез, дека е само нашиот влез самата пати пати себе, кој само го коцки. А потоа се враќаме дека излез. Така како што гледате тука, имаме int пати int пати int, така го враќа int, што е прогласена таму. Значи се што е смирување. Се што е среќен. Вашата функција ќе се кандидира. И ова е само општа работа. Па секогаш има враќање тип, име, и вашиот параметар листа. Секое нешто во вашиот параметар листа, или влез, треба да има тип поврзани со неа. А потоа имате тело тука со што што сакате да правите со вашиот влез. А потоа ти очигледно сакаат да се вратат нешто. Понекогаш функции само ќе се вратат. Тие не се всушност се вратат нешто за вас да го користите. Но мора да се врати на некој начин. И кога сте правење свој функции, можеме да навлегувам во тоа малку подлабоко. Лично, ако сакате, постојат многу на различни нешта што можете да направите таму. Секој добар? Нешто на оваа листа кој сакате мене да се премине, дека не го разбрал? Сите се добро таму? Кул. Страшни. ОК, па ние сме ставање сето ова заедно сега. Па ние имаме некои int коцка влез, така ова е комплетна програма тука. До сега, јас сум вид на било кои ви даваат момци фрагменти на која може да се случува во рамките на програмата. Ние само се гледа во функции. Но, тука е целата програма. Па како многумина од вас се сеќаваат на Зборот прототип од предавање? Кул. Имаме еден. Што е вашето име? Стеф: Стеф. ALLISON: Стеф? Добро, неверојатна. Значи, се сеќаваш ли она што е прототип? СТУДЕНТСКИ: Велиш [нечујни] пред навистина да сте се справи со неа. ALLISON: Се сеќаваш ли зошто? СТУДЕНТСКИ: Не ALLISON: ОК. Злато ѕвезда. Така да, прототип имаме претходно, бидејќи во спротивно, нашите компајлерот се случува да се развикам на нас. Тоа се случува да се каже, во ред, што е ова коцка функција? Како, вие буквално имаат ми кажа ништо за тоа. Тоа е како кога ќе одиме во училницата, и некој е како, има квиз денес. И вие сте како, никогаш не ми кажа за ова. Не сум среќен со нас. Прототип е во основа како Вашата програма велејќи, погледнете. Главите нагоре. Там ќе биде квиз на овој ден. Не навивач надвор кога ќе се дојде до тоа. Си оди за да биде во ред. Така што сите прототип не е кажете главен, јас ќе одам да ја користите оваа функција. Јас ветувам дека јас сум го дефинирање подоцна. Не навивач надвор во мене. Само ги собира и го направи она што јас ти кажам да. Па ние имаме прототип има само за да ја направиме нашата компајлерот среќни. И тоа е во основа ветување дека имате дефинирано оваа функција подоцна и дека не сте само повикувајќи оваа случајна работа дека тоа не знам што си ќе треба да се прави. Значи во овој случај, имаме главните тука. Ние се иницијализира некои цел број x. Тоа е две. Ние се случува да се печати она што x е. Ние се случува да се коцка х. Како што гледате, ние си имаме функција декларација долу тука дека ние зборуваше за претходно. Тоа ќе коцка x, а потоа, ако ние се сеќавам, коцка функција, всушност, враќа цел број до ни, кои се чуваат в x повторно, така што ќе може да се печати од осум, или коцка х моментов. Дали тоа се направи смисла на сите? Ние сме добро? Добре. Страшни. Добре. Колкумина од вас момци се сеќава на ова, па ова е во основа, само си магацинот и вашата грамада, само визуелизација на како меморија се чуваат овде. Па ние само сакаме да се направи сигурни дека ќе се разбере како тие се претставени во меморијата. Ако ви се земе часови како CS61 и работи подоцна, ќе добиете да го научат тоа многу повеќе во длабочина, и тоа е навистина кул. Силно го препорачувам. Но, за сега, ќе ти дадам Ви широк преглед така да не треба да се знае гнидав тврд. Па на врвот само текст сегмент кој содржи конкретната нули и единици, на бинарен за тоа. И ова се користи за чување на глобални променливи, ако имате било какви. Како што се движат надолу, ние имаат, како што гледате овде, иницијализира податоците, неинициализирана податоци, а потоа грамада. Па ние навистина не зборува за куп во моментов. Ние ќе дојдеме до тоа подоцна. За сега, јас сум само ќе бранува моите раце и се допаѓа, не ви треба да знаете за оваа сега. Но, ние ќе се зборува малку малку за оџак. Па оџакот е where-- имаме зум во. Ова е, всушност како на програмата ние само го погледна се случува во меморијата. Па што се случува е, секој време што ние го нарекуваме функција, добиеме она што се нарекува стек рамка, која е една од нив. Параметри така е главна. Значи тоа се работи дека ние помине во главниот. Па тие се во право тука на дното, бидејќи тоа е првото нешто што ние го нарекуваме. А потоа да добиеме до главна е локалните жители, а кога велиме дека, мислиме на локални променливи кои се чуваат во рамките на главната. Па локалното население тука ќе биде, како, x е еднаква на две во овој случај. Затоа што тоа е локализирана на основното. Дали сите се сеќавам обем, става над дека во предавање? ОК. Значи, само варијабли кои се иницијализира во рамките на главната. Па тоа е причината зошто имаме главните [? вокали. ?] А потоа во рамките на главната, ние го нарекуваме коцка. Нели? Значи ние се добие уште една рамка со параметри коцка е. Значи во овој случај, коцка е параметри се сега х дека го поминавме во, две што ние донесен во. И тогаш локалното население коцка, која е каде вистинските местење Рубикова коцка се случува. И тогаш тоа се враќа. Па што се случува е како коцка всушност не она што би требало да се направи, тој се враќа. При таа се враќа, оваа рамка остава, и што ја враќа надолу кон главната. А потоа во рамките на главната, ние всушност може да го испечатите. Значи, кога сте се враќаат нешто, кога вашата функција се враќа, тоа е како поминува на тие вредности да рамката под него, а потоа заминува. И работите треба да се изврши во ред. И кога ќе стигнете до поголеми програми, можеме да направиме кулер и повеќе комплицирано дијаграми. Но, за сега, ова е само општ преглед па имате вид разбирање на она што се случува кога сте повикувајќи функција и како тоа всушност изгледа во меморијата. Кул? Секој добар? Страшни. Па ова е оној кој е само се обидува да се разменуваат нешта. Како што гледаме тука, имаме нашата функција прототип така што нашите компајлерот не се развикам нас. Имаме некои главни, а ние сакаме да се префрлат x и y. Тие не го направиле ова демо во предавање сепак, имаат тие? Тие не имаат? ОК. Па ние ќе да се оди во текот на овој многу кратко. Ќе се влезе во овој пример повеќе во длабочина, мислам дека оваа недела. А потоа следната недела ние навистина може да се нурне во тоа зошто тоа не функционира. Па ние имаме оваа празнина функција here-- трампа. Така неважечки само значи дека ништо не се вратија. И ние имаме swap int и int b. И ние имаме некои привремени променлива тоа е. добива доделен Б, а потоа b добива доделен на temp така што a и b е вредности се сега вклучен. Но, заплет пресврт, ова не функционира. И дел од неа, всушност има да се направи со фактот дека и б овде, оние кои се донесени во тука, се всушност копии на x и y. Па кога функцијата всушност се враќа, тоа се префрла на копии, но не конкретната x и y е. Значи еден начин да се размислува за тоа е that-- се преправаат дека тие се трампа. ОК? Значи во главниот, имаме x и y се иницијализира. Но, кога ние всушност одат нагоре на овие рамки со swap, ние сме поминува вредности над до неа, и тие се иницијализира. И тие само некогаш живеат во право тука. Така и б живеат тука. И тие се заменети. Но, кога ќе се врати, ние не направи нешто со a и b. и б одмор со нашите функција. И така x и y останат исти. Вие ќе добиете повеќе во тоа како да го надминете тоа и како ние всушност се справи со тоа подоцна. Но тоа е само една работа да се вид на се има предвид. Користете го за во иднина. Не грижете се ако тоа не се направи сите смисла во светот. Тие се копии е најголемата работа. Ако си оди за да земе нешто далеку од тоа, ти помина во копии. Така оригинали остане иста. Секој добар? Кул. Така командната линија аргументи. Сигурен сум дека на почетокот вие момци сите имаше оние големи, како, int главната празнини. И сте како, во ред кул. Јас навистина не се грижат. Ова е само она што го имам да пишувам. Но во твоите нови програми, особено во овој PSET, и зошто постои креда на земјата? Со вашиот следен PSET, вие сте случува да се види тоа. Int главната, int аргумент в, низ лак с, загради. Значи, од она што ние само научив денес, она што мислиме дека вториот параметар или дека вториот елемент е тука? Тоа е низа. Каков тип на низа? Низ низа, да. Кул. Па тоа е како сте ќе што треба да се прогласувајќи овие сега. Дали некој се сеќавам она што овие престои? Не? Хм? СТУДЕНТ аргумент в. ALLISON: Значи аргумент в држи шанкот. Тоа е цел број. Тоа е голем број, нели? Па што мислите дека бројот е? Да. Па arg c е бројот на конците кои го сочинуваат командната линија. Значи, ако ние требаше да do-- всушност, постојат примери по ова, па не ќе се понапред од мене. Тоа е голем број на жици, кои само го сочинуваат вашиот командната линија. Значи, кога ќе го направите, како, точка коса црта Марио, тоа е еден стринг што го прави. Во овој дел, всушност ќе биде хранење работи во командната линија, како што јас сум сигурен дека момците кои Ги прочитав спец видел. Така и во оние случаи, можеби и ќе имаат две или три аргументи. Тоа се случува да биде корисна работа за да го користите. А потоа аргумент против, како што рековме, е само низ низа. Така што, всушност, продавници она што Ви влез во командната линија. Па ние имаме овие. Имате некои точки коса црта копирате входной_файл выходной_файл. Па, ако arg c е бројот на конците дека ние сме минува во командната линија, што е нашиот аргумент в во овој случај? Три. Точно. Значи она што е аргумент V од нула? Значи она што е првото нешто што го чуваат? Точка коса црта копија, точно. И тогаш на вториот ќе биде infile. На третата ќе биде outfile. Значи она што за аргумент против три? Тоа ќе биде нула, бидејќи тоа е На крајот на нашата низа, нели? Кул. И тогаш што околу шестиот еден? Тоа е вид на трик прашање. Носталгичната. Да знаеме што е тоа? Тоа е определено. Ние немаме идеја што би можело да биде. Тоа е она што е во право по низа во меморијата, а ние немаме поим што е тоа. И тоа е опасно да се допре оние работи, бидејќи за сите што знаете, тоа е некој дел од меморија, која ви не треба да биде пристапот до или null. И што може да направи луди работи. Таа се вика над-индексирање си обврзан да си низа. Не одат надвор од границите на вашата низа, или лоши работи може да се случи. Ќе се врати и, како, на законите на физиката се уништени или нешто. Кул. Дали тоа се направи смисла на сите? Не е премногу лошо. Па сега, секој е омилен дел, PSET преглед. Уау! ОК. Така и за оние од вас кои не читал PSET спецификации, вие го правите некои навистина кул работи со криптографија. Си оди за да се создаде Цезар Шифра и Виженера шифра. Ти дефинитивно треба да се прочита спецификации да се види како тие работат. И ако имате било какви проблеми околу она што всушност треба да се прави, ве молиме да дојде разговара со мене, пишете ми или текст мене. Јас сум наоколу. Па, постојат три главни работи тука дека ние сакаат да зборуваат about-- само вид на продолжување на предавање. Работи кои не би можеле да знаат за, корисни совети и алатки. Па ние сме случува да се направи брз преглед на ASCII, затоа што тоа ќе биде супер важно за Шифра Виженера е. Ние си оди за да конверзија на командната линија влезови, кои ќе биде многу корисна за Цезар шифра. А потоа по модул. Кул. Значи, ASCII карактери мапи на броеви. Ова е голема шема. Ова треба да биде обележани некаде. Ќе го сакаат за вашиот прв среднорочна. Јас сум прилично сигурни дека секој има оваа шема на своите среднорочни состојба. Па тоа се учи. Тоа го сакаат. Чувајте го корисна. Тоа ќе биде корисно. И сите тоа е е кодирање која карти азбучен, нумерички, и други ликови да броеви за нашиот компјутер. Бидејќи, се разбира, во крај, сè ни ги чува се случува да се конвертира се сведува на нули и оние, па ние треба некој начин да се претставуваат текст и ликови кои сите ние сме се користи за гледање како некој вид на број. Така како што гледаме тука, имаме големи букви, која е во право таму. Тоа е 65 години. И мали букви е 97. Па можете да дознаам out-- како што реков претходно, ако сте имале низа на повеќе жици, што секој од нив имаат нула терминатор. Тоа ќе биде простор. Простор има своја special-- Јас заборави каде е тука. Ах. 32 е простор. Значи се што карти до неа. Па ние имаме ASCII математика. Про tip-- во Виженера е, можеби ќе биде во искушение да ги конвертирате вашите броеви на цели броеви, но тоа е всушност подобра практика за да може да се користи ликови како овој кога сте всушност ги манипулира. Значи, ако сакате да се користат броеви, можеш. Но подобар начин, или на начин на кој ние се стремиме да ви се допаѓа момци да го направи тоа, е на овој начин, каде што вие сте всушност одземање знаци. Па јас сакате момци да вид на фигура овие надвор. Зошто не се обидете секоја другиот? Па направи првиот еден, третиот, и петти еден. Затоа што сакам да бидете сигурни дека ние се зборува за сè што е потребно да се зборува. Јас сум само случува да се каже, еден од важни работи to-- О чека, вие момци не сум ја видел оваа. OK, па го направи во првите три. Ајде да го направите тоа. Затоа што ние треба да зборуваме за модул. Знам. Математиката е тешко. Можете да го користите калкулатор. Тоа е во ред. Или се повлече до ASCII табелата, бидејќи ти си веројатно нема да го сакаат тоа. Кул. Па јас брзо ќе одиме вие момци преку овие. Па луѓето се ASCII маси зафрла? Која е нашата нумерички број за мали букви? СТУДЕНТСКИ: Седум. ALLISON: Значи мали букви е 97 и големи букви е 65. Па 97 минус 65? ПУБЛИКАТА: 32? ALLISON: 62, да. Значи во овој случај, она тоа ќе испечатите? Дека првиот? Ако имаме сто г, она што ќе укажуваат? СТУДЕНТ број. ALLISON: Ние печатење од вистинскиот број. Па ние сме всушност ќе за печатење на 32 тука. И ако ова беа проценти c, 32 ќе ни даде простор. Па разбирање дека знаци може да биде печатена и како броеви и како конкретната знаци е навистина важно, и плаќање внимание на конкретната видови дека ние сме прави тука. Кул. Па за секој друг еден од овие, што сме ние ќе треба да се печат? СТУДЕНТ карактер. ALLISON: карактер. Кул. Значи, ако вие момци сакате да знаете, вие можат да работат овие надвор на своја. Ако имаш проблеми, пишете ми. Но вториот ќе испечатите мали букви б. Третиот е да испечатите големи букви Б. четвртиот ќе печати надвор главна C, и последната ќе биде со мали букви А. И последната одно-- ние сме всушност ќе да се влезе во она што луди проценти знак дури и значи во неколку слајдови. Па обидете се оние на своја. Ако имате проблеми, ве молиме да дојде разговара со мене. Ако сте обично во Адамс Д сала, најверојатно ќе ме најдете наоколу. Значи, atoi. Колкумина од вас го виделе ова функција или слушнале за неа на сите? Некој? Кул. Па што всушност стои е ASCII да Integer. Така што можете да направите е, со Цезар, за оние кои читаат спецификации, ви се случува да го направите точка коса црта Цезар откако ќе напишете ја вашата програма, а потоа ви се случува да влез некои број што го сакате да се кодираат вашиот тајна порака. Но, ако ние се сеќавам, на сите наши влезови се чуваат како жици. Нели? Имаме аргумент против низа тоа е сè низ тип. Значи, ако сте едноставно се обидуваме да повлече дека еден, тоа би мислам дека тоа што еден или без оглед на бројот ќе се користи е всушност карактер. Така си оди за да се добие некои луди резултати. Значи, ако навистина сакаш да претвори ова во цел број дека можете да го користите да се манипулира вашиот збор или вашата порака, ќе сакате да го користите atoi. atoi само конвертира Вашата стринг за да се int. Значи, ако имаме низа од 12, ако ние го нарекуваме atoi на 12, или што и да влез е, тоа, всушност, ќе се врати да ви број. Не карактер или низ 12. Кои, кога ќе почнете да да додадам дека на броеви, ќе бидат многу различни, затоа што низ 12 некои луди број во ASCII, но цел број 12 е всушност 12, што е она што го сакате. Значи сакате да бидете сигурни дека да се користи atoi. Ви се случува да сакаат ова во Цезар, затоа што имаат потреба од int доставени од страна на корисникот во командната линија. Но, кога тие го стави во командата линија, тоа е се чуваат како стринг да се започне. Дали тоа има смисла? Вие не секогаш треба ова за Виженера. Со Виженера, како што реков пред, треба да се обидете и да ги користат ASCII математика што повеќе наликува овој, каде што вие сте всушност користење на знаци, дека ние сме дава на вас. Кул. Секој добро таму? Страшни. Па модул. Па што ако ви се доделува овој огромен број на Цезар? Имате оваа идеја дека ако сте на Z и вие сте даден број два, тоа значи дека need-- Z станува втор писмо по себе, нели? Така што треба некако да се заврши околу, и модул е ​​начин да го направи тоа. Така што сите тоа го прави е тоа дава остатокот на поделбата на првиот број од страна на вториот. И ние имаме некои примери, за да направи тоа малку поконкретни. Но во основа, можете да користите модул кога ќе сакаат да направат нешто навиват. Значи, ако сте само сакаат броеви еден преку осум, може да се користи modulo по било кој друг број, и секогаш ќе врати голем број од нула до осум. Па некои examples-- ако имаме 55 модул 10, тоа само ви дава на остатокот од 55 поделено со 10, кој ќе биде 5. А потоа три модул пет, секој погоди она што ќе биде? Три. Значи, ако имате помал број пред модул, тоа не може да оди во рамномерно. Тоа е нула. Па тоа само го враќа бројот себе. Па осум модул осум ќе биде? СТУДЕНТСКИ: Нула. ALLISON: Нула. Поради тоа што оди во рамномерно. 16 modulo 15? ПУБЛИКАТА: Еден. ALLISON: Кул. И тогаш оваа последната е само за да се покажа you-- може да се прашуваат, во ред, она што е цел на операции тука? Дали ние подели првиот? Дали ние по модул првиот? Па модул има истата предност како поделба или размножување, и неговата лева асоцијативни. Па тоа е во ист начин. Вие секогаш би го направил загради, потоа множење, делење, и по модул, со цел од лево кон десно. Така стандардни правила. Само да го стави во иста категорија што се поделба и множење. Значи во овој случај, ние ќе има 1 плус 2 ни дава 3. Множете се дека со 2, па ние се добие 6. Ние по модул, кој на 2, што ни дава? СТУДЕНТСКИ: 0. ALLISON: 0. А потоа го додаваме 2, па ние добивате 2 во последниот случај. Така modulo-- сте дефинитивно ќе се размислува за начините да се вклучат дека кога сте завиткување околу азбуката. Ако сте во Z и што треба да се движат напред три простори за да се стигне до С, има дека целиот концепт на обвивката околу. Па јас ќе го оставиме тоа за вие момци да дознаам како точно ви се случува да се го користите. Но дефинитивно корисна алатка за вашиот PSET оваа недела. Навистина ми се допаѓа ова. Ова е една од моите омилени psets. А потоа по што го направи тоа, ако имате пријатели, можете да, како, испрати едни на други тајна пораки и бидете сигурни дека тоа функционира. Затоа што тоа ќе го или што дешифрирате. Многу забава. А, тоа е крајот на секција. Го завршив рано. Јас се уште имаат 15 минути со вие момци, па ако има нешто што би сакале да одат над понатаму, Ќе ми биде задоволство да го направите тоа. Било какви други прашања на Вашата PSET за оние од вас кои почнаа или да прочитате спец. Нешто што ние разговарав за во последниот час и 15-та минута, дека ќе ми се допаѓа да се вид на преработка, Ќе ми биде задоволство да. Или можеме да го наречеме поднесе оставка, и можете да сите напуштат и да потрае повеќе бонбони со вас како ви одат. Но, ако има било какви бавни прашања, молам да ме известите. Вие исто така може да излезе и разговара со мене потоа. Јас ветувам дека јас не касне. Нешто друго? Секој е добро? Секој е чувство како тие може да се справи со ова PSET? Си оди за да биде во ред момци. Работно време се таму со причина. Кул. В ред. Па, во тој случај, фала сите вие ​​толку многу што дојдовте. Се надевам дека ќе видиме следната недела. Там ќе биде повеќе бонбони. Там може да има други интересни нешта. И јас со нетрпение очекуваме да се подготвите да ги знаат сите од вас оваа година.