Profesor: Dakle, program za ovaj tjedan, ne toliko stvari. Ali nadamo se vrlo, vrlo korisno i relevantne za vas momci ovog tjedna. Ali ćemo provesti možda 15, 20 minuta samo brzo govori o popisu veza. Link liste idu biti pokrivena na kvizu. Dakle, možda bi bilo vrlo korisno kako bi naučili nešto o čemu se radi. Ćemo provesti velika Većina današnje sekcije prelaženju kviz nula praksi problema. A onda ćemo uštedjeti možda 20, 30 minuta na kraju za sve zaostalih pitanja tko ima. A onda, posljednji pet minuta, idem dati napumpati govor za kviz. Vi svi žele biti ovdje za to. Budući da će to biti dobar put. U redu, tako da su neki Materijal na popisu veza. Kako oni obično ste strukturiran je imate ono što se zove čvor, zar ne? Imaš ove stvari zove čvorovi, koji su konstrukt. Ja ću ići preko kako stvoriti čvor u sljedećem slajdu. No, u biti svi povezani Popisi je podatak da je je nanizati putem upućuje. I tako je prednost smo pomoću popisa povezani preko, Možda, kao što su niz je činjenica da je u nizu trebate jedan granični blok memorije sve na istom mjestu, jedan drugom, da bi mogli imati to. Dok popisu povezani, što bi ima slučajne male komadiće memorije cijelom računalu nanizani zajedno upućuje. I na ovaj način pristup informacijama koji dolazi jedna za drugo, nakon druge bez potrebe samo ogroman komad Memorija u računalu negdje. I tako to je jedan od glavnih Razlozi zašto mi koristimo popis poveznicu. Drugo, to je vrlo lako za dinamičko veličinu popisa veze, jer u nizu, kad proglasiti niz, imate određenu zadanu vrijednost. Recimo ja sam htjela napraviti niz od 10 brojeva. Ja stvoriti niz od 10 cijeli brojevi, i to je to. To je 10. Ne znam što učiniti nakon toga. Ako sam htjela da ga 11, ne mogu to učiniti. Ako želim da on 9, ne mogu to učiniti. Dok je u popisu linkova, možete dodati i brisanje i umetanje gdje god želite. Ti dinamički promijeniti veličinu svoje struktura ovdje, svoju strukturu podataka. I to nam daje mnogo više dodaje fleksibilnost da mi ne obično imati s polja. Svatko zbunjeni na osnovni Struktura kako popis veza ili zašto moramo koristiti jedan preko niza? Da, mi ćemo ići preko detaljno kako zapravo stvoriti. No, to je samo vrsta opći osjećaj upravo sada. Cool. I tako su polja nanizati tih lijepim malim stvarima nazivaju čvorovi. Sve čvor je je tip Struct. Zapamtite, struct je ako ste htjeli stvoriti određeni tip varijable u C koji već ne postoji, što, kao programer, zapravo može napraviti da se sami. I tako je ova vrsta podataka struktura se naziva čvor, je zapravo stvoren od strane nas, da ne postoji u C na vlastitu. A način na koji vas stvoriti jedan je imate zaglavlje typedef STRUCT, koji govori prevodilac ja sam o stvaranje struct. Idemo ime je "čvor". I unutar ćemo proglasiti varijablu u, koja će se pohraniti vrijednost. I onda mi također ćeš su pokazivač zove "Sljedeći" koji ukazuje na sljedeći čvor u popisu linkova. I onda završiti da je off po samo ponavlja čvor opet tako prevodilac zna, u redu to je kraj moje Struct. I tako na ovaj način, mi smo vrsta stvaranja slatka mala niz vrsta stvar s vrijednosti i sa pokazivačem. A možete ih povezati sve zajedno s tim upućuje. Tako da svi oni mogu biti ljubazni nanizani zajedno u lancu. Cool. Čujete li da su malo bolje? PUBLIKA: Da. PROFESOR: U redu. Tako je način na koji, kao što vi vidite, tipičan popis veza je strukturiran je imate glavu. Imate vrijednosti glave koja nije se ukazao na bilo koji drugi pokazivač. Ali to će ukazati na, ili referenca, još jedan čvor. Čvor nakon odlaska na referentni čvor nakon toga, i tako dalje i tako dalje dok na kraju hit kraj tvog popisa linkova. A ti jednostavno neće imati pokazivač tamo. I tako, mislim kao, na lancu, ili čak ako bilo koji od vas dečki napravili, ne znam, kao s voćem Loops kad ste bili mali. Ti bi niz ih zajedno i nositi ih oko vrata. Mislim da je točno istu stvar. Imaš ove sitnice koje može string zajedno da ukazuju na jedan Nakon toga, na jednom nakon to, i tako dalje i tako dalje dok imate lanac od strukture podataka koje možete koristiti kako god želite. Tako je način na koji to bismo obično umetanje ili brisanje bilo koji čvor s vezom Popis je vrlo različita ovisno o tome gdje da čvor. Tako je, na primjer, zbog toga pokazivače su uvijek pokazujući na određenu vrijednost, kada izbrišete ili umetnite čvor, Želite li biti sigurni da je pokazivač je sve ukazuje na prave stvari. Dakle, ako ste htjeli potencijalno umetanje novi čvor u vrijednosti od jedne unutar sortiranog vezu Popis, svi znamo ovdje sa slike koja će ići između glave i dva, zar ne? Jer on odgovara upravo tamo. No, način na koji bismo to je najprije dereferencing pokazivač od glave i slanje to jednom. Ali smo došli u problem ovdje. Može li itko vidjeti u čemu je problem je ako smo prvi dereference pokazivač od glave do jednog? Ono što je problem možda naletimo ako pokušamo da biste dodali ovaj ispred naše ponude? PUBLIKA: [nečujan] PROFESOR: Točno. Dakle, ovdje imamo pokazivač koji je bio jednom pokazujući od glave do dva. Ali, ako ste dobili osloboditi od koje pokazivač, možete ga usmjerite na jednu, sad nemam pojma gdje ići kako bi pronašli dva. Jer kao što sam rekao prije, imaš div komad memorije na računalu. Svi ovi čvorovi mogli se slučajno mjestimice u bilo kojem mjestu u vašem računalu. I ne znam kako ići o pronalaženju toga. I tako, morate imati pokazivače ukazujući na sve čvorove na kraju. Inače, ako ste slučajno dereference jedan bez prvog zauzimanja vrijednost Prvo, ti si Samo će izgubiti sve poslije. Pa što ćemo to je, što bi prvo želite stvoriti pokazivač na čvor želite umetnuti. Usmjerite ga na mjesto gdje želite umetnuti na, a onda nakon toga ti mogao ukazati glavu jednom. Znači li to da smisla svima ovdje? Veliki. Razmislite o tome što baš poput lanca. Ako dodate lanac, to je vrsta intuitivno Kako ćeš ići o umetanju to. U redu, tako da je zapravo mnogo kraće nego što sam mislio da će to biti, pet minuta nagovaranje na veze listama. Samo da ti dečki imaju Osnovna ideja što je to. Ovdje imamo plan za kviz nula. Ne dopustite da vas ovo zastrašiti. Znam da je puno informacija. To izgleda vrlo zastrašujuće. To je također puno, ja mislim, CSC vrsta uvjetima. Stvari kao heksadecimalni žice, pokazivače, dinamička memorija izdvajanja vrlo zastrašujuće zvuče uvjeti. Ali mi ćemo ih razbiti dolje, napraviti neke probleme prakse tako da vi svi su spremni za ovaj test. Koliko od vas ima Već je počeo studiranje? U redu, vi vjerojatno želite za početak početak na to, jer kviz je sutra. Ili četvrtak za neke od vas. Da, pa ćemo ići preko neke probleme prakse. Ako vi svi žele uzeti iz lista papira, olovke. Ćemo samo provesti Velika većina današnje sekcije ide preko neke da tako vi imate ideja o tome što možete očekivati ​​na kvizu. U REDU. Par logističku Detalji kao i za bilo koga koji nije bio na tom linku ima, ako idete cs50.yale.edu, na prednjoj strani ovu stranicu tu je link koji kaže: "O Quiz Zero". Link vas vodi tamo. Ako niste ga čitati, pročitajte ga. Zato što vam govori stvarno važno informacije o kvizu. Ću povući ovu iz da samo zato, fizički, Ako vi ne znate gdje ići ćemo imati problema. I tako, ako vaš posljednji u pogledu s do N, idite na Pravnom fakultetu dvorani. A ako vaš posljednjih počinje s P do Z, otići Davies dvorani. I to vrijedi samo za ljudi u odjeljku srijedu. Ako ste uzimajući kviz o Četvrtak, idete na SSS 114 gdje vam Predavanje obično je. PUBLIKA: [nečujan] PROFESOR: O do Ž, idete ići u Davies dvorani. Idem to promijeniti, zar ne? Oh, da, samo uspjeti automatski. O da, to je što Christa. Da, moja loša. Da, o do Z, idete ići na Davies Auditorim. Idem popraviti ovaj put sam upload. Da. A onda i nešto važno umu je da je u srijedu, ako ste i službeno upisani u odjeljku srijedu, morate uzeti kviz u srijedu. A ako ste upisani u četvrtak, morate uzeti kviz u četvrtak. I to je za vrijeme nastave. Gdje, mislim da je to u 1:00 Dva i 15 srijedom i 2:30-četvrt do četiri četvrtkom. Ako imate nepomirljiva sukoba, Dekanova isprike su jedina stvar, nažalost, možemo uzeti. Budući da smo imali Velika većina zahtjeva prebacivanje od srijede do četvrtka. Što ne možemo poštovati, osim ako Imamo dekana zahtjev. U REDU. Dakle, prije nego što smo dobili počeo na Nekoliko problema prakse, Samo ću ići preko Andy korisne savjete za uspjeh. Vi, kad ste studirati, stvarno Želite vježbati pisanje koda rukom. Prvi put sam ikada uzeo CS kviz, nisam imao praksa pisanja koda rukom prije i to je bio iznimno šokantne kako teško bilo. Kad vi ne ući u Navika upišete sve, dolazi vrlo prirodno se mogli su automatski dovršiti zagrade i zarezom tamo. Kada ga napisati rukom, ponekad je vrlo, vrlo lako zaboraviti zarez, ili zaboraviti zatvoriti nosač, ili zaboraviti zatvoriti dvotočku, ili nešto slično. Dakle, kada pišete koda rukom, to je vrlo različito osjećaju. Tako da dečki, kada radite kroz neke od problema prakse, bilo bi dobro da se stvarno praksi danas. Ili sutra, pretpostavljam, ako ste uzimajući kviz u četvrtak. Drugo, mi smo posljednji, kao što je, osam godina vrijedi prakse kvizovi online. Ovogodišnji kviz će vjerojatno biti vrlo, vrlo sličan za sve njih. Oni su svi vrlo slični. Vi vrsta dobiti u Stil tipa pitanja da pitamo, tip Funkcije da ćemo ga pisati u, i tako dalje, i tako dalje. Tako se praksa kvizove, pogotovo pod vremenskih ograničenja. 75 minuta za napraviti kviz je Nije puno vremena. To je vrlo, vrlo dugo. I tako ti dečki stvarno želite kako bi bili sigurni da su ti dečki su u naviku pisanja kod rukom brzo. Zato što ne želim prvi vrijeme da se vidi kviz tog duljine biti na kvizu. Vi stvarno želite da biste bili sigurni da vježbate prije. Četvrto, želite pregledati Predavanje i sekcija slajdova. Ne morate zapamtiti stvari. Zapravo, svatko je dopustio jedan list bijelog papira bilješke, sprijeda i straga. Vi možete upisati ili pisati. Ako vam se trebaju pamtiti ništa, stavi ga na taj list. Jamčim ti, ti ne želiš biti zaglavi u sredini tog kviza se kao, oh yeah, što je Runtime ove vrste u odnosu na takve vrste. Samo stavite ga i kopirajte ga ravno iz vašeg bilješku list. Tada zapravo možete samo koristiti mozak razmišljati o problemima umjesto da prisjetiti činjenice. I tako stvarno iskoristiti bilo niša detalja koje mislite da trebate zapamtiti, buć ga na pregled list. U redu, bilo kakva pitanja logistički u vezi kviz Prije nego što počnemo neke kviz problemi vježbati? Da? PUBLIKA: Nisam imao prilike gledati na kvizu [nečujan] ali to će biti Aplikacija najčešće, ili se tu će biti, kao, pitanje znanja? Profesor: To je puno. Dakle, način na koji sam bi opisao kviz is-- sam staviti zajedno neki problemi praksa da sam izvukao iz svih kvizova. Ali vidjet ćete da ima dva glavna vrste pitanja ćemo vas pitati. Jedan od njih je vrlo niska razina detalj stvari. Mi ćemo vam dati mali komad koda i reći, postoji pogreška ovdje? Što bi se ispisuje ovdje? Ono što će ovaj kod proizvodnju, i tako dalje. Tako da vrlo niska razina detalja informacije. I na flip strane, imat ćemo vrlo visok stupanj pitanja znanju. Možete li objasniti što Razlika između binarnog pretraživanja i linearni pretragu je? Zašto bi želimo koristiti jedan nad drugim? Možda, što je GDB? Zašto mi želite koristiti GDB? Viša razina, više temeljna Razumijevanje pitanja. Tako ćete vidjeti mješavinu njih dvojica na vašem kvizu. Sve ostalo prije nego što ravno u nju? U REDU. PUBLIKA: Još jedan. PROFESOR: Oh, još jedan. Oprostite. PUBLIKA: Da, to je u redu. Pa što govoriš 75 minuta se prekratak, kao što je to malo vjerojatno da ćemo završiti? Ili, kao što su, 75 minuta je točno onoliko vremena kao što bi nam je potrebno ako smo bili odgovarajući način pripremiti? PROFESOR: U redu, tako da je kviz je izazov. To je svakako izazov. Naći ćete se na kratko vrijeme. Vjerojatno ćete pogoditi, kao što su 10, 15 minuta da ide, i biti poput, govno. Imam toliko toga ostalo za učiniti. I to je sasvim u redu. Svatko će se osjećati na isti način. Samo budite vrlo svjesni koliko vremena imate. I tako to je razlog zašto sam vam reći Dečki to praksa kvizova. Zato što stvarno daje veliki osjećaj o tome što je kviz će biti slično. Dakle, ako vam se bude mogućnosti završio praksu kvizovi u dobrom iznosu od Vrijeme, možete koračati sami dobro, onda nećete imati problema u srijedu ili četvrtak. Cool. Dakle, ako svi wants-- mislim većina ljudi ima listove papira iz već. Idem u biti samo dati uzorak pitanja, dati vam dečki, slično, nekoliko minuta da ih učiniti. A mi ćemo ići preko kao klasa ono što su odgovori na njih. Dakle, to je vrlo tipično rano je pitanje što ću vas pitati, samo pretvoriti Brojevi između različitih baza. Binarni, što vi možete Podsjetimo, je baza dvije. Decimalni je baza 10, ili ono što mi kao ljudi obično interpretira. Heksadecimalni je baza 16, koji je nula kroz devet kao i do F. Tako je četiri broja sam traži dečki pretvoriti ovdje. Ja ću dati vam se sviđa, tri do Četiri minute razmisliti kako mi bi ići oko rješavanja toga. PUBLIKA: Jesmo li dopušteni kalkulatori? PROFESOR: Nećete potrebno kalkulatore, da. Mislim da osnovni dodatak, mislim, svi ti dečki će se tražiti da učiniti. I samo tako da vrsta ima smisla kada svatko učinio, pogledati, val, ne znam, osmijeh, sretno ako ste učinili. Da. Možda još par minuta. OK, neka je to dovesti u. Ja sam namjerno ide dati vam dečki manje vremena nego vjerojatno trebate to su neki od tih problema, jednostavno zato što želim da biste bili sigurni da smo dobili kroz hrpa problema. Dakle, bez brige, ako niste imaju priliku završiti. Totalno redu sve dok imate ideja kako to ide o tome. Tako ćemo ići naprijed i učiniti prvi. Prvo, bilo tko želi mi reći u binarnom, što da svaki od tih brojki predstavlja u smislu njihove vrijednosti? Da? PUBLIKA: Dva do Snaga nula, dva na jedan. PROFESOR: Točno. Tako. Točno, tako tipično kad smo u bazi 10 Sve to predstavljaju se, kao što je, 10 do baze nule, zar ne? To je tvoj svoje mjesto. Sve vaše 10 je mjesto koje se nalazi 10 na snazi ​​jedan. Vam 100 je mjesto koje se nalazi 10 na snazi ​​dva. Što god da ste u bazu ide učiniti s točno istu stvar, samo s različitim baze. Dakle binarni, sve što je je jedno dva. Vi ćete pretvoriti sve znamenaka u dva do god snage te znamenke. I tako u tom smislu, mi može imati lakši put da bude u mogućnosti dodati ili zbroj svih brojeva u cilju pretvoriti u bazu 10. Tako se bilo tko želi mi reći što je Odgovor na prvo je u bazi deset? PUBLIKA: Dva, [nečujan] PROFESOR: Da. PUBLIKA: 42. PROFESOR: 42, tamo idete. Dakle, način na koji smo dobili ovaj odgovor bio od radi dvije Prvi, koji je dva. Plus dva treća, što je osam. Plus dva na peti, koji je ono što je ostalo više. Možete ih sumirati i to je 42. Je li netko zbunjeni o tome kako smo to? Dakle osnovni dodatak, kao što su Rekao sam, te bi trebao biti u redu. Ako ne, dobro, možemo vježbati previše. Ali to je u redu. Cool. Se bilo tko želi mi dati odgovoriti na drugom isto kao i? 50? Dobro. Svatko zbunjeni o tome dobili smo da je bilo? Cool, ja ću imati odgovori na sljedeći slajd. Tako da nema brige ako vas morate ga kopirati dolje. U redu, tako da heksadecimalni je nešto složenije. ali ja ću vam pokazati dečki prečac za kako to učiniti. Dakle heksadecimalnom, kao i vi zapamtite, sve je to bilo 16. I zato što mi kao ljudi zapravo ne ima 16 brojeva za zastupanje da, idemo od nula do devet, koji je naš prvi 10 vrijednosti, a onda ćemo napraviti kroz F, koje su narednih šest vrijednosti. I tako je najlakše otići iz bilo binarni broj za heksadecimalnom je da ih razbiti na polovice. I tako svaki binarni broj ćemo dati vjerojatno ćete imati osam znamenki. Vi samo može slomiti ih u sredini. Dakle, prvi one-- jedan jedan, jedan jedan, jedan, jedan, jedan, jedan. Vrsta to mislim, znaš, crtanje kosom crtom ili zarez između njih. A možete jednostavno pretvoriti izravno god ovo je prvi Broj heksadecimalnom, i što god da se ovdje drugi od heksadecimalnom. Pa sjećate iz zajedničkog zapis, Što heksadecimalni vrijednosti početak? PUBLIKA: Zero. PROFESOR: 0x. Tako znamo da je bilo vrijeme da vas pitam pretvoriti bilo koji broj heksadecimalnom, ili svaki put kad vidim bilo broj koji počinje s 0x, znate da je heksadecimalna vrijednost. I onda ćeš biti zatraženo da odrediti što su ti dvije znamenke. A način na koji to učiniti, tallying se da je polovica i tallying se da polovica. Tako je u ovom primjeru, koji bi jedan, jedan, jedan, jedan biti? Koje vrijednosti će to biti? To bi bilo F, zar ne? To bi bilo 15. Dakle, to bi bilo F. Jedan, jedan, jedan, jedan ovdje je F. Dakle, jedan, jedan, jedan, jedan, jedan, jedan, jedan, jedan u heksadecimalnom, sve je to je 0xff. Budući da je ovaj pola zastupljena F, vrijednost 15, i to pola zastupljena F, vrijednost 15. Zato ne zaboravite, mi smo računajući od nula do devet. A je kao 10., B je kao 11, F 15. Da li to smisla da svima koliko smo dobili od binarnom se heksadecimalni? PUBLIKA: I tako kako smo dobili 15 od jedan, jedan, jedan, jedan? Profesor: Da, ovo je binarna, zar ne? Zamislite ovo je samo binarni broj. Dakle, imate dvije do 0., što je jedan. PUBLIKA: Oh, u redu. Dakle, samo ga ukupno van. Profesor: Da, i onda ti samo ukupne to van. To je sve što je. PUBLIKA: U redu. PROFESOR: U redu. PUBLIKA: Pa i ti ići s binarnim da decimalnih na heksadecimalnom? Profesor: To je najlakši način da to učinite, da. Nećeš se decimale jer decimale ima samo nulu do devet. Mi smo samo vrsta dijeleći ovo gore u dva. PUBLIKA: [nečujan] pomoću decimale pronaći što odgovara do u heksadecimalnom. PROFESOR: Mislim, da ste tallying gore koristeći osnovne matematike. PUBLIKA: Da. Profesor: Da, prilično. To je malo zbunjujuće. Ali samo znam da vas možete podijeliti god ova vrijednost u samo polovice. Gle, što je to u binarnom? Koji broj je to? To će biti nešto od nule do F. Ovdje također će biti nešto od nule do F. I onda možete jednostavno staviti njih dvoje upravo tamo. PUBLIKA: U redu. PROFESOR: Aha. U REDU. Dakle vi želite pokušajte sljedeći onda? Nula, jedan, jedan nula, jedan, nula, jedan nula. Dat ću ti dečki poput 30 sekundi, jer vjerojatno niste znali trik kako to učiniti ranije. U redu, tko želi dobiti ovaj jedan metak? 0X5A. PROFESOR: 0X5A. 5a. Dobro. Dakle, ovo ovdje bi be-- želite da nam reći kako ste dobili to? Prvo, kako ste dobili pet? PUBLIKA: Zbog nule, jedan, nula, jedan od pet. Profesor: Da li svi razumiju Zato nula, jedan, nula, jedan od pet? Imaš ga ovdje. Nemate ništa za dva do prvog. U dva na drugi, te imati jedan, što je četiri. Tako da dodate četiri plus onaj, imate pet. Svatko dobro? U REDU. I onda što je to bilo i zašto? Koji broj Da li odgovarati? PUBLIKA: 10. Profesor: A što to na bazi dva? PUBLIKA: [nečujan] PROFESOR: Točno. Dakle, ovaj drugi Vrijednost ovdje bi se 0X5A. Svatko dobro o tome kako pretvoriti? To je puno jednostavnije nego što mislite da je. Ja samo želim da biste bili sigurni znate korisne savjete Umjesto za kako to učiniti. PUBLIKA: Zašto ste upravo podijeliti je u sredini kao što je to? Baš kao što se, u redu, ja sam samo ide na stalo ti prvi [nečujan]? PROFESOR: Zato što je to zapravo Način heksadecimalni vrijednosti su zastupljeni. 0x, to zapravo znači ništa drugo nego vam govorim da je broj heksadecimalni. I ovo uvijek predstavlja prve četiri znamenke. I ovo uvijek predstavlja posljednjih četiri znamenke. I tako su ove dvije znamenke jednostavno odgovaraju različitim bitova. PUBLIKA: Tako ćemo always-- Profesor: Vi ste uvijek će dobiti osam vrijednost bita. PUBLIKA: Je li to baš kao stvar ovdje ili da je stvar u cijelom? Profesor: To je samo stvar je u računalima, Yep. PUBLIKA: U redu. Odlično. PROFESOR: Isto tako u ovom primjeru možemo pretvoriti iz binarnog na decimalnih, i od binarne do heksadecimalnom. Vi želite biti sigurni da i vi praksa ide obrnuto. Dakle, ako sam ti dao 0xff, što bi nacrtati da u binarnom, zar ne? Možete pretvoriti u binarni F, što je jedan, jedan, jedan, jedan, pretvoriti u binarne F, koja jedan, jedan, jedan, jedan. Dakle, možemo vas da učinite drugi način. Dakle decimalnih u binarne ili heksadecimalni u binarne. Dakle, želite biti sigurni da znate u oba smjera. Vjerojatno ćemo vas pitati kombinacija dva. Da, imate pitanje? Mogu see-- si dobar? PUBLIKA: Da. PROFESOR: U redu. Jesam li dobro obrisati ovo? Veliki. U redu, odgovori su ovdje, ako bilo tko je znatiželjan kasnije i zbunjeni. U REDU. PUBLIKA: Je li bitno ako stavimo naši slova u glavnom gradu ili malim slovima? Profesor: To čini, jer u heksadecimalnom, po konvenciji, svi likovi su velika slova. Tako A do F su će biti veliko. Ako stavite malim slovom A, ne znam ako bi nužno označiti pogrešno. Ali teoretski, to nije tehnički kako ste trebali imati. Tako su svi trebali biti velikim slovima. Da, dobro pitanje. U REDU. Drugo pitanje. Razmotrite ovu lijepu programa ovdje. Ja ću postaviti pitanje, Vratit ću to. Dakle, kao prvo, ono što je unutar standarda io.h to od interesa za program? Drugo, što se u nedostatku znači u redu tri? I treće, što se vraćaju na nulu od Glavna kao liniji šest, općenito znači? Ako vi želite pisati onima dolje, jer moram se vratiti na slajd samo tako da možete vidjeti broj. Ovo je primjer, kao što je, možda Viša razina pitanje gdje ćemo vas pitati što stvari znače u programu. Svatko dobro za mene povratak na slajd? OK super. Dakle, ja ću vam dati dečki poput možda tri minuta da pogledate ovaj jedan jako brzo. U redu, tako da je ovo jedan je kao prilično jednostavan, konceptualno. Se bilo tko želi mi reći što je Prvi iznutra hash uključujući naš standardni io.h knjižnica datoteke? Zašto nam je potrebna da knjižnica uključene za ovaj program? Ono što ovdje mi je potrebno za? Da? PUBLIKA: Je li to, kada staviš da printf? PROFESOR: Točno. Dakle printf, bilo vam vrijeme uzeti ulaz od korisnika i ispis nešto na ekranu, to standardni ulaz, izlaz knjižnica. Razmislite o tome da way-- ulaz, izlaz. Imam li izlaz? Da. Dakle, ja znam da sam uvijek ću treba standardizirati i.o knjižnicu. Dakle printf je funkcija kojim trebamo pristupiti i hashtag uključuju standardni i.o knjižnica. U REDU. Drugo, to što se praznina znači? Imamo int glavni (prazninu), što se poništiti ovdje znači ovdje na liniji tri? Da, u leđa. PUBLIKA: [nečujan] PROFESOR: Točno. Tako zapamtite, naučili smo počevši s našim pset da možete zapravo odrediti komandne linije Argumenti da je vaš program, koji vam Glavna funkcija, traje kao i vi, korisnik, ga zovu. Ako imamo praznina, to znači da vas može samo pokrenuti program izravno bez naredbenog retka argumente. Svatko jasno? U REDU. I na kraju zašto se zamarati radi taj povratak nula stvar ovdje? Zašto mi čak ni int glavni? Zašto ne možemo samo void main prazninu? Da? PUBLIKA: Samo da možemo biti sigurni da je program Uspješno izlaska, kao razliku ako je numerirane. I mi bi znali da je to druga vrsta pogreške. Profesor: Da, točno. Ovo je samo vrlo konvencionalna stvar koju radimo, je da je samo na kraju vaš program, samo da bi bili sigurni da je vaš glavni funkcije radi ispravno, uvijek želimo napraviti povrat nula. Iako smo mora nužno Ne vidim da je tiskana nigdje. Jer kao programera, znaš, ako imate mnogo različitih linija koda a ne znate gdje oni su idući u krivu, a ako se pogreška dogodi želite pobrinite se da ste dobili tu pogrešku. I tako obično ako nešto pođe krivo mi ćemo imati povrat jednog jednostavno kako bi bili sigurni da znamo da je. Dakle, ako vidite povratak nula, koji obično znači vaš program Uspješno izvršena. Dobro? Cool. OK, Drugi program ovdje. Uzmite u obzir da. A ako vi vidite plutaju, vi možete Vjerojatno imaju dobru ideju o tome što Ja sam o to pitati. Dakle, kada je ovaj program izvršava, kao što možete vidjeti, Ja sam progla plovak u mojoj glavnoj funkciji. Ja sam imenovanja je "odgovor", a ja sam postavljanje koja je jednaka jednoj podijeljena 10. Ja sam ispis, jednom decimala, da plutaju. A onda sam se vraćaju na nulu. Dakle, kada izvršenja programa, mislim natrag pohlepni sada Ovaj program ispisuje 0.0. Kao što svi znamo, nadamo se svi Znate, jedan podijeljena 10 nije 0.00, to je 0,1. No, objasniti zašto je ovaj program misli da 1 podijeljeno s 10 grafika 0,1 druge od 0.1? Ja ću ti dečki daju možda kao 30 sekundi za samo brzo razmišljati o tome a ja ću se vratiti u program. U REDU. Svatko želi dati ga metak? U tri rečenice ili manje, jer obično smo će ograničiti sve odgovore tri rečenice ili manje tako da ne samo povratiti slučajnih stvari na vašem kvizu. Da, uzeti metak. PUBLIKA: Pa mislim da je ovo što se zove, kao što je, [nečujan] Dakle, može biti, na primjer, tu bi moglo biti, kao, 0.09, da gdje ste ispisati prvi znamenkasti, to bi bilo 0,0? PROFESOR: Blizu, ne sasvim. Christabell? PUBLIKA: Ti si jedan i dijeljenjem 10 i oni su cijeli brojevi. I tako je način na koji se to događa pohraniti je kao cijeli broj. I tako najbliži cijeli broj će biti 0.0. I tako to je 0,1. Profesor: Da, to je stvarno dobro. To je pravi odgovor. Dakle, to je vrlo zbunjujuće Koncept za puno djece. A ja stvarno želite biti sigurni da je to je ojačana u svačijem glavi. Dakle, ono što mi zovemo pluta točka nepreciznost, gdje je razlog zašto puno svoje programe u pohlepni ne rade u početku bilo zbog zaboravili ste da se baci svoju varijablu. Dakle, ono što je rekao Christabell bio je posve točno. Plovak je inherentno neprecizan. Budući da u računalu, desno, imamo konačan iznos bita memorije možemo koristiti da predstavljaju brojeve. Tako, na primjer, to CS50 ID is-- Mislim da je 64-bitna računala. Plovak mogu zastupati samo od konačnih iznosa tih bitova. I tako 0,1 s beskonačnim nula, To je bio 0,1, zar ne? Ali mi zapravo ne može pohraniti taj broj je u naše računalo. Mi jednostavno nemamo dovoljno memorije za to. I tako je najbliža aproksimacija što je pohranjena u memoriji je zapravo nešto kao 0.000 nečega, nešto, nešto, nešto. Koji, nakon što skratiti da, zaokružuje do 0.0. I tako to je samo jedan primjer koja pokazuje puno pitanja imamo kad god smo pokušavajući pogrešno učiniti math bez lijevanje kao drugi cijeli broj. Dakle, samo budite oprezni da se to dogodi. Na kvizovima, ako ćemo Vam dati blok koda i to je kao, što ispisuje na kraju? A ako je to neka slučajna vrijednost koju dečki trebaju znati zašto to događa. Da? PUBLIKA: skratiti se riješiti sve nakon određene točke? [NEČUJAN] Profesor: Da, tako je zapravo ovo je stvarno loše primjer, jer sve što je zapravo 0.100 će skratiti do 0.1. Ali, ako ste bili na it-- pokrenuti Ne znam zapamtite, jer prošle godine su vodio ga na drugom programu. Ran su u nešto što se zove CS50 aparati, koji se razlikuje od ID. To je bila 32-bitni sustav, mislim. I tako su različiti brojevi. Ali u biti, samo znam da cijeli koncept kraćenja i kako to samo smanjuje off stvari. I tako, ako to rounds-- PUBLIKA: Bez zaokruživanja. PROFESOR: Točno. Da. Cool. Bok, u leđa. Samo ćemo preko neke Kviz pregled pitanja. U redu. Dakle, razmislite drugačiji program ovdje. Idem da vam dečki par minuta da pročitate o tome. To je nešto što je za vrlo nedavno da mislim da zasvira puno od vas Dečki umovi. Ali ćemo razgovarati kroz to opet samo kako bi bili sigurni da potpuno razumijem ga. U REDU. U REDU. Svatko treba više vremena za pročitajte ovaj kod? U REDU. Dakle, čini mi se da u ovom programu sam stvarajući dvije žice pomoću gumba GetString. Jedan nazivaju je i jedna se zove t. A ako su oni jednaki jednaka međusobno to bi trebalo ispisati "You upišite istu stvar. " Ali elsewise, to bi ispisati, "You upisali različite stvari ", zar ne? Čini se vrlo, vrlo jednostavan. No, međutim, ako sam zapravo pokušati napisati ovaj program, čini se da čak i kada sam Ulazni točno iste žice, još uvijek ispisuje, "You upisali različite stvari! " Se bilo tko želi uzeti pucao na zašto ovaj program uvijek odgovara da ulazi su različiti, pa čak kada su sami riječi su isto? Dakle, ako su se input-- David ljubav koristiti primjer kao mama, zar ne? Mala M-O-M, S, T jednako malim slovom M-O-M. Ako sam trčao kroz ovo da kod, zašto bi ispis "ste upisali različite stvari?" Se bilo tko treba više Vrijeme je da mislite o tome? U redu, mislim da smo dobro. Da? PUBLIKA: U redu, tako da je nešto gdje je pohranjen u memoriji, zar ne? PROFESOR: Aha. PUBLIKA: Gdje je to, ako je to Niz je pohranjen u memoriji se spot-- Ja izmišljanje this-- je nula. PROFESOR: Naravno. PUBLIKA: I niz t se čuva na mjestu memorije, kao i 167, a potom nula nije jednak 167. PROFESOR: Točno. U redu, pa ne zaboravite ovaj nevjerojatan objava smo objasnili vama prošlog tjedna, da nizovi zapravo ne postoji? Kada smo stvorili nešto što se zove string smo, u stvarnosti, stvara nešto što se zove char zvijezda. Koje sve to je pokazivač niz ili niz znakova. I tako je u ovom primjeru, ako sam bili na ulaznim M-O-m puta da je moj računalo će pohraniti je unutar memorije kose crtice nula, zar ne? Ta četiri slova, znakova, će biti pohranjena negdje. A onda su četiri likovi, backslash nula, su pohranjene negdje drugdje, zar ne? Nemam pojma gdje su adrese su oni negdje u mom računalu. Ali ja ne znam točno gdje su. Kad sam stvoriti string a, sve što je stvarno je pokazivač na početak ovog niza. A kad sam stvoriti ovaj t vrijednost, sve što je pokazivač ovdje. I tako kada pokušavate izjednačiti i provjerite da li s je jednaki jednaka t, računalo je zapravo samo povratka što je adresa ovog m i adresu tog m. I zato jer su dva zasebni djelići podataka koji su pohranjeni u dvije različite adresa na vašem računalu, računalo nikad neće prepoznaje ih kao isti. Da li netko želi dati pucao na ono što smo će morati učiniti ako smo htjeli ispraviti ovaj i imaju ispravan trčanje programa umjesto toga? Razmislite o tome za par sekundi. Što trebamo promijeniti nabaviti ovaj program djelovanja način želimo da funkcionira? Da, želim da se ubosti na nju? PUBLIKA: Možemo pokušati dereference pokazivač i provjerite kroz niz? Profesor: To je jedan od načina da to učinite. Dakle, ono što je vaše ime ponovo? Žao mi je, podsjećaju me. Zee: Zee. Profesor: Da, pa što Zee predložio bih apsolutno raditi. Pravo? Mogli bismo dereference pokazivača i zapravo ići i pristup fizički podaci unutar odavde. A mi samo možemo usporediti cijeli zaslon. Možemo reći, u redu, pokazivač, daj mi ono što je unutra ovdje. To bi vratiti m. I ja bih rekao, pokazivač, daj mi ono što je unutra ovdje. Povratak je m. Da li one utakmicu? Da. Zatim smo krenuti dalje. Mi stalno provjeravanje cijelog dva žice sve do kraja i vidjeti ako oni su jednaki, ako sve vrijednosti jednake. A ako su sve vrijednosti jednake, onda znamo žice su istinite. Apsolutno, to je kako ćemo to učiniti? Se bilo tko zbunjen na bilo koji od ovoga? Cijeli koncept kako se žice su stvarno samo pokazivače, i kako oni zapravo ne postoji? A zašto smo dobili pogreške kao i način na koji smo ga dobili? Jer Jamčim vam dečki, upućuje i dodjela string i memorije će doći gore. Da? PUBLIKA: [nečujan] dereference to, samo stavite zvjezdicu [nečujan] PROFESOR: Pravo. Tako da derererence pokazivač sredstva ići na tu adresu pokazivača i dobiti podatke, vrijednost tamo. A način da to učinite je zvijezda pokazivač. Nemojte brkati to. PUBLIKA: [nečujan]. PROFESOR: Da. PUBLIKA: Tako možete samo napisati Ako zvijezde s jednako jednaki zvijezda t. Profesor: Pa, ne. Ne. PUBLIKA: To nije dovoljno dobar, zar ne? Profesor: To nije, jer si samo provjeri prvo slovo. Vjerojatno ćete se potrebna neka vrsta petlje da iterira kroz svaki lik u obje žice. Da. Dakle, ako ste htjeli samo provjeriti da vidim ako su započeli s iste stvari, možete učiniti ako, zvijezde s je jednak zvjezdica t. Tada ćete znati da su barem započeo s istim karakterom. Da? PUBLIKA: Pa onako vi koji bi se kao što je ugrađen za petlju ili pokazivač? PROFESOR: Da. Prilično mnogo samo za petlju. Zapamtite, David je u klasi spomenuo slobodno sintaktički šećera? I on je imao to vrlo zbunjujući stvar zvjezdice t plus jedan, gdje će integrirati kroz te pomicanje pokazivača? Lakše način radi ovo je samo t i. Dakle, to je samo niz. Način na koji će imati za petlja koja je trajala od nule do i, gdje je Ni je duljina od string, možete se i samo pišu da, umjesto da se Cijeli pokazivač, referentna stvar. Dakle, te stvari su upravo protuvrijednost u računalu. Vi vjerojatno neće trebate znati da, ali to je dobro samo vrsta imaju u leđa svoje mišljenje. Samo znam da se računalo prepoznaje različite blokove koda kao istu stvar. Jer to je samo daleko više user prijateljski nam ga predstaviti kao da je niz. To je samo lakše. PUBLIKA: Dakle, koristite strlen se sviđa, get-- PROFESOR: Da. PUBLIKA: U redu. Profesor: Vi mogli koristiti strlen ili, ako nisu imali strlen možete jednostavno napraviti do sve dok ne dosegnete kosu crtu nula za oboje. Ili će raditi. Da. PUBLIKA: Tako da je za svaki dereference jedan znak da smo zapravo pisanja ovog koda, mi može samo učiniti t zagrade ja sviđa sa zvijezdom ispred njega? Profesor: Da, jednako jednaka S Nosač ja, a onda držati se kreće I prema dolje sve dok ne pogoditi kraj. Da, to je ono što će učiniti. A ja ću zapravo imaju sljedeća primjer kada smo zapravo Napiši strlen pa ti dečki će vrsta od dobiti poigrati s njom malo. Tako je svima jasno samo sjećanje, žice, pokazivače, kvaliteta adrese? Neki viši pojmovi razini koju će zasigurno trebate znati o kvizu sutra. U redu. Dobro. Da. U redu, tako da jedna stvar koja ćemo pitati ste, kao i mi svake godine na kvizu, je, Pretpostavljam da ste zaboravili (koji mi se čini da zaboravite napraviti godišnje) u kojoj je zaglavlje datoteke strlen je proglašen. I tako se moramo ga prepisati sebe. Evo popis smjernica da možemo vam predstaviti Dečki kojoj ste dobili za pretpostaviti da S string neće biti nula. Možete pretpostaviti da je neće biti prestaje s obrnute kose crte nula. Pa znaš da je to što to će završiti. I, na primjer, da je Duljina Hello će biti pet. Dakle, možete pretpostaviti da je pozdrav biti pet, H-E-L-L-O. Ne morate se pretpostaviti da je backside nula račune za duljinu. Ova posljednja stvar ovdje, zar ne brinuti cjelobrojnog preljeva. Se bilo tko sjetiti što cijeli preljev? PUBLIKA: nadilazi Duljina [nečujan]. Profesor: Da, možete li objasniti malo, što to znači? PUBLIKA: Pa, mislim da ide natrag do odvajanja primjer ranije. Ali ako imate samo toliko brojeva koja nadilaze broj bitova da zapravo možete ga dodijeliti da će samo vrsta odsječen. Profesor: Da, tako dalje tipična Računalo, koliko bitova imamo? PUBLIKA: 32? Profesor: Da, 32, u pravu. I tako je to, ono, četiri milijardi, dvije milijarde? Četiri milijarde do četiri milijarde pozitivno integers, zar ne? Dvije milijarde negativna, dvije milijarde pozitivni, ovisi o tome što želite učiniti. I tako zapravo možemo imati dovoljno cijeli brojevi koji mogu ići gore na dvije do 31. minus 1, zar ne? Jer kad smo udario dva na 32., mi ne ima tu puno memorije u računalo. I tako, teoretski, ja može se s brojem to je, kao, dva do 46.. To je broj ogroman-magarac, ali teoretski si mogao. I tako cijeli preljev je ako pokušate stvoriti cijeli broj koji ide dalje od onoga što računalo je sposoban za pohranu. I tako vi za ovaj primjer ne brinuti o nama dajući vam diva niz koji je dvije do 32. znakova dugo. To bi se stvarno znači. U redu, tako da sam samo ću dati vi baza struktura ovog. Ti ćeš stvoriti funkcija zove int strlen gdje propusnicu u, ugljen zvijezda, ili niz, pokazivač na string zove s. U redu, svi su kopirali taj niz. Cool. Oops-- drugi način. Dakle, ovo je vrsta poput teže komad problema, pa ću vam dati dečki možda pet do Šest minuta do vrste ideja i napisati ovu funkciju van. PUBLIKA: Mi ne računa za [nečujan] nemamo koristiti cijeli broj? Profesor: Ne, ne. Dat ću ti dečki savjet. While petlji može biti vrlo korisno ovdje. Da. Evo bombon. Candy će biti dostupan za kviz, mislim. Dakle, vi ćete biti sve sugared do sutra. Možete I-- ste ga dobili. PUBLIKA: U redu. PROFESOR: Da. Možda više od 30 sekundi. U redu, ako ste ne učini, ne brinite. Mi ćemo se kretati kroz to zajedno. U REDU. Zato ću samo Dijelovi Osnovna struktura za tu funkciju ovdje. Int strlen. Prvo, bilo tko htio reći mi što to znači int? Moramo imati u ovu funkciju. PUBLIKA: Strlen [nečujan]. PROFESOR: Točno. Dakle, ono što se događa ovdje, moramo vratiti cijeli broj. I kao što je navedeno u spec, želimo return-- Ići za to dečki, samo zadržati ide. Sve je dobro. Jedite sve to tako nemam ga uzeti natrag, zapravo. Int samo znači da ste će se vratiti cijeli broj. Što je ovo char zvijezda je? Što to znači? PUBLIKA: Kao što je bio ulaz u. PROFESOR: Točno. A što je gotovo Ista stvar kao char zvijezda? PUBLIKA: Gudački? PROFESOR: Točno. Dakle, sve što radimo je davanje ovo pointer na niz. U REDU. Cool. Također, ne zaboravite, ako zaboravimo da vam ove zagrade, ne zaboravite da ih sami pisati. Jer teoretski, tvoja koda netočni ako zaboravite da ih pišu. Samo uvijek obratiti pozornost. Kao, sitnice da ne primjećuju kada ste programiranja na prijenosnom računalu, jer tvoj laptop to radi za vas? Ne zaboravite pri pišete rukom. Da? PUBLIKA: Ali kako pogrešna? Kao, mi se cijela problema krivi? Profesor: Ne, ne. Ne brinite. To je zapravo teoretski moguće za vas da biste dobili puni bodova na pitanje čak i ako je vaš broj će se Nikad se izvoditi u stvarnom životu. Predlažem da ne probati da bi se to dogodilo. Na primjer, kao što ako je sve to je ovdje u pravu, ali zaboravite debelo crijevo ili nosač, Vaš broj neće zapravo pokrenuti. Ali možemo biti milostiv. Da? PUBLIKA: Imate li na komentirati na našem rukopisom? Profesor: Ne, ne, ne brige o tome. Ne komentiranja. Stil bi trebao biti dobar. Kao, ne Smush sve na jednom retku. Nećemo biti zadovoljni s vama, ako ste to učiniti. Da li netko želi daj mi prvu liniju? Savjet, to je vrlo jednostavno. Da? PUBLIKA: Interesi, n jednak nuli. Samo postavljanje brojača. Profesor: Dakle, mi želimo neke vrsta pulta, zar ne? Samo ću ga nazvati "računati" zbog čitljivosti. Što želimo ga postaviti jednaka? PUBLIKA: Zero. PROFESOR: Aha. Točka i zarez. To je također vrlo čudan crtež zarezom. Samo praksa da radi. Dakle, želimo prvo morati brojač tipa int. Zato želimo brojati do koliko mnogo znakova ili slova u ovom nizu, zar ne? Vrlo jednostavno prvi korak. U redu, možda malo složeniji Sada, kako ćemo to učiniti? Da li netko želi daj mi liniju koda koji mogu biti u mogućnosti pomoći petlju kroz ono što je ovo? Da, hrabri duša u leđa? PUBLIKA: OK, a točka zvjezdice, Yeah, zvijezda s, nije jednaka nuli, onda nešto? Profesor: To je jako, jako blizu. Jako blizu. Tako ću adresu Dvije stvari s tim. Prije svega, to nije točno nula. Što je? To je null terminator, što je obrnuta kosa crta nula. Dakle, oni su različiti u smislu kako oni pohranjeni. Dakle, ti si jako blizu. I drugo, ne želimo samo pomaknuli pokazivač. Želimo da se zapravo pristupiti vrijednosti, zar ne? I tako kako ćemo to učiniti? Vrlo jednostavno. Nemojte razmišljati o pokazivača, Ne razmišljam o uspomenama. Vratite se na tjedan-dva tečaja. PUBLIKA: [nečujan]. PROFESOR: Od, sjećaš se? Što su nizovi? Kako su pohranjeni u memoriji? PUBLIKA: Oni podigli. PROFESOR: Oni su podigli. Pa kako ćemo pristupiti svaki lik unutra? PUBLIKA: [nečujan]. PROFESOR: Točno. Dakle while-- ono što ide unutra ovdje? S mjesta - PUBLIKA: I. PROFESOR: Oh, ja ne postoji, zar ne? PUBLIKA: Oh, računati? Profesor: Možemo samo koristiti računati, zar ne? PUBLIKA: Žao nam je, nazvao sam ga ja. Profesor: Da, to je sve dobro. Imamo varijablu ovdje to već je proglašen kao naš brojač. Pa zašto ne bismo samo koristiti da kretati kroz while petlji? Ima li to smisla? Dakle, dok je u count-- se bilo tko želite mi dati ono što se događa nakon ovdje? PUBLIKA: To nije jednak. PROFESOR: nije jednak, zar ne? To je prasak jednak, uskličnik jednak, što god vi želite ga zovu ne equal-- PUBLIKA: [nečujan]. PROFESOR: Da. Zapamtite jednu ponudu je za char, dvostruki navodnici su za niz. Budite oprezni kada ih koristite. Dakle, kada gledamo kroz polje, zadnji znak, znamo što ne želimo da bude backslash nula. Dakle, dok. Mi nismo na kraju niza. Što želimo učiniti iznutra? PUBLIKA: Želimo dodati brojač tako da broji plus plus? PROFESOR: Točno. Dakle, ovdje ćemo napraviti brojati, prebrojati plus plus. Nedostaje još jednu liniju. Mi smo skoro tamo. Što smo zaboravljajući da radim? PUBLIKA: Vraćanje na nulu? Profesor: Vi želite da se vrati na nulu? PUBLIKA: Ne, vraćajući se strlen. Čekati. PROFESOR: Koja je pohranjena u? PUBLIKA: grof. Računati. PROFESOR: Točno. Dakle, ovdje ćemo se vratiti računati. Jer ono što smo radiš ovdje ultimately-- imamo brojač varijablu koja je će povećavati kroz naš niz. Idemo dalje, imajte ide, okolo i okolo u ovoj petlji. I dok nismo na kraju ovog niz, koji je null terminator. I svaki put kad smo proći kroz da, mi dodajemo našem šalteru. I idemo dalje zajedno u ovom nizu. I na kraju, kad smo hit nul terminator, znamo, oh, možemo razbiti, vratite računati. Mi imamo strlen. Da li svatko dobiti kako ovo je proveden? Dok loops-- znam nemamo učiniti previše s njima, ali oni su obično vrlo, vrlo korisno ako Ne znam što ste zaustavljanja Uvjet nužno mora biti. Pitanje? PUBLIKA: Možemo pisati nula pod uvjetom vrijeme? PROFESOR: Dok? Da, tako da u ovom problemu sam ti imala Dečki pretpostaviti da je neće biti nula. Jer zapamtite, teoretski, ako sam ti dao pokazivač da je prevelika memorije, to bi vam dati null, zar ne? To je ono što se operativni Sustav će učiniti. Dakle, ako nisam ti rekao da preuzme e će biti nula, morate provjeriti. Dakle ovdje, što će učiniti, ako je jednak jednak null, vratiti jedan. Nešto kao to. PUBLIKA: [nečujan] nuli. PROFESOR: U redu, reći ću ti zašto ne možemo to učiniti. Zato zapamtite u memoriji, odmah, ovdje. Mi ćemo ići ovdje. Imaš divovskih blokova memorije sve s rešetkama da pohraniti različite vrijednosti, zar ne? I tako sve niz is-- za Primjerice, ako smo na ulazu pozdravi, da bi H-E-L-L-O backslash nula, zar ne? A onda tko zna, kao što je slučajni stvari koje su ovdje nakon njega. Mi zapravo ne znamo što je tamo. I tako, ako ste bili učiniti umjesto obrnute kose crte nula, null, to ne može biti nula. Jer to samo može značiti neki slučajni druge stvari koji ne spadaju u svom nizu. I tako je način na koji smo uvijek znali da niz završava se kosom crticom nula. I tako je to uvijek kako smo provjerite je kraj niza. Null, sve to znači, ako imate ne postoji pokazivač, prije svega, ili ako je vaša memorijska je samo toliko velika da ne možete ga vratiti, onda bih biti nula. Dakle, biti vrlo oprezni kada razlikovanje razlika između null i backslash nula. Da. Svatko u redu s tim? U REDU. Tako sam imao vi napisati strlen. Feasibly bismo mogli upitati što pišete iz A do I, ne zaboravite da je "Atwoa" ili što god vi želite nazvati? To je funkcija u Vigenere i Cezar, koji pretvara ASCII vrijednost cijelog broja? To je također došao gore na prošlim kvizovima funkcija smo vas pitali da napiše. Prilično mnogo bilo funkcija koje ste koristili i vrlo lako sami napisati, Senzori sviđa manji, je gornja, smanjiti, na gornji. Funkcije koje će pretvoriti niz od malih slova u velika slova. Svi znamo kako to učiniti, zar ne? To je prilično jednostavan. Samo želim da biste bili sigurni da ste can-- to je isto misaoni proces. Vi samo ponoviti kroz i uključite stvari. Ili računati ili kada uključite stvari drugačije. Ja bih suggest-- I ne znam ako ćemo vas zamoliti da zapamtite ono što kapitalu ili grad Z, ili mala slova A ili mala slova z su u ASCII, ali ja bih predložiti Možda pisanje da dolje u slučaju radimo. Samo da ti dečki imaju referencu. Kao veliko A, ono, 197? I onda mala je kao 50 nečega. 65, da, tamo idete. Tako je samo prilično mnogo znati Razlika između njih je 32. To je prilično važno. Da. Jesam li dobro na ovo? U REDU. PUBLIKA: Mogli smo teoretski pisati neke od ovih dolje, kao i na našem little-- Profesor: Vi teorijski mogao samo kopirati funkciju dolje. To je istina. PUBLIKA: Ne [nečujan]. Profesor: Vi imate list. Vi imate bilješke list. Možete ga upisati. Možete ga pisati. To možete učiniti sve što želite s njom. Da. Dakle teoretski, ako želite, ići. PUBLIKA: [nečujan] ali mi ne stvarno nužno treba zapamtiti vrijednost, možemo samo koristiti za gornji ili niža funkcija, zar ne? PROFESOR: Da. Ali ako mi ti dao pitanje koja kaže da gornja pisati, onda te bi trebao pisati. Dakle, vi možete pretpostaviti da vas Dečki imaju pristup svim funkcijama, ali ako želite koristiti za gornji ili manja, što također morate učiniti? PUBLIKA: [nečujan] koristiti CS50 [nečujan] Profesor: Je li CS50.h? Budite oprezni tamo. Tako da gornji, na niže, je gornji, niži, Funkcije koje uključuju Niz manipulacija su sve bilo u ASCII ili unutar matematike knjižnici ili unutar niza knjižnici. Dakle, ako vi koristite one funkcije, budite oprezni da ne zaboravite uključiti tu glavom. Pa možda i nešto vas želite uključiti u svoj list, što su zaglavlja? Koje su knjižnice ste koristili? Koje su funkcije unutar tih knjižnica? To je važno. Da? PUBLIKA: Može li mi samo policajac van i učiniti hashtag kroz apsolutno svako slovo mi smo ikada vidi kao na sva pitanja? PROFESOR: Vi mogli. Ne znam koliko je sretna ćemo biti razredu koji kviz kada svaki dio koda je dva puta kao čeznuti kao što treba biti. Ne znam, možda smo skinu točke za stil. No, teoretski svoj blog broj će biti u redu. Vi bi policajac van i Samo su sve. To je u redu previše, da. PUBLIKA: [nečujan]. PROFESOR: Da. Ja bih predložiti ne radi to ipak. Da. PUBLIKA: cool. PROFESOR: Dobro pitanje. PUBLIKA: Dakle, najgori scenarij. PROFESOR: Najgori slučaj. Ako potpuno zaboraviti, mogli učiniti. Da. Da, kod je upravo tamo. Ja se nje umjesto računati, ali vas Znaš, ono što lebdi svoj brod. PUBLIKA: Čekaj, pa smo ne bi hashtag su jer smo s početkom u int? Profesor: Da, samo sam pretpostavio da bili smo zamoljeni napisati funkciju. Ako želiš biti siguran, te vjerojatno bi ga stavio tamo. Ali ja jednostavno ne zamaram, da. Ne znam je li vama trebate bilo knjižnica za to. Budući da ste stvarno ne ispisuje kako ništa ili ništa, zar ne? Da, ja ne znam je li trebate knjižnicu. U REDU. To je također malo više zajedno linije memorije manipulacije. Ovakav malo lukav. Razmislite o ovome. Imate funkciju pod nazivom FUNC. Mogao sam ga nazvali god, ali sam se odlučio za to ime FUNC. Ja ga gore moj glavni. Zapamtite, želite imati funkcija, nakon glavnog, želite biti sigurni da uključuju prototip vrhu. No, u ovom slučaju to je tako kratko da sam osjetio da sam mogao samo to su na vrhu glavna. Nisam trebate imati prototip, jer je već napisano gore. Dakle, sve radim u mom glavnom funkciji stvara prirodan broj x jednako 10. Zovem moj funkcionalnog funkciju, a zatim ispisuje se nešto. A onda je to zapravo što FUNC radi. Hoćete li razmisliti o tome. Budući da je malo zeznuto. To je vrlo, vrlo lukav, zapravo. Razmislite što to Program će biti na izlaz. Dat ću ti dečki dvije minute. Dobra rasprava? PUBLIKA: Da. PROFESOR: Da. U redu, tako da je ovo zeznuto s razlogom. I to je razlog zašto sam htjela donijeti to svačije pozornosti. Se bilo tko želi mi dati prijedlog, pokusaj? Što bi to isprintati? Totalno u redu ako si u krivu. Da? PUBLIKA: Mislim da je 100 i zatim 10 na dvije odvojene linije. Profesor: I 10? Se bilo tko imati bilo kakve druge pretpostavke? Da? PUBLIKA: Možda samo 10, jer FUNC ne vraća ništa? PROFESOR: U redu, tako da smo ima pogodak broj jedan je da je pretpostavka broj dva je Samo će ispisati 10. Se bilo tko imati bilo kakve druge pretpostavke? U REDU. Tako ćemo proći kroz ovo, zar ne? Kad god dobijete komad koda, ne samo gledati na to i biti, Ah, to je toliko stvari! Ja sam tako zbunjena! Kao, smiri se dolje. Samo znam da li se i samo gledati kroz koda liniju po liniju. To je sve što je. To je kao da čita knjigu. Dakle, s bilo funkciju, uvijek početi na glavni. Tako ćemo početi na int main prazninu, čak i programa Već trknuti, zar ne? Početak u glavnom u praznini. Int x jednako 10. Tako ću izbrisati ovaj. Idem izvući sjećanje samo tako vas dečki mogu nekako vidjeti što se događa. Zapamtite ovdje imamo hrpu? Ovdje gore imamo naše gomila negdje ovdje. Stack odrasta, zar ne? I u stog, imate mrežni funkcioniraju kao svi mrežni lokalnih varijabli. Dakle ovdje, int x jednak 10. Unutar našeg glavnog funkciju smo stvarajući varijablu pod nazivom x. Mi smo postavljanje koje jednak 10. Ovdje imaš neke x, a vi ste postavljanje koje jednak 10, pravo, u glavni. Svatko dobro? Funkcija. Tako sada, u naš glavni funkcija, mi smo zvati funkcija smo gore napisano. Dakle, sada smo ući u drugu funkciju. Idemo napraviti još jedan varijabla int x jednaka 100. Što se događa ovdje na dimnjaku? Što se događa kada se nazvati funkcija koja stvara nove varijable? Što se događa ovdje na dimnjaku? PUBLIKA: [nečujan] gomile na vrhu? PROFESOR: Da. Dakle, to je zapravo stvara kopiju. I to vrsta pilota na vrhu. Razmislite o stack-- snop knjiga, hrpom ništa. Piloti na vrhu, prvo u posljednja van, trajati u, prvi van. Dakle, to će stvoriti x ovdje. To će imati sve funcs varijable. Veliki. Dakle, sada imamo dvije različite x je to predstavljaju dvije vrlo različite stvari. Zatim ćemo ispisati iz cijelog broja x. Tako ćemo ispisati 100, zar ne? Jer ovdje je 100. Dakle, to je prva stvar da će ispisati. Kao što je ova funkcija vraća ništa, sada kada je funkcija, koja je u glavni vod Gotovo je. Svi dobri sa mnom tako daleko? Tako smo sada preko dvije od tri linije od naših glavnih funkcija. Sada idemo na trećem retku. Idemo printf. Što je ovo x roku glavna? Što to predstavlja? Što je vrijednost x sada? PUBLIKA: 100. Profesor: To je 100? PUBLIKA: Još 10. PROFESOR: Još 10. Da. Zato ne zaboravite, u roku naš FUNC, x jednaka 100. Ali ako se vratimo natrag našem glavnom funkcijom, varijabla koja je pohranjena u drugo mjesto na našem stog. Tako sada moramo vratiti na Glavni snop, mrežni lokalne varijable. I ovdje je x jednak 10. I tako ćemo ispisati 10. Dakle, ona je apsolutno u pravu. Mi ćemo imati izlaz 100 i 10. Da? PUBLIKA: Kada malloc, je li to gomila ili snop koji je [nečujan]? PROFESOR: Kada malloc, ste uzimajući memorije iz hrpe i dodjele. Tako da ne morate igrati s bilo to. Pa valjda veći takeaway Ovdje je nešto što se zove opseg. Za one od vas koji su bili na pregled sjednica sinoć, Kratko smo razgovarali o tome. Opseg definira kako i kad postoje tvoje varijable. Ili unutar okvira onoga što vaši varijable postoje. Prilično mnogo pravilo općenito je, vaš variables-- ako ih stvaraju unutar kovrčavom braces-- oni postoje samo unutar tih vitičastih zagrada. Tako na primjer u našoj funkciji FUNC, vidite one dvije aparatić. Ako ste stvaranje bilo unutar nje, šanse su sve što radite je stvara snop i pohranjivanje da postoji. Ista stvar je u glavni. To je samo pohranjena unutar glavne. Također želite biti vrlo, vrlo oprezni ovdje. Budući da opseg i posuđuje Sama različitim primjerima. Tako na primjer za petlje, za int i jednak 0. I je manje od, ne znam, 10. I plus plus. A ti imaš kod unutar nje, zar ne? Gdje se ta varijabla, Ja, zapravo samo postoji? Samo unutar vaše for petlje. Pa kladim mnogi od vas ima Vjerojatno je naišao ovu pogrešku kada radite programe u svojim psets. Koliko od vas su pokušali da koristim izvan for petlje i imao pogrešku? Poput unreferenced brojeva ili nešto slično? Razlog zašto se to dogodi je, jer ovdje si stvarajući nešto što je samo postoji unutar vaše for petlje. A ako pokušate ga koristiti, ja ne zapravo postoji izvan nje. Tako je u osnovi računala govoreći, ja Ne znaš što govoriš. Sve što znam je da je sam bio ovdje, ali sada više ne. Dakle, ako sam bila stvoriti for petlja unutar, zar ne? A ja ću napraviti još jedan, poput int j, a to su učiniti sve. I imate kod unutar to petlja, j postoji samo ovdje. Ali to također postoji unutar i. I tako j postoji samo u ovo petlji, a ja postoji u cijelu stvar. Svatko jasno? Ista stvar s uvjetnim izjavama Ako želite stvoriti ništa. Ista stvar s while petlje ako je Želite li stvoriti nešto. To je nešto što se vrlo, vrlo oprezni. Dakle, ovo je stvarno dobar problem u Osjećam da je pokazala dvije stvari. To je pokazao prvi, opseg. I to pokazao Također dodjela memorije. Jer vi trebali znati da funkcija raste prema gore u snopu. I to kada poziv funkcije, koju stvara u biti novi snop memorije. To je vrlo različito od što je vaš mrežni pamćenje. Da. Uh! Svatko OK na to? To je zbunjujuće. Vrlo dobar teme ići preko, jer si vjerojatno će dobiti neki lukav stvari kao da je na kvizu. Da. Cool. Stavit ću dobiti 100 na jednom linija 10, a zatim na drugoj. Da, vrlo dobro. OK, sad vi ćete priliku biti Tas. Moći ćete odgovoriti na sva lijep e-mailove koje sam ponekad dobiti. Dakle, Dragi Andi, vidim mislim da je nešto ide u redu s mojim prevodilac. Siguran sam da je moj broj je ispravan, ali sam držati uzimajući greška segmentiranja svaki put sam pokrenuti. Što se događa? Molim pomoć, puno ljubavi. Ako vi dobili nešto poput da kako bi ti odgovorili? To su zapravo vrlo česte Pitanja ćemo vas pitati. Je li, mi ćemo vam dati scenarij, mi ćemo dati nam Vaš najbolji pogodak na ono što se događa. Svatko ima ubosti na ono što se događa? Da? PUBLIKA: Možda dereferenced null, nešto poput pokazivača ukazuje na nešto null. Profesor: Da, to bi bila primjer, kada će se to dogoditi. Ali što je veća slika onoga što se ovdje događa? PUBLIKA: Je li pokušavate pristupiti memorije da niste trebao imati pristup? PROFESOR: Točno. Tako misliti greške SEG, sivo ograničenja, ograničeni prostor u memoriji da ne bi trebalo biti dira. Dakle, prilično kada pokušavate da index-- kao na primjer, ste proglašen niz od nula do devet. Ali pokušate dotaknuti kako će 10. vrijednost, nemate pristup to. Budući da niste ga proglasili. I tako je vaše računalo ide gledati da bude kao, uh oh, pokušavate ići izvan granica indeksa. Ja ću vam dati greška segmentacije. Smatramo segmentu, zar ne? Dodatni segment, kriv je kada pokušate probiti nešto i da ne bi trebali biti tamo. Segmentacija kriv je bilo pokušate dotaknuti stvari da ne bi trebalo biti dira. Dakle, uobičajeni primjeri su indeksa. Naravno, ako pokušavate na dodir koji je null, koji će također raditi kao dobro. Ako pokazivač pokušavao dodirivati ​​stvari koje se ne smije dirati, koja također može raditi kao dobro. Najčešće vi ćete vidjeti u niz. Svatko dobro? PUBLIKA: Dakle, ako želite pristupiti na 10. točku a tu je samo granica od devet ili nešto. Profesor: Da, točno. Prilično mnogo. Cool. Dragi Andi. Dakle, imamo to divno stvari naziva vrste. Ako Spoji sort-- kao i mi vidjeli u primjeru kada je David činio cijeli stvar u class-- zašto, ako je tako puno brže od bilo koji od ostalih vrsta, zašto se onda uopće zamarati znajući bilo koje druge vrste? Što je ovo pitanje stvarno te pitam? Što je tri word-- PUBLIKA: Što je trade-off? PROFESOR: Točno. To je ono što je pitanje pita. Što je kompromis između Spoji vrsta stihova bilo koje druge vrste? PUBLIKA: Vodi memorije, zar ne? PROFESOR: Dali objasniti da malo više? Prvo ćemo objasniti pisma dućan. Kako Spoji vrsta raditi? PUBLIKA: Tako to radi dijeleći sve na pola a zatim ga stavljajući zajedno i preraspodjelom u redu, kao i svaki put kada spojiti seta. PROFESOR: Prilično mnogo. Pa ja mogu nacrtati ovo, ali to bi uzeti mi pet minuta da ga izvući. Pogledajte natrag na rubrikom slajdova gdje smo pokriveni pisma vrsta. Točno. Dakle, način na koji Spoji razvrstava radove je li to dijeli stvari na pola, i onda samo gleda Prvi vrijednosti svih njih i razvrstava samo to. Kontinuirano stvara nove nizove i stavlja stvari sve više i više u redu. I tako, dok je to jako, jako brzo jer it's-- znate, binarno traženje n log n. Vi stvarate toliko različitih polja da ste koristite veliku količinu memorije. I tako dok je brži, trgovina off ovdje je da koristite više memorije. I tako, savjet, vrste i pretraga su pokriveni puno više ove godine nego su oni bili u godinama prethodnih. Vi bi trebali vidjeti da ogleda u skladu s kvizu. Ja bi definitivno provesti vrijeme ide nad onim što sve različite vrste su, kako binarni pretraživanje, kako linearno traži posao. Kako možda pseudokod kodirati one out. Koji su trčanje puta? Nešto kao što je trčanje vremena je vrlo jednostavno zabilježite na bilješku list, pravo? To je stvarno teško kada ste u sredini test a vi morate shvatiti da je van. Kopirajte ga dolje. Jamčim ti si ćete morati znati. Koje su ustupke? U najgorem slučaju, najbolje scenarije za sve njih, vrlo upoznati. Da? PUBLIKA: Ne trebamo znate kako to kod pisma vrsta? Kao, trebamo zapamtite Rekurzivno? Profesor: Ja jako sumnjam, samo jer to je kao prilično komplicirano. Ali to ne mora biti nemoguća, ako mi Vas molimo da koristite pseudokod ga. Da. Da, u redu, još jedan. To može doći u ste zadnji komad u malo. Da? Jeste svi čuli? OK, prilično prvi Sve, što tip programa će biti dajući vam izlaz ovako? Zapamtite da vas zamolio da uče o Ova nova vrsta debugging alat? Što je ime od njega? Valgrind, pravo To je program u kojem mogli nazvati mogla pratiti sve memorije koji ste koristite u svom programu i događa. Dakle, ako imaš nešto, kao što je, definitivno izgubili, 40 bajtova u jednom bloku. Vjerojatno niste prisjećajući se da ga oslobodi. Jer ako koristite bajtova memorije, to znači da ste pristupiti tu memoriju, ali nisu bili u mogućnosti osloboditi. Dakle, želite biti sigurni da ste također pomoću free-- to je function-- da oslobodi sve memorije realociran strane malloc. Cool. Dakle ovaj slajd, ja ću ga gore. To je svugdje u puno predavanja, u puno sekcija slajdova. Vi stvarno želite biti sigurni samo znam sve ovo. Ili u vašem bilješki listu ili ako želim ga pamtiti, slobodno. To je jako, jako, jako važno. Također vrlo dobar Pitanje koje se može postaviti. Zašto je pogled na Izbor sort-- Izbor sort-- sve trajanjima se n na kvadrat. Bez obzira na to kako je popis u pitanju ti kao, pa zašto je izbor sort-- Dat ću ti dečki 30 Drugi misle o tome. Jer to je vrsta zbunjujuće. To uključuje neki konceptualni misli. Zašto bi se pokrenuti puta biti isti u i najgore i najbolje scenarije? Da? PUBLIKA: Zbog izbora vrsta svaki položaj ili mjesto u ovom malom nizu stvar ili što god. Pa čak ni u najboljem slučaju, čak i ako je posve razvrstani, to će i dalje biti kao, u redu, jedan. U mom prvom mjestu imam jedan. I proći kroz sve njih. U redu, on je najmanji. A onda to ide opet te je kao, u redu, dva je najmanji od svih stvari. Ali to i dalje mora provjeriti svaki jedan. PROFESOR: Da. Tako, na primjer, neka je samo reći Imamo popis, već razvrstani, niz jedan do pet. Način na koji vrste odabira je da to ide preko, on provjerava ove dvije. Zatim se provjerava ta dva. A onda provjerava i provjerava. To čuva provjeru svih njih, bez obzira da li ili ne to je zapravo riješeno. Jer to je jednostavno način na koji je neka vrsta radova. I tako to pitanje je vrsta kao konceptualni pitanje ćemo postaviti. Gdje prvo, da znati kakav odabir je, u pravu, da bi mogli odgovoriti na pitanje. Morate biti u stanju razumjeti konceptualno što se događa. A onda ga možete prijaviti i mislim, OK neka je samo zamisliti najgori mogući scenarij. Svi su u silaznom redoslijedu. Kako bi to utjecati na to? Što ako je uzlaznom redoslijedu? Ako je već razvrstani? Kako bi to utjecati na runtimes? A onda Izbor vrsta, primijetit ćete da zapravo ne smeta. Budući da ste checking sve Vrijednosti bez obzira što se događa. I tako dobre stvari koje treba zapamtiti. Zašto neke vrste se razlikuju od drugih i kako najbolje i najgore scenarije će utjecati na sve njih. Idem stvarno hit u vrstama jer to će biti na kvizu. Da. U REDU. Postoji šest minuta utakmice. Ja mogu uzeti tri minute pitanja. Također možete objesiti oko za kao i 20 minuta nakon odjeljka ako želite postaviti pitanja kao dobro. Se bilo tko samo stvarno kratko pitanja ili konceptualnim pitanjima oni su nejasno o sada? Da? PUBLIKA: Možete li govoriti malo malo o bitovima operatera? PROFESOR: Da. Dakle bitovima operateri nešto što je vjerojatno Možda samo želite staviti na svoj list. Dakle quickly-- Ne želim ići previše u dubinu jer Harvardu, u svojoj pregled sjednici, pokrio ga prilično dobro. Bitno operatora, postoji pet od njih, zar ne? Tu je ovo, što je X ili funkcija, postoji znak za struju, koja je i. Cijev, koja je ili. I onda imate dva različite vrste smjene. Ako sam vam dvije vrijednosti, ako je Dajem vam, kao što su, jedan i jedan. Što bi to ocijeniti kako? Ako sam vam dati istiniti i istiniti, istina? Što je točno ili netočno? Ipak istina, zar ne? Jer postoji ili. Mi ćemo vam najvjerojatnije dati brojeve. Tako zapamtite, jedan jednako istina, nula jednako lažna. I možemo vam dati ove stvari i molimo vas da nam reći što se događa. Harvard ga pokriva u prvi 10 minuta studijskog sjednice jako, jako dobro. Dakle vi želite napraviti jeste li se osvrnuti na to. PUBLIKA: Je pisa5 će biti na kvizu? Profesor: Ne Nemojte ni pogledajte pisa5 sada. Teško. Samo čak i ne zamarati gledajući pisa5. Međutim, kao što neke savjete i prijedloge, ja predlagati počnete pisa5 čim kviz je gotov. To će biti najteži tjedno, ali onda dečki će ga prenijeti na brdima valjanja zeleno i štenaca, i to je u redu. Ovaj razred dobiva značajne lakše nakon petog pset. PUBLIKA: Radno vrijeme su nedjelja, ponedjeljak? Profesor: Da, tako će se radno vrijeme nedjelja na ponedjeljak za pset. Radno vrijeme večeras u biti će biti samo pregled za kviz. Ako netko želi doći i pitati TAS pitanje, mi ćemo biti tamo. Uzet ću možda i još jedno pitanje ako netko ima pitanje? Da? PUBLIKA: Kada ste definiranje čvorovi, [nečujan] ako kažeš čvor zvijezda i onda sljedeći, radi se računalo automatski Razumijem da si pozivajući se na drugom pokazivač? Profesor: Ne PUBLIKA: Morate Prebacite vezu je [nečujan]? Profesor: Dakle, u osnovi struct od čvora je, zapamtite, to je kao da stvorite čvor i onda imate pokazivač zove sljedeći. Sve što radite je ima struktura tamo. Morate dodijeliti da pokazivač negdje. Tako računala ne Znaš što radi još. Morate zapravo dodijeliti kada ste izrade popisa povezane. I to je ono što uglavnom pset 5 će biti dalje. Tako da nema brige o bilo koji da je upravo sada. PUBLIKA: Dakle, mi ne trebaju previše usredotočiti na popisu linkova, samo opća koncepcija? PROFESOR: Samo prilično mnogo hrpe, redovi, veza liste, stabla, hash tablica. Samo biti u stanju znati što su oni. Nećemo pitati želite nešto specifično jer mi stvarno nije učinio pset da pokriva ništa od toga još. Tako je u posljednje dvije minute prije Ja vas osloboditi ubiti ovaj kviz. Prilično mnogo, kao što je, razmišljati o tome kako koliko ti dečki su došli u ovoj klasi. Sjećam se kad je dva tjedna ove klase, neki od vas provesti tri sata pisanja vodu. Koliko dugo će vas odvesti Dečki pisati vodu sada? 30 sekundi, možda? Razmislite o tome koliko ti dečki su naučili. CS je jako, jako teško predmet. Nema sumnje u to. To je teško, to je razlog zašto nitko ne proučava. To je samo teško. I to je sasvim u redu. I ja sam jako ponosan što Svatko je to ovako daleko. Psets nije lako. Oni uzeti puno vremena. Vi, neću vas pitati za pisanje igra 15 ili Vigenere na pset. Nema potrebe da se samo nakaza out o tome. Sve testiramo ovdje je ocijeniti Vaša konceptualna znanja, kao i kao i neke od svojih temeljnih vještina kodiranja. Test je dizajniran za biti vrlo izazovna. Kao, to je dizajniran za vas ne bi dobili 100. Također je dizajniran za vas vjerojatno neće moći završiti u 75 minuta. I to je sasvim u redu. Ja sam student sam. Znam, Mrzim kad hodam iz kviza biti, sranje. To je stvarno teško. Vjerojatno što će se happen-- i to je sasvim u redu, Govorim ti momci sada. Sredstva na ove stvari nisu visoke uopće. A za one od vas koji su sve, kao što je, trojke na tvoj problem seta, to ne znači da ste će dobiti 60 posto u ovoj klasi. Ako dobijete 60% na kviz, da ne znači da ćeš dobiti D u ovoj klasi. Vidimo, pogotovo ja, jer one od vas u mom dijelu, Vidim kako tvrdi vi svi rade. I pratiti to. Vi ćete biti u redu. Nema institucionalno sjećanje sreća na kraju semestra. Budući da sva djeca s Harvarda su govori njihovi prijatelji, oh, vi ćete biti u redu. Nitko vam reći momci da je ovdje. Dakle, moram vam reći momci da je ovdje. Vi ćete biti u redu. Ja sam ponosan na sve vas momci. Test će biti teško. Studija za to, a poslije samo ga baciti. Nabavite spremni učiti nove stvari. I jesti slatkiše. Imamo imaju puno slatkiša. Nabavite dobar noćni san. Nemojte se ne spava, jer to bi bilo jako loše. CS je puno logike. Ako ne spavate, ne može funkcionirati, i tvoj mozak ne može funkcionirati. A ja ću biti ovdje za sljedeći 20 minuta, ako netko želi družiti. Vi će ga ubiti. Sretno.