[Predvaja glasba] SPEAKER 1: To je CS50 in to je začetek dva tedna. Torej, kaj je potopite desno v nekaj da je buggy, tako rekoč. Torej, tukaj je CS50 IDE in sem potegnil vnaprej to screen-- prekleto ga. Opozorilo spojler. V redu. Sem potegnil ta zaslon tukaj, ki ima zelo preprost program. Če smo se pomaknite navzdol, najbolj to je samo komentira, ampak tukaj v vrsticah 13 do 17 imamo program. To je skladenjsko veljaven, kar pomeni, če Sem ga sestaviti, da bo sestavil in teči, vendar je buggy. Ta program navaja v pripombah do vrha, da bi morala natisniti 10 zvezd, vendar pa ne. In glede na vaše izkušnje, ali kmalu izkušnje z C, lahko logično razbrati zakaj to je v resnici, Buggy? Ja? OBČINSTVO: To gre od nič do 10. To je 11 ponovitev. SPEAKER 1: Ja. Torej, to se dogaja od nič skozi in enako 10, kar seveda je 11 ponovitev. Torej, to se dogaja, print, res, 11 zvezd. Torej, konvencija računalništvo V večini programskih jezikov je, res, samo da bi začnemo na ničli, ampak računam do, vendar ne prek Vrednost, ki jo dejansko skrbi. Zdaj, to je ena stvar, ki traja malo uporabljajo za pridobivanje in tudi nič, zasnovan kot je za ne programerjev ali brez računalnika znanstveniki in za otroke predvsem je zasnovana tako, da imajo začnete štetje običajno v enem. In to je v redu. Lahko popolnoma začetek štetja na eni, če je to bolj udobno. In štetje do preko 10, vendar boste spoznali predvsem ta teden in naprej, da samo zato, veliko stvari v programiranju predvidevamo, da je 0 prva mestna, s katero se šteje, da boš lažje samo da bi dobili v to navado zagon od nič in štetje do vrednosti vas skrbi zdaj od zaslužiti iti. Tako, da je bil določen, da. Smo spremenili manjši ali enak nekaj manj kot. Oglejmo si na Drugi primer tukaj. Torej, ta program tudi trdi v svojem Komentarji up top, da bi morala natisniti deset zvezde, vendar pa ne. Kaj je bug tukaj? Torej, what-- in žal, bodimo jasni. 10 zvezdic. Enega v vsako vrstico, vendar pa ne. Torej, v resnici, naj gredo naprej in zbira ta, ker je malo manj jasno, na osnovi tega opisa. Naj gredo v našem imeniku izvorne kode. Naredite Buggy eno piko poševnica, hroščat enega. OK, vidim 11 zvezd, ki še vedno problematična, ampak oni so tudi vsi v eni vrstici. Kaj je problem tukaj? Ja. OBČINSTVO: [neslišno]. SPEAKER 1: Ja. Torej je to subtilnost, ki jo lahko spomni me tako kratko omembo. Čeprav vse izgleda lepa, in to je lepo razčlenjena, in to nekako izgleda-Scratch všeč v tej liniji 16 in 17 sta, res, razčlenjena na podlagi, da je za zanko. To je nepomembno. Računalnik ne vedeti ali videti bel prostor. Prazen prostor je samo za nas ljudje, slogovno. Računalnik ne vem, če imate zaviti oklepaji, ki bi, seveda, popraviti to težavo. Torej, če bi dejansko šel v in izrecno dal v teh zavitih oklepajih da bi rešili ta problem, ki ga kar jasno prevajalnik da sem dejansko želijo izvesti dve vrstic kode spet, in znova in znova. Toda kaj je temeljna razlaga? Prav? Mi pravzaprav ne potrebujemo zavitimi oklepaji ves čas, čeprav je verjetno najbolje praksa, da se v to navado vseeno čeprav dodaja dva Znaki kodo. zakaj? OBČINSTVO: [neslišno]? SPEAKER 1: Ja, tako da je druga rešitev v celoti. Prav? Še posebej, če se na prvi pogled ne boste res cenim, kaj se dogaja. No, vsekakor smo lahko samo narediti dve stvari naenkrat in le preprečili problem v celoti. In to je v redu, zdaj pa, za današnje namene, kar je razlaga za napako? Zakaj so vse te zvezde na eni liniji? Ja? OBČINSTVO: Zdi se, da če imate eno vrstico kode, lahko to storite brez teh. SPEAKER 1: Točno tako. To je samo človek konvencija. Ljudje se zavedajo, da je to malo siten ali dolgočasno morali postaviti zavite oklepaje vse časa, če je vse, kar želite storiti se izvrši eno vrstico kode. Torej, ljudje odločili nekateri pred časom, da je to v redu. Če želite, da bi vse svoje zanke na samo tej eni vrstici, kot je ta, da je v redu z enotno podpičjem konec. Vendar pa lahko storimo samo ena taka linija brez zavitimi oklepaji. Torej, ko CS50 slogovni priročnik saj vas bodo opozarjajo, boste videli, da je v splošnem je dobra navada priti v to, dokler niste zelo udobno potepuške iz teh vrst konvencij in delaš svojo stvar. Tako dolgo, kot si jaz dosledni. In bomo govorili več o tem stil malo kasneje danes. Torej, naj odprejo en drug program. Seveda pa bi morali določi, da je 10, kot dobro. Naj gredo naprej in pisati pravi quick program, da bom poklical, recimo, zanka dot C. Torej, zanka dot C. In v zanko dot C bom imela, vključujejo Standard I / O dot H int glavno praznino. In zdaj kaj je samo naredil, res, zanka. Torej, 4 int sem dobil nič. I je manj kot recimo 50. I plus, plus. In potem je tukaj dovolimo pojdi naprej in ne natisnejo F. In potem hočem natisniti I ter nova linija, podpičje. In to je treba natisniti vse številke od nič do 50? Nekaj ​​glavo prikima. Nekaj ​​nos. Kaj je bug že? Kaj je preprosta napaka, sem naredil? Ja. OBČINSTVO: [neslišno]. SPEAKER 1: Ja. Torej, čeprav je videti kot je to tisto, kar nameravam, opozarjajo, da je tudi jaz samo ASCII znak. Torej, če rečem, print "I." To je dobesedno dogaja na I. tiskanje Torej, če sem želeli plug-in v ogrado Vrednost sem dejansko morali to storiti in nato plug-v vrednost I dinamično. Drugače sem le, da bo Dobiš 50 I na zaslonu. Torej, naj gredo naprej in bi to zanko, da bi sistem deloval, in seveda, imamo vse pot skozi 49. In če sem se pomaknete nazaj v čas, vidim število nič na začetku. No, kaj pa če sem nekako zamočil? Kaj, če bi to naredili? Samo zato, ker nisem razmišljal. Kaj je ta program. Ko ponovno zbrati in teči, boš naredil logično? OBČINSTVO: Nič. SPEAKER 1: Nič. Zakaj je tako? OBČINSTVO: I je namenjen za nič. Torej, pogoj je napačen. SPEAKER 1: Ja, točno. Vse je koda pravilna, skladenjsko. To bo zbrati, to Koda bo potekal, vendar to ni boš naredil nič uporabnega ker sem inicializacijo sem nič. Nato smo preveriti, je, da sem več kot 50 let? Očitno je, da ne, to ni. Torej zanka nikoli ne izvede na vseh. Kaj pa, če naredimo nekaj malo bolj nepremišljeno? Torej, kaj če mi je všeč int sem dobil nič. In zdaj mi uporabite časa zanke, ki je bil še en pogoj. In medtem, ko sem rekel, ko sem je večja od ali enaka nič, in nato v tu iti naprej in shranite datoteko, da zanko. In jaz sem na tem, da bi sistem deloval. Kaj bom, da vidim to Čas z while zanko? Ja. OBČINSTVO: neskončno zanko? SPEAKER 1: neskončna zanka? Ja, in zakaj? OBČINSTVO: Ker je vedno nič. SPEAKER 1: Ja. Torej, jaz inicializiran kot nič. Seveda je vedno večja ali enak 0, kot rezultat. Torej, jaz sem le, da bo glej to neskončno. In zdaj, ta je prišel gor, ko ali dvakrat vodjem tečaja je. Kaj se zgodi, ko vas imajo neskončno zanko? OBČINSTVO: Nadzor C. SPEAKER 1: Ja. Torej Control C bo sčasoma odzvati. Na žalost, smo natisne milijone in milijone ničel že in tako računalnik ima nekako dobil pred menoj. Torej, to se dogaja, da prezreti me za malo. Ampak, če ste pravkar udaril Nadzorna C nekaj krat na vašem Mac ali PC tipkovnico, sčasoma pa naj bi, seveda, prekine. In če ne, vam bomo prikazali nekaj Tehnike pred dolgo, kjer vas lahko dejansko prisilno ubiti programe, podobno kot v operacijskem sistemu Windows in Mac OS, če je to potrebno. Ampak poskusimo nekaj drugega. Oglejmo dejansko prirastek I. Ali to še vedno dogaja, da je neskončno? Naj teče to. In sedaj lahko nekako glej, kaj se dogaja. Tudi to je neskončna zanka. Ampak to je malo trik vprašanje. Bo to za tiskanje številk za vedno? OBČINSTVO: No. SPEAKER 1: No. Zakaj? Slišal sem nekaj številk tukaj. Someone-- Ja. OBČINSTVO: Nimate dovolj bitov res nadaljuj. SPEAKER 1: V redu. Torej nimam dovolj bitov nadaljuj. Torej, kaj se bo zgodilo? To je le, da bo ustavil? OBČINSTVO: Na neki točki bo zaprta the-- SPEAKER 1: To bo zaprta zanka dol, ampak zakaj? Kaj se bo zgodilo na Zelo konec svojih meja? Ja? OBČINSTVO: To bo cikel nazaj na negativne številke. SPEAKER 1: negativne številke, ali če smo le zdravljenje pozitiven, nič vsaj. Torej, ja, absolutno. Spomnimo se, da smo videli zadnji čas, da se, če vas prirastek tvoje bitov enega preveč krat, in si tam ospredje overflow zmogljivost vašega int ali glede na podatkovni tip je, da ste bo ovijte okoli, verjetno, dva negativna števila. Ali pa, če ste jih določite, da je vaš Razpon bi moral biti pozitiven samo, ki jih lahko storite, vendar smo ni videl, da je še ni, boste morda na koncu vsaj nazaj na ničlo. Kljub temu, da dejansko ja. V tem primeru negativnega številke, pri čemer zanka se dogaja, da prekine ker se ni v bistvu večja ali enaka nič, če je negativna. Torej, žal, kako dolgo bomo morali čakati? Zdaj smo do kaj, 2 milijona-ish? Smo kot 2 milijardi, bomo morali počakati dokler ne bomo dejansko videli ta simptom. Vendar smo lahko videli malo hitreje, maybe-- poglejmo, če lahko prekinejo. Daj no. Tudi meniji se počasi pojavljajo. V redu. Torej, bomo prišli nazaj, da je pred dolgo. To je dobra time-- prekleto, mladički. To je dober čas za nekaj objav. Torej, če boste morda želeli da se vključijo v YHack, kar se da dogodek sponzorira naše prijatelje na univerzi Yale. In, seveda, nekateri seveda je TFS na univerzi Yale, so vključeni v to. YHack je mednarodna hack-a-thon gostila in odločilo, na univerzi Yale, ki združuje 1.500 podobno mislečih hekerji in ustvarjalcev vseh celega sveta. Če je to v interesu, si oglejte tukaj. Če je to preveč na kratko o zaslon, si oglejte današnje diapozitive za URL za yhack.org. Torej, tudi nekaj hitrih obvestil. Torej, uradno bodo oddelki začetek Naslednji teden tu in New Haven. Imejte v mislih, boste dobili email kasneje ta vikend najbolj verjetno. To traja dolgo časa, za CS50 na oddelku, Glede na vse ljudi v razred in vsi gibljejo. In vse Poučevanje Fellows v nadaljevanju urniki so tudi še utrdi, vendar ostanite z nami za e-pošto, in če je potrebno se lahko ponovno oddelek tam po. Study.cs50.net. Torej, tudi če ste stalna udeleženec na odsekih, zavedaš, da skoraj vse sredstev, ki jih uporabljamo v oddelkih so javno dostopni na CS50 Študij na tem URL tukaj. Torej, če si kdaj želeli, da ponovno pregleda material, iz oddelka, ali brati naprej, ali pa ne moreš narediti, da nekateri teden, Zavedam se, da vzorec diapozitivov, in težave, in definicije, in več, so vse tudi tam. Uradne ure nadaljevala danes, in jutri, in v sredo, in četrtek preverite Seveda je Spletna stran za urnik. In tudi zdaj začenja Danes je CS50 pogovorite. Torej, če in ko imate vprašanja za med seboj ali za osebje tečaja je, in na splošno delujejo na neki problem set, Zavedam se, da vam ni nujno, morali obrniti na človeka naslednjo vas. Če ni nikogar tam, lahko stik z nami in sošolci spletu prek CS50 pogovorite. Torej, to je razprava odbor za tečaj, in spoznali, da je to je morda najbolje mesto za začetek, ko imate Vprašanja ko izven uradnih ur še posebej. Kosila se bo začela ta teden preveč. Na Fire in Ice [Neslišno] v New Haven. Oglejte si seveda je spletna stran, da bi RSVP. Prvi pride, prvi služi za to. Če ne boste dobili v tem tednu bomo naredili to najbolj vsak petek v času trajanja. OK, zdaj pa še beseda o razvrstitvi. Še posebej, ko vstopamo težave določi eno, ki je ta teden, in problem določiti dva in potem. Kako bomo šli o vrednotenju P sklopov in ocenjevanju njihove kakovosti? Torej, to je štiri osi, ki jih uporabljamo v CS50, in oni so ti štirje tukaj. Področje, ki se ujame na številčna Osnova samo koliko P niz ste reševanje. To je v grobem ujema z napora, in to je naš način zajemanja si poskusil polovica P nastavljen, vse P niza. To je enostavna, da bi dobili popoln rezultati na, če boste to storili, seveda, poskusite vsak vidik P nizu. Tako, da se vodijo v mislih. Pravilnost je točno to. Ali si kodo delo, kot je navedeno v specifikaciji in kot raztopino vzorca štabi " kažejo, da vaša koda treba dejansko deluje. Preverite, 50, če še niste srečal vendar je v P nastavite eno specifikacijo in bo na splošno vam DA / NE odgovore o tem, ali je pravilno kodo. Vsaj kolikor bomo da oceni temelji na testih da tečemo v tem programu. Dizajn je veliko bolj subjektivna. To je, kako dobro napisana, je svojo kodo. In to je nekaj, kar boste dobili boljši v daljšem časovnem obdobju, in to je nekaj, kar bomo zagotoviti več kvalitativne povratne informacije o. In z zasnovo bom morda pomeni pred dolgo morda mika, v nekaterih P nastaviti nekaj storiti loopingly, vendar, da imajo morda trije ali štirje, ali pet ugnezdena prednji zank ali ugnezdene medtem zank. Ki na splošno naj bi začeti, da bi si klečeplastvo in bi na splošno šteje slaba zasnova. In boste začeli videti v razredu in iz razreda dobrih načinov počne stvari, slabe načine početje stvari, ki lahko vse res, vendar ne nujno dobro oblikovana. Kot je pisanje eseja. Morda bi lahko dal besede na Stran, ki je slovnično pravilno, vendar esej ali teza oni v je le popolnoma nepovezano ali unpersuasive. In tako, da je lahko analogni v pisno svet slabega ali dobrega oblikovanja. In stil, preveč, je precej subjektivna. Ampak vsaj pričakujemo doslednost. To je, kako lepa je tvoja koda. Se stvari lepo zamaknjen? So vaše spremenljivke dobro imenovan / Ali vse vaših oklepajev in zavitih oklepajev usklajena, kot bi morale biti? Imamo vodnik CS50 slog kot problem set vas bodo opozorili na. Tisti, bolj udobno, so dobrodošli na potepuške od tako dolgo, kot ste sami dosledni. In tudi to je lekcija bomo okrepili v oddelku. Torej, če vse to je malo hitro, zavedaš set in profili P bo šel v bolj poglobljeno pred dolgo. Vendar na splošno imamo zelo malo žlic CS50. Rezultati so na splošno na lestvici od enega do tri, ali od ena do pet. Mi smo literally-- in ne morem reči, to dovolj v prvem tednu. Tri je dobro. Torej, čeprav, ja, trije pet normalno, matematično, Morda bi bilo 60 odstotkov ali kot D minus. Tri je dejansko dobro. In dejansko pričakujemo večina študentov v razredu da začnete izraz okrog dvojke in trojke, in štirice. Verjetno ne toliko petke. Ne preveč tisti. Ampak na splošno začeti v da sweet spot v krivulji tako da kot čas napreduje, tam je pravzaprav prostor za, in priložnosti za zgornji napredovanje. Torej, prosim, ne enačijo tri z 60%. To je veliko bolj abstraktne kot to. Formula, s katero smo izračunali stopnje se ponderirajo takole. Korektnost je vredno največ. Design je vreden malo manj. Style je vreden malo manj. In to na splošno ujame časa da gre v pridobivanje vsak od teh osi ravno prav. Style je super enostavna, mora biti zelo hitro, ampak to je enostavno navada da bi dobili leni o tem. Pravilnost lahko traja si večino časa. Preganja navzdol nekaj bug mogočnosti da to dodatno uro ali več, in tako je veliko prostora na koncu ujame to. In tako zdaj bolj resna beseda. Ker ima CS50 razlikovanje, za boljše ali še huje, o čemer morda bolje seznanili z vprašanji akademska iskrenost kot večina drugih predmetih. In res je, da mi je znano, da je bomo poslali več študentov, žal, za disciplinsko Vsako leto kot rezultat. Torej, v interesu polno razkritje, kaj je govoril na kratko o tem, kaj se dogaja v CS50, in kaj vas more storiti, in kaj lahko se zaveda. Torej, tukaj od leta 2007, ko je Sem podedoval tečaj, je število primerov Ad sveta. Ad Board je Harvard je disciplinska telo, ali zdaj Honor svetovalec, na katerega sta iz primeri, ko študentje narediti nekaj, kar seveda je predmetnik meni nerazumno. Ni pravi vzorec tu, bi rekel. To niha nad let, ampak na splošno to je število primeri, ki so navedeni. Število študentov da gre? Preveč razlikuje. Značilno je, da je lani za primer 29 študenti na Harvardu so Ad vkrcali, tako rekoč. 29 izmed njih sedanjih študentov, Dva od njih prejšnjih študentov, kdo smo sodelovanje na nek način neugoden. In potem v odnosu na odstotek, to je običajno okoli 3% razreda, ki se žal naredi te vrste odločb. Torej, lansko leto je bilo za 3,5% od CS50 je študentskega telesa da je Ad vkrcali, tako rekoč. Torej, kaj vse to pomeni? In kaj smo pravzaprav storili? Torej, za popolno razkritje, smo absolutno, saj računalniški znanstveniki, imajo programskih orodij na razpolago in to je zelo enostavno za nas, v pravičnosti, sošolci, da druge strani, ki niso prečkanje te vrstice prečkati primerjati vsako oddajo letos zoper vsako predložitev v zadnjih osmih letih. Software počne. In na koncu je človeške oči, ki se odločijo ali ne, da se nanašajo nekaterih pomembno za nadaljnje odločanje, ampak software gotovo pomaga. In to, odkrito povedano, zato, da mislim, da imamo tako velike številke v CS50. To ni zato, ker CS50 študenti ali CS študenti več na splošno so vse manj iskreni kot kateri koli drugi študenti, to je samo imamo orodja in tehnike s katero naj bi to prvo sredino. Ampak mi pazi o vseh teh stvareh kot tudi, še enkrat, v interesu priznava delo, ki je dal V s super večino razreda. In politika Tečaj je na akademsko poštenostjo, čeprav je kup odstavkov dolga s kopico krogel da so, upajmo, zelo berljiva, je res ne omejijo na razumen. In kar je najboljše pravilo, da nudimo up v predmetniku to je bistvo vsega dela, ki vas predloži ta seveda mora biti vaša. In res, v skoraj vseh tistih primeri iz za disciplinsko je bil zaradi nekaterih študentskega pozno eno noč običajno obrnil svojo kodo več dokončnih da sošolec, ki ga je sprejel v celoti ali pomembno le-teh. Ampak res, to je v redu. In res, v pisarni ur, plačilni listek papirja ste bili izroči, če ste prišli s pisarno ur zadnji teden spodbuja toliko. Ste popolnoma pozdravil in spodbujati da bi razpravljali o problematičnih sklopov s sošolci. Da pomagamo drug drugemu, ko kamen. Ampak na splošno pravilo naj bi bo to, "ko prosi za pomoč, lahko pokažejo svojo kodo za drugim, vendar vam uresničile ne sme videti. " Torej, z drugimi besedami, če sem borila z nekaj P set in sem sedel tam v jedilnici ali v knjižnici, ali v učilnici poskuša najti neko napako, Jaz lahko zagotovo pokazati moja koda na mojem zaslonu je oseba, ki sedi poleg zame vsekakor osebje, ampak tudi sošolec. Ampak, če je rešitev, ki moj sošolec ponuja je, oh, tukaj samo poglejte, kaj Jaz sem, ki prečka črto. In jaz bi si trditi, da je v splošnem razumna stvar za večino ljudi zelo enostavno spot linijo. In tako, glej predmetnik Za več podrobnosti. In zdaj eden bolj spornih vidikov od CS50 učnega načrta, ki sem mislil, da bi govoril v zaključku tukaj je tako imenovana klavzula obžalovanje. Torej, tukaj je vse v redu natisniti. Ampak na splošno smo videli V zadnjih 8 plus let da, res, skoraj vsi CS50 je primeri akademske nepoštenosti so bili posledica le slaba odločanja pozno ponoči. Posledica stresa, rezultat pomanjkanja prehranjevanja, pomanjkanje spanja, preveč P sklopov, preveč roki, preveč obveznosti. Stres izgradnjo v 2:00, 03:00 AM, 04:00, z rok grozila. Večina študentov v teh primerih so pravkar slabe odločitve da bi lahko zelo dobro obžalujem Naslednje jutro, če ne minut kasneje, ampak do lani ni bilo ventil za javnost, da bi lahko ti študenti dejansko odpirajo dejansko obravnavati problem z glavo, brez strahu pred škorenj iz kolegija v celoti. In, seveda, smo uvedli ta klavzula obžalujem lani, ki pravi, da če v roku 72 ur, tri dni, crossing nekaj linijo predpisano v predmetniku prideš naprej do enega izmed Seveda je glave in bomo pogovorili o tem. Tam so še vedno nekaj izid, v nasprotju s tem, kar je Poročali so, da ravno nasprotno. Še vedno je nekaj izid, ki je kazniva, ki jih seveda, splošno ničelne nastavitve v P niz ali ob drugo dejanje, ampak bomo, seveda, ročaj sebe in ne nanašajo pa višje so bile rezultat bi bilo veliko hujše. In, seveda, naj povedo, kaj se je zgodilo lani, v osmih letih, in zdaj devet let, za poučevanje tega predmeta in po igračkanje z različnimi gumbi, obračanja različnih klicanje preko preteklosti več let na akademsko poštenostjo, in videnje na podatkih ni očitnih vpliv, celo govori, kot je ta, to je roke dol najboljša stvar smo pedagoško uvedli V osmih letih skupaj te vrstice v CS50. 19 študentov je javilo v skladu s to klavzulo lani. Mi je ne ukrepa za sedem od teh študentov, določitev, da so bili po nepotrebnem zaskrbljeni. Niso imeli, v resnici, prečka linijo, vendar je bil dober klepet, da imajo kljub temu. Ničli smo 11 točk da niso bili predloženi. In v enem primeru smo vprašal študent narediti težavo nastavili. Ampak bolj prepričljiv, pošteno, s temi 19 klepeti, ki je bil tako več kot I Pričakuje se, da ima vsaka od njih 10 minut, da pa se morda uro dolgo, prinesel tudi prižgati številna vprašanja v zvezi z družinske zadeve, vprašanja prijatelj, duševnega zdravja vprašanja da smo se potem ukvarjajo, z študentovega blagoslov, ki prebivajo dekan, ali prijatelji, ali katera koli druga številka podpornih sredstev. Tako, da je to daleč ena najboljših uporab našega časa in eden izmed najboljših posegov. S tem je dejal, da ni imel vhod na stopnjo detekcije akademske nepoštenosti bolj na splošno. In upam si trditi, to podskupino študentov, lani je demografsko, da smo prej nikoli opredelila pred in še nikoli ni povezan s prej. In tako, so bili čudovite zgodbe o uspehu čeprav so bile vložene na svetlobo v manj kot optimalnimi pogoji. Torej, imejte to v mislih kot ste jih naredili, morda, nekatere slabe odločitve sami pozno ponoči, da je uporaba tako dolgo kot študent v tej situaciji lastnik in pridejo naprej, tako da bomo lahko imajo te vrste klepet in z njo ravnati na način, ki je izobraževalne in nato bomo lahko pustili za nami naslednji dan. Torej, brez odlašanja, vzemite rob off tega pogovora, Razlog mladički so gor je samo prebiti led za trenutek. In žal, oni so vsi spijo, ampak kaj naj bi se zgodilo tukaj je vsakdo naj da awe in vrsta sprostite Po tej zelo težki pogovor. Ampak očitno sem dal mladički spati. Ampak, če greš na CS50 je Spletna stran poševnica mladički, si jih lahko ogledate cel dan. Posebej morda 2:00, ali 3:00 ali 4:00 ponoči videti malo stres olajšave tam. Tako da je poševnica mladičke. V redu. Ni bilo tako zabavno? V REDU. Torej, nazaj k neki računalnik znanost, če smem. Torej, se spomni, da je zadnjič, ko smo začeli ne išče le na glavni, ki je privzeta funkcija je, ko zelena zastava kliknili enakovredni, vendar smo začeli tudi kratko pisanje nekaterih naših lastnih funkcij. In doslej nobena od teh funkcij so bila zlasti velika ali mesnat. Boste dobili v tiste večje Funkcije verjetno, P sklopa 2, P določi 3, definitivno P nastavite 4 in naprej. Zdaj je večina vaših programov, če že ne vse od njih, zagotovo za P sklop 1 se lahko izvede v celoti, v glavnem. Če vaš program je le pet vrstic, 10 vrstic, celo 20 vrstic, popolnoma razumno napisati vse v glavni in ne čez zaplete kodo, ampak kaj smo danes počne in naprej poskuša tudi uvesti nekaj dobrih tehnik oblikovanja tako da, kot je vaša koda postane bolj zapleteno in tudi težave hočeš rešiti dobili težje in bolj zanimivo imate, nekako, orodje v vašem orodjarni, s katerim oblikovati dobre rešitve za tiste. Torej, kaj je na hitro pogledamo nazaj ta program od mojega zadnjega tedna, ki je funkcije nič pika C in opazili, da je precej enostavno, izgleda, da je ta z dvema funkcije, glavni in ime s tiskanimi črkami. In razmišljam nazaj ali morda reverse danes inženiring, kakšna je bila motivacija za uvedbo funkcijo v liniji 28 klical Ime print? Ali kaj je bil to primer v Pogoji načelno ali takeaway, če bi. Nekateri šumi. Kaj? Ja tako Funkcionalna razpadanja je nekako fancy način rekel, razpadejo svoj program v njegovih sestavnih delov in nato uporabite tiste dele sestaviti celoto. Tako, da je tudi nekako zalogaja že, vendar je to morda celo boljši primer nečesa pravkar klical abstrakcija. Prav? Črpanje se bo eden od ponavljajočih se tem v CS50 in tudi računalništvo bolj splošno, saj je tehnika, s katero lahko rešili Težave bolj učinkovito, saj vas Lahko napišete rešitev več intuitivno in na način, da je na tehtnici in je razumljivo, z drugimi ljudmi. Kaj mislim s tem? Torej, verjetno je veliko bolj berljivo gledati program, kot je ta, zelo kratka, čeprav je. Ko vidite na liniji 22, da obstaja funkcija se imenuje, ime print. Sam to ime pove kaj počne. Ta funkcija je očitno potrebno vhod med njenimi oklepajih in očitno počne nekaj, predvidoma natisne ime. In tako, čeprav smo absolutno bi morali storiti kaj smo naredili pred tednom dni, ki je bil vzemite to dejansko vrstico kode, znebiti tega, in dobili znebili to vse skupaj, smo nekako načrpane stran pojem tiskanje imena. Briga me, če uporabljate tiskalne def. Briga me, če imate odstotkov S in poševnica nazaj N. To so neverjetno Skrivnosten podrobnosti. Kaj mi mar kot programer je tiskanje imena. In tako, kaj je boljši način za to, da kot ga kliče funkcijo, ime tisk? In tako, da je bil eden od motivov za kaj takega počneš. Making koda bolj berljiva, več za enkratno uporabo, in tudi samo opisno. Zdaj pa si oglejte v drugem primeru ki je bil funkcije ena, ki smo jih imeli tukaj. Torej, ta je morda še bolj prepričljivi, ker v tem primeru Nočem, da bi le dobili int. Želim, da bi dobili pozitiven int. In se je izkazalo, da bi dobili pozitiven int moraš narediti kup legwork. Prav? To ni preprosto ena vrstica klic, kot je bilo ime print, kar je sicer manj prepričljivi. Da bi dobili pozitivno int, logically-- Naj se pomaknete nazaj skrivati ​​to. Kaj morate storiti? Tako kot vsa orodja, ki jih imajo v tem trenutku Stvari, kot so tiskani def iz standarda Knjižnica in tudi iz CS50 knjižnici imamo Get Int, in Get Float, Get Long Long, dobili String, vendar je le eden, nem, zdaj je Get Int. Torej, če je le orodje, ki ga ima V vašem orodje polje je Get Int, kako bomo šli o izvajanju to, da bi dobili pozitiven int? OBČINSTVO: Ustvarite dnevnik in preverite o tem, ali je vhodni da dobimo je bil pozitiven ali ne. SPEAKER 1: Popolno. Točno tako. Drugo orodje imamo v našem toolbox od teden ali dva nazaj je samo zanka konstrukt. In tako, ja, če bomo uporabili nekaj časa zanka ali naredi medtem zanke ali prednji zanka smo lahko verjetno pobegniti s katerim koli od tistih v neki obliki. Mi lahko izvajajo pojem get Pozitiven int, ki jih samo z uporabo Get Int, in potem kar naprej kliče znova in obdržati gnjaviti uporabnika dokler on ali ona dejansko nam daje tisto, kar želimo. In zdaj, to abstrakcija procesa dobili pozitivno int v odvisnosti imenovano Pridobite Pozitivni Int je malo bolj prepričljiv, ker poglej tole. To so, kot 10 plus vrstic kode, ki sodelujejo pri pridobivanju pozitivne int, in res ne skrbi, kako si to naredil. Vse me skrbi, je, da vas lahko to storite, in zato sem imel skrite vse te podrobnosti izza Funkcija se imenuje Get Positive int, da Dejansko je to storila, medtem ko zanke. In glej prejšnji teden za sintakso tam, ampak to šele izjavlja N, in ga natisne ven navodila za uporabnika. Poziva Get Int in potem preveri Ponovno je to stanje, in ponovno, in znova, dokler uporabnik ne sodeluje. Torej, zdaj, nekaj pregledih prištevnosti. Za tiste, ki morda pozna z nekaj programiranja, zakaj je N izjavil, zakaj sem ustvaril N izven Opravilo while zanka? Zakaj je to na liniji 29 in ne na kot 33, na primer. OBČINSTVO: Ker, ko vas jo razglasi zunaj, tako nekako več, večji scope-- SPEAKER 1: Dobro. OBČINSTVO: --and če razglasi je v notranjosti zanke, [neslišno] ker ne ve o tem. SPEAKER 1: Točno tako. Če sem lahko simplify-- to je vprašanje obsega. In področje se nanaša na kontekst v ki spremenljivka obstaja ali je uporabna. In lepo pravilo tukaj je, da na splošno, ko izjavi, ali pa ustvarite spremenljivka ga lahko uporabljate le znotraj od najbližje sprejemajo zavitimi oklepaji. Torej, kaj to pomeni? Če sem, namesto, razveljavite to in iti z nekaj, da se počuti nekoliko enostavnejši. Prav? Line 32 samo izgleda čistejše, da me zdaj. Delam obe stvari na enkrat, nato dodeljevanje desno roko na levo roko. Problem sedaj temelji na da opredelitev področja je ta N se lahko uporabljajo v vrsticah 31 in 32 znotraj te zanke kjer pa jih ta opredelitev Lahko se ne uporablja? V skladu kaj? Ja. OBČINSTVO: 35. SPEAKER 1: 35. Zagotovo ne 35. In kje tudi drugje? OBČINSTVO: 34. SPEAKER 1: Tudi 34 je problematično, saj je izven zavitimi oklepaji. In tako v resnici, da vidimo, kaj se zgodi. Prav? To se lahko zdi malo intuitivno, ali morda ne, ampak poglejmo, kaj prevajalnik ima za povedati, ko gremo v današnjem imeniku izvorne kode. Naredite funkcijo eno. O moj bog. No, sem končno končal ki, mimogrede. V redu. In kaj je problem tukaj? Zelo Skrivnosten gledati. Ampak tukaj je tisto, kar sem typed-- da funkcijo eno. Tukaj je tisto, kar bi povzročil, ki je pravzaprav uporabi prevajalnik Jek z nekaterimi od teh zastavice da bomo spet videli kmalu. In spet, vedno videti na prvi napake, ker bi to samo še kaskadno nesmiselna, učinek na drugih progah. Torej, kaj to pomeni, da je Problem je v funkciji 1.C. To je na liniji 32. In to je v stolpcu ali značaja, 13. Torej, ko vaš urejevalnik besedila, ki lahko vam pomaga ugotoviti, kje je težava. Torej, če sem se pomaknite navzgor, kar je linija 32? To je res to ena ki je že izpostavil Pravica here-- unused spremenljivka n. Ampak to ni neizkoriščena. Jaz sem ga uporabljate. Ampak prevajalnik je zmeden, ker obstaja samo znotraj tega področja. In tako ga ne morem uporabiti tukaj. Ne morem uporabljati tu. In prevajalnik, zato sploh ne briga, da sem poskušal. Zdi se, da neuporabljena na njenem dejanskem obsegu. Tako smo lahko razširili obseg s tem točno to, kar smo začeli with-- int n. In čeprav ne videti tako elegantno, morda, in smo pri tem dodatno linijo tukaj, zdaj pa je po obsegu povsod. Torej, poskusimo znova. Torej bi funkcijo eno. Lepo. In zdaj, če sem, če sem teči funkcijo ena, dajmo to negativno 10, negativna 1, 0, 1, in to dejansko deluje. Torej obstaja druga rešitev tukaj. Veš kaj? Kaj pa, če sem res jaz spopadam s tem? Ne vem, če je n je moral iti. Veš kaj? Jaz sem le, da bo dal vse Tako na vrhu moje datoteke tukaj. Kaj bi to storili, pa ti misliš? Ja? OBČINSTVO: [neslišno]. SPEAKER 1: Ja. Tako sem je bilo po vsem svetu, tako rekoč. Če imate spremenljivko, ki je zunaj vse svoje funkcije, je dovoljeno, in koda je treba zbrati, in n Zdaj bo dostopna ne samo v get pozitiven int, ampak tudi v main-- kateri je malo zaskrbljujoče zato, ker je že n v glavnem, tako da več na to v samo moment-- vendar bi se to šteje za slabo načrtovanje. V redu. Če boste morali zateči k nekaj podobnega, oh, bom Samo dal sem, ker gor koda se zdi, da zbere je na splošno ni najboljša praksa. Namesto želite izbrati najožji možni obseg za spremenljivke, kar bi pomenilo, dogaja z našo prvotno zasnovo, ki je tukaj. Zdaj kot prahi, če ste imeli enako poimenovana-tukaj spremenljivka, način c bi ročaj this-- čeprav to ne bo zgodilo preveč often-- je, da je to še vedno popolnoma v redu sem. Toda ta definicija n v skladu 22 bo senci svetovnega enega. Tako da bo tale delo v Glavni in globalna bo dejansko uporabljati, ko ste v dobili pozitiven int Ampak več o tem en čas, ampak samo za tiste, radoveden. Torej na kratko, bomo popraviti to tukaj. Zdaj pa draži narazen dva druga preden gledamo na eni zadnji vrstici kode v tem programu. Dobili pozitivno int. Na levi strani njegova beseda je beseda int. Kaj to pomeni, pa ti misliš? Tako daleč smo večinoma videli neveljavne. Ja? OBČINSTVO: To je tip spremenljivka, ki ste spraševali. SPEAKER 1: Ja To je tip, naj me ne govori spremenljiva, vendar vrsta vrednosti da jaz vprašam nazaj. In res, da je intuitivno tukaj, upam. Prav? Če želite, da bi dobili pozitiven int, kaj je to, kar želijo function-- kot naš prostovoljci iz zadnjem tednu vam vrniti košček papirja z notr na njej? In tako smo navedli, da ti tip rezultata te funkcije je dobil pozitivno int. Če je nismo želeli vrne ničesar, pravite nična. Če želite, da se vrnete niz, pravite niz. Če želite, da se vrnete plovec, pravite plovec. Ampak samo tisti, ki se uporablja tu logično, saj sem z get int, čeprav jo bom omejil na pozitivne vrednosti, je, da se vrne int. Torej nasprotno, kaj to pomeni da obstaja praznina v oklepaju? Kaj storiti z oklepaji na splošno opredeliti? Ja? OBČINSTVO: To pomeni, da je funkcija je dejansko ne dojemaš. SPEAKER 1: To pomeni, da je funkcija je dejansko ne dobiš kaj? OBČINSTVO: An vhod. SPEAKER 1: vhod, whatsoever. Torej res, če oklepaj Tu lahko določite nična, to samo pomeni, nočem nobenega vnosa. Bom se ukvarjajo s problemom sam. In res, ti ne bi bilo treba povej dobili pozitivno int ničesar. Pravkar ste rekli, dobili pozitivno int, in da Funkcija bo ugasnila in narediti svojo stvar. Vendar je bilo malo trik Sem bil tukaj igral ves ta čas zagotoviti, da to kodo prevede. Obvestilo, da int-- dobili pozitiven int void-- je na liniji 27. Toda za nekatere na videz čudno razloga je tudi tu gor na linijo 16. In samo za dober ukrep bom ponoviti to tako, da je popolnoma enaka. In sem rekel prototip z malo enovrstični komentar. Kaj se zgodi, če izbrišem da, In zdaj ponovljena bo funkcija 1, vstop. Ops. Počakaj minuto. Kje je moj jeziček? Huh? Ostani v pripravljenosti. Naredite funkcijo 1. Tam gremo. V REDU. Ne bi pravilno shranjeno. Torej, mislim, da je malo bug tukaj, kjer sem, ne videnje ime zavihek v tem trenutku. Torej, kaj se dogaja tukaj? Implicitno izjavo o funkciji dobili pozitivno int je ničen v C99. Torej, še enkrat zmedeno. Torej, kaj je ta znak? No, izkaže se, da C je precej neumno. No, to je programiranje jezik, ali raje prevajalnik je. To samo ve, kaj imate ga je učil, in to je samo bo vedel, kaj če ga je učil prej. Z drugimi besedami, Glavna v tem trenutku, da sem poskuša poklicati funkcijo imenovano dobili pozitivno int. Vendar pa je prevajalnik ne bo opazili, da bi dobili pozitiven int ne obstaja, dokler linijo 26. In kaj prevajalnik pa je le napake takoj, ko ga dobi na linijo 17, rekoč implicitno izjavo od dobili pozitivno int, ki je samo fancy način rekel, jaz ne vem, kaj bi dobili pozitiven int je še. Drugi jeziki, kot je Java in Python in Ruby morda pogled v prihodnost. C ne. In tako naš način popraviti To je ena izmed dveh načinov. Eden, če je problem, da bi dobili pozitiven int ni videl, dobro, mi je le korak do vrha. Da bi rešili ta problem. Ampak na splošno, to je šteje boljša tehnika postaviti svojo glavno funkcijo na zelo top, tako da človek bere kodo ve, kaj je program, ker glavni ni pokopan vse pot na dnu ali v sredini. To je na samem vrhu. Tako da se ne počutim idealno. In lahko dejansko dobili v situacijah, ko če klici funkcij drugo, ki poziva k drugemu lahko dobite na vprašanje, kjer ne more iti nad drugo logično. To preprosto ni mogoče. In tako pot na delo okrog je to vzemite podpis funkciji, tako da speak-- prva linija, kjer je declared-- in samo kopirate, prilepite Na top, vendar ne z kodrasti braces-- samo s podpičjem. To je kot majhen namig o tem, kaj nas čaka v prihodnosti. In dejansko vse te ko smo so videli stvari, kot so standardni io.h in cs50.h podobno, v tisti dot h datoteke obstajajo drugi prototipi. In bomo videli, da je pred dolgo. Torej na kratko, če imate program v datoteki z več funkcijami poleg glavnega, boste skoraj vedno želeli, da jih razglasi samo s pomočjo njihova prva linija, ki mu sledi s podpičjem, na samem vrhu datoteke. To je bilo veliko naenkrat. Kakšno vprašanje? Kakšno vprašanje? V redu. Torej, pojdimo na takrat nekaj podobnega kašelj. Oh. Kako opremljanja. V redu. Kašelj. Torej, tukaj je c izvajanje programa smo drugi dan v Scratch, da je zelo preprosto samo pravi, kašelj, kašelj, kašelj. V redu. In nekdo rekel nekaj pred dnevi, da obstaja način čiščenja to kodo gor že. V redu? Takoj, ko ste kopiranje in prilepite verjetno slab design. Vsaj enkrat pridemo do štiri ali pet ali 20 kašlja, se počuti slabo prakso. Pravkar smo obdržati kopijo, lepljenje. Kakšna je očitna rešitev za čiščenje, je ta program gor? OBČINSTVO: Loop. SPEAKER 1: Ja. Torej uporabiti zanko. In smo lahko uporabite za zanko, nekaj časa zanka, poljubno število pristopov. In res, da je kaj delamo v različici eni tukaj. Sem namesto da ga predelajo v različici enem od cough.c da je samo kašelj v za-zanke. Vse je v redu, ampak tam je priložnost sedaj na vrsto začetek oblikovati to malo več kot lekcija smo naučil pred nekaj trenutki, ki je this-- Predvidevam, da sem si želel ustvariti funkcijo imenovano kašelj, kaj menijo, za trenutek kaj se dogaja, bi izgledal. Torej, če kaj hočem kašelj, samo rabim Za uporabo tiskalno f notranjosti funkcijo. In res sem. In v bistvu vse to čas, vsakič, ko ste Nekaj ​​tiskanje zaslon, programer bi rekel, da je stranski učinek. To nisem jaz odnesete nazaj nekdo vrednost. To se mi je ob nekaj ukrepov da je lahko vizualno očitna. Toda ta funkcija kašelj, ne vrne vse temelji na svoji prvi vrstici? Ne, ker svojega tipa vračanja je nična, kar pomeni le to ni mi deliti ničesar nazaj. To lahko počne nekaj vizualno, vendar to ni me odnesete nazaj na kos papirja tako kot prejšnji teden. Ali je treba vse surovine? No. In zato je ničen tudi tukaj. Torej, tudi to je nekako over-inženiring ta problem. Prav? Naredil sem program bolj kompleksni, več vrstic kode, Nisem ga kar koli bolj funkcionalna, vendar je to bi bila mejnik, morda, za širši kontekst z bolj zapleteno kodo. Kaj pa je to? Kaj sem done-- pravkar pogledal na to ne gledaš komentarja na samem vrhu file-- kaj imajo V bistvu sem tukaj naredil z mojim kašljem izvedba, ki je drugačen? Ja, v hrbtu? OBČINSTVO: Naredite ga tako lahko imajo značaj izklopiti. SPEAKER 1: Ja. Torej, to čuti nekako lepo. Prav? To je, kot dodaja funkcijo za vaš Program ali vaša funkcija v tem primeru. Še vedno vrne ničesar. Morda ima vidni stranski učinek, saj kliče tiskanja f. Ampak zdaj sem parametriziramo funkcija, ki pomeni, da sem bila določena v sprejeti vhod tipa int in ga imenujemo n, ampak sem ga lahko pokličete karkoli hočem. Pravzaprav bi to šele bo časi, da bo še bolj eksplicitno. In potem sem lahko samo spremeni to tukaj. Ampak bistvo je, da je to, kako sem ustvariti funkcijo, ki ima vhod. In če se spomnimo lahkota skozi morda na spletu v enem od sprehod-kanale je Četrti in zadnji primer kašelj, boste opazili, tukaj sem generalizirana moja koda further-- vrsta odvzete nadalje. Kot so kašelj in kihanja, oba sta o, kot bi rekel kaj ali dajanje nekakšen zvok. Shrani bi bilo ustreza Scratch blok. In kaj sem storil v tej različici, ki smo jih lahko samo pogled na, je kašelj je tako kot pravijo, [kašelj], kašelj, in medtem, kihanje je kot pravi, [ACHOO]. In tako sem generalizirana izvajanje tistih do sedaj izvajanjem ta generična funkcija, reči, ki je zanimiva za današnje namene samo zato, ker je še vedno nima tip donosa. Ampak koliko vhodov ima? OBČINSTVO: Two. SPEAKER 1: Dva. In tako, če želite, da sprejme v dveh argumentov, samo jih ločite z vejico. In če želite, da potem klic te funkcije, opazili, da vas samo pokličite recimo, citiram, konec citata, za prvi argument, skupna n, za drugega argumenta. Torej še enkrat, bomo morali zdaj gradniki, tako da bomo lahko dejansko izvajanje nekaterih naših lastnih funkcij. V redu. Vsa vprašanja glede te teme? Torej, zdaj pa olupimo nazaj plast, če tako. In cilj, na koncu, je problem set naslednji teden se bo na cryptogrophy-- umetnost kodiranja podatkov. In še posebej, informacije boste imeli šifriranje ali dešifriranje se bo besedilo. In tako, da nekako vabi Vprašanje je danes, kot tudi, kaj se dogaja pod pokrovom z besedilom, ki presega ASCII od nič teden, in kako lahko dejansko začnejo manipulirati? Torej, tukaj je ime Zamyla je. In v besedilu, ki bi se lahko vnaša v podobno funkcijo get niza. In že sedaj, ko vidite Niz kot this-- Z-A-m-Y-L-A-- začeti razmišljati o tem, kot da je vsak od teh znakov je v škatli njenih lastna. In res, v tednu ali tako je Čas, vsaka od teh poljih se dogaja, da predstavljajo zelo specifično blok memory-- ugriz pomnilnika. Torej, vsak od teh pisem, na koncu, bo predstavljala 8 bitov. In bomo dejansko videli, kaj se dogaja na pod pokrovom v mojem računalniku. Vendar ne zadostuje samo poglej Zamyla skozi to lečo, pri čemer je vsak izmed ta pisma je v svojem polju. In dovolj lepo v C smo lahko dostop do vsakega od neposredno teh škatel. Torej, če želite, da bi dobili prvi črko njenega imena, super enostavno v C. Če želite, da bi dobili zadnji pismo, super enostavno, kot tudi s kosom nove sintakse. Tako da sem šel naprej v CS50 IDE in odpirajo godalnim nič pika C. In v tem primeru tukaj obstaja nekaj novih stvari se dogaja. Torej, najprej v vrstici 19, ki smo jih videl to before-- get niz. Torej samo kot preverjanje hitro razumnosti, če bi nekdo ponudi up verbalno razlaga poljuden od kaj se dogaja v vrstici 19. Tako kot samo to prevesti v Angleščina, da ne sostanovalec v CS50 bi razumel. Ja. OBČINSTVO: Have uporabniško vhoda niz in ga shranite na spremenljivo s. SPEAKER 1: Dobro. Imeti uporabniški vhod niz in ga shranite na spremenljivo s. To je super. Torej na desnem Lepo, pravimo get niz. Da vrne vrednost da se ni dodeljena iz desne strani na levo roko stran v spremenljivo imenovano ih, ki je predviden za shranjevanje niz. Točno tako. Torej, zdaj vrstici 22, na komentar v vrstici 21, očitno natisne ta niz en znak na vrstico. Ampak kako? Torej, najprej moramo inicializirati I do 0. In potem, kako bomo prišli do konec imena Zamyla je? No, na koncu Ime Zamyla, sem lahko ročno vnesite v zadnjem značaja njeno ime nekako, ali število nje. Prav? Če gremo nazaj here-- Ž-A-M-L-- Y-L-A--, da sem lahko vnesete. Kaj je indeks Zadnje pismo Zamyla je? Če je to 0-- gledano Like programmer-- 0, 1, 2, 3, 4, 5, Jaz heard-- tako res, zadnje pismo v imenu Zamyla je šesti, ampak, če štejemo od 0, to se dogaja, da je številka 5. Tako da se vodijo v mislih. Izkazalo se je, da je funkcija C se imenuje strlen in nazaj v dan in do danes še vedno, Veliko programerjev odločijo za sinhronizacijo imen za svoje Funkcije, ki zvenijo kot besede oni povedati. Torej strlen je dolžina niza. In kaj bi se dolžina niz S vrne, ko je Zamyla vhodni? OBČINSTVO: Five. ZVOČNIKI 1: Z-A-P-D-L. Six. Prav? Kakšna je dolžina imena Zamyla je? Prav? In samo v resnici, šest črk. Prav? In tako, kaj to pomeni za naše zanke? Mi smo šli iz 0 do šest, ki se dogaja, da nam pet iteracij. Kaj naj naredimo na vsaki ponovitvi? No, odstotka C, nekdo Uganili drugi dan, pomeni ogrado za kaj? OBČINSTVO: Char. SPEAKER 1: Samo char. Torej ena character-- ne več znakov, kot niz. In potem tukaj je nova linija da imamo tiskanje. In potem tukaj je nova skladnja. Če želite natisniti i-tega lik iz niza S, tako rekoč, lahko preprosto reči ime godalnega S, in nato odprite peto nosilec, in nato zapremo s peto nosilec, z i sredina. In to je nekako lepo, da to nekako izgleda kvadrata tako kot kvadratov, v katerih Zamyla je obstajajo znaki o tej sliki tam. Torej, če sem dejansko vodijo to zdaj, da vidimo, kaj se zgodi. Naredite niz 0 dot poševnica Niz 0, nato pa sem dogaja, da tip v imenu Zamyla je. Ni hitro, ker nisem uporabite za tiskanje f, ampak to je v redu. Jaz samo vem, kaj naj naredim. In res, da natisne Ime Zamyla je, eno na vrstico. Zdaj pa bodimo malo nepremišljene. Recimo, da nisem vedel, o strlen in sem ugotovil, Vse je v redu, nihče se dogaja, da imajo ime večja kot kot 50 znakov. Pojdimo naprej in prevedem to in ga ponovno zaženite in nato vnesite v Zamyla znova. Logično je, da tisto, kar je Program bo poskusil natisniti? Z-A-M-Y-L-A nato kot 45 neznanih bajtov pomnilnika. In res, bomo prišli nazaj te ideje spomina. Ampak samo logično, če Ime Zamyla je tako dolgo, kot na sliki tu, kaj smo govoriš se vodijo tiskanje, da tiskanje, da tiskanje, da tiskate, da tiskanje, vse do 50. značaja, ki je kdo ve, kaj se bo zgodilo. Torej, kaj je dejansko si oglejte. Naj tip v Zamyla. Zanimivo. Imamo srečo. Samo cel kup praznega prostora. Oh. Tam je ena funky znak. To izgleda nekako kot čudno vprašanje označi tam, vendar pa je ime Zamyla je. Pojdimo res nepremišljeno. Kako pa smo izpisal 500 bloki v neznano? Pojdimo naprej in da bi to kot dobro in nato ponovno teči. In kaj je celoten zaslon je, ker moramo videti več prostora. Zamyla. Spet imaš srečo. Dare bomo dobili bolj nepremišljeno? Pojdimo bolj nepremišljeno. 50.000 znakov. To je najbolj zagotovo ni dobra ideja. V redu. Naredite niz 0. To bo naša zadnja demo. Zamyla. Ugh. Ugh. V REDU. Torej, moj spomin je res prazna zdaj, ki je pravzaprav nekako prikladno. Kaj sem poskušal priti to-- vso pravico. In zdaj sem šele tekoč, da bi dobili nepremišljene. 500.000. Make-- dajmo celozaslonski ga. Enter. Zamyla. Tam gremo. Nimam pojma, kaj to je, ampak zveni slabo. V redu. In v resnici, kmalu, če ste med srečo malo uradnih ur in problem določiti enega, vas lahko zelo dobro srečati to. Segmentacija napaka dejansko počne imajo dobro opredeljen pomen. To pomeni nekakšno napako ki se nanaša na segment pomnilnika. In v smislu navadnega je, to pomeni, da smo se dotaknili memory-- smo uporabili RAM na mojem računalniku da mi ne bi imeli dostop do. In to je tisto, kar je tako zmogljiv in tudi nevarno o C je, da vas dejansko imajo neoviran dostop v celoti pomnilnika vašega programa ali bajtov ali RAM, natančneje. Torej, čeprav ime Zamyla je je dolga le šest znakov, Še vedno lahko gremo nikamor v spomin hočem. In kot prahi, če ste kdaj prebral nekaj članek v zadnjih letih približno nekaj strežnik ali nekatere Program pridobivanje razpokan ali kramp, ki je sprejeti prednost nečesa imenuje buffer overflow izkoristiti, da bomo dejansko govoriti v nekaj tednih, ki je na splošno sklicuje na nekako prelisičijo računalnik v šlo dobro preko meja spomina da mora imeti, in najti nekaj sočno s tem, da memory-- gesla, morda, način izogibanja nekaj serijsko številko preverite, ali pa samo na splošno lahko trik je računalnik izvršitve Koda, ki ni bila predvidena. Ampak kaj je prišel nazaj realnost za trenutek kje je ta program izvajajo s strlen, in uvesti eno stvar tukaj. Kaj je novega med temi top tri vrstice? Torej niz pika h. Izkazalo se je, da je to knjižnica imenuje String Dot H ali niz knjižnica, čigar glava datoteke, tako rekoč, je niz dot h, ki mi daje Dostop do te funkcije strlen. Če sem izpustite, da prevajalnik je dogaja kričati name v neki obliki. Ampak veš kaj? Sedaj pa se res odtenkov. V vrstico 22, nekaj je vrsta od inefficient-- slabo zasnovan, arguably-- o tem vrstico kode. Pomisli nazaj, kako se izvajajo za zanke in kakšne ukrepe ponovilo in spet in again-- inicializacijo, pogoj, koda, ki dobi izvrši, nato prirastek ali sprememba, potem je pogoj, Nato kodo, nato sprememba, nato stanje, nato pa kodo, nato sprememba, in tako naprej. Torej, kaj bi lahko bilo malo Zaskrbljujoč ali slabo narejeno tukaj? Ja, v modri barvi. OBČINSTVO: strlen je imenovano veliko, veliko krat. SPEAKER 1: Ja. Torej strlen se imenuje mnogokrat, ampak tisto, kar je dolžina imena Zamyla je v prvič zanka izvaja? OBČINSTVO: Six. SPEAKER 1: Six. No, kaj je dolžina njeno ime drugič koda izvrši? OBČINSTVO: Six. SPEAKER 1: V redu. To je še vedno šest. Prav? Ime Zarla je nima spremenilo, tudi če iščem na samo del črk v njenem imenu. In tako je dejstvo, da sem dejansko sem sprašuje to vprašanje, kaj je dolžina Zamyla, kakšna je dolžina od Zamyla, kakšna je dolžina Zamyla, šest ločenih krat, ali sedem celo, je samo neumen, ker to je nespremenljiva, da odgovor. In kaj sem lahko dejansko storiti, je this-- v nizu enem Imam nekoliko boljšo različico tukaj. There-- whoops-- niz dveh imam neznatnega boljša različica, kjer Jaz this-- namesto samo inicializacija i na 0, sem se tudi z vejico razglasi drugo spremenljivko z imenom N- nimam spet reči int. Jaz ne bi v resnici. Ampak sem rekel n. In potem sem inicializacijo n strlen n, tako da sedaj kolikokrat se strlen se izvede v celoti? Samo enkrat. In zato je to tisto, kar mislimo prej o boljšem oblikovanju. Pravzaprav, ko vaša koda je pravilna, vrača in razmišljanja, sem s tako malo spomin ali kot nekaj sekund ali milisekund računalniške časa kot mogoče izvajati neki problem? In bom, da se pomaknete in samo omenim da je ta omemba iz vezi v tej različici, vendar bomo prišli nazaj, da je pred dolgo. Ker za zdaj, vzemimo si oglejte pri kateri se to dogaja, da nas vodi. Torej ena, se izkaže, da zdaj, ko imamo možnost, pogled na posameznih likov, bomo lahko izkoristite nekaj od tedna 0, da je zelo Skrivnosten in nekako nezanimiva v tistem času. Toda zdaj, in še posebej, ko smo priti do kriptografije v tednu, to se dogaja, da je precej močna. Izkazalo se je, da je z nekaterimi so podatki, types-- Ints in plava in znakov in godala in drugi things-- nekateri od njih mogoče zelo enostavno pretvorimo v drugo. Na primer, ko smo se pogovarjali o ASCII nekaj časa ago-- tukaj kapitalski črkam A prek M, dot, dot, dot-- smo rekli, da je preslikava med temi črkami in številkami. In v resnici pa velja za malimi črkami, kot tudi. Male je a 97, kapital je a 65. In tam je številka v ASCII, ki je le ta preslikava sistem za vse tiste drugimi črkami. Torej, kaj to pomeni? No, jaz grem, da gredo naprej in odprt up real hitro nekaj imenovanih ASCII 0, od katerih večina je pripomb. In spet na spletu si lahko vedno pogled skozi pripomb. In si oglejte, kaj To se dogaja, da storiti. Torej, to je dobil glavno funkcijo. Sem hard-kodirane številke samo za Zdaj, ker vem, kaj delam. Vem, kaj hočem videti tukaj. In jaz sem inicializiran do 65. In jaz računam up prek 26 črk skupaj. In kaj bom natisniti eno vrstico naenkrat če si lahko razlagali to poudarjeno linijo? Kaj dobi natisnjeno? Ja. OBČINSTVO: Ali greš natisniti pismo, ustreza zemljevidu pismo vrednost in celo vrednost? SPEAKER 1: Točno tako. Grem natisniti pismo ustreza celo število, in obratno, kot sledi. No to, nekdo rekel prej, je samo ograda za char. Še vedno je. To, seveda, je ogrado dokumentacija int-- ni nova linija. In zdaj opazili, moj prvi vrednosti, ki Jaz sem priklopom za to ogrado ni samo I. govorim, v oklepaju, char I, katerega oklepajih char je pove prevajalniku, zdravljenje I ne kot tisto, kar je, kar je številka. Obravnavati kot dejanskega značaja. Ker drugi vrednosti sem priklopom in-- morala I-- biti samo številka. Torej, če sem sestaviti ta program-- tako da je to, da ASCII 0, dot slash ASCII 0-- sem dobil Ta priročen mali grafikon, ki mi pokaže vse mogoče preslikave, ne da bi to misliš skozi ali pogruntal sam. In jaz sem tudi tiskanje, Opazili male črke, ker nekaj vrstic kasneje sem tudi natisnete to kartiranje kot tudi, kar je samo pravijo, da ko boste razumeli kaj se dogaja pod pokrov, lahko samodejno pretvorbo naprej in nazaj. In v resnici, če kdo od vas kdaj je to storila v osnovni šoli ali slišal o nekom mitično ob beležko in gre v njegov ali njena prijateljica v razredu, ampak ti je zmešala pisma, ki jih kot postane B, in B postane C, ali kaj bolj zapletena, kot da je dobro, kako bi se lotili izvajanje, da kot otrok? No, samo nekako vedeti Postane B, B postane C, ampak matematično, kaj je ta fant počne? Kaj ste tako, da vsako črko? Učinkovito, 1. Torej, ko ste spremenili A do B, ki je nekako kot spreminja od 65 do 66, ki matematično pomeni, dodajte 1. In tako, če ste bili za izvajanje da je malo zavajajoče tehnika za učitelja v kodi, ki jih lahko naredite točno to samo z dodajanjem ene črke skupaj. Torej, preden dolgo, da smo bomo videli, kako bomo lahko izkoristite, da dejansko resnično scramble in Razmrsiti informacije. V vmesnem času, vemo, da smo začeli uvesti nekaj drugih knjižnic here-- godalnega eno danes. In zelo koristna stran upajmo, da boste našli se imenuje reference.cs50.net, ki učno osebje so sestavili, tako da, če želite poglej kako strlen del, lahko začnete tipkati Funkcija ime, kliknite tam strlen, in nato manj udoben razlaga se dogaja, da se pojavijo. Ali če želite uradnika Linux temelji razlaga, lahko kliknete bolj udoben v zgornjem desnem kotu, in bo predstavil isto informacijo, vendar v bolj zahtevnih pogojih. To je koristno sredstvo za dejansko vem, kaj vse počne. Naslednjič, ko bomo si oglejte Ovaltine in še več, in uvesti sebe na svetu kriptografije. Do takrat, bomo videli boste kasneje ta teden. In zdaj, Colton Ogden. Se vidimo v sredo. [Predvaja glasba] [Predvaja glasba] SPEAKER 1: Kaj [Škripati] počneš? SPEAKER 1: Jaz sem jedel mojo sladico? Kako ga jeste? Z rokami? [Predvaja glasba]