GARSIAKALBIS 1: Gerai. Sveiki sugrįžę. Tai CS50 dviejų savaičių, ir mes turime iki šiol naudoja funkcijas, bet daugiausia į juos savaime suprantamu dalyku. Mes naudojome printf kuris turi šalutinis poveikis spausdinimas viskas ekrane. Mes naudojome get-int gauti plaukti. Bet kas, jei jūs tikrai norite sukurti jūsų pačių funkcijų, kaip kai kurie galbūt jau pradėjo padaryti problemą, One, nors nėra griežtai reikalaujama? Na, eikime į priekį ir dar kartą peržiūrėti, kad problema tiesiog klausia vartotoją, jų pavadinimas ir spausdinimo kažkas ant ekranas, bet pabandyti veiksnys out kai iš bendrumo, kad mes matyti mūsų kodekse iki šiol. Taigi, kad aš tai taip. Aš ruošiuosi eiti į priekį ir sukurti Nauja programa, tiesiog paskambinkite tai hello.c kaip įprasta. Aš ruošiuosi eiti į priekį ir atsiduoti įtraukti standartinę io.h viršuje. Aš ruošiuosi taip pat atsiduoti Preemptively CS50 biblioteka taip, kad Aš negaunu sušuko sudarytojas. Ir dabar aš ruošiuosi eiti į priekį ir pripažinti INT, pagrindinį, negaliojančiu. Ir tada čia, tai kur aš noriu pradėti perduoti funkcionalumą kai kitas funkcijas, kad aš pats esu ketina rašyti, bet, kad nėra šiuo metu egzistuoja. Pavyzdžiui, tarkime, kad aš norėjau parašyti funkciją, kuri leidžia man spausdinti Sveiki, kablelis, ir tada kai vartotojo vardas. Užuot toliau daryti printf Sveiki,% s, ar nebūtų malonu, jei ten buvo tik funkcija vadinama ne printf bet spausdinimo vardas? Taigi, kitaip tariant, aš noriu, kad būtų galima Parašykite programą, kuri veikia tiek kažkas panašaus į tai. Pirma, aš ruošiuosi pasakyti printf savo vardas, taip paskatino vartotoją duok man jo ar jos vardą ir tada aš ketinate naudoti žinomus string s į paskelbti eilutę. Duok man tipo kintamąjį eilutę skambinti ji s, ir laikyti, kad sukelti, iš kurios skambinama gauti eilutę. Bet dabar savaičių anksčiau, būčiau šiek tiek nuobodžiai padaryta Sveiki,% s / n. Ir Kitaip tariant, mes matėme tai pavyzdys kartų krūva, ir tai trivialus pavyzdys, nes ten tik vienas linija kodą, tai tikrai ne baisi, kad rašyti dar kartą. Bet tarkime, kad šis kodo eilutę iš tikrųjų tapdavo našta ir tai ne viena eilutė kodo, bet tai 10 eilučių kodo pora savaičių nuo dabar, ir jūs tiesiog pavargę, kopijuoti ir įklijuoti arba įvesti iš naujo tą patį kodą. Ar nebūtų puiku, užuot printf Sveiki,% s, ir tt, Ar nebūtų puiku, jei ten buvo tik funkcija vadinama spausdinimo pavadinimas, mano argumentas - Kitaip tariant, reikia įvestį - ir tada kabliataškis. Taigi, kad funkcija, ar ne būtų malonu, jei kuri egzistavo? Tada aš ne nerimauti kas printf yra kas% s ir visi Šie sudėtingumo, kurie yra ne visi, kad įdomus. Jos yra naudingos. Taigi, vardas, pavardė spausdintinėmis, deja, nebuvo išrado kai 40 plius metų. Niekas manoma, kad rašyti. Bet tai turėti grožis programavimo kalba, kaip ir Scratch galite apibrėžti pasirinktinius blokus, todėl į C ir dauguma bet kalba, jūs galite apibrėžti savo funkcijas, gali jums apibrėžti savo funkcijas. Taigi, nors mes gauname pagrindinis pagal automatiškai nemokamai, mes galime paskelbti mūsų pačių funkcijų. Taigi, aš ruošiuosi padaryti kai kambaryje čia iki viršaus, ir aš norėčiau paskelbti mano savo funkcija, kuri ketina ieškoti šiek tiek keista, ne pirmas, bet mes ateis atgal į prieš tai ilgai. Aš ruošiuosi pasakyti negaliojančiu, tokiu būdu nurodant šią funkciją nėra kažkas turi šalutinį poveikį, tačiau jis negrąžina kažką man taip pat, kad gauti int arba gauti eilutę savaime. Ir aš norėčiau duoti šia funkcija pavadinimas spausdinimo vardu, ir aš ruošiuosi nurodo, kad šis vaikinas ketina imtis eilutę, ir aš ruošiuosi skambinti, kad Styginių pavadinimas. Galėčiau vadinti ką noriu, bet aš noriu, kad mano kodas turi būti savarankiškai dokumentuoti. Kitaip tariant, vienas iš jūsų, jei buvo atidaryti šį failą ir jį skaityti, galite rūšiuoti teigti, kad remiantis pavadinimu, įėjimas, kokį vaidmenį jis turėjo žaisti. Ir dabar yra mažesnis nei, kad aš ruošiuosi atidaryti garbanotas petnešomis ir uždarus garbanotas petnešomis, ir taip pastebėti aš po tą patį modelis linijomis keturių per septynias kaip Aš jau po geros savaitės plius dabar tarp, tarkim, linijų devynių ir 14, iš kurių sudaryta pagrindinė. Kitaip tariant, spausdinti vardą yra kita funkcija. Dabar sudarytojas nesiruošia žinoti skambinti šį dalyką automatiškai nes aš tiesiog tik sugalvojo, bet jis žinos dar skambinti Pagrindinis automatiškai, o tada, žinoma, į linija 13, Raginu mano paties funkciją. Ir todėl aš pareiškė, kad funkcija ant prieš keturias pagrindines linijos, tai ketinama mokyti sudarytojas kas citata, citatos, "vardas, pavardė spausdintinėmis" reiškia ir ką ji turėtų daryti. Taigi, aš tarsi suteikiant jam naują užsakymą blokuoti kontekste, tarkim, nulio. Taigi, čia aš galiu įdėti, kad labai dažni ar pasikartojančius modelis kodo aš nuolat raštu klasėje, printf % S Sveiki,% s / n "- ką aš noriu įdėti čia? S? Taigi aš noriu įdėti vardą šioje srityje. Taigi pastebėsite pasidalijimu į dvi dalis šiek tiek čia. Nes aš esu skelbiantis savo paties funkciją ir aš šiek tiek savavališkai vadinamas tai spausdinti vardą, ir dėl to aš nurodyta skliausteliuose, kad šis Funkcija priima vieną argumentą, tipą kuris yra eilutė - todėl žodis ar frazė ar kažkas panašaus - ir Vadinu šis argumentas vardą, kad tai tik kintamąjį,'S apimtis, taip sakant, yra vardas. S egzistuoja tik tarp to, kas dvi garbanotas petnešos, žinoma? Na tikrai, kaip ir 10 eilutės per 14, taip pat kaip pirmadienį negali naudotis S, bet ką aš galiu padaryti, tai perduoti S į spausdinimo vardą. Spausdinti pavadinimas tiesiog taip atsitinka, kad jį pseudonimas, sinonimas, slapyvardį, vadiname tai pavadinimas, o dabar naudojant jį šioje eilutėje. Taigi dabar leiskite man išsaugoti tai, nutolinti. Leiskite man eiti į priekį ir padaryti hello. Gerai atrodo. Ar ne išspjauti visas klaidas. . / Apie Enter. Koks mano vardas? Davidas. Ir Apie Davidas. Taigi ne visi, kad įdomus, bet tiesiog manau, kad dabar. Dabar jūs turite tą patį ingredientas kaip mes padarė nulio kad mūsų savo funkcijas. Bet yra iš kabliuko tiek. Tarkime, kad aš ne tikrai maniau tai per ir aš iš tikrųjų be tikrai galvoti apie tai rašė kad funkcija čia. Jaučiasi visiškai pagrįstas. Be nulio nėra sąvoka nuo vietos savo scenarijus. Jūs galite įdėti vieną čia vienas čia, vienas čia, ir jis gali pradėti ieškoti šiek tiek nepatogus, jei jūs neturite nustatyti jį tvarkingai, tačiau taip nėra Nesvarbu, kur fiziškai scenarijus buvo ekrane. Deja C - ir tai yra skirtingai kalbos, pavyzdžiui, Java ir Python ir kitiems, kad jums gali būti susipažinę su - deja, C, kad veikia klausimas, nes žiūrėti kas nutiks dabar. Numatytoji funkcija, kuri vyksta vykdyti, žinoma, pagrindinis. Pagrindinis ketina skambinti spausdinimo pavadinimą linija aštuoneri, bet, deja, sudarytojas nebus net žinoti, kad spausdinimo vardą egzistuoja tol, kol ji tampa į eilutę 11 kuri, deja, bus per vėlu. Taigi darykime padaryti hello. Ir dabar nusispjauti, dvi klaidas sukurtas. Taigi dabar leiskite pereiti iki labai pirma, kaip mes visada turėtų daryti, ir pastebėsite, kad ji šaukiantį į mane, "Numanoma deklaracija funkcija spausdinti pavadinimą. " Taigi mes matėme šį pranešimą anksčiau, numanoma deklaracija funkcija. Kai mes pamatėme, kad klaidų natūra? Kai aš neįtraukė biblioteką. Jei aš pamiršau cs50.h ir aš norėčiau gauti sušuko ir gauti eilutę arba gauti int. Tačiau šiuo atveju, ši funkcija spausdinti pavadinimas nėra bibliotekoje, tiesa? Tai tiesiog šį failą, todėl kas tikrai problema? Na, deja, C, pateksite taip neįtikėtinai tiesiog, kad jei noriu funkcija vadinama spausdinimo pavadinimas egzistuoja, jūs arba turi įgyvendinti kad labai viršuje savo funkcija kodas, kad tai prieinama sumažinti funkcijos, bet atvirai, tai tampa aplaistytas labai greitai. Asmeniškai aš lyg pagrindinė sritis nes tada tai labai aišku, ką tai Programa veikia iš pirmo žvilgsnio. Ir plius, galite patekti į keistą kampe Tais atvejais, kai jei x nori skambinti m, bet y galima pavadinti x, jūs tiesiog fiziškai negali iš tikrųjų pateikė vienas virš kito. Tačiau paaiškėja, C, galime išspręsti šią problemą labai paprastai. Aš ruošiuosi įdėti šiek tiek vietos čia, ir aš tik ketina Preemptively, nors ir šiek tiek Gausiai, kurios ketinama mokyti sudarytojas, kad egzistuoja funkcija vadinamas spausdinimo vardą, ji užima eilutę, ir aš ruošiuosi skambinti tai pavadinti kabliataškiu. Taigi tai dabar atitinka keturių, kurį mes dar nematėte anksčiau, yra deklaracija iš funkcijos spausdinimo vardu, bet tai tik pažadas, kad ši funkcija bus galiausiai bus nustatyta, galiausiai būti įgyvendintos. Tai dabar galiu palikti vieni, nes dabar tai yra apibrėžimas, įgyvendinimą, tarsi "paskutinės mylios" iš šios direktyvos įgyvendinimą, konkrečią funkciją. Taigi atvirai tai kvaila, tai erzina, bet tai yra būdas C, ir tai nes jis nukelia jus labai pažodžiui ir, kaip kompiuteris atvirai turėtų tik neturi ką pasakyti, kad ji padaryti, ir kad galima užsisakyti svarbus. Taigi, turėkite tai galvoje ir vėl pradėti pranešimas apie modelius pasikartojimo. Šansai yra jūs, jei turite ne jau pradeda susidurti pranešimus kaip tai, kad iš pirmo žvilgsnio atrodo visiškai paslaptingas, bet jei pradėsite ieškoti šių reikšminių žodžių, pavyzdžiui, "Numanoma deklaracija" paminėti funkcija šiuo atveju - ir atvirai, jūs kartais net gauti šiek tiek žalia morkų simbolis, kuris pasakys, kur problema tikriausiai yra - galite pradėti dirbti savo kelią per dar nematytas klaidas. Bet apie tai raštu klausimai jūsų savo funkciją tokiu būdu? Darykime kažką, kad šiek tiek daugiau įtikinamos. Užuot tiesiog padaryti kažką, kad turi šalutinis poveikis spauda, ​​leiskite man eiti į priekį ir išsaugoti naują failą, ir mes skambinti šiuo positive.c, nors tai bus šiek tiek kitoks prieš paskutinį kartą. Ir šį kartą, aš noriu pakartotinai įgyvendinti Paskutinį kartą yra positive.C pavyzdys, kuris yra priversti vartotoją duoti man teigiamas sveikasis skaičius. Bet man teko naudoti gauti int paskutinį kartą. Ar nebūtų buvę malonu, jei ten buvo funkcija vadinama gauti teigiamą int kad galėčiau tiesiog perduoti tai gabalas funkcionalumą? Taigi skirtumas yra tas, mes atsiųsime įgyvendinti gauti teigiamą int, tačiau skirtingai nei Spausdinti pavadinimas, kuris turėjo šalutinį poveikį - negrįžo kažką man patinka numeris arba eilutė - gauti teigiami int yra, žinoma, vyksta į grįžti, tikiuosi, teigiamai int. Taigi galime tai padaryti. Įtraukti cs50.h, įtraukti standartines io.h. Int main negaliojančiu. Ir dabar čia, aš ruošiuosi eiti į priekį ir tarkim int jį vadiname n yra lygi gauti teigiamą int. Ir kaip gauti int jau egzistuoja nes darbuotojai ją parašė, aš ruošiuosi daryti prielaidą, kad šiuo metu gauti Žiniasklaida pozityviai egzistuoja, ir dabar aš ruošiuosi eiti į priekį ir pasakyti printf, Ačiū už% i / n "n. Taigi dabar, jei aš surinkti šią programą, kas nutiks mano terminalo langas ties ekrano apačioje? Aš tikriausiai gauti, kad pati klaida kaip ir anksčiau. Taigi pabandykime tai. Padaryti teigiamas. Ir vėl, išvestinė deklaracija Funkcijų, gauti teigiamą int. Taigi, mes galime išspręsti šią problemą ir keliais būdais. Aš ruošiuosi laikyti jį paprasta ir tiesiog įdėti savo deklaraciją čia ir gauti Žiniasklaida pozityviai. Turiu vadinamąjį parašą. Parašas tiesiog tai su estetika Pirmoje eilutėje programą. Taigi, kas turėtų gauti teigiami LC grąža? Taigi int. Aš turiu galvoje, idealiu atveju, būtų grąžinti kažkas panašaus į teigiamą int, bet neegzistuoja. Mes nemačiau, kad tarp mūsų duomenų tipų, todėl mes turime elgtis su Faktas, kad mes turime labai mažai duomenų tipai dirbti. Tačiau mes galime grįžti int ir tik tikiu, kad jis bus teigiamas. Jis bus vadinamas gauti teigiamą int. Ir dabar, kaip apie savo argumentuose? Ar jis visas žaliavas? Ar reikia visas žaliavas? Taigi nereikia žinoti iš anksto nieko. Gauk eilutėje nėra, gauti int nėra. Printf nėra - reikia turėti tam tikrą įėjimas pateko į jį - ir spausdinimo vardas reikia šiek tiek prisidėti, bet ir gauti Žiniasklaida pozityviai nėra. Taigi, aš ruošiuosi aiškiai pasakyti sudarytojas negaliojančiu. Tuštuma yra apie ką nors nebuvimas. Taigi negaliojantis reiškia nieko vyksta viduje tų skliausteliuose, kabliataškis. Ir dabar ne mano failo apačioje - ir vėl, aš tiesiog yra rūšies analinis čia išleisti pagrindinis viršuje, kuris yra gera praktika, nes tokiu būdu, kada Jūs ar kas kitas atidaro savo failą, funkcionalumas yra teisus ten. Galite pasinerti nuo Square One. Taigi, dabar aš ruošiuosi kartoti tai, gauti teigiamą int negaliojančiu, tačiau aš nesu ketina hit kabliataškį dabar. Aš ruošiuosi atidaryti garbanotas petnešos, ir dabar man reikia skolintis kai nuo pirmadienio idėjas. Taigi, kaip jūs žinote, mes padarėme kažką kaip atlikti šiuos veiksmus, o kažkas buvo tiesa. Ir ką man daryti? Aš kažką panašaus duoti man teigiamas sveikasis skaičius, šiek tiek eilutę. Aš galėtų naudoti jokių žodžių noriu. Ir tada aš ką? Žiniasklaida n lygus gauti int jokių argumentų į jį. Ir pastebėsite skirtumą. Kai Jūs skambinate funkciją, kai jūs naudojate funkcija, jums nereikia įdėti į tuštumą. Jums tik padaryti, kad, deklaruojant funkcija, mokymo sudarytojas kas ji turėtų tikėtis. Taigi jums nereikia įdėti netekti ten sau. O dabar, kas buvo mano būklė? Na, n yra nelygus teigiamas, bet tai tik pseudo-kodas. Taigi, kaip aš galiu išreikšti tai daugiau švariai? Taigi yra mažesnė arba lygi nuliui. Taigi dar kartą, pastebėsite, jūs galite padaryti mažesnis arba lygus. Nors tai du atskiri simboliai, galite tai padaryti klaviatūra kaip toks. Tačiau vis dar klaida, Aš įsukus paskutinį kartą taip pat. Turiu pripažinti - tiksliai. Turiu pripažinti, n už iš kilpą. Taigi man reikia įdėti n čia, o aš ne norite iš naujo jį deklaruoti čia eisite, aš gauti naują kintamąjį. Aš tik noriu priskirti reikšmę čia. Ir dabar aš ne visai padaryta čia. Leiskite gauti prieš save ir apsimesti, aš padaryti. Padaryti teigiamas, o dabar atsirado nauja klaida. Valdymo pasiekia galą ne negaliojančiu funkcija. Taigi naujos klaidos pranešimą, tačiau jei rūšis iš erzinti išskyrus kiekvieno tariant, tikriausiai užsimenama, kas yra negerai. Kontroliuoti. Kontrolė reiškia tiesiog tvarka veiklos programoje. Kompiuterio kontrolės ir kažkas negerai. Taigi jis pasiekia galą ne negaliojančiu funkcija. Ką veikti tai, matyt, omenyje? Ką funkcija yra ne tuštuma? Taigi gauti teigiamą int, ir tiek klaidinantis, kad gerai, tai tipo tuščia. Ji turi tuštumos specifikacijos jos argumentai, tačiau jos produkcija vyksta būti N tipo. Taigi kairėje žodis vadinamasis grįžimo tipo. Viduje žodis čia yra turi būti nustatomos nulinio ar daugiau argumentų kad funkcija užtrunka. Taigi, ką man reikia daryti? Šiuo mano kodas taškas, linija 21, kur mirksi greitai dabar, aš turėti teigiamą int viduje iš kintamojo vadinamas n. Kaip aš galiu duoti Grįžti į pagrindinį? Pažodžiui. Grįžti n kabliataškiu. Taigi, kaip Colton grąžino gabalas popierius su atsakymo į man nuleisti kad popieriaus gabalas Little Black dėžutė ant stalo, padaryti, kad kodas, jūs tiesiog tiesiog parašyti, grąžinkite n, ir tai kaip nors Colton buvo pernešimo man kažką fizinės atgal. Tokiu atveju, kas vyksta, tai gauti Žiniasklaida pozityviai ketina perduoti atgal kas turbūt teigiamas sveikasis kam? Kur ši vertė galų gale? Tai galų gale į šį kintamąjį rodiklį n, ir tada mes pradėti su linija devyni. Taigi, kitaip tariant, kad iš veikla, ši programa pradeda vykdyti, ir kompiliatorius supranta, O, jūs norite į biblioteką? Leiskite man eiti patraukti viską, kas viduje, kad. O, jūs norite standartinę IO bibliotekoje? Leiskite man eiti patraukti viską, kas viduje, kad. Ką sudarytojas sako sau kai jis hitai linijos keturis? O, jūs pažadėjo įgyvendinti funkcija vadinama gauti teigiamas, tačiau grįšime į tą vėliau, kažkas palei tas linijas. Int main negaliojančiu tiesiog reiškia čia kad mano programos viduriai. Linija septynetas yra tik garbanotas petnešomis. Linija aštuonių sako kairėje, suteikti me 32 grąžtai sveikasis skaičius, tai vadiname n. Dešinėje pusėje, tai sakydamas gauti teigiamą int. Dabar galime pristabdyti, kad istorija, nes dabar Nemanau, nuolat juda pelės mygtuką žemyn. Mano žymeklis dabar krinta, nes čia dabar gauti teigiami LC vykdo. Žiniasklaida n deklaruoti. Atlikite šiuos veiksmus. Printf suteikia man teigiamą sveikąjį skaičių. Gauk int nuo vartotojo, laikykite jį n, o gal tai padaryti vėl ir vėl. Šis ciklas reiškia, kad šis kodas galėtų vykdyti aukštyn ir žemyn, kaip tai dar kartą ir vėl, bet kai vartotojo pagaliau bendradarbiauja ir suteikia man teigiamas int I hit linija 21, tuomet skaičius grąžino, ir kurių vienas turėčiau pabrėžti dabar? Devyni. Kontrolė, taip sakant, grįžta išsirikiuoti devynis. Tai linija, kuri dabar atsakingas. Štai kas buvo daroma viskas tai po gaubtu laikas, bet kai mes naudojamas funkcijas kaip printf ar net gauti eilutę, kad kažkas parašė jums, kontrolė buvo jų įteikimo ne į kažkieno kodas linija pagal kiekvieną eilutę. Tai tiesiog mes negalėjome matyti ir mes tikrai negalėjo pavaizduoti jį tai programa, nes jis yra kai kurių kitų failą į kietąjį diską nežinant mums. Taigi, galime iš tikrųjų sudaryti ir paleisti šį dabar. Padaryti teigiamas. Kaupti, kad yra progresas. . / Teigiamas. Duok man teigiamas sveikasis skaičius. Būkime sunku. Neigiamas 1. Nulis. Leiskite duoti jai 50. Ačiū už 50, ir tt kontrolės dabar grįžo. Turite klausimų, tuomet apie tai? Taip? [Nesigirdi]. Pasakykite dar kartą. O, geras klausimas. Taigi galite pastebėti paralelę čia Aš tipo pjovimo skyrelis. Atsižvelgiant į 12, aš sakau, gauti teigiamą int grąžina int, bet tas pats logika, tai dabar suprantama, kad linija šešių, aš sakau, kad pagrindiniai grįžta int, bet ko mes niekada turėjo bet mūsų programas? Mes niekada paminėti tai pagrindinis žodis grąža. Taigi paaiškėja, kad C, ne mažiau kaip jos versija, kad mes naudojame pagamintas 1999 metais, techniškai, tai yra vyksta automatiškai. Bet kuriuo metu galite įdiegti programą ir jums įgyvendinti funkcija vadinama pagrindinė, kad funkcija grąžins nulio pagal nutylėjimą, jei jūs neturite pasakyti kitaip, ir nulis yra tik konvencija. Pasaulis grįžta nulio tuo būdu rodo, kad viskas yra gerai, efektyviai palieka mus su keturis milijardus galimų dalykų, kurie gali eiti ne taip, kad jei mes grįžtame vieną, kad gali reikšti kodą, kuris reiškia, kad tai dalykas nutiko. Mes galime grįžti du, o tai reiškia, tai kitas dalykas nutiko. Mes galime grįžti keturis milijardus, o reiškia tai kitas dalykas nutiko. Ir jei dabar galvoti apie savo PC arba Mac, galite prisiminti, kad kartais jums paslaptingas klaidų pranešimus nuo programinės įrangos, kad jūs naudojant, o kartais ji turi žmogaus draugiškas aprašymas, bet ten dažnai kodas arba numeris ekrane? Jei tai neateina į galvą, tiesiog stebėkite jį. Tai paprastai kas tai kodai yra nuoroda į. Jie įtraukti į "Microsoft Word" ir kitos programos taip, kad jei jums failą pranešimas apie klaidą su bendrove, galite pasakykite jiems, oi, aš klaidos numeris 45. Ir kai programuotojas atgal į įmonės gali atrodyti, kad iki jo ar jos kodas ir sako, oi, tai todėl, kad aš padariau šią klaidą ir tai, kodėl vartotojas gavo šį pranešimą. Bet tiesą sakant, tai tik šiek tiek blaško dėmesį ir šiek tiek varginantis išvadą, kad, bent jau mūsų Pirmieji keletas programų, todėl mes buvo praleidžiant jį. Tačiau visą šį laiką kiekvienas iš jūsų funkcijos Pagrindinis slapta turėjo tai linija automatiškai pridėta jums sudarytojas, tiesiog pagal susitarimą sutaupyti šiek tiek laiko. [Nesigirdi]. Jums nereikia įtraukti jį į Main. Tai gerai. Jūs turite jį įtraukti, jei buvo įgyvendinant panašaus funkciją. Priešingu atveju funkcija butas iš neveiks. Bet pagrindinis, tai nėra būtina. Per savaitę ar dvi, mes pradėsime gauti į tą įprotį, kai mes norime pradėti reiškiantis klaidų. Tikrai geras klausimas. Taigi greitai žodinis pertrauka paminėti, kad Šį penktadienį, mes negali būti pietauja per se, bet mes bus pietauja su kai studentai ir dėstytojai. Jei norite prisijungti prie mūsų, jausti laisvai eiti į cs50.net/rsvp. 06:00 šį penktadienį. Erdvė, kaip visada, ribotas, bet mes toliau daryti tai ant beveik kas savaitę, jei vietos baigsis šią savaitę. Taigi Įspūdingos filmą, kad mes baigėte Pirmadienis buvo, kad stygos gali iš tikrųjų būti indeksuojami į, kuris tiesiog reiškia, kad jūs galite gauti pirmojo ženklus Antroji raidė, trečiasis simbolis ir tt, nes galite efektyviai galvoti apie eilutę, pavyzdžiui, labas, kaip šiuo atveju penkių raidės viduje dėžės. Ir jūs galite gauti kiekviename iš tų dėžės su tuo, ką sintaksė ar mes pristatyti pirmadienį? Šie Kvadrātiekavas klaviatūroje. Tai tiesiog reiškia eiti į vietą nulio. Mes pradedame skaičiuoti nuo nulio, todėl laikiklis nulis reiškia H, laikiklis vienas reiškia, E ir kt. Ir taip visą laiką, kai buvome naudojant styginiams ir rašyti "labas" ir "pasaulis" ir kitų dalykų, apie ekranas, jis buvo laikomas į dėžutes, kaip šis. Ir atsižvelgti į tai atspėti. Ką kiekvienas langelis atstovauti fiziškai viduje kompiuterio? [Nesigirdi]. Atsiprašome? Charakteriai. Taigi simbolis, žinoma tuo atveju, eilučių ir simbolių yra tik Aštuoni bitai arba vienas baitas. Taigi, jūs tikriausiai yra bent miglotai susipažinęs su tuo, kad jūsų Kompiuteris turi atmintį. Jis turi dviejų tipų atminties bent. Vienas iš jų yra kietajame diske, kur išsaugoti Daiktai nuolat, ir tai paprastai didelės, todėl jūs galite turėti filmus ir muzika ir kt. Tada jūs turite kitą atminties tipą vadinama RAM, R-M Operatyvioji Atmintis, ir tai yra atminties tipas , kuris yra naudojamas, kai jūsų kompiuteris yra veikia, tačiau, jei jūs prarasti valdžią ar jūsų baterija miršta, nieko, kad saugomas RAM dingsta, jei jūs prarasti valdžią apskritai, nes tai nėra patvarus. Jūs paprastai turi šių dienų, koncertas tai, du koncertai, o gal ir daugiau. Ir RAM aukštyn, kad tai daug daug, daug greičiau nei kietieji diskai ar net kietojo kūno diskai šių dienų, bet tai paprastai brangesnis, todėl jūs turite mažiau. Taigi šiandienos pokalbis tikrai reiškia į RAM, kad atminties tipo, kad egzistuoja tik tada, kai ten galia šeriami į kompiuterį. Taigi, kai įvedate H-E-L-L-O, "Enter" klaviatūra, H vyksta vienoje baitų RAM, E vyksta kitas RAM baitų, kaip žodžio poilsio. Taigi prisiminti, kas mes galėjome padaryti paskutinį kartą buvo toks. Leiskite man eiti į priekį ir atverti failą kad mes vadinami string.c, ir prisiminti kad jis atrodė šiek tiek kažkas panašaus į tai. Leiskite man iš tikrųjų įvirsta ir keisti tai tiksliai kaip ji atrodė, eilutės ilgis S. Taigi, pažvelgti į programą čia. Mes įtraukti CS50 biblioteką pan kad mes galime naudoti gauti eilutę. Mes apima standartinį io.h todėl mes galime naudoti printf. Kodėl mes taip pat string.h? Tai buvo nauja pirmadienį. Taigi mes norėjome eilutės ilgis. G leng. Žmonės nusprendė metų, tegul tiesiog būti trumpas. Vietoj to, vadindami jį "eilutės ilgis" tegul ją vadina "g Leng" ir leiskite pasaulis rodiklis, kad iš, ir todėl tai ką mes gauti prieigą prie su string.h. Tai žinoma. Tai žinoma. Tai žinoma. Tai šiek tiek naujų. Atsižvelgiant į 22 - ir mes grįžti to, bet dabar žinau - ir jums bus tik žinau, tai gražu skaityti dokumentus, arba jei jūs žinojo C jau - gauti styginių kartais gali susukti. Jei vartotojas tikrai rungimosi arba nenoro ir jis arba ji tiesiog nėra įrašykite nieko prie klaviatūros arba rūšių tiek daug klaviatūroje, kad ji užvaldo kompiuterio atmintį, teoriškai gauti eilutė gali sugrįžti kažkas kita, nei simbolių eilutė. Tai gali grąžinti ypatingą vertę, vadinamą NULL visais dangteliais, N-U-L-L, ir tai yra tik vadinamasis kontrolinių vertė. Tai speciali reikšmė, kuri reiškia, kažkas blogo atsitiko ir šiuo atveju. Tai eilutę nebuvimas. Taigi nulis aš tikrinant tiesiog todėl, kad Trumpai tariant, g leng ir kitos funkcijos, kad ateis su C temperatūroje, jei jie tikisi eilutę, bet jums perduoti juos iš eilutės nėra, jei pereisite juos NULL, kompiuteris arba programa tiesiog sustos visiškai. Tai bus pakabinti. Tai bus mesti kai klaidos pranešimą. Blogi dalykai įvyks. Taigi, nors tai vis dar nėra gerai apibrėžta - tai bus daugiau prasmės per savaitę ar du - atsižvelgiant į 22, tai tik pavyzdys savarankiškai gynybinės klaidų tikrinimas tik tuo atveju, vieną kartą iš mln kažkas negerai, bent bent mano programa nebus avariją. Taigi, jei ų nėra lygus kažką blogo, Aš tai už linijos, ir tai buvo kur mes turėjome, kad kita Naujas kūrinys sintaksė. Turiu už linijos Iteracja nuo nuliui, iki s ilgio. Ir tada čia, aš buvau iš S Spausdinimo laikiklis aš, bet kodėl aš naudoju% C visi vietoj% s staiga net nors s eilutę? Tai simbolis, tiesa? S yra eilutė, bet ai laikiklis kažkas, ų laikiklis i kur i yra nulis arba vienas ar du, tai individualus simbolių į eilutę, ir todėl už kad printf turi būti informuojami, kad tai iš tiesų simbolis tikėtis. Ir tada prisimenu, kas tai padarė programa iš tikrųjų daryti? Atspausdinta jį skiltyse. Taip, tiksliai. Jis tiesiog atspausdinti žodį, kad aš tipo kolona, ​​vieną simbolį eilutėje. Taigi pažiūrėkime, tai dar kartą. Taigi, kad eilutę. Parengė Gerai. . / Eilutė. Leiskite man įvesti H-E-L-L-O, "Enter", ir iš tikrųjų aš jį gauti, po vieną eilutėje. Taigi leiskite man padaryti vieną optimizavimas čia. Jei jūs manote apie tai, ypač jei jūs užprogramuotas anksčiau, nėra be abejo, atitinka 24 neefektyvumas. Kitaip tariant, tai nebūtinai geriausią dizainą. Paprasta, bent kartą jums prisiminti, kas g Leng yra, bet tai kažką kvailas potencialiai. Kas gali būti? [Nesigirdi]. Būtent. Tai patikrinti dėl jo ilgio kiekvieną kartą, nors H-El-L-L-O visada vyksta būti penki ženklai. Kiekvienas per šį kilpa laikas, penkių nesikeičia. Galėčiau būti incrementing i, bet ką yra s ilgis apie kiekvieną iteracija šios linijos? Tai penkių, tai penkių, tai penkerių metų, ir dar aš vis klausia tai klausimas vėl ir vėl ir vėl. Dabar tiesą sakant, kompiuteris yra taip velniškai greitai, niekas manimi ketina pranešimas skirtumas šiuo atveju, tačiau šių rūšių prastos dizaino sprendimus gali pradėti pridėti, jei kompiliatorius pats nesistengia išspręsti šią problemą už jus, kurie jis paprastai nebūtų, bent jau prietaisą. Taigi, aš ruošiuosi tai padaryti. Aš ruošiuosi įdėti kablelis po mano pirmasis kintamasis, aš. Aš ruošiuosi suteikti sau kitą kintamasis, vadiname tai n, tiesiog konvencija numerių, ir tada aš ketina priskirti n styginių vertę ilgis s. Ir tada aš ruošiuosi keisti mano sąlyga, kad būtų ką? Aš ruošiuosi pakeisti savo būklę į, o aš yra mažesnis nei n. Taigi, dabar, kiek kartų aš tikrinti s ilgis? Vieną kartą, bet viskas OK patikrinti i nuo n vėl ir vėl, nes dabar tie vertės ne iš tikrųjų keičiasi. Dabar dabar, tiesiog žinau, kad bet kuriuo metu jus skambinti funkciją, yra tiek važtaraščius, nepakanka nepataria jums tikrai nuo kada naudojant funkcijas, bet tikrai kai ten kodo eilutę patinka - ir linijos gaus įdomiau prieš ilgas - kai yra galimybė galvoti, jei aš įveskite šį kodą, kiek kartus ji atlikti? Jūs pradėsite matyti laikui bėgant atlikimas jūsų programas galima iš tikrųjų pasikeisti. Iš tiesų, vienas iš problemos nustato mes daroma ankstesniais metais apima įgyvendinimo, kaip jūs galite prisiminti iš savaitę nulis, rašybos tikrintuvas, bet Rašybos tikrintuvas, kad sukurta siekiant remti 150000 žodynas plius žodžiai, kad mes jums vaikinai. Jums reikės rašyti kodą, kad kroviniai tos į RAM žodžiai, todėl į dėžės, kaip matėme ekrane akimirką prieš, o tada taip pat greitai, kaip jūs gali, ko jums reikia, kad būtų galima atsakyti į Klausimas į formą, yra šis žodis su klaidomis? Ar šis žodis su klaidomis? Ar šis žodis su klaidomis? O kažką panašaus į tai, ką mes daroma ankstesniais metais yra pavertė ją, nors ir opt-in savanoriškai, konkurencijos dvasia, kuria studentai, kurie naudoja mažiau RAM ir mažiau laikas, mažiau procesoriaus ciklus, galų gale burbuliuoja iki tiek viršuje lyderis lenta ar rango, kad mes įdėti Kursas oficiali svetainė kaip mes daroma ankstesniais metais. Taigi dar kartą, visiškai nebūtina, tačiau tai kalba projektavimo galimybes kad yra į priekį, kai mes pradėti statybos ant kai kurių iš jų blokai. Taigi leiskite man grįžti prie šio schema tik akimirką ir atskleisti tiek kažkas daugiau. Tai iš tiesų yra eilutė, o mes atlikome privalumas keletą bibliotekų, standartas io.h kuris - Printf. Printf, be kitų dalykų. cs50.h, kuri gauti int ir gauti eilutę ir tt, string.h, kuris turėjo g Leng. Tačiau paaiškėja, kad tai dar vienas. Atvirai kalbant, yra daug ir daug antraštės failus, kurie deklaruoja funkcijas bibliotekoms, tačiau tai ctype.h yra iš tikrųjų bus šiek tiek naudingas, nes aš ruošiuosi eiti į priekį ir įgyvendinti vieną kita programa čia. Leiskite man eiti į priekį ir pradėti kažką Parašiau iš anksto vadinamas capitalize.c, ir galime imtis tuo, kaip tai veikia išvaizdą. Atkreipkite dėmesį, kad aš naudoju, šioje versijoje jo, trys pažįstami failai. Atkreipkite dėmesį, kad atsižvelgiant į 18, aš gauti teksto eilutė. Pranešimas atitinka 21, aš teigdamas, kad šis kodas ketina pasinaudoti s, nepriklausomai vartotojas turi įvesti į, ir kaip aš darau, kad? Na, aš paimsiu - pasimokyta iš paskutinį kartą - Aš skelbiantis i ir n ir Iteracja per daugelį eilutės simbolių. Ir tada kas tai yra blokas kodas per 27 24 eilutėje tai profanas sąlygomis? Mažosios laišką atgal. Būtent. Jei s laikiklis aš - taigi, jei i-asis pobūdis s, kuri yra konkretus char string, yra didesnė nei arba lygus mažosiomis ir - Primename, kad dvigubo ampersendo reiškia ir - ir tas pats simbolis, s laikiklis i yra mažesnis arba lygus mažosiomis raidėmis Z, tai reiškia, kad ji arba b arba c arba taškas, taškas, taškas, ar Z, o tai reiškia, tai mažosios. Ką aš noriu daryti tokiu atveju? Na, aš galiu tai padaryti šiek tiek cryptically, bet tegul erzinti tai atskirai. Aš ruošiuosi skambinti printf spausdina% C nes noriu atspausdinti šį simbolis ekrane. Aš tada truks s laikiklis Aš, I-asis simbolis s, tada kodėl aš darau tai mažai triukas čia mažosiomis minuso sostinę? Kas yra, kad ketina suteikti man apskritai? [Nesigirdi]. Būtent. Aš tikrai ne prisiminti - ji buvo 65 mirties A. Aš tikrai ne prisiminti, kas mažosiomis yra bet nesvarbu. Kompiuteris nežino. Taigi, sakydamas mažosiomis minuso kapitalas, tai keista, kad atimant vieną char nuo kito, bet kas yra simbolių po gaubtu? Jie tiesiog skaičiai. Taigi, ką tie skaičiai, tegul kompiuteryje prisiminti o už mane žmonių. Taigi mažosiomis minuso kapitalą yra ketina duoti man skirtumą. Tai atsitinka taip, 32, ir kad būtų už mažosiomis b ir kapitalo B atvejis ir kt. Jis lieka nuoseklūs, laimei. Taigi, aš iš esmės sakydamas, imtis mažosiomis laišką, atimti išjungti, kad standartas skirtumas, ir kad iš tiesų pakeičia s laikiklis i nuo mažąsias ir, žinoma, didžiąsias, be mano tikrai nereikės galvoti apie ar prisiminti, kokie buvo tie, numeriai mes kalbėjome apie kai aštuonių savanoriai atėjo ant scenos? Dabar Tuo tarpu kitur, jei tai nėra mažoji raidė, kaip nustatyta po eilutės 24, tiesiog atspausdinti jį. Aš tik noriu paliesti ženklai, kurie buvo iš tikrųjų iš pradžių mažosiomis raidėmis. Taigi pažiūrėkime tai. Padaryti didžiosiomis raidėmis. Parengė, Gerai. . / Didžiosiomis raidėmis. Ir leiskite man įvesti H-E-L-L-O mažosiomis raidėmis, "Enter". Ir pastebėsite, kad jis konvertuojamas į didžiąsias. Leiskite tai padaryti dar kartą skiriasi žodį. Kaip apie D-A-V-I-D su pirmąja D kapitalizuojamos kaip pavadinimas paprastai yra? Įveskite. Pranešimas vis dar teisinga. Jis tiesiog išvedamas kad pirmasis D nepakito per tą dar statyti. Taigi reikia nepamiršti, tada, pora dalykų čia. Vienas iš jų, jei Jums kada nors norėsite patikrinti du sąlygas iš karto, galite ir juos kartu, kaip mes prognozuojama. Galite palyginti simbolius tokiu būdu ir veiksmingai gydyti charakteriai numerius, bet atvirai, tai taip velniškai paslaptingas aš niekada prisiminti kaip sugalvoti tai nuo nulio be motyvų per jį gana šiek tiek laiko. Ar nebūtų buvę malonu, jei kas nors ten rašė funkcija vadinama yra sumažinti, kad galėtų atsakyti man tiesa arba klaidinga, šis personažas yra mažoji? Na, laimei, kas rašė ctype.h darė būtent tai. Leiskite man eiti čia ir pridėti ctype už a rūšys, o dabar leiskite man eiti čia ir perrašyti ši eilutė taip. Taigi, jei tai vadinama yra mažesnis, galiu reikalauti, s laikiklis aš, tada aš ruošiuosi ištrinti Šios dvi eilutės iš viso. Taigi dabar kažkas, aš tikiuosi, rašė funkcija vadinama yra mažesnis, ir tai Pasirodo, jie padarė ir jie pareiškė, ji viduje ctype.h. Ir dabar aš ruošiuosi palikti 27 eilutėje vieni, aš ruošiuosi palikti Line 31 vienas, bet pastebėsite, kiek aš sugriežtino savo kodą. Tai dabar švaresnis. Tai mažiau sunku ieškoti per nes dabar funkcija, be to, yra taip nuostabiai pavadino jį tiesiog ką ji sako. Taigi, dabar aš ruošiuosi tai išsaugoti. Aš ruošiuosi nutolinti. Ir tik kaip scratch galite turėti Loginę, Būlio reikšmės true arba klaidinga, tai yra būtent tai, kas yra sumažinti veiksmingai grąžą. Leiskite perkompiliuoti. Leiskite man pakartoti. O dabar pabandykime dar kartą, H-El-L-L-O Enter. Tai gana geras. Ir pabandyti dar kartą, įsitikinkite, kad aš nebuvo prisukti kažką daugiau. Tai kapitalizuojamos kaip gerai. Bet tai nėra pakankamai gera, nes Kitas dalykas, kad aš niekada prisiminsite, nebent aš dirbu per jį tikrai atsargiai, tarkim, popierius tai velniškai linija. Ar nebūtų puiku, jei ten buvo funkcija vadinama aukštesniojo? Na tai pasirodo ten yra ctype.h taip pat. Aš ruošiuosi eiti į priekį, o tipas - leiskite man pareikšti, kad linija atgal. Vietoj to čia, leiskite man eiti į priekį ir pasakyti, pavaduoti% C rezultatas, iš kurios skambinama šią funkciją viršutinė nurodo i-ojo požymio s. Ir dabar pastebėsite, kad jis darosi tiek subalansuota. Turiu sekti, kiek skliausteliuose aš atidaryti ir uždaryti. Taigi, dabar net švaresnis. Dabar ši programa yra vis geriau ir geriau skirti tikriausiai, nes jis daug, daug lengviau skaityti, bet Tai ne tegul ištaisyti. Padaryti didžiosiomis raidėmis. . / Didžiosiomis raidėmis. H-El-L-L-O. Leiskite paleisti jį dar kartą, D-V-aš-D. Gerai, kad mes vis dar gana geros formos. Bet dabar priekis. Siūlau, kad yra dar vienas tobulinimas, mes galime padaryti, kad būtų tikrai gražus, kad tikrai galėjo sugriežtinti iki šio kodekso ir tikrai mums penkis iš penkių projektavimo, pavyzdžiui. Kas būtų malonu atsikratyti? Na, atrodo kaip velniškai ilgą šį bloką kodas yra tiesiog padaryti ką nors paprasto. Dabar, kaip panaikinti, kaip jūs galite turėti matyti super skyriuje praėjusį savaitgalį, jūs neturite griežtai reikia garbanotas petnešos, kai jūs tik vieną eilutėje kodas, nors mes pasiūlėme išlaikyti juos taip, kad tai daro daug labiau aišku, kaip ir nulio yra U formos blokai, kas viduje filialo. Bet ar nebūtų malonu, jei prie viršutinės , kai atsižvelgiant į jos indėlį, pasuko jį į didžiąsias, jei ne, o kas būtų nuostabu priešingu atveju, jei tai jau didžiosios? Tiesiog perduoti jį per ir palikite jį ramybėje. Taigi, gal tai daro. Galėčiau pabandyti ir tiesiog tikiuosi, kad ji, bet leiskite man pristatyti dar vieną dalyką. Vietoj to, naudojant šį įmontuotą terminalą langas žemyn čia, priminti, kad šioje aikštėje juoda piktograma suteikia jums didesnis terminalo langą, kad galėčiau pilnas ekraną, jei aš noriu? Taigi paaiškėja, kad jie tarsi keistai pavadintas, bet ten šie dalykai vadinami vyras puslapiai, vadovo puslapius, ir vyras trumpam, ir aš galiu prieiti prie šių projektų įvedę vyras - ką aš noriu tipui? Žmogus upper. Ir dabar pastebėsite, jei egzistuoja veikti viduje kompiuterio, į Šiuo atveju prietaisas, kuris yra tik operacinė sistema "Linux", jis ketina duoti man šiek tiek paslaptingas rinkinį galia, bet jūs rasite daugiau nei kartą, kad ji visada yra suformatuotas gana daug tas pats, kad jūs pradėti priprasti prie jo. Pranešimas viršuje didžiosiomis raidėmis, ir matyt, yra ta pati dokumentacija už sumažinti. Kas rašė jis pjovimo kai kampai ir padėkite jį visi ant vieno lapo. Šie dalykai "paskirtis gyvenimas yra konvertuoti laišką viršutinė arba mažosiomis raidėmis. Atkreipkite dėmesį, kad pagal Anotacija, vyras puslapis moko mane, kas tai per failas Turiu įtraukti naudoti šį dalyką. Tai suteikia man Šių parašų funkcijos, jie abu, net nors mes dabar tik rūpintis vienas. Štai dabar aprašymą. Norėdami viršutinė paverčia laišką c į didžiąsias, jei įmanoma. Dar nereiškia, kad pamokantis, bet leiskite man dabar atrodo pagal sugrįžimo vertę, dalykas tai grąžino. Taigi, grąžinta reikšmė yra ta, kad konvertuojami raidė arba C, jei konversija buvo neįmanoma. Kas yra c? Savitumą. Savitumą ir mes žinome, kad vėl einame į santrauką, ir kas parašė šią funkcija tiesiog nusprendė, kad įėjimas į į viršutinę ir mažesnės, yra tik savavališkai bus vadinamas a. Jie galėjo pavadino jį labiausiai nieko jie nori, bet jie laikė jį paprasta, kaip a. Taigi, aš kreipėsi į žinyno puslapį. Šis sakinys ramina mane, kad jei tai ne mažoji raidė, tai vyksta tiesiog duoti man atgal C, kuris yra tobula, o tai reiškia, aš galiu atsikratyti mano kita sąlyga. Taigi leiskite man grįžti į gedit ir Dabar leiskite man tiesiog tai padaryti. Aš ruošiuosi kopijuoti mano printf. Aš ruošiuosi eiti į priekį ir tiesiai kilpos spaudoje, kad iš, ir gauti atsikratyti dabar visas šis jei konstruktas. Nebuvo bloga idėja, ir tai buvo labai daug teisinga ir atitinka viskas mes skelbė, bet tiesiog nėra būtina. Kai tik jūs suprasite, kai biblioteką funkcija yra, kad kažkas rašė: o gal rašėte kitur failą, galite jį naudoti ir tikrai pradėti sugriežtinti kodą. Ir kai aš sakau dalykų, pavyzdžiui, gero stiliaus, tai, kad šis asmuo vadinamas veikti aukštesniojo arba anksčiau yra žemesnis yra nuostabiai naudinga, nes jie labai aprašomasis. Jūs nenorėtų skambinti savo funkcijas x ir y ir z, kurie turi daug, daug mažiau reikšmės. Visi tos serijos klausimai patobulinimų? Taigi pakanka pasakyti vieną takeaways net kaip savo problemą rinkinys - gal problema nustatyti vieną, bet tikrai P, nustatyti du ir toliau, net kai jie teisingi nebūtinai reiškia, kad jie yra puikus tiesiog ar dar ypač gerai parengta. Štai kitas ašis pradėti galvoti apie. Taigi tai buvo eilutė viduje jūsų kompiuterio atminties, bet jei turite visa krūva simbolių kaip H-E-L-L-O viduje RAM, ir manyti, kad jūs savo programą vadina gauti eilutę kelis kartus, pavyzdžiui, kad jūs skambinti gauti eilutę vieną kartą, tada jūs skambinti gauti eilutę dar kartą. Na, kas vyksta įvykti per tam tikrą laiką? Kitaip tariant, jei turite liniją kodas, nors iš konteksto, pavyzdžiui, styginių ai gauna - darykime tai. Styginių pavadinimas yra gauti eilutę. Taigi tarkime, kad kodo eilutę reiškia paklausti jo ar jos vardą vartotoją. Tai naujos eilutėje kodas yra skirtas paklausti jo ar jos mokyklos vartotojas, ir tai kitą eilutę, ir kt. Tarkime, kad mes nuolat klausia kito vartotojo ir kitą, ir kitą eilutę. Jie ketina likti atmintyje tuo pačiu metu. Vienas nesiruošia Bylų kitą. Mokykla yra ne perrašyti kitos. Bet kur jie visi galų gale atmintį? Na, jei mes pradedame piešti ant ekrano kuriuos mes galime naudoti šį dalyką čia kaip lentos, jei tai juoda stačiakampis yra mano kompiuterio atminties, aš ruošiuosi savavališkai pradėti dalijant jį į mažai kvadratų, kurių kiekvienas atstovauja Vieno baito atminties. Atvirai kalbant, jei turite RAM gigabaito šių dienų, jūs turite milijardas baitų atminties į savo kompiuterį, todėl Šių kvadratų mlrd. Taigi pakanka pasakyti, tai tikrai ne pagal mastelį. Bet mes galime išlaikyti piešimo visi šie aiškiai ne pagal mastelį kvadratų, o tai kartu sudaro mano kompiuterio atminties. Dabar mes tiesiog daryti dot, dot, dot. Taigi, kitaip tariant, kai aš dabar greitai vartotojas su get eilutę man eilutę, kas atsitiks? Jei vartotojas įveda į "labas", kuris baigiasi iki H-E L-L-O. Bet tarkime, Tada vartotojas tipai - Tiesą sakant, aš nepadarė Apie nes mes klausia už jų pavadinimų. Taigi eikime atgal, jei aš galiu tai padaryti. Taigi, jei aš tipo D-A-V-I-D mano vardui, tačiau primena, kad antroje eilutėje kodas buvo gauti eilutę vėl gauti savo mokykloje. Kur yra tas žodis, kad vartotojas tipai ketina eiti toliau? Na, gal jis ketina eiti į H-R-V-R-D. Taigi, nors aš sudarytas kaip dviejų eilių, tai tik visa krūva baitų jūsų kompiuterio RAM. Yra problema dabar, nes dabar, jei aš naudojant RAM tai labai protinga bet tarsi naivus Beje, ką tu gali akivaizdžiai nėra atskirti? Kai vienas pradeda ir kur vienas baigiasi, tiesa? Jie rūšies nyksta kartu. Taigi paaiškėja, kad kompiuteris to nedaro. Leiskite man iš tikrųjų slinkti atgal laiku į Keli ženklai, o vietoj Harvardo vyksta iš karto po vartotojo vardu, vartotojas iš tikrųjų gauna, už scenos, specialus simbolis įterptas kompiuteris jam ar jai. / 0, kitaip žinoma kaip nul pobūdžio įkyriai vadinamas N-U-L, o ne N-U L-L, bet rašote kaip / 0. Tai tiesiog visi nuliui bitai yra žymeniu tarp pirmojo žodžio, kad vartotojo atspausdinti ir sekundę. Taigi Harvardo tikrųjų dabar baigiasi nes tai simbolių seka ir dar vienas / 0. Taigi, kitaip tariant, turėdami jų kontroliniai dydžiai, aštuonių artimos nulinės bitai, dabar galite pradėti atskirti vieną simbolį nuo kito. Taigi visą šį laiką, kas buvo "labas" yra iš tikrųjų "labas" su / 0, ir tuo tarpu, gali labai gerai būti gana šiek tiek daugiau RAM viduje kompiuterio. Leiskite man padaryti vienas kitas dalykas dabar. Pasirodo, kad visi šie kvadratų mes buvo piešimo, jie, taip, stygos, bet apskritai, šie dalykai yra matricos. Masyvas yra tik atminties riekė tai atgal atgal atgal į nugaros, ir jūs paprastai naudoja masyvą būdu Šio kvadratinį laikiklis notacijos. Taigi, mes ketiname pamatyti šiuos gana didelis per tam tikrą laiką, bet leiskite man eiti į priekį ir atverti, tegul jį vadiname amžiaus. Ir pastebėsite, ką mes galime padaryti su tie patys triukai, mažai šiek tiek daugiau sintaksė čia. Taigi šios programos 17 eilutėje - Tiesą sakant, leiskite man paleisti programą pirmą kartą todėl mes galime pamatyti, ką šis dalykas veikia. Leiskite man skambinti, kad amžinybę sudaryti šią programą. . / Amžiaus. Kiek žmonių yra kambaryje? Pavadinkite tai trys. Amžius pirmojo asmens? 18, 19 ir 20. O dabar šiek tiek juokingai, aš tiesiog padarė programą, kuri amžių tuos trys žmonės. Taigi ten aiškiai galimybė tam tikrą įdomus aritmetika čia. Laimei, matematika yra teisinga. 18 išvyko į 19, 19 buvo iki 20 ir kt. Bet ką iš tikrųjų reiškia būti iliustracinio čia yra kaip mes saugoti šių trijų žmonių amžiaus. Leiskite man padidinti ne kas čia vyksta. Taigi, pirma, šių pirmųjų eilučių turėtų būti gauti gana pažįstamas. Aš tiesiog paskatino vartotojui žmonių skaičius kambaryje. Tada aš naudoju gauti int ir daryti, o į tai padaryti ir vėl ir vėl ir vėl. Mes matėme, kad modelis ir anksčiau, bet 27 eilutėje yra nauja ir tikrai gana naudinga, ir bus labiau naudinga. Atkreipkite dėmesį, kad tai, kas skiriasi pagal 27 tai, kad aš, atrodo, skelbiantis int vadinamas amžiaus, tačiau palaukti. Tai ne tik int amžiaus. Yra šie laužtiniuose skliaustuose, kurio viduje yra n. Taigi laikiklis n šiame kontekste, o ne viduje printf čia, bet šiuo vieninteliu linijos 27, ši eilutė yra sakydama: 'Leisk man n int, kurių kiekvienas yra tipo int. Taigi tai yra kaušas, taip sakant,, šiuo atveju, trys sveikieji skaičiai atgal į atgal atgal, kad galėčiau efektyviai turi tris kintamuosius. Alternatyva, kad būtų aišku, būtų tai. Jei aš norėjau pirmą studento amžiaus, galiu tai padaryti. Jei aš norėjau antra studento Amžius galėčiau tai padaryti. Jei aš norėjau trečioji studento amžiaus, galiu tai padaryti. Ir neduok Dieve mums reikia kiekvieno žmogaus amžiaus šiame kambaryje - Aš turiu galvoje, tai yra iš kopijos daug gi, įdėti vėl ir vėl ir vėl. Ir plius kai aš sudaryti šią programą, jei kitas studentas eina per iš tos duris, dabar mano numeris kintamųjų yra neteisinga. Taigi, kas yra malonu apie masyvo yra kaip Kai tik pradėsite jausti save kopijuoti ir įklijuoti, šansai yra, kad tai ne geriausias būdas. Masyvas yra dinamiškas potencialiai. Aš nežinau, iš anksto, kiek žmonių ketinate būti patalpoje, bet aš žinau, man reikia n iš jų, ir aš išsiaiškinti, n, kai ateis laikas. Šis kodo eilutę dabar reiškia, duok man riekė atmintis, kuri atrodo taip kur dėžių skaičius ekrane visiškai priklauso nuo n, kad vartotojas turi įvesti in Taigi dabar šios programos dalis yra iš tikrųjų labai panašus į tai, ką mes tiesiog padariau su simbolių. Pranešimas turiu už linijos pradedant 30 eilutėje. Taigi iškart po Gaunu masyvas, aš kartoti nuo m lygus nuliui ne daugiau kaip n. Turiu tik tai pamokantis printf pranešimą tiesiog pasakyti, duok amžių asmens #% aš, todėl numeris vienas, numeris du, skaičius trys. Ir kodėl man tai padaryti? Atvirai kalbant, žmonės nori skaičiuoti nuo vieno On Up kadangi kompiuterių mokslininkų, nulio iki. kompiuterių mokslininkai nesiruošia naudoti tokio pobūdžio programa, todėl mes vyksta tiesiog pradėti skaičiuoti bent vienas, kaip įprasta žmonėms. Ir dabar atitinka 33, pastebėti šiek tiek kitoks gabalas sintaksė. I-ojo amžiaus toje tipo kintamasis masyvas ketinate gauti int. Ir dabar, galiausiai, tai tik aritmetinis čia. Aš nusprendžiau atskirame kilpa reikalauti kai laikas eina, o dabar tai atskiras kilpa, šios eilutės vykdyti. O per metus, asmuo būsiu aš metai, bet pranešimas, tai nėra kintamąjį i. Tai dabar% I int. Ir pranešimas pirmuoju vietos rezervavimo ženklą, aš prijungti i plius 1, taigi tikimės kaip normalus žmogus. Ir tada dėl jų amžiaus verte, jei i metai, aš amžiaus laikiklis i - ir kodėl aš darau plius vienas čia? Jie tiesiog metų. Tai mano kvailas pasirinkimas programas. Jie tiesiog metų vienerių metų laikotarpiui. Galėčiau įvesti bet kokį skaičių šio Aš iš tikrųjų noriu ten. Taigi, kas iš tikrųjų visi aktualumas čia? Na, leiskite man iš tikrųjų pereikite atgal čia ir dažų paveikslėlį apie tai, kas laukia priekyje. Ką mes daryti su mūsų kita Problema nustatyti du yra žymėjimą pasaulis kriptografija. Taigi tai yra simbolių eilutė, todėl seka daug simbolių, ir ką tai sako? Tai ne internetinis variantas skaidres. Taigi, aš teigia, kad tai sudaro tai, kvaila reklama iš daug metų prieš, kad iš tiesų gali priminti vienas iš jos kilmę. Taigi tai yra šifravimo pavyzdys arba kriptografija. Pasirodo, kad jei norite iš tikrųjų siųsti informaciją ar dalintis informacija su žmogumi saugiai kaip, pavyzdžiui, šį pranešimą, galite peštynės raides. Tačiau paprastai žodžiai yra ne plakta atsitiktinai. Jie išgrynintas vienaip ar pasikeitė tam tikru būdu, kad: - Oi. Tai įdomus spoileris kitą kartą. Taigi galite map kas, matyt, O B. pranešimą, kad linijos iki kapitalizacijos išmintingas. Matyt r tampa el. Matyt F-H-E-R tampa S-U-R-El. Taip Pasirodo, ten kartografavimo ir Šiuo atveju yra gana kvailas kartografavimo, jei kas nors suprato jį? Tai yra kažkas, vadinamas Burna 13 Sukite 13. Tai šifravimo stupidest mechanizmai, nes jis tiesiog tik į raides po vieną kas 13 priduria: kvaila ta prasme, kad jei jūs tiesiog turi daug laisvo laiko tiek ant rankų ir pieštuku, arba jūs tiesiog manau, kad per galvą, galite pabandyti visi galimi atnaujinimai - Vienas, du, trijų, taškas, taškas, taškas, 25 tiesiog pasukite visą abėcėlę, o galų gale, jums išsiaiškinti, ką šis pranešimas. Taigi, jei jums padarė kažką panašaus į tai pradinėje mokykloje artimųjų laiškus į jūsų geriausias draugas, jei jūsų pradinėje mokykloje mokytojas tiesiog perskaitykite pranešimą ir brutalia privertė sprendimą, galite Dotarłeś Kadangi šis atsakymas. Dabar, žinoma, realiame pasaulyje, kriptografija yra daug sudėtingesnės. Tai fragmentus kompiuterinė sistema, kuri turi vardus ir slaptažodžius, nes beveik visi mūsų daryti, ir tai, ką jūsų slaptažodis galia atrodys, jei saugomi kietajame vairuoti bet užšifruota. Tai ne tik raidžių rotacija, Yra B ir B yra C, tai daug sudėtingas, tačiau jis naudoja kas paprastai žinomas kaip slapto rakto kriptografija. Ši nuotrauka pasako taip istorija su kelių piktogramos. Kairėje pusėje, mes turime tai, ką mes paskambinsime paprastojo teksto. Atsižvelgiant į kriptografiją, paprasto pasaulyje tekstas yra tik pradinis pranešimas parašyta anglų arba prancūzų kalba ar kita kalba apskritai. Jei norite užšifruoti ją, mes pereiti tai pavaizduotomis piktogramo per Spynos, todėl kai rūšies algoritmą, kai funkcija ar programa, kad kažkas rašė kad scrambles raidės tikiuosi daugiau complicatedly nei tiesiog pridedant 13 į kiekvieną iš jų. Ką jūs gaunate iš minėto proceso viduryje yra vadinamas cyphertext. Taigi, kokios sexy žodį. Tai tiesiog reiškia, kad ji užkoduota portalo paprastąjį tekstą. Ir tik tada, jei tą pačią paslaptį, 13 ar minus 13, tu gali iššifruoti kaip tokia žinutė. Taigi problema nustatyti du, tarp dalykų, jums tai padaryti, jei į Hacker Leidimas, jums teks rašyti kodą kreko šiuos slaptažodžius, suprasti, ką jie ir kaip jie buvo užkoduota, nors mes duoti jums šiek tiek Vadovavimo pakeliui. Be Standard Edition, mes pristatome iš šifrai pora, šifravimo mechanizmai, vienas vadinamas Cezaris, vienas vadinamas Vigenere, kad vis dar keičiančiuose šifrai, kur tampa kažkas, B tampa kažkas, bet turite tai padaryti programiškai nes ten tikrai bus paslaptis Pagrindinis dalyvauja kuris paprastai skaičius arba raktinį žodį, kad tik siuntėjas ir jų gavėjas pranešimai turėtų suprasti. Dabar, tai iš tikrųjų turi įsikūnijimų realiame pasaulyje. Tai, pavyzdžiui, yra mažai našlaičių Annie paslaptis dekoderis žiedas, ir jūs iš tikrųjų gali įgyvendinti šias keičiančiuose šifrai - Tampa kažkas, B tampa kažkas - su ratų poros vienas iš išorės, vienas viduje toks, kad jei jūs pasukite ratuką arba žiedas, jūs iš tikrųjų galite liniją iki laiškai su skirtingomis raidėmis, gauti slaptą kodą. Ir taip kaip šiandienos Įspūdingos filmą, ką aš maniau aš padaryti, tai tiek Perjungimas, kad jei jūs įjungtumėte TV gruodžio 24 d, galite žiūrėti filmas skelbimą nauseum už 24 valandas iš eilės. Bet šiandien, aš jį atidaryti čia ir mums tik dvi minutes pedagogiškai svarbūs Kalėdų istorija su šiek tiek kolegos pavadino Ralphie. [VIDEO PLAYBACK] , Tai būtų žinoma, kad visi kartu ir kiekvienas, kad Robertas Parkeris skiriamas narys Little Orphan Annie paslaptis ratas ir turi teisę visi su pagyrimu ir nauda vyksta tuo. -Pasirašyta Little Retųjų Annie. Parašu, Pierre Andre rašalu. Garbės ir nauda jau tuo devynerių metų. [Šaukė per radiją] Nagi, tegul grįžti į ją. Man nereikia viską, kad džiazo apie kontrabandininkai ir piratai. -Klausyk rytoj naktį sudaryti nuotykių juoda piratų laivas. Dabar atėjo laikas Annie Secret Žinutė jūsų, nariai apie slaptą ratą. Atminkite, kad vaikų. Tik nariai Annie Secret Circle gali iškoduoti Annie slaptą žinutę. Atminkite, Annie priklauso nuo jūsų. Nustatykite savo smeigtukai B2. Čia yra žinutė. 12, 11, 2 - -Aš esu savo pirmąjį slaptam pasitarimui. -25, 14, 11, 18, 16 - -Pierre buvo puikia garso vakarą. Galėčiau pasakyti, kad šio vakaro pranešimą buvo tikrai svarbus. -3, 25. Štai nuo Annie pati žinutė. Atminkite, kad nereikia niekam. -90 Sekundžių vėliau, aš būnu tik kambarį name, kuriame iš devynių berniukas gali sėdėti privatumo ir iššifruoti. Aha, B. nuėjau į kitą. E. pirmasis žodis yra "būti". S. Tai buvo dar lengviau dabar. U. 25. Štai R. -Nagi, Ralphie. Aš turiu eiti. -I'll būti, nustatančio teisę Ma. Gee nusišvilpti. -T tinklą. O. Būtinai. Būtinai ką? Koks buvo Mažasis Retųjų Annie bando pasakyti? Būtinai ką? -Ralphie Randy gavo eiti. Ar galite išeiti? -Gerai, Ma. Aš būsiu tiesiai iš. -Aš vis arčiau dabar. Įtampa buvo baisi. Kokia ji buvo? Planetos likimas gali pakabinti ant plauko. -Ralphie, Randy Gotta Go ". -I'll būti teisūs už šaukė garsiai. -Beveik ten. Mano pirštai nuskrido. Mano protas buvo plieno spąstai. Kiekvienas porų vibruoja. Tai buvo beveik aiškus. Taip, taip, taip, taip, taip. -Būtinai gerkite Ovaltine. Ovaltine? Prastas komercinis? Šunsnukis. [PABAIGA VIDEO PLAYBACK] GARSIAKALBIS 1: Tai CS50, ir kad bus problema nustatyti du. Pasimatysime kitą savaitę. SPEAKER 2: Tuo Kitas CS50, tai atsitinka. GARSIAKALBIS 1: Taigi viena tema turime ne pažvelgė į iki šiol yra kad funkcijos rodyklės. Dabar funkcija rodyklė yra tik iš visuomenės adresas funkcija, tačiau panašiai kaip - sūnus -