>> Profesor: Torej agenda za ta teden, ne da veliko stvari.
Upam pa, da je zelo, zelo koristno in pomembne za vas ta teden.
Ampak bomo preživeli morda 15, 20 minut samo hitro govorjenje
o seznamu povezavo.
Link seznami bodo zajeti na kvizu.
Torej, morda bi bilo zelo koristno, da se naučijo nekaj o tem, kaj to je.
>> Bomo porabili velika Večina današnjega oddelka
bo nad kviz nič prakse težav.
In potem bomo prihranili morda 20, 30 minut na koncu za vse dolgotrajne vprašanja
ima kdo.
>> In potem, zadnji pet minut, grem
dati črpalke up govor za kviz.
Vi vsi želijo biti tukaj za to.
Ker to se dogaja, da je pravi čas.
>> Vse je v redu, tako da nekateri Material na seznamu povezavo.
Kako oni običajno strukturirana je imate, kar se imenuje vozlišče, kajne?
Imate te stvari, imenovane vozlišča, ki so konstruktov.
Jaz bom šel čez kako ustvariti vozlišče v naslednji diapozitiv.
Ampak v bistvu vse povezano Seznami je so podatki, ki
je nanizani skupaj s pomočjo kazalca.
>> In tako prednost imamo z uporabo povezani seznam več,
morda, kot matrike, je dejstvo, da v matriki
boste morali en sosednji blok pomnilnik vsi na istem mestu, ena
za drugo, da bi lahko imeli to.
Ker je povezani seznam, lahko imajo naključne malo bitov pomnilnika
vsem računalnikom nanizani skupaj s kazalci.
>> In na ta način boste Dostop do podatkov
da je eden za druga po drugi
ne da bi potrebovali le ogromen kos pomnilnik v računalniku nekje.
In tako je to eden od glavnih Razlogi, zakaj smo uporabili seznam povezav.
>> Drugič, je zelo enostaven za dinamično spremenite velikost seznama povezavo, ker v array,
ko razglasi matriko, imaš neko določeno vrednost.
Recimo, da sem želela ustvariti niz 10 števil.
Sem ustvariti paleto 10 cela števila, in to je to.
To je 10.
Ne vem, kaj naj naredim po tem.
Če bi želel, da postane 11, tega ne more storiti.
Če želim, da postane 9, ne more storiti.
>> Ker je na seznamu povezavo, lahko dodate in brišete in vstavite kjerkoli želite.
Lahko dinamično spreminjanje velikosti strukturirati tukaj, svojo podatkovno strukturo.
In to nam daje veliko več dodane prožnost
da ne bomo tipično imajo z nizi.
>> Kdo zmeden na osnovni Struktura kako seznam povezava
ali zakaj moramo uporabiti eno nad array?
Ja, bomo šli čez podrobneje kako dejansko ustvariti.
Toda to je le nekako splošni občutek prav zdaj.
Cool.
In tako so nizi nanizani skupaj od teh ljubkih stvari
imenovana vozlišča.
Vse vozlišče se je vrsta struct.
Ne pozabite, struct je, če si hotel ustvariti določeno vrsto spremenljivke
v C, ki že ne obstajajo, ti, kot programer,
lahko dejansko ustvari, da sami.
>> In tako je ta vrsta podatkov struktura se imenuje vozlišče,
je dejansko ustvaril nas, da ne obstaja v C sama.
In pot, ki vas ustvariti ena imate
glava typedef struct, ki pove prevajalniku Jaz sem
o ustvariti struct.
>> Bomo ime je "vozlišče".
In notri gremo razglasiti spremenljivko,
kar se dogaja za shranjevanje vrednosti.
In potem smo tudi dogaja, da so kazalec imenuje "zraven"
ki kaže na naslednji vozlišče v seznamu povezavo.
In potem boste končali, da off s samo ponavljanje vozlišče spet tako
prevajalnik ve, OK to je konec mojega struct.
>> In tako na ta način, da smo nekako ustvarjanja srčkano niz
vrsta stvari z vrednost in s kazalcem.
In jih lahko povezali vse skupaj s temi kazalci.
Tako da jih lahko vse vrste biti nanizani skupaj v verigi.
>> Cool.
Slišiš, da malo bolje?
>> OBČINSTVO: Ja.
>> Profesor: V redu.
Torej tako, kot lahko vi vidite, tipičen seznam povezava je strukturirana
je imate glavo.
Imate vrednost glave, ki je ni pri čemer je poudaril s katerim koli drugim kazalcem.
Ampak to se dogaja, da opozarjajo na, ali referenčno, drugo vozlišče.
Vozlišče, ko se bo za navajanje vozlišče po tem, in tako naprej in tako naprej
dokler ne boste sčasoma hit konec vašega seznama povezavo.
In si ne bo imela kazalec tam.
>> In tako, mislim, kot so, na verigi, ali celo če kdo od vas fantje iz, ne vem,
kot s sadjem Loops ko si bil majhen.
Vi bi niz jih skupaj in jih nosite okoli vratu.
Mislim, da je točno isto stvar.
Imate te male stvari, ki jih lahko niz skupaj, ki kažejo na eni
po tem, da je ena po to, in tako naprej in tako naprej
dokler ne boste imeli verigo strukture podatkov
ki jo lahko uporabite pa ti je všeč.
>> Torej način, da to mi bi običajno vstavite ali izbrišete
katerokoli vozlišče iz povezave Seznam je zelo različna
odvisno od tega, kje je, da vozlišče.
Tako, na primer, ker kazalci so vedno
kaže na točno določeno vrednost, ko izbrišete ali vstavite vozlišče,
želite zagotoviti, da kazalec se vse kaže na prave stvari.
>> Torej, če boste želeli, da bi lahko vstavite nov vozlišče z vrednostjo ena
znotraj urejenih povezave seznam, vsi vemo tukaj
iz slike, ki se dogaja, da iti med glavo in dva, kajne?
Ker je ena prilega prav tam.
Toda način, na katerega bomo storili, da je s prvim Dereferenciranje kazalec
od glave in pošiljanje, da enega.
>> Vendar smo prišli v problem tukaj.
Kdorkoli lahko videli, kaj je problem je, če smo bili na prvem dereference
kazalec od glave do enega?
Kakšne težave lahko naletimo, če bomo poskušali to dodati k pred našim niz?
>> OBČINSTVO: [neslišno]
Profesor: Točno tako.
Torej, tukaj imamo kazalec, ki je bil enkrat obrnjena od glave do dve.
Ampak, če boste znebili da kazalec, ga opozoriti na eno,
zdaj nimam pojma kam iti, da bi našli dva.
Saj, kot sem že prej povedal, da imaš velikan kos pomnilnika v vašem računalniku.
Vsi ti vozlišča lahko naključno vrinjeni
v vsakem mestu v vašem računalniku.
In ne veš, kako iti o iskanju tega.
>> In zato morate imeti kazalce kaže na vseh vozliščih konec.
Ali pa, če vas slučajno dereference enem
brez prvega prirejanja vrednost prvič, ste
šele tekoč, da izgubijo Vse zatem.
>> Torej, kaj bomo storiti, je, da bi najprej
želite ustvariti kazalec vozlišče želite vstaviti.
To točko, kjer ste želite vstaviti, da,
in potem kasneje vam lahko kaže glavo nazaj za eno.
>> Ali, da je smiselno, da se vsi tukaj?
Great.
Misli, da je tako kot verige.
Če dodate verigo, to je nekako intuitivno
kako boš šla o vstavljanju da.
>> OK, tako da je dejansko precej krajši, kot sem mislil, da bo,
pet minut spiel na seznamih povezavo.
Samo, da vidva imela Osnovna ideja, kaj to je.
>> Tu imamo načrt za kviz ničlo.
Ne dovolite, da vas to ustrahovati.
Vem, da je veliko informacij.
To izgleda zelo strašljivo.
Prav tako je veliko, sem mislim, CSC vrsta pogojev.
Stvari, kot šestnajstiško strune, kazalci, dinamična spominske dodelitve
so zelo scary pogoji zvenečimi.
>> Ampak bomo jim odmor navzdol, naredite nekaj težav prakse
tako da vidva vse so pripravljeni za ta test.
Koliko od vas fantje imajo že začel študirati?
>> OK, vidva verjetno želeli začeti kako začeti
o tem, ker je kviz jutri.
Ali četrtek za nekatere od vas.
Ja, zato smo šli čez nekaj problemov prakse.
Če vi vsi želimo, da bi ven list papirja, svinčnik.
Bomo samo preživeti Velika večina današnjega oddelka
šel čez nekaj da, tako da fantje imajo ideja o tem, kaj lahko pričakujete na kvizu.
>> V REDU.
Nekaj ​​logistična podrobnosti, kot tudi, za koga
ki ni bil, da ta povezava obstaja, če greš cs50.yale.edu, na sprednji strani
ta stran obstaja povezava ki pravi: "O Kviz Zero."
Povezava vas popelje tja.
Če še niste prebrali, vas prosimo, da ga preberete.
Saj vam pove, res pomembno informacije o kvizu.
>> Bom to izvleči iz da samo zato, fizično,
Če vi ne veste, kje iti, bomo imeli težave.
In tako, če je vaša zadnja v zvezi z N, pojdite v šolo pravo dvorano za.
In če je tvoje zadnje začne s P do Ž, pojdite na Davies avditoriju.
In to velja le za ljudje v oddelku sredo.
>> Če ste vzeli kviz o Četrtek, greš na SSS, 114
če vaš predavanje je običajno.
OBČINSTVO: [neslišno]
Profesor: O do Ž, boste iti v Davies avditorij.
Jaz bom za spremembo, kajne?
>> Oh, ja, samo ne samodejno.
>> Oh ja, da si je Christa.
Ja, moja slaba.
Ja, O do Ž, boste iti Davies Auditorim.
Jaz bom popraviti to enkrat dodam.
Ja.
>> In potem je tudi nekaj treba upoštevati
je, da je sreda, če ste uradno vpisanih v razdelku sredo,
morate vzeti kviz v sredo.
In če ste vpisani v četrtek, morate vzeti kviz četrtek.
In to je v času razredu.
Kje, mislim, da je kot 1:00 do 02:15 ob sredah in 2:30-3:45
ob četrtkih.
>> Če imate za nezdružljivo konfliktov, Izgovorov Dean so edina stvar,
Na žalost, smo lahko.
Ker smo imeli velika večina prošenj
preklopiti od srede do četrtka.
Ki je ne moremo spoštovati, razen če imamo prošnjo dekana je.
>> V REDU.
Torej, preden začnemo o Nekaj ​​težav prakse,
Jaz sem samo šel čez Koristnih nasvetov Andy za uspeh.
Vidva, ko si študirati, si res želite vaditi pisanje kode z roko.
Prvič, da sem kdaj vzel CS kviz, nisem imel
praksa pisanje kode z roko prej in je bilo izredno
šokantno, kako težko je bilo.
>> Ko se vidva ne uspelo uvrstiti v Navada tipkanje izvedeli vse,
gre zelo naravno biti sposobni so za autocompleted
nosilci in podpičja tam.
Ko jo napisali z roko, včasih je
Zelo, zelo preprosto pozabil podpičje, ali pozabite zapreti nosilec,
ali pozabite zapreti debelo črevo, ali nekaj takega.
>> Torej, ko pišete kodo na roko, to je zelo drugačen občutek.
Torej vidva, ko delate skozi nekaj problemov prakse,
bi bilo dobro, da bi v resnici praksa danes.
Ali jutri, mislim, če ste ob kviz v četrtek.
>> Drugič, imamo zadnja, podobno, Osem Letošnji vredno prakse
kvizi na spletu.
Letošnji kviz bo verjetno Zelo, zelo podobni za vse izmed njih.
Oni so vsi zelo podobni.
Ste nekako uspelo uvrstiti v slog na vrsto vprašanj
da zahtevamo, tip funkcije, ki jo bomo napisali v,
et cetera, et cetera.
>> Torej, vzemite praksi kvizi, predvsem pod časovnim pritiskom.
75 minut, da storijo kviz ni veliko časa.
To je zelo, zelo dolgo.
In tako vidva res želite se prepričajte, da sta vidva
v navado pisanja kode z roko hitro.
Ker si ne želite, da je prvi čas, da vidite kviz te dolžine
na vaši kviz.
Vi fantje res želite zagotoviti da ste predhodno vadite.
>> Četrtič, hočeš preglejte predavanje in oddelek diapozitive.
Nimate zapomniti stvari.
Pravzaprav, vsi dovoljena en list belega papirja bankovcev,
spredaj in zadaj.
Vidva lahko vnesete ali pisati.
Če se znajdete potrebujejo, da si zapomnimo karkoli, ga odložil na tem listu.
>> Zagotavljam vam, da ne želite, da biti zaljubljen v sredini tega kviza
biti všeč, oh ja, kaj je runtime te vrste v primerjavi te vrste.
Daj ga dol in ga kopirajte naravnost iz vašega note stanja.
Potem lahko dejansko šele raba vaš možgane, da razmišljajo o težavah
namesto da bi se spomni dejstev.
In tako resnično izkoristijo o vseh podrobnostih nišnih
da mislite, da morate zapomniti, ga Pljuskanje navzdol na listu pregleda.
>> OK, na vsa vprašanja logistično glede kviz
preden začnemo nekaj Težave kviz vaditi?
Ja?
>> OBČINSTVO: Nisem imel priložnost pogled na kvizu [neslišno]
vendar se bo Program večinoma,
ali je tam tudi bo, podobno, vprašanja znanja?
>> Profesor: To je veliko.
Torej, tako da sem bi opisal kviz
is-- sem dal skupaj nekateri problemi prakse
da sem potegnil iz vseh kvizov.
Vendar pa boste videli, da obstaja dva glavna Vrste vprašanj, vas bomo vprašali.
>> Eden je detajl zelo nizka raven stvari.
Mi vam bomo majhen kos kode in pravijo, obstaja napaka tukaj?
Kaj bi se tiskanje tukaj?
Kaj bo ta koda proizvodnjo, et cetera.
Torej podrobnosti informacijske zelo nizki ravni.
>> In na flip strani, bomo imeli zelo visoki ravni, ki temeljijo na znanju vprašanja.
Ali lahko pojasnite, kaj je Razlika med binarnega iskanja
in linearna iskanje je?
Zakaj bi si želeli uporabiti eno nad drugo?
Morda, kaj je GDB?
Zakaj želimo uporabiti GDB?
Višji ravni, bolj temeljna razumevanje vprašanj.
Tako boste videli mešanico dva izmed njih na vašem kvizu.
>> Karkoli drugega, preden smo naravnost vanjo?
V REDU.
OBČINSTVO: Ena bolj.
Profesor: Oh, še eno.
Žal mi je.
>> OBČINSTVO: Ja, vse je v redu.
Torej pravite, v 75. minuti je prekratka, kot je malo verjetno
da bomo končali?
Ali, kot, 75 minut je natanko toliko časa
kot bi morali, če smo bili ustrezno pripravljen?
Profesor: OK, tako da je Kviz je zahtevna.
To je vsekakor velik izziv.
Boste znajdete v stiski s časom.
Ste verjetno, da bo udaril, kot so 10, 15 minut, da gredo, in je podobno, drek.
Imam toliko levo storiti.
In to je povsem v redu.
Vsakdo se dogaja, da čutijo enako.
>> Samo se zelo dobro zaveda koliko časa imate.
In da je, zakaj sem ti povedati fantje prakso kvizi.
Ker je res daje velik občutek česa kviz se bo podobno.
Torej, če se znajdete pri čemer lahko končal prakso
kvizi v dobro znesek Tokrat si lahko tempo dobro,
potem ne boste imeli težav v sredo ali četrtek.
>> Cool.
Torej, če vse wants-- mislim večina ljudi ima listov papirja
že ven.
Jaz bom v bistvu samo vam vzorec vprašanja,
vam fantje, kot so, a nekaj minut, da jih ne.
In bomo šli čez kot razred kaj odgovori na njih.
>> Torej, to je zelo tipičen zgodaj vprašanje bomo
vas prosim, samo pretvorbo številke med različnimi bazami.
Binarni, kot vidva lahko odpoklic, je osnova dva.
Decimalno je osnova 10, ali pa tisto, kar smo kot ljudje interpretirajo.
Hexadecimal je baza 16, ki je nič skozi devet kot tudi do F.
>> Torej je štiri številke Jaz sem vas prosi fantje tukaj pretvoriti.
Dam vam je všeč, tri do štiri minute, da mislijo s tem, kako
bomo lotili reševanja tega.
>> OBČINSTVO: Ali smo dovolili računala?
>> Profesor: Ne, ne bo Potrebujete kalkulatorje, ja.
Mislim, da osnovni dodatek, mislim, da je vsi fantje bodo morali storiti.
>> In ravno zato sem nekako imajo občutek kdaj se vsakdo storiti, poglej gor,
val, ne vem, nasmeh, videti srečni, če ste končali.
Ja.
Mogoče nekaj več minut.
>> OK, dajmo ga prinašajo.
Sem namenoma bo vam fantje manj časa
kot ste verjetno morali naredite nekaj od teh težav,
preprosto zato, ker želim, da poskrbite, da pridemo skozi kup težav.
Torej brez skrbi, če niste imajo priložnost, da konča.
Popolnoma v redu, dokler imate idejo, kako iti o tem.
Torej, gremo naprej in narediti prvi.
>> Torej, najprej, ali ima kdo rad, da mi poveš v binarno, kaj vsaka od teh številk
zastopanje v smislu njihovih vrednot?
Ja?
>> OBČINSTVO: Dva do moč nič, dva enem.
Profesor: Točno tako.
So.
>> Desno, tako da običajno ko smo v bazo 10
Vsi ti dejavniki so, kot so, 10 do baze nič, prav?
To je vaš one v mesto.
Vse vaše 10 ali je mesto je 10 z močjo enega.
Vi 100 je mesto 10 z močjo dveh.
>> Karkoli baza ste v se dogaja storiti s točno isto stvar,
Samo z drugačnim bazo.
Torej binarni, vse, kar je, je osnova dva.
Greš pretvoriti vse številke v dveh da ne glede na moč
te cifro.
In tako v tem smislu smo lahko lažji način
, da lahko dodate gor ali sešteje vse številke, da bi
pretvoriti v bazo 10.
>> Torej, ali ima kdo rad, da mi poveš, kaj je Odgovor na prvo je v osnovi desetih?
>> OBČINSTVO: Dva, [neslišno]
Profesor: Ja.
OBČINSTVO: 42.
Profesor: 42, tam greš.
Torej, kako smo dobili ta odgovor je bil s delaš dve mesti pa prvo, kar je za dva.
Plus dva, tretji, ki je osem.
Plus dva do peta, ki je vse, kar je ostala.
Vi povzamem jih gor in je 42.
>> Je kdo zmedeni o tem, kako smo dobili to?
Torej osnovni dodatek, kot Rekel sem, da bi morali biti v redu.
Če ne, pa bomo lahko vadite, da je preveč.
Ampak to je vse v redu.
Cool.
>> Ali kdo želel, da mi odgovoriti na drugi pa tudi?
>> 50?
Dobro.
Vsakdo zmedeni o tem, kako imamo, da bodisi?
Cool, bom imela odgovori na naslednji diapozitiv.
Torej brez skrbi, če vas Potrebujemo jo prepišite.
>> OK, tako šestnajstiški je malo težje.
ampak bom, da vam pokažem fantje bližnjica za kako to storiti.
Torej šestnajstiški, saj vas zapomni si, vse, kar je bilo 16.
In ker smo kot ljudje dejansko ne ima 16 številk predstavljajo, da
gremo od nič do devet, ki je naša prva 10 vrednosti, nato pa delamo od A do F,
ki so v naslednjih šestih vrednosti.
>> In tako je najlažji način, da gredo iz vsaka binarna številka šestnajstiško
je, da jih razbiti na polovice.
In zato bo vsaka binarno število bova dala boste verjetno morali osem številk.
Lahko samo odmor jih v sredini.
>> Torej prva one-- eden on, eden on, on, on, ena ena.
Nekako ga izmisliti, saj veš, pripravi poševnica ali vejico med njimi.
In lahko samo pretvoriti neposredno karkoli
To je prvi Število šestnajstiško,
in karkoli tukaj je, da drugi v šestnajstiškem.
>> Torej, ne pozabite, od skupnega zapis, Kaj šestnajstiške vrednosti začeti s?
>> OBČINSTVO: Zero.
>> Profesor: 0X.
Torej vemo, da vsak, ko smo vas za pretvorbo kakršno koli številko šestnajstiški,
ali kadarkoli vidite koli Številka, ki se začne z 0x,
veste, da je vrednost šestnajstiško.
>> In potem boste morali ugotoviti, kaj ti dve številki sta.
In tako, kot si to naredil, preštevanje glasov up da je polovica in popisovanju up to polovico.
Torej v tem primeru, kar bi on, on, on, eden biti?
Kakšno vrednost bi to bilo?
To bi bilo F, kajne?
To bi bilo 15.
>> Torej bi bilo to F. One, ena, ena, ena je tu tudi
F. Torej on, on, on, on, on, on, on, ena v šestnajstiški, vse to se je 0XFF.
Ker je ta polovica zastopa F vrednost 15,
in to pol zastopa F vrednost 15.
Saj se spomnite, smo šteto od nič do devet.
A je kot 10, B je kot 11, F 15.
>> Ali, da je smiselno, da se vsem, kako smo dobili od binarno do šestnajstiškem?
>> OBČINSTVO: In tako kako smo dobili 15 Iz enega, enega, enega, eden?
Profesor: Ja, to je binarna, kajne?
Predstavljajte si, da je to samo binarno število.
Torej imate dva do Ničti, ki je eden.
OBČINSTVO: Oh, v redu.
Torej si ga skupaj ven.
>> Profesor: Ja, in potem si skupaj, da ven.
To je vse, kar je.
>> OBČINSTVO: OK.
>> Profesor: OK.
>> OBČINSTVO: Torej greš iz binarne da decimalni šestnajstiški?
>> Profesor: To je Najlažji način, da to storijo, ja.
Ne boš decimalno ker decimalno ima samo nič do devet.
Mi smo le nekako to razdeliti na dva dela.
>> OBČINSTVO: [neslišno] uporabo decimalko najti
kar se ujema največ v šestnajstiški.
Profesor: Mislim, da ste rovašenja z uporabo osnovne matematike.
OBČINSTVO: Ja.
Profesor: Ja, precej.
To je malo zmedeno.
Ampak samo vem, da vas lahko razdelimo glede na
Ta vrednost je v le polovici.
Poglejte, kaj je to v binarno?
Koliko je to?
To se dogaja, da Nekaj ​​od nič do F.
>> Tu je tudi bo Nekaj ​​od nič do F.
In potem si lahko samo dal ti dve tam.
>> OBČINSTVO: OK.
Profesor: Ja.
V REDU.
Torej si fantje želijo, da poskusite z naslednjo enega potem?
Nič, ena, nič ena, ena, nič, ena nič.
Dam ti fantje kot 30 sekund, saj vam verjetno ni vedel,
trik, kako to storiti že prej.
>> OK, kdo želel, da bi dobili tale strel?
>> 0X5A.
Profesor: 0X5A.
5a.
Dobro.
Torej bi to tukaj be-- želite da bi nam povedali, kako si dobil to?
Najprej, kako ste prišli pet?
>> OBČINSTVO: Ker nič, ena, nič, ena je pet.
>> PROFESOR: Ali vsi razumeli Zato nič, ena, nič, ena je pet?
Imaš tukaj.
Imate nič v dveh do prvega.
V dveh do drugega, vas imamo eno, ki je štiri.
Torej ste dodali štiri plus tisti, ki jih imajo pet.
Vsakdo dobro?
V REDU.
In potem, kaj je to bilo in zakaj?
Katero številko Ali ustrezajo?
>> OBČINSTVO: 10.
>> Profesor: In kaj je to v osnovi dveh?
OBČINSTVO: [neslišno]
Profesor: Točno tako.
Tako da bi ta druga vrednost tukaj biti 0X5A.
>> Vsakdo dobro o tem, kako spremeniti?
To je veliko lažje, kot si mislite, da je.
Rad bi samo, da se prepričajte, veš koristne nasvete
in triki za kako to storiti.
>> OBČINSTVO: Zakaj lahko samo po delih je v sredini, kot je ta?
Samo všeč, OK, grem samo na mar ti prva [neslišno]?
>> Profesor: Ker to je dejansko Tako so zastopani šestnajstiške vrednosti.
0X, ki dejansko pomeni nič drugega kot ti
da je šestnajstiško število.
In to vedno predstavlja prve štiri številke.
In to vedno predstavlja zadnje štiri številke.
In tako sta ti dve številki samo ustrezajo različnim bitov.
>> OBČINSTVO: Torej bomo always--
>> Profesor: Vedno si bo dobil osem bitov vrednosti.
>> OBČINSTVO: Je to tako kot stvar tukaj ali pa da stvar vsem?
Profesor: To je samo stvar v računalnikih, ja.
OBČINSTVO: OK.
Awesome.
>> Profesor: Prav tako v tem primeru smo se pretvori iz binarno decimalno,
in od binarne za šestnajstiški.
Vi želite, da poskrbite, da boste tudi praksi dogaja obratno.
Torej, če sem ti dal 0XFF, lahko pripraviti, da v binarno, kajne?
>> Pretvorite F v binarno, ki je ena, ena, ena, ena,
pretvorbo F do binarno, ki je ena, ena, ena, ena.
>> Tako bomo lahko zahteva, da stori obratno.
Torej decimalno za dvokomponentne ali hexadecimal za binarno.
Tako da boste želeli, da bi prepričani, da veste, v obe smeri.
Vam bo verjetno vprašati kombinacija obeh.
>> Ja, imate vprašanje?
Lahko see-- ste dobri?
OBČINSTVO: Ja.
Profesor: OK.
Sem dober izbrisati to?
Great.
>> Vse je v redu, tako da odgovori so tu, če kdo je radoveden kasneje in zmeden.
V REDU.
>> OBČINSTVO: Ali je pomembno, če želimo postaviti naše črke v Kapitol ali male?
>> Profesor: To počne, ker v šestnajstiški po dogovoru
vsi liki so velike.
Torej A do F, so bo z velikimi črkami.
Če si dal malo začetnico a, ne vem če bi mi nujno označiti narobe.
Ampak teoretično, da ni tehnično
kako si naj bi ga imeli.
Tako da bi morali biti z velikimi črkami.
Ja, dobro vprašanje.
>> V REDU.
Drugo vprašanje.
Razmislite to lepo programa tukaj.
Bom vprašati, Vrnil se bom to.
>> Torej, najprej, kaj je notri standarda io.h, da je v interesu programa?
Drugič, kaj nična označi v skladu treh?
In tretje, kaj se vračajo nič od Glavno, kot vrstnim šestvaljnikom, na splošno pomenijo?
Če hočete, da napišete tiste, navzdol, saj sem moral preklopiti nazaj
na diapozitiv samo zato, da si lahko ogledate kodo.
To je primer, kot je, morda višja vprašanje nivo, kjer smo vas
kaj stvari pomenijo v programu.
>> Vsakdo dobro zame, da pojdite nazaj na slide?
OK kul.
Torej, jaz ti bom dal fantje, kot morda tri minut, da pogled na to eno resnično hitro.
>> OK, tako da to je kot dokaj enostaven, konceptualno.
Ali kdo želel, da mi pove, kaj je najprej v notranjosti s hash vključno
naš standard io.h knjižnica datoteka?
Zakaj moramo to knjižnico vključeni v ta program?
Kaj tukaj ne bomo potrebovali za?
>> Ja?
>> OBČINSTVO: Je to, ko si dal to printf?
>> Profesor: Točno tako.
Torej printf, kadarkoli vam sprejme vnosa od uporabnika
in tiskanje nekaj na zaslon, ki je
standard input, output knjižnica.
Pomislite na to, da way-- vhod, izhod.
>> Ali imam izhod?
Da.
Zato vem, da bom vedno dogaja, da Potrebujemo knjižnico standardizirati i.o.
>> Torej printf je funkcija s katero moramo dostop
in hashtag vključujejo standardna i.o knjižnica.
V REDU.
>> Drugič, kaj nična pomenilo?
Imamo int main (praznino), kaj izničijo tukaj pomeni tu na liniji tri?
Ja, v hrbtu.
>> OBČINSTVO: [neslišno]
>> Profesor: Točno tako.
Torej, ne pozabite, da smo se naučili začenši z našo pset
da lahko dejansko določite ukazno vrstico
Trditve, da je vaš program, da vas Glavna funkcija, je kot vi, uporabnik,
ga pokličete.
Če imamo nična, kar pomeni, da vas lahko samo zaženete program neposredno
brez kakršnih koli argumentov ukazne vrstice.
Vsakdo jasno, da je?
V REDU.
>> In nenazadnje, zakaj smo se sploh počne ta donos nič stvar tukaj?
Zakaj sploh imajo int glavni?
Zakaj ne moremo imeti le void main praznino?
Ja?
OBČINSTVO: Samo tako, da bomo lahko se prepričajte, da je program
Uspešno izhodu, kakor nasprotuje če je oštevilčena.
In bi vedeli, da je to drugačne vrste napak.
>> Profesor: Ja, točno.
To je samo zelo običajna stvar, ki jo počnemo,
je, da šele na koncu vaš program, samo se prepričajte,
da je vaše glavno funkcijo deluje pravilno,
smo vedno želeli narediti donosnost nič.
Čeprav smo lahko nujno Ne vidim, da je natisnjena kjerkoli.
>> Saj, kot programerji, saj veš, če imate veliko različnih vrstic kode
in ne veste, kje ti gredo narobe,
in če se napaka zgodi želite poskrbite, da boste dobili to napako.
In tako običajno, če gre kaj narobe, bomo imeli vrnitve enega pravkar
se prepričajte, vemo, da je.
Torej, če ste videli vrnitev zero, ki se običajno
pomeni vaš program uspešno izvršen.
Dobra?
Cool.
>> OK, drugi program tukaj.
Razmislite o tem.
In če vi videli float, lahko vidva
imajo dobro idejo, kaj Jaz sem na tem, da vas vprašam.
>> Torej, ko se ta program izvaja, kot lahko vidite,
Jaz sem razglasitvi plovec v mojem glavno funkcijo.
Jaz sem poimenovanje je "odgovorili" in sem določanje ki je enaka enemu deljeno z 10.
Jaz tiskanje, za eno decimalno mesto, da float.
In potem sem se vračajo nič.
>> Torej pri izvajanju programa, pomislite na pohlepni zdaj,
ta program natisne 0.0.
Kot vsi vemo, upajmo, da smo vsi vedeti, ena deljeno z 10 ni 0,00,
to je 0,1.
Ampak razloži, zakaj ta program misli da je 1 deljeno z 10 izpisov za 0,1 drugo
od 0,1?
Jaz vama bom morda kot 30 sekund, da le hitro razmišljati o tem, da je
in bom šel nazaj k programu.
>> V REDU.
Kdorkoli želite, da ga je ustrelil?
V treh stavkih ali manj, ker ponavadi smo
dogaja, da omejite vse odgovore do treh stavkih ali manj
tako da ne boste samo Izprazniti naključne stvari na vaš kvizu.
>> Ja, vzemi strel.
>> OBČINSTVO: Torej, jaz mislim, da je to stvar, ki se imenuje, kot so, [neslišno]
Torej bi bilo treba, na primer, lahko pride, kot so, 0.09,
da če tiskate prvi mestna, bi bilo za 0,0?
>> Profesor: Close, ne povsem.
Christabell?
>> OBČINSTVO: si delimo eno in 10, in oni oba cela.
In zato je tako, da se dogaja za shranjevanje je kot celo število.
In tako bi najbližje celo število, bo 0.0.
In tako, da je 0,1.
Profesor: Ja, to je res dober.
To je pravi odgovor.
Torej je to zelo zmedeno koncept za veliko otrok.
In jaz res želite, da se prepričajte, da to je okrepiti vsakogar glavo.
>> Torej tisto, čemur pravimo plavajoče točka nenatančnost,
kjer je razlog, zakaj veliko vaših programov v požrešni
ni delovalo na začetku je bil, ker si pozabil, da odda svoj spremenljivko.
Torej, kaj je rekel Christabell je bila povsem pravilna.
>> Plovec je inherentno nenatančen.
Ker v računalniku, desno, imamo končna količina bitov pomnilnika
lahko uporabimo za zastopanje številk.
Tako, na primer, ta CS50 ID is-- Mislim, da je 64-bitni računalnik.
>> Plovec lahko predstavljal le s končno količino teh bitov.
In tako 0.1 z neskončno ničel, da je bilo 0,1, kajne?
Vendar ne moremo dejansko shranjevanje da je število v našem računalniku.
Mi samo nimajo dovolj pomnilnika, da to storijo.
>> In tako najbližje približevanje kaj je shranjeno v spominu, je dejansko
nekaj podobnega 0,000 nečesa, nekaj, nekaj, nekaj.
Ki, ko ste skrajšajte to, zaokroži navzdol na 0,0.
>> In zato je ta primer je le eden ki dokazuje veliko vprašanj
imamo vsakič, ko smo poskuša nepravilno storite math
brez ulivanje kot drug celo število.
Torej, samo mora biti pozorna na to dogaja.
>> Na kvizi, če Ponujamo vam dajejo blok kode in to je podobno,
kaj natisne na koncu?
In če je nekaj naključno vrednost, ki jo fantje bi morali vedeti, zakaj to dogaja.
Ja?
>> OBČINSTVO: odsekana se znebili Vse po določenem trenutku?
[Neslišno]
Profesor: Ja, tako dejansko to je res slab primer,
ker je 0,100, kar dejansko bi odsekana do 0,1.
Ampak, če ste bili, da it-- teči jaz ne ne pozabite, ker lani so
tekel na drugem programu.
So tekel v nekaj, kar se imenuje CS50 Appliance, ki
se razlikuje od ID.
Da je bil 32-bitni sistem, mislim.
In tako je bilo različne številke.
>> Ampak v bistvu, samo vem, da celoten koncept krajšanjem
in kako to samo kosi stvari off.
In tako, če ji rounds--
>> OBČINSTVO: Brez zaokroževanja.
>> Profesor: Točno tako.
Ja.
Cool.
>> Živjo, v hrbtu.
Mi smo le, da bo čez nekaj pregled kviz vprašanja.
>> V redu.
Tako menijo drug program tukaj.
Grem, da vam fantje nekaj minut, da se glasi čez to.
To je nekaj, kar je bilo za zelo pred kratkim, da mislim, da zapravila veliko od vas
umi fantje to.
Ampak bomo govorili skozi to spet samo
poskrbite, da boste ga popolnoma razumem.
V REDU.
Vsakdo, potrebujejo več časa preberite to kodo?
V REDU.
>> Tako se mi zdi, da V tem programu sem
ustvarjanje dveh nizov z uporabo GetString.
Ena imenovane ov in ena imenovana t.
In če oni enako enaka drug drugemu,
mora print "You vnesite isto stvar. "
>> Ampak elsewise, bi bilo tiskati, "You vnesli različne stvari ", kajne?
Zdi se zelo, zelo preprosta.
Ampak kljub temu, če sem dejansko poskusite pisati ta program,
zdi se, da tudi, ko sem Vhodni točno isto strune,
še vedno natisne, "You vnesli različne stvari! "
Ali kdorkoli želite, da traja strel, zakaj ta program vedno
odgovarja, da so vhodi sta različna, celo
ko so besede same enako?
>> Torej, če bi bil jaz input-- David ljubezen uporabiti za zgled, kot mamo, kajne?
Male M-O-M za S, T enaka male M-O-M.
Če bi ta tekel skozi da je koda, zakaj bi se
izpisal "ste vnesli različne stvari?"
>> Ali kdo potrebuje več Čas je, da razmišljajo o tem?
OK, mislim, da smo dobri.
Ja?
>> OBČINSTVO: OK, tako da je nekaj o tem kjer je shranjena v pomnilniku, kajne?
>> Profesor: Ja.
>> OBČINSTVO: Kje je všeč, če je ta niz s, se shranijo v pomnilniku spot--
Jaz sem izumlja this-- nič.
PROFESOR: Seveda.
OBČINSTVO: In niz t je shranjena na pomnilniški lokaciji,
podobno, 167 in nato nič ni enaka 167.
>> Profesor: Točno tako.
OK, zato ne pozabite, to neverjetno razodetje smo pojasnili, da vaju
to čez teden dni, da strune v resnici ne obstaja?
Ko smo ustvarili nekaj, kar se imenuje Niz smo v resnici,
ustvariti nekaj, kar ti char zvezda.
Kar vse je kazalec na niz ali niz znakov.
>> In tako v tem primeru, če bi bi vhodni M-O-M pot
da bi moj računalnik shraniti je v spominsko poševnico ničelno, kajne?
Ti štirje znaki, znakov, bodo shranjeni nekje.
>> In potem ti štirje znaki, poševnica nazaj nič,
so shranjene nekje drugje, kajne?
Nimam pojma, kje naslovi so, oni so nekje v mojem računalniku.
Ampak jaz ne točno ve, kje so.
>> Ko kreirajo niz ov, vse to je res
kazalec na začetek tega niza.
In ko sem ustvaril ta t vrednost, vse, kar je kazalec na tukaj.
In tako, ko ste težaven izenačiti in preverite
da vidim, če je s Ene enaka t, računalnik
res samo vračajo si je naslov te m
in naslov, da m.
In zato, ker oni dve ločeni deli podatkov
ki so shranjeni v dveh različnih naslovi v vašem računalniku,
računalnik se ne bo nikoli jih prepoznali kot enake.
Ali kdo želi dal strel na tisto, kar smo
bi morali storiti, če smo želeli, da popravi to in imajo pravilno delujoči program
namesto tega?
Pomisli, da za nekaj sekund.
Kaj moramo spremeniti, da najdem ta program delovanja
način želimo, da deluje?
>> Ja, želim, da bi zabodel na to?
>> OBČINSTVO: Lahko smo poskušali dereference kazalec in preverite skozi niz?
Profesor: To je eden od načinov, da to storite.
Torej, kaj je že ime?
Oprosti, spomni me.
>> Zee: Zee.
Profesor: Ja, pa kaj Zee predlagal bi absolutno delo.
Prav?
Mi lahko dereference kazalca in dejansko šel in dostop
fizikalni podatki notranjost tukaj.
In bomo lahko samo primerjati celoten zaslon.
>> Lahko rečemo, OK, kazalec, daj mi, kaj je notri tukaj.
To bi vrnil m.
In jaz bi rekel, kazalec, daj mi, kaj je notri tukaj.
Vrniti m.
Ali tiste tekmo?
Da.
Potem pa gremo naprej.
>> Nenehno preverjanje celoten dva strune vse tja do konca
in videli, če so enaki, če so vse vrednosti enake.
In če so vse ugotovljene vrednosti enake, potem vemo, strune so resnične.
Absolutno, to je, kako bi to naredil?
>> Ali kdo zmeden na vse to?
Celoten koncept kako godala so res le kazalci,
in kako se v resnici ne obstaja?
In zakaj smo dobili napake kot način smo ga dobili?
Ker sem vam zagotavljajo fantje, kazalce in dodelitev niz in spomin
se dogaja, da pridejo gor.
>> Ja?
>> OBČINSTVO: [neslišno] dereference to, si dal zvezdo [neslišno]
Profesor: Right.
Torej, da derererence kazalcem sredstva iti na ta naslov kazalca
in pridobi podatke, vrednost tam.
In način, da to, da je zvezda kazalec.
Ne mešaj tega.
>> OBČINSTVO: [neslišno].
>> Profesor: Ja.
OBČINSTVO: Torej si lahko samo pisati če zvezde s enaka Ene zvezda t.
>> Profesor: No, no.
No.
>> OBČINSTVO: To ni dovolj dober, kajne?
>> Profesor: To ni, ker si le preverjanje prvo pismo.
Ste verjetno bo Potrebujemo neko zanko, ki
ponovi za vsak lik v obeh nizih.
Ja.
Torej, če si želel samo preverite če so začeli z isto stvar,
lahko storite, če, zvezda s je enak zvezdic t.
Potem veš, da vsaj Začelo se je z istim značajem.
>> Ja?
>> OBČINSTVO: Torej pot vam, da bi bilo
kot vgrajeni za zanke ali kazalec?
Profesor: Ja.
Precej samo za zanko.
Ne pozabite, da je David v razredu omenjeno prosta skladenjska sladkorja?
In imel je prav ta zmedeno stvar zvezdicami t
plus ena, kjer bi bilo vključiti skozi in ga premaknite kazalec?
Lažji način dela to je samo t i.
>> Torej, to je samo polje.
Tako, da bi vas imeli za zanke, ki je potekal od nič do i, kjer
i je dolžina niz, bi si
pisati, da namesto početje cel kazalec, sklic stvar.
Torej, te stvari so točno protivrednosti v vašem računalniku.
>> Vidva verjetno ne bo morate vedeti, da,
vendar je dobro, da le nekako imajo na zadnji strani vaš um.
Samo vem, da je računalnik prepozna različne bloke kode
kot isto stvar.
Ker je to samo veliko bolj uporabniku prijazno za nas, da ga predstavi kot da je
array.
To je samo lažje.
>> OBČINSTVO: Torej, uporabite strlen všeč, get--
Profesor: Ja.
OBČINSTVO: OK.
Profesor: Lahko bi uporabiti strlen ali, če
niso imeli strlen lahko preprosto storite up dokler ne boste zadeli poševnico nič za oba.
Ali bi delovalo.
Ja.
OBČINSTVO: Torej, to je do ciljne datoteke, vsak en znak, če bi bili dejansko
pisanje to kodo smo bi pač t oklepajev i
rad z zvezdo pred njo?
>> Profesor: Ja, enaka je enaka ov nosilec i, in nato premikajo i
navzdol, dokler si udaril konec.
Ja, to je tisto, kar bi ti naredil.
In bom dejansko imajo naslednji Primer, ko smo dejansko
pisati strlen tako vidva bo vrsta za priti do igral z njim malo.
>> Torej je vsakdo jasno samo spomin, strune, kazalci, kakovosti naslove?
Nekateri koncepti višje ravni, ki jo bo zagotovo potrebe po seznanitvi na kvizu
jutri.
>> V redu.
Dobro.
Ja.
OK, ena stvar, ki jo bomo tudi vprašati vi, kot to počnemo vsako leto na kvizu, je,
Predvidevam, da si pozabil (ki se zdi, da bi pozabili, da vsako leto narediti)
v kateri je glava datoteke strlen razglašena.
In zato moramo to znova sami.
>> Tukaj je seznam smernic da vam bomo lahko predstavili
Fantje, kjer boste dobili za domnevo, da S niz ne bo null.
Lahko domnevamo, da se bo s biti preneha s poševnico ničelno.
Tako da boste vedeli, da je kaj da se bo končalo s.
>> In, na primer, da je dolžina Pozdravljeni bi bilo pet.
Torej lahko sklepamo, da Hello bo pet, H-E-L-L-O.
Nimate domnevati, da backside nič račune za dolžino.
>> Ta zadnja stvar tukaj, ne skrbeti integer overflow.
Ali kdo ne pozabite kar celo overflow je?
>> OBČINSTVO: presega dolžina [neslišno].
>> Profesor: Ja, lahko pojasnite malo, kaj to pomeni?
>> OBČINSTVO: Torej, mislim, da gre nazaj na primer pri krajšanju prej.
Ampak, če imate samo toliko številk ki presegajo število bitov
da lahko dejansko dodelite da bo to šele nekako odrezani.
Profesor: Ja, tako na tipično Računalnik, koliko bitov imamo?
OBČINSTVO: 32?
Profesor: Ja, 32, desno.
In tako, da je, kar štiri milijardo, dve milijardi?
Štiri milijarde, do štiri milijarde pozitivna cela števila, kajne?
Dve milijardi negativen, dve milijardi pozitiven,
je odvisno od tega, kako želite, da to storite.
>> In tako v bistvu lahko imamo dovolj cela števila, ki lahko gredo gor
na dve do 31. minus 1, kajne?
Ker ko smo zadeli dve do 32., ne bomo
so, da je veliko pomnilnika v našem računalniku.
>> In tako, teoretično sem bi lahko prišli do številnih
to je podobno, dva do 46..
To je velika rit številka, vendar Teoretično bi lahko.
In tako celo overflow je, če ste poskušali ustvariti celo število, ki presega tisto, kar
računalnik lahko shrani.
>> In tako vidva za Ta primer nimajo
skrbeti za nas, ki vam daje velikana niz, ki je dva do 32. znakov
dolgo.
Da bi se v resnici pomeni.
>> Vse je v redu, tako da sem le, da bo dal vidva osnovno strukturo tega.
Ti boš, da ustvarite Funkcija se imenuje int strlen kjer
za prepustnico, char zvezda, ali niz, kazalec na nizu imenovana s.
>> Vredu, vsi kopirati to dol.
Cool.
Oops-- drug način.
>> Torej, to je nekako kot težje kos problemu,
tako da vam bom dal fantje morda pet do šest minut do vrste Brainstorma
in pisati to funkcijo ven.
>> OBČINSTVO: Mi ne račun za [neslišno]
nimamo uporabiti celo število?
>> Profesor: Ne, ne.
Dam ti fantje namig.
Nekaj ​​časa zanka je lahko zelo koristno tukaj.
Ja.
Tukaj je
sladkarije.
Sladkarije bo na voljo tudi za kviz, mislim.
Torej vidva biti vse sugared jutri.
Lahko I-- si ga dobil.
>> OBČINSTVO: OK.
Profesor: Ja.
>> Mogoče še 30 sekund ali tako.
>> Vse je v redu, če ste niso storile, brez skrbi.
Bomo premikate skozi to skupaj.
V REDU.
Torej bom samo na postavitev Osnovna struktura za to funkcijo tukaj.
Int strlen.
Prvič, ne kdo želel povedati me, kaj to int pomeni?
Moramo imeti v tej funkciji.
>> OBČINSTVO: strlen [neslišno].
Profesor: Točno tako.
Torej, karkoli se zgodi tu, moramo vrniti celo število.
In, kot je določeno v spec, želimo return--
Gre za to fantje, samo nadaljuj.
To je vse dobro.
Pojej vse tako nimam da ga vzamem nazaj, pravzaprav.
Int samo pomeni, da si dogaja se vrača celo število.
>> Kaj je to char zvezda je?
Kaj to pomeni?
>> OBČINSTVO: Like, kaj pa vhod v.
Profesor: Točno tako.
In tisto, kar je skoraj ista stvar kot char zvezda?
OBČINSTVO: String?
Profesor: Točno tako.
Torej vse, kar počnete, je dajanje Ta kazalec na vrvico.
V REDU.
Cool.
>> Prav tako ne pozabite, če bomo pozabili da vam te nosilce,
ne pozabite, da jih pišejo sami.
Ker teoretično, tvoja koda napačna, če ste pozabili, da jih pišejo.
Samo vedno pozoren.
Kot, malenkosti da ne boste opazili
ko ste programiranje na vaš prenosnik, ker je vaš laptop počne za vas?
Ne pozabite, če pišete z roko.
Ja?
>> OBČINSTVO: Toda kako napačna?
Like, ne bomo dobili celoten problem narobe?
>> Profesor: Ne, ne.
Ne skrbite.
To je pravzaprav teoretično možno za vas, da bi dobili polne točke o vprašanju,
tudi če je vaša koda bo nikoli ne delujejo v resničnem življenju.
Predlagam, da si ne poskušajte da bi se to zgodilo.
Na primer, kot če bi vse da je tukaj prava,
ampak ste pozabili debelo črevo ali nosilec, tvoja koda ne bo dejansko vozijo.
Ampak mi lahko usmiljen.
>> Ja?
>> OBČINSTVO: Ali imate na komentar na našem rokopisu?
>> Profesor: Ne, ne, ne skrbi, da je.
Ni komentiral.
Slog mora biti dober.
Kot, ne Smush vse v eni vrstici.
Ne bomo zadovoljni z vami, če vam to.
>> Ali kdo želi daj mi prvo vrstico?
Namig, da je zelo enostavno.
>> Ja?
>> OBČINSTVO: Int, n enaka nič.
Ravnokar ustanovila števec.
Profesor: Torej želimo nekaj neke vrste števec, kajne?
Jaz sem šele tekoč, da ga imenujejo "računajo" zaradi berljivosti.
Kaj želimo, da jo nastavite enako?
>> OBČINSTVO: Zero.
Profesor: Ja.
Podpičje.
To je tudi zelo čudne risanje podpičja.
Samo vaditi tem.
>> Zato želimo najprej števec tipa int.
Ker želimo, da računajo gor, kako veliko znakov ali črke so
V tem nizu, kajne?
Zelo enostaven prvi korak.
>> OK, morda malo bolj zapletena zdaj, kako bomo to storili?
Ali kdo želi daj mi vrstico kode
da bo lahko pomagal zanko skozi karkoli je to?
>> Ja, pogumna duša v hrbet?
>> OBČINSTVO: OK, medtem ko točka zvezdice se ja, zvezda s,
ni enaka nič, potem nekaj narediti?
Profesor: To je res, res blizu.
Res blizu.
Tako da bom za reševanje Dve stvari s tem.
Najprej, to ni ravno nič.
Kaj je to?
To je null terminator, ki je poševnica nazaj nič.
Torej, oni so drugačni Pogoji kako oni shranjeni.
Torej ste res blizu.
>> In drugič, ne želimo, samo premaknete kazalec.
Želimo, da dejansko dostop do vrednosti, kajne?
In tako, kako to storimo?
Zelo enostavno.
Ne razmišljam o kazalci, ne razmišljajo o spominih.
Pojdi nazaj na dva tedna tega predmeta.
>> OBČINSTVO: [neslišno].
Profesor: Od, se spomniš?
Kaj so strune?
Kako so shranjeni v spominu?
>> OBČINSTVO: Oni postavljeno.
>> Profesor: So postavljeno.
Torej, kako bomo dostop vsak znak notri?
>> OBČINSTVO: [neslišno].
Profesor: Točno tako.
Torej while--, kaj se dogaja v notranjosti tu?
S izmed -
>> OBČINSTVO: I.
>> Profesor: Oh, jaz ne obstaja, kajne?
>> OBČINSTVO: Oh, šteje?
>> Profesor: Mi lahko samo uporabljate štetje, ne moremo?
>> OBČINSTVO: Žal mi je, sem ga poimenoval i.
>> Profesor: Ja, to je vse dobro.
Imamo spremenljivko tu gor, da je že razglašena kot naš števec.
Torej, zakaj ne bomo samo uporabo, ki , da se premaknete skozi while?
Ali to smiselno?
>> Torej, medtem ko je za count-- does kdorkoli želite da bi me kaj se zgodi, ko tukaj?
OBČINSTVO: To ni enako.
PROFESOR: Ali ni enako, kajne?
To je bang enaka, klicaj enaka,
karkoli si fantje želijo, da rečejo ne equal--
>> OBČINSTVO: [neslišno].
>> Profesor: Ja.
Zapomni enojni narekovaj je za char, dvojni narekovaji so za niz.
Bodite previdni, ko jih uporabljate.
Torej, ko smo iskali s pomočjo matrika, zadnji znak,
vemo, nočemo da bi bilo Nagibnica nič.
>> Torej, medtem ko.
Nismo na koncu niza.
Kaj želimo narediti notri?
>> OBČINSTVO: Želimo, da dodate na Števec zato šteje plus plus?
Profesor: Točno tako.
Torej, tukaj bomo storili štetje, štetje plus plus.
Manjka še eno linijo.
Mi smo skoraj tam.
Kaj smo se pozablja, da naredim?
>> OBČINSTVO: Vrnitev nič?
>> Profesor: Hočeš, da se vrnete nič?
>> OBČINSTVO: Ne, vrača v strlen.
Počakajte.
Profesor: Katera je shranjena v?
OBČINSTVO: Grof.
Grof.
Profesor: Točno tako.
Torej, tukaj bomo vrnili štetje.
>> Ker tisto, kar smo delaš tukaj ultimately--
imamo števca, ki je bo prirastek preko našega niza.
Bomo nadaljuj, da tekoč, okrog in okrog v to zanko.
In medtem ko nismo na koncu tega niz, ki je null terminator.
>> In vsakič, ko gremo skozi to, da smo dodali na naš števec.
In bomo še naprej dogaja vzdolž v tem polju.
In na koncu, ko smo hit null terminator,
vemo, oh, smo lahko prekinil, vrne število.
Imamo strlen.
>> Ali vsi dobili, kako to je bila izvedena?
Medtem loops-- Vem, da imamo ne narejeno preveč z njimi,
ampak oni so ponavadi Zelo, zelo koristno, če vas
Ne vem, kaj ste ustavljanje Pogoj je nujno.
>> Vprašanje?
>> OBČINSTVO: Lahko napišemo null o stanju, medtem ko?
>> Profesor: Ko?
Ja, tako da v tem problemu sem te imel fantje, predvidevam, da je ne bo nič.
Saj se spomnite, teoretično, če sem ti dal
kazalec, da je prevelika za spomin, da bi vam null, kajne?
To je tisto, kar je operacijski Sistem bi naredil.
>> Torej, če nisem vam povedal, da prevzame e bi bil ničen, morate preveriti.
Torej tu gor, ki bi jih storili, če s enaka enak null, vrne eno.
Nekaj ​​podobnega.
OBČINSTVO: [neslišno] nič.
Profesor: OK, bom povedal, ti, zakaj ne moremo storiti.
Ker se spomnite v spomin, desno, tukaj.
Šla bova tukaj.
>> Imaš velikan blokov spomina vse z omrežji
da store različne vrednosti, kajne?
In tako vse niz is-- za Na primer, če smo na vhodu pozdravi,
da bi bilo H-E-L-L-O poševnica nazaj nič, kajne?
In kdo ve, kot naključno stvari, ki so tukaj po njej.
>> Mi dejansko ne vem, kaj je tam.
In tako, če ste bili storiti namesto poševnico ničlo,
null, ne sme biti nič.
Ker to lahko samo pomeni, nekaj naključnih drugih stvari
ki ne sodijo v niz.
In zato je tako, da smo vedno vedeli, da niz konča se s poševnico ničelno.
In tako, da je vedno, kako smo preverjanje za prikaz konca niza.
>> Null, vse to pomeni, če imate neobstoječa kazalec, najprej
ali če vaš spomin je prav tako velika, da ne moreš vrniti, potem bi bilo nič.
Torej biti zelo previdni pri razlikovanju razlika med ničlo
in poševnica nazaj nič.
Ja.
>> Vsakdo v redu s tem?
V REDU.
>> Torej sem imel vi napisali strlen.
Izvedljiv smo lahko zaprosi tudi pišete od A do I, ne pozabite, da je "Atwoa"
ali karkoli hočete, da ga pokličete?
Ta funkcija v Vigenere in Cezar, ki
pretvori ASCII vrednost na celo število?
Ki je prav tako prišel na preteklih kvizov funkcij smo vas prosili, da pisati.
>> Precej koli funkcijo ki ste jih uporabili, in je
zelo enostavno sami pišejo, Senzorji všeč, je nižja,
je zgornja, znižati, da zgornji del.
Funkcije, ki bi pretvoriti niz iz male črke v velike črke.
Vsi vemo, kako to storiti, kajne?
To je zelo enostavno.
Samo želim, da poskrbite, da boste can-- je isto misel proces.
Pravkar ste ponovitev prek in zavijete stvari.
Vi ali štetje ali ko zavijete stvari drugače.
>> Jaz bi suggest-- I Ne vem, če gremo
da vas prosim, da si zapomnimo, kaj kapitalu ali kapital Z ali male črke A ali male črke
z so v ASCII, ampak jaz bi predlagal morda pisal, da v primeru, če
počnemo.
Samo, da vidva imela sklicujejo.
Tako kot velike črke A, kaj, 197?
In potem male je kot 50-nekaj.
65, ja, tam greš.
Torej, samo precej vedeti Razlika med njima je 32.
To je zelo pomembno.
Ja.
Sem dober v tem?
V REDU.
>> OBČINSTVO: Mi lahko teoretično napisati nekaj
od teh dol, kot tudi na naši little--
>> Profesor: Ti teoretično lahko samo kopirajte funkcijo navzdol.
To drži.
>> OBČINSTVO: Ni [neslišno].
>> Profesor: Vi imate list.
Vidva imajo note list.
Lahko ga vnesete.
Lahko pišete.
To lahko storite karkoli želite z njim.
Ja.
Torej teoretično, če hočeš, iti za.
>> OBČINSTVO: [neslišno] vendar pa v resnici ne
nujno, da se spomnimo vrednost, lahko smo samo
uporabiti na zgornji ali nižja funkcija, kajne?
Profesor: Ja.
Ampak, če vam je dal vprašanje ki pravi, da pišete na zgornji del,
potem bi morali pisati.
Tako lahko vidva Predvidevam, da vas Fantje imajo dostop do vseh funkcij,
če pa želite uporabiti za zgornji ali nižje, kaj imate tudi, da naredim?
>> OBČINSTVO: [neslišno] uporabite CS50 [neslišno]
>> Profesor: Je CS50.h?
Bodite previdni tam.
>> Torej, da zgornji, znižati, je zgornja, nižja,
funkcije, ki vključujejo Niz manipulacija so
Vse bodisi v okviru ASCII ali v knjižnici matematike
ali v knjižnici niza.
Torej, če vi uporabljate tiste Funkcije, bodite previdni, da se spomnimo
ki vsebuje to glavo.
Torej, morda tudi kaj vas želeli v vašem listu vključujejo,
kaj so glava?
Kakšne so knjižnice ste uporabljali?
Katere funkcije so znotraj teh knjižnic?
To je pomembno.
>> Ja?
>> OBČINSTVO: Bi lahko samo policaj ven in narediti hashtag
z absolutno vsako pismo, ki smo jih doslej
gledati kot na vsa vprašanja?
>> Profesor: Lahko bi.
Ne vem, kako srečna bomo biti razredu
da kviz ko vsak kos kode je dvakrat toliko časa, kot je treba.
Ne vem, bomo morda vzlet točke za stil.
Ampak teoretično Vaš koda bi bilo prav.
Vidva bi policaj ven in samo vključuje vse.
To je v redu preveč, ja.
OBČINSTVO: [neslišno].
Profesor: Ja.
Jaz bi predlagal, da ne gre, da je, čeprav.
Ja.
OBČINSTVO: Cool.
Profesor: Dobro vprašanje.
OBČINSTVO: Torej, najslabši možni scenarij.
Profesor: Najslabši primer.
Če ste popolnoma pozabili, bi lahko storili, da.
Ja.
>> Ja, koda je tam.
Včasih sem n namesto štetja, vendar vas Veste, ne glede plava svojo ladjo.
OBČINSTVO: Počakajte, zato smo ne bi bilo treba hashtag
vključujejo zato, ker smo začne na int?
>> Profesor: Ja, sem samo domneva, da smo morali napisati funkcijo.
Če bi želeli, da je varna, vas bi jo verjetno dal tja.
Ampak jaz samo ne trudim, ja.
>> Sploh ne vem, če vas potrebovali knjižnico za to.
Ker si res ne tiskate ven karkoli ali karkoli, kajne?
Ja, ne vem, če morate knjižnico.
>> V REDU.
To je tudi nekoliko bolj skupaj črte pomnilniške manipulacije.
Ta vrsta bit zapleteno.
Razmislite o tem.
Imate funkcijo imenovano func.
Lahko bi ga poimenovali karkoli, vendar sem se odločil, da jo poimenujete funkcijska.
Imam ga zgoraj moj glavni.
Ne pozabite, da želite imeti funkcija po vaše glavno,
želite, da poskrbite, da boste vključujejo prototip vrhu.
>> Toda v tem primeru je bilo tako kratek da sem se počutil, da sem lahko samo
vključiti na vrhu je glavni.
Nisem morajo imeti prototip, saj je že napisano zgoraj.
Torej, vse delam na mojem glavno funkcijo ustvarja celo število x je enako 10.
Kličem mojo funkcionalnem funkcijo, in nato tiskanje do nekaj.
>> In potem je to dejansko kaj funkcijska počne.
Vi želeli, da razmišljajo skozi to.
Ker je malce zapleteno.
To je zelo, zelo težavno, pravzaprav.
Pomislite, skozi kaj je to Program bo prikazovanje.
Dam ti fantje dve minuti.
>> Dobri pogovori?
>> OBČINSTVO: Ja.
>> Profesor: Ja.
Vse je v redu, tako da je to težavno z razlogom.
In to je razlog, zakaj sem si želel, da bi to pozornost vsakogar.
Ali kdo želel, da bi me predlog,, poskus?
Kaj bi to izpisal?
Popolnoma v redu, če se motiš.
Ja?
>> OBČINSTVO: Mislim, da je 100 in nato 10 na dveh ločenih linij.
>> Profesor: In 10?
Ima kdo kakšne druge ugibanja?
Ja?
>> OBČINSTVO: Mogoče samo 10, ker funkcijska se ne vrača ničesar?
>> Profesor: OK, tako da smo imajo guess številka ena
je, da je ugibanje številka dve le, da bo izpisal 10.
Ima kdo kakšne druge ugibanja?
V REDU.
Torej, kaj je sprehod skozi to, kajne?
Kadarkoli boste dobili kos kode, Samo ne gledate na to in se podobno,
ah, to je toliko stvari!
Tako sem zmeden!
Kot, pomiri se dol.
Samo vem, da si lahko samo pogledati skozi kodo po vrsticah.
To je vse, kar je.
To je kot branje knjige.
>> Torej, s katero koli funkcijo, smo se vedno začne na glavni.
Torej bomo začeti na int glavno praznino,
tudi v program, že spuščajo, kajne?
Začetek ob v glavnem praznino.
Int x enaka 10.
>> Torej bom izbrisati to.
Grem pripraviti spomin samo zato, da vas fantje lahko nekako vidim, kaj se dogaja.
>> Ne pozabite, tukaj imamo kup?
Tu imamo kup nekje tukaj.
Stack odraste, kajne?
In v skladovnice, imate omrežni delujejo kot tudi
vse Omrežni lokalnih spremenljivk.
>> Torej, tukaj, int x enaka 10.
V naši glavni funkciji smo ustvarjanje spremenljivko x.
Mi smo nastavitev, ki je enak 10.
Tukaj imaš nekaj x, in ste nastavitev, ki je enak 10, desno,
v glavnem.
Vsakdo dobro?
>> Funkcija.
Torej sedaj, v naših glavnih funkcija, bomo kliče
funkcija, ki smo jih napisal zgoraj.
Tako da smo zdaj vnesite drugo funkcijo.
Bomo ustvarili drugo spremenljivka int x 100.
Kaj se dogaja tu na kupu?
Kaj se zgodi, ko pokličete funkcija, ki ustvarja nove spremenljivke?
Kaj se zgodi tu na kupu?
>> OBČINSTVO: [neslišno] piloti na vrhu?
Profesor: Ja.
Torej je dejansko ustvari kopijo.
In to nekako piloti na vrhu.
Pomislite na stack-- kup knjig, kup ničesar.
Piloti na vrhu, najprej v last ven, zadnji noter, prvi ven.
>> Tako se dogaja, da ustvarite x tukaj.
>> To se dogaja, da imajo vse funcs spremenljivke.
Great.
Torej, zdaj imamo dva različna x, da predstavljata dve zelo različni stvari.
Potem bomo za tiskanje ven celo število x.
Torej, kaj je tiskanje 100, kajne?
Ker tukaj je 100.
Tako, da je prva stvar, da se dogaja, da natisnete.
Ker je ta funkcija vrne nič, Zdaj to funkcijo, da je linija v glavnem
je naredil.
Vsak dober z menoj tako daleč?
>> Torej, zdaj smo skozi dve od Tri linije naše glavno funkcijo.
Zdaj gremo v tretji vrstici.
Bomo printf.
Kaj je to x v glavni?
Kaj to predstavlja?
>> Kakšno vrednost je x zdaj?
>> OBČINSTVO: 100.
>> Profesor: To je 100?
OBČINSTVO: Still 10.
Profesor: Still 10.
Ja.
Saj se spomnite, v Naša funkcijska, x 100.
Ampak, če se vrnemo nazaj na naše glavno funkcijo,
da spremenljivka je shranjena v drugo mesto na naši dimnika.
>> Torej sedaj moramo iti nazaj na Glavni stack, omrežje lokalnih spremenljivk.
In tu je x enako 10.
In tako bomo natisniti 10.
>> Torej je bila popolnoma prav.
Bova imela proizvodnja 100 in 10.
Ja?
OBČINSTVO: Ko malloc ali je to, heap ali Sveženj, ki je [neslišno]?
Profesor: Ko malloc, ste ob pomnilnika iz kopice
in dodeljevanje sredstev.
Tako da ne boste imeli zmešnjavo s katero koli od tega.
Torej, mislim, da je večji takeaway Tukaj je nekaj, kar se imenuje področje.
>> Za tiste, ki ste bili na seja pregled sinoči,
smo se pogovarjali na kratko o tem.
Obseg določa, kako in ko obstajajo vaše spremenljivke.
Ali v kakšnem okvirji storiti obstajajo vaše spremenljivke.
>> Precej pravilo splošno je, vaš variables-- če jih ustvarili
znotraj kodrasti braces-- obstajajo le znotraj teh zavitimi oklepaji.
>> Tako na primer v naši funkciji funkcijska, vidiš ti dve naramnice.
Če želite ustvariti kaj znotraj njega,
verjetno so vse, kar počnete, je ustvarjanje skladovnico in shranjevanje da obstaja.
Ista stvar v glavnem.
To je samo shranjeni znotraj glavnega.
>> Prav tako si želim, da bi zelo, zelo previdni tukaj.
Ker je področje tudi posoja sama različnih primerih.
Tako na primer za zanka, za int i enak 0.
I je manj kot, ne vem, 10.
I plus plus.
In imaš kodo znotraj njega, kajne?
>> Kje pa je ta spremenljivka, i, pravzaprav le obstajajo?
Le znotraj vaše zanko.
Torej Stavim mnogi od vas fantje imajo verjetno naleteli na to napako, ko
delaš programe v vaših psets.
Koliko od vas fantje so poskušali uporabiti i zunaj za zanke in prišlo do napake?
Kot unreferenced števil ali nekaj takega?
>> Razlog, zakaj se to zgodi je zato, ker tukaj ste
ustvariti nekaj, kar samo obstaja znotraj vaše zanko.
In če poskusite, da ga uporabljate, jaz ne dejansko obstaja zunaj njega.
Torej v bistvu računalnik rekel, sem Ne vem, kaj govoriš.
Vse kar vem je, da je bila i tukaj, zdaj pa ni več.
>> Torej, če bi bil jaz ustvariti za zanke znotraj, kajne?
In bom ustvariti drugo, kot int j, in imajo to storiti karkoli.
In imate kodo notranjost da je zanka, j obstaja samo tukaj.
Ampak da obstaja tudi znotraj i.
In tako obstaja samo j v to zanko,
ker jaz obstaja v vso stvar.
>> Vsakdo jasno?
Ista stvar s pogojnimi izjavami Če želite ustvariti ničesar.
Ista stvar z while zanke če želite ustvariti ničesar.
To je nekaj, kar bi bilo zelo, zelo previdni.
Torej, to je bil res dober problem v občutek, da se dokaže, dve stvari.
Najprej je pokazala, obseg.
In je dokazano tudi dodeljevanje pomnilnika.
Saj bi vidva vedeti, da Funkcije rastejo navzgor v plasteh.
In da ko pokličete Funkcije, ste ustvarili
v bistvu nova kup pomnilnika.
To je zelo drugačen od kaj vaš omrežni spomin.
Ja.
Uh!
Vsakdo OK na to?
To je bilo zmedeno.
Zelo dobre teme iti čez, ker ste verjetno
bo dobil nekaj trikov stvari, kot da je na kvizu.
Ja.
Cool.
Bom dal dobiš 100 na eni linijo in nato 10 na drugi strani.
Ja, zelo dobro.
>> OK, zdaj se bodo fantje dobili priložnost, da se TAS.
Dobiš odgovoriti na vsa lepa e-poštna sporočila, ki sem včasih.
>> Torej, dragi Andi, vidim, mislim, da je nekaj narobe z mojim prevajalnik.
Prepričan sem, da je moja koda pravilna, ampak jaz vztrajati pridobivanje napako segmentacije
vsakič, ko tečem.
Kaj se dogaja?
Prosim, pomagajte, veliko ljubezni.
>> Če vidva dobila nekaj podobnega da, kako bi se odzvali?
To so pravzaprav zelo pogosti vprašanja, vas bomo vprašali.
Je, če vam bom dal scenarij, smo nam bo dal
vaš najboljši ugibati, kaj se dogaja.
Vsakdo ima stab, kaj se dogaja?
Ja?
>> OBČINSTVO: Mogoče dereferenced null, nekaj takega kot kazalec
se kaže na nekaj null.
Profesor: Ja, to bi biti Primer, ko bi se to zgodilo.
Toda kaj je večja slika o tem, kaj se dogaja tukaj?
OBČINSTVO: Je to skušaš za dostop do pomnilnika, da niste
naj bi imeli dostop do?
Profesor: Točno tako.
Torej razmišljati o krivdi SEG, sivo omejitve, omejeno območje v spomin
da ne bi smeli biti ganljivo.
>> Torej, precej ko poskušate da index-- kot na primer,
da ste razglasitvi Niz od nič do devet.
Ampak poskusite dotakniti, da 10th vrednost, nimate dostopa do tega.
Ker niste je prijavil.
In tako je računalnik dogaja gledati, da je bilo podobno,
uh oh, skušaš iti izven meja indeksa.
Bom vam napaka segmentacijo.
>> Pomislite kot segmenta, kajne?
Dodaten segmenta, je napaka Ko poskušate kršijo nekaj
in da ne bi smelo biti.
Segmentacija napaka je kadarkoli poskusite dotakniti stvari
da ne bi smeli biti ganljivo.
>> Tako pogosti primeri so indeks.
Seveda, če ste poskušali na dotik, ki je nična,
da bi tudi deloval kot dobro.
Če je vaš kazalec je poskušal dotikajte stvari, ki jih ne sme dotikati,
da bi lahko tako deluje kot dobro.
Najpogosteje boste videti v matriki.
Vsakdo dobro?
>> OBČINSTVO: Torej, če želite dostopati do 10. točke
in tam je le omejitev devetih ali kaj podobnega.
>> Profesor: Ja, točno.
Precej.
Cool.
>> Dragi Andi.
Torej imamo to čudovito Stvari se imenuje vrste.
Če Merge sort-- kot mi žaga na primer pri
David storil celoten stvar v class-- zakaj,
če je tako veliko hitreje kot katerokoli drugo vrst,
Zakaj sploh trudim vedoč katerokoli vrst?
>> Kaj je to vprašanje res vprašam vas?
Kaj je tri word--
OBČINSTVO: Kaj je trade-off?
Profesor: Točno tako.
To je tisto, kar je vprašanje prosi.
Kaj je kompromis med Zlivanjem verzi koli druge vrste?
>> OBČINSTVO: meni spomin, kajne?
>> PROFESOR: Ali vas pojasnjujejo, da malo več?
Najprej dajmo razložiti trgovino Merge.
Kako Merge nekako deluje?
>> OBČINSTVO: Torej, da deluje tako, delitvijo vse v pol
nato pa ga je dala skupaj in prerazporeditev v redu,
tako kot vsakič, ko se združita sklopov.
Profesor: Precej.
Tako da sem lahko to potegnili, vendar pa bi Vzemi me za pet minut, da ga potegnili.
Ozremo nazaj na rubriko diapozitive kjer smo pokrili z zlivanjem.
Točno tako.
>> Torej pot zlivanjem dela je razdeli stvari na pol,
in potem je samo se osredotoča na Prvi vrednosti vsi
in razvrsti le da.
Nenehno ustvarja nove nize in postavlja stvari bolj in bolj v redu.
In tako, ko da je res, res hitro, ker it's-- veste,
binarna iskanje je n log n.
Ste ustvarili tako veliko Različni nizi, da ste
s pomočjo velike količine pomnilnika.
In tako, medtem ko je hitrejši, trgovina off tukaj je, da ste z uporabo več pomnilnika.
>> In tako, namig, vrste in iskanja bili zajeti veliko bolj letos
kot so bili v letih prejšnjih.
Vi bi morali videti, da je zato na kviza odražajo.
Jaz bi definitivno nekaj časa dogaja nad tisto vseh različnih vrst
so, kako binarno iskanje, kako linearno iskanje dela.
Kako se morda psevdokoda kodo tiste ven.
Kakšne so teče čas?
Nekaj ​​podobnega se izvajajo časih je zelo enostavno prepišite mirno note stanja,
prav?
>> To je res težko, ko ste v sredini test
in boste morali ugotoviti, da je ven.
Ga kopirajte navzdol.
Garantiram vam, da ste bo treba vedeti, da.
Kaj so kompromisi?
V najslabšem primeru, najboljši scenariji primerov za vse od njih, zelo spoznali.
Ja?
>> OBČINSTVO: Ali moramo vedo, kako kodo zlivanjem?
Like, ne moramo spomnite rekurzivno?
>> Profesor: jaz zelo dvomim, samo ker je kot precej zapletena.
Ampak to ne sme biti neizvedljiv, če bomo vas prosimo, da uporabite psevdokoda ga ven.
Ja.
>> Ja, OK, še eno.
To bi lahko prišli v si zadnji košček v bit.
Ja?
Ali ste vsi slišali?
>> OK, tako da precej najprej Vse, kar vrsta programa
bi vam daje moč, kot je ta?
Ne pozabite, smo vas prosili, da spoznajo Ta nova vrsta debugging funkcije?
Kako je bilo ime tega?
Valgrind, desno
>> To je bil program, kjer Lahko pokličete, da bi
spremljate vse spomin, ki vas uporabo v vašem programu in se dogaja.
Torej, če imaš nekaj, kot so, definitivno izgubili, 40 bajtov v enem bloku.
Verjetno niste spomnimo, da ga osvobodi.
Ker če uporabljate bajtov pomnilnika, to pomeni, da ste pogledali ta pomnilnik,
vendar niste mogli sprostiti.
Tako da boste želeli, da bi prepričajte, da ste tudi
uporabo free-- da je function-- osvoboditi vse
pomnilnika prerazporedi s knjižnične funkcije malloc.
>> Cool.
Torej ta diapozitiv, ga bom imel gor.
To je povsod v veliko predavanja, v veliko rubriki diapozitivov.
Si res želite, da se prepričajte, ste samo vem vse to.
Bodisi v zapisku stanja ali če vas želite zapomniti, vas prosimo, da.
To je res, res, res pomembno.
>> Prav tako zelo dobro Vprašanje, ki se lahko vprašamo.
Zakaj je izbirnem sort-- pogled na Izbira sort-- vse runtimes
so n kvadrat.
Ne glede na to, kako seznam gre za si kot, zakaj je izbor sort--
Dam ti fantje 30 drugi mislijo o tem.
Ker to je nekako zmedeno.
Gre za nekaj konceptualno misel.
Zakaj bi časi Naklada biti enaka v tako najslabše in najboljše scenarije primerov?
>> Ja?
>> OBČINSTVO: Ker Selection nekako vsak položaj ali prostor v tem majhnem polju
stvar ali karkoli.
Torej, tudi v najboljšem scenariju, tudi če je popolnoma urejeno,
da bi še vedno morali biti kot, OK, enega.
V mojem prvem mestu imam eno.
In iti skozi vse od njih.
OK, ena je najmanjša.
In potem gre zopet in podobno, v redu, dva
je najmanjši od vseh stvari.
Vendar je še vedno na preveriti vsak eno.
Profesor: Ja.
Tako, na primer, recimo, smo seznam, že razporejene,
matrika ena do pet.
Tako, da je izbor sort, ki gre skozi, da preveri te dve.
Potem pa preveri ta dva.
In potem se preverja, in to preveri.
To ohranja preverjanje vseh, ne glede na to, ali
to je dejansko razporejene.
Ker je to preprosto način neke deluje.
>> In tako je to vprašanje nekako kot konceptualno vprašanje, bomo vprašali.
Kje prvič, da si Veš kaj Selection vrste
je prav, da se lahko odgovoriti na vprašanje.
Moraš biti sposoben razumeti konceptualno, kaj se dogaja.
In potem ga lahko uporabljajo in mislim, OK kaj je samo predstavljate najslabšo možnost.
Oni so vsi v padajočem vrstnem redu.
Kako bi bilo, da to vpliva?
>> Kaj pa, če je to naraščajočem vrstnem redu?
Če je to že urejeno?
Kako bi to vplivalo na runtimes?
In potem Izbira vrste, boste opazili, da ne dejansko pomembno.
Ker ste preverjanje vse vrednosti glede na to, kaj se dogaja.
>> In tako dobre stvari, da se spomniš.
Zakaj nekatere vrste razlikujejo od drugih in kako najbolje in najslabše scenarije primerov
bi vplival na vseh.
>> Bom res hit v vrste ker je, da bo na kvizu.
Ja.
V REDU.
Tam je šest minut tekme.
Lahko vzamem tri minute vprašanj.
Lahko tudi visi okoli za kot 20 minut po oddelku
če želite, da postavljajo vprašanja, kot dobro.
Ali kdo ima samo res kratek vprašanja ali konceptualna vprašanja
oni nejasnosti prav zdaj?
Ja?
>> OBČINSTVO: Lahko govorimo malo bit o bitni operaterjev?
>> Profesor: Ja.
Torej bitni operaterji nekaj, kar verjetno
lahko samo želim, da dajo na svoj list.
Torej quickly-- Nočem iti preveč v globino
ker Harvardu, v svojem pregledu seje, ga pokriva precej dobro.
Bitni operator, tam je pet izmed njih, kajne?
>> Tam je to, kar je x ali funkcija, tam je ampersand, ki je in.
Cevi, ki je ali.
In potem imate dve različne vrste izmenah.
>> Če ti dam dve vrednosti, bo po Vam dam, kot, ena in ena.
Kaj bi to ocenila za?
Če sem ti dal res in res, res?
Kaj je pravilna ali napačna?
Še vedno velja, kajne?
Ker tam je ali.
Bomo najverjetneje vam številke.
Torej, ne pozabite, ena enaka Res, nič enaka false.
In vam lahko dala te stvari in vas prosim, da nam poveste, kaj se dogaja.
Harvard ga zajema v prvi 10 minut njihovega študijskega seje
res, res dobro.
Torej si fantje želijo, da bi prepričani, da se ozremo na to.
>> OBČINSTVO: Je pisa5 bo na kvizu?
Profesor: Ne
Niti ne poglej pisa5 zdaj.
Težko je.
Samo niti ne trudim gledaš pisa5.
>> Vendar pa, kot nekaj namigov in predlogi, sem
Predlagam začnete pisa5 takoj, ko je kviz konec.
To bo najtežje teden, potem pa vidva
bo to opravil na hribih voznega zeleno in mladičke,
in to je v redu.
>> Ta razred postane pomemben lažje po petem pset.
OBČINSTVO: Uradne ure so Nedelja, ponedeljek?
Profesor: Ja, tako uradnih ur bo nedelja na ponedeljek za pset.
Uradne ure nocoj v bistvu bo zgolj pregled za kviz.
Če želi kdo, da pridejo in vprašajte TAS vprašanje, bomo tam.
>> Jaz bom morda še eno vprašanje če je vprašanje, kdo?
Ja?
OBČINSTVO: Ko ste opredeljujejo vozlišča, [neslišno]
če rečeš vozlišče zvezdo in nato naslednji, počne računalnik samodejno
razumeti, da ste sklicuje na drugo kazalca?
>> Profesor: Ne
>> OBČINSTVO: Moraš relink je [neslišno]?
>> Profesor: Torej v bistvu struct vozlišča je, ne pozabite,
to je, kot si ustvarite vozlišče in potem imate kazalec imenovano zraven.
Vse, kar delaš, je ob struktura tam.
Imate dodeliti da kazalec nekje.
Torej računalniki ne veste, kaj to je početje še.
Moraš ga dejansko dodeliti ko ste ustvarili svoj povezani seznam.
In to je tisto, kar v glavnem pset 5 bo na.
Torej, ne skrbi koli od tega zdaj.
>> OBČINSTVO: Torej nam ni treba osredotoči preveč na seznamu povezavo, samo
splošna zasnova?
>> Profesor: Le precej nizov, čakalne vrste, povezava seznami, drevesa, hash tabele.
Samo bi lahko vedeli, kaj so.
Ne bomo vprašati vam je všeč kaj posebnega
zato, ker smo v resnici ne opravljenega pset da pokriva nič od tega ni.
>> Torej, v zadnjih dveh minutah pred Postavil sem si prost, da bi ubil ta kviz.
Precej, kot, razmišljati o tem, kako daleč ste fantje prišli v tem razredu.
>> Spomnim se, ko dva tedna tega razreda, nekateri od vas
preživijo tri ure pisanje vodo.
Kako dolgo bo trajalo, fantje pisati vodo zdaj?
30 sekund, morda?
Pomisli, koliko vidva se naučili.
CS je zelo, zelo težko predmet.
Nobenega dvoma ni o tem.
Težko je, da je, zakaj nihče ne študira.
To je samo težko.
In to je povsem v redu.
>> In res sem ponosen, da vsakdo je daleč je bilo to.
Psets niso preproste.
Vzamejo veliko časa.
Vidva, ne bom nikoli vas, da napišete igra 15 ali Vigenere na pset.
Ni potrebe, da samo znorel zaradi tega.
Vsi smo testiranje tukaj je oceniti Vaše konceptualno znanje, kot tudi
kot nekaj vaših osnovnih znanj kodiranja.
Preizkus je namenjen biti res izziv.
Tako kot je bilo načrtovano za vas, da ne bi dobili 100.
To je zasnovan tudi za vas, da verjetno ne bi mogli dokončati v 75 minutah.
In to je povsem v redu.
Sem študent sam.
Vem, Sovražim, ko hodim iz kviza bilo všeč, drek.
To je bilo res težko.
Verjetno tisto, kar se dogaja, da happen-- in da je popolnoma v redu,
Povem ti fantje zdaj.
Sredstva na teh stvareh niso visoke sploh.
>> In za tiste, ki ste so dobili, kot so,
trojke na vaših problematičnih sklopov, to ne pomeni, da ste
dogaja, da bi dobili 60 odstotkov v tem razredu.
Če dobiš 60% na kviz, ki ne
pomeni, da boš dobili D v tem razredu.
Vidimo, predvsem jaz, za tiste, ki ste v mojem oddelku,
Vidim, kako težko fantje so vsi, ki delajo.
In jaz spremljate to.
>> Vidva bo v redu.
Ni institucionalni spomin sreča na koncu semestra.
Ker vsi otroci Harvard so povedali njihovi prijatelji, oh, boste v redu.
Nihče vam pove, fantje, da je tu.
Torej, moram vam povedati, fantje, da je tu.
>> Vidva bo v redu.
Tako sem ponosen na vse vas.
Test bo težko.
Študija za njim, in nato Pravkar vreči proč.
Bodite pripravljeni, da se naučijo novih stvari.
In jesti sladkarije.
Smo jih imeli veliko sladkarij.
>> Dobili dober spanec.
Ne, ne spati, ker to bi bilo res slabo.
CS je veliko logike.
Če ne spiš, ne more delovati, in vaši možgani ne morejo delovati.
In bom tukaj za naslednjih 20 minut, če kdo želi, da visi okoli.
Vidva se dogaja, da ga ubije.
Srečno.