PROFESSOR: Tātad darba kārtība šonedēļ, nav tik daudz sīkumi. Bet cerams ļoti, ļoti noderīga un kas attiecas uz jums puiši šonedēļ. Bet mēs esam gatavojas tērēt varbūt 15, 20 minūtes vienkārši ātri talking par saiti sarakstā. Link saraksti gatavojas attiekties uz viktorīnas. Tāpēc varbūt tas būtu ļoti noderīga lai uzzinātu mazliet par to, kas tas ir. Mēs ejam, lai tērēt lielais Lielākā daļa mūsdienu sadaļas iet pa viktorīna nulles prakses problēmām. Un tad mēs ietaupītu varbūt 20, 30 minūtēm beigās par jebkuru ielaistu jautājumiem kāds ir. Un tad, pēdējais piecas minūtes, es eju sniegt sūknis runu par viktorīnas. Jūs guys visi vēlas būt šeit par to. Jo tas būs labs laiks. Labi, tāpēc daži materiāls uz saites sarakstā. Kā viņi parasti ir strukturēta Jums ir to, ko sauc par mezglu, vai ne? Jums ir šīs lietas sauc mezglus, kas ir structs. Es iešu par to, kā izveidot mezglu nākamo slaidu. Bet būtībā viss saistīts sarakstos ir dati, ir savērtas kopā, izmantojot norādes. Un tā priekšrocība mums no izmantojot saistīts sarakstu vairāk, varbūt, piemēram, masīvs, ir fakts, ka masīva jums ir nepieciešams viens blakusesošo bloks atmiņa visi tajā pašā vietā, viens pēc otra, lai varētu būt, ka. Tā saistītajā sarakstā, jūs varētu ir izlases maz biti atmiņas pa visu datoru savērtas kopā ar norādes. Un šādā veidā jūs var piekļūt informācijai kas nāk viens pēc cits, pēc tam, kad otra bez nepieciešamības tikai milzīgs rieciens atmiņa datorā kaut kur. Un tā tas ir viens no galvenajiem iemesli, kāpēc mēs izmantojam saišu sarakstu. Otrkārt, tas ir ļoti viegli, lai dinamiski mainītu saite sarakstu, jo masīvā, kad jūs deklarēt masīvu, Jums ir zināma iestatīto vērtību. Teiksim, es gribēju, lai izveidotu masīvs 10 veseli skaitļi. Es izveidot masīvu 10 veseli skaitļi, un tas arī viss. Tas ir 10. Es nezinu, ko darīt pēc tam. Ja es gribēju, lai to 11, nevar darīt to. Ja es gribu, panākot 9, nevar darīt to. Tā kā saite sarakstā, jūs varat pievienot un dzēst un ievietot, kur vien vēlaties. Jūs varat dinamiski mainīt savu strukturēt šeit, jūsu datu struktūra. Un tas dod mums daudz vairāk pievienotās elastīgums ka mums nav parasti ir ar masīviem. Ikviens sajaukt par pamata struktūra, kā saite saraksts ir vai kāpēc mums ir jāizmanto vienu pār masīvu? Jā, mēs iet pār detalizēti kā faktiski izveidot vienu. Bet tas ir tikai sava veida vispārīgā nozīmē tieši tagad. Cool. Un tā masīvi tiek savērtas kopā Šo jauki sīkumiem sauc par mezgliem. Visi mezglu ir ir veids struct. Atcerieties, struct ir, ja jūs vēlaties, lai izveidotu noteikta tipa mainīgo C, ka nav jau pastāv, jūs, kā programmētājs, faktiski var radīt tas pats. Un tāpēc šāda veida datu struktūra sauc mezglā, faktiski ir izveidota ar mums, kas neeksistē laikā C pati. Un tā, ka jums izveidot viens ir jums galvenē typedef struktūrai, kas stāsta kompilators es esmu par to, lai izveidotu struct. Mēs ejam vārdu tā "mezglā." Un iekšā mēs ejam atzīt mainīgais, kas gatavojas glabāt vērtību. Un tad mēs arī gatavojamies ir rādītājs, ko sauc par "Next" kas norāda uz nākamo mezglu saite sarakstā. Un tad jūs pabeigt, ka off , tikai atkārtojot mezglu atkal tik kompilators zina, OK tas ir beigu mana struct. Un tā šādā veidā, mēs esam sava veida radīt cute maz masīvs veida lieta ar vērtība un ar rādītāju. Un jūs varat saistīt tos visus kopā ar šiem norādes. Tā, ka tie var visa veida būt savērtas kopā ķēdē. Cool. Vai jūs dzirdat, ka mazliet labāk? Mērķauditorija: Jā. PROFESSOR: Nu labi. Tātad tā, ka, kā jūs guys var redzēt, tipisks saite saraksts ir strukturēta ir jums ir galva. Jums ir galvas vērtību, kas nav ko norādījusi jebkura cita rādītājs. Bet tas notiek, lai brīdi, vai atsauce, cits mezgls. Mezgls pēc gatavojas atsauci mezglā pēc ka, un tā tālāk, un tā tālāk kamēr jūs beidzot hit beigas jūsu saite saraksta. Un jūs vienkārši nebūs rādītāju tur. Un tā, domāju tāpat, uz ķēdi, vai pat ja kāds no jums guys veikti, es nezinu, kā ar Augļu Loops kad jums bija maz. Jums būtu string tos kopā un valkāt viņiem ap kaklu. Domāju, ka tas ir tieši tas pats. Jums ir šos maz lietas, kas jums var string kopā, ka punkts uz vienu pēc tam, ar to, kas pēc tā, un tā tālāk, un tā tālāk kamēr jums ir ķēdes no datu struktūras ka jūs varat izmantot, tomēr vēlaties. Tātad tā, ka tas mums būtu parasti ievietot vai dzēst jebkurš mezglā no saites saraksts ir ļoti atšķirīga atkarībā no tā, kur tas mezgls ir. Tātad, piemēram, jo norādes ir vienmēr norādot konkrētu vērtību, kad jūs izdzēst vai ievietot mezglu, Jūs vēlaties pārliecināties, ka rādītājs ir visi norādot pareizās lietas. Tātad, ja jūs vēlaties, lai, iespējams, ievietot jaunu mezglu ar vērtību viens iekšā šķiroto saiti saraksts, mēs visi zinām, šeit no attēla, kas notiek, lai iet starp galvu un divām, vai ne? Jo viens der labi tur. Bet veids, kādā mēs varētu darīt, ka ir vispirms dereferencing rādītāju no galvas un nosūtot ka vienam. Bet mēs nonākt problēmu šeit. Vai kāds redzētu, kāda problēma ir, ja mēs būtu pirmajā izlietota rādītājs no galvas līdz vienam? Kāda problēma, mēs varētu uzskriet ja mēs cenšamies pievienot šo uz priekšu mūsu masīva? Mērķauditorija: [dzirdams] PROFESSOR: Tieši tā. Tātad šeit mums ir rādītājs, kas bija reiz virzienā no galvas līdz diviem. Bet, ja jums atbrīvoties no tā rādītājs, norādāt to vienu, tagad mums nav ne jausmas kur doties, lai atrastu divus. Jo, kā jau teicu iepriekš, jūs esat ieguvuši milzu rieciens atmiņas datorā. Visi šie mezgli varētu nejauši mijas jebkurā vietā jūsu datorā. Un jūs nezināt, kā iet par atrast to. Un tāpēc jums ir nepieciešams, lai būtu norādes norādot uz visiem mezgliem beigās. Vai arī, ja jūs nejauši dereference viens bez pirmās piešķiršana vērtība, pirmkārt, jūs esat tikai gatavojas zaudēt viss pēc tam. Tātad, ko mēs ejam, lai darīt, ir, jūs varētu vispirms vēlas izveidot rādītāju mezglu vēlaties ievietot. Norādīt to, kur jūs vēlaties ievietot to, un tad pēc tam jums varētu norādīt galvu atpakaļ uz vienu. Vai tas ir jēga, lai visiem šeit? Liels. Domājiet par to kā, tāpat kā ķēdi. Ja jūs pievienot ķēdi, tas ir sava veida intuitīvs kā jūs iet par ievietojot to. Labi, tā ka faktiski ir daudz īsāks, nekā es domāju, ka būtu, piecu minūšu Spiel uz saites sarakstos. Vienkārši, lai jūs guys ir lēmums Pamatideja, kas tas ir. Šeit mums ir darba kārtība viktorīnas nulles. Neļaujiet šo iebiedēt jums. Es zinu, tas ir daudz informācijas. Tas izskatās ļoti biedējošu. Tā ir arī daudz, es domāju, CSC veida nosacījumiem. Lietas, piemēram, heksadecimālo stīgas, Norādes, dinamiskā atmiņas piešķīrumi ir ļoti biedējošu skan termini. Bet mēs ejam, lai izjauktu tiem uz leju, tie daži prakses problēmas Lai jūs puiši visi ir gatavi šo testu. Cik daudzi no jums, puiši ir jau sāku studēt? Labi, jūs puiši, iespējams, vēlas sākt iesākumam uz to, jo viktorīna ir rīt. Vai ceturtdiena daži no jums. Jā, tāpēc mēs esam gatavojas iet pār dažām prakses problēmām. Ja jūs puiši visi vēlamies, lai ņemtu out papīra lapas, zīmuli. Mēs ejam, lai vienkārši pavadīt Lielākā daļa mūsdienu sadaļas iet pār daži, kas tik jums puiši ir ideja par to, ko gaidīt uz viktorīnas. LABI. Pāris loģistikas detaļas, kā arī, lai ikvienam kurš nav bijis šo saiti tur, ja doties uz cs50.yale.edu, priekšpusē Šī lapa ir saite ka saka "Par viktorīna Zero". Saite jūs aizvedīs tur. Ja jūs neesat izlasījis, lūdzu, izlasiet to. Jo tā stāsta jums patiešām svarīgi informācija par viktorīnas. Es esmu gatavojas pull šo ārā no ka tikai tāpēc, fiziski, ja jūs guys nezināt, kur iet, mums būs problēmas. Un tāpēc, ja jūsu pēdējā ziņā ar A līdz N, dodieties uz likumu skolas auditorijā. Un, ja jūsu pēdējā sākas ar P līdz Z, dodieties uz Davies Auditorium. Un tas attiecas tikai uz cilvēki trešdienas nodaļā. Ja jūs lietojat viktorīnas par Ceturtdiena, jums iet uz SSS 114 kur jūsu lekcija parasti ir. Mērķauditorija: [dzirdams] PROFESSOR: O līdz Z, jūs gatavojas iet uz Davies auditorijā. Es esmu gatavojas mainīt to, vai ne? Ak, jā, tu vienkārši nespēj automātiski. Ak jā, tas ir jums Christa. Jā, mans slikti. Yep, O līdz Z, jūs gatavojas doties uz Davies Auditorim. Es esmu gatavojas noteikt šo, kad es augšupielādēt. Jā. Un tad arī kaut kas svarīgi prātā ir tas, ka Trešdiena, ja Jums ir oficiāli uzņemti trešdienas nodaļā, Jums ir veikt savu viktorīnas trešdien. Un, ja jūs esat uzņemti ceturtdien, Jums ir veikt savu viktorīnas ceturtdien. Un tas ir laikā klases laikā. Kur, es domāju, ka tas ir kā 1:00 līdz 02:15 trešdienās un 2:30-03:45 ceturtdienās. Ja jums ir par nesavienojamu konfliktus, Dekāna attaisnojumi ir vienīgā lieta, diemžēl, mēs varam veikt. Tāpēc, ka mums ir bijusi Lielākā daļa pieprasījumu pāriet no trešdienas līdz ceturtdienai. Ko mēs nevaram godu, ja vien Mums ir prāvesta pieprasījumu. LABI. Tātad, pirms mēs sāktu par Pāris prakses problēmām, Es esmu tikai gatavojas iet pa Andy noderīgi padomi, lai gūtu panākumus. Jūs guys, kad jūs mācīties, jums tiešām vēlas praktizēt rakstot kodu ar roku. Pirmo reizi es kādreiz paņēma CS viktorīnu, man bija ne prakse rakstīšana kods ar rokām pirms un tas bija ļoti šokējoši, cik grūti bija. Kad jūs puiši nav iekļuvuši ieradums rakstīt ārā visu, runa ļoti dabiski ir iespēja saņemt autocompleted kronšteini un semikoliem tur. Kad jūs rakstīt to ārā ar rokām, reizēm tas ir ļoti, ļoti viegli aizmirst semikolu, vai aizmirst aizvērt kronšteinu, vai aizmirst aizvērt kolu, vai kaut kas tamlīdzīgs. Tātad, ja jūs rakstīt kodu ar roku, tas ir ļoti atšķirīgs justies. Tātad, jūs puiši, ja jūs strādājat caur kādu no prakses problēmām, tas būtu labi, lai tiešām praksē šodien. Vai rīt, es domāju, ka, ja jūs esat ņemot viktorīna ceturtdien. Otrkārt, mums ir pēdējais, piemēram, astoņus gadus ir vērts prakses viktorīnas tiešsaistē. Šogad viktorīna, iespējams, būs ļoti, ļoti līdzīgi tiem visiem. Viņi visi ir ļoti līdzīgi. Jūs veida nokļūt stils veida jautājumiem ka mēs lūdzam, tad par tipa funkcijas, kas mēs rakstīt to, un tā tālāk, un tā tālāk. Tātad, ņem prakses viktorīnas, it īpaši ar laika ierobežojumu. 75. minūtē darīt viktorīna ir nav daudz laika sprīdī. Tas ir ļoti, ļoti ilgi. Un lai jūs puiši tiešām vēlaties lai pārliecinātos, ka jūs guys ir ieradums rakstīšanas kods ar rokām ātri. Tāpēc, ka jūs nevēlaties pirmais laiks, lai redzētu viktorīnu šī garuma būt jūsu viktorīnā. Jūs guys tiešām vēlaties pārliecināties ka jūs praksē iepriekš. Ceturtkārt, jūs vēlaties, lai pārskatītu lekciju un sadaļā diapozitīvi. Jums nav iegaumēt lietas. Patiesībā, visi ir pieļaujama viena lapa no baltas papīra piezīmes, priekšā un aizmugurē. Jūs guys var rakstīt vai rakstīt. Ja jums atrast sev nepieciešams iegaumēt kaut kas, nodot to uz leju šajā lapā. I garantija jums, jūs nevēlaties iestrēdzis vidū šī viktorīna ir līdzīgi, oh yeah, kāda ir runtime šāda veida pret šāda veida. Vienkārši ielieciet to uz leju un kopēt to tieši no jūsu piezīmi lapas. Tad jūs faktiski var tikai izmantot jūsu smadzenes domāt par problēmām nevis atgādināt faktus. Un tā patiešām izmantotu jebkuru niša detaļas ka jūs domājat, ka jums ir nepieciešams iegaumēt, plunkšķis to uz leju par pārskata lapā. OK, kādi jautājumi loģistikas par viktorīnu Pirms mēs sākam kādu viktorīna problēmas praksē? Yeah? Mērķauditorija: man nav bijusi iespēja apskatīt viktorīnā [nedzirdama] bet tas būs Programma visbiežāk, vai tur arī būs, piemēram, zināšanu jautājumi? PROFESSOR: Tas ir daudz. Tātad, tā, ka es būtu aprakstīts viktorīnu is-- man kopā dažas prakses problēmas ka es velk no visiem viktorīnas. Bet jūs redzēsiet, ka tur ir divi galvenie veidu jautājumi, mēs lūgsim jums. Viens no tiem ir ļoti zems līmenis detaļa sīkumi. Mēs došu jums nelielu rieciens kodu un teikt, vai ir kļūda šeit? Kāds būtu izdrukāt šeit? Kāda būs šī kods ražot, un tā tālāk. Tik ļoti zema līmeņa informācijas detaļas. Un par Flip pusē, mums būs ļoti augsta līmeņa zināšanām balstītas jautājumi. Vai jūs varat paskaidrot, ko atšķirība starp bināro meklēšanu un lineāru meklēšana ir? Kāpēc mēs gribam, lai izmantojiet vienu pār otru? Iespējams, kāda ir GDB? Kāpēc mēs vēlamies izmantot gdb? Augstākā līmeņa, vairāk fundamentāls izpratne jautājumi. Tātad jūs redzēsiet maisījums divi no tiem par savu viktorīnā. Kaut kas cits, pirms mēs galvu taisni tajā? LABI. Mērķauditorija: Vēl viens. PROFESSOR: Ak, vēl viens. Piedodiet. Mērķauditorija: Jā, tas viss ir labi. Tātad jūs sakāt, 75 minūtēm tiek pārāk īss, līdzīgi kā tas ir maz ticams ka mēs beigsies? Vai, piemēram, 75 minūtes ir tieši tik daudz laika kā mums būtu nepieciešams, ja mēs būtu pienācīgi sagatavots? PROFESSOR: OK, lai viktorīna ir izaicinājums. Tas noteikti ir izaicinājums. Jūs atradīsiet sev īsā laikā. Jūs, iespējams, gatavojas hit, piemēram, 10, 15 minūtes, lai iet, un ir līdzīgi, sūdi. Man ir tik daudz vēl jādara. Un tas ir pilnīgi naudas sodu. Ikvienam ir gatavojas justies tāpat. Tikai jābūt ļoti labi apzinās cik daudz laika jums ir. Un tā tas ir iemesls, kāpēc es jums saku guys do prakses viktorīnas. Jo tas patiešām dod lielisku sajūtu no tā, ko viktorīna būs tāpat. Tātad, ja jums atrast sev būt iespēja gatavo praksi viktorīnas ar labu summu laiks, jūs varat temps sevi labi, tad jums nebūs problēma trešdien vai ceturtdien. Cool. Tātad, ja ikvienam wants-- es domāju lielākā daļa cilvēku ir papīra lapas out jau. Es esmu gatavojas būtībā vienkārši dotu jums paraugu jautājumiem, sniegt jums puiši, piemēram, A dažas minūtes, lai darīt to. Un mēs iet pār kā klasē ko atbildes uz tiem ir. Tātad tas ir ļoti tipisks agri jautājums Mēs jautāt jums, tikai konvertējot skaitļi starp dažādām bāzēm. Binārā, kā jūs guys var Atsaukt, ir pamats divi. Decimal ir pamats 10, vai tas, ko mēs kā cilvēki parasti interpretēt. Heksadecimālais ir bāze 16, kas ir nulle caur deviņām, kā arī A līdz F. Tātad tur ir četri cipari Esmu lūdz jums puiši, lai pārvērstu šeit. Es došu jums patīk, trīs līdz četras minūtes domāt ar to, kā mēs varētu iet par risināšanas šo. Mērķauditorija: Vai mēs atļauts kalkulatori? PROFESSOR: Jums nebūs vajag kalkulatori, jā. Es domāju, ka pamata papildinājums, es domāju, ir visi jūs puiši tiks lūgts darīt. Un tieši tāpēc es veida ir sajūta no tā, kad visi tiek darīts, meklēt, vilnis, es nezinu, smaids, izskatās laimīgs, ja jūs esat darīts. Jā. Varbūt vēl pāris minūtes. Labi, pieņemsim celt to. Es esmu mērķtiecīgi gatavojas dot jums puiši mazāk laika nekā jūs, iespējams, ir nepieciešams, lai darīt dažas no šīm problēmām, vienkārši tāpēc, ka es gribu, lai pārliecinātos, ka mēs caur ķekars problēmas. Tāpēc neuztraucieties, ja jums nav ir iespēja, lai pabeigtu. Pilnīgi OK, ja vien jums ir ideja par to, kā iet par to. So iesim uz priekšu un darīt pirmo. Tātad, pirmkārt, vai kāds vēlas man pateikt binārā, ko darīt katrs no šiem cipariem pārstāvēt ziņā savām vērtībām? Yeah? Mērķauditorija: Divi uz jauda nulle, divi pret vienu. PROFESSOR: Tieši tā. So. Tiesības, tāpēc parasti kad mēs esam bāzi 10 visi tie pārstāv, ir, piemēram, 10 uz pamatnes nulles, pa labi? Tas ir jūsu savu vietu. Visas jūsu 10 s vieta ir ir 10 ar jaudu viens. Jums 100 s vieta ir 10 ar jaudu diviem. Neatkarīgi bāze tu esi notiek darīt ar tieši to pašu, tikai ar atšķirīgu bāzi. Tātad binārā, viss, kas ir, ir pamats divi. Jūs esat gatavojas pārvērst visu cipariem divās lai kāds spēks Šīs cipars. Un tā šajā ziņā mēs var būt vieglāk veids ka tie var pievienot uz augšu vai Apkopojot visus numurus, lai pārveidot bāzi 10. Tātad vai kāds vēlas man pateikt, ko atbilde uz pirmo ir bāzē desmit? Mērķauditorija: Divi, [nedzirdama] PROFESSOR: Jā. Mērķauditorija: 42. PROFESSOR: 42, tur jums iet. Tātad, kā mēs saņēmām šādu atbildi bija par darot divas pirmās, kas ir divi. Plus divi trešais, kas ir astoņi. Plus divi līdz piektais, kas Ir kāds ir palicis pāri. Jūs Apkopojot tos, un tas ir 42. Vai kāds sajaukt par to, kā mēs saņēmām, ka? Tātad pamata papildinājums, piemēram, Es teicu, jums vajadzētu būt OK. Ja tā nav, labi, mēs varam nodarboties, ka pārāk. Bet tas viss ir labi. Cool. Vai kāds vēlas dot man atbildētu uz otru, kā arī? 50? Labs. Ikviens sajaukt par to, kā mēs saņēmām, ka vai nu? Cool, es ņemšu Atbildes uz nākamo slaidu. Tāpēc neuztraucieties, ja jums ir nepieciešams, lai kopētu to uz leju. Labi, tāpēc heksadecimālo ir nedaudz sarežģītāks. bet es esmu gatavojas parādīs guys īsceļu, kā to izdarīt. Tātad heksadecimālo, kā jūs Atcerieties, ka visi ir jābūt 16. Un tāpēc, ka mēs kā cilvēki nav reāli ir 16 numuri, kas raksturo, mēs ejam no nulles līdz deviņiem, kas mūsu pirmā 10 vērtības, un tad mēs no A līdz F, kas ir nākamie seši vērtības. Un tā vieglākais veids, kā aiziet no jebkurš bināro numuru uz heksadecimālo ir lauzt tos uz pusēm. Un tāpēc jebkurš bināro numuru mēs sniegsim Jums, iespējams, būs no astoņiem cipariem. Jūs varat vienkārši pauze tos vidū. Tātad pirmais one-- viens viens, viens viens, viens, viens, viens viens. Veida domāju to uz augšu, jūs zināt, izdarīt slīpsvītra vai komats starp tiem. Un jūs varat pārvērst tieši kāds tas ir pirmais skaits heksadecimālo, un kāds šeit ir otrais no heksadecimālo. Līdz ar to atcerēties no kopējās apzīmējums, Ko heksadecimālo vērtības sākt? Mērķauditorija: Zero. PROFESSOR: 0x. Tātad mēs zinām, ka jebkurā laikā, lūdzam Jūs pārvērst jebkuru numuru heksadecimālo, vai jebkurā laikā jūs redzat kādu numurs, kas sākas ar 0x, jūs zināt, ka tas ir heksadecimālā vērtība. Un tad jūs gatavojas lūgt noteikt, kādi šie divi cipari ir. Un kā jūs to izdarītu, balsu skaitīšanas up ka puse un skaitīšana up, ka puse. Tātad, šajā piemērā, kas būtu viens, viens, viens, viens būt? Kādu vērtību tas var būt? Ka gribētu būt F, vai ne? Ka gribētu būt 15. Tātad tas būtu F. One, viens, viens, viens šeit ir arī F. Tātad viens, viens, viens, viens, viens, viens, viens, viens heksadecimālā, viss tas ir, ir 0xFF. Tā kā šī puse pārstāvēja F, vērtību 15, un šī puse pārstāvēja F vērtība 15. Jo atceros, mēs esam skaitot no nulles līdz deviņi. A ir, piemēram, 10, B ir, piemēram, 11, F ir 15. Vai, kas padara sajūtu ikvienam cik mēs saņēmām no bināro uz heksadecimālo? Mērķauditorija: Un tā kā mēs nokļūt 15 no vienas, vienu, viens, kas ir viens? PROFESSOR: Jā, tas ir bināro, vai ne? Iedomājieties, tas ir tikai bināro numuru. Tātad jums ir divi ar 0., kas ir viens. Mērķauditorija: Ak, OK. Tātad jūs vienkārši kopā to ārā. PROFESSOR: Jā, un pēc tam jūs vienkārši kopā ka out. Tas ir viss, tas ir. Mērķauditorija: OK. PROFESSOR: OK. Mērķauditorija: Tātad jūs iet no binārā uz decimālo uz heksadecimālo? PROFESSOR: Tas ir Vieglākais veids, kā to darīt, jā. Jūs neesat gatavojas decimālo jo decimal ir tikai nulles līdz deviņi. Mēs esam tikko veida sadalot šo augšu divās. Mērķauditorija: [dzirdams] izmantojot decimālo atrast ko tas atbilst līdz heksadecimālā. PROFESSOR: Es domāju, jūs esat balsu skaitīšanas up izmantojot pamata math. Mērķauditorija: Jā. PROFESSOR: Jā, diezgan daudz. Tas ir mazliet mulsinoša. Bet tikai zinu, ka jums var sadalīt neatkarīgi šī vērtība ir spēkā tikai daļās. Paskaties, kas tas ir bināro? Kāds numurs ir tas, ka? Tas būs kaut kas no nulles līdz F. Te ir arī būs kaut kas no nulles līdz F. Un tad jūs varat vienkārši ielieciet šie divi labi tur. Mērķauditorija: OK. PROFESSOR: Yep. LABI. Tātad jūs puiši vēlas izmēģiniet nākamo tad? Nulle, viens, nulle viens, viens, nulle, viens nulle. Es došu jums puiši, piemēram, 30 sekundes, jo jūs, iespējams, nezināja triks, kā to izdarīt ātrāk. OK, kāds vēlas iegūt šo vienu shot? 0x5A. PROFESSOR: 0x5A. 5a. Labs. Tātad, tas šeit būtu be-- vēlaties lai pastāstītu mums, kā jums tas? Pirmkārt, kā jūs iegūt piecu? Mērķauditorija: Jo nulli, viens, nulle, viens ir pieci. PROFESSOR: Vai visi saprotam kāpēc nulle, viens, nulle, viens ir pieci? Jūs esat ieguvuši vienu šeit. Jums nav nekā diviem ar pirmo. Divos uz otro, tevi ir viens, kas ir četri. Tātad jūs pievienot četras plus viens, jums ir pieci. Ikvienam labs? LABI. Un tad, kas tas ir un kāpēc? Ko numurs Vai atbilst? Mērķauditorija: 10. PROFESSOR: Un ko tas bāzi divās? Mērķauditorija: [dzirdams] PROFESSOR: Tieši tā. Tātad šis otrais vērtība šeit būtu 0x5A. Ikvienam labi par to, kā pārvērst? Tas ir daudz vienkāršāk, nekā jūs domājat, ka tas ir. Es tikai vēlos, lai pārliecinātos, jūs zināt noderīgus padomus un triku par to, kā to izdarīt. Mērķauditorija: Kāpēc jūs vienkārši sadalīt tas ir, piemēram, ka pa vidu? Vienkārši būt, piemēram, OK, es esmu tikai gatavojas rūp šie pirmais [dzirdams]? PROFESSOR: Jo tas ir faktiski veids heksadecimālo vērtības tiek pārstāvētas. 0x, kas faktiski nozīmē, nekas cits kā stāsta jums ka tas ir heksadecimālo numuru. Un tas vienmēr ir pirmie četri cipari. Un tas vienmēr ir pēdējie četri cipari. Un tāpēc šie divi cipari tikko atbilst dažādiem bitiem. Mērķauditorija: Tātad mēs always-- PROFESSOR: Tu esi vienmēr gatavojas saņemt astoņus vērtību bitiem. Mērķauditorija: Vai tas ir tāpat kā lieta šeit vai ka lieta visā? PROFESSOR: Tas ir tikai lieta datoros, yep. Mērķauditorija: OK. Awesome. PROFESSOR: arī, lai šajā piemērā mēs pārvērš no binārā uz decimālo, un no bināro uz heksadecimālo. Jūs guys vēlaties, lai pārliecinātos, ka jūs arī prakse notiek otrādi. Tātad, ja es tev 0xFF, jūs varētu zīmēt, ka no binārā, vai ne? Jūs konvertēt F uz bināro, kas ir viens, viens, viens, viens, konvertēt F uz bināro, kas ir viens, viens, viens, viens. Tātad mēs varam lūgt jums darīt otrādi. Tātad decimālo uz bināro, vai heksadecimālo uz bināro. Tātad jūs vēlaties, lai pārliecināts, ka jūs zināt, abos virzienos. Mēs droši vien jautāt jums abu kombinācija. Jā, jums ir jautājums? Es varu see-- tu esi labs? Mērķauditorija: Jā. PROFESSOR: OK. Es esmu labs, lai izdzēstu šo? Liels. Labi, tāpēc atbildes ir šeit, ja kāds ir ziņkārīgs vēlāk un saņemt sajaukt. LABI. Mērķauditorija: Vai tas svarīgi, ja mēs ieliekam Mūsu burti Capitol vai mazajiem? PROFESSOR: Tas, jo heksadecimālā, pēc vienošanās, visas rakstzīmes lielajiem burtiem. Tātad caur F ir būs lielos. Ja jūs likts mazo burtu A, es nezinu ja mēs neizbēgami atzīmētu to nepareizi. Bet teorētiski, tas nav tehniski kā jūs vajadzēja būt tā. Tāpēc viņi visi būtu lielie burti. Jā, labs jautājums. LABI. Otrais jautājums. Apsveriet šo skaisto programmu šeit. Es uzdot jautājumu, Es atgriezīšos šo. Tātad, pirmkārt, to, kas ir iekšā standarts io.h tas interesēt programmai? Otrkārt, tas, ko dara spēkā neesošu neizsaka rindā trīs? Un, treškārt, ko tas atgriežas nulle no Galvenais, kā līnija seši, parasti neizsaka? Ja jūs puiši vēlas rakstīt tiem uz leju, jo man ir, lai pārslēgtos atpakaļ ar slaidu tikai, lai jūs varētu redzēt kodu. Tas ir piemērs, kā, piemēram, varbūt augstāka līmeņa jautājums, kur mēs lūdzam ko lietas nozīmē programmā. Ikvienam laba man doties atpakaļ uz slaidu? OK, atdzesē. Tāpēc es došu jums puiši, piemēram, varbūt trīs minūtes, lai apskatīt šo vienu nekustamo ātri. Labi, tāpēc šī ir kā diezgan viegli, konceptuāli. Vai kāds vēlas man pateikt, kas ir pirmais iekšā ar hash iekļaujot Mūsu standarta io.h bibliotēkas fails? Kāpēc mums ir nepieciešams, ka bibliotēku iekļauta šajā programmā? Ko šeit mēs to vajag? Yeah? Mērķauditorija: Vai tas ir tad, kad jūs nodot šo printf? PROFESSOR: Tieši tā. Tātad printf, jebkurā laikā jums veikt ieguldījumu no lietotāja un drukāt kaut uz ekrāna, kas ir standarta ievades, izvades bibliotēka. Domājiet par to, ka way-- ievadi, izvadi. Vai man ir izeja? Jā. Tāpēc es zinu, ka es esmu vienmēr gatavojas nepieciešams standartizēt i.o bibliotēku. Tātad printf ir funkcija ar kuru mums ir nepieciešams, lai piekļūtu un hashtag ietver standarts i.o bibliotēka. LABI. Otrkārt, tas, ko tas neatbilst patiesībai neizsaka? Mums ir int galvenais (spēkā neesošs), ko dara neesošu šeit domāju šeit uz līnijas trīs? Jā, uz muguras. Mērķauditorija: [dzirdams] PROFESSOR: Tieši tā. Līdz ar to atcerēties, mēs esam iemācījušies sākot ar mūsu PSET ka jūs faktiski var norādīt komandrindas argumenti, ka jūsu programma, kas jums galvenā funkcija, kas nepieciešams, jo jums, lietotājam, to sauc. Ja mums ir spēkā neesošs, tas nozīmē, ka jums varētu vienkārši palaist programmu tieši bez komandrindas argumentus. Ikvienam skaidrs, ka? LABI. Un visbeidzot, kāpēc mēs darām raizēties šī atdeve nulle lieta šeit? Kāpēc mums pat ir int galvenais? Kāpēc mēs nevaram vienkārši ir anulēts galvenais spēkā neesošu? Yeah? Mērķauditorija: Tieši tā, ka mēs varam pārliecinieties, ka programma ir iziešanas veiksmīgi, kā pretstatā, ja tas bija numurētas. Un mēs zinām, ka tas ir cita veida kļūdas. PROFESSOR: Jā, tieši tā. Tas ir tikai ļoti parasto lieta, ko mēs darām, ir tā, ka tikai beigās jūsu programma, tikai, lai pārliecinātos ka jūsu galvenā funkcija darbojas pareizi, mēs vienmēr vēlamies darīt atgriezties nulles. Pat ja mēs varam vienmēr neredzu, ka drukāts jebkur. Jo, kā programmētāji, jūs zināt, ja Jums ir daudz dažādu līnijas kodu un jūs nezināt, kur tie notiek nepareizi, un ja kļūda notiek, jūs vēlaties pārliecinieties, ka jūs saņemsiet, ka kļūda. Un tā parasti ir, ja kaut kas noiet nepareizi mums būs atgriešanos viens tikko lai pārliecinātos, ka mēs zinām, ka tā ir. Tātad, ja jūs redzat atgriešanās nulle, ka parasti nozīmē, ka jūsu programma ir veiksmīgi izpildīts. Labs? Cool. OK, otrā programma šeit. Uzskata, ka. Un, ja jūs guys redzēt peldēt, jūs guys var droši ir laba ideja par to, Es esmu par to, lai jums jautāt. Tātad, ja šī programma izpilda, kā jūs varat redzēt, Es esmu pasludina peldēt iekšā manu galveno funkciju. Es esmu nosaucot to "atbildēt," un es esmu nosakot kas vienāds ar vienu dalīts ar 10. Es esmu izdrukāt, vienā zīmi aiz komata, ka peldēt. Un tad es esmu atpakaļ nulli. Tātad, kad izpildot programmu, domāju, ka atpakaļ uz mantkārīgs tagad, Šī programma drukā 0,0. Kā mēs visi zinām, cerams, mēs visi zināms, viens dalot ar 10. nav 0,00, tas ir 0.1. Bet paskaidrot, kāpēc šī programma domā ka 1 dalīts ar 10 izdrukām 0,1 citai nekā 0,1? Es došu jums puiši varbūt, piemēram, 30 sekundes, lai tikai ātri domāt par to, ka un es iešu atpakaļ uz programmu. LABI. Ikviens vēlas, lai arī tā shot? Jo trīs teikumus vai mazāk, jo parasti mēs esam gatavojas ierobežot visas atbildes trīs teikumus vai mazāk tāpēc jums nav vienkārši atvemt izlases lietas uz jūsu viktorīnā. Jā, ņem shot. Mērķauditorija: Tāpēc es domāju, ka tur ir šis lieta, ko sauc, piemēram, [nedzirdama] Tātad tur varētu būt, piemēram, tur varētu būt, piemēram, 0,09, ka, ja jūs drukāt pirmais ciparu, tas būtu uz 0.0? PROFESSOR: Close, ne gluži. Christabell? Mērķauditorija: Jūs esat dalot vienu un 10, un viņi abi ir veseli skaitļi. Un tā, kā tas notiek uzglabāt tā ir kā vesels skaitlis. Un tā tuvākais skaitlis varētu būt 0,0. Un tā tas ir 0.1. PROFESSOR: Jā, tas ir patiešām labs. Tas ir pareizā atbilde. Tātad šī ir ļoti mulsinoši Koncepcija par daudz bērniem. Un es tiešām gribu, lai pārliecinātos, ka Tas pastiprina ikviena galvā. Tātad, ko mēs saucam peldošs punkts neprecizitāte, ja iemesls, kāpēc daudzi Sava programmu mantkārīgs nestrādāja sākotnēji bija tāpēc, ka Jūs aizmirsāt nodot savu mainīgo. Tātad, ko teica Christabell bija pilnīgi pareizs. Pluds būtības ir neprecīzs. Jo ar datoru, labi, mēs esam ierobežots daudzums bitu atmiņas mēs varam izmantot, lai pārstāvētu numuru. Tā, piemēram, šī CS50 ID is-- Es domāju, ka tas ir 64-bitu dators. Pluds var pārstāvēt tikai ar ierobežotu summu šiem bitiem. Un tā 0.1 ar bezgalīgu nullēm, Tas ir bijis 0.1 ir, vai ne? Bet mēs nevaram faktiski uzglabāt ka vairāki mūsu datorā. Mums vienkārši nav Nepietiek atmiņas to darīt. Un tā tuvākā tuvināšana to, kas glabājas atmiņā ir faktiski kaut kas līdzīgs 0,000 kaut ko, kaut kas, kaut kas, kaut kas. Kas, kad jūs saīsināt tas, kārtās līdz 0.0. Un tā šis piemērs ir tikai viens kas parāda daudz jautājumu mums, kad mēs esam mēģinot nepareizi darīt math bez liešana kā citā skaitlim. Tik vienkārši jāuzmanās no šī realitāte. Uz viktorīnas, ja mēs jums bloka kodu, un tas ir, piemēram, ko izdrukā beigās? Un, ja tas ir daži izlases vērtība jums guys vajadzētu zināt, kāpēc tas notiek. Yeah? Mērķauditorija: Saīsināt ir atbrīvoties no viss pēc noteikta brīža? [Dzirdams] PROFESSOR: Jā, tik tiešām tas ir tiešām slikts piemērs, jo 0,100 kāds faktiski varētu saīsināt līdz 0,1. Bet, ja tu būtu palaist it-- man nav atceros, jo pagājušajā gadā tie vadīja to uz citu programmu. Viņi skrēja to kaut ko sauc CS50 Appliance, kas ir atšķirīgs no ID. Tas bija 32-bitu sistēma, es domāju. Un tā tur bija dažādi skaitļi. Bet būtībā, tikai zinu, ka viss jēdziens saīsināšanu un cik tas tikai saīsina lietas off. Un tāpēc, ja to rounds-- Mērķauditorija: Bez noapaļošanu. PROFESSOR: Tieši tā. Jā. Cool. Hi, uz muguras. Mēs esam tikai iet pār daži viktorīna pārskatīšanas jautājumiem. Viss kārtībā. Tāpēc uzskatu citu programmu šeit. Es esmu gatavojas sniegt jums puiši pāris minūtes, lai izlasītu par šo. Tas ir kaut kas bija ļoti nesen, ka es domāju, ka pūta daudz no jums Puiši prātos. Bet mēs esam gatavojas runāt caur šo atkal tikai lai pārliecinātos, ka jums izprast to pilnībā. LABI. LABI. Ikviens ir nepieciešams vairāk laika, lai izlasīt šo kodu? LABI. Tāpēc man šķiet, ka šajā programmā es esmu izveidojot divas virknes, izmantojot GetString. Viens sauc s un viens sauc t. Un, ja viņi ir vienāds vienāds ar otru, tai vajadzētu drukāt "You ierakstiet to pašu. " Bet elsewise, tas varētu drukāt, "You drukāti dažādas lietas, "vai ne? Šķiet ļoti, ļoti vienkārši. Bet, tomēr, ja es tiešām mēģināt rakstīt šo programmu, šķiet, ka pat tad, kad es ievades precīzu pašas stīgas, tas joprojām izdrukā, "You drukāti dažādas lietas! " Vai kāds vēlas veikt shot at kāpēc šī programma vienmēr atbild, ka izejvielas ir atšķirīgs, pat kad paši vārdi ir vienādi? Tātad, ja es būtu input-- David mīlestību izmantot piemēru, piemēram, mamma, vai ne? Mazie M-O-M S, T vienāds mazo burtu M-O-M. Ja es ilga to caur ka kods, kāpēc tas tā izdrukāt "Ierakstītais dažādas lietas?" Vai kāds ir nepieciešams vairāk laiks padomāt par šo? Labi, es domāju, ka mēs esam labi. Yeah? Mērķauditorija: Labi, tāpēc tas ir kaut kas par kur tas ir saglabāts atmiņā, vai ne? PROFESSOR: Yep. Mērķauditorija: Kur tas ir, piemēram, ja tas string s uzglabā atmiņā spot-- Es esmu izgudrojot this-- ir nulle. PROFESSOR: Protams. Mērķauditorija: Un string t tiek uzglabāts atmiņas vietas, piemēram, 167, un pēc tam nulle nav vienāds 167. PROFESSOR: Tieši tā. Labi, tāpēc atcerieties, tas neticami atklāsme mums paskaidroja jums puiši pagājušā nedēļā, ka stīgas nav īsti nepastāv? Kad mēs izveidot kaut ko sauc stīgu mēs esam, patiesībā, radot kaut ko sauc char zvaigzne. Kas visiem tas ir ir rādītājs, lai string vai masīva chars. Un tā šajā piemērā, ja es bija ieejas M-O-M turpmākā ka mans dators varētu uzglabāt tā ir ietvaros atmiņas slīpsvītru nulles, vai ne? Šīs četras rakstzīmes, simboli, būtu jāglabā kaut kur. Un tad šie četri rakstzīmes, reversā slīpsvītra nulle, tiek glabāti kaut kur citur, vai ne? Man nav ne jausmas, kur adreses ir, viņi kaut kur manā datorā. Bet man nav īsti zināt, kur viņi ir. Kad es izveidot virkni s, viss, kas tiešām ir ir rādītāju uz sākt šīs virknes. Un, kad es izveidoju šo t vērtību viss, kas ir rādītājs, lai šeit. Un tad, kad jūs mēģināt vienādot un pārbaudīt lai redzētu, vai ir s Vienāds vienāds t, dators ir tiešām tikai atgriežas tu adrese šī m un adresi, ka M. Un tāpēc, ka viņi ir divi atsevišķas detaļas datu kas tiek glabāti divās dažādās adreses savā datorā, Datora nekad gatavojas atzīt tos kā pats. Vai kāds vēlas dot shot to, ko mēs būtu jādara, ja mēs vēlējāmies, lai labotu šo un pareizu braukšanas programmu vietā? Padomājiet par to, ka uz pāris sekundēm. Kas mums ir jāmaina, lai Get šo programmu darbību veids, kā mēs gribam, lai darbotos? Jā, vēlas pieņemt stab pie tā? Mērķauditorija: Vai mēs cenšamies dereference rādītāju un pārbaudīt, izmantojot masīvu? PROFESSOR: Tas ir viens veids, kā to darīt. Tātad, kādi ir jūsu vārds atkal? Es atvainojos, atgādināt mani. Zee: Zee. PROFESSOR: Jā, lai to, ko Zee ierosināja būtu absolūti strādāt. Tiesības? Mēs varētu dereference rādītāja un faktiski iet un piekļuve fiziskie dati iekšpusē šeit. Un mēs varam tikai salīdzināt visu ekrānu. Mēs varam teikt, OK, rādītājs, dod man to, kas ir iekšā šeit. Tas atgriezt m. Un es teiktu, rādītājs, dod man to, kas ir iekšā šeit. Atgriezt m. Vai šie maču? Jā. Tad mēs virzāmies tālāk. Mēs pastāvīgi pārbaudot visu divas virknes visu ceļu līdz beigām un redzēt, ja tie ir vienādi, ja visas vērtības ir vienādas. Un, ja visas vērtības ir vienādas, tad mēs zinām, ka stīgas ir taisnība. Absolutely, tas, kā mēs varētu to darīt? Vai kāds sajaukt uz kādu no šo? Visa koncepcija cik stīgas ir tiešām tikai norādes, un kā tie nav tiešām pastāv? Un kāpēc mēs kļūdas tāpat, kā mēs to? Jo es garantēju jums, puiši, norādes un stīgu piešķiršana un atmiņas gatavojas nākt klajā. Yeah? Mērķauditorija: [dzirdams] dereference tas, jūs vienkārši ielieciet zvaigzni [nedzirdama] PROFESSOR: Labais. Tātad, lai derererence rādītāju līdzekļus doties uz konkrēto adresi rādītāja un iegūt datus, vērtību tur. Un veids, kā to darīt, ir zvaigzne rādītājs. Nejauciet to. Mērķauditorija: [nedzirdama]. PROFESSOR: Jā. Mērķauditorija: Tātad jūs varat vienkārši uzrakstīt ja zvaigzne s vienāds vienlīdzīgi zvaigzne t. PROFESSOR: Nu, nē. Nē. Mērķauditorija: Tas nav pietiekami labs, vai ne? PROFESSOR: Tas nav, tāpēc, ka tu esi tikai pārbaudot pirmo burtu. Jūs, iespējams, gatavojas vajag kādu no cilpas veida, ka uzsvērts, caur katru raksturs abos stīgas. Jā. Tātad, ja jūs vēlaties, lai vienkārši pārbaudīt, lai redzētu ja viņi sāka ar vienu un to pašu, jūs varat darīt, ja, zvaigzne s ir vienāds ar zvaigžņu t. Tad jūs zināt, ka vismaz tie sākās ar tāda paša rakstura. Yeah? Mērķauditorija: Tātad ceļš Jums tas būtu tāpat iegulto cilpas vai rādītāju? PROFESSOR: Jā. Diezgan daudz tikai par cilpu. Atcerieties, David klasē minēja bezmaksas sintaktisko cukura? Un viņš bija tas ļoti mulsinoša lieta zvaigžņu t plus viens, ja tas būtu integrēt cauri un tas pārvietojiet rādītāju? Vieglāk veids, kā to tas ir tikai t i. Tātad tas ir tikai masīvs. Tā, ka jums būs par cilpa, kas ilga no nulles līdz i, kur i ir garums no string, jūs varētu vienkārši rakstīt, ka tā vietā, lai dara Visa rādītājs, atsauce lieta. Tātad šīs lietas ir tieši ekvivalents datorā. Jūs puiši, iespējams, nebūs jāzina, ka, bet tas ir labi, lai tikai veida ir uz muguras savu prātu. Tikai zinu, ka dators atzīst dažādus blokus kodu kā vienu un to pašu. Tā kā šis ir tikai daudz lietotāju draudzīga mums piedāvāt to kā tas ir masīvs. Tas ir tikai vieglāk. Mērķauditorija: Tātad izmantot strlen patīk, get-- PROFESSOR: Jā. Mērķauditorija: OK. PROFESSOR: Jūs varētu izmantot strlen vai, ja jūs nebija strlen jūs varat vienkārši darīt up līdz jūs hit slīpsvītru nulles gan. Nu varētu strādāt. Jā. Mērķauditorija: Tātad, tas ir, lai izlietota ik vienu rakstzīmi ja mēs patiešām rakstot šo kodu, mēs varētu vienkārši darīt t kronšteini i patīk ar zvaigzni priekšā? PROFESSOR: Jā, ir vienāds vienāds s kronšteins i, un pēc tam saglabāt pārvietojas i leju, līdz jūs hit beigām. Jā, tas ir tas, ko tu darītu. Un es tiešām ir nākamais piemērs, kad mēs faktiski rakstīt strlen lai jūs guys būs laipns no nokļūt spēlēt aptuveni ar to mazliet. Tāpat ir ar ikvienu skaidrs tikai atmiņā, stīgas, Pointers, kvalitātes adreses? Daži augstāka līmeņa jēdzieni, kas jums griba pārliecināts jāzina par viktorīnas rīt. Viss kārtībā. Labs. Yep. Labi, tā viena lieta, ka mēs arī uzdot tu, kā mēs katru gadu uz viktorīnu, ir, Pieņemsim, ka jūs esat aizmirsuši (kas mēs, šķiet, aizmirst to darīt katru gadu) kurā header fails strlen ir deklarēts. Un tāpēc mums ir pārrakstīt to sevi. Šeit ir saraksts ar pamatnostādnēm ka mēs varam piedāvāt Jums puiši, kur jums pieņemt, ka s stīgu nebūs spēkā. Jūs varat pieņemt, ka s būs izbeigts ar slīpsvītru nulles. Tātad, jūs zināt, ka tas, ko tas beigsies ar. Un, piemēram, ka garums sveiki būtu pieci. Tātad jūs varat pieņemt, ka sveiki būs pieci, H-E-L-L-O. Jums nav pieņemt, ka krēsla nulles kontus garumu. Šī pēdējā lieta šeit, nav jāuztraucas par skaitlim pārpildes. Vai kāds atceras kāds skaitlis pārplūdes ir? Mērķauditorija: sniedzas ārpus garums [nedzirdama]. PROFESSOR: Jā, jūs varat izskaidrot mazliet, ko tas nozīmē? Mērķauditorija: Tātad, es domāju, tas iet atpakaļ uz truncating piemērs agrāk. Bet, ja jums ir tikai tik daudz numurus kas pārsniedz bitu skaitu ka jūs faktiski var piešķirt to ka tas būs tikai veida nogrieztas. PROFESSOR: Jā, tā tālāk tipisks dators, cik bitus mums ir? Mērķauditorija: 32? PROFESSOR: Jā, 32, pa labi. Un tā tas ir, ko, četri miljardus, divi miljardi? Četri miljardi, līdz četriem miljardiem pozitīvi veseli skaitļi, vai ne? Divi miljardi negatīvs, divi miljardi pozitīvs, atkarīgs no tā, kā jūs vēlaties to darīt. Un tā būtībā mēs varam būt pietiekami veseli skaitļi, kas var sasniegt pat diviem līdz 31 mīnus 1, vai ne? Tāpēc, ka tad, kad mēs hit divi līdz 32., mums nav ir, ka daudz atmiņas mūsu datorā. Un tā, teorētiski, es varētu nākt ar vairākiem kas ir, piemēram, divi līdz 46.. Tas ir milzīgs-ass numurs, bet teorētiski jūs varētu. Un tā skaitlim pārpildes ir, ja jūs mēģināt izveidot veselu skaitli, kas pārsniedz to, dators spēj uzglabāt. Un tāpēc jums puiši par šis paraugs nav jāuztraucas par mums sniedzot jums gigants virkne, kas ir divas līdz 32. chars garš. Tas būtu īsti nozīmē. Labi, tāpēc es esmu tikai gatavojas sniegt jūs guys bāzes struktūra to. Jūs esat gatavojas izveidot int strlen kur funkcija sauc caurlaides, char zvaigzne, vai stīgu, rādītāju uz virkni sauc s. Labi, visi kopēt, ka uz leju. Cool. Oops-- cits veids. Tātad tas ir veida, piemēram, grūtāk gabals problēmas, tāpēc es došu jums puiši varbūt pieciem līdz sešas minūtes līdz veida Brainstorm un rakstīt šo funkciju veic. Mērķauditorija: Mums nav konts [nedzirdama] mums nav jāizmanto vesels skaitlis? PROFESSOR: Nē, jums nav. Es došu jums puiši mājienu. Kāda laika cilpa var būt ļoti noderīgi šeit. Jā. Lūk Candy. Candy būs pieejams arī par viktorīnu, es domāju. Tātad, jūs puiši būs visi rīt cukurotu up. Vai I-- jums to. Mērķauditorija: OK. PROFESSOR: Jā. Varbūt 30 vēl sekundes vai tik. Nu labi, ja tu esi nav izdarīts, neuztraucieties. Mēs pārvietotos pa šo kopā. LABI. Tāpēc es esmu gatavojas tikai izkārtojums pamatstruktūra šo funkciju šeit. Int strlen. Pirmkārt, vai kāds vēlas pateikt man, ko tas nozīmē, int? Mums ir nepieciešams, lai ir šo funkciju. Mērķauditorija: strlen [nedzirdama]. PROFESSOR: Tieši tā. Tātad, neatkarīgi notiek šeit, mums ir nepieciešams, lai atgrieztos vesels skaitlis. Un kā norādīts SITS, spec, mēs vēlamies return-- Iet uz to puiši, tikai glabāt notiek. Tas viss ir labi. Ēd visu, lai man nav ņemt to atpakaļ, patiesībā. Int tikai nozīmē, ka jūs esat būs atpakaļ vesels skaitlis. Kas tas ir char zvaigzne s? Ko tas nozīmē? Mērķauditorija: Tāpat kā, to, kas ir ieguldījums. PROFESSOR: Tieši tā. Un kas ir gandrīz pats kā char zvaigzne? Mērķauditorija: String? PROFESSOR: Tieši tā. Tātad viss, ko mēs darām, ir dodot šis rādītājs uz virkni. LABI. Cool. Tāpat neaizmirstiet, ja mēs aizmirstam lai dotu jums šos kronšteini, neaizmirstiet rakstīt tos pats. Jo teorētiski, jūsu kods ir nepareizs, ja esat aizmirsis rakstīt tos. Vienkārši vienmēr jāpievērš uzmanība. Tāpat, maz lietas ka jums nav paziņojums ja jūs programmēšana uz jūsu klēpjdators, jo jūsu klēpjdators tas jums? Neaizmirstiet, ja jūs esat rakstiski ar roku. Yeah? Mērķauditorija: Bet kā nepareizi? Tāpat, mēs varam iegūt visu problēmu nepareizi? PROFESSOR: Nē, nē. Neuztraucieties. Tas faktiski teorētiski iespējams lai jūs varētu saņemt pilnu punktus uz jautājumu pat ja jūsu kods nekad palaist reālajā dzīvē. Es iesaku jums nav mēģināt lai tas notiktu. Piemēram, piemēram, ja viss tas šeit ir taisnība, bet esat aizmirsis kolu vai kronšteinu, Jūsu kods netiks reāli darboties. Bet mēs varam būt žēlsirdīgs. Yeah? Mērķauditorija: Vai jums ir komentēt mūsu rokraksts? PROFESSOR: Nē, nē, nē rūpes par to. Nē komentējot. Stils būtu labi. Tāpat, nav smush viss uz vienas līnijas. Mēs nebūsim apmierināti ar jums, ja jūs darīt. Vai kāds vēlas iedodiet man pirmajā rindā? Mājiens, tas ir ļoti viegli. Yeah? Mērķauditorija: Int, n ir vienāds ar nulli. Just izveidot skaitītāju. PROFESSOR: Tātad mēs gribam kādu sava veida letes, vai ne? Es esmu tikai gatavojas nosaukt to "skaits" labad lasāmību. Ko mēs vēlamies, lai uzstādītu to vienāds ar? Mērķauditorija: Zero. PROFESSOR: Yep. Semikols. Tas ir arī ļoti dīvaini zīmēšanas semikoliem. Tikai prakse darām. Tāpēc mēs vēlamies, lai vispirms skaitītājs tipa int. Tāpēc, ka mēs vēlamies saskaitīt, cik daudzi rakstzīmes vai vēstules šajā virknē, vai ne? Ļoti viegli pirmais solis. OK, varbūt nedaudz sarežģītāka Tagad, kā mēs gatavojamies darīt? Vai kāds vēlas iedodiet man rindiņu kodu kas, iespējams, var palīdzēt cilpu caur kāds tas ir? Jā, drosmīgs dvēsele uz muguras? Mērķauditorija: Labi, tāpēc, kamēr punkts zvaigznītes, tad jā, zvaigzne s, nav vienāds ar nulli, tad kaut ko darīt? PROFESSOR: Tas ir ļoti, ļoti tuvu. Patiešām tuvu. Tāpēc es esmu gatavojas, lai risinātu divas lietas, ar to. Pirmkārt, tas nav tieši nulle. Kas tas ir? Tas ir null terminators, kas ir reversā slīpsvītra nulle. Tātad viņi atšķiras noteikumi, kā viņi saglabāti. Tātad tu esi patiešām tuvu. Un, otrkārt, mēs negribam vienkārši pārvietotu rādītāju. Mēs vēlamies, lai faktiski piekļūt vērtības, vai ne? Un tā kā mēs to darām? Ļoti viegli. Nedomāju par norādes, nedomāju par atmiņām. Iet atpakaļ uz nedēļu divām šī kursa. Mērķauditorija: [nedzirdama]. PROFESSOR: No, atceries? Kas ir stīgas? Kā tie saglabāti atmiņā? Mērķauditorija: Viņi izvirzīja. PROFESSOR: Tie ir izvirzīti. Tātad, kā mēs piekļūt katrs simbols iekšā? Mērķauditorija: [nedzirdama]. PROFESSOR: Tieši tā. Tātad while-- Kas iet iekšā šeit? S - Mērķauditorija: I. PROFESSOR: Ak, es neeksistē, tas? Mērķauditorija: Ak, rēķināties? PROFESSOR: Mēs varam tikai izmantot skaits, mēs nevaram? Mērķauditorija: Atvainojiet, es sauc to es. PROFESSOR: Jā, tas viss ir labi. Mums ir mainīgais šeit tas ir jau ir deklarēts, ka mūsu letes. Tātad, kāpēc nav mēs tikai izmantot, ka lai pārvietotos pa kamēr cilpa? Vai tas ir jēga? Tāpēc, kamēr s no count-- Vai kāds vēlas, man dot to, kas notiek pēc tam, kad šeit? Mērķauditorija: Tas nav vienāds. PROFESSOR: Vai nav vienādi, vai ne? Tas ir sprādziena vienāds, izsaukuma zīme ir vienāds, ko jūs puiši vēlas sauc to nav equal-- Mērķauditorija: [nedzirdama]. PROFESSOR: Jā. Atcerieties vienu piedāvājumu ir par char, pēdiņas ir par virkni. Esiet uzmanīgi, lietojot tos. Tad, kad mēs meklējam cauri masīvs, pēdējais raksturs, mēs zinām, mēs nevēlamies tā ir slīpsvītra nulle. Tāpēc, kamēr. Mēs nav beigās virkni. Ko mēs vēlamies darīt iekšā? Mērķauditorija: Mēs vēlamies pievienot skaitītājs tāpēc tas skaitās plus plus? PROFESSOR: Tieši tā. Tātad, šeit mēs esam gatavojas darīt rēķināties, rēķināties plus plus. Trūkst vēl vienu līniju. Mēs esam gandrīz tur. Ko mēs aizmirstam to darīt? Mērķauditorija: Atgriežoties nulli? PROFESSOR: Jūs vēlaties, lai atgrieztos nulli? Mērķauditorija: Nē, atgriežoties strlen. Pagaidiet. PROFESSOR: Kurš tiek glabāti? Mērķauditorija: Count. Count. PROFESSOR: Tieši tā. Tātad šeit mēs ejam, lai atgrieztos skaitu. Jo tas, ko mēs esam darot šeit ultimately-- mums ir counter mainīgais, kas ir gatavojas pieauguma caur mūsu virkni. Mēs ejam, lai saglabātu turpinās, glabāt iet, apkārt un apkārt šajā cilpa. Un, kamēr mēs neesam uz beigām šis virknes, kas ir nulle terminators. Un katru reizi, kad mēs ejam cauri tā, mēs esam pievienojot mūsu letes. Un mēs ejam tālāk gar šajā masīvā. Un beigās, kad mēs hit null terminators, mēs zinām, ak, mēs varam pauze, atgriezties skaitu. Mums ir mūsu strlen. Vai visi saņemt kā Tas tika īstenots? Kamēr loops-- Es zinu, ka mēs neesam darīts pārāk daudz ar tiem, bet viņi parasti ļoti, ļoti noderīgi, ja jums nezinu, ko jūs apstāšanās nosacījums noteikti ir jābūt. Jautājums? Mērķauditorija: Vai mēs varam rakstīt null par kamēr stāvoklī? PROFESSOR: Kaut? Jā, tāpēc šī problēma man bija tevi puiši pieņemu, ka s nebūs spēkā. Jo atceros, teorētiski, ja es tev rādītājs, kas bija pārāk liels atmiņas, tas dotu jums null, vai ne? Tas ir tas, ko darba sistēma varētu darīt. Tātad, ja man nav pateikt jums uzņemties s būtu spēkā, jums ir nepieciešams, lai pārbaudītu. Tātad šeit, jūs darītu, ja s vienāds vienāds null, atgriezties vienu. Kaut kas tamlīdzīgs. Mērķauditorija: [dzirdams] nulle. PROFESSOR: Labi, es jums saku jūs, kāpēc mēs nevaram darīt. Jo atceros atmiņā, labi, šeit. Mēs iet šeit. Jūs esat ieguvuši milzu bloki Atmiņas visi ar tīkliem ka veikals dažādas vērtības, vai ne? Un tā viss virkne is-- par Piemēram, ja mēs esam ar ieejas hello, tas būtu H-E-L-L-O slīpsvītru nulle, vai ne? Un tad, kas zina, piemēram, izlases lietas, kas ir šeit pēc tā. Mums faktiski nav zināt, kas ir tur. Un tā, ja tu būtu to darīt nevis slīpsvītru nulles, null, tā nedrīkst būt nulle. Jo tas vienkārši var nozīmēt dažas izlases citas lietas kas nepieder jūsu virknes. Un tā tā, ka mēs vienmēr zinām, ka virkne beidzas ir ar slīpsvītru nulles. Un tā tas ir vienmēr, kā mēs pārbaudiet, lai redzētu beigas virkne. Null, viss, kas nozīmē, ja jums ir neeksistē rādītājs, pirmkārt, vai, ja jūsu atmiņa ir tieši tik liels, ka Jūs nevarat atdot, tad tas lūdzu būt nulle. Tāpēc jābūt ļoti uzmanīgiem, diferencējot atšķirība starp null un slīpsvītru nulle. Jā. Ikvienam OK ar šo? LABI. Tāpēc man bija jums guys izrakstīt strlen. Reāli mēs varētu arī jautāt jums rakstīt ārā no A līdz I, jāatceras, ka "Atwoa" vai kāds jūs puiši vēlas to nosaukt? Ka funkcija Vigenere un Caesar, ka pārveido ASCII vērtību līdz veselam skaitlim? Tas arī ir jānāk klajā ar pagātnes viktorīnas Funkciju mēs esam lūdza jums rakstīt. Diezgan daudz jebkura funkcija ka jūs esat izmantojis, un ir ļoti viegli rakstīt pats, sensori, piemēram, ir zemāks, ir augšējā, lai samazinātu, lai augšējā. Funkcijas, kas varētu pārvērst string no mazajiem burtiem uz lielajiem burtiem. Mēs visi zinām, kā to darīt, vai ne? Tas ir diezgan viegli. Vienkārši vēlaties, lai pārliecinātos, ka jūs can-- tas pats domāšanas process. Jums tikai atkārtot, izmantojot un jūs savukārt lietas. Tu nu skaits, vai tad, kad jūs savukārt lietas savādāk. Es vēlētos suggest-- I nezinu, vai mēs ejam lūgt jūs iegaumēt kādu kapitālu A vai kapitāls Z, vai mazie burti A vai mazie z ir ASCII, bet es ieteiktu varbūt rakstot, ka noteiktas lietas mēs darām. Vienkārši, lai jūs puiši ir atsauces. Tāpat lielos A ir, ko, 197? Un tad mazie ir kā 50 kaut ko. 65, jā, tur jums iet. Tik vienkārši diezgan daudz zinu atšķirība starp tām ir 32. Tas ir diezgan svarīgi. Jā. Es esmu labs par šo? LABI. Mērķauditorija: Mēs varētu teorētiski rakstīt daži no tām uz leju, kā arī mūsu little-- PROFESSOR: Tu teorētiski varētu vienkārši kopēt funkciju leju. Tā ir taisnība. Mērķauditorija: Nav [nedzirdama]. Profesors: Jums puiši ir lapu. Jums puiši ir dokumenta eksemplāriem. Jūs varat ierakstīt to. Jūs varat rakstīt to. Jūs varat darīt, ko vien vēlaties ar to. Jā. Tātad teorētiski, ja jūs vēlaties, lai iet. Mērķauditorija: [dzirdams] Bet mums nav īsti obligāti nepieciešams atcerēties vērtība, mēs varam vienkārši izmantot, lai augšējo vai apakšējā funkcija, vai ne? PROFESSOR: Jā. Bet, ja mēs deva jums jautājumu ka saka, rakstīt uz augšējo, tad jums būtu nepieciešams, lai rakstīt to. Tātad jūs guys var pieņemt, ka jums puiši ir piekļuve visām funkcijām, bet, ja jūs vēlaties izmantot, lai augšējo vai zemāks, ko jūs arī jādara? Mērķauditorija: [dzirdams] izmantot CS50 [nedzirdama] PROFESSOR: Vai tas CS50.h? Esiet uzmanīgi tur. Tātad, lai augšējo, lai samazinātu, ir augšējā, ir zemāka, funkcijas, kas ietver stīgu manipulācijas ir visi ir vai nu ASCII vai ietvaros matemātikas bibliotēkā vai ar virknes bibliotēkā. Tātad, ja jūs guys izmantot tos funkcijas, jābūt uzmanīgiem atcerēties iekļaut šo galveni. Tāpēc varbūt arī kaut kas jums vēlas iekļaut savā lapā, kādi ir header? Kādi ir bibliotēkas esat lietojis? Kādas funkcijas ir iekšā šajās bibliotēkās? Tas ir svarīgi. Yeah? Mērķauditorija: mēs varētu vienkārši cop out un darīt hashtag caur absolūti katrs burts mēs jebkad esam redzams kā uz visiem jautājumiem? PROFESSOR: Tu varētu. Es nezinu, cik laimīgs mēs spēsim būt pakāpē ka viktorīna kad katrs gabals koda ir divreiz tik ilgi, cik tas ir nepieciešams, lai būtu. Es nezinu, mēs varētu pacelšanās punktu par stilu. Bet teorētiski Jūsu kods varētu būt taisnība. Jūs puiši varētu policists, un tikai ietver visu. Tas ir jauki pārāk, jā. Mērķauditorija: [nedzirdama]. PROFESSOR: Jā. Es ieteiktu ne dara, ka, lai gan. Jā. Mērķauditorija: Cool. PROFESSOR: Labs jautājums. Mērķauditorija: Tātad, sliktākajā gadījumā. PROFESSOR: Sliktākajā gadījumā. Ja jūs pilnīgi aizmirsis, jūs varētu darīt. Jā. Yep, kods ir tiesības tur. Es mēdzu n nevis skaits, bet, jums zināt, kāds pludiņi savu laivu. Mērķauditorija: Pagaidiet, tāpēc mēs nebūtu hashtag ietvert jo mēs esam sākot no int? PROFESSOR: Jā, es tikai pieņemt, ka mēs uzdeva uzrakstīt funkciju. Ja jūs vēlētos, lai būtu droši, jums droši vien varētu likt to tur. Bet es vienkārši nav apnikt, jā. Es pat nezinu, ja jums nepieciešama nekāda bibliotēka šis. Tāpēc, ka jūs neesat īsti drukāšanas ārā kaut vai kaut ko, vai ne? Jā, es nezinu, ja jums nepieciešams bibliotēka. LABI. Tas ir arī nedaudz vairāk pa līnijas atmiņas manipulācijas. Šāda veida mazliet viltīgs. Padomā par to. Jums ir funkciju sauc func. Es varētu būt nosaukts tā neatkarīgi, bet es izvēlos to nosaukt func. Man ir tas iepriekš mans galvenais. Atcerieties, ka jūs vēlaties, lai būtu funkcija pēc jūsu galvenais, Jūs vēlaties, lai pārliecinātos, ka jūs ietver prototipu augšas. Bet šajā gadījumā tas bija tik īss ka es jutu, ka es varētu tikai iekļaut to atop galvenais. Man nav nepieciešams, lai būtu prototipu, jo tas jau rakstīts iepriekš. Tāpēc viss, es esmu dara manā galvenā funkcija rada veselu X ir 10. Es esmu aicinot savu lē funkciju, un pēc tam izdrukāt līdz kaut ko. Un tad tas ir reāli ko func dara. Jūs puiši vēlas domāt caur šo. Jo tas ir mazliet viltīgs. Tas ir ļoti, ļoti grūts, patiesībā. Domāju, ka caur to, ko šis programma būtu izvada. Es došu jums puiši divas minūtes. Laba diskusijas? Mērķauditorija: Jā. PROFESSOR: Jā. Labi, tāpēc tas ir grūts par iemeslu. Un tas ir iemesls, kāpēc es gribēju, lai to ikviena uzmanību. Vai kāds vēlas dot man ierosinājums, mēģinājums? Ko tas varētu izdrukāt? Pilnīgi naudas sodu, ja jūs esat nepareizi. Yeah? Mērķauditorija: Es domāju, ka tas ir 100 un tad 10 uz divām atsevišķām līnijām. PROFESSOR: Un 10? Vai kāds ir kādi citi minējumus? Yeah? Mērķauditorija: Varbūt tikai 10, jo func neatgriežas neko? PROFESSOR: Labi, tāpēc mēs ir uzminēt numur viens ir tas, ka minējums ir otrā tikai gatavojas izdrukāt 10. Vai kāds ir kādi citi minējumus? LABI. Tātad pieņemsim staigāt pa šo, labi? Ikreiz, kad jūs saņemsiet kādu kodu, ne tikai apskatīt to un būt, piemēram, ah, ka ir tik daudz sīkumi! Es esmu tik sajaukt! Tāpat, nomierina sevi uz leju. Tikai zinu, ka jūs varētu vienkārši meklēt, izmantojot kodu pozīcijai. Tas ir viss, tas ir. Tas ir tāpat kā lasot grāmatu. Tātad ar jebkuru funkciju, mēs vienmēr sākas galvenais. Tātad mēs ejam sākas int galvenais tukšumu, pat programma ir jau palaist uz leju, pa labi? Sākt galvenajā tukšumā. Int x vienāds 10. Tāpēc es esmu gatavojas, lai izdzēstu šo. Es esmu gatavojas izdarīt atmiņu tikai, lai jūs puiši var veida redzēt, kas notiek. Atcerieties, noteikti šeit mums ir kaudze? Šeit mums ir mūsu sakraut kaut kur šeit. Kaudze aug uz augšu, pa labi? Un ietvaros kaudze, jums ir elektrotīkla darbotos kā arī visi Mains vietējās mainīgie. Tātad šeit, int x vienāds 10. Mūsu galvenā funkcija mēs esam radot mainīgo sauc x. Mēs esam nosakot, ka vienāda ar 10. Šeit jūs esat ieguvuši dažas x, un jūs esat nosakot, ka vienāds ar 10, pa labi, ietvaros galvenais. Ikvienam labs? Funkcija. Tāpēc tagad, laikā mūsu galvenais funkcija, mēs aicinām funkcija mēs esam rakstīts iepriekš. Tāpēc mēs tagad ieiet otro funkciju. Mēs ejam, lai izveidotu citu mainīgs int x ir vienāds 100. Kas notiek šeit pie skursteņa? Kas notiek, ja jūs zvanīt funkcija, kas rada jaunas mainīgos? Kas notiek šeit pie skursteņa? Mērķauditorija: [dzirdams] pāļi uz augšu? PROFESSOR: Jā. Tātad tas faktiski rada kopiju. Un tā veida pāļi uz augšu. Domājiet par stack-- kaudze Grāmatu, kaudze neko. Pāļi virsū, vispirms jaunākie ārā, pēdējais iekšā, pirmais ārā. Tātad, tas notiek, lai izveidotu x šeit. Ka nāksies Visi funcs mainīgie. Liels. Tāpēc tagad mums ir divas dažādas x ir, ka pārstāv divas ļoti dažādas lietas. Tad mēs ejam drukāt out veselais skaitlis x. Tātad pieņemsim izdrukāt 100, vai ne? Jo šeit tas ir 100. Tātad tas ir pirmā lieta, ka tas notiek izdrukāt. Tā kā šī funkcija atgriež neko, tagad šo funkciju, ka līnija galvenā tiek darīts. Ikvienam labi ar mani līdz šim? Tāpēc mēs tagad esam cauri divi no Trīs līnijas mūsu galvenā funkcija. Tagad mēs ejam uz trešo pozīciju. Mēs ejam, lai printf. Kas ir šis x laikā galvenais? Ko tas pārstāv? Kāda vērtība ir x tagad? Mērķauditorija: 100. PROFESSOR: tas ir 100? Mērķauditorija: Still 10. PROFESSOR: Vēl 10. Jā. Jo atceros, laikā Mūsu func, x ir vienāds ar 100. Bet, ja mēs atgriežamies atpakaļ mūsu galvenā funkcija, ka mainīgais tiek saglabāta citā vietā uz mūsu kaudze. Tāpēc tagad mums ir nepieciešams, lai dotos atpakaļ uz Galvenais kaudze, ūdensvada vietējo mainīgie. Un šeit x ir vienāds ar 10. Un tāpēc mēs esam gatavojas izdrukāt 10. Tāpēc viņa bija pilnīga taisnība. Mēs ejam, lai būtu izlaide 100 un 10. Yeah? Mērķauditorija: Kad jūs malloc, vai tas ir kaudze vai steka, kas ir [dzirdams]? PROFESSOR: Kad jūs malloc, jūs lietojat atmiņas no kaudzes un tā piešķiršanu. Tā, ka jums nav sajaukt ar kādu no šo. Tāpēc es domāju, ka lielāks takeaway šeit ir kaut kas ko sauc par darbības joma. Attiecībā uz tiem no jums, kas bija pārskatīšana sesijas pēdējā naktī, mēs runājām īsi par to. Darbības joma nosaka, kā un kad jūsu mainīgie eksistē. Vai laikā, ko rāmji Vai jūsu mainīgie pastāv. Diezgan daudz īkšķis parasti ir, jūsu variables-- ja jums izveidot tos iekšpusē cirtaini braces-- viņi eksistē tikai iekšpusē tiem cirtaini lencēm. Tā, piemēram, mūsu funkciju func, jūs redzat šos divus lencēm. Ja veidojat kaut kas iekšpusē no tā, iespējams, visi jūs darāt, ir radot kaudze un uzglabāšanu, kas tur. Pats galvenais,. Tas ir tikai uzglabā iekšpusē galvenais. Arī jūs vēlaties būt ļoti, ļoti uzmanīgiem šeit. Jo joma arī aizdod pati uz dažādiem piemēriem. Tātad, piemēram, par cilpa, lai int i ir vienāds ar 0. Man ir mazāk nekā, es nezinu, 10. Es plus plus. Un tev kods iekšpusē no tā, vai ne? Kur šis mainīgais, i, faktiski pastāv tikai? Tikai iekšpusē jūsu cilpas. Tāpēc es bet daudzi no jums, puiši ir iespējams, radušās šo kļūdu, kad jūs darāt programmas jūsu psets. Cik daudzi no jums, puiši ir mēģinājuši lietot i ārpus cilpa un bija kļūda? Tāpat kā unreferenced veseli skaitļi vai kaut kas tamlīdzīgs? Iemesls, kāpēc tas notiek ir tāpēc, ka šeit jūs esat radot kaut ko, kas tikai pastāv jūsu par cilpa. Un, ja jūs mēģināt to izmantot, i nav faktiski pastāv ārpus tā. Tātad būtībā dators sakot, es nezinu, ko jūs runājat par. Viss, ko es zinu, ir tas, ka man bija šeit, bet tagad vairs nav. Tātad, ja es būtu, lai izveidotu cilpas iekšpusē, vai ne? Un es esmu gatavojas izveidot citu, piemēram, int j, un ir to darīt visu. Un jums ir kods iekšpusē ka cilpa, j pastāv tikai šeit. Bet pastāv arī laikā i. Un tā j tikai eksistē laikā šis cilpa, tā i pastāv visa lieta. Ikvienam skaidrs? Pats ar nosacītu paziņojumiem ja jūs vēlaties, lai radītu kaut ko. Pats ar cilpām, vienlaikus, ja jūs vēlaties, lai radītu kaut ko. Tas ir kaut kas, lai būtu ļoti, ļoti uzmanīgiem par. Tātad tas bija tiešām laba problēma sajust, ka tā ir pierādījusi divas lietas. Tā parādīja, pirmkārt, darbības jomu. Un tas pierādīja arī atmiņas sadalījumu. Tāpēc, ka jūs guys vajadzētu zināt, ka funkcijas augt uz augšu kaudze. Un, ka tad, kad jūs zvanu funkcijas, jūs veidojat būtībā ir jauna kaudze atmiņas. Tas ir ļoti atšķirīgs no kādas ir jūsu maģistrāles atmiņa ir. Jā. Whew! Ikvienam OK par šo? Tas bija mulsinoši. Ļoti labas tēmas iet pāri, jo jūs, iespējams, gatavojas iegūt kādu viltīgs lietas, piemēram, ka uz viktorīnas. Jā. Cool. Es nolikšu jums 100 uz vienu līnija un pēc tam 10, no otras puses. Jā, ļoti labs. Labi, tagad jūs puiši saņems iespēja būt Tehniskās vienošanās. Jūs saņemsiet, lai atbildētu uz visiem jauki e-pasta vēstules, ka es dažreiz saņemt. Tātad, Dārgais Andi, es redzu, es domāju, ka kaut kas ir notiek nepareizi ar manu kompilatoru. Es esmu pārliecināts, ka mans kods ir pareizs, bet es turpinu kļūst segmentāciju vaina Katru reizi, kad es palaist. Kas notiek? Lūdzu, palīdziet, daudz mīlestības. Ja jūs puiši dabūja kaut ko līdzīgu ka, kā jūs atbildētu? Tie ir tiešām ļoti bieži Jautājumi mēs lūgsim jums. Vai tad, ja mēs sniegsim jums scenārijs, mēs sniegsim mums Jūsu labākais minējums par to, kas notiek. Kāds ir stab to, kas notiek? Yeah? Mērķauditorija: Varbūt dereferenced null, kaut kas līdzīgs rādītājs ir vērsta uz kaut null. PROFESSOR: Jā, ka gribētu būt piemērs, kad tas varētu notikt. Bet kas ir lielāks attēls par to, kas notiek šeit? Mērķauditorija: Vai tas jūs mēģināt piekļūt atmiņas, ka jūs neesat vajadzēja piekļūt? PROFESSOR: Tieši tā. Tāpēc domāju, ka par SEG vainas, ir off ierobežojumi, ierobežota platība atmiņā ka jums nevajadzētu būt aizkustinoši. Tātad diezgan daudz, kad jūs cenšaties uz index-- kā, piemēram, Jūs esat pasludināta masīvs no nulles līdz deviņi. Bet jūs mēģināt pieskarties šo 10th vērtība, jums nav pieejami, kas. Tā kā jūs esat nav deklarēta to. Un lai jūsu dators iet paskatīties, kas ir, piemēram, uh oh, jūs mēģināt iet ārpus tās robežas indeksu. Es esmu gatavojas sniegt jums segmentācija vaina. Domājiet par kā segmenta, vai ne? Papildu segments, vaina ir kad jūs mēģināt pārkāpt kaut ko un jums nevajadzētu būt tur. Segmentācija vaina ir jebkurā laikā jūs mēģināt pieskarties lietām ka jums nevajadzētu būt aizkustinoši. Tātad kopējie piemēri ir indekss. Protams, ja jūs cenšaties pieskarties tas bija null, kas arī strādā kā labi. Ja jūsu rādītājs centās pieskarties lietām, kas nedrīkst pieskarties, kas varētu arī darboties kā labi. Lielākā daļa parasti jūs redzēt šī masīvā. Ikvienam labs? Mērķauditorija: Tātad, ja jūs vēlaties piekļūt 10. punkts un tur ir tikai ierobežojums Deviņu vai kaut ko. PROFESSOR: Jā, tieši tā. Diezgan ļoti. Cool. Dear Andi. Tātad, mēs esam ieguvuši šie brīnišķīgi lietas sauc veidu. Ja Apvienot sort-- kā mēs zāģis in piemēram, ja Dāvids darīja visu lieta class-- kāpēc, ja tas ir tik daudz ātrāk nekā kādu citu veidu, kāpēc mēs pat apnikt zinot kādu citu veidu? Kas ir šis jautājums patiešām lūdz jums? Kas ir trīs word-- Mērķauditorija: Kas ir kompromiss? PROFESSOR: Tieši tā. Tas ir tas, ko jautājums ir jautā. Kas ir kompromiss starp Apvienot kārtot vārsmas jebkuru citu veidu? Mērķauditorija: Stājas atmiņu, vai ne? PROFESSOR: Tev skaidro, ka mazliet vairāk? Vispirms pieņemsim izskaidrot sapludināšana veikalā. Kā Apvienot veida darbojas? Mērķauditorija: Tātad tas darbojas, dalot viss uz pusi un pēc tam liekot to kopā un pārdalot to, lai, tāpat katru reizi, kad jūs apvienot kopas. PROFESSOR: Diezgan daudz. Tātad es varu izdarīt šo out, bet tas ņemt man piecas minūtes, lai pievērstu to ārā. Atskatīties uz sekcijas slaidiem ja mēs uz sapludināšana veida. Tieši tā. Tātad, kā sapludināšana Kārtot darbus tas sadala lietas pusi, un tad tas tikai izskatās pēc Pirmie vērtības tiem visiem un sakārto tikai tas. Nepārtraukti rada jaunas bloki un liek lietas vairāk un vairāk, lai. Un tā, kamēr tas ir ļoti, ļoti ātri, jo it's-- jūs zināt, bināro meklēšana ir n log n. Jūs veidojat tik daudz dažādi bloki, ka tu esi izmantojot milzīgu atmiņas. Un tā, kamēr tas ir ātrāk, tirdzniecības off šeit ir tas, ka jūs izmantojat vairāk atmiņas. Un tā, mājiens, veidu un meklējumi sedza daudz vairāk šogad nekā tie ir bijuši gados iepriekšējos. Jūs guys vajadzētu redzēt, ka atspoguļots attiecīgi uz viktorīnas. Es noteikti pavadīt laiku dodas vairāk nekā tas, ko visi no dažādu veidu ir, kā bināro meklēšanu, kā lineāra meklēt darbu. Kā varbūt pseudocode kodēt tos out. Kādi ir darbojas laiki? Kaut kā darbojas laikos ir ļoti viegli kopēt leju uz piezīmju lapas, labi? Tas ir tiešām grūti, kad tu esi vidū testa un jums ir skaitlis, kas out. Kopēt to uz leju. I garantija jums esat dodas uz nepieciešamību zināt, ka. Kādas ir kompromisi? Sliktākajā gadījumā, labākajā gadījumā scenāriji visiem tiem, kas ir ļoti iepazīt. Yeah? Mērķauditorija: Vai mums ir nepieciešams, lai zināt, kā kodu sapludināšana veida? Tāpat, mums vajag, lai atcerēties rekursīvas? PROFESSOR: Es ļoti šaubos, vienkārši jo tas ir tāpat kā diezgan sarežģīta. Bet tas var nebūt nav iespējama, ja mēs lūdzu jūs izmantot pseudocode to ārā. Jā. Yep, OK, vēl viens. Tas var būt nākušas klajā ar Jūs pēdējo gabals mazliet. Yeah? Vai visi dzird, ka? Labi, tāpēc diezgan daudz vispirms galā, kāda veida programma Būtu sniedzot jums izejas līdzīgs šim? Atcerieties, mēs lūdzām jums, lai uzzinātu par Šī jaunā atkļūdošanas rīku veids? Kāds bija vārds no tā? Valgrind, labais Tā bija programma, kurā jūs varētu zvanīt, kas varētu sekot līdzi visiem atmiņā tu esi izmantojot jūsu programmā un notiek. Tātad, ja jums kaut ko, piemēram, noteikti zaudēja, 40 baiti vienā blokā. Droši vien jūs neesat atceroties, lai atbrīvotu to. Jo, ja jūs izmantojat atmiņas baiti, tas nozīmē, ka jūs esat piekļūt šo atmiņu, bet jums nav izdevies atbrīvot. Tātad jūs vēlaties, lai pārliecināts, ka jūs esat arī izmantojot free-- tas ir function-- lai atbrīvotu visu no atmiņas pārdalīt malloc. Cool. Tātad šo slaidu, es ņemšu to uz augšu. Tas ir visur daudz lekcijas, jo daudz sekciju slaidiem. Jūs tiešām vēlaties pārliecināties jūs vienkārši zināt visu. Nu savā piezīmju lapas, vai, ja jums vēlas iegaumēt to, justies brīvi. Tas ir ļoti, ļoti, ļoti svarīgi. Arī ļoti labs Jautājums, ko mēs varētu jautāt. Kāpēc atlase sort-- apskatīt Atlase sort-- visi runtimes ir n brusas. Neatkarīgi no tā, cik saraksts nāk Jūs kā, tad kāpēc ir izvēle sort-- Es došu jums puiši 30 otrais domāt par to. Jo tas ir sava veida mulsinoši. Tā ietver zināmu konceptuālu domas. Kāpēc būtu palaist laiki būs vienādi gan sliktākajā un labākajā gadījumā scenāriji? Yeah? Mērķauditorija: Tā Selection veida katrs amats vai telpu šajā maz masīvā lieta vai neatkarīgi. Tātad, pat labākajā gadījumā, pat tad, ja tas ir perfekti sakārtots, tas joprojām ir jābūt, piemēram, OK, vienu. Manā pirmajā vietā man ir viens. Un iet cauri visiem no tiem. OK, viens ir mazākais. Un tad tas notiek atkal un ir kā, OK, divi ir mazākā no visām lietām. Bet tas vēl ir pārbaudīt katru vienu. PROFESSOR: Jā. Tā, piemēram, pieņemsim tikai teikt Mums ir saraksts, kas jau sakārtots, masīvs viens līdz pieci. Veidā, ka Atlases veidu ir tas, ka tas iet cauri, tā pārbauda šīs divas. Tad tā pārbauda šīs divas. Un tad tā pārbauda, ​​un tā pārbauda. Tas tur pārbaudīt visas no tām, neatkarīgi no tā, vai tas tiešām sakārtoti. Jo tas ir vienkārši veids kārtošanas darbi. Un tāpēc šis jautājums ir veida, piemēram, konceptuāls jautājums, mēs lūgsim. Kur vispirms, lai jūs zināt, ko atlases veida ir labi, lai spētu atbildēt uz jautājumu. Jums ir jāspēj saprast konceptuāli kas notiek. Un tad jūs varat pieteikties, un domāju, OK pieņemsim tikai iedomāties sliktāko scenāriju. Viņi visi dilstošā secībā. Kā tas var ietekmēt to? Ko darīt, ja tas ir augošā secībā? Ja tas ir jau sakārtoti? Kā tas var ietekmēt runtimes? Un tad izvēle kārtot, jūs pamanīsiet ka tas nav reāli nozīmes. Tāpēc, ka jūs pārbaudīt visu vērtībām neatkarīgi no tā, kas notiek. Un tā labas lietas, kas jāatceras. Kāpēc daži veidu atšķiras no citiem un kā vislabāk un sliktākajā gadījumā ietekmētu visas no tām. Es esmu gatavojas patiešām hit veidu jo tas būs uz viktorīnas. Jā. LABI. Ir atlikušas sešas minūtes. Es varu veikt trīs minūtes jautājumiem. Es varu arī pakārt ap tāpat kā 20 minūtes pēc iedaļas Ja vēlaties uzdot jautājumus, kā arī. Vai kāds vienkārši ir ļoti īss jautājumi vai konceptuāli jautājumi viņi nav skaidrs par to tieši tagad? Yeah? Mērķauditorija: Vai jūs varat runāt mazliet bit par Bitu līmeņa operatoriem? PROFESSOR: Jā. Tātad Bitu līmeņa operatoriem kaut kas jums, iespējams, varētu vienkārši vēlaties, lai jūsu lapas. Tātad quickly-- es nevēlos iet pārāk daudz padziļināti jo Harvard, savā pārskatā sesija, uz to diezgan labi. Bitu līmeņa uzņēmējs, tur ir pieci no viņiem, vai ne? Tur ir tas, kas ir x vai funkcija, tur ir & zīme, kas ir un. Caurule, kas ir vai. Un tad jums ir divas dažāda veida maiņu. Ja es dodu jums divas vērtības, ja Es dodu jums, piemēram, viens un viens. Kas būtu, ka izvērtēt to? Ja es jums taisnība, un patiesība, taisnība? Kas par patiess vai nepatiess? Joprojām ir taisnība, vai ne? Jo tur ir vai. Mēs, visticamāk, dos jums numurus. Līdz ar to atcerēties, viens ir vienāds taisnība, nulle vienāds nepatiesa. Un mēs varētu sniegt jums šīs lietas un aicinu jūs, lai pastāstītu mums, kas notiek. Harvard pārklāj to laikā pirmais 10 minūtes viņu studiju sesijas tiešām, tiešām labi. Tātad jūs guys vēlaties, lai pārliecināts, ka jūs atskats uz to. Mērķauditorija: Vai pisa5 būs uz viktorīnu? PROFESSOR: Nē. Vai nav pat apskatīt pisa5 tieši tagad. Tas ir grūti. Vienkārši nav pat apnikt meklē pisa5. Tomēr, tā kā daži mājieni un ieteikumi, es ieteiktu jums sākt pisa5 tiklīdz viktorīna ir beigusies. Tas būs grūtākais nedēļā, bet tad jūs guys tiks nodota to pauguri Ritošā zaļa un kucēni, un tas ir labi. Šī klase saņem nozīmīgu vieglāk pēc piektā PSET. Mērķauditorija: Darba laiks ir Svētdiena, pirmdiena? PROFESSOR: Jā, tā darba laiks būs svētdienas uz pirmdienu uz PSET. Darba laiks šovakar pēc būtības būs tikai pārskats par viktorīnas. Ja kāds vēlas nākt un jautāt Tehniskās vienošanās jautājums, mēs būsim tur. Es ņemšu varbūt vēl vienu jautājumu ja kāds ir jautājums? Yeah? Mērķauditorija: Kad esat definē mezgli, [nedzirdama] ja jūs sakāt mezglu zvaigzne un tad nākamais, pats dators automātiski saprotu, ka jūs esat atsaucoties uz citu rādītāju? PROFESSOR: Nē. Mērķauditorija: Jums ir relink tas [dzirdams]? PROFESSOR: Tātad būtībā struct no mezglā ir, atcerieties, tas ir tāpat kā jums izveidot mezglu un tad jums ir rādītājs, ko sauc par nākamo. Viss, jūs darāt, ir ar struktūra tur. Jums ir jāpiešķir ka rādītājs kaut kur. Tātad datori nav zina, ko tas dara vēl. Jums ir faktiski piešķirt to, kad jūs veidojat savu saistīts sarakstu. Un tas, ko galvenokārt PSET 5 būs. Līdz ar to nav rūpes par jebkuru, ka tieši tagad. Mērķauditorija: Tātad mums nav nepieciešams koncentrēties pārāk daudz par saiti sarakstā, vienkārši vispārējā koncepcija? PROFESSOR: Tikai diezgan daudz skursteņi, rindas, saite saraksti, koki, hash tabulas. Tikai varētu zināt, kas viņi ir. Mēs nebrauksim lūgt jums patīk kaut kas īpašs jo mēs neesam īsti darīts PSET, ka aptver jebkuru, kas vēl. Tātad pēdējās divas minūtes pirms Es jūs brīvus nogalināt šo viktorīnu. Diezgan daudz, piemēram, domāju par to, kā tālu jūs guys ir jānāk šajā klasē. Es atceros, kad nedēļā divas Šīs klases, daži no jums pavadīt trīs stundas rakstot ūdeni. Cik ilgi tas tā tevi puiši rakstīt ūdeni tagad? 30 sekundes, varbūt? Padomājiet par to, cik daudz jums puiši ir iemācījušies. CS ir patiesi, patiesi grūti temats. Nav šaubu par to. Tas ir grūti, tāpēc neviens pētījumos. Tas ir tikai grūti. Un tas ir pilnīgi naudas sodu. Un es esmu patiesi lepns, ka ikvienam ir padarījusi šo tālu. Psets nav viegli. Viņi ņem daudz laika. Jūs guys, es nekad lūgt jums rakstīt spēle 15. vai Vigenere uz PSET. Nav nepieciešams, lai tikai ķēms par to. Visi mēs esam testēšana šeit ir novērtēt Jūsu konceptuālo zināšanas, kā arī kā daži no jūsu pamata prasmju kodēšanas. Tests ir paredzēts, lai būt patiesi grūti. Tāpat kā tas ir paredzēts, jums nav iegūt 100. Tas ir arī paredzēts, lai jūs, iespējams, nevarēs pabeigt 75 minūtēs. Un tas ir pilnīgi naudas sodu. Es esmu students pats. Es zinu, es ienīst to, kad es staigāt no viktorīnu būt, piemēram, sūdi. Tas bija tiešām grūti. Droši vien to, kas notiek, lai happen-- un tas ir pilnīgi naudas sodu, Es esmu stāsta jums puiši tieši tagad. Līdzekļi par šīm lietām nav augstas vispār. Un tiem no jums, kas ir iegūt, piemēram, trijiem par savu problēmu kopas, tas nenozīmē, ka tu esi gatavojas saņemt 60 procentus šajā klasē. Ja jums 60% par viktorīna, ka nav nozīmē, ka jūs esat gatavojas iegūt D šajā klasē. Mēs redzam, sevišķi es, par tiem no jums, manā nodaļā, Es redzu, cik grūti jūs puiši visi strādā. Un es izsekot to. Jūs puiši būs labi. Nav institucionālā atmiņa laime beigās semestra. Jo visi Harvard bērni stāsta viņu draugi, ak, jums būs labi. Neviens stāsta jums puiši, kas šeit. Tāpēc man ir pateikt cilvēkiem, ka šeit. Jūs puiši būs labi. Es esmu tik lepna par jums visiem puiši. Tests būs grūti. Pētījums par to, un pēc tam vienkārši mest to prom. Get gatavs apgūt jaunas lietas. Un ēst konfektes. Mēs esam ir daudz konfektes. Iegūt labu nakts miegu. Nav ne gulēt, jo ka gribētu būt patiešām slikti. CS ir daudz loģikas. Ja jums nav gulēt, jūs nevar darboties, un jūsu smadzenes nevar darboties. Un es būšu šeit, lai nākamais 20 minūtes, ja kāds vēlas, lai pakārt apkārt. Jūs puiši gatavojas to nogalināt. Veiksmi.