>> SPEAKER 1: V redu.
Dobrodošel nazaj.
To je teden Dva CS50, in imamo Doslej so uporabo funkcij, vendar
jih v veliki meri za samoumevno.
Uporabili smo printf ki ima stranski učinek tiskanje
stvari na zaslonu.
Uporabili smo dobili, int, float dobili.
>> Toda kaj, če si dejansko želite ustvariti lastne funkcije, kot nekateri
ste morda že začelo stori za Problem Set One, čeprav
ni nujno potrebno?
No, gremo naprej in ponovno, da problem samo vprašam uporabnika za
njihovo ime in tiskanje nekaj na zaslon, vendar poskusite dejavnik na nekatere
o enotnosti, ki smo jo videli v našem zakoniku doslej.
Torej, s tem mislim naslednje.
>> Jaz grem naprej in ustvariti nov program, samo pokličite
je hello.c kot ponavadi.
Jaz grem naprej in sem dal vključujejo standardno io.h na vrhu.
Bom jaz dal tudi preemptively CS50 knjižnico tako, da
Da ne bom nadrla, ki jih prevajalnik.
In zdaj bom šel naprej in razglasi int, glavno, nična.
>> In potem je tukaj, to je, če hočem začeti oddajajo funkcionalnost
kakšno drugo funkcijo, da sem sam gre za pisanje, vendar to ni
Trenutno obstajajo.
Recimo, da sem hotel napisati funkcijo, ki mi omogoča, da
izpisal hello, vejice in potem nekaj uporabnikov ime.
Namesto da bi še naprej printf storiti Pozdravljeni,% s, ne bi bilo lepo, če
je bilo samo funkcijo imenovano Ne printf pa ime tisk?
>> Torej, z drugimi besedami, želim, da bi lahko napisati program, ki počne nekaj
kaj takega.
Najprej bom printf povedati svoje Ime, s čimer se spodbudi uporabnik
Daj mi njegovo ime, nato pa sem gre za uporabo že znanih String s, da
razglasi niz.
Daj mi spremenljivko tipa niz, to je klic, in shranjevanje, ki
Rezultat kliče dobili niz.
Zdaj pa v zadnjih tednih, bi moral Nekoliko tediously storiti Pozdravljeni,% s / n.
>> In z drugimi besedami, smo to videli Primer kup časov, in to je
trivialen primer zato, ker je samo ena vrstica kode, tako da je res ni
big deal, da ponovno tipkanje.
Recimo, da ta vrstica kode dejansko so postali breme, in
to ni ena vrstica kode, ampak to je 10 vrstic kode nekaj tednov od zdaj,
in ti si samo naveličal kopiranje in lepljenje ali
Prekucavanje to isto kodo.
Ne bi bilo lepo, namesto da delaš printf Pozdravljeni,% s in tako naprej,
ne bi bilo lepo, če je bilo le Funkcija se imenuje ime tiskanja, ki
je argument -
z drugimi besedami, je potreben vložek -
in potem podpičjem.
Tako da funkcija, ne bi bilo je lepo, če bi obstajal?
Potem mi ne bi bilo treba skrbeti za kar printf, kakšne% s in vse
Ti zapleti, ki so ni vse tako zanimivo.
Prav tako so koristne.
>> Torej ime tisk, žal, ni bilo izumil nekaj pred 40 plus let.
Nihče ni mislil, da ga napisali.
Ampak to je lepota ob programski jezik, tako kot v
Scratch lahko določite meri blokov, tako v C in najbolj vsak jezik, lahko
opredeliti svojo funkcijo, lahko si določite svoje funkcije.
Torej, čeprav smo dobili glavnega jih avtomatično zastonj, lahko razglasi
naše naloge.
>> Torej bom narediti nekaj prostora tu gor up top, in bom prijaviti moja
lastna funkcija, ki pa bo skrbel malo čudno na prvi, ampak bomo prišli
nazaj na to kmalu.
Jaz bom rekel nična, s čimer navedbo te funkcije ne
kar ima stranski učinek, vendar ne vrne nekaj, da me v
enak način, da dobite int ali dobili niz sama.
In jaz bom dal to funkcijo naštejemo imena tiskanja in bom
opredeliti, da ta fant se dogaja, da sprejmejo niz, bom poklical, da
Ime niz.
Jaz bi ga poklical kar hočem, ampak jaz želim moja koda, da se sami dokumentiranje.
Z drugimi besedami, če bi od vas odpreti to datoteko in jo prebral, bi lahko
nekako izpeljati iz imena, ki vhod kakšno vlogo je moral igrati.
>> In zdaj spodaj, da bom za začetek kodrasti naramnicami in zaprta kodrasti naramnicami,
in tako opazili, da sem po isti vzorec na progah štiri do sedem, kot
Sem bil po za dober teden, plus Zdaj med, recimo, devet linij in
14, ki sestavljajo glavni.
Z drugimi besedami, natisniti ime je še ena funkcija.
Zdaj, prevajalnik ne bo vedel poklicati to stvar samodejno
ker sem dobesedno izumili, vendar bo še vedno vedel, da pokličete glavni
samodejno, nato pa seveda v vrstica 13, kličem svojo funkcijo.
In ker sem izjavil, da funkcija up na liniji štiri pred glavnimi,
to se bo naučil prevajalnik kaj citiram, v navednicah, "ime print"
pomeni in kaj bi morala storiti.
Tako da sem nekako mu daje novo navado blok v kontekstu, recimo, Scratch.
>> Torej tukaj, sem lahko dal to zelo pogosti ali ponavljajoči vzorec kode Držim
pisanje v razredu, printf % S hello,% s / n ", -
Kaj želim povedati tukaj?
S?
Torej, želim dati ime v tem kontekstu.
Torej opazili malo dihotomija tukaj.
Ker sem razglasila svojo funkcijo in sem nekoliko samovoljno imenuje
natisne ime, in ker sem navedeno v oklepajih, da ta
Funkcija vzame en argument, tip ki je niz - tako da je beseda
ali fraza ali nekaj takega - in Poklical bom to ime argumenta, da
pomeni samo spremenljivko, ki je v Področje, tako rekoč, je ime.
>> S obstaja le med tem, kar dva Zaviti oklepaji, seveda?
Pa res, tako kot vrstice 10 do 14, tako da tako kot v ponedeljek ne more uporabiti
S, ampak kaj lahko storim je mimo S v imenu tiskanja.
Natisnite ime prav tako se zgodi, da ga alias, sinonima vzdevek
to ime kliče, in zdaj njegovo uporabo v tej vrstici.
Torej, zdaj mi rešiti to, pomanjšanje.
>> Dovolite mi, da gredo naprej in zdravo.
Videti je v redu.
Ni izpljunil nobene napake. . / Zdravo Enter.
Kako mi je ime?
David.
In zdravo David.
Torej ni vse tako razburljivo, ampak mislim zdaj.
Zdaj imate to isto sestavino kot smo to storili v nič, da
ustvarjanju svojih lastnih funkcij.
>> Vendar je malo Razumem.
Recimo, da nisem zares razmišljal to skozi in sem dejansko brez
res razmišljam o tem napisal ki delujejo tukaj.
Počutim se povsem smiselno.
V nič ne obstaja pojem na lokaciji v vaše skripte.
Lahko bi dal eno gor, ena tu gor, ena tu gor, in to bi lahko začeli
pogledati malo grdo, če ne ga razpostavite lepo, vendar ne
važno, kje fizično skripte so na zaslonu.
Na žalost v C - in to je, za razliko od jezike, kot sta Java in Python
in drugi, da bi lahko bili seznanjeni z - na žalost v C, da ne
pomembno, ker gledam, kaj je se bo zgodilo zdaj.
>> Privzeta funkcija, ki se dogaja izvesti, je, seveda, glavna.
Glavni bo poklical ime tiska na linija osem, žal pa
prevajalnik sploh ne bo vedel, da je ime tiska obstaja, dokler ne pride do linije 11,
ki je žal bo prepozno.
Torej, kaj je naredil, da zdravo.
In zdaj prekleti, dve hudi ustvarila.
Torej, zdaj naj se pomaknete do zelo prvič, ker moramo vedno narediti, in
opazili, da je vpil na mene, "Implicitno izjavo o funkciji
natisniti ime. "
>> Tako smo videli to sporočilo pred implicitno izjavo funkcije.
Ko smo videli te vrste napak?
Ko nisem so knjižnice.
Če sem pozabil cs50.h in bom dobil vpil za dobiti niz, ali pa int.
Toda v tem primeru, je ta funkcija tiskanja Ime ni v knjižnici, kajne?
To je dobesedno v tej datoteki, tako da kaj je res problem?
>> No na žalost v C, da vas popelje tako zelo dobesedno, da če
želite funkcijo imenovano ime natisni obstajajo, ali boste morali izvajati
, ki delujejo na sam vrh vašega kode tako, da je dostopen za zniževanje
funkcije, vendar odkrito povedano, da postane površen zelo hitro.
Osebno mi je všeč dajanje glavni najprej ker potem je zelo jasno, kaj je to
Program deluje na prvi pogled.
In plus, lahko dobite v čudni kotu primerih, če je x želi poklicati
y y pa lahko pokličete x, ki ste jo pravkar fizično ne morejo dejansko dal eno
nad drugo.
>> Ampak se je izkazalo v C, lahko rešili zelo preprosto.
Bom dal malo prostora tu gor, in grem na
preemptively, čeprav nekoliko redundantly, bo poučeval
prevajalnik, da obstaja funkcija imenuje ime tiskanja, je potrebno niz,
in bom poklical je ime podpičjem.
>> Tako da je ta zdaj v skladu štirih, ki smo ni videl, je deklaracija
imena tiskanja funkcijo, ampak to je le obljuba, da bo ta funkcija
sčasoma je treba opredeliti, na koncu treba izvajati.
To zdaj lahko pustite pri miru, ker Zdaj je to opredelitev,
izvedba, nekako zadnji kilometer izvajanja te
zlasti funkcija.
Torej odkrito, da je neumno, da je nadležno, vendar je to način C, in je
saj vam jemlje zelo dobesedno in, kot je računalnik odkrito smeli,
samo, kaj točno je povedal, da zaradi tega, in da je urejanje pomembno.
>> Tako da se vodijo v mislih in spet začeti Opazili ponovitve vzorcev.
Kvota se boš, če tega še niste že začeli srečati sporočil
, kot je ta, ki se na prvi pogled zdi, popolnoma nejasen, toda če začnete
da si za te ključne besede, kot so "Implicitno izjavo," omenja
funkcija v tem primeru - in po pravici povedano, si včasih celo dobili malo zeleno
Simbol korenček, ki vam pove, kje Vprašanje je verjetno -
lahko začnete delati svojo pot skozi Še nevidno sporočil o napakah.
Vsa vprašanja o pisanju lastna funkcija na ta način?
>> Naredimo nekaj, kar je Malo bolj prepričljiv.
Ne le narediti nekaj, kar je stranski učinek tiskanje, spustite me
naprej in shranite novo datoteko, mi pa bomo to imenujemo positive.c, čeprav je
bo nekoliko drugače v primerjavi zadnjem času.
In tokrat, bi rad ponovno izvajati positive.C Primer Zadnji čas je, ki
je sila si, da bi me je pozitivno celo število.
Vendar sem moral uporabiti dobiti int zadnji čas.
Ali ne bi bilo lepo, če ne bi bilo Funkcija se imenuje dobili pozitivno int
da sem lahko samo zunanji sodelavci kos funkcionalnosti?
Torej je razlika tukaj je, da bomo izvajanje dobili pozitivno int, vendar za razliko od
Ime tisk, ki je imela stranske učinke - to ni vrnil nekaj z mano
število ali niz -
se pozitivno int je seveda bo vrne, upajmo, pozitivno int.
>> Torej, kaj je to.
Vključujejo cs50.h, vsebuje standardne io.h.
Int main nična.
In zdaj je tukaj, jaz grem naprej in recimo int, da pokličete n, je enako
dobili pozitivno int.
In tako kot se int že obstaja ker osebje ga je napisal, bom
prevzeti za trenutek, da bi dobili pozitivni int obstaja, in zdaj bom
da gredo naprej in rekli printf, hvala za% i / n ", n.
>> Torej, zdaj, če sem pripravi tega programa, kar se bo zgodilo v mojem terminalu
Okno na dnu ekrana?
Jaz bom verjetno dobil, da iste napake kot prej.
Torej, dajmo poskusiti.
Da pozitivno.
In spet, implicitno izjavo funkcije, dobil pozitivno int.
Tako da bomo lahko rešili to nekaj načinov.
Bom naj bo enostavno in preprosto dam izjavo tu gor in se
pozitivni int.
Moram ti podpis.
Podpis samo sklicuje za estetiko
Prva vrstica programa.
Torej, kaj naj bi dobili pozitiven int vrnitev?
>> Torej int.
Mislim, idealno pa bi vrnili nekaj podobnega pozitivnega notr, ampak da
ne obstaja.
Ne Videli smo, da je med našimi podatki vrste, zato se moramo ukvarjati z
Dejstvo, da imamo zelo malo podatkovni tipi delati.
Vendar pa se lahko vrnemo int in samo Verjamemo, da bo pozitiven.
To se dogaja, da se imenuje dobili pozitivno int.
>> In zdaj kaj o svojih argumentov?
Traja vsak vhod?
Ali je treba vse surovine?
Torej ni treba vedeti vnaprej karkoli.
Get niz ne, dobil int ne.
Printf počne - to mora imeti nekaj vhod prešla v njej - in ime tisk
potreboval nekaj vložek, ampak dobil Pozitiven int ne.
Torej bom izrecno povej prevajalnik praznino.
Void je odsotnost karkoli drugega.
Zato nična pomeni nič ne dogaja v notranjosti teh oklepajev, podpičje.
>> In zdaj na dnu mojega spisa - in še enkrat, jaz sem samo da nekako analni
Tukaj dajanje glavni na vrhu, ki je dobra praksa, ker ta način
kadarkoli vi ali kdo drug odpre datoteko, se
Funkcionalnost je tam.
Lahko se potopite v eni od kvadratni.
Torej, zdaj bom podvajati to, dobili pozitivno int praznino, vendar nisem
udaril podpičjem zdaj.
Grem odpreti zavite oklepaje, in zdaj si moram sposoditi
nekaj idej, od ponedeljka.
>> Tako kot se spomnite, smo naredili nekaj rad pa naredite naslednje
nekaj, kar je res.
In kaj sem naredil?
Naredil sem nekaj podobnega dati me je pozitivno celo število,
Malo poziv.
Lahko uporabite vse besede, ki jih želim.
In potem sem kaj se uporablja?
Int n enak dobili int, nobenih argumentov za to.
>> In opazili razliko.
Ko klic funkcije, ko uporabljate funkcije, ki jih ne dajo v praznini.
Vam le, da pri razglasitvi Funkcija, poučevanje prevajalnik kaj
to bi pričakovali.
Torej vam ni treba dati izniči tam sami.
>> In zdaj, kaj je bil moj pogoj?
No, n ni enak pozitiven ampak to je samo psevdo-kodo.
Torej, kako izraziti to bolj čisto?
Torej manjša ali enaka nič.
Torej še enkrat, opazili, lahko storite manjša ali enaka.
Čeprav je dva ločena simboli, lahko to storite na
tipkovnico kot take.
>> Ampak tam je vedno bug, da Zajebal sem zadnjič preveč.
Moram prijaviti -
točno.
Moram prijaviti n zunaj z zanko.
Torej moram dati n tu gor, in jaz ne želite ponovno prijavijo tukaj
da ne bom dobil novo spremenljivko.
Želim samo za dodelitev vrednosti tukaj.
>> In zdaj nisem povsem tu storiti.
Dovolite mi, da bi dobili pred sebe in se pretvarjati, da sem storil.
Da pozitivno, in zdaj tam je nova napaka.
Nadzor doseže konec ne-nična funkcija.
Torej novo sporočilo o napaki, če pa ste prijazni od Tease poleg vsakega besedami,
Verjetno namiguje na tisto, kar je narobe.
>> Nadzorovati.
Nadzor pomeni samo, da naloga operacij v programu.
Računalnik je v nadzoru in Nekaj ​​je šlo narobe.
Tako da doseže konec ne-nična funkcijo.
Kaj funkcija je očitno nanaša?
Kaj funkcija ni ničen?
Torej, dobil pozitivno int, in malo zmedo, da je dobro,
to je nekako praznino.
Ima specifikacijo praznino za svoje Argumenti, vendar njena proizvodnja se bo
biti tipa n.
Torej beseda je na levi tako imenovani tip donos.
Beseda na notranji tukaj se nič ali več argumentov
da funkcija potrebuje.
>> Torej, kaj moram narediti?
Na tej točki v mojem kodo, linije 21, kjer utripa hitro sedaj je, da sem
imajo pozitiven int znotraj v spremenljivko n.
Kako bi ga nazaj na glavno?
Dobesedno.
Vrni se n podpičjem.
>> Torej, tako kot Colton vrnil kos Papir z odgovorom, da mi ga spustite
da kos papirja v mali črni polje na mizi, na to, da je v
kodo, si dobesedno samo napisati, vrnite n, in to je, kot da Colton bili
mi deliti nekaj fizičnega nazaj.
V tem primeru, kaj se dogaja, je dobil Pozitiven int se bo vrniti
kaj je predvidoma pozitivna celo komu?
Če pa to vrednost na koncu?
To konča v te spremenljivke, n in Nato bomo nadaljevali z linijo devet.
>> Torej, z drugimi besedami, da od operacije, začne ta program
izvajanje in prevajalnik se zaveda, oh, želite knjižnico?
Pusti me zgrabi vse, kar je notri to.
Oh, želite standardno knjižnico IO?
Pusti me zgrabi vse, kar je notri to.
Kaj prevajalnik pravi, da sama ko se dotakne črte štiri?
Oh, ti obljubil, da bo izvajala Funkcija imenuje dobili pozitivno, vendar
bomo dobili nazaj, da kasneje, kaj podobnega.
>> Int main void pomeni samo tukaj drobovje mojega programa.
Line sedem je le kodrasti naramnicami.
Line osem pravi na levi strani, da me 32 bitov za celo število, pravimo n.
Na desni strani, to rekel bi dobili pozitiven int.
Zdaj kaj je pavza, da zgodba, saj zdaj Ne premikaj se mi kurzor dol.
Moj kazalec zdaj gre dol, ker zdaj dobili pozitiven int izvaja.
Int n je razglašena.
Naredite naslednje.
Printf mi daje pozitivno celo število.
>> Get int od uporabnika, ga shranite na n, in morda to znova in znova.
Ta zanka pomeni, da bi lahko ta koda ponovno izvede gor in dol kot to
in enkrat, ko pa si končno sodeluje in mi daje pozitivno
int, sem udaril črto 21, na kateri točki Število je vrnil, in katera
moram poudariti zdaj?
Devet.
Nadzor, tako rekoč, vrne poravnati devet.
To je linija, ki je zdaj glavni.
>> Tako da je tisto, kar se je dogajalo vse tokrat pod pokrovom, vendar
ko smo uporabljanih funkcij, kot so printf ali celo dobili niz, da nekdo drug
napisal za vas, je bil nadzor, ki se izročijo off nekoga drugega koda linija
po vrsticah.
To je samo nismo mogli videti in smo ne bi mogla zares prikazujejo v tem
Program zato, ker je v nekaterih drugih Datoteka na trdem disku
nevede nas.
Torej, kaj je dejansko pripravijo in to deluje zdaj.
>> Da pozitivno.
Zbere, da je napredek.
. / Pozitiven.
Daj mi pozitivno celo število.
Bodimo težko.
Negativno 1.
Nič.
Dajmo ji 50.
Hvala za 50 let, in tako nadzor se je zdaj vrnil.
Vsa vprašanja, nato pa na to?
Ja?
>> [Neslišno].
>> Ponovi.
Oh, dobro vprašanje.
Torej boste morda opazili vzporednico, da Jaz sem nekako rezanje kotiček naprej.
V vrstico 12, pravim, dobil pozitivno int vrne int, vendar ga ta isti
Logika, da je zdaj Razumno, da je v linija šest, sem rekel, da je glavni vrne
int, ampak tisto, kar še nikoli nismo je v katerem koli od naših programov?
Nikoli nismo imeli omembe Ta ključna beseda donos.
>> Tako se izkaže, da je v C, vsaj različica je, da smo z
iz leta 1999, tehnično, to je samodejno dogaja za vami.
Kadarkoli izvajati program in vi izvajati funkcijo imenovano glavno,
da funkcija vrne nič do privzeto, če ne rečem drugače,
in nič je samo konvencija.
Svet vrne nič s tem kaže, da je vse dobro,
nam učinkovito odhodu s štiri milijarde možne stvari, ki bi šel
narobe, tako da če se bomo vrnili eno, da bi pomenilo kodo, ki pomeni to
stvar je šlo narobe.
Lahko vrne dva, kar pomeni ta druga stvar je šlo narobe.
Lahko bi se vrnili štiri milijarde, ki pomeni to druga stvar je šlo narobe.
>> In če zdaj razmišljam o sami PC ali Mac, boste morda opozarjajo, da
Včasih dobiš kriptirana sporočila o napakah od programske opreme, ki ste
uporabo, in ima včasih človek prijazen opis, vendar pa je
pogosto kodo ali več na zaslonu?
Če se to ne pride na misel, Samo pazi na to.
To je ponavadi tisto, kar ti kode se nanašajo.
Oni so vključene v Microsoft Wordu in drugi programi, tako da, če ste datoteko
poročilo o napaki z družbo, lahko povej jim, oh, sem dobil številko napake 45.
In nekateri programer nazaj v družbo lahko ogledate, da je v njegovo
kodo in rekel, oh, to pa zato, ker sem to napako in to je razlog, zakaj si
dobil to sporočilo.
>> Vendar odkrito povedano, to je samo malo moteča in malo dolgočasno
sklepati, da se vsaj na našem Prvih nekaj programov, zato smo
so ga izpustimo.
Ampak ves ta čas vsak od vaših Funkcije Glavni je na skrivaj imela ta
vrstica samodejno doda za vas prevajalnik, samo z konvencija za
prihranili nekaj časa.
>> [Neslišno].
>> Vam ni treba, da ga vključite v glavnem.
To je v redu.
Si morate, da ga vključite, če ste bili izvajanje funkcije, kot je ta.
Sicer funkcija stanovanje se ne bi delovalo.
Ampak v glavnem, to ni potrebno.
V tednu ali dveh, bomo začeli pridobivanje v to navado, ko smo želeli začeti
ki pomeni napake.
Res dobro vprašanje.
>> Tako hitro verbalno odmor omeniti, da ta petek, ne bomo kosilu
po sebi, ampak bomo večerjali z nekaj študentov in osebja.
Če želite, da se nam pridružite, občutek proste roke, da cs50.net/rsvp.
06:00 ta petek.
Prostor je, kot vedno, omejeno, vendar bomo še delaš ti na skoraj
tedensko, če prostor zmanjka ta teden.
>> Torej Alpinista, da smo končali na Ponedeljek je bil, da strune lahko dejansko
se indeksira v, kar samo ti pomeni lahko dobite ob prvem znaku,
Drugi znak, tretji znak in tako naprej, ker lahko
dejansko mislim niz, kot je Pozdravljeni, kot da je v tem primeru pet
Črke znotraj polj.
In lahko dobite na vsaki od teh škatle s tem, kar smo naredili sintaksa
uvesti v ponedeljek?
Te oklepaje na tipkovnici.
To samo pomeni, pojdite na lokacijo nič.
>> Mi začnemo na ničlo, tako da nosilec nič pomeni h, nosilec enega
pomeni e, in tako naprej.
In tako ves čas, ko smo bili uporabi nizov in tipkanje v "zdravo"
in "svet" in druge stvari, na zaslon, to je bilo shranjeno
v škatle, kot je ta.
In ugibati.
Kaj vsako polje predstavlja fizično notranjost računalnika?
>> [Neslišno].
>> Oprostite?
>> Znakov.
>> Torej znak, še zlasti v primeru nizov, in lik je samo
osem bitov ali en bajt.
Torej, verjetno ste vsaj bežno seznanjeni z dejstvom, da je vaš
Računalnik ima spomin.
To ima dve vrsti pomnilnika vsaj.
Ena je trdi disk, kjer boste prihranili stvari trajno, in da je
običajno velika, tako da lahko imate filme in glasbe in tako naprej.
>> Potem imate drug tip pomnilnika imenujemo RAM, R-M, Random Access
Pomnilnika, in to je tip pomnilnika , ki se uporablja, ko je računalnik
teče, vendar če ste izgubili moč ali vaš baterija umre, karkoli, ki je shranjena
v RAM izgine, če ste izgubili moč celoti, ker to ni
vztrajen.
Po navadi imajo v teh dneh, gig njega, dve nastopov, morda več.
In glavo RAM je, da je veliko veliko, veliko hitreje kot trde diske
ali celo SSD diski v teh dneh, ampak to je ponavadi dražji, tako
imate manj.
>> Torej, današnji pogovor res nanaša za RAM, da tip pomnilnika, ki
obstaja samo, dokler je moč se vnašajo v računalnik.
Torej, ko vnesete v H-E-L-L-O, Enter tipkovnica, H se dogaja v enem
bajt RAM, E se dogaja v en bajt RAM, kot
Preostanek besede.
Torej spomniti, kaj nam je uspelo storiti, zadnjič je bilo to.
Dovolite mi, da gredo naprej in odprli datoteko da smo poklicali string.c in odpoklic
da je bilo videti malo kaj takega.
Dovolite mi, da dejansko roll nazaj in spremenite je točno tisto, kar je izgledalo,
Niz dolžina s.
>> Torej pogled na programu tukaj.
Štejemo CS50 knjižnico tako da bomo lahko uporabite dobili niz.
Mi vključujejo standardno io.h tako da bomo lahko uporabite printf.
Zakaj smo tudi string.h?
To je bila nova v ponedeljek.
Zato smo želeli dolžino niza.
Str leng.
Ljudje so se odločili že pred leti, Bodimo jedrnat.
Namesto da "dolžina niza," kliče recimo ji "str leng" poklical in pustite
svetovna osebnost, da ven, in tako, da je kaj smo dobili dostop do z string.h.
>> To je znano.
To je znano.
To je malo novega.
V vrstico 22 - in se bomo vrnili za to, ampak za zdaj veste -
in bi vedel, samo to iz ob preberite dokumentacijo, ali če
ste vedeli C že -
dobili niz včasih lahko zamočil.
Če uporabnik res nasprotujočih ali zavrača sodelovanje, in on ali ona samo
ne vnesete ničesar na tipkovnici ali Vrste toliko na tipkovnici, da
ga premaga spomin računalnika, V teoriji bi dobili niz lahko vrnete
nekaj drugega kot niz znakov.
To bi lahko vrne posebno vrednost, imenovano NULL v vseh kape, N-U-L-l, in to je
le tako imenovana kontrolna vrednost.
To je posebna vrednost, ki pomeni nekaj slabega se je zgodilo v tem primeru.
To je odsotnost nizu.
>> Torej null sem iskal preprosto tako, da skrajšam zgodbo, str leng in
druge funkcije, ki prihajajo s C, če pričakujejo niz, vendar jih prenese
odsotnost niz, če se boste peljali jim nič, računalnik ali programa
bo samo crash dokončno.
To bo obesil.
To bo navrgla nekaj sporočilo o napaki.
Slabe stvari se bo zgodilo.
Torej, čeprav je to še vedno niso dobro opredeljeni -
to bo bolj smiselno v tednu ali dve - v vrstico 22, to je samo
Primer samonadzora napaki obrambe samo v primeru, ko eden od
gre milijonov nekaj narobe, pri Vsaj moj program ne bo crash.
>> Torej, če je ne bo enaka nekaj slabega, Imam ta zanka, in to je bilo
kjer smo imeli ta druga nov del sintakse.
Imam zanka ponavljanjem od nič gor na dolžino s.
In potem je tukaj, sem bila tiskanje iz ih Nosilec i, toda zakaj sem uporabo% c vse
nenadna namesto% s celo čeprav je je niz?
To je znak, kajne?
S niz, vendar je nosilec nekaj, S podstavki i, kjer je i nič
ali ena ali dve, da je posameznik znak v nizu, in tako za
da je treba printf da so obveščeni o to je res znak pričakovati.
>> In potem se spomnim, kaj je to Program dejansko storiti?
>> Ga natisne v stolpcih.
>> Ja, točno.
Samo natisnjene besede, ki sem tip v stolpec, en znak na vrstico.
Torej, poglejmo še enkrat.
Zato poskrbite niz.
Zbrati OK. . / Niz.
Dovolite mi, da tip v H-E-L-L-O, Enter in res sem jo dobila, eno na vrstico.
>> Torej, kaj mi naredil eno optimizacijo tukaj.
Če menite o tem, še posebej, če ste programirani prej, obstaja
verjetno neučinkovitost v skladu 24.
Z drugimi besedami, to ni nujno najboljši dizajn.
Enostavna, vsaj enkrat vas se spomnite, kaj str leng je, vendar je
delaš nekaj neumnega potencialno.
Kaj bi to lahko bilo?
>> [Neslišno].
>> Točno tako.
To je preverjanje za dolžino ih vsak čas, čeprav
H-E-L-L-O je vedno tekoč do pet znakov.
Vsakič, ko se skozi to zanko, pet se ne spreminja.
Jaz bi lahko povečevanje i, ampak kaj je dolžina sekunde vsak
ponovitev te zanke?
To je pet, to je pet, to je pet, in vendar sem vseeno prosim te
znova in znova in znova zaslišati.
Zdaj odkrito povedano, računalnik je tako prekleto hitro, nihče ne bo opazil,
Razlika je v tem primeru, vendar te vrste revnih konstrukcijskih odločitev lahko
začnejo sešteti, če prevajalnik sam ne poskušajte popraviti to za vas, ki
je običajno ne bi, na vsaj v napravi.
>> Torej bom to naredil.
Bom dodati vejico po moja prva spremenljivka, i.
Grem dam drugo spremenljivka, ga kliče n, samo z
Konvencija za številke, in potem sem dogaja, da določite n vrednosti niza
dolžina s.
In potem bom spremenila moj pogoj za kaj?
Bom spremenila moje stanje da medtem ko je manj kot n.
>> Torej, zdaj, kolikokrat sem preverjanje dolžine s?
Enkrat, ampak to je v redu, da preverim proti n znova in znova, saj zdaj tisti,
Vrednosti se dejansko ne spreminja.
Zdaj za zdaj, samo vem, da lahko kadarkoli vas klic funkcije, tam je malo
režijske stroške, ni dovolj, da bi vas odvrnila Res od kdaj uporabo funkcij, vendar
Vsekakor, če obstaja vrstica kode všeč - in linije bodo dobili
bolj zanimivo, preden dolgo - če obstaja možnost, da mislim, če sem
vnesite to kodo, koliko krat Opravljala bo?
Boste začeli videti sčasoma v delovanje vaših programov lahko
res spremenilo.
>> Pravzaprav je eden od problema postavlja smo jih narejeno v minulih letih vključuje
izvajanje, kot se morda spomniš iz nič teden, črkovalnik, vendar
črkovalnik, ki je namenjen podpori slovar 150.000 plus
Besede, ki smo vam fantje.
Ti bi morali napisati kodo, da obremenitve te besede v RAM, tako v
škatle, kot smo videli na zaslonu trenutek nazaj, nato pa tako hitro, kot si ti
Lahko, morate biti sposobni odgovoriti Vprašanje obliki, je ta beseda
napačno črkovana?
Ta beseda napačno črkovana?
>> In nekaj podobnega, da tisto, kar smo jih opravljeno v letih, se je izkazalo v preteklosti,
čeprav na opt-in prostovoljni podlagi, Tekmovanje z menoj, s katerim
Učenci, ki uporabljajo manj pomnilnika in manj Čas, manj CPU cikle, na koncu
bisernih do vrha malo Vodja odbora ali razvrstitev, da smo se na
Domača stran predmeta, kot smo jih narejeno v preteklih letih.
Še enkrat, popolnoma neobvezno, vendar govori oblikovalskih možnosti
, ki so pred nami, ko smo začeli gradi na vrhu nekateri od teh
osnovni gradniki.
>> Naj se vrnem k temu diagramu za Samo trenutek in razkrivajo malo
nekaj več.
To je vsekakor niz, da smo zavzeli Prednost nekaj knjižnic,
Standard io.h ki ima -
>> Printf.
>> Printf, med drugim.
cs50.h, ki je dobil int in dobili niz in tako naprej, string.h, ki
imel STR Leng.
Vendar se izkaže, da je še en.
Odkrito povedano, tam je veliko in veliko glavo datoteke, ki deklarirajo funkcije
za knjižnice, ampak to je ctype.h dejansko dogaja, da se nekoliko
ugodna, ker bom da gredo naprej in izvajanje enega
drug program tukaj.
>> Dovolite mi, da gredo naprej in odprli nekaj Sem napisal pred imenom
capitalize.c in vzemimo Poglejte, kako to deluje.
Obvestilo, da sem s pomočjo, v tej različici od tega tri znane datoteke.
Opazili, da v vrstico 18, sem pridobivanje vrstico besedila.
Obvestilo v skladu 21, sem trdil, da Naslednja koda bo
izkoristiti s, kar Vtipkali leta, in kako delam to?
No, jaz sem ob -
izkušnja iz zadnjega časa -
Jaz razglasitvi i in N ter ponavljanjem več znakov v nizu.
In potem, kaj je to blok koda v skladu z 24. 27.
početje v smislu navadnega je?
>> Male črke nazaj.
>> Točno tako.
Če je nosilec i - tako da, če i- značaj s, ki je specifična
znak v nizu, večja od ali enaka male in -
Opozarjajo, da je dvojni znak & označi in -
in isti lik, je nosilec i, je ali manj v male Z,
to pomeni, da je ali b ali c ali pika, pika, pika, ali z, kar pomeni
je male.
Kaj hočem narediti v tem primeru?
No, jaz lahko naredim to nekoliko cryptically, vendar
kaj je to draži narazen.
>> Grem printf poklicati, natisne% c ker želim natisnite ta
znak na zaslonu.
Jaz pa grem, da se nosilcem S Jaz, i-ta lik s, in zakaj
počnem ta mali trik tukaj, male minus kapitala?
Kaj se, da bo dal mi na splošno?
>> [Neslišno].
>> Točno tako.
Res ne pozabite -
je bilo 65 za kapitalske A. Res ne se spomnite, kaj male črke, je,
pa ni važno.
Računalnik ne ve.
Torej z besedami, male minus glavno, da je čudno, da je
odšteje en sloj iz drugega, ampak kaj znakov, ki je pod pokrovom?
Oni so samo številke.
Torej, ne glede na te številke, Naj računalnik zapomnil
namesto mene človek.
>> Torej male negativni kapital je dogaja, da mi razliko.
To se zgodi, da se 32, in da bi velja za male črke b in kapitala B
in tako naprej.
Ostane dosleden, na srečo.
Torej sem v bistvu pravi, da male črke, odštevanje off, da
Standard razlika, in da Učinkovito sprememb nosilcem S i od
male črke, da, seveda, velike črke, brez moje res morali razmišljati
o tem, ali ne pozabite, kaj so bili tisti, številke smo govorili, ko osem
Prostovoljci prišel na oder?
Zdaj pa se je v drugega, če to ni male črke, kot je določeno
po liniji 24, samo ga natisnite.
Želim samo dotakniti znaki, ki so bili
pravzaprav prvotno male črke.
>> Torej, da vidimo to.
Naredite izkoristiti.
Zbrati, v redu.
. / Izkoristiti.
In mi tip v H-E-L-L-O z malo začetnico, Enter.
In opazil, da se pretvori v velikimi črkami.
Dovolite mi, da to storite še enkrat z drugačna beseda.
Kako o D-A-V-I-D s prvim D kapitalizirane kot ime je običajno?
Enter.
Obvestilo je še vedno pravilna.
Samo outputted da najprej D nespremenjena po tem pa konstrukt.
>> Torej, imejte v mislih, potem Nekaj ​​stvari tukaj.
Ena, če si kdaj želeli, da preverite dva Pogoji naenkrat, lahko in jih
skupaj kot smo napovedali.
Lahko primerjate znake na ta način in učinkovito zdravljenje znakov,
številke, vendar odkrito, to je tako prekleto skrivnosten Nikoli ne bom zapomniti
kako bi prišli do tega iz nič brez obrazložitve s tem za dokaj
malo časa.
>> Ali ne bi bilo lepo, če bi nekdo tam napisal funkcijo imenovano je
znižati, da bi lahko odgovorili zame pravo ali napačna, to je znak malimi?
No na srečo, kdo je napisal ctype.h naredil točno to.
Naj grem gor in dodajte ctype za c vrste, in zdaj mi gre dol in
Reportaža te vrstice kot sledi.
>> Torej, če se imenuje nižja, Trdim, s Nosilec i, potem bom izbrisati
ti dve vrstici v celoti.
Torej, zdaj nekdo drug, sem upal, je zapisal Funkcija imenuje nižja, in
Izkazalo se je, in jih razglasi je notranjost ctype.h.
In zdaj bom pustil linijo 27 sam bom zapustil linijo 31
sam, ampak obvestilo, koliko sem poostrila svojo kodo.
To je zdaj čistejši.
To je manj težko odmisliti ker zdaj funkcija, poleg tega
tako čudovito je imenovan samo ne, kaj piše.
>> Torej, zdaj bom rešiti to.
Jaz grem za pomanjšanje.
In tako kot v Scratch bi lahko imeli Booleans, vrednote Boolove res ali
napačna, to je točno tisto, kar je nižja dejansko vrne.
Naj ti prevedem.
Dovolite mi, da ponovno rok.
In zdaj pa še enkrat poskusil, H-E-L-L-O, Enter.
To je zelo dobro.
In poskusite znova, preverite, ali sem ni zajebal nekaj gor.
, Ki se obračuna kot dobro.
>> Vendar to ni dovolj dobro, saj Druga stvar, ki me ne bo nikoli
spomnite, razen če delam z njim res previdno na, recimo, papir
to prekleto linijo.
Ne bi bilo lepo, če bi bilo Funkcija se imenuje na zgornji?
No, izkazalo se je tam je v ctype.h kot dobro.
Jaz grem naprej in tip -
dovolite mi, da to vrstico nazaj.
Namesto tega sem, naj gredo naprej in pravijo, nadomestek za% c je
Rezultat te funkcije kliče Zgornja na i-ti značaja s.
In sedaj opazili, da je pridobivanje Malo uravnoteženo.
Moram slediti, koliko oklepaje sem odpirajo in zapirajo.
>> Torej, zdaj je še čistejši.
Zdaj ta program boljši in bolje zasnovani verjetno zato, ker je
veliko, veliko bolj berljiva, ampak To ni dajmo popraviti.
Naredite izkoristiti.
. / Izkoristiti.
H-E-L-L-O. Kaj je to spet teči, D-A-V-I-D. OK, tako da smo še vedno v
zelo dobri formi.
>> Zdaj pa se zgornji del.
Predlagam, da obstaja še ena več izpopolnitev lahko naredimo, da bi
res lepo, da bi lahko resnično zaostriti do te kode, in res nam pet
od petih za oblikovanje, na primer.
Kaj bi bilo lepo, da se znebite?
No, poglej, kako prekleto dolgo ta blok Koda je le narediti nekaj preprostega.
>> Zdaj, kot prahi, kot boste morda morali gledati v super oddelku v preteklem
vikend, vam ni nujno potrebujemo Zaviti oklepaji, ko imate le eno
vrstica kode, čeprav smo predlagali jih držimo tako, da naredi veliko
bolj jasno, kot v obliki črke U na praske na bloki, kaj je notri podružnice.
Toda ali ne bi bilo lepo, če na zgornji, ko je dal svoj prispevek, se je izkazalo v
veliko začetnico, če to ni, in kaj bi bilo čudovito, v nasprotnem primeru, če
to je že velike črke?
Samo skozi in jo pusti pri miru.
>> Mogoče je pa to.
Jaz bi poskusil in samo upam, da se to, a mi dovoliš
uvesti eno stvar.
Namesto uporabe tega vgrajeni terminal okno dol, opozarjajo, da
ta črna ikona kvadrat vam Večji terminal okno, ki se lahko polni
pregledajo, če želim?
Tako se izkaže, da si nekako čudno named, vendar pa je te stvari imenovanih
man pages, ročni strani, človek na kratko, in sem lahko dostop do njih s
tipkanje človek -
Kaj hočem s tipom?
Človek na zgornji del.
>> In sedaj opazili, če obstaja deluje notranjost računalnika v
V tem primeru je naprava, ki je prav Linux operacijski sistem, da se dogaja
da mi nekoliko Grobni niz izhod, vendar boste našli več časa, da
vedno je oblikovana precej Enako tako da začnete navadiš.
Obvestilo na vrhu v zgornji del in Očitno je enako dokumentacijo
Za nižje.
Kdor je napisal je rezanje nekaj vogali in dal vse na eno stran.
Namen teh stvareh "v življenje je za pretvorbo
črka na zgornji ali malimi črkami.
>> Opazili, da se pod Sinopsis, stran man me učil, kaj datoteka imam
vključiti uporabljati to stvar.
To mi je kar podpise za to funkcije, sta oba, celo
čeprav smo zdaj le skrbi za enega.
Tukaj je zdaj opis.
Na zgornji pretvori črko c z veliko začetnico, če je to mogoče.
>> Še vedno ni tako poučna, vendar mi dovolite Zdaj poglej pod vrnjene vrednosti, je stvar
da se je vrnil.
Torej vrednost vrne iz pretvori pismo ali c, če
pretvorba ni bila mogoča.
Kaj je c?
>> Prvotni značaj.
>> Prvotni značaj in vemo, , ki jih, še enkrat, bo do
sinopsis, in kdor je to napisal Funkcija pravkar odločila, da vnos
da se zgornji in spodnji je samo samovoljno dogaja, da se imenuje c.
Lahko bi ga imenovali najbolj ničesar hočejo, vendar pa ga hranijo
enostavno, kot c.
Tako sem posvetoval s strani človeka.
Ta stavek me prepričali, da če to ni male črke, to je
dogaja, da me daj nazaj C, kar je popolna, kar pomeni, da sem lahko znebite
moj drug pogoj.
>> Naj gredo nazaj v gedit in Zdaj mi pa samo naredi to.
Grem kopiram printf izjavo.
Jaz grem naprej in desno v notranjosti za zanke izpisa, ki se izvajajo, in dobili
rešimo zdaj to celo, če konstrukt.
Ni slaba ideja, in je bilo zelo bolj pravilna in skladna s
vse, kar smo pridigal, ampak ni potrebno.
Takoj, ko se zavedaš, nekaj knjižnico funkcija obstaja, da je nekdo drug
napisal, ali pa si napisal na drugem mestu v datoteko, jo lahko uporabljate, in res
začetek poostriti kodo.
>> In ko rečem stvari, kot dobro slogu, Dejstvo, da oseba, ki se imenuje
deluje na zgornji ali prej je nižja je nadvse koristno, saj
oni so zelo opisno.
Saj ne bi rad, da pokličete svoje funkcije x in y in z, ki imajo
veliko, veliko manj pomena.
Vsa vprašanja o tej seriji izboljšave?
>> Zato je dovolj reči eno takeaways je tudi kot svoj problem
set - morda problem set, pač pa Vsekakor P nastaviti dva in tretjemu celo
ko si pravilno ni nujno pomeni, da so kot nalašč ravno
ali še posebej dobro zasnovan.
To je drugi osi, začeti razmišljati o tem.
Torej je ta niz znotraj vašega računalnika spomin, ampak če imate
cel kup znakov, kot so H-E-L-L-O Notranjost RAM-a, in domnevam
ki jih v svojem programu pokličite dobili niz večkrat, kot da vas
pokličite dobili niz enkrat, potem pa pokličite spet dobili niz.
No, kaj se dogaja na zgodilo v daljšem časovnem obdobju?
>> Z drugimi besedami, če imate linijo Koda, čeprav iz konteksta, kot so
Niz je dobil -
kaj je to.
String ime enako dobili niz.
Torej, predvidevam, da je vrstica kode je namenjen vprašati uporabnika za njegovo ali njeno ime.
Ta Naslednja vrstica kode je mišljeno, da zahteva uporabnik za njegovo ali njeno šolo, in
ta druga skupina, in tako naprej.
Recimo, da smo ostali prosi Uporabnik za drugo in
še in še niz.
Oni bodo ostali v spominu hkrati.
Ena se ne bo clobber drugega.
Šola se ne prepiše drugega.
Ampak kje delajo vse končajo v spominu?
>> No, če začnemo oblikovati na zaslonu, ki ga lahko uporabimo to stvar
tukaj kot tablo, če je to črna pravokotnik predstavlja moj računalnik je
spomin, bom samovoljno začeti ga deli na majhne kvadrate,
vsak od njih predstavlja en bajt pomnilnika.
Odkrito povedano, če imate gigabajt RAM v teh dneh, imate milijardo bajtov
pomnilnika v računalniku, tako da milijard teh kvadratov.
Zato je dovolj reči, to ni res v merilu.
>> Vendar lahko hranimo pripravi vse te očitno niso v merilu kvadratov, in to
skupaj predstavlja spomin mojega računalnika.
Zdaj bomo pač pika, dot, pika.
Torej, z drugimi besedami, ko sem zdaj poziv Uporabnik s get vrvico, da mi
string, kaj se zgodi?
Če uporabnik vnese v "zdravo", da se konča v H-E-L-L-O. Recimo
potem uporabnik vrste v -
pravzaprav, ne bi smel storiti Pozdravljeni, ker smo asking
jim za njihovimi imeni.
Torej pojdimo nazaj, če to lahko storim.
>> Torej, če tip I in D-A-V-I-D za moje ime, vendar pa opozarjajo, da drugi vrstici
Kodeks je bil spet dobil niz da bi dobili svojo šolo.
Če je ta beseda, ki jo uporabnik vrste v šli naprej?
No, morda pa bo šel v H-A-R-V-A-R-D. Torej, čeprav sem
je sestavljen v dveh vrsticah, to je samo cel kup bajtov v vašem
računalnika RAM.
Tam je problem zdaj, ker zdaj, če sem uporabo RAM na to zelo smiselno
ampak nekako naivne način, se lahko kaj ni očitno razlikuje?
Če en začne in kje ena konča, kajne?
Oni so nekako zabrisane skupaj.
>> Tako se izkaže, da računalnik tega ne stori.
Dovolite mi, da dejansko pomaknete nazaj v čas, v Nekaj ​​znakov, in namesto Harvardu
grem takoj po uporabnikovem imenu, uporabnik dejansko dobi, zadaj
Prizori, poseben značaj vstavi
Računalnik za njim.
/ 0, sicer znan kot znak NUL nadležno imenovan N-U-L, ne
N-U-L-L, ampak si ga napisal kot / 0.
To je samo vse nič bitov je označevalec v med prvo besedo, ki uporabnika
vnesli in drugi.
>> Torej Harvard dejansko zdaj konča kot to zaporedje znakov
in še eno / 0.
Torej, z drugimi besedami, ki jih imajo ti kontrolne vrednosti, osem stikata nič
bitov, lahko zdaj začeli razlikovati en znak od drugega.
Torej, ves ta čas, kar je bilo "zdravo", je dejansko "zdravo" z / 0, in
Medtem pa bi lahko zelo dobro precej malo več RAM
notranjost računalnika.
>> Dovolite mi, da naredite eno stvar zdaj.
Izkazalo se je, da so vse te kvadratov smo bili risanje, so, da,
strune, ampak bolj na splošno, te stvari so nizi.
Array je samo kos pomnilnika da se je vrnil nazaj na hrbtni strani,
in jih po navadi uporabljate niz v obliki te kvadratni nosilca zapisa.
Tako da bomo videli te zelo malo sčasoma, ampak naj gredo naprej in
odpreti, recimo ji starosti poklicati.
In opazil, kaj lahko storimo z ti isti triki, malo
malo več sintaksa tukaj.
>> Torej, v skladu 17. člena tega programa - pravzaprav, mi zažene program prve
tako da bomo lahko videli, kaj ta stvar počne.
Poklical bom, da starost za pripravi tega programa.
/. Starosti.
Koliko ljudi je v sobi?
Call it tri.
Starost prvi osebi?
18, 19, in 20.
In zdaj nekoliko smešno, sem so naredili program, da starost, tistim,
trije ljudje.
>> Torej je jasno priložnost Za nekaj zabave aritmetične tukaj.
K sreči, je matematika pravilna.
18. odšel v 19., 19. šel na 20 in tako naprej.
Ampak kaj je res mišljeno, da bo Nazoren je, kako bomo shranjevanje
starost teh treh ljudi.
Dovolite mi, da povečate na tisto, kar je dogaja.
>> Torej, najprej je treba te prvih nekaj vrstic se že precej pozna.
Jaz sem samo da bi od uporabnika število oseb v sobi.
Potem sem s pomočjo dobil int in ne, medtem ko se to znova in znova in znova narediti.
Videli smo, da se vzorec prej, vendar linija 27 je nov in pravzaprav precej
koristno, in bo bolj koristno.
Obvestilo, da tisto, kar je drugače v skladu 27. je, da sem se zdi, da se razglasi
int imenovane starosti, vendar počakajte.
To ni le int starost.
Tam te oklepaje, znotraj katerih je n.
>> Torej nosilec n v zvezi s tem ni notranjost printf izjavo tukaj, ampak
V tem edinim liniji 27, ta vrstica rekel, da me n Ints, od katerih vsaka
je tipa int.
Torej je to vedro, tako rekoč v, v tem primeru tri cela števila nazaj
na hrbtni strani, tako da sem dejansko imajo tri spremenljivke.
Možnost, da se jasno, da bo ta.
>> Če bi želel najprej študenta starost, jaz bi to naredil.
Če sem hotel drugega študenta starost sem lahko to naredil.
Če bi želel tretjega študenta starost, jaz bi to naredil.
In bog ne daj, da moramo vsakogar starost v tej sobi -
Mislim, da je to pekel od veliko izvoda, spet in ponovno prilepite.
In plus, ko sem zbrati ta program, če en študent hodi več ven
v ta vrata, zdaj moja številka spremenljivk je napačna.
>> Torej, kaj je lepo o matriki je kot Takoj, ko začnete sami občutek
kopiranja in lepljenja, so možnosti, da je ni najboljši pristop.
Array je dinamičen potencialno.
Ne vem vnaprej, koliko ljudi se bodo v prostoru
vem pa moram n od njih, in bom ugotovimo, n, ko pride čas.
Ta vrstica kode zdaj pomeni, da mi kos pomnilnika, ki je videti takole
kjer je število polj na zaslonu je v celoti odvisen od n, ki
uporabnik vtipka
>> Torej, zdaj Preostanek tega programa je pravzaprav zelo podoben temu, kar smo
pravkar storil z znaki.
Obvestilo imam za zanko z začetkom v vrstici 30.
Torej, takoj ko sem dobil niz, sem Ponovil od y enaka nič, na do n.
Imam samo to poučno printf sporočilo samo rekel, da mi na starost
osebe #% i, tako da številka ena, Številka dve, številka tri.
In zakaj sem naredil to?
Odkrito povedano, ljudje raje šteje od ena gor ker računalniški znanstveniki,
nič gor.
računalniški znanstveniki ne bodo uporabljate to vrsto programa, tako da smo
bo šele začetek štetja na eni, kot normalni ljudje.
>> In zdaj je v skladu 33, opazili rahlo drugačen del sintakse.
I-starost v omenjeno spremenljivko tipa matrika bo dobil int.
In zdaj končno, to je samo aritmetična tukaj.
Sem se odločil v ločenem zanke zahtevku nekaj časa teče, in zdaj v tem
ločene zanke, te vrstice izvršiti.
>> Leto od sedaj, oseba, bom jaz let naj opazil to ni
spremenljivki i.
To je sedaj% i za notr.
In obvestilo, kot prvo ogrado, sem plug i + 1, tako da računamo kot
normalen človek.
In potem se za vrednost njihove starosti, za star i let, vzamem starost, nosilec
i - in zakaj to delam plus eno tukaj?
Pravkar starosti.
To je moja neumna izbira programov.
Pravkar so stari eno leto.
Jaz bi tip v poljubnem številu tej Pravzaprav hočem tam.
>> Torej, kaj je pravzaprav vse ustreznost tukaj?
No, naj dejansko pomaknete nazaj sem in barve sliko
tega, kar je pred nami.
Kaj bomo lahko delaš z naš naslednji Problem Set Dva se ukvarjali v
svet kriptografije.
Tako je ta niz znakov, tako Zaporedje več znakov, in kaj
pa to rekel?
To ni v spletni različici od diapozitivov.
>> Zato trdim, da je to enako to, neumna reklama od mnogih letih
nazaj, da bi lahko dejansko odpoklic ena od njenih izvorov.
Torej je to primer šifriranja ali kriptografija.
Izkazalo se je, da če hočeš dejansko poslali podatke ali pa delež
Podatki z nekom, varno, podobno sporočilo, kot je ta, lahko
Izokrenuti črke.
Ampak ponavadi, so besede Ne umešana naključno.
Oni permutira na nek način ali spremeniti na nek način, tako da - ojej.
To je zabavno spojler za naslednjič.
>> Torej lahko zemljevid tisto, kar je očitno O, B. Obvestila, ki vodi do
kapitalizacija-pametno.
Očitno r postane e.
Očitno F-H-E-R postane S-U-R-E. Torej, se izkaže, da je kartiranje in
V tem primeru pa je precej neumno kartiranje, če je kdo pogruntal?
To je nekaj, kar se imenuje Rot 13, Zavrti 13.
To je najbolj neumna šifriranja Mehanizmi, saj dobesedno
Dodaja, 13 za vsako od črk, neumen, v smislu, da če si
imajo malo prostega časa na vaših rokah in svinčnik, ali pa si samo mislite
skozi v glavi, lahko poskusite vsi mogoči dodatki - Ena, dve,
tri, pika, dot, pika, 25 za samo vrtenje popolno abecedo, in
sčasoma boste razbrati kaj je to sporočilo.
Torej, če si kaj takega v razred šola prehodu sporočila svojim
najboljši prijatelj, če je vaša ocena šola učitelj preprosto prebrati
sporočilo in surovo prisilno rešitev, ste morda gotten
Odgovor s tem.
>> Zdaj seveda, v realnem svetu, kriptografija je bolj zapletena.
To je odlomek iz besedila računalniški sistem, ki ima uporabniških imen in
Gesla, kot skoraj vse naše storiti, in To je tisto, kar bi lahko vaše geslo
videti je všeč, če je shranjeno na trdem vožnje pa v šifrirani obliki.
To ni samo vrtenje pisem, Je B in B C. To
veliko bolj zapletene, temveč ga uporablja kar je splošno znano kot skrivni ključ
kriptografija.
Ta slika pove naslednje Zgodba z nekaj ikonami.
>> Na levi strani imamo kaj bomo poklical golo besedilo.
V svetu kriptografije, navaden Besedilo je le izvirno sporočilo
napisana v angleščini ali francoščini ali nobenem jeziku.
Če ga želite šifrirati, bomo mimo je slikovno skozi ključavnico, tako da
nekatere vrste algoritma, nekatere funkcije ali program, da je nekdo napisal
da pehanje črke upajmo več complicatedly kot samo dodal 13
za vsakega od njih.
>> Kaj dobiš ven iz tega procesa, srednji tam se imenuje cyphertext.
Tako nekako seksi besede.
To samo pomeni, da je šifriran različica navadnega besedila.
In samo, če imate to isto skrivnost, 13 ali minus 13, ste sposobni
dešifrirati sporočilo, kot je ta.
>> Torej Problem določili dve, med stvarmi boste storili, če v Hacker
Izdaja, boste morali napisati kodo tresk teh gesel, ugotoviti
kaj so in kako so bili šifrirana, vendar mi dal malo
za usmerjanje na poti.
V standardni različici, uvajamo Nekaj ​​šifre, šifriranje
mehanizme, ena se imenuje Cezar, eden imenovano Vigenere, da so še vedno
rotacijski šifrirne algoritme, kjer postane nekaj, B postane nekaj, vendar
boste morali to storiti programsko ker bo dejansko skrivnost
ključ, ki so vključeni običajno število ali ključna beseda, ki samo
pošiljatelj in prejemnik teh Sporočila morajo razumeti.
>> Zdaj, to dejansko ima inkarnacije v resničnem svetu.
To, na primer, je malo sirota Annie skrivnost obroč dekoder, in si
Lahko dejansko izvajanje teh rotacijski šifre -
Postane nekaj, B postane nekaj - z nekaj koles,
eno na zunanji strani, eno na notranji tak da če si zavrtite kolo ali
obroč, lahko dejansko line up črke z različnimi črkami,
dobili skrivno kodo.
In tako kot Cliffhanger za danes, kaj sem mislil, da sem naredil, je malo
Atavizam da če vklopite TV 24. decembra, si lahko ogledate
Film oglas nauseum za 24 ur zapored.
Ampak za danes, bom odprla tukaj in nam dal le dve minut
pedagoško pomembne Božična zgodba z malo kolegi imenom Ralphie.
>> [Predvajanje videa]
>> -Se je znano, da vsi po vrsti, da Ralph Parker se imenuje
član Little Orphan Annie skrivnost krog in je upravičen do vseh
v čast in ugodnosti pojavljajo z njo.
>> -Podpis, Mala sirota Annie.
Sopodpiše, Pierre Andre s črnilom.
Priznanja in koristi že pri devetih letih.
>> [Kričanje na Radiu]
>> Pridi, greva na z njim.
Jaz ne potrebujem toliko jazz o tihotapci in pirati.
>> -Poslušaj jutri zvečer za sklepanju pustolovščina črna
piratska ladja.
Zdaj je čas za Annie skrivnost Sporočilo za vas člane
tajnega kroga.
Ne pozabite, otroci.
Samo člani Annie Secret kroga morejo dekodirati Annie skrivno sporočilo.
Ne pozabite, Annie je odvisno od vas.
Nastavite zatiči za B2.
Tukaj je sporočilo.
12, 11, 2 -
>> -Jaz sem v svojem prvem sestanku tajno.
>> -25, 14, 11, 18, 16 -
>> -Pierre je bil v veliki nocoj glas.
Jaz lahko povem, sporočilo, da nocojšnji je res pomembno.
>> -3, 25.
To je sporočilo od Annie sama.
Ne pozabite, ne povej nikomur.
>> -90 Sekund kasneje, sem v edinem prostoru v hiši, kjer fant devetih
bi lahko sedeli v zasebnost in dekodirati.
Aha, B. sem šel na naslednjo.
E. Prva beseda je "biti." S. Prihajal je zdaj lažje.
U. 25.
To je R.
>> -Daj no, Ralphie.
Moram iti.
>> Takoj se dol, mama.
Joj čarovnik.
>> -T. O. Bodite prepričani, da.
Bodite prepričani, da česa?
Kaj je bilo malo Orphan Annie poskuša povedati?
Bodite prepričani, da česa?
>> -Ralphie, je Randy iti.
Prosim, pridi ven?
>> -V redu, mama.
Takoj pridem ven.
>> -Sem bil pridobivanje bliže zdaj.
Napetost je bilo grozno.
Kaj je bilo?
Usoda našega planeta lahko visi na nitki.
>> -Ralphie, Randy je oditi.
>> Takoj se izvajajo za zjokat.
>> -Skoraj tam.
Moji prsti letel.
Moj um je jeklena past.
Vsak por vibrira.
Bilo je skoraj jasno.
Ja, ja, ja, ja, ja.
>> -Bodite prepričani, da popij Ovaltine.
Ovaltine?
Crummy komercialno?
Kurbin sin.
>> [END predvajanje videa]
>> Zvočnik 1: To je CS50 in da Problem bo postavila dva.
Se vidiva naslednji teden.
>> ZVOČNIK 2: Na naslednji CS50, se to zgodi.
>> SPEAKER 1: Torej ena tema nimamo Pogledal doslej je
da funkcijskih kazalcev.
Zdaj, funkcija kazalec je samo naslov javnega
funkcije, vendar podobno kot -
sin -