[MUSIC PLAYING] DAVID Malan: Bütün hüququ. Bu CS50 və bu Həftə 2 sonu. Mən ola bilməz çox təəssüf edirəm orada bütün gün sizinlə, lakin çox yaxşı əlində istəyirik. Mənə təqdim izin ver CS50 öz Rob Bowden. Rob Bowden: Əlbəttə, onda biz əslində əyləncə etmək lazımdır o bizə bir şaquli göndərdi video və bu göstərir. [Video playback] [MUSIC PLAYING] [Izi] -Bu Video vermədi bu şəkildə baxmaq lazımdır. Bu qarşısı bilərdi. Heç bir şaquli video söyləyin. -Şaquli Videos zaman baş Sizin kamera yanlış yol saxlayın. Sizin video sona çatacaq up crap kimi axtarır. - [Xortultu] Asılılığı daha çox insanların, var hər gün şaquli video edilməsi üçün. Bu çat və ya heç bir şey deyil, lakin hələ də həqiqətən pis. Iki müxtəlif növ var VVS dərdli insanlar. Birinci qrup alır videos onlar şəkillər kimi vur. Onlar hər hansı bir zərər demək deyil. Onlar yalnız başa düşmürlər ki, Bir şəkil çevirmək bilər, Siz, həqiqətən, bir video çevirmək edə bilməz. [CRASH] - [Monkey səslənir] -Bu Digər qrup insanlar kim [BLEEP] vermir. -Şaquli Video Syndrome təhlükəlidir. Motion şəkillər var həmişə üfüqi olmuşdur. Televiziyalarda üfüqi var. Kompüter ekranlarında üfüqi var. Xalq gözləri üfüqi var. Biz inşa deyil şaquli video. Mən şaquli video sevirəm. -Nobody Əhəmiyyət verir. -Əgər Bu problem üzrə kontrolsuz, siz də sol Dörd video göstərən başlayacaq bir dəfə yalnız bant genişliyi saxlamaq üçün. -Letterboxed Şaquli videos ki poçt markasının ölçüsü. -Və Hər yerdə yayılacaq. Movie ekranlar var həmişə üfüqi olmuşdur. Şaquli videos olmaq qəbul, kinoteatr hündür və cılız olmalıdır. -Və Kino və teatrlar bütün olardı yıxılıb yenidən almaq lazımdır. Və zaman onlar yenidən inşa edildi, Mila Kunis köhnə və çirkin olardı. -Quşlar Onlara daxil qəza və öləcək. -We'll Bütün sərt almaq ararken boyunlarına. -Və Heç bir oturmaq olacaq ön sıra daha. George Lucas yenidən azad edəcək Star Wars cılız nəşr again--. -Mən Demək həqiqətən edə heç vaxt Mən demək istəyirdim hekayə. Bu, mənim üçün böyük bir şans idi yeni texnologiya ilə təcrübə. Bir qaxac -You're. Bir mobil cihaz üçün istifadə olunur -Hər vaxt video, temptation var. Just xeyr deyirik. George Lucas xeyr deyirik. Köhnə Mila Kunis xeyr deyirik. Heç bir şaquli video söyləyin. Əgər kimsə bunu görmək əgər -Və, demək "Əgər doğru dummy atəş deyilik!" [MUSIC PLAYING] [END playback] [Alqış] [AUDIO OUT] Rob Bowden: Sadə Kriptoqrafiya forması, olan əsasən şifreleme edir gizli mesajlar və parol çözme. Belə ki, burada biz bir çox sadə oyuncaq var. Və fikir xarici ring edir daxili ring ətrafında qaytarır. Və mən zoom bəlkə görə bilərsiniz , bu görmək çətindir that--. Lakin, kimi, sayı 1 var yaxşı ki, köçürülüb. sayı 1 məktub xəritələr Məktub X, 2 saylı xəritələr J. çətin İnanılmaz irəli keçmək deyil. Letter 2 J. xəritələr 3 Beləliklə, D. xəritələr bu halqa ilə siz verə bilər Kimsə bir mesaj 1, 2, 3. Nədənsə siz onlara XJD demək istəyirəm. Amma onlara verə bilər nömrələri bəzi mesaj, və onlar bu üzük kimi uzun kimi, onlar Siz demək çalışdığınız nə decrypt bilər. Belə ki, görmüşəm bilər bu Kriptoqrafiya xüsusi nümunə əvvəl Milad mövsümü ətrafında əgər A Christmas Story seyr etdik. Siz görməmişəm varsa əvvəl, sonra yalnız sanki at TBS yandırmaq Milad arifesi heç bir zaman, onlar yalnız geri geri göstərmək çünki bütün gün geri geri geri. Və müvafiq video bu. [Video playback] Bütün və çeşitli məlum olun Ralph Parker qərara ki, Little üzvü təyin Yetim Annie Secret Circle və bütün fərqlənmə hüququna malikdir və faydaları ona baş. Little Yetim Annie imzalayıb. Mürəkkəblə Pierre Andre imzalanmış! Onur və faydaları Artıq doqquz yaşında! [Radio böyle] On-gəlir. Bunun ilə əldə edək. Mən bütün caz ehtiyac yoxdur qaçaqmalçıları və quldurları haqqında. Ilə sabah gecə dinlə yekun macəra Black Pirate gəmi. İndi bunun üçün vaxt Annie gizli mesaj Secret Circle siz üzvləri üçün. Uşaq yalnız üzvləri saxla Annie Secret Circle Annie gizli mesaj deşifre bilər. Unutmayın, Annie siz asılı olaraq. B2 üçün sancaqlar seçin. Burada mesaj. 12. 11. 2. -Mən Ilk gizli görüş edirəm. -25. 14. 11. 18. 16. -Oh, Pierre böyük səs axşam edir. Hesab edirəm ki, axşam deyə bilər Mesaj həqiqətən əhəmiyyətli idi. -3. 25. Ki, Annie özü bir mesaj var. Hər kəs demək deyil, unutmayın. -Beş Saniyə sonra, mən yalnız deyiləm evdə otaq olduğu doqquz bir oğlan gizlilik və decode oturmaq bilər. Aha! B! Mən növbəti getdi. E. ilk sözü "ola" dir. S. İndi daha asan gəlirdi. U. 25. Ki, R. var Hadi haqqında, Ralphie! I Gotta Go etdik! Sağ aşağı ola -I'll, Ma! Gee vızıltı. Nə üçün əmin olun - T. O. "üçün əmin olun" Little Yetim nə idi Annie demək çalışır? Nə əmin olun? -Randy Getmək üçün var! Siz çıxmaq edin olacaq? -Bütün Sağ, ana! Mən doğru olacaq! Mən indi daha yaxın əldə edilmişdir. gərginlik dəhşətli idi. Bu nə idi? planetin taleyi balansında asmaq bilər! -Ralphie, Randy getmək üçün var! Yüksək səslə ağlayaraq üçün doğru ola -I'll! Demək olar ki, var! Mənim barmaqları uçdu. Mənim mind bir polad tələ idi. Hər pore vibrasiyaya. Demək olar ki, aydın idi! Bəli. Bəli. Bəli. Bəli. Sizin Ovaltine içmək üçün əmin olun. Ovaltine? A crummy kommersiya? Şərəfsiz. [END playback] Rob Bowden: Belə ki, necə Ovaltine kriptoqrafiya ilə bağlıdır. Əsasən CS50 yalnız reklam Ovaltine, belə ki, biz bilər Ovaltine üçün crummy kommersiya olmaq. Oldu. Belə ki, indi faktiki informatika. Bazar ertəsi saxla biz off sol strings daxil dərin dalış. Beləliklə, biz ilə məşğul olan string "Zamyla." Və biz tanınması edildi biz müalicə edə bilər ki, Simvol bir ardıcıllıqla kimi "Zamyla". Və biz öyrəndik ki, unutmayın bracket notation. Bu saxlanılır əgər, belə ki, sonra bir simli "nin," dedik əgər s bracket 0, ki, ki, məktub kapital Z. göstərir Və biz s bracket 1, bildirib ki, əgər ilk kiçik bir göstərir ki, və s s bracket 5 qədər bu da ötən a göstərir ki. İndi xatırlayıram bu simli uzunluğu, 6 lakin simli daxil göstəriciləri var 0 5 vasitəsilə vasitəsilə Z davam. Belə ki, bu, indi daha böyük şəkil uyğun Sizin kompüter yaddaş, RAM. Belə ki, haradasa proqramı Sizin kompüter çalıştırıyorsanız ZAMYLA xatırlamaq lazımdır yaddaş haradasa. Mən bir könüllü ola bilər? Bəli, zəhmət olmasa. Və adı nədir? DEAN: Dean. Rob Bowden: Dean? , Dean görüşmək Nice. Belə ki, buraya gəlmək, və biz sizə çəkmək olacaq yaddaş bizim gözəl uykusuz layout. İndi yaddaş düşünmək istəyirəm bayt uzun zolaq kimi, ancaq ekran məqsədlər üçün biz lazımdır yalnız alt sağ üst sol yoxdur. OLDU? Mən bir göstərmək üçün gedirəm Getstrings.c program--. Və belə ki, bütün bu proqram bunu dörd strings tələb edir ilə istifadəçi GetString və sonra çap nə ki, ilk simli daxil idi. Biz dörd vasitəsilə iki məhəl edirik. OLDU. Belə ki, burada, indi zaman Mən ilk tələbi s1. Belə ki, kompüter var. Və GetString həyata keçiririk. Belə ki, bir simli tələb Mənə və mən OK, Dekanı deyirlər. Simli ver "Dean". Belə ki, haradasa yaddaş siz xatırlamaq lazımdır "Dean". Belə ki, haradasa yaddaş daxil yazmaq. Mükəmməldir. OLDU. Belə ki, indi biz S2 var. Və s2 olacaq GetString sorğu. Mən bir simli daxil gedirəm. Mən daxil gedirəm "Hannah". Belə ki, haradasa yaddaş "Hannah" daxil edin. Bəli. A-H. OK, belə ki, indi s3. Və başqa olacaq GetString tələb. Və indi "Maria." Daxil edin Oldu. Və sonra son bir var GetString tələbi, s4. Belə ki, mən bilmirəm. Necə ki, biz ilə getmək haqqında antidisestablishmentarianism. Belə ki, yaddaş daxil edin. Bəli. Belə ki, yalnız "Rob." Nə OLDU. Niyə Belə ki, indi explain-- bu boşluq tərk edirsiniz? Bu boş var Niyə burada, burada və burada yer? Bəli. Mən getmək zaman qeyd əgər belə s1-- çap biz idi "Hannah" çalışan sağ yanında "Dean" biz izlə necə string "Dean" bitir? Belə ki, simli S1 çap ola bilər yalnız "DeanHannahMariaRob" çap hər hansı bir ipucu yoxdur, əgər "Dean" həqiqətən başa bir zaman. Oldu. Belə ki, yaddaş yol biz, həqiqətən, simli bu son təmsil backslash sıfır ilə. Belə ki, bu kosmik biz nə istədiyini dəqiq deyil. Bu backslash sıfır olmalıdır. Bu, bir backslash sıfır olacaq bu bir backslash sıfır olacaq. Və siz bir fantastik mükafat ola bilər mükəmməl könüllü olmaq üçün. Bir stress top almaq! OLDU. Belə ki, bu xarakter backslash sıfır necə bir simli sonunda göstərir. Bu necə zaman hər hansı bir proqram bir simli çap etmək istəyir, öyrəndik xatırlayıram how-- bu strlen funksiyası ötən həftə? String uzunluğu? Bu string uzunluğu edə necə simli necə uzun müəyyən edir. Bu, yalnız iterating saxlayır simvol üzərində tapdığı qədər sıfır xarakter backslash. Əhəmiyyətli olan həyata keçirmək üçün belə backslash sıfır xarakteri haqqında Bu təmsil edir ki, bit bütün sıfır. Belə ki, bu fərqli olduğunu qeyd sıfır xarakteri. Belə ki, sıfır xarakteri, Yadınızdadırsa, əgər Məsələn o sonunda verdi ki, mühazirə simvol xəritəsi harada 65 kapital A xəritələr kimi to--. 97 üçün xəritələr kiçik. Kiçik b 98 olacaq. Belə ki, sayı 0 maps mən deyil to-- mənim baş üst off bilirik. 44 və ya 45. Somewhere ki, regionda. Belə ki, xarakter 0 faktiki sayı. Amma backslash sıfır bütün sıfır bit maps. Belə ki, bir fərq var backslash sıfır arasında, Hansı null terminator zəng edəcəyik. Bir fərq arasında var backslash sıfır və xarakter sıfır. Oldu. Belə ki strings haqqında bir az daha söhbət. Beləliklə, biz bu necə burada bax Bu xatirəsinə salınmış olacaq. Belə ki, bir ardıcıllıqla kimi strings bu fikir simvol rəsmi kompüter belə ardıcıllığı üçün sciency müddətli bir sıra edir. Beləliklə, biz bir simli zəng simvol bir sıra. Və həqiqətən digər məlumatlar var biz həyata serialların edə bilərsiniz növləri. Belə ki, bu motivasiya etmək, nümunə oldu. Biz lazımdır ages0.c zəng edəcəyik surəti və şablon yapışdırıb. OLDU. Bu proqram Belə ki, nə biz etmək istəyirəm yaş qamarlamaq deyil Əlbəttə üç şagird. Beləliklə, biz bilirik int age-- və indi 0 demək gedirəm. Belə ki, age1 demək istəyirəm, lakin bilər məqsədləri üçün biz çox qısa görəcəksiniz, Mən int age0 GetInt bərabərdir demək lazımdır. GetInt eyni zəng belə Biz istifadə etdik ki, isteyen üçün baş deyil "Mənə yaş vermək." deyərək Amma yalnız xahiş edir. Və age1 GetInt bərabərdir. Və int age2 GetInt bərabərdir. Belə ki, daha üç tələbələr, amma nəticədə dəyişən göstəriciləri age2 vasitəsilə age0 var. OLDU. Belə ki, bu proqram nə lazımdırsa edəcəyik biz age0, age1 və age2 ilə istədiyiniz, lakin bu proqram nəticədə üç tələbə üçün çalışır. OLDU. Belə ki, indi mən dörd tələbələr istəyirsinizsə? Bəli, mən geri getmək üçün gedirəm mənim kodu daxil Şərh dəyişdirmək, və indi biz bir int var age3 GetInt bərabərdir. OLDU. Belə ki, kim burada problem görmür? Problem nədir quraşdırma bu növ ilə? Bəli. Bəli. Beləliklə, biz bir yaratmaq edirik Hər bir tələbə üçün dəyişən. İndi işləyir, lakin nəticədə nə İndi əgər Mən yaşına qamarlamaq istəyirəm ", deyə Səkkiz tələbələr və ya 16 şagird və ya, lakin çox tələbələr CS50 yüzlərlə şagird və ya kampüsünde minlərlə şagird və ya dünyanın milyardlarla insan? Belə ki, son nəticədə bu davamlı deyil. Özünüz çıxarmaq görmək istənilən vaxt və bu kimi sovuşdurmaq indeksi, ümumiyyətlə hiss etməlidir daha yaxşı bir yol yoxdur. Biz təqdim harada bu belədir bir sıra bəyanat. Belə ki, bir sıra bəyan edərkən, Bu nə ümumi format kimi baxmaq gedir. Biz növü demək olacaq. sonra biz olacaq ki, serialın adını vermək, yalnız biz hər hansı bir dəyişən müəyyən kimi. Və sonra nəhayət biz istifadə Bu bracket notation yenidən lakin fərqli bir kontekstində necə biz əvvəllər istifadə edilmişdir. Belə ki, burada bu normal kimi görünür biz gördük dəyişən elan. Belə ki, biz əvvəl int x yarı kolon gördüm. Yaxşı indi biz bir şey görə bilərsiniz int x Mötərizədə 5 kimi. Və bu ideya qoyulması Biz yaxşıdır GetInt proqram belə ki, biz həyata keçirə bilər eyni şəkildə bu. Biz istifadə edirlər CS deyirlər bir şey sayı n. Belə ki, burada biz gedirik Dörd tələbə saxlamayın. İndi biz int yaş demək olar bracket olduqca onu yet-- almaq deyil n-- Dörd tələbə bir sıra elan. Belə ki, bu baxmaq necə yaddaş bu oxşar olacaq. Bu sil. Və biz bir yerdə olacaq yaddaş-Mən orada bu qədər qoymaq lazımdır. Belə ki, haradasa yaddaş. Bir, iki, üç, dörd. Biz bir sıra dörd integers var dörd integers bu serialın üçün. Belə ki, hazırda nə bu qutuları bir ölçüsü? Bəli. Bu dörd bytes var. Bu 32 bit var. Belə ki, indi bu fərqli array ki, biz simvol əvvəllər array gördüm. Simli hər qutusu yalnız bir byte idi Bir xarakter yalnız bir byte, çünki. Amma integers bir sıra ilə, hər box üçün dörd bytes olmalıdır bütün tam uyğun. Belə ki, bu nə bir sıra Dörd ints kimi görünür. Və sonra geri kodu. İndi biz, həqiqətən, mağaza istəyirəm ki array daxil integers. Belə ki, indi bu, çox, çox, çox deyil bir nöqtədə olacaq ümumi model əzələ yaddaş olur. Belə ki, i 0 bərabərdir int. i n azdır. i plus plus. Age bracket i GetInt bərabərdir. Belə ki, bu loop üçün, bu format, çox istifadə almaq lazımdır. Belə ki, bu, ümumiyyətlə necə alacağıq demək olar ki, hər hansı bir sıra üzərində təkrarlamaq. İndi bu cür qeyd əvvəldən niyə izah biz loops int üçün gedən üçün yox idi i i az və ya 10 bərabər, 1 bərabərdir. başlayaraq ki, olan səbəb sıfır serialların ilə bu iş edir. Belə ki, seriallarda dizine sıfır var. Bu array uzunluğu 4 varsa, göstəriciləri 3 vasitəsilə 0 var. Ilk vasitəsilə So loop üçün bu iteration biz yaş qəbulu olacaq GetInt zəng bərabər bracket 0. Belə ki, baş nə klaviatura daxil. Ikinci pass, biz istəyirik GetInt üçün age1 bərabər qəbulu. Üçüncü pass, age2. Final pass age3. Loop ilk pass əgər Belə ki, Mən klaviatura sayı 4 daxil edin sonra biz burada bir 4 daxil olacaq. Mən daxil ikinci pass Əgər 50, biz burada bir 50 qoymaq lazımdır. Üçüncü pass Mən bilər daxil 1 Mənfi 1 mənfi, və sonra nəhayət mən 0- daxil edin və İndi bu göstərici üç idi ki, xatırlayıram. Biz loop geri sonra, i var gedən 4 artırılacağını üçün. i artıq 4 n, azdır. Və biz loop çıxmaq. Belə ki, bu ilə yanlış nə olardı? [Işitilemez]? Auditoriya: [işitilemez] Bəli. Belə ki array yalnız dörd yerləri var, olan 3 vasitəsilə indeksləri 0 kimi deməkdir. Bu halda olsaydı, mən belə bir anda dəyəri 4 götürmək. yaş bracket 4 müəyyən olunacaq nə burada olmaq olur Mən demək nə üçün, 6 daxil edin. 6 bu qəbulu olacaq. Amma biz burada nə bilmirəm. Bu yaddaş deyil ki, biz giriş idi. Belə ki, xatırlayıram əgər əvvəlki mühazirə, O ZAMYLA dəyərlər çap olunub və bir nöqtədə o, bu seqmentasiya edib günah. Belə ki, siz yəqin ki, görən olunacaq Siz kimi bir çox seqmentasiya çatışmazlıqlar problem dəstləri bəzi həyata keçirir. Amma bu yollarından biridir olan Bir seqmentasiya qarşılaşa bilər Siz daxil başlamaq zaman, günah Siz olmamalıdır yollarla yaddaş. Beləliklə, biz çıxışı yox idi Bu yer, bu bir səhv deyil. Belə ki, bu yaxşıdır. İndi hələ kiçik var bu Məcəllə ilə məsələ. Və biz istəyirik ki, əsasən hələ dörd şagird vurulmuş. İndi OK, səkkiz tələbə istifadə etmək istəyirsinizsə. Bu böyük bir şey deyil. Mən dəyişdirmək getmək olar şərh və n dəyişir. İndi bu səkkiz tələbələri ilə işləyəcək. Mən bu tərtib və run əgər bu, me-- göstərəcək Bu səkkiz üçün integers tələb edəcək tələbələr və yalnız işləyəcək. Amma bu lazımdır ideal az deyil proqram hər zaman compile Mən tələbələrin sayı dəyişdirmək istəyirəm Mən yaş girmək istəyirəm. Belə ki, final təkmilləşdirilməsi haqqında biz burada görəcəksiniz kimi bu, biz istəyirik insanların sayı tələb etmək niyyətindədir. Burada biz bir sıra var oda insanların və ya oda insanların hər hansı bir yaş. Amma biz sayı tələb olacaq istifadəçi oda insanların. Belə ki, bu eyni do-isə biz əvvəl gördüm loop. Bu dəqiq eyni do-isə loop ki, problem set həyata keçirilə bilər. Belə ki, kimi uzun onlar etdiyiniz kimi 1-dən n az girən, belə var var otağında ən azı bir şəxs. Kimi uzun onlar kimi 1-dən n az girən, sonra biz yenidən xahiş saxlamaq olacaq. Nömrəsi daxil edin oda insanların. İndi, bir dəfə biz sıra var otaqda adam mən orada daxil ola bilər bu otaqda 200 nəfər var. Sonra burada biz gəlib olacaq və ölçüsü 200 bir sıra bəyan. Biz array elan edirik böyük kifayət qədər 200 yaş keçiriləcək. Enir, bu loop üçün var çox istifadə almaq olacaq. Belə ki, bu serialın üzərində iterating, hər yeri təyin ki array bir tam və sonra nəticədə burada biz istəyirik yalnız iterating nümunə əldə ki array üzərində, dəyərlər təyin etmək deyil, lakin dəyərlər daxil olmaq üçün. Burada Beləliklə, biz görürük ki, biz İndi bir il, söyləyərək, şəxs% i, i yaş% olacaq ilk% i i plus 1 olduğu. Belə ki, i bu göstərici dəyişir. Və ikinci% i olacaq yaş sıra plus 1 saxlanılır dəyəri. Belə ki, bu plus 1, biz etdiyiniz yalnız, çünki bu plus 1 saying-- yaş i plus 1. Bu plus 1, biz etdiyiniz yalnız, çünki İndi şəxs bir il deyərək Bu köhnə olacaq. Belə ki, niyə bu i plus 1? Niyə biz bir plus 1 var? Bəli. Bəli. Belə ki, seriallarda sıfır endekslenir xatırlayıram. Biz bu çap əgər Belə ki, Kimsə yalnız çıxış oxumaq, sonra yəqin ki, onlar bir şey görmək istəyirəm şəxs bir şəxs bir nömrəli kimi, 20 yaş olacaq. Şəxs sayı iki 15 yaşında olacaq. Onlar daha çox adam görmək istəmirsinizsə sayı sıfır 15 yaşı var. Belə ki, bu tərtib və yalnız görən nə bəzi kosmik yaradın like-- görünür. Yaş tərtib olun. Yaş Running. Biz oda insanların sayı görürük. Beləliklə, mən var demək lazımdır otaqda üç nəfər. Şəxs bir nömrəli yaş, 15, 20, 25 deyək. İndi bir il demək lazımdır indi onlar 16, 21, 26 olacaq. Bu ilə işləyir ki, görək 3 bərabər bir n. Belə ki, mən insanların sayı bir 5 demək iki, üç, iki, bir, indi bir il Onlar, iki, üç olacaq dörd, üç, iki yaşında. Mən yalnız kimi ola bilər asanlıqla n 10.000 olmaq var. İndi Mən burada oturan olacaq Bir müddət yaş daxil, lakin bu işləyir. Belə ki, indi yaddaş yerdə biz , ölçüsü 10.000 bir sıra var belə nəticədə 40,000 bytes var, çünki bu integers hər biri üçün dörd bytes. Belə ki, bir sıra var ölçüsü 10,000 harada biz o 10.000 insanların yaş saxlamayın. Oldu. Bu hər hansı bir haqqında suallar? Bəli. Nə mənfi sıra verdi? Nə görmək edək. Bu case-- sayı So otaq, mənfi bir insan. Bu rədd, burada biz baş, çünki n, əgər ki, idarə etmək üçün az bir çox biz daha xahiş olacaq. Bir bəyan cəhd edin mənfi ölçüsü array, ümumiyyətlə işləmir. Belə ki, cəhd edək. Nin ignore edək nə n dəyər giriş və yalnız int yaş mənfi bir deyirlər. Hətta tərtib əgər in nəzər salaq. Əmin deyiləm. Yox. Belə ki, yaş bir elan mənfi ölçüsü array. Belə ki, upfront bir sıra bilməz tanıyır mənfi ölçüsü və onu rədd edir. İndi biz idarə olmasaydı bu do-isə loop doğru, biz yoxlanılması deyil, əgər n az 1 var, əgər biz yalnız deyək bütün bu yox idi əvəzinə biz yalnız bir tam qamarlamaq. Olursa olsun ki, tam nə ki, ölçüsü bir sıra bəyan. Belə ki, compiler bilməz bəlkə indi şikayət. Mən şeylərdir tərtib əgər belə ki, şikayət edə bilməz, mən deyiləm bilirik ki, bilməz, çünki mənfi nömrəsini daxil etmək niyyətindədir, olan etibarsız ola bilər. Bütün mən bilir, müsbət nömrəsini daxil edin, olan mükəmməl etibarlıdır. I 1 mənfi daxil əgər mən təsəvvür oda insanlar Seqmentasiya günah. Belə ki, OK. Belə ki, bu yalnız geri əlavə imkan Bu ilk nə saxlamaq. Belə ki, yaş olun. İndi mən bir cəhd etmək istəyirsinizsə, mənfi belə edək age-- otaqda nəfər var deyirlər. Şəxs bir nömrəli yaş şəxs üç mənfi 4 sıfır şəxs OK three-- edir. Belə ki, burada bir il artıq şəxs sayı bir 3 yaşlı mənfi olacaq. Belə ki, yəqin ki, mənada etmir. Amma ki, yalnız axtarır, çünki kodu bütün edirik GetInt tələb olunur. İndi biz idi əgər GetPositiveInt funksiyası və ya biz sadəcə bu etmişdi orada eyni isə loop sort, onda bu mükəmməl gözəl iş olardı. Amma bu da halda, biz yalnız deyil mənfi dəyərlər user olmaq üçün nə. Diziler haqqında hər hansı digər suallar? OLDU. Beləliklə, biz indi seriallarda gördük. Və biz istifadə etmək lazım olacaq command-line arqumentlər bu. Belə ki, problem da iki müəyyən Mən sizə bir çox bilirik hələ problem set iş ola bilər bir, lakin problem iki gəlir qurmaq. Problem iki set, siz olacaq strings, serialların ilə məşğul olmaq üçün lazımdır, və komanda-line dəlilləri. Command line dəlilləri belə nə var? İndi, burada aşağı edə bilərsiniz dəqiq nə üçün az teaser gedən baş olunacaq. Biz int əsas, inc argc görmək string argv mötərizədə. Belə ki, ilk nin şərh edək nə demək çalışırıq. OK, indi. Belə ki, command line siz olmalıdır Bu əmrləri bəzi alışma İndi, və yəqin ki, etdik əvvəl terminal cd. Beləliklə, biz cd pset1 desək, ki, olmalıdır bilirik ki, pset1 dizine dəyişən ola bilər. İndi heç etdik ki, görürsünüz əvvəl bu kimi bir proqram yazılı. Siz yazdıq Hər bir proqram, Siz, demək, namizəd olacağını Mario doğramaq nöqtə, dot görməmiş doğramaq və sonra giriş üçün sizə təklif edə bilər. İndi ki, nə var dəyişiklik kataloq edir. CD çalıştırdığınızda, sonra demək deyil CD olan qovluğu daxil istəyirsiniz? Bunun əvəzinə, yalnız demək, cd pset1, və yalnız pset1 dizine gedir. Belə ki, eyni biz digər nümunələr var. salam olun. Etmək çalıştırdığınızda, sonra demək deyil olan proqram etmək istərdiniz? Siz yalnız at, demək command line salam olun. Move bir nümunəsidir. Irəliləyirik Bu bir kataloq up fayl mario.c. Belə ki, indi biz bu misal ilə başa Biz, həqiqətən, iki dəlilləri keçən edirik. Ilk arqument kimi mario.c var, və dot dot ikinci dəlildir. Və sonra, siz çalıştırdığınızda ki, həqiqətən uzun komanda görmək xətti ki, həqiqətən uzun command command line çap. Belə ki, uzun bu funksiyanı bu yalnız qısa bir hissəsidir, Amma indi biz üç command-line dəlilləri. Dot dash sıfır, salam, və hello.c. Belə ki, bu command-line var arqumentlər, arqumentlər Siz keçən edirik ki, command line ki istenir yoxdur Siz proqram çalıştırdığınızda. Bu sinir bozucu olardı zaman, əgər Siz cingilti qaçdı ki, OK ", dedi program-- hansı fayl tərtib olunur? Hello.c. Nə bayraqları siz ki daxil etmək istəyirsiniz? dash o. Nə istəyirəm Fayl adlandırmaq üçün necə? Salam. Xeyr, yalnız cingilti run o salam hello.c dash. Belə ki, bu geri axtarır. İndi argc argc dəlil sayar edir. Bu komanda-line sayı arqumentlər command line girdi. Yaxşı, texniki argv-- v, vektor tərəfdardır olan əsasən array deməkdir. Amma siz ki, iqnor edə bilər. Argv-- biz string argv var Belə ki, simli argv mötərizədə. Belə ki, bu başqa bir formasıdır Siz əvvəl görməmişəm Mötərizədə. Beləliklə, biz gördük bracket Biz sonra notation, kimi, simli s Zamyla bərabərdir. s bracket 0 xarakter Z. çatmaz Biz də Mötərizədə zaman gördüm biz int yaş 5 bracket bildirib. Ki, ölçüsü 5 bir sıra elan etdi. Belə ki, burada bir versiyası Mötərizədə biz əvvəl görmədim. String argv Belə ki, bu cür ki, tamamilə tanış olacaq yalnız bir string olardı. İndi mötərizədə göstərir bu bir sıra edir. Belə ki, simli argv mötərizədə vasitələri ki, argv strings bir sıra edir. İndi texniki bir string simvol bir sıra edir. Belə ki, bu, indi bir sıra edir simvol bir sıra. Amma bu barədə düşünmək üçün çox asandır strings bu kimi bir sıra. Belə ki, niyə mötərizədə boş ola bilər? Kimi, niyə biz, deyə bilmərəm bracket 5, bracket n? Bəli. Bəli. Biz necə çox bilmirəm giriş orada olacaq. Beləliklə, biz cingilti Məsələn baxsaq, biz salam hello.c o dash cingilti demək. Bu halda, orada baş üç command-line dəlilləri olmalıdır. Və belə brackets-- görəcəyik ikinci bu üç olmaz. Texniki dörd olardı. Amma mötərizədə, biz demək, üç var. Amma indi biz hərəkət baxdı əgər mario.c dot dot, mötərizədə Biz onlara iki qoymaq istəyirəm. Və əmrləri bir çox var ki, command line dəyişən sıra var dəlilləri. Belə ki, nə bu versiyası bracket notation göstərir argv strings bir sıra edir. Amma biz nə qədər bilmirəm strings ki array var. Və necə sonra necə bilirik çox strings sıra var? Ki, bütün point argc var. argc argv necə uzun bizə deyir. Belə ki, son şey saxlamaq üçün mind, ki, texniki komanda özü kimi sayar command-line dəlilləri. Cd pset1 Belə ki, iki vardır command-line dəlilləri. özlüyündə proqram, cd, sonra bu faktiki dəlil hissəsi pset1. Siz indiyə qədər yazdıq hər hansı bir proqram bir command-line dəlil dot etdi Mario doğramaq. Yalnız command-line dəlildir. Belə ki, indi cingilti baxaraq o salam hello.c dash. Belə ki, argc nədir? 4. Belə ki, argc 4. Cingilti, belə ki, argv bracket 0 cingilti var. argv bracket 1 dash 0. argv bracket 2 salam və argv bracket 3 hello.c edir. OK, belə ki, bu suallar, sonra biz will bir proqram nümunələri baxmaq. OLDU. Beləliklə, biz hello3.c nəzər lazımdır. Belə ki, bu tanış olmalıdır ilk c nümunələrindən biri biz yalnız demək olardı biz salam var idi dünya, lakin indi bu daha ümumi edir. Belə ki, burada biz salam söyləyərək % s backslash n argv bracket 1. Bu baxımdan qədər qədər belə xəbərdarlıq, bu nə mənim şablon fayl kimi baxdı edib. Mən int əsas (void) idi, və sonra mən əsas funksiyası bir şey yoxdur. İndi əvəzinə, bir dəfə biz məşğul başlamaq command-line dəlilləri ilə, bir dövlət lazımdır Əsas müxtəlif forması. Belə ki, hello3 baxaraq yenə əsas gedir int argc, indi iki dəlilləri almaq üçün, command-line dəlilləri sayı və simli mötərizədə argv faktiki strings command line girdi. Beləliklə, mən dəyişdirmək üçün gedirəm şablon ki, əks etdirmək üçün. İndi zaman yazmaq bir proqram, yoxsa hər hansı bir komanda-line lazımdır dəlilləri, sonra yalnız int əsas (void) istifadə edin. Amma indi yazılı etdiyiniz zaman command-line arqument proqramları olan problem üçün bunu etmək olacaq belə ki, indi yayınlıyorsanız ki two-- müəyyən lazımdır proqramları command-line dəlilləri, Bu forma əsas lazımdır. Belə ki, burada bu böyük istifadə edir command-line dəlil. Belə ki, argv 1 çap. OK, belə ki, tərtib edək və bu proqram run. Hello3 olun. Tərtib edir. Dot hello3 doğramaq. Və, deyək "Rob". Hello Rob. Mən, "salam Maria," salam Maria demək olarsa. Maria Hello. Hannah hələ salam "deyir Maria, "Mən deyiləm, çünki Bizim argv 2 ilə bir şey edir. Argv 2 indi "Hannah." Olacaq Argc 3 olardı. Mən bunu əgər? Belə ki, salam null. O, qısa Faktla bağlı toxundu ki, texniki, GetString null qayıtmaq bilər, lakin biz bir almaq lazımdır daha nə null daxil çox əslində. Amma bir məsələ kimi onu ümumiyyətlə pis olması. Biz əgər səhv bir şey etdi Bu "salam null." çap Və səbəbi etdik is-- də yanlış bir şey, Mən dot çizgi hello3 qaçdı zaman, argc 1 idi. Belə ki, argv uzunluğu 1 deməkdir. Bir sıra uzunluğu 1 deyilsə, yalnız etibarlı index sıfır. Və belə ki, burada 1 xaricində argv bu serialın üçündür. Mən cəhd zaman əvvəl oxşar idi Serialın sonunda xaricində 6 saxlamaq üçün. Belə ki, bir şey daxil olmaq üçün çalışıram argv sayar kənarda, və biz null əldə edirik. Belə ki, daha yaxşı version Bu, bir inkişaf, açıq argc yoxlanılması olunur. Argc 2 bərabərdir əgər Belə ki, biz qaçdı deməkdir dot çizgi hello3 Rob kimi bir şey. Və bu "salam Rob." Çap edəcək Argc bərabər deyil, əgər 2, o, yalnız gedir Siz qoymaq nə ignore command-line arqument at command-line dəlilləri kimi. Əgər hər hansı bir qoymadı və ya, bu ki, yalnız ignore və yalnız demək gedir, "Siz salam". Belə ki, bu tərtib. Hello4 olun. Və hello4 çalışır. Bu yolu Running, nə çap etmək lazımdır? "Siz Hello". Siz Hello. Nə hello4 Rob haqqında? "Hello Rob". Və nəhayət, salam Rob Maria , "salam Siz" yenidən yalnız Siz, həqiqətən, daxil deyil, çünki Gözlənildiyi bir şey. Daha çox adları daxil Bu idarə edə bilər daha, belə ki, yalnız öndeğer salam siz davranış. Bu suallar belə? Və ya command-line dəlilləri? OK, belə ki, bir nəzər alaraq istifadə neçə daha nümunələri command-line ilk arqumentlər biz dash 1 dot c argv var. Belə ki, şərhlər üz vermək nə Bu proqram bunu etmək lazımdır. Lakin, loop üçün bu, indi qeyd bu dəqiq model oyunları Mən əvvəl deyirdi. Biz yalnız olmaq üçün nə n əvəzinə argc istifadə edərək. İndi argc həqiqətən n edir. Bu argv serialın uzunluğu var. Belə ki, argv üzərində iterating olunur array printf-Ing hər argv dəyər. Bu etmək əgər belə. Argv 1 olun. Bu tərtib edir. Dot argv 1 doğramaq. Məhz bu çalışan, onu izləri çizgi argv 1 dot yalnız command-line idi proqram adı dəlil. Həmişə lüğətdə də olacaq argc, bir az ola bilməz ci ildən həmişə ən azı çalıştırmak üçün proqram adı ola bilər. Belə ki, 1 Rob 1 argv çap edəcək argv və sonra yeni xətti "Rob". Ilk iteration So Bu loop, i 0. Argv 0 proqram adıdır. Dot argv 1 doğramaq. Və sonra 1, mənim ilk argv Rob command-line arqument. Bu nöqtədə, biz argc bərabərdir. Biz loop çıxmaq və biz tamamlayın. Belə ki, bu bir ixtiyari üçün işləyəcək command-line dəlilləri sayı. Qeyd edək ki, argv 0, argv yazdıran 1, argv 2, argv 3, argv 4. Və heç bir argv 5 var. argc 5 bərabərdir. Belə ki, i 5 bərabərdir at argc da, biz loop çıxmaq. OLDU. Biz əvvəl suallar So daha mürəkkəb nümunə baxmaq? Belə ki, 2 argv. Oldu. Belə ki, biz hələ də çap edirik command-line dəlilləri. Amma indi biz qeyd bir loop üçün iç içə. Belə ki, nə bu edir? Belə ki, ilk loop edir dəqiq nə əvvəl idi. Biz hələ üzərində loop edirik Hər komanda-line dəlil, lakin indi bu ikinci loop biz də əvvəl bu kimi bir şey göründüyü. O üzərində iterating zaman Zamyla Z-A-M-Y-L-A çap. Belə ki, int j bu ikinci loop bərabərdir 0, n argv bracket i strlen bərabərdir. Belə ki, ilk düşünək the-- vasitəsilə gəzmək edək. Nin nə kompüter olardı düşünmək edək yalnız dot kimi mən bu proqram qaçdı əgər nə argv Dash 2 doğramaq. Belə ki, əgər Mən bu kodu qaçdı argc 1 bərabər olacaq. Və simli yalnız var argv-- argv bir index olacaq, ki, dot bərabər olacaq argv doğramaq 2-- proqram adı. OK, belə ki, indi i daha i az, 0 bərabərdir 1, i plus plus int j 0 bərabərdir üçün, n, belə ki, argv bracket 0 strlen bərabərdir bu loop ilk iteration. argv bracket 0 dot çizgi argv 2. Belə ki, simli uzunluğu nədir? Bəli, A-R-G-V tire 2 doğramaq nöqtə. Ki, strlen Belə 8 olacaq. Belə ki, j 0 bərabərdir, n 8 bərabərdir. Kimi uzun j 8 j ++ az deyil. Və biz olacaq bir xarakter çap olan i j bracket argv bracket edir. Belə ki, yalnız i sıfır. Biz hələ yalnız bir var command-line arqument. Ki, ilk iteration loop üçün, biz istəyirik çap olacaq argv bracket 0 bracket 0. Və sonra j arttırmayı gedir. Və biz çap olacaq argv bracket 0 bracket 1. Və sonra bracket 0 bracket 2 argv. Belə ki, bu bizim ilk qarşılaşma edir çox ölçülü Diziler. Mən dedim ki, əvvəllər saxla ki, argv texniki simvol Diziler bir sıra. Belə ki, burada bir şey kimi danışdı string s, argv bracket i bərabərdir və sonra mən s, dedi bracket j, bu Eyni şey həyata olardı. İndi, siz əvvəl s bracket j gördüm. Bu yalnız j-ci daxil oldu Bu simli xarakterli. Bu Belə ki, biz əldə i-ci argv j-ci character. Belə ki, nə bu, son nəticədə çıxış lazımdır? Argv 2 olun. Bu tərtib edir. Dot argv 2 doğramaq. "Rob Maria Hannah" və bizə bir otaq verir. Beləliklə, biz bu tipi olduğunu görürük öz xətti və çizgi dot öz xətti ilə öz xətti və haqqında. Bu, hər bir çap fərdi xarakter Hər komanda-line dəlil. Və sonra onların arasında, Çünki bu yeni xətt biz, burada çap edirik Onların arasında yeni bir xətt çap edəcəyik. Belə ki, bu oxşar Əvvəl argv dash 1, Hər çap hansı command-line dəlil, Amma indi biz çap edirik command-line dəlilləri və sonra hər vasitəsilə iterating Hər komanda-line arqument xarakteri Bu çıxış almaq üçün. OLDU? Bu suallar belə? Qeyd bir şey ki, command-line dəlilləri belə ki, onlar kimi boşluq ayrılır təbii olmalarını gözləmək olardı. Belə ki, bir string bu boşluq ola bilər. Bu super vacib deyil, amma əgər üçüncü command-line dəlil istədi Mən sonra, bu bir yer var bu kimi bir şey deyə bilər. OLDU? Belə ki, bu, indi hələ yalnız üç var command-line dəlilləri də 4. Dot argv dash 2 doğramaq, Rob, Maria, və Hannah Bloomberg. OLDU. Bu suallar? Xüsusi bir şey yoxdur kosmik xarakteri haqqında. Bu yalnız olmaq olur command-line space xarakter alır necə hər bir dəlil ayrı. Oldu. Beləliklə Problem set Siz olacaq two-- gizli-key kriptoqrafiya baxaraq. Ki, məsələn Belə ki, oxşar biz A Christmas Story gördüm Bəzi həyata olacaq bir mesaj verilmiş alqoritmlər, edə olacaq ki, mesaj şifrelemek üçün ki, gizli ki, yalnız kimsə əsas ki, decoder ring ilə, decrypt lazımdır. Belə ki, standart nəşr olunur. Siz həyata olacaq iki müxtəlif versiyasını. Bir nəzər nə varsa hacker indi edition-- da, biz vermək olacaq bu kimi bir string, olan şifreli parol təmsil edir. Belə ki, sizin məqsədi anlamaq üçün deşifr parol nə. İndi bu həqiqətən necə parol kompüter bir çox saxlanılır, və yalnız bu saklar simvol təsadüfi string. Siz almaq üçün necə anlamaq üçün var simvol bu təsadüfi simli orijinal parol nə üçün. Və nəhayət, sonra bu problem set, siz olmalıdır Bu nə deməkdir başa düşmək mümkün. Belə ki, decrypt necə olacaq təsadüfi string bu cür. Eynilə, siz həftə xatırlayıram 0, bu URL görmüşəm bilər. Və lazımdır nəticədə bu decrypt. Siz xoşbəxt ola bilər zaman decrypt və linki vurun. Oldu. Bu gün üçün var. Belə ki, növbəti həftə siz baxın! [ELECTRONIC MUSIC PLAYING]