>> Profesor: Tak agenda pre tento týždeň, nie je tak moc vecí.
Ale dúfajme, že veľmi, veľmi užitočné a relevantné pre vás tento týždeň.
Ale my sa chystáte stráviť možno 15, 20 minút len ​​rýchlo hovorí
o zozname odkazov.
Zoznamy odkaz sa chystáte vzťahovať na kvíz.
Takže možno, že by bolo veľmi užitočné sa dozvedieť niečo o tom, čo to je.
>> Chystáme sa minúť obrovské Väčšina dnešných sekcie
bude cez kvíz nulovými problémy praxe.
A potom budeme šetriť snáď 20, 30 minút na konci pre všetky pretrvávajúce otázky
niekto má.
>> A potom, posledný päť minút, idem
dať napumpovať reč pre kvíz.
Vy všetci chceme byť za to tu.
Vzhľadom k tomu, že to bude ten správny čas.
>> Dobre, takže niektoré materiál na zozname odkazov.
Ako oni sú typicky štruktúrované je Máte, čo sa nazýva uzol, že jo?
Máte tieto veci zvanej uzly, ktoré sú structs.
Ja pôjdem nad tým, ako vytvoriť uzol na ďalšiu snímku.
Ale v podstate všetci napojení Zoznamy je sú dáta, ktoré
bolo navlečené dohromady pomocou ukazovateľov.
>> A tak výhodu máme použitie prepojeného zoznamu cez,
možno, ako pole, je skutočnosť, že v matici
budete potrebovať jeden súvislý blok pamäte všetko na jednom mieste, jeden
po sebe, aby bolo možné, aby toto.
Vzhľadom k tomu, Google zozname, môžete majú náhodné malé kúsky pamäti
po celom vašom počítači navlečené dohromady ukazovateľov.
>> A týmto spôsobom prístup k informáciám
že prichádza jeden po iné, po druhej
bez toho, aby bolo len obrovský kus pamäte v počítači niekde.
A tak to je jeden z hlavných Dôvody, prečo používame zoznam odkazov.
>> Po druhé, je to veľmi jednoduché dynamicky zmeniť veľkosť zoznamu odkazov, pretože v poli,
pri deklarovať pole, máte určitú nastavenú hodnotu.
Povedzme, že som chcel vytvoriť Pole 10 celých čísel.
Aj vytvoriť rad 10 celé čísla, a to je všetko.
Je to 10.
Ja neviem, čo robiť po tom.
Keby som chcel, aby sa stalo 11, môžete to urobiť.
Ak chcem, aby sa stalo 9, môžete to urobiť.
>> Vzhľadom k tomu, v zozname odkazov, môžete pridať a odstrániť a vložiť kamkoľvek budete chcieť.
Môžete dynamicky meniť veľkosť štruktúru tu, vaše dátové štruktúry.
A to nám dáva veľa viac pridané flexibility
že my nie typicky majú s poli.
>> Každý, kto nevedia, základné štruktúra, ako je zoznam odkaz
alebo prečo musíme použiť jeden cez pole?
Jo, pôjdeme cez detailne ako sa vlastne vytvoriť.
Ale to je len druh všeobecný zmysel práve teraz.
Super.
A tak polia sú navlečené spolu z týchto krásnych maličkostí
zvanej uzly.
Všetky uzol je je druh Struct.
Pamätajte si, že struct je, ak ste chceli vytvoriť určitý typ premennej
v C, že už nie je existujú, vy, ako programátor,
môže skutočne vytvoriť, že sami.
>> A tak sa tento typ dát Štruktúra sa nazýva uzol,
bolo skutočne vytvorený nás, že neexistuje v rámci C, na jeho vlastné.
A spôsob, akým vás vytvoriť z nich je máte
hlavička typedef struct, ktorý hovorí kompilátora Som
o vytvorení Struct.
>> Ideme pomenujte ju "uzol".
A vnútri ideme deklarovať premennú v,
ktorý sa chystá uložiť hodnotu.
A potom sme tiež bude sa ukazovateľ s názvom "next"
, Ktorý odkazuje na budúci uzol v zozname odkazov.
A potom skončíte, že off jednoduchým opakovaním uzol znovu tak,
kompilátor vie, OK to je koniec môjho struct.
>> A tak týmto spôsobom, sme trochu vytváranie roztomilé pole
Takéto veci s hodnoty a s ukazovateľom.
A vy ich môžete prepojiť všetky spoločne s týmito ukazovateľmi.
Tak, aby mohli byť všetky druhy navlečené dohromady v reťazci.
>> Super.
Môžete počuť, že o niečo lepší?
>> Divákov: Jo.
>> Profesor: Dobre.
Takže spôsob, ktorý, ako je vy vidieť, typický zoznam odkaz je štruktúrovaný
ich budete mať hlavu.
Máte hodnotu hlavy, ktorá nie je nasmerovaný iným ukazovateľom.
Ale bude to poukázať na, alebo referencie, iný uzol.
Uzol po bude odkazovať uzol po tom, a tak ďalej a tak ďalej
kým sa nakoniec hit koniec vášho zoznamu odkazov.
A tie jednoducho nebude mať ukazovateľ tam.
>> A tak, ako myslím, na reťazi, či dokonca ak niekto z vás chlapci vyrobených, ja neviem,
ako s ovocnými Loops keď si bola malá.
Tie by string ich dohromady a nosiť okolo krku.
Myslíš, že je to presne to isté.
Máte tieto malé veci, ktoré môže reťazec seba, že bod na jeden
po tom, aby jeden po to, a tak ďalej a tak ďalej
až budete mať reťaz dátové štruktúry
že môžete použiť však budete chcieť.
>> Takže tak, že toto by sme typicky vložiť alebo vymazať
akýkoľvek uzol z odkazu Zoznam je veľmi odlišná
podľa toho, kde je tento uzol.
Tak, napríklad, pretože ukazovatele sú vždy
ukazuje na určitú hodnotu, pri odstránení alebo vložení uzla,
chcete, aby sa ubezpečil, že ukazovateľ všetko ukazuje na správne veci.
>> Takže ak by ste chceli potenciálne vložiť nový uzol s hodnotou jedného
vnútri zoradení odkaz zoznam, všetci vieme, tu
Z obrázku, čo sa deje na ísť medzi hlavou a dvaja, že jo?
Pretože jeden sedí práve tam.
Ale spôsob, akým budeme robiť, že je tým, že najprv dereferencing ukazovateľ
od hlavy a posielanie, že k jednému.
>> Ale my prišli do problému tu.
Môže niekto vidieť, čo je problém ak je sme boli na prvej dereferencia
ukazovateľ od hlavy k jednému?
Aký problém môžeme naraziť keď sa snažíme pridať to do prednej časti našej ponuku?
>> Divákov: [Nepočuteľné]
Profesor: Presne tak.
Takže tu máme ukazovateľ, ktorý bol akonáhle smerujúce od hlavy až dva.
Ale ak ste sa zbavili, že ukazovateľ, čo si len upozorniť na jeden,
teraz máme tušenie kam ísť nájsť dva.
Vzhľadom k tomu, ako som už povedal, že ste dostal obrovský kus pamäte v počítači.
Všetky tieto uzly by mohli náhodne premiešané
v akomkoľvek mieste v počítači.
A vy neviete, ako ísť o zistenie, že.
>> A tak je potrebné mať ukazovatele smerujúce ku všetkým uzlom na konci.
Alebo ak ste náhodou dereferencia jedného
bez prvej prideľovanie hodnota najprv, že ste
len tak stratiť všetko potom.
>> Takže to, čo budeme urobiť, je, by ste najprv
Chcete vytvoriť ukazovateľ na uzol, ktorý chcete vložiť.
Bode, kde ste chcete vložiť ju do,
a potom potom vám by mohol smerovať hlavu späť do jedného.
>> Znamená to, že zmysel pre všetky tu?
Skvelé.
Ber to ako, rovnako ako reťaz.
Ak pridáte reťazec, je to celkom intuitívne
ako by ste ísť o vloženie to.
>> OK, tak to je v skutočnosti oveľa kratšie, než som si myslel, že to bude,
päť minút spiel na odkaz zoznamoch.
Len tak si chlapci majú Základnou myšlienkou, čo to je.
>> Tu máme program pre Quiz nula.
Nedovoľte, aby to zastrašiť.
Viem, že je to veľa informácií.
Vyzerá to veľmi desivé.
Je to tiež veľa, ja myslím, CSC druh termínov.
Veci ako hexadecimálne reťazce, ukazovátka, dynamická alokácia pamäte
sú veľmi desivé znejúce termíny.
>> Ale budeme rozbiť dole, urobiť nejaké problémy praxe
takže vy všetci sú pripravené pre tento test.
Koľko z vás má Už začala študovať?
>> OK, vy pravdepodobne budete chcieť na začiatok Začíname
na to, že preto, že test je zajtra.
Alebo vo štvrtok pre niektoré z vás.
Jo, takže budeme ísť nad niektorými problémami praxe.
Ak vy všetci chcú, aby sa out list papiera, ceruzku.
Budeme len stráviť Drvivá väčšina dnešných sekcie
bude cez niektoré to tak chlapci majú predstavu o tom, čo možno očakávať na kvíz.
>> OK.
Pár logistické Detaily rovnako, pre každého
ktorý nebol k tomuto odkazu tam, ak idete do cs50.yale.edu, na prednej strane
Táto stránka je tu odkaz ktorý hovorí, že "o Quiz Zero."
Link sa dostanete tam.
Ak ste nečítali, prečítajte si to.
Vzhľadom k tomu, to vám povie naozaj dôležité informácie o kvízu.
>> Chystám sa vytiahnuť to z že len preto, fyzicky,
ak vy neviete, kde ísť, budeme mať problémy.
A tak, ak vaše posledný v podmienkach s N, choďte na Právnickej fakulte hľadisko.
A ak sa vaše posledné začína P od A do Z, choďte na Davies Auditorium.
A to sa vzťahuje len na ľudia v sekcii stredu.
>> Ak užívate kvíz na Štvrtok, idete do SSS 114
kde sa vaše prednáška je obvykle.
Divákov: [Nepočuteľné]
Profesor: O do Z, budete ísť do Davies hľadisko.
Chystám sa zmeniť, nie?
>> Oh, jo, proste nepodarí automaticky.
>> Ach jo, to ste vy Christa.
Jo, moja zlá.
Jo, O A do Z, budete ísť do Davies Auditorio.
Chystám sa opraviť, keď som nahrať.
Jo.
>> A potom tiež niečo dôležité na myseľ
je, že Streda, ak ste oficiálne zapísal v sekcii Streda,
musíte vziať kvíz v stredu.
A ak ste sa zapísal do štvrtka, musíte vziať kvíz štvrtok.
A je to počas vyučovacej doby.
Tam, kde si myslím, že je to ako na 1:00 02:15 v stredu a od 02:30 do 03:45
vo štvrtok.
>> Ak máte za nezlučiteľné konflikty, Ospravedlnenia dekana sú jediná vec,
bohužiaľ, môžeme vziať.
Pretože sme mali Drvivá väčšina žiadostí
prejsť od stredy do štvrtka.
Čo nemôžeme ctiť, pokiaľ máme požiadavku na dekana.
>> OK.
Takže než začneme na Pár problémy praxe,
Ja som jednoducho ísť cez Andy užitočné tipy na dosiahnutie úspechu.
Vy, keď budete študovať, naozaj chcete praktizovať písať kód ručne.
Prvýkrát, čo som kedy vzal SK kvíz, som nemal
Prax písanie kódu ručne pred a to bolo extrémne
šokujúce, ako to bolo ťažké.
>> Kedy vy nedostanú do zvyk písať si všetko,
ide veľmi je prirodzene schopný mať autocompleted
držiaky a bodkočiarkami tam.
Keď napíšete to rúk, niekedy je to
veľmi, veľmi ľahké zabudnúť na bodkočiarku, alebo zabudnete zavrieť držiak,
alebo zabudnete zavrieť dvojbodku, alebo niečo také.
>> Takže pri písaní kódu ručne, to je veľmi odlišný pocit.
Takže vy chlapi, keď pracujete cez niektoré z problémov praxe,
bolo by dobré, aby dnes naozaj cvičiť.
Alebo zajtra, myslím, ak ste brať kvíz na štvrtok.
>> Po druhé, máme posledný, rovnako ako, osemročný to stojí praxe
kvízy online.
Tohtoročný kvíz bude pravdepodobne veľmi, veľmi podobné pre všetky z nich.
Všetci sú veľmi podobné.
Tak nejako dostať do štýl typu otázok
že sa pýtame, typ funkcie, ktoré budeme napísať ju,
a tak ďalej, a tak ďalej.
>> Tak sa v praxi kvízy, zvlášť v časovej tiesni.
75 minút urobiť kvíz je nie je veľa množstvo času.
Je to veľmi, veľmi dlho.
A tak vy naozaj chcete aby sa ubezpečil, že vy ste
vo zvyku písania kód ručne rýchlo.
Vzhľadom k tomu, vy nechcete, aby sa ako prvý čas pozrieť kvíz z tejto dĺžky
byť na kvíz.
Vy naozaj chcete, aby sa ubezpečil, že cvičíte vopred.
>> Po štvrté, chcete preskúmavať prednáška a sekcie šmýkačky.
Nemusíte pamätať veci.
V skutočnosti, každý je povolené jedným biely papier poznámok,
predné a zadné.
Vy môžete písať a písať.
Ak zistíte sami museli zapamätať niečo, položil ju na tomto liste.
>> Ja vám zaručiť, nechcete, aby sa zasekol v polovici tohto kvízu
bytia ako, ach jo, čo je to runtime tohto druhu proti tomuto druhu.
Stačí uviesť, že dole a skopírujte ho priamo z poznámky listu.
Potom môžete vlastne len použiť vaše mozog premýšľať o problémoch,
skôr než pripomenúť fakty.
A tak sa skutočne využiť akýchkoľvek špecializovaných detailov
že si myslíte, že je potrebné pamätať, PLOP ju na recenzie liste.
>> OK, akékoľvek otázky logisticky pokiaľ ide o kvíz
Než začneme niektoré Problémy kvíz praxi?
Jo?
>> Divákov: Nemal som šancu sa pozrieť na teste [nepočuteľných]
ale to bude Aplikácia väčšinou,
Alebo je tam tiež bude, ako, vedomostné otázky?
>> Profesor: Je to veľa.
Tak, tak, že som by opísal kvíz
je-- som dal dohromady niektoré problémy praxe
že som vytiahol zo všetkých kvízov.
Ale uvidíte, že tam sú dve hlavné typy otázok budeme vás požiadať, aby ste.
>> Jedným z nich je veľmi nízka hladina detail vecí.
Dáme vám malý kus kódu a hovoria, že je chyba tu?
Čo by sa tlačiť tu?
Čo bude tento kód produkovať, a tak ďalej.
Takže podrobnosti veľmi nízkej úrovni informácie.
>> A na druhej strane, budeme mať veľmi Otázky na vedomostiach založenej na vysokej úrovni.
Môžete mi vysvetliť, čo sa Rozdiel medzi binárne vyhľadávanie
a lineárne vyhľadávanie?
Prečo by chceme použite jednu nad druhou?
Možno, že to, čo je GDB?
Prečo chceme použiť GDB?
Vyšší level, zásadnejšie pochopenie otázky.
Tak uvidíte zmes dvaja z nich na kvíz.
>> Čokoľvek iné než my zamieriť rovno do toho?
OK.
Divákov: Ešte jeden.
Profesor: Oh, ešte jeden.
Prepáčte.
>> Publikum: Jo, je to v poriadku.
Takže hovoríte, že 75 minút je príliš krátka, ako to je nepravdepodobné,
že skončí?
Alebo, ako, 75 minút je presne toľko, koľko času
ako by sme potrebovali, keby sme boli náležite pripravený?
Profesor: OK, takže kvíz je náročné.
Je to určite náročné.
Ocitnete sa málo času.
Vy ste asi bude hit, ako je 10, 15 minút ísť, a je rád, hovno.
Som toľko zostáva.
A to je úplne v pohode.
Každý, kto to bude cítiť rovnako.
>> Stačí byť veľmi dobre vedomý koľko máte času.
A tak to je dôvod, prečo som povedať, chlapci robiť prax kvízy.
Vzhľadom k tomu, je to naozaj dáva veľký zmysel toho, čo kvíz bude podobne.
Takže ak sa ocitnete bytí schopný dokončil praxi
kvízov v dobrom výške čas, môžete tempo sám dobre,
potom nebudete mať problém v stredu alebo vo štvrtok.
>> Super.
Takže ak všetci wants-- Myslím, väčšina ľudí má listy papiera
out už.
Chystám sa v podstate len vám otázky vzorky,
tí chlapci, podobne, pár minút na to je.
A pôjdeme cez ako trieda aké odpovede na ne sú.
>> Tak to je veľmi typický čoskoro otázka my budeme
spýta, len konverzia Čísla medzi rôznymi základmi.
Binárne, ako vy môžete Pripomeňme, je základ dva.
Desatinnej je základ 10, alebo to, čo sme ako ľudia typicky interpretovať.
Hexadecimálne je základňa 16, čo je nula do deviatich, rovnako ako A až F.
>> Takže tam štyri čísla som dotazom vám chalani previesť tu.
Dám vám páči, tri až štyri minúty premyslieť, ako
mali by sme ísť o riešenie tohto.
>> Divákov: Sme povolené kalkulačky?
>> Profesor: Nebude Potrebujete kalkulačky, jo.
Myslím si, že základné sčítanie, myslím, že je všetci chlapci budú vyzvaní, aby robiť.
>> A rovnako tak som trochu mať zmysel kedy sa všetci vykonáva, pozrite sa,
vlna, ja neviem, úsmev, vyzerať šťastný, keď máte hotovo.
Jo.
Možno, že ešte pár minút.
>> OK, poďme priviesť ju.
Ja úmyselne chystá tí chlapci menej času
než budete pravdepodobne potrebovať robiť niektoré z týchto problémov,
jednoducho preto, že chcem, aby sa uistil, že dostaneme cez veľa problémov.
Takže žiadne starosti, ak ste nemali majú šancu dokončiť.
Celkom v poriadku tak dlho, ako máte predstavu, ako ísť o tom.
Tak poďme ďalej a urobiť prvý.
>> Takže najprv, niekto chce sa mi povedať, v binárnej, čo robiť každý z týchto čísel
predstavujú, pokiaľ ide o ich hodnoty?
Jo?
>> Divákov: Two do sila nulová, dve ku jednej.
Profesor: Presne tak.
So.
>> Správne, takže typicky keď sme v základe 10
všetky tieto predstavujú, sú, rovnako ako, 10 k základni nuly, že?
To je vaša niečí miesto.
Všetky vaše miesto 10 je je 10 k výkonu jedného.
Miesto, ktoré je 10 100 k sile dva.
>> Nech základňa ste v deje čo do činenia s presne rovnakú vec,
len s inou báze.
Takže binárne, všetko, čo je, je základ dva.
Budeš previesť všetky číslic do dvoch na čokoľvek napájanie
of číslice.
A tak v tomto zmysle, sme môžu mať jednoduchší spôsob
že budú môcť sčítať, alebo sčítať všetky čísla v poradí
previesť do základu 10.
>> Takže to niekto chcel, aby mi povedať, čo odpoveď na prvú z nich je v základe desať?
>> Publikum: Two, [nepočuteľných]
Profesor: Jo.
Divákov: 42.
Profesor: 42, tam idete.
Takže ako sme dostali túto odpoveď bola o robí dva Prvý, ktorý je dva.
Plus dva tretí, čo je osem.
Plus dva až piaty, ktorý je, čo zostane.
Môžete ich zhrnúť a to je 42.
>> Je niekto zmätený o tom, ako sme sa dostali, že?
Takže základná Navyše, ako Povedal som, mali by ste byť v poriadku.
Ak nie, dobre, môžeme praktizovať, že taky.
Ale to je v poriadku.
Super.
>> Má niekto chcel mi dať odpoveď na druhý rovnako?
>> 50?
Dobre.
Každý, kto nevedia, ako máme, že buď?
Cool, budem mať Odpovede na ďalšiu snímku.
Takže žiadne starosti, ak vás je potrebné ho skopírovali.
>> OK, takže hexadecimálne je trochu zložitejšie.
ale ja vám ukážem chlapci zástupcu na to, ako to urobiť.
Takže hexadecimálne, ako vy pamätajte, že všetko, čo ich bude 16.
A pretože sme ako ľudia robia nie vlastne mať 16 čísel reprezentovať to,
ideme od nuly do deviatich, ktoré naše prvé 10 hodnôt, a potom budeme robiť A až F,
ktoré sú ďalších šesť hodnoty.
>> A tak najjednoduchší spôsob, ako ísť od akýkoľvek binárne číslo na šestnástkové
je rozdeliť ich do polovice.
A tak akýkoľvek binárne číslo dáme budete pravdepodobne mať osem číslic.
Stačí si len zlomiť je až v stredu.
>> Takže prvé one-- jedným one, jedného jeden, jeden, jeden, jeden raz.
Druh si, že to, viete, kresliť lomka alebo čiarka medzi nimi.
A môžete len previesť priamo čokoľvek
to je k prvému počet hexadecimálne,
a, čo je tu druhý z hexadecimálne.
>> Takže pamätajte z bežnej notácie, čo hexadecimálne hodnoty začať?
>> Divákov: Zero.
>> Profesor: 0x.
Takže vieme, že kedykoľvek vás žiadame previesť ľubovoľný počet na šestnástkové
alebo kedykoľvek vidíte akýkoľvek číslo, ktoré začína 0x,
viete, že je to hodnota v šestnástkovej sústave.
>> A potom budete vyzvaní k zistiť, čo tieto dve číslice sú.
A tak, ako si to urobiť, sčítanie hlasov up že polovica a sčítanie hlasov sa, že polovica.
Takže v tomto príklade, to, čo by jedna, jedna, jedna, jedna byť?
Čo hodnota by to malo byť?
To by bolo F, že jo?
To by bolo 15.
>> Takže by to bolo F. One, jeden, jeden, jeden je tu tiež
F. Takže jeden, jeden, jeden, jeden, jeden, jeden, jeden, človek v šestnástkovej sústave, všetko, čo je, je 0xFF.
Pretože táto polovica zastúpená F, hodnota 15,
a to polovica zastúpená F, hodnota 15.
Vzhľadom k tomu, pamätajte, že sme počítanie od nuly do deviatich.
A je ako 10, B je ako 11, F 15.
>> Dáva to zmysel pre každého ako sme sa dostali z binárneho na hexadecimálne?
>> Divákov: A tak, ako sme sa dostali 15 z jedného, ​​jeden, jeden, jeden?
Profesor: Jo, to je binárny, že jo?
Predstavte si, že je to len binárne číslo.
Takže budete musieť do dvoch zeroth, čo je jedna.
Publikum: Oh, OK.
Takže si jednoducho celkom to.
>> Profesor: Jo, a potom proste celkom to von.
To je všetko, čo je.
>> Divákov: OK.
>> Profesor: OK.
>> Divákov: Takže idete z binárnej do desiatkovej na hexadecimálne?
>> Profesor: To je Najjednoduchší spôsob, ako robiť tak, jo.
Nebudeš do desiatkovej sústavy, pretože desiatkovej len má nula až deväť.
Sme tak nejako rozdelenie toto hore na dve časti.
>> Divákov: [Nepočuteľné] použitie desatinné nájsť
čo to zodpovedá až v šestnástkovej sústave.
Profesor: Myslím, že si sčítanie hlasov up s využitím základných matematiky.
Divákov: Jo.
Profesor: Jo, celkom veľa.
Je to trochu mätúce.
Ale viem, že vy môže rozdeliť čokoľvek
táto hodnota je na iba polovice.
Pozrite sa, čo je to v binárnej?
Čo je to číslo?
Je to bude niečo od nuly až F.
>> Tu sa tiež bude niečo od nuly až F.
A potom stačí dať tí dvaja tu.
>> Divákov: OK.
Profesor: Jo.
OK.
Takže vy chcete vyskúšajte ďalší jeden potom?
Nula, jedna, nula jedna, jedným, nula, jedna nula.
Dám vám chlapci ako 30 sekúnd, pretože ste asi nevedeli
trik, ako to urobiť skôr.
>> OK, niekto chcel, aby si to jeden výstrel?
>> 0X5A.
Profesor: 0X5A.
5a.
Dobre.
Tak toto tu by be-- chcete aby nám povedali, ako sa máš, že?
Po prvé, ako ste sa dostal päť?
>> Publikum: Vzhľadom k nule, jedným, nula, jedna je päť.
>> Profesor: Rozumejú prečo nula, jedna, nula, jedna je päť?
Vy ste dostal jeden tu.
Nemáte nič do dvoch až prvý.
V dvoch do druhého, vás mať jeden, ktorý je štyri.
Takže si pridať dva plus ten, máte päť.
Všetci dobre?
OK.
A potom, čo to bolo a prečo?
Aké číslo robí zodpovedá?
>> Divákov: 10.
>> Profesor: A čo to v základni dva?
Divákov: [Nepočuteľné]
Profesor: Presne tak.
Takže to druhá hodnota by tu bolo 0X5A.
>> Všetci dobre na tom, ako previesť?
Je to oveľa jednoduchšie, než si myslíte, že je.
Ja len chcem, aby sa ubezpečil, Viete, užitočné tipy
a triky na to, ako to urobiť.
>> Divákov: Prečo stačí rozdeliť to v stredu také?
Len sa ako, OK, budem len starostlivosť o nich najprv [nepočuteľných]?
>> Profesor: Vzhľadom na to, že je to vlastne spôsob hexadecimálne hodnoty sú zastúpené.
0x, že v skutočnosti znamená, nič iné, než hovorím
že to je šestnástkové číslo.
A to vždy predstavuje Prvé štyri číslice.
A to vždy predstavuje posledné štyri číslice.
A tak tieto dve číslice len zodpovedajú rôznym bitov.
>> Divákov: Takže sa budeme always--
>> Profesor: Si vždy dostane osem hodnoty bitov.
>> Divákov: Je to rovnako ako vec tu, alebo že vec po všetkom?
Profesor: To je len vec v oblasti počítačov, jo.
Divákov: OK.
Úžasné.
>> Profesor: Tiež, takže v tomto prípade sme prevedené z dvojkovej do desiatkovej,
a od binárne k hexadecimálne.
Vy chcete, aby sa ubezpečil, môžete tiež cvičiť ísť opačným spôsobom.
Takže keď som ti dal 0xFF, mohol by ste čerpať, že v binárnej, že jo?
>> Previesť F do binárne, čo je jedna, jedna, jedna, jedna,
previesť F na binárne, ktorý je jeden, jeden, jedna, jedna.
>> Tak sme sa požiadať vás o to opačne.
Takže desatinné binárne, alebo hexadecimálne na binárne.
Takže chcete, aby sa istý, že viete oboma smermi.
Najskôr vám položiť Kombinácia týchto dvoch.
>> Jo, máte nejakú otázku?
Môžem see-- ste dobrí?
Divákov: Jo.
Profesor: OK.
Som dobrý vymazať to?
Skvelé.
>> Dobre, takže odpovede sú tu, ak niekto je zvedavý neskôr a dostať zmätený.
OK.
>> Divákov: Záleží na tom, či dáme Naši listy v hlavnom meste, alebo malá?
>> Profesor: To robí, pretože v šestnástkovej sústave, podľa konvencie,
všetky postavy sú veľké písmená.
Takže A až F sú Bude veľké písmená.
Ak dáte malými písmenami A, ja neviem, ak by sme nutne označiť to zle.
Ale teoreticky, to nie je technicky
ako sa máš to mať.
Takže všetky by mali byť veľké písmená.
Jo, dobrá otázka.
>> OK.
Druhá otázka.
Zoberme si tento krásny programu tu.
Opýtam sa na otázku, Vrátim sa to.
>> Tak, za prvé, čo je vo vnútri štandardu IO.H, že je v záujme programu?
Po druhé, čo robí void znamenať v rade tri?
A za tretie, čo sa vracia na nulu z hlavné, as línie šesť, všeobecne znamenajú?
Ak vy chcete napísať tým dole, pretože som sa vrátiť späť
do snímky len tak môžete vidieť kód.
To je príklad, ako, možno vyššiu úroveň otázka, kde vás žiadame
čo veci znamenajú v programe.
>> Každý, kto pre mňa dobré, aby vrátiť sa na snímku?
OK v pohode.
Takže ja dám sa vám bude páčiť snáď troch minút sa pozrieť na tomto jednom naozaj rýchlo.
>> OK, takže toto je ako pomerne jednoduché, koncepčne.
Má niekto chcel, aby mi povedal, čo je najprv zvnútra hash, vrátane
naším štandardom IO.H súbor knižnice?
Prečo potrebujeme túto knižnicu súčasťou tohto programu?
To, čo tu budeme potrebovať pre?
>> Jo?
>> Divákov: je, že keď ste dal, že printf?
>> Profesor: Presne tak.
Takže printf, kedykoľvek budete brať vstup od užívateľa
a niečo vytlačiť na obrazovku, ktorá je
štandardný vstup, výstup knižnicu.
Myslite na to, že way-- vstup, výstup.
>> Mám výstup?
Áno.
Takže viem, že som vždy Potrebujem knižnicu Normované i.o.
>> Takže printf je funkcia , Ktorú by sme potrebovali prístup
a hashtag zahŕňajú Štandardné i.o knižnica.
OK.
>> Po druhé, čo void znamenať?
Máme int main (void), čo robí void tu na mysli tú na linke tri?
Jo, v chrbte.
>> Divákov: [Nepočuteľné]
>> Profesor: Presne tak.
Takže pamätajte, že sme sa naučili počnúc naším pset
že môžete skutočne špecifikovať príkazový riadok
Argumenty, že váš program, ktorý vás Hlavnou funkciou, berie ako vy, užívateľ,
hovoria.
Ak máme void, čo znamená, že vás mohol len spustiť program priamo
bez akýchkoľvek argumentov príkazového riadku.
Všetci jasné, že?
OK.
>> A nakoniec prečo sa obťažovať robiť tento návrat nula vec tu?
Prečo máme dokonca int main?
Prečo nemôžeme len tak void main void?
Jo?
Divákov: Len tak, že môžeme uistite sa, že je program
úspešnom ukončení, as na rozdiel od ak bol očíslované.
A my by sme vedieť, že je to iný druh chyby.
>> Profesor: Jo, presne tak.
To je len veľmi konvenčné vec, ktorú robíme,
je to, že práve na konci váš program, len aby sa ubezpečil,
že vaše hlavné funkciu beží správne,
vždy chceme urobiť vrátiť nulu.
Aj keď môžeme byť nutne Nie je vidieť, že tlačený kdekoľvek.
>> Vzhľadom k tomu, ako programátori, viete, ak máte mnoho rôznych riadkov kódu
a vy neviete, kde títo idú zle,
a ak sa chyba stane, že chcete uistite sa, že máte túto chybu.
A tak typicky ak sa niečo zle budeme mať návrat jedného len
aby sa ubezpečil, vieme, že to je.
Takže ak uvidíte návrat nula, ktoré typicky
znamená, že váš program vykonaný úspešne.
Dobrý?
Super.
>> OK, druhý program tu.
Zoberme si, že.
A ak vy vidíte float, môžete chlapci zrejme
mať dobrú predstavu o tom, čo Chystám sa vás opýtať.
>> Takže keď tento program vykoná, ako môžete vidieť,
Som deklarovaní plavák vnútri mojej hlavnú funkciu.
Ja som to pomenovanie "odpovedal," a ja som nastavenie rovnajúcu sa jednému delené 10.
Som vytlačiť na jeden desatinné miesto, ktoré plavák.
A potom som sa vráti na nulu.
>> Takže pri realizácii programu, Spomeňte si na chamtivý teraz,
tento program vytlačí 0.0.
Ako všetci vieme, dúfajme, že my všetci vedieť, jeden delené 10, nie je 0,00,
to je 0,1.
Ale vysvetliť, prečo si myslí, že tento program že 1 delené 10 kópií na 0,1 iné
ako 0,1?
Som, že ste dám možno ako 30. sekúnd len rýchlo premýšľať o tom, že
a ja pôjdem späť do programu.
>> OK.
Každý, kto chce dať mu šancu?
V troch vetách alebo menej, pretože obvykle sme
chystá obmedziť všetky odpovede na troch vetách alebo menej
takže sa nemusíte len chrliť náhodné veci, na pevnom disku kvíz.
>> Jo, mať šancu.
>> Divákov: Takže si myslím, že je to vec zvaná, rovnako ako, [nepočuteľných]
Tak by mohlo byť, napríklad, že by mohlo byť, rovnako ako, 0.09,
že ak tlačíte prvý číslice, bolo by to na 0,0?
>> Profesor: Close, nie tak celkom.
Christabelle?
>> Divákov: Ste jeden a delenie 10, a obaja sú celé čísla.
A tak spôsob, akým to bude ukladať ich ako celé číslo.
A tak sa najbližšie celé číslo bude 0.0.
A tak to je 0,1.
Profesor: Jo, to je naozaj dobrý.
To je správna odpoveď.
Tak to je veľmi mätúce koncept pre mnoho detí.
A ja naozaj chcem, aby sa uistil, že toto je posilnené v hlave každého z nás.
>> Takže to, čo hovoríme plávajúce bod nepresnosť,
kde je dôvod, prečo mnoho z vašich programov v chamtivý
nefungoval spočiatku bolo preto, ste zabudli na obsadenie vašej premennej.
Takže to, čo povedal Christabelle bolo úplne správne.
>> Plávajúce je neodmysliteľne nepresná.
Pretože v počítači, vpravo, my máme konečné množstvo bitov pamäte
môžeme použiť predstavovať čísla.
Tak, napríklad, to CS50 ID je-- Myslím, že je to 64-bitový počítač.
>> Plavák môže byť zastúpený iba o konečné množstvo týchto bitov.
A tak 0,1 s nekonečnou nulami, že je bol 0,1 je, že jo?
Ale nemôžeme vlastne ukladať toto číslo v našom počítači.
My jednoducho nemajú dostatok pamäte, aby tak urobili.
>> A tak najbližšie priblíženie , Čo je uložené v pamäti je v skutočnosti
niečo ako 0,000 niečo, niečo, niečo, niečo.
Čo, akonáhle sa skrátiť to, zaokrúhli nadol na 0.0.
>> A tak tento príklad je iba jedným , Ktorý ukazuje veľa otázok
máme vždy, keď sme snaží nesprávne robiť matematiku
bez osadenia ako iný celé číslo.
Takže proste mať na pozore sa to stáva.
>> Na kvízy, ak dáme vám blok kódu a je to ako,
čo vytlačí na konci?
A či je to nejaký náhodný hodnota, ktorú chlapci by mali vedieť, prečo sa to deje.
Jo?
>> Divákov: Truncate, je zbaviť sa všetko po určitom okamihu?
[Nepočuteľných]
Profesor: Jo, tak vlastne toto je naozaj zlý príklad,
pretože 0.100 čo vlastne by skrátiť až do 0,1.
Ale ak ste mali spustiť to-- vôbec sa mi nepáči pamätať, pretože v minulom roku, ktoré
bežal na inom programe.
Bežali ho v niečo, čo nazýva CS50 Appliance, ktorý
sa líši od ID.
To bolo 32-bitový systém, myslím.
A tak tam boli rôzne čísla.
>> Ale v podstate, len viem, že celý koncept skrátenie
a ako to len kusy veci preč.
A tak, ak si to rounds--
>> Divákov: Bez zaokrúhlenia.
>> Profesor: Presne tak.
Jo.
Super.
>> Ahoj, v chrbte.
Práve sme sa nad niektorými kvíz preskúmanie otázky.
>> Dobre.
Takže zvážte iný program tu.
Budem vám chlapci pár minút na čítanie cez to.
To je niečo, čo bolo pre veľmi Nedávno si myslím, že fúkal veľa z vás
myseľ GUYS je.
Ale budeme hovoriť cez to opäť len
aby sa ubezpečil, pochopiť úplne.
OK.
Každý, kto potrebujú viac času čítať prostredníctvom tohto kódu?
OK.
>> Tak sa mi zdá, že V tomto programe, že som
vytvorenie dvoch reťazcov pomocou getString.
Jeden tzv s a jeden s názvom t.
A v prípade, že sú rovné sa rovná k sebe,
Mala by vypisovať "You zadajte to isté. "
>> Ale elsewise, bolo by to tlačiť, "You napísal rôzne veci, "že jo?
Zdá sa, že veľmi, veľmi jednoduché.
Ale, ale, či som vlastne skúste napísať tento program,
zdá sa, že aj keď som Vstupné presne rovnaké reťazca,
stále tlačí, "You napísaný rôzne veci! "
Má niekto chcel vziať strieľal na dôvod, prečo tento program vždy
odpovedá, že vstupy sú rôzne, a to aj
ak sú tieto slová sú rovnaké?
>> Takže ak by som mal input-- David lásku použiť príklad, ako mama, že jo?
Malé písmená M-O-M pre S, T sa rovná malé písmená M-O-M.
Ak by som bežal to prostredníctvom že kód, prečo by to
vytlačiť "zadaný rôzne veci?"
>> Potrebuje niekto viac čas premýšľať o tom?
OK, myslím, že sme dobrí.
Jo?
>> Publikum: OK, tak to je niečo o kde je uložený v pamäti, že jo?
>> Profesor: Jo.
>> Divákov: Kde to je, ak je to reťazec s je uložený v pamäti spot--
Som vynaliezania tohle-- je nulová.
Profesor: Iste.
Divákov: A string t je uložený v pamäti na mieste,
ako je, 167, a potom nula sa nerovná 167.
>> Profesor: Presne tak.
OK, tak si pamätajte tento neuveriteľný zjavenie sme vysvetlili vami
minulý týždeň, že Reťazce sa v skutočnosti neexistujú?
Keď sme sa vytvoriť niečo s názvom string sme, v skutočnosti,
vytvoriť niečo, čo nazýva char hviezda.
Čo všetko, čo je, je ukazovateľ na reťazec alebo na pole znakov.
>> A tak v tomto prípade, keď som bolo na vstup M-O-M cesta
že môj počítač by ukladať ich v pamäti spätné lomítko nula, nie?
Tieto štyri znaky, znaky, by boli uložené niekde.
>> A potom tieto štyri znaky, spätné lomítko nula,
sú uložené niekde inde, nie?
Nemám potuchy, kde sa adresy sú, oni sú niekde v mojom počítači.
Ale nemyslím si, presne viem, kde sú.
>> Keď som sa vytvoriť reťazec s, všetko, čo je skutočne
je ukazovateľ na začiatok tohto reťazca.
A keď som sa vytvoriť túto hodnotu t, všetko, čo je ukazovateľ na TU.
A tak keď sa snažíte znamienko rovnosti a kontrolovať
aby zistil, či to je rovná rovná t, počítač
je naozaj len návratu do ste adresu tohto m
a adresa tohto m.
A pretože sú dva samostatné kusy dát
ktoré sú uložené v dvoch rôznych adresy v počítači,
váš počítač sa nikdy uznať ako je rovnaký.
Má niekto chcel dať šancu na to, čo sme
musieť urobiť, keď by sme chceli opraviť to a mať správny spustený program
namiesto toho?
Premýšľajte o tom, že na pár sekúnd.
Čo treba zmeniť, aby Si tento program fungovanie
tak, ako chceme, aby to fungovať?
>> Jo, chcem, aby sa bodnúť sa na to?
>> Divákov: Môžeme skúsiť dereferencia ukazovateľ a nechajte cez pole?
Profesor: To je jeden spôsob, ako to urobiť.
Takže, čo je zase Vaše meno?
Je mi to ľúto, mi pripomínajú.
>> Zee: Zee.
Profesor: Jo, tak čo Zee navrhol by absolútne fungovať.
Je to tak?
Mohli by sme dereferencia ukazovateľ a skutočne ísť a prístup
fyzikálne dáta vnútri odtiaľto.
A my môžeme len porovnať celú obrazovku.
>> Dá sa povedať, OK, ukazovateľ, daj mi, čo je vo vnútri sem.
To by vrátiť m.
A povedal by som, ukazovateľ, daj mi, čo je vo vnútri sem.
Vrátiť m.
Myslíte tie zápas?
Áno.
Potom sme ďalej.
>> Stále preštudovaní celé dva Reťazce celú cestu až do konca
a uvidíme, či to sú rovnaké, ak všetky zistené hodnoty sú rovnaké.
A ak je všetky hodnoty sú rovnaké, potom vieme, že reťazce sú pravdivé.
Určite, to je, ako by sme to urobiť?
>> Má niekto zmätený na niečo z toho?
Celý koncept how reťazcov sú naozaj len ukazovatele,
a ako sa v skutočnosti neexistujú?
A prečo sme si chyby ako spôsob, ako by sme to?
Vzhľadom k tomu, Ja vám zaručiť, chlapci, ukazovatele a pridelenie reťazec a pamäť
sa chystáte prísť.
>> Jo?
>> Divákov: [Nepočuteľné] dereferencia to, stačí dať hviezdu [nepočuteľných]
Profesor: Správne.
Takže derererence ukazovateľ prostriedky ísť na túto adresu ukazovatele
a získať dáta, hodnotu tam.
A spôsob, ako to urobiť, je hviezda ukazovateľ.
Nemýľte si to.
>> Divákov: [Nepočuteľné].
>> Profesor: Jo.
Divákov: Takže môžete len písať ak hviezda s rovná rovní hviezda t.
>> Profesor: No, no.
Nie.
>> Divákov: To nie je dosť dobrý, nie?
>> Profesor: To nie, pretože si Iba kontrola prvé písmeno.
Vy ste pravdepodobne bude potrebovať nejaký slučke, ktorá sa
prejde každý charakter v oboch reťazcoch.
Jo.
Takže ak by ste chceli len skontrolovať, v prípade, začali sa rovnakú vec,
ak, hviezda, ktorú môžete urobiť s sa rovná hviezdy t.
Potom viete, že aspoň začal s rovnakým znakom.
>> Jo?
>> Divákov: Takže cesta si, že by bolo
ako vložený pre sláčiky alebo ukazovateľ?
Profesor: Jo.
Docela veľa len pre sláčiky.
Pamätajte si, že David je uvedené v triede voľná syntaxe cukor?
A mal to veľmi mätúce vec hviezdy t
plus jedna, kde by integrovať vďaka a presuňte ukazovateľ?
Jednoduchší spôsob, ako robiť to je len t i.
>> Takže je to len pole.
Spôsob, akým by ste mať pre slučka, ktorá bežala od nuly až i, kde
i je po celej dĺžke reťazec, mohli ste práve
napísať, že namiesto toho robia Celý ukazovateľ, referenčné vec.
Takže tieto veci sú presne ekvivalent v počítači.
>> Vy ste asi nebude je potrebné vedieť, že,
ale je to dobré, aby tak nejako majú vzadu svojej mysli.
Len viem, že počítač uznáva rôzne bloky kódu
ako rovnakú vec.
Vzhľadom k tomu, to je len oveľa viac užívateľsky priateľské pre nás predstaviť, ako to je
poľa.
Je to proste jednoduchšie.
>> Divákov: Takže použiť strlen rád, get--
Profesor: Jo.
Divákov: OK.
Profesor: Dalo by sa používať strlen alebo, ak
nemal strlen môžete len urobiť up kým nenarazíte spätné lomítko nula pre obe strany.
Buď bude fungovať.
Jo.
Divákov: Takže je to na dereferencia každý Jeden znak, keď sme boli vlastne
písania tohto kódu, my mohol len robiť t aj držiaky
Páči sa mi s hviezdou pred ním?
>> Profesor: Jo, rovná sa rovná ov držiak i, a potom aj ďalej
down up, kým nenarazíte na koniec.
Jo, to je to, čo by ste urobili.
A ja skutočne budúci Príkladom, kedy sme vlastne
napísať strlen takže chlapci bude druh zo si hrať sa s ním trochu.
>> Takže je jasné, všetci len na pamäti, struny, ukazovátka, kvalita adresy?
Niektoré pojmy vyššej úrovne, ktoré ste bude pre istotu potrebujú poznať na kvízu
zajtra.
>> Dobre.
Dobre.
Jo.
OK, tak jedna vec, ktorú budeme tiež požiadať vy, ako to robíme každý rok na kvíz, je,
Predpokladám, že ste zabudli (čo zdá sa, že zabudli urobiť ročne)
, V ktorom je súbor hlavičky strlen deklaroval.
A tak musíme prepísať ju sami.
>> Tu je zoznam pokynov že môžeme prezentovať vás
chlapci kde dostanete predpokladať, že S reťazec nebude null.
Môžete predpokladať, že bude s ukončený spätným lomítkom nula.
Takže viete, že je to, čo že to bude končiť.
>> A, napríklad, že sa dĺžka Hello by bolo päť.
Takže môžete predpokladať, že ahoj bude päť, H-E-L-L-O.
Nemusíte sa domnievať, že zadok žiadny účet, pre dĺžku.
>> To posledné, čo tu, nie báť integer overflow.
Pamätá si niekto, čo integer overflow je?
>> Divákov: ide nad rámec Dĺžka [nepočuteľných].
>> Profesor: Jo, môžete vysvetliť trochu, čo to znamená?
>> Publikum: Takže, myslím, že sa vráti späť k orezávanie príklad skôr.
Ale ak máte len toľko čísel že presahujú počet bitov
že môžete skutočne priradiť že to bude len trochu odrezať.
Profesor: Jo, tak o typický počítač, koľko bitov máme?
Divákov: 32?
Profesor: Jo, 32, vpravo.
A tak to je to, čo, štyri miliardy, dvoch miliárd?
Štyri miliardy až štyri miliardy pozitívne celé čísla, že?
Dve miliardy negatívne, dvoch miliárd pozitívne,
závisí na tom, ako chcete, aby to urobiť.
>> A tak v podstate môžeme mať dosť celé čísla, ktorá môže ísť až
na dva do 31. mínus 1, že jo?
Vzhľadom k tomu, raz sme narazili dva na 32., my nie
mať toľko pamäti v našom počítači.
>> A tak, teoreticky, som by mohla prísť s číslom
ktorý je, rovnako ako, dva až 46 ..
Je to číslo obrovský-ass, ale teoreticky mohol.
A tak pretečeniu celé číslo je, ak sa pokúsite vytvoriť celé číslo, ktoré ide nad rámec
váš počítač je schopný uložiť.
>> A tak si chlapci pre tento príklad nemá
sa starať o nás dáva vám obrie reťazec, ktorý je dvakrát až 32. znakov
dlho.
To by bolo naozaj vážne.
>> Dobre, tak som len tak dať vy základná štruktúra tohto.
Budeš na vytvorenie Funkcia tzv int strlen kde
Úspešné absolvovanie, char hviezda, alebo reťazec, ukazovateľ na reťazec s názvom ov.
>> V poriadku, všetci skopírujte že dole.
Super.
Oops-- iná cesta.
>> Takže toto je niečo ako tvrdšie kus problému,
takže Dám ti chalani možno päť až Šesť minút na druhu náhly nápad
a písať túto funkciu von.
>> Divákov: Nemáme Účet pre [nepočuteľných],
nemusíme používať číslo?
>> Profesor: Nie, to nie.
Dám vám chlapci nápovedu.
Slučka while môže byť veľmi užitočné tu.
Jo.
Tu je
cukrovinky.
Candy bude tiež k dispozícii pre kvíz, myslím.
Takže vy budú všetci sladené zajtra.
Dokážete Já-- máš to.
>> Divákov: OK.
Profesor: Jo.
>> Možno, že 30 viac sekúnd alebo tak.
>> Dobre, ak ste neurobili, žiadne starosti.
Budeme prechádzať spoločne.
OK.
Takže idem len rozvrhnutie základná štruktúra pre túto funkciu tu.
Strlen Int.
Po prvé, niekto chce povedať, mi, čo to znamená int?
Musíme mať v tejto funkcii.
>> Divákov: strlen [Nepočuteľné].
Profesor: Presne tak.
Takže nech sa stane čokoľvek sem, Musíme sa vrátiť celé číslo.
A ako je uvedené v spec, chceme return--
Choď do toho chlapci, proste ďalej.
Je to všetko dobré.
Zjedz to všetko, takže nemám to vziať späť, v skutočnosti.
Int jednoducho znamená, že ste bude vracia celé číslo.
>> Čo je to char hviezda s?
Čo to znamená?
>> Publikum: Rovnako ako to, čo sa na vstupe dovnútra.
Profesor: Presne tak.
A čo je takmer to isté ako char hviezda?
Publikum: String?
Profesor: Presne tak.
Takže všetko, čo robíte, je dávať Tento ukazovateľ na reťazec.
OK.
Super.
>> Tiež nezabudnite, že ak by sme zabudnúť aby vám tieto konzoly,
nezabudnite im písať sami.
Vzhľadom k tomu, teoreticky, váš kód nesprávne, ak ste zabudli ne písať.
Len vždy venovať pozornosť.
Rovnako ako, maličkosti že si nevšimnete
keď ste programovania na notebooku, pretože váš laptop to urobí za vás?
Nezabudnite pri píšete ručne.
Jo?
>> Divákov: Ale ako chybné?
Rovnako ako, dostaneme celý problém zle?
>> Profesor: Nie, nie.
Nebojte sa.
Je to vlastne teoreticky možné pre vás dostať plný počet bodov na otázku,
aj keď váš kód bude nikdy nedôjde v reálnom živote.
Navrhujem to neskúsite aby sa to stalo.
Napríklad, keby všetko že tu je v poriadku,
ale zabudnete hrubého čreva alebo konzolu, váš kód nebude v skutočnosti spustiť.
Ale môžeme byť milosrdní.
>> Jo?
>> Divákov: Máte na komentovať na našich rukopis?
>> Profesor: Nie, nie, nie obavy o tom.
Bez komentára.
Štýl by mala byť dobrá.
Rovnako ako, nie smush všetko na jednom riadku.
Nebudeme radi s vami, ak to urobíte.
>> Má niekto chcel daj mi prvý riadok?
Tip, je to veľmi jednoduché.
>> Jo?
>> Publikum: Int, n sa rovná nule.
Stačí nastaviť čítač.
Profesor: Tak my chceme niektoré druh čítača, že jo?
Ja som jednoducho ísť pomenovať ju "počítať" kvôli čitateľnosti.
Čo chceme nastaviť rovný?
>> Divákov: Zero.
Profesor: Jo.
Bodkočiarka.
Je to tiež veľmi podivné kreslenie bodkočiarkami.
Len prax tom, že.
>> Takže chceme najprv čítač typu int.
Pretože chceme spočítať, ako Mnoho znaky alebo písmená
v tomto reťazci, že jo?
Veľmi ľahké prvý krok.
>> OK, možno trochu zložitejšie Teraz, ako sa budeme robiť tak?
Má niekto chcel daj mi riadok kódu
, Ktoré môžu byť schopní pomôcť slučky cez to, čo je to?
>> Jo, statočná duša v chrbte?
>> Publikum: OK, takže aj keď bod Hviezdičky sa jo, hviezda s,
nie je rovný nule, potom niečo urobiť?
Profesor: To je naozaj, naozaj blízko.
Naozaj blízko.
Takže budem riešiť dve veci, s tým.
Po prvé, nie je to presne nula.
Čo je to?
Je to null terminátor, čo je spätné lomítko nula.
Takže sú odlišné hľadiska toho, ako sú uložené.
Takže ty si naozaj blízko.
>> A za druhé, nechceme len posuniete ukazovateľ.
Chceme vlastne prístup k hodnotám, že jo?
A tak, ako to urobíme?
Veľmi ľahké.
Nemyslite si, že o ukazovatele, si nemyslím, že o spomienkach.
Vráťte sa do týždňa dva tohto kurzu.
>> Divákov: [Nepočuteľné].
Profesor: Ako, pamätáš?
Aké sú struny?
Ako sú uložené v pamäti?
>> Divákov: Sú aktivovaná.
>> Profesor: Sú chované.
Tak ako máme pristupovať každá postava vnútri?
>> Divákov: [Nepočuteľné].
Profesor: Presne tak.
Tak while-- čo ide dovnútra tu?
S of -
>> Publikum: I.
>> Profesor: Oh, ja neexistuje, to robí?
>> Publikum: Oh, počítať?
>> Profesor: Môžeme len používať počet, nie?
>> Publikum: Prepáč, volal som to aj.
>> Profesor: Jo, je to všetko dobré.
Máme premennú tu to je už bol vyhlásený ako náš pult.
Tak prečo nie my jednoducho použiť, že pohybovať cez while?
Dáva to zmysel?
>> Takže zatiaľ čo s o count-- niekto chce dať mi, čo sa stane po tu?
Divákov: To nie je presne.
Profesor: Does not rovnaké, nie?
Je to rana rovná, výkričník rovná,
čo vy chcete volať to nie je equal--
>> Divákov: [Nepočuteľné].
>> Profesor: Jo.
Nezabudnite jediné citácie je pre char, úvodzovky sú na povrázku.
Pri ich používaní buďte opatrní.
Takže, keď sa pozeráme skrz pole, posledný znak,
vieme, že nechceme že je backslash nula.
>> Takže zatiaľ čo.
Sme nie je na konci reťazca.
Čo chceme urobiť vnútri?
>> Divákov: Chceme pridať do počítadlo tak to počíta a navyše?
Profesor: Presne tak.
Tak tu budeme robiť počítať, počítať a navyše.
Chýba ešte jednu linku.
Už tam skoro sme.
Čo budeme robiť zabudol?
>> Divákov: Vrátenie nula?
>> Profesor: Chcete vrátiť nulu?
>> Publikum: Nie, návrat do strlen.
Počkajte.
Profesor: ktorý je uložený v?
Divákov: gróf.
Gróf.
Profesor: Presne tak.
Tak tu budeme vracať počítať.
>> Pretože to, čo sme tu robíš ultimately--
máme proti premennú, ktorá je chystá zvýšiť prostredníctvom našej reťazec.
Budeme ďalej, udržať deje okolo a okolo tejto slučky.
A keď nie sme na konci tohto reťazec, ktorý je null terminátor.
>> A zakaždým, keď prejdeme to, my pridávame do nášho pultu.
A ideme ďalej spolu v tomto poli.
A na konci, akonáhle sme hit null zakončenie,
Vieme, oh, môžeme zlomiť, vrátenie počtu.
Máme strlen.
>> Má každý dostať ako to bola realizovaná?
Kým loops-- Viem, že sme nie vykonané príliš s nimi,
ale oni sú zvyčajne Veľmi, veľmi užitočné, ak
Neviem, čo ste zastavenie podmienka nutne musí byť.
>> Otázka?
>> Divákov: Môžeme napísať null na zatiaľ čo stave?
>> Profesor: Kým?
Jo, takže v tomto probléme som mal vás chlapci predpokladajú, že to nebude mať hodnotu null.
Vzhľadom k tomu, pamätajte, teoreticky, keby som vám dal
ukazovateľ, ktorý bol príliš veľký pamäti, to by vám null, že jo?
To je to, čo prevádzkové systém by robiť.
>> Takže keď som sa ti predpokladať, s by byť null, je potrebné skontrolovať.
Tak tu hore, mali by ste robiť, keď s rovná sa rovná null, vráti jeden.
Niečo ako toto.
Divákov: [nepočuteľný] nulu.
Profesor: OK, poviem vy, prečo nemôžeme urobiť.
Vzhľadom k tomu, pamätajte na pamäti, že jo, tu.
Pôjdeme sem.
>> Máš obrie bloky pamäti všetky s mriežkami
že ukladať rôzne hodnoty, nie?
A tak všetko reťazec je-- pre Napríklad, ak my sa na vstup ahoj,
bolo by H-E-L-L-O spätné lomítko nula, nie?
A potom kto vie, rovnako ako náhodné veci, ktoré sú v tu po ňom.
>> Nemáme vlastne vedieť, čo tam je.
A tak ak ste mali urobiť miesto spätné lomítko nula,
null, nemusí byť null.
Vzhľadom k tomu, že to môže znamenať, niektoré náhodné ďalšie veci
ktoré nepatria do vašej reťazci.
A tak spôsob, akým vždy vieme, že reťazec končí so spätným lomítkom nula.
A tak to je vždy, ako my skontrolujte, či koniec reťazca.
>> Null, všetko to znamená je, ak máte neexistujúce ukazovateľ, v prvom rade,
alebo ak je tak veľký, že vaša pamäť nemôžete vrátiť, potom by to bolo null.
Takže buďte veľmi opatrní pri rozlišovaní Rozdiel medzi null
a spätné lomítko nula.
Jo.
>> Každý, kto v poriadku s tým?
OK.
>> Takže som mal chalani vypísať strlen.
Reálne môžeme tiež požiadať napíšete out A až I, pamätajte, že "Atwoa"
alebo ako vy to chcete nazývať?
Táto funkcia v Vigener a Caesar, že
prevedie ASCII hodnotu na celé číslo?
To tiež má prísť na minulých kvízy funkcií sme požiadaní, aby ste mohli napísať.
>> Skoro žiadne funkcie ktoré ste použili, a je
veľmi ľahké písať sami, Senzory páči, je nižšia,
je horná, znížiť, aby horná.
Funkcie, ktoré by previesť reťazec z malých písmen na veľké písmená.
Všetci vieme, ako to urobiť, nie?
Je to celkom jednoduché.
Len chcem, aby sa ubezpečil, že ste can-- je to rovnaký myšlienkový proces.
Práve ste iterovat a zapnete veci.
Buď počet, alebo keď odbočíte veci inak.
>> Ja by som suggest-- I neviem, či ideme
vás požiadať, aby ste zapamätať čo základnom imaní alebo kapitál Z, či malé písmená A alebo malé písmená
z sú v ASCII, ale povedala by som, že snáď napísal, že sa v prípade,
robíme.
Len tak si chlapci majú odkaz.
Rovnako ako veľké písmeno A je to, čo, 197?
A potom malá je ako 50 niečo.
65, jo, tam idete.
Takže len celkom veľa poznať Rozdiel medzi nimi je 32.
To je docela dôležité.
Jo.
Som dobrý na to?
OK.
>> Publikum: Mohli by sme teoreticky napísať nejaký
z nich sa aj na našich little--
>> Profesor: Je teoreticky mohol len skopírovať funkciu nadol.
To je pravda.
>> Divákov: Nie [Nepočuteľné].
>> Profesor: Vy máte list.
Vy chlapci majú poznámku list.
Môžete písať to.
Môžete to napísať.
Môžete robiť, čo chcete s ním.
Jo.
Takže teoreticky, ak Ak chcete, ísť na.
>> Divákov: [Nepočuteľné] ale my naozaj
nutne mať na pamäti je hodnota, môžeme len
použite na hornej alebo na nižšej funkcie, že jo?
Profesor: Jo.
Ale ak sa vám dal otázku ktorá hovorí, že písať na hornej,
potom budete musieť napísať.
Takže vy môžete predpokladať, že ste chlapci majú prístup ku všetkým funkciám,
ale ak chcete použiť na hornej alebo na nižšia, čo si tiež musíte urobiť?
>> Divákov: [Nepočuteľné] použite CS50 [nepočuteľných]
>> Profesor: Je to CS50.h?
Buďte opatrní tam.
>> Tak, aby horná, znížiť, je horná, je nižšia,
funkcie, ktoré zahŕňajú manipuláciu s reťazcami sú
všetko v rámci buď v ASCII alebo v matematickej knižnici
alebo v knižnici reťazca.
Takže ak vy používať tie funkcie, dávajte pozor, aby pamätať
zahrnúť túto hlavičku.
Tak snáď tiež niečo vás chcú zahrnúť do listu,
aké sú hlavičky?
Aké sú knižnice ste používali?
Aké funkcie sú Vnútri týchto knižníc?
Je to dôležité.
>> Jo?
>> Divákov: Mohli by sme proste Poldové a robiť hashtag
prostredníctvom absolútne každý list, ktorý sme kedy
videný ako na všetky otázky?
>> Profesor: Dalo by sa.
Ja neviem, ako šťastní budeme mať do platovej triedy
že kvíz, keď každý kus kódu je dvakrát tak dlho, ako je potrebné, aby bolo.
Ja neviem, ako by sme mohli vzlietnuť bod za štýl.
Ale teoreticky Váš code by bolo správne.
Vy ste mohol Poldové a len patrí všetko.
To je tiež v pohode, jo.
Divákov: [Nepočuteľné].
Profesor: Jo.
Navrhoval by som nerobil, že hoci.
Jo.
Divákov: cool.
Profesor: Dobrá otázka.
Publikum: Takže, najhorší scenár.
Profesor: Najhorší prípad.
Ak ste úplne zabudol, si to mohol urobiť.
Jo.
>> Jo, kód je tu.
Použil som n miesto počte, ale vás Viete, čo pláva svoju loď.
Publikum: Počkaj, takže sme nebude musieť hashtag
zahŕňajú pretože sme začína na int?
>> Profesor: Jo, len som predpokladal, že sme boli požiadaní, aby napísali funkciu.
Ak by ste chceli byť v bezpečí, vám by pravdepodobne to tam dal.
Ale ja som jednoducho nemal obťažovať, jo.
>> Ja ani neviem, či vás potrebovať knižnicu pre toto.
Vzhľadom k tomu, že ste naozaj tlač out čokoľvek alebo niečo, že jo?
Jo, ja nie chcete vedieť, budete potrebovať knižnicu.
>> OK.
To je tiež trochu viac pozdĺž línia manipulácia pamäte.
Tento druh trochu zložitejšie.
Premýšľajte o tom.
Máte funkciu nazvanú FUNC.
Mohol som označil to za čokoľvek, ale vybrať to pomenovať FUNC.
Mám ju nad mojím hlavným.
Pamätajte si, že chcete mať funkcie potom, čo váš hlavný,
si chcete byť istý, že zahŕňajú prototyp vrcholu.
>> Ale v tomto prípade to bolo tak krátka že som cítil, že som mohol len
zahrnúť ho na vrchole hlavnej.
Nepotreboval som mať prototyp, pretože je to už napísané vyššie.
Takže všetko, čo robím vo svojom hlavnú funkciu vytvára čísla x rovná 10.
Volám svoju FUNC funkcie, a potom vytlačíte niečo.
>> A potom je to vlastne čo func robí.
Vy chlapci chcú myslieť cez to.
Vzhľadom k tomu, že je to trochu zložitejšie.
Je to veľmi, veľmi zložité, v skutočnosti.
Premyslite si, čo to program by bol výstup.
Dám ti chlapci dve minúty.
>> Dobré diskusie?
>> Divákov: Jo.
>> Profesor: Jo.
Dobre, takže to je zradné z nejakého dôvodu.
A to je dôvod, prečo som chcel priviesť to každého pozornosť.
Má niekto chcel, aby mi návrh, pokus?
Čo by to vytlačiť?
Úplne v poriadku, ak sa mýlite.
Jo?
>> Divákov: Myslím si, že je to 100 a potom 10 na dvoch samostatných liniek.
>> Profesor: A 10?
Má niekto nejaké iné odhady?
Jo?
>> Divákov: Možno len preto, že 10 func sa nevracia nič?
>> Profesor: OK, tak my majú hádať číslo jedna
je to, že odhad číslo dva je práve chystá vytlačiť 10.
Má niekto nejaké iné odhady?
OK.
Takže poďme prejsť to, že jo?
Kedykoľvek dostanete kus kódu, to nie je len sa na to pozerať, a to ako,
ach, to je toľko vecí!
Som tak zmätená!
Rovnako ako, upokoj sa.
Len viem, že môžete jednoducho prehliadnuť kód riadok po riadku.
To je všetko, čo je.
Je to ako čítanie knihy.
>> Takže s akoukoľvek funkciou, vždy začať na hlavnú.
Takže budeme štart na int main prázdnote,
i programu sa Už spustiť dole, že jo?
Začnite na v hlavnom prázdnote.
Int x rovná 10.
>> Takže budem vymazať to.
Budem čerpať pamäte len tak vás chlapci môže druh vidieť, čo sa deje.
>> Pamätajte si, tu máme hromadu?
Tu hore Máme hromadiť niekde tu.
Stack vyrastie, je to tak?
A v zásobníku, budete mať sieťové funkcie, rovnako ako
všetky sieťového lokálnych premenných.
>> Tak tu, int x rovná 10.
V rámci našej hlavnú funkciu sme vytvára premennú s názvom x.
Sme nastavenie, ktoré sa rovná 10.
Tu máte nejaké x, a vy ste nastavenie, ktoré sa rovná 10, vpravo,
v hlavnej.
Všetci dobre?
>> Function.
Takže teraz, v rámci našich hlavných funkcie, voláme
Funkcie sme napísané vyššie.
Takže sme teraz zadať druhú funkciu.
Chystáme sa vytvoriť ďalšie premenná int x rovná 100.
Čo sa deje tu v zásobníku?
Čo sa stane, keď hovoríte Funkcia, ktorá vytvára nové premenné?
Čo sa deje tu v zásobníku?
>> Divákov: [Nepočuteľné] kôpky na vrchole?
Profesor: Jo.
Takže to vlastne vytvorí kópiu.
A to druh pilotmi na vrchole.
Myslite na stack-- stoh kníh, stoh čokoľvek.
Pilotmi na vrchole, najprv v poslednej out, posledný dnu, prvý von.
>> Takže to bude vytvoriť x sem.
>> To bude mať všetky funcs premenné.
Skvelé.
Takže teraz máme dva rozdielne x, že predstavujú dva veľmi odlišné veci.
Potom budeme tlačiť out celého čísla x.
Takže poďme tlač 100, nie?
Pretože tu je to 100.
Takže to je prvá vec, že to bude tlačiť.
Pretože táto funkcia vracia nič, Teraz táto funkcia, že linka v hlavnej
hotovo.
Všetci dobre so mnou tak ďaleko?
>> Takže teraz sme cez dve zo tri riadky z našich hlavných funkcií.
Teraz ideme do tretieho radu.
Ideme do printf.
Čo je to x v hlavnej?
Čo to predstavuje?
>> Aká je hodnota x teraz?
>> Divákov: 100.
>> Profesor: Je to 100?
Divákov: Still 10.
Profesor: Still 10.
Jo.
Vzhľadom k tomu, pamätajte, že v rámci náš func, x sa rovná 100.
Ale ak sa vrátime späť na našu hlavnú funkciu,
že premenná je uložená v iné miesto na našich zásobníka.
>> Takže teraz musíme ísť späť do hlavný zásobník, sieťový lokálne premenné.
A tu x je rovné 10.
A tak sme sa chystáte vytlačiť 10.
>> A tak mala úplnú pravdu.
Budeme mať výstup 100 a 10.
Jo?
Divákov: Keď malloc, je to haldy alebo zásobníka, ktorý je [nepočuteľný]?
Profesor: Keď malloc, Užívate pamäte z haldy
a ich prideľovanie.
Takže nemáte bordel s nič z toho.
Takže myslím, že väčšie jedlo so sebou Tu je niečo, čo nazýva priestor.
>> Pre tých z vás, ktorí boli na relácie v noci recenziu,
sme sa bavili o tom krátko.
Rozsah určuje, ako a ak existujú vaše premenné.
Alebo v akej rámy Do vášho premenné existujú.
>> Celkom veľa pravidlo všeobecne je Vaša variables-- ak ich vytvorenie
vnútri kučeravé braces-- existujú iba vo vnútri týchto zložených zátvoriek.
>> Tak napríklad v našej funkcii func, vidíš tie dve vzpery.
Ak vytvárate niečo vnútri nej,
šanca je všetko, čo robíte, je vytvorenie stack a ukladanie, ktoré tam.
To isté v hlavnej.
To je jednoducho uložený vo vnútri hlavnej.
>> Tiež chcete byť veľmi, veľmi opatrní.
Pretože pôsobnosť tiež požičiava samo o sebe na rôznych príkladoch.
Tak napríklad pre slučky, pre int i = 0.
Aj je nižšia ako, neviem, 10.
Aj s a.
A máte kód vnútri o tom, že jo?
>> Kde sa táto premenná, i, vlastne len existujú?
Iba vo vnútri si na slučky.
Tak som sa staviť, mnoho z vás má Pravdepodobne sa stretol túto chybu, keď
robíte programy vo vašich psets.
Koľko z vás sa pokúsili použiť aj mimo cyklus for a mal chybu?
Ako neexistuje odkaz celých čísel alebo niečo také?
>> Dôvod, prečo sa to stane Je tomu tak preto, že si tu
vytvorenie niečoho, že len existuje vo svoj pre slučke.
A ak sa pokúsite ho použiť, aj nie skutočne existujú mimo neho.
Takže v podstate počítač hovorí, ja Neviem, o čom hovoríte.
Všetko, čo viem, je, že som bol tu, ale teraz už nie.
>> Takže ak by som mal vytvoriť pre sláčiky vnútri, nie?
A budem vytvárať iný, ako int j, a mať to urobiť čokoľvek.
A máte kód vnútro že slučka, j existuje len tu.
Ale existuje aj vo vnútri aj.
A tak j existuje iba vnútri to pre sláčiky,
zatiaľ čo ja existuje v celej veci.
>> Všetci jasné?
To isté sa podmienené príkazy Ak chcete vytvoriť čokoľvek.
To isté s cyklami while pokiaľ Ak chcete vytvoriť čokoľvek.
To je niečo, čo sa veľmi, veľmi opatrní.
Takže to bol naozaj dobrý problém v pocit, že preukázala dve veci.
Je preukázané, ako prvý, rozsah.
A preukázal Tiež alokácie pamäte.
Vzhľadom k tomu, vy by mali vedieť, že funkcie rastú smerom nahor v stohu.
A že keď zavoláte funkcie, budete vytvárať
v podstate nový zásobník pamäte.
To je veľmi odlišná od aké sú vaše sieťové pamäť.
Jo.
Páni!
Každý, kto v poriadku na to?
To bolo mätúce.
Veľmi dobré témy prejsť, pretože ste pravdepodobne
dostane trochu zradné veci, ako že na kvíz.
Jo.
Super.
Dám vám 100 na jeden línie a potom 10 na strane druhej.
Jo, veľmi dobré.
>> OK, teraz vy dostanete šancu byť TA.
Dostanete sa odpovedať na všetky krásne e-maily, ktoré som sa niekedy dostanú.
>> Takže, Vážení Andi, vidím, myslím, že je niečo zle s mojím kompilátorom.
Som si istý, že môj kód je správny, ale Dostávam chybu segmentácie
zakaždým, keď som bežať.
Čo sa deje?
Prosím, pomôžte, veľa lásky.
>> Ak vy niečo podobné že ako by ste reagoval?
Sú to vlastne veľmi časté otázky, budeme vás požiadať, aby ste.
Je-li, vám dám scenár, dáme nám
váš najlepší odhad na to, čo sa deje.
Každý, kto má osteň na to, čo sa deje?
Jo?
>> Divákov: Možno, že dereferenced null, niečo ako ukazovateľ
ukazuje na niečo null.
Profesor: Jo, to by byť Príkladom, kedy že sa to stane.
Ale čo je to väčší obrázok o tom, čo sa tu deje?
Divákov: Je to, že sa snažíte prístup k pamäti, že nie ste
má mať prístup k?
Profesor: Presne tak.
Takže myslíte, že na poruchy seg, off Limity, obmedzený priestor v pamäti
že by ste nemali dotýkať.
>> Takže celkom veľa, keď sa snažíte k index--, ako je napríklad
ste deklaroval array od nuly do deviatich.
Ale skúste sa dotknúť, že 10. hodnota, nemáte prístup k tomuto.
Vzhľadom k tomu, ste nie je deklarované to.
A tak váš počítač sa deje pozrieť sa na to byť ako,
uh oh, sa snažíte ísť mimo hranice indexu.
Budem vám chyba segmentácie.
>> Myslite ako segmentu, nie?
Extra segmentu, je porucha Pri pokuse o porušení niečo
a nemali by ste tam byť.
Porucha Segmentácia je kedykoľvek skúste sa dotknúť vecí
že by ste nemali dotýkať.
>> Takže bežné príklady sú index.
Samozrejme, ak sa snažíte dotýkať sa, že bol null,
že by tiež fungovať rovnako dobre.
Ak je váš ukazovateľ sa snažia dotýkať sa veci, ktoré by nemali dotknúť,
ktoré by tiež mohli fungovať rovnako dobre.
Väčšina zvyčajne budete vidieť v matici.
Všetci dobre?
>> Divákov: Takže ak chcete prístup 10. bod
a tam je len limit deviatich alebo tak niečo.
>> Profesor: Jo, presne tak.
Celkom veľa.
Super.
>> Váženie Andi.
Takže máme tieto podivuhodné veci volal druhy.
Ak Zlúčiť sort-- ako my píla v príklade, keď
David urobil celý vec class-- prečo,
ak je to tak oveľa rýchlejšie než niektorý z ďalších druhov,
prečo ešte obťažovať s vedomím ktorúkoľvek ďalšie druhy?
>> Čo je táto otázka skutočne po vás?
Čo je to tri word--
Divákov: Čo je trade-off?
Profesor: Presne tak.
To je to, čo otázka sa pýta.
Čo je trade-off medzi Zlúčiť druh verša inými druhmi?
>> Publikum: berie na pamäti, že jo?
>> Profesor: Páči sa vám vysvetľujú, že trochu viac?
Najprv si vysvetlíme Zlúčiť obchod.
Ako Merge sort funguje?
>> Divákov: Tak to funguje tak, že delenie všetko do polovice
a potom ju dať dohromady a prerozdelenie to v poradí,
ako zakaždým, keď zlúčenie sady.
Profesor: Tak nejako.
Takže môžem čerpať na to, ale to by trvať mi päť minút čerpať ju von.
Pozrite sa späť na sekciu snímok kde sme pokryli merge sort.
Presne tak.
>> Takže spôsob, ako zlúčiť triedenie diela to je rozdeľuje veci na polovicu,
a potom to proste vyzerá u Prvý hodnoty všetci
a zoradí nielen to.
Neustále vytvára nové pole a kladie veci stále viac a viac v poradí.
A tak keď to je naozaj, ale naozaj rýchlo, pretože it's-- viete,
binárne vyhľadávanie je n log n.
Budete vytvárať toľko rôzne polia, ktoré ste nablízku
pomocou obrovské množstvo pamäte.
A tak aj keď je rýchlejší, obchod off Tu je, že používate viac pamäte.
>> A tak, náznak, druhy a vyhľadávanie boli pokryté oveľa viac v tomto roku
než tomu bolo v rokoch minulých.
Vy ste mali vidieť, že odráža zodpovedajúcim spôsobom na kvíz.
Rozhodne by som tráviť čas ísť nad tým, čo všetko z rôznych druhov
sú, ako binárne vyhľadávanie, ako lineárne hľadanie práce.
Ako možno pseudokód kódu tých von.
Aké sú prevádzková doba?
Niečo ako beh doby je veľmi ľahko kopírovať dole na poznámkový hárok,
v poriadku?
>> Je to naozaj ťažké, keď ste v stredu testy
a vy budete musieť prísť na to von.
Skopírujte ho dole.
Ja vám zaručiť, že ste bude vedieť, že.
Aké sú kompromisy?
V najhoršom prípade, najlepšom prípade scenára pre všetky z nich, veľmi poznať.
Jo?
>> Divákov: Potrebujeme, aby vedieť, ako sa kód merge sort?
Rovnako ako, potrebujeme pamätať rekurzívne?
>> Profesor: Veľmi o tom pochybujem, len pretože je to ako celkom komplikovaný.
Ale to nemusí byť neuskutočniteľné, keby sme požiadať, aby ste používali pseudocode to.
Jo.
>> Jo, OK, ešte jeden.
To môže prísť v ste posledný kus za chvíľu.
Jo?
Vari všetci počuť, že?
>> OK, tak do značnej miery prvý všetci, aký typ programu
bude vám dáva výkon, ako je tento?
Nezabudnite vás žiadal, aby sa dozvedeli o Tento nový typ ladenie nástroje?
Aké bolo meno jeho?
Valgrind, pravá
>> Bol to program, kde sa dalo nazvať, ktoré by mohli
Sledujte všetky pamäte, ktorú ste použitie vo vašom programe, a sa deje.
Takže ak máte niečo, ako: definitívne stratil, 40 bytov v jednom bloku.
Pravdepodobne nie ste spomenul si na to uvoľniť.
Vzhľadom k tomu, ak používate bajtov pamäti, to znamená, že ste si prístup, že pamäť,
ale vy ste neboli schopní oslobodiť.
Takže chcete, aby sa Uistite sa, že to tiež
pomocou free-- to je function-- oslobodiť všetky
pamäti znovu pridelený podľa malloc.
>> Super.
Takže tejto snímke, budem mať to.
Je to všade v mnohých prednášky, v mnohých sekcie snímok.
Naozaj chcete, aby sa ubezpečil, jednoducho viete, toto všetko.
Buď v poznámke liste, alebo ak ste Chcete ho pamätať, neváhajte.
To je naozaj, naozaj, naozaj dôležité.
>> Tiež veľmi dobrý otázka, ktorú môžeme pýtať.
Prečo je pohľad Selection sort-- na Výber sort-- všetky runtimes
n sú na druhú.
Bez ohľadu na to, ako sa zoznam príde vy ako, tak prečo je výber sort--
Dám vám chlapci 30 Druhá premýšľať o tom.
Vzhľadom k tomu, je to trochu mätúce.
To so sebou nesie určité koncepčné myslenie.
Prečo by dobu chodu byť rovnaké v ako najhorší a najlepší prípad scenára?
>> Jo?
>> Divákov: Vzhľadom k tomu, Selection sort každý poloha alebo priestor v tomto malom poli
vec alebo čokoľvek iného.
Takže aj v najlepšom prípade, aj keď je to úplne radené,
to by ešte byť ako, OK, jeden.
V mojom prvom mieste mám jeden.
A prejsť všetky z nich.
OK, jedna je najmenší.
A potom to ide znova a je ako, OK, dva
je najmenší zo všetkých vecí.
Ale to ešte musí skontrolovať každý a každý.
Profesor: Jo.
Tak napríklad, povedzme, Máme zoznam, už je zoradený,
poľa jedna až päť.
Spôsob, akým výberu druhov je, že prechádza, kontroluje aj týchto dvoch.
Potom sa skontroluje tí dvaja.
A potom to kontroluje a kontroluje.
Udržuje kontrolu všetkých z nich, bez ohľadu na to, či
je to vlastne zoradené.
Vzhľadom k tomu, že je to jednoducho spôsob, akým sa triedenie funguje.
>> A tak táto otázka je niečo ako koncepčné otázka, budeme pýtať.
Tam, kde ako prvý, aby ste viem, aké pre výber
je, právo, aby bolo možné odpovedať na otázku.
Musíte byť schopní porozumieť koncepčne, čo sa deje.
A potom môžete použiť, a premýšľať, OK poďme si predstaviť najhorší možný scenár.
Všetci sú v zostupnom poradí.
Ako by to mať vplyv na to?
>> Čo ak je to vzostupnom poradí?
Ak je to už je zoradený?
Ako by to vplyv na dobu chodu?
A potom Selection sort, zistíte, že nie je v skutočnosti nezáleží.
Vzhľadom k tomu, máte kontrolu všetky hodnoty bez ohľadu na to, čo sa deje.
>> A tak dobré veci na pamäti.
Prečo niektoré druhy sa líšia od ostatných a ako najlepšie a najhoršie prípad,
by mohli ovplyvniť všetky z nich.
>> Budem naozaj hit v druhoch pretože to bude na kvíz.
Jo.
OK.
K dispozícii je šesť minút zostáva.
Dokážem sa tri minúty otázok.
Môžem tiež poflakovať pre rovnako ako 20 minút po oddielu
Ak chcete klásť otázky rovnako.
Má niekto proste naozaj krátky otázky alebo koncepčné otázky
sú nejasné, práve teraz?
Jo?
>> Divákov: Môžeš hovoriť trochu niečo o bitové operátorov?
>> Profesor: Jo.
Takže bitové operátory sú niečo, čo pravdepodobne
Možno len chcete dať na svoj list.
Tak quickly-- Nechcem ísť do hĺbky príliš veľa
pretože Harvardu, v ich preskúmania sedenie, to skryl celkom dobre.
Bitová operátor, je tu päť z nich, že jo?
>> Tam je to, čo je x alebo funkciu, tam je ampersand, ktorý je a.
Pipe, ktorý je, alebo.
A potom máte dve rôzne druhy smien.
>> Keby som vám dve hodnoty, pokiaľ je to Dám vám, ako je, jedného a jeden.
Čo by to vyhodnotiť?
Ak dám vám pravda a pravda, pravda?
Čo pravdivé alebo nepravdivé?
Stále platí, že jo?
Vzhľadom k tomu, že to či.
Budeme s najväčšou pravdepodobnosťou vám čísla.
Takže pamätajte, že človek sa rovná pravda, nula sa rovná false.
A mohli by sme dať tieto veci a požiada vás, aby nám povedali, čo sa stane.
Harvard pokrýva ju počas prvých 10 minút svojho študijného zasadania
naozaj, naozaj dobre.
Takže vy chcete, aby istí, že sa pozriete späť na to.
>> Publikum: Je pisa5 Bude na kvíz?
PROFESSOR: Nie.
Ani sa na pisa5 práve teraz.
Je to ťažké.
Len to ani neobťažoval pri pohľade na pisa5.
>> Avšak, ako niektoré rady a návrhy, ja
by naznačovali, začnete pisa5 akonáhle test je u konca.
To bude najťažšie týždeň, ale potom chlapci
bude odovzdaná to na kopcoch z Rolling Green a šteňatá,
a je to v poriadku.
>> Táto trieda dostane významný jednoduchšia po piatom pset.
Publikum: Úradné hodiny sú nedele, pondelok?
Profesor: Jo, takže úradné hodiny bude nedele na pondelok na pset.
Úradné hodiny dnes večer v podstate bude len hodnotený kvízu.
Ak chce niekto prísť a opýtať sa TAS otázka, budeme tam.
>> Vezmem si možno ešte jednu otázku ak má niekto otázku?
Jo?
Divákov: Keď ste definujúce uzly, [nepočuteľných]
ak poviete uzla hviezdy a potom ďalšie, robí automaticky počítače
pochopiť, že ste s odkazom na iný ukazovateľ?
>> PROFESSOR: Nie.
>> Divákov: Musíš znovu zostaviť to [nepočuteľných]?
>> Profesor: Takže v podstate struct uzla je, pamätajte,
je to ako by ste vytvoriť uzol a potom máte ukazovateľ s názvom ďalšie.
Všetko, čo robíte, je s štruktúra tam.
Musíte priradiť že ukazovateľ niekde.
Takže počítača nie je viem, čo to ešte robí.
Musíte skutočne priradiť, keď ste vytváranie prepojeného zoznamu.
A to je to, čo hlavne pset 5 bude ďalej.
Takže žiadne obavy o nič z toho práve teraz.
>> Divákov: Tak my nemusíme príliš sústredí na zozname odkazov, len
všeobecné koncepcie?
>> Profesor: Len do značnej miery komíny, frontu, odkaz zoznamy, stromy, hashovacie tabuľky.
Len mať možnosť spoznať, čo sú.
Nebudeme sa opýtať vám nič konkrétneho páči
preto, že sme sa naozaj urobil pset, že sa vzťahuje na nič z toho doteraz.
>> Takže v posledných dvoch minútach pred Ja vás oslobodí zabiť tento kvíz.
Celkom veľa, rovnako ako, premýšľať o tom, ako ďaleko ste chlapci prišli v tejto triede.
>> Spomínam si, keď sa dvaja týždeň tejto triedy, niektorí z vás
trávia tri hodiny písania vodu.
Ako dlho by trvalo, než si chlapci písať vodu teraz?
30 sekúnd, možno?
Premýšľajte o tom, ako moc vy ste sa naučili.
CS je naozaj, naozaj ťažké tému.
Niet pochýb o tom.
Je to ťažké, to je dôvod, prečo nikto študuje.
Je to jednoducho ťažké.
A je to úplne v poriadku.
>> A som naozaj hrdý, že každý robil to tak ďaleko.
Psets nie je ľahké.
Berú veľa času.
Vy chlapi, nikdy vás požiadať, aby ste napísať hra 15 alebo Vigener na pset.
Nie je potrebné len vyšilovat o tom.
Všetko, čo testujeme tu je zhodnotiť Váš konceptuálne vedomosti, ako aj
ako niektoré z vašich základných zručností kódovania.
Test je navrhnutý tak, aby byť naozaj náročné.
Rovnako ako, že je navrhnutý tak, pre vás dostať 100.
Je určený aj pre vás pravdepodobne nebude môcť dokončiť za 75 minút.
A to je úplne v pohode.
Som študent sám.
Ja viem, ja neznášam, keď som chodiť z kvíz vyzerať, hovno.
To bolo naozaj ťažké.
Asi to, čo sa deje na happen-- a to je úplne v poriadku,
Hovorím vám chalani práve teraz.
Prostriedky na týchto veciach nie sú vysoké vôbec.
>> A pre tých z vás, ktorí Boli stále, rovnako ako,
trojky na Váš problém súpravy, to neznamená, že ste
bude mať 60 percent v tejto triede.
Ak sa dostanete 60% na kvíz, ktorý nemá
znamenať, budete dostať D v tejto triede.
Vidíme, hlavne ja, pre tých z vás, v mojej časti,
Vidím, ako ťažké vy všetci pracujú.
A ja som sledovať to.
>> Vy bude v poriadku.
Neexistuje žiadna inštitucionálnu pamäť šťastie na konci semestra.
Pretože všetky deti Harvard hovoria ich priatelia, oh, budete v poriadku.
Nikto vám hovorí, že chlapci tu.
Takže musím vám povedať, že chlapci tu.
>> Vy bude v poriadku.
Som tak hrdý na všetkých z vás.
Skúška bude ťažké.
Štúdia na to, a potom proste vyhodiť.
Pripravte sa učiť nové veci.
A jesť sladkosti.
Máme veľa cukroví.
>> Doprajte si dobrý nočný spánok.
Nenechajte spať, pretože to by bolo naozaj zlé.
CS je veľa logiky.
Ak nechcete spať, nemôžete fungovať, a váš mozog nemôže fungovať.
A ja budem tu pre ďalšie 20 minút, ak niekto chce poflakovať.
Vy sa chystáte ju zabiť.
Veľa štastia.