[Музички] Дејвид MALAN: Во ред. Ова е CS50, и ова е крајот на недела 2. Жал ми е што не може да биде таму со сите вас денес, но ти си во многу добри раце. Дозволете ми да се воведе Сопствена Роб Бауден CS50 е. ROB BOWDEN: И, се разбира, тогаш ние треба да се направи забава на фактот дека тој ни испрати вертикална видео и да го покаже тоа. [Видео репродукција] [Музички] [СТАПКИТЕ] 'Ова видео не Мора да се погледне на овој начин. Тоа може да се спречи. Кажи не на вертикални видеа. -Vertical Видеа се случи кога ќе држете го вашиот фото апарат на погрешен начин. Вашиот видео ќе заврши гледа како глупости. - [Грофта] -Постојат Повеќе и повеќе луѓе зависници за правење вертикални видеа секој ден. Тој не го скршат или ништо, но сепак е навистина лошо. Постојат два различни вида на луѓето кои се погодени со воздухопловните. Првата група ја третира видео тие се пука како слики. Тие не значат ништо. Тие едноставно не разбираат дека а може да се претвори слика, ти навистина не може да се претвори видео. [НЕСРЕЌА] - [Мајмун ЗВУЦИ] -на Друга група се луѓе кои не даваат [bleep]. -Vertical Видео синдром е опасно. Филмови имаат секогаш бил хоризонтална. Телевизии се во хоризонтална положба. Компјутерските екрани е хоризонтален. Очите на луѓето се во хоризонтална положба. Ние не се изградени за да види вертикални видеа. -Јас Сакам вертикални видеа. -Nobody Се грижи за вас. -Ако Овој проблем е остави ја изберете, можете исто така ќе започне да покажува четири видеа одеднаш само за да се зачува пренесеното количество. -Letterboxed Вертикални видеа би биде со големина на поштенска марка. -И Таа ќе се шири насекаде. Филм екрани имаат секогаш бил хоризонтална. Ако е вертикален видеа стане прифатени, кината ќе мора да бидат високи и слаби. -И Сите на кината би мора да се уриваат и повторно изграден. И од страна на време тие беа повторно изградени, Мила Кунис ќе се стари и грди. -Birds Ќе удри во нив и да умре. -We'll Сите се вкочанети вратови од гледање горе. -И Никој нема да седат во предниот ред некогаш повторно. -George Лукас ќе се ре-издание на ѕвездите Војни again-- слаби издание. -Јас Никогаш не беше навистина може да се каже приказната што сакав да кажам. Ова беше одлична можност за мене да експериментирате со новата технологија. -You're Непредвидлива. -Секоја Време на мобилен уред се користи за да се снимате видео, искушението е таму. Само велат дека нема. Кажи не на Џорџ Лукас. Кажи не на стариот Мила Кунис. Кажи не на вертикални видеа. -И Ако видите некој го прави тоа, да речеме, "Ти не си пукање тоа право кукла!" [Музички] [END репродукција] [Аплауз] [AUDIO OUT] ROB BOWDEN: --simple форма на криптографијата, која е основа на енкрипција и декрипција на тајни пораки. Значи тука имаме многу едноставна играчка. А идејата е на надворешниот прстен ротира околу внатрешен прстен. И што можете да видите, можеби ако јас зум во, that-- тоа е тешко да се види. Но, како и бројот 1-- добро, тоа се пресели. Број 1 мапи на букви Х, број 2 мапи на писмото Ј неверојатно тешко да не го прескокнете напред. Писмо 2 карти на J. Број 3 мапи Д. Значи со овој прстен може да се даде некој порака 1, 2, 3. Поради некоја причина ќе се сакам да им кажам XJD. Но, можете да им даде некои порака на броеви, и се додека тие имаат овој прстен, тие може да ја декриптира она што се обидуваат да се каже. Па може да се види ова посебен пример за криптографија ако пред околу Божиќ сезона Ги гледавте Божиќна приказна. Ако никогаш не сте виделе него, пред, а потоа само се вклучете ТБС во буквално секое време на Бадник, бидејќи тие само го покажуваат назад кон назад да се врати назад за да се врати на целиот ден. И релевантните видео е ова. [Видео репродукција] -Бидете Познат на сите и Преземање дека Ралф Паркер е ова именуван за член на малата Ени Тајната Круг сираче и има право на сите почести и придобивките се случува со него. Потпишан Малку Ени сирачиња. Потпишана Пјер Андре во мастило! Почести и бенефиции веќе на возраст од девет години! [Вика од радио] -Ајде. Ајде да се е со неа. Не ми треба сето тоа џез за шверцерите и пирати. -Listen Утревечер со заклучните авантура на Црното пиратски брод на. Сега, тоа е време за Тајна порака на Annie за вас членовите на Тајната круг. Се сеќавам деца, само членови Тајната на Кругот на Annie може да го декодира тајна порака на Annie. Се сеќавам, Ени е во зависност од вас. Поставите вашиот иглички на Б2. Еве ја пораката. 12. 11. 2. -Јас Сум во мојот прв таен состанок. -25. 14. 11. 18. 16. -OH, Пјер е во силен глас вечерва. Можам да кажам дека вечерва пораката е навистина важно. -3. 25. Тоа е порака од самата Ени. Запомнете, не кажувај никому. И пет секунди подоцна, јас сум единствениот соба во куќата каде што дете од девет може да седат во приватноста и декодирање. Аха! Б! Отидов до следната. Е. Првиот збор е "да биде." S. Тоа доаѓа полесно сега. U. 25. Тоа е за Р. -Come Натаму, Ralphie! Јас сум Мора да се оди! -I'll Бидат во право надолу, ма! Gee факир. Т. О. "сигурен дека ќе биде" - да бидат сигурни на она што? Она што беше малку сирачиња Ени обидувам да кажам? Бидете сигурни да се она што? -Randy Мора да одам! Ќе ве молам да излезе? -Сите Право, мамо! Веднаш се надвор! Јас бев добивање поблиску сега. Напнатоста беше страшно. Што беше тоа? Судбината на планетата може да висат во воздух! -Ralphie, Ренди треба да си оди! -I'll Бидат во право надвор, за плачење гласно! Скоро таму! Моите прсти полета. Мојот ум беше челична стапица. Секоја пора затреперија. Тоа беше речиси јасно! Да. Да. Да. Да. Не заборавајте да пиете вашиот Ovaltine. Ovaltine? Кофти комерцијален? Копиле. [END репродукција] ROB BOWDEN: Значи тоа е како Ovaltine однесува на криптографија. Во основа CS50 само рекламира Ovaltine, па би можеле биде кофти реклама за Ovaltine. Во ред. Па сега вистински компјутерски науки. Се сеќавам, во понеделникот што застанавте нуркање подлабоко во жици. Значи ние се занимаваат со стрингот "Zamyla." И бевме признавање на фактот дека ние може да се третираат "Zamyla" како секвенца од знаци. И се сеќавам дека сме научиле заградата нотација. Затоа, ако тоа се чуваат во серијата "ОК", а потоа ако се рече на заградата 0, тоа би укажуваат на капитал З. писмото И ако се рече на заградата 1, дека ќе укажуваат на првите мали букви а, и така натаму до 5 на заградата, кои ќе укажуваат на последната една. Сега се сеќавам дека должина на стрингот е 6, но индексите во низа се Од 0 до 5, Ш, преку кои ќе траат. Па ова сега се вклопува во поголема слика на меморијата на вашиот компјутер, вашата RAM меморија. Па некаде на програмата, кои сте водење на вашиот компјутер треба да се сети Zamyla некаде во меморијата. Па можам да имам волонтер? Да ве молам. И она што е вашето име? Декан: Дин. ROB BOWDEN: Дин? Убаво да ви се исполнат, Дин. Па дојди и ние ќе треба да сте се подготви на нашата убава Вешта изгледот на меморија. Сега сакам да мислам на меморија како една долга лента на бајти, но само за прикажување ние ќе само не лево кон десно, врвот до дното. ВО РЕД? Па јас ќе одам да се покаже program-- Getstrings.c. И така цел на оваа програма е прават бара четири жици од страна на корисникот со GetString а потоа печатење што и да влезе во првата низа беше. Ние сме на неа две преку четири. ВО РЕД. Па овде now-- кога Јас прво барање S1. Па вие сте на компјутер. А вие се за спроведување GetString. Така што ќе ја побарате стринг од мене, и јас се каже, во ред, Дин. Даде низа "декан". Значи некаде во меморија треба да се запамети "Дин". Така што пишуваат во меморијата некаде. Совршен. ВО РЕД. Така, сега имаме S2. И S2 ќе биде барање да GetString. Па јас ќе одам да внесете низа. Одам да влезат во "Хана". Па внесете "Хана" некаде во меморијата. Је. A-H. Добро, па сега S3. И тоа се случува да биде уште еден побара да GetString. И така сега внесете "Марија". Во ред. И тогаш има еден последен барање да GetString, S4. Значи, јас не знам. Како за ние одиме со antidisestablishmentarianism. Па внесете тој во меморијата. Је. Па само да се направи ", Роб." ВО РЕД. Па сега explain-- зошто те оставам на овие простори? Зошто се прави ова празно простор тука, тука и тука? Да. Значи забележите кога ќе отидам да се печати s1-- па ако ние имаше "Хана" трчање па се до "Дин" како да знаеме кога стрингот "Дин" ќе заврши? Па печатење стринг S1 може да има само печатени "DeanHannahMariaRob" ако тоа не имаат поим од кога "Дин", всушност, не завршува. Во ред. Па во меморијата како ние всушност претставуваат овој крај на серијата е со обратна коса црта нула. Па овој простор е токму она што го сакаше. Тоа треба да биде обратна коса црта нула. Ова ќе биде обратна коса црта нула, и тоа ќе биде обратна коса црта нула. И може да имаат прекрасен награда за да се биде идеална волонтер. Земе стрес топче! ВО РЕД. Па овој карактер обратна коса црта нула е како ние се укаже на крајот на стрингот. Тоа е како кога секоја програма сака да се печати низа, тоа е how-- сеќавам научивме функцијата strlen минатата недела? Стринг должина? Тоа е како стринг должина е во состојба да се утврди колку долго стринг е. Тоа само продолжува процесирањето во текот на карактери се додека не најде обратна коса црта нула карактер. Па Важно да се реализира во врска со обратна коса црта нула карактер е тоа е претставена од страна на сите нули бита. Така да се забележи дека ова е посебен од нула карактер. Па на нула карактер, ако се сеќавате во примерот што го даде на крајот на предавања каде што ликовите на сајтот to-- како капитал А карти до 65. Мали букви на карти до 97. Мали б ќе биде 98. Така што бројот 0 мапи to-- јас не знам од врвот на мојата глава. 44 или 45. Некаде во тој регион. Па ликот 0 е вистинскиот број. Но обратна коса црта нула мапи за сите нула битови. Значи има разлика обратна коса црта помеѓу нула, кој ќе го наречеме нултата терминатор. Има разлика помеѓу обратна коса црта нула и карактерот нула. Во ред. Значи зборуваме малку повеќе за жици. Па тогаш што гледаме тука ова е како тоа ќе бидат поставени во меморијата. Значи оваа идеја на жици како секвенца на characters-- па официјалната компјутер sciency термин за низа е низа. Па ние би го нарекол низа низа на карактери. А всушност постојат други податоци видови кои може да се направи надвор од низи. Па да ги мотивира ова, да погледнеме еден пример. Ние ќе го наречеме ages0.c јас ќе копирајте го и ставете нашата дефиниција. ВО РЕД. Значи во оваа програма што ние сакате да го направите е да го имате на возраст три студенти во курсот. Па знаеме на int age-- и сега ќе одам да се каже 0. Па можеби ќе сакате да се каже age1, но за целите ќе видиме многу наскоро, Ќе го кажам int age0 еднаква GetInt. Така што истиот повик до GetInt дека ние сме биле користење јас не се случи да биде се прашува велејќи: "дај ми возраст." Но само да го бара тоа. И age1 еднаква GetInt. И int age2 еднаква GetInt. Значи, повторно, и тројца студенти, но на крајот на променливата индекси се age0 преку age2. ВО РЕД. Значи оваа програма ќе стори се што сакаме со age0, age1 и age2, но оваа програма на крајот работи за три студенти. ВО РЕД. Па сега што ако сакам четворица студенти? Па, јас ќе одам да мора да се вратат во мојот код, промена на коментар, и сега имаме на int age3 еднаква GetInt. ВО РЕД. Значи, кој го гледа проблемот тука? Што е проблемот со овој вид на подесување? Је. Је. Значи, ние сме создавање на променлива за секој ученик. Сега дека работи, но во крајна линија, што ако јас сега каже, "Сакам да го имате на возраст од осум ученици или 16 студенти или сепак многу студенти на стотиците студенти во CS50 или илјадници студенти на кампусот или на милијарди луѓе во светот? Па на крајот тоа не е одржлива. Секое време ви се види себе си се копира и вметнување код, како таков, обично треба да се чувствуваат дека постои подобар начин. Значи ова е местото каде што ќе се воведат декларација низа. Па кога ќе се изјаснат за низа, тоа е она што на општ формат се случува да изгледа. Ние ќе треба да се каже на типот. и тогаш ние ќе треба да даде името на таа низа, исто како што ние се дефинира секоја дадена променлива. А потоа конечно ги користиме овој држач нотација повторно но во поинаков контекст од како бевме користење на тоа порано. Па еве ова изгледа како нормален променлива изјава дека сме виделе. Значи ние сме виделе int x точка-запирка пред. Па сега ние може да се види нешто како int x 5 загради. И ставање на оваа идеја во Програма GetInt дека ние have-- за да можеме да се имплементира ова во ист начин. Да речеме дека во CS ние се стремиме да се користи n како што бројот на нешто. Па еве ние ќе треба да сместат четворица студенти. И сега можеме да кажеме int возраст заградата не n-- сосема го добие yet-- да се изјаснат за низа на четворица студенти. Па, како тоа ќе изгледа во меморијата ќе биде слично на ова. Ја избришете оваа. И ние ќе треба да имаат каде во memory-- јас ќе ги ставам ова, таму горе. Значи некаде во меморијата. Еден два три четири. Имаме четири цели броеви по ред за оваа низа од четири цели броеви. Значи, во моментов, што е големина на една од овие кутии? Је. Тоа е четири бајти. Тоа е 32 бита. Па сега ова е различно од низата кои ги видовме претходно, на низата од карактери. Во низа секоја кутија беше само еден бајт, затоа што карактер е само еден бајт. Но со низа на цели броеви, секој кутија мора да биде четири бајти, со цел за да ги собере на целиот број. Значи ова е она низа четири ints ќе изгледа. А потоа назад до код. Сега сакаме да всушност продавница цели броеви во таа низа. Па сега тоа е многу, многу, многу заеднички модел кој во еден момент стане мускулна меморија. Па int i изнесува 0. Јас помалку од n. Јас плус плус. Возраст заградата јас еднаква GetInt. Па ова за телефонска линија, овој формат, што треба да се користи за да се добие многу. Значи ова е генерално како ќе ги iterate во текот на речиси секој низа. Сега се забележи овој вид на објаснува зошто од самиот почеток немавме за петелки случува за int i е еднакво на 1, i помалку од или еднакво на 10. Причината е во тоа почнувајќи од нула прави оваа работа добро со низи. Па низи се нула индексирани. Ако оваа низа е со должина од 4, индексите се од 0 до 3. Па во текот на првата повторување на овој за телефонска линија ние ќе треба да биде поставување на возраст заградата 0 еднаква на повикот да GetInt. Значи она што се случи за да влезат на тастатурата. Во вториот помине, ние сме поставување age1 еднаква GetInt. И трет обид, age2. Конечниот помине age3. Значи, ако во првото поминување на јамка Влегувам во број 4 на тастатура, потоа ќе се вметне 4 тука. Ако на вториот помине влегувам 50, ние ќе се стави 50 тука. На третиот пас би можел внеси негативни 1, негативни 1, а потоа конечно да сум влезат 0-- и сега се сеќавам дека тоа е индекс три. Откако ќе јамка назад, i е ќе треба да се зголемува до 4. i веќе не е помал од n, што е 4. А ние се пробие на јамка. Па што ќе биде во ред со оваа? [Беззвучен]? ПУБЛИКАТА: [Беззвучен] Да. Па низа има само четири места, што значи како индекси од 0 до 3. Значи, ако ова е случај, јас не би преземе во врска со вредноста 4 во некоја точка. возраст заградата 4 ќе биде поставување она што се случува да се биде овде на она што го имам да кажам, внесете 6. Тоа ќе биде поставување на ова до 6. Но, ние не знаеме што е овде. Ова не е меморија кои ги имале пристап. Значи, ако ви се сеќавам од претходната лекција, тој е печатење на вредностите на Zamyla и во одреден момент ја погоди оваа сегментација вина. Па најверојатно ќе се види сегментација многу грешки колку што имплементираат некои од сетовите проблем. Но, ова е еден од начините на кои можете да се судрите со сегментација грешка, кога ќе почнете да пристапуваат меморија на начини кои не би требало да биде. Па ние не имаат пристап до оваа локација и тоа е грешка. Значи ова е подобро. Сега има уште еден мал проблем со овој код. И тоа е во основа, дека ние сме уште се заглавени на четворица студенти. Сега, ако сакам да се користи и осум студенти, ОК. Тоа не е толку голема зделка. Јас може да оди во, промена на коментира, и промена на n. Сега тоа ќе работи со осум студенти. Ако јас ги собере и да се кандидира ова, тоа ќе покаже me-- ќе побара цели броеви за осум студенти и тоа само ќе работат. Но, тоа е помалку од идеален да треба да прекомпајлирате програма секој пат Сакам да се промени на бројот на студенти што сакаат да влезат на возраст за. Па конечниот подобрување на ова, како што ќе видиме here-- сме ќе побара бројот на луѓето. Овде имаме голем број од луѓето во собите или било која возраст луѓето во просторијата. Но, ние ќе треба да го бара бројот на луѓе во соба од корисникот. Значи ова е истата да не се прави додека јамка дека не сум видел. Тоа е точно ист не-додека јамка дека може да се надгледува спроведувањето на снимањето проблем. Така што додека тие се внесување на n помалку од 1, па има мора да биде во Најмалку едно лице во соба. Како додека тие се внесување на n помалку од 1, тогаш ние ќе треба да се задржи прашува повторно. Ве молиме внесете го бројот на луѓе во соба. Сега, откако ги имаме на бројот од луѓето во room-- па мислам дека би можеле да влезат се 200 луѓе во оваа соба. Тогаш овде ние ќе треба да дојдат и го прогласи низа на големината на 200. Ние сме прогласување низа што е доволно голема за да се одржи 200 возрасти. Слегува, тоа е за телефонска линија дека ќе добиете многу се користи за. Па процесирањето над оваа низа, доделување на секоја локација во таа низа цел број, и кое конечно тука сме само да се пример за процесирањето над таа низа, а не да доделите вредностите, но за да пристапите вредности. Па овде гледаме дека ние велат, една година од сега, лице% јас ќе бидам% i години, каде што првиот% i е i плус 1. Па јас овој индекс е променлива. А вториот% i се случува да се биде вредност се чуваат во вековите низа плус 1. Така што ова е само плус 1 затоа што сме saying-- ова плус 1, возрасти i плус 1. Ова плус 1 е само затоа што сме велејќи, една година од сега на лицето ќе биде оваа возраст. Значи, зошто е ова јас плус 1? Зошто имаме плус 1 таму? Је. Да. Па се сеќавам низи се нула индексирани. Значи, ако ние сме печатење ова за некој да се само да читате на излез, тогаш најверојатно тие сакаат да видат нешто како еден човек, човек број еден, ќе биде 20 години. Лице број два ќе биде 15 години. Тие не би сакале да се види лицето бројот нула е 15 години. Па составувањето на оваа и само гледајќи го она што тоа изгледа like-- Направете некој простор. Направи возрасти компајлира. Водење возрасти. Гледаме бројот на луѓе во соба. Па јас ќе велат дека постојат три лица во соба. Возраста на лицето број еден, да речеме 15, 20, 25. И сега ќе кажам за една година сега тие ќе бидат 16, 21, 26. Ајде да видиме дека ова работи со еден n дека не е еднакво на 3. Значи, ако јас кажам бројот на луѓе е 5, еден, два, три, два, еден, една година од сега тие ќе бидат во две, три, четири, три, две години. Па можев да се само како лесно да се н биде 10,000. Јас сега ќе се наоѓа овде за доста време влегуваат возрасти, но тоа функционира. Па сега во меморијата некаде ние имаат низа на големината 10.000, па на крајот 40,000 бајти, бидејќи постојат четири бајти за секоја од тие цели броеви. Значи има низа на Големина на 10.000 каде што можеме чување на возраст меѓу овие 10.000 луѓе. Во ред. Прашања во врска со која било од ова? Је. Што ако ви даде негативен број? Ајде да видиме што се случува. Значи во овој конкретен број case-- на луѓе во соба, негативна. Го отфрли тоа, бидејќи тука ние се случи што треба да се ракување со фактот дека ако n е помалку од еден ние ќе треба да побара повторно. Ако се обидете да се изјаснат за низа на негативни големина, тоа обично не функционира. Па ајде да се обидеме. Ајде да се игнорира она што вредноста што тие влез за н и само велат int возраст негативна. Ајде да видиме дали тоа дури и ги собира. Не сум сигурен. Бр Толку векови се декларира како Низа со негативна големина. Па однапред го препознава низа може да не да биде на негативни големината и ја отфрла. Сега, ако не се справи со ова не-додека јамка правилно, ако ние не ги проверувала ако n е помалку од 1-- ајде да кажеме само немав ова на сите и наместо тоа, ние само го имате цел број. Без разлика на она што е цел број, ние прогласи низа на таа големина. Па компајлерот не може можеби сега се жалат. Ако јас се компајлира this-- така што не може да се жалат, бидејќи не може да знаат дека сум ќе влезе негативен број, која може да биде валиден. За сите тоа го знае, би можел внесете позитивен број, кој е совршено валидни. Значи Претпоставувам, ако влезам негативни 1 луѓе во просторијата, сегментација на вина. Па во ред. Па ајде да го додадете ова назад само го задржи она што првично беше. Така бидете возрасти. Сега ако сакам да се обиде негативни age-- па ајде велат дека постојат пет лица во соба. Возраста на лицето број еден е негативен 4, три лице е нула, лице three-- ОК. Па еве, една година од сега, лице број еден ќе биде негативен 3 години. Па веројатно не дава никаква смисла. Но, тоа е само затоа што гледа во кодот на сите што го правиме бара GetInt. Сега, ако ги имавме претходните GetPositiveInt функција или ние штотуку едноставно направи тоа вид на истите додека јамка таму долу, тогаш тоа ќе работи совршено добро. Но во конкретниов случај, ние едноставно не се случи да биде ракување со негативни вредности. Било други прашања за низи? ВО РЕД. Па ние сега не сум видел низи. А ние се случува да треба да се користи ова за аргументите на командната линија. Па во проблем во собата two-- Знам дека многу од вас можеби се 'уште се работи на проблемот сет еден, но проблемот се постави два доаѓа. Проблем во собата во две, си оди за да се треба да се занимаваат со стрингови, низи, и аргументите на командната линија. Значи она што се аргументи на командната линија? Сега, можете да ја видите овде долу на малку закачка за токму она што е ќе се случува. Гледаме int главната, Inc argc, стринг argv загради. Значи прво нека се обиде да го протолкува она што се обидува да се каже. Сега, ОК. Па во командната линија треба да биде се користи за добивање на некои од овие команди сега, и веројатно сте се кандидира cd во терминал порано. Па ако се каже CD pset1, знаеш дека треба да се менува во директориумот pset1. Сега се забележи дека никогаш не сте напишана програма како тоа порано. Секоја програма што сте го напишале, можете да се кандидира, да речеме, точка црта Марио, дот црта алчни, а потоа Може да ве прашува за влез. Сега, тоа не е она што промена директориум прави. Кога ќе ја стартувате CD, тоа не потоа се каже, која папка сакате да се CD-то во? Наместо тоа, може само да се каже, CD pset1, и тоа само оди во директориумот pset1. Слично на тоа, така имаме и други примери. направи здраво. Кога ќе ја стартувате направи, тоа не тогаш да речеме, програма која би сакале да се направи? Можете само да се каже, на командната линија направи здраво. Потег е уште еден пример. Овој начин се оди mario.c поднесе до еден директориум. Така, сега знаете со овој пример ние сме навистина поминува два аргументи. Има mario.c како прв аргумент, и точка точка е вториот аргумент. А потоа кога ќе ја стартувате направи, можете види дека навистина долго команда line-- дека навистина долго команда печатени во наредбодавната линија. Така што долго command-- ова е само краток дел од неа, но сега имаме три аргументите на командната линија. Dot цртичка нула, здраво, а hello.c. Значи овие се за командната линија аргументи, аргументи дека сте донесување на командната линија, така што тоа не мора да биде побарано кога ќе ја стартувате програмата. Тоа ќе биде фрустрирачки, ако кога ќе истрча ѕвекот тоа го рече, "Добро, која што program-- датотека ви составувањето? Hello.c. Што ќе ти е знамиња сакале да влезат? цртичка о. Што би сакал на датотеката што треба да се вика? здраво. Не, вие само се кандидира ѕвекот цртичка о здраво hello.c. Така бара назад во ова. Сега argc-- argc е важен аргумент. Тоа е бројот на командната линија аргументи влегле во командната линија. Па, технички argv-- с претставува вектор, што во основа значи низа. Но, можете да го игнорираат тоа. Argv-- имаме низа argv, па низа argv загради. Значи ова е уште една форма на Држачи не сте го виделе досега. Па видовме држач нотација кога рековме, како, стринг е еднаква Zamyla. на заградата 0 пристапи на З. карактер Исто така видовме загради кога рековме int возраст заградата 5. Кои објавиле низа на големина 5. Па тука е верзија на загради не сме го виделе досега. Така овој вид на низа argv дека ќе биде целосно запознаен дека тоа само ќе биде стринг. Сега загради означуваат дека ова е низа. Па низа argv загради средства дека argv е низа од жици. Сега технички низа е низа од карактери. Па ова сега е низа на низа од карактери. Но, тоа е многу полесно да се размислува за ова како само низа од жици. Па зошто би можело да биде од голема заграда е празен? Како, зошто да не може да се каже, Држач за 5, држач n? Је. Је. Ние не знаеме колку влезови таму се случува да биде. Значи, ако се погледне на ѕвекот пример, велиме ѕвекот цртичка о здраво hello.c. Во конкретниов случај, нема да се случи да биде на три аргументи на командната линија. И така на brackets-- ќе видиме во една секунда не би било три. Тоа технички ќе биде четири. Но, загради, ние би да речеме, постојат три. Но сега ако ние погледна потег mario.c точка точка, заградите ние би сакале да се стави две во нив. И постојат голем број на команди кои имаат променлив број на командната линија аргументи. Па што оваа верзија на заградата нотација укажува е дека argv е низа од жици. Но, ние не се знае колку конците се во таа низа. И како ние тогаш знаете како многу жици се во низата? Тоа е целата поента argc. argc ни кажува колку долго argv е. Така последно нешто да се задржи во ум е дека, технички, самата команда се брои како една на аргументите на командната линија. CD pset1 така, постојат две аргументите на командната линија. Програмата во себе, ЦД, а потоа вистинските аргументи дел од неа, pset1. Секоја програма која што сум напишал досега имаше една од командната линија argument-- точка намалување на Марио. Тоа е единствениот аргумент за командната линија. Па сега се гледа во ѕвекот цртичка о здраво hello.c. Значи она што е argc? 4. Па argc е 4. Ѕвекот, па argv заградата 0 е ѕвекот. argv заградата 1 е цртичка 0. argv Држач 2 е здраво, а argv заградата 3 е hello.c. Добро, така прашања во врска со ова, а потоа ние ќе погледнеме некои програмски примери. ВО РЕД. Значи, ние ќе ги разгледаме во hello3.c. Па ова треба да биде запознаен од еден од првите c примери имавме каде што само би рекол, здраво светот, но сега тоа е повеќе воопшто. Па еве сме велејќи здраво % s обратна коса црта n 1 argv заградата. Notice-- па се до оваа точка, ова е она што ми Шема датотека има изгледала. Имав int главната (празно), а потоа јас ќе направи нешто во главната функција. Сега, наместо тоа, откако ќе почне да се занимаваат со аргументи на командната линија, ние треба да се наведе поинаква форма на главната. Па гледајќи hello3 повторно, главната се случува да се земе два аргументи now-- int argc, бројот на аргументи на командната линија, и гудачки argv загради, вистинската стрингови влегле во командната линија. Па јас ќе одам да го промени тоа шаблон за да ја одрази на тој факт. Сега кога и да се напише програма, ако не треба да се земе било кој од командната линија аргументи, тогаш само користење int главната (празно). Но, сега кога сте пишување програми аргумент за командната линија, која ви се случува да се прави за проблемот постави two-- па сега дека сте водење програми кои треба да се аргументите на командната линија, треба да имаат главна на оваа форма. Па here-- ова е голема употреба на аргументите на командната линија. Па печатење argv 1. OK, па ајде да ги собере и да ја извршите оваа програма. Направи hello3. Компајлира. Dot црта hello3. И да речеме, "Роб." Здраво Роб. Ако кажам, "Здраво Марија," Здраво Марија. Здраво Марија. Хана уште вели: "Здраво Марија ", бидејќи јас не сум прави ништо со нашите argv 2. Argv 2 сега ќе биде "Хана". Argc ќе биде 3. Што ако јас го направи ова? Толку здраво за ништовни. Тој кратко се осврна и на фактот дека, технички, GetString би можеле да се врати нула, но ние ќе се добие многу повеќе во она null всушност е. Но, тоа се земе како прашање на Фактот што не е генерално лоша. Сме направиле нешто лошо ако тоа е печатење на "здраво за ништовни." А причината што го направивме нешто погрешно is-- добро, кога налетав точка црта hello3, argc е 1. Па тоа значи дека должината на argv е 1. Ако низа е со должина од 1, единствениот валиден индекс е нула. И така тука argv 1 е надвор опсегот на оваа низа. Е сличен на пред, кога се обидов за чување на 6 надвор од крајот на низата. Па јас сум се обидува да пристапи нешто надвор од пребројувањата на argv, и ние сме добивање на нула. Толку подобра верзија на ова, подобрување, е експлицитно проверка argc. Па ако argc еднакво на 2, што значи дека ние се стрча нешто како точка црта hello3 Роб. И тоа ќе печати "hello Роб." Ако не е еднакво argc 2, тогаш тоа е само ќе да се игнорира она што ќе го стави на аргументите на командната линија како аргументи на командната линија. Или ако не се стави било на сите, тоа е само ќе го игнорираме тоа што да и каже, "hello вас." Па составувањето на оваа. Направи hello4. И водење hello4. Дека на овој начин се извршува, она што треба да биде отпечатена? "Здраво вас." Здраво на вас. Што е со hello4 Роб? "Здраво Роб." И, конечно, здраво Роб Марија е само "hello тебе" повторно, затоа што навистина не влезе нешто што се очекуваше. Што ја внесовте повеќе имиња отколку што може да се справи, па тоа само да се defaulted Здраво сте однесување. Така прашања во врска со ова? Или аргументи на командната линија? ОК, значи преземање на ум на еден уште неколку примери за користење командната линија arguments-- прв имаме argv цртичка 1 точка в. Па на коментари подарите она оваа програма треба да се прави. Но информации now-- ова за телефонска линија, ова се совпаѓа со точниот модел Јас го кажувам порано. Ние едноставно се случи да биде со користење на argc наместо на n. Сега argc е навистина n. Тоа е должината на argv низа. Па се процесирањето над argv Низа printf-ИНГ секоја argv вредност. Значи, ако јас се направи ова. Направи argv 1. Се компајлира. Dot црта argv 1. Само трчање ова, отпечатоци dot коса црта argv 1 бидејќи тоа беше само за командната линија argument-- името на програмата. Секогаш ќе има во least-- argc не може да биде пократко од една, бидејќи секогаш ќе барем да биде името на програмата да се кандидира. Па argv 1 Роб ќе печати argv 1 а потоа на нова линија "Роб." Така што во првата итерација на овој циклус, i е 0. Argv 0 е името на програмата. Dot црта argv 1. А потоа argv 1 е мојот прв аргументите на командната линија, што е Роб. Во овој момент, ние сме еднакви argc. Ние се пробие на јамка и сме подготвени. Па тоа ќе работи за произволно број на аргументи на командната линија. Забележите тоа отпечатоци argv 0, argv 1, argv 2, argv 3, argv 4. И не постои argv 5. argc е еднаков на 5. Па во argc-- з еднаква на 5, ние се пробие на јамка. ВО РЕД. Толку прашања на кои пред да се погледне во повеќе комплексна пример? Па argv 2. Во ред. Значи, ние сме сè уште печатење аргументите на командната линија. Но сега имаме известување вгнезден за телефонска линија. Значи, што е тоа го прават? Па првиот циклус се прави токму она што беше порано. Ние сме се уште во текот looping секој аргумент за командната линија, но сега оваа втора loop-- имаме исто така, се гледа вакво нешто. Кога тој беше процесирањето над Zamyla печатење на Z-A-M-Y-L-A. Па овој втор циклус за int j е еднаква 0, n е еднакво на strlen argv заградата јас. Па ајде прво се размислува за the-- ајде да одиме преку. Ајде да размислиме што компјутерот ќе направите ако налетав на оваа програма, како само dot црта argv цртичка 2. Значи, ако јас се кандидираше овој законик, argc ќе биде еднаква на 1. И гудачки argv-- има само ќе биде еден индекс во argv, и кој ќе биде еднаков на dot црта argv 2-- името на програмата. Добро, па сега јас еднакво на 0, јас помалку од 1, јас плус плус за int j еднакво на 0, n е еднакво на strlen argv заградата 0, така што во првата итерација на овој циклус. argv заградата 0 е точка црта argv 2. Значи она што е должината на стрингот? Добро, точка црта А-Р-О-В цртичка 2. Па strlen на која ќе биде 8. Па ј е еднакво на 0, n е еднакво на 8. Се додека j е помалку од 8, ѕ ++. А со тоа и ние ќе треба да биде печатење на еден лик, кој е argv заградата јас заградата ѕ. Така што само јас е нула. Ние се уште имаат само една аргументите на командната линија. Со тоа што првата итерација на за телефонска линија, ние сме ќе биде печатење argv заградата 0 заградата 0. А потоа ѕ ќе прираст. И ние ќе се печат argv заградата 0 заградата 1. А потоа argv заградата 0 Држач 2. Значи ова е нашата прва средба на мулти-димензионална низа. Се сеќавам порано дека реков дека argv е технички низа на низи од карактери. Значи тука ако кажам нешто како Стринг а еднакво argv заградата јас, и тогаш реков, на заградата ѕ, овој ќе биде остварување на истото. Сега, што сум го видел на заградата ѕ порано. Тоа е само да пристапите на J-ти карактер на овој стринг. Значи со ова, ние сме добивање на J-ти карактерот на i-тиот argv. Значи она што треба ова во крајна линија излез? Направи argv 2. Се компајлира. Dot црта argv 2. "Роб Марија Ана" и ни даде некои соба. Така можеме да видиме дека ова е Ставање дот на посебна линија и коса црта на посебна линија и на посебна линија. Тоа е печатење на секоја индивидуален карактер на секој аргумент командната линија. А потоа и во меѓу нив, затоа што на оваа нова линија ние сме печатење овде долу, во меѓу нив тоа ќе печати нова линија. Значи ова е слично на претходна argv цртичка 1, кој печатени секој аргумент за командната линија, но сега сме печатење аргументите на командната линија а потоа и процесирањето низ секоја карактер на секој аргумент за командната линија за да се добие овој резултат. ВО РЕД? Така прашања во врска со ова? Една работа е да се напомене е дека командната линија arguments-- па тие се одделени со празни места како вие природно би се очекувало да бидат. Па низа може да има празни места во неа. Тоа не е супер важно, но ако јас сакаше аргумент третиот командната линија да има простор во него, тогаш јас Може да се каже нешто како ова. ВО РЕД? Па ова сега се уште има само три командната линија arguments-- и 4. Dot црта argv алинеја 2, Роб, Марија, и Хана Блумберг. ВО РЕД. Прашања во врска со ова? Тука е ништо посебно за просторот карактер. Тоа едноставно се случува да биде што командната линија третира просторот карактер како можете одделите секој аргумент. Во ред. Па тогаш проблем во собата two-- си оди за да биде гледа во тајност-клуч криптографија. Така, слична на онаа пример видовме од Божиќна приказна, ви се случува да се применуваат некои алгоритми, кои, со оглед на порака, ви се случува да бидете во можност за да го криптирате пораката дека само некој со таа тајна клуч, со што декодер прстен, треба да бидат способни да се дешифрирате. Така што е стандард издание. Си оди за да се надгледува спроведувањето на две различни верзии. Ако се случи да ја погледнете на хакерите edition-- сега, ние ќе треба да се даде ви низа вака, што претставува шифрирана лозинка. Така што вашата цел е да дознаам она што е декриптира лозинка. Сега ова е, всушност, како лозинки се чуваат во голем број на компјутери, и тоа само продавниците оваа случаен низа од карактери. Ќе мора да дознаам како да го добие од овој случаен низа од знаци на она што беше оригиналниот лозинка. И на крај, после ова проблем во собата, да треба да биде во можност да се разбере што значи тоа. Така ќе научат како да се дешифрирате овој вид на случаен стринг. Слично на тоа, ако се сеќавате од недела 0, можеби сте виделе овој URL. И треба да бидете во можност да се декриптирање тоа на крајот. Вие не може да биде среќен кога ќе декриптирање и кликнете на линкот. Во ред. Тоа е тоа за денес. Така што гледате следната недела! [ЕЛЕКТРОНСКИ музички]