>> 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 š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?
>> 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 -