[Powered by Google Translate] [Revizyon] [kwiz 0] [Lexi Ross, Tommy MacWilliam, Lucas Freitas, Jozèf Ong] [Inivèsite Harvard] [Sa a se CS50.] [CS50.TV] Hey, tout moun. Byenveni nan sesyon an revizyon pou, 0 kwiz ki ap pran plas sa a nan Mèkredi. Ki sa nou ap pral fè aswè a, mwen ak 3 TFs lòt, ak ansanm nou ap ale nan ale nan yon revi de sa nou te fè nan kou a byen lwen tèlman. Li pa nan pral fè 100% konplè, men li ta dwe ba ou yon pi bon ide nan sa ki ou deja genyen desann ak ki sa ou toujou bezwen etidye anvan Mèkredi. Epi w santi w lib yo leve men ou avèk kesyon kòm nou pral ansanm, men kenbe nan tèt ou ke nou pral gen tou yon ti kras nan tan nan fen a- si nou jwenn nan ak yon kèk minit rezèv-a fè kesyon jeneral, pou kenbe sa nan tèt ou, epi pou nou ap ale nan kòmanse nan kòmansman an ak Semèn 0. [Kwiz 0 Revizyon!] [Pati 0] [Lexi Ross] Men, anvan nou fè sa a kite l 'pale sou lojistik yo nan egzamen an. [Logistics] [kwiz pran plas nan Mèkredi 10/10 nan plas konferans] [(Gade nan http://cdn.cs50.net/2012/fall/quizzes/0/about0.pdf pou plis detay)] Li se nan Mèkredi, Oktòb 10yèm. Sa a se sa a Mèkredi, epi si ou ale nan URL sa isit la, ki se tou aksesib soti nan CS50.net-gen 's yon ap mennen nan li- ou ka wè enfòmasyon sou ki kote yo ale ki baze sou non dènye ou a oswa afilyasyon lekòl kòm byen ke li di sou ekzakteman ki sa egzamen an ap kouvri epi ki kalite kesyon ke w ap pral jwenn. Kenbe nan tèt ou ke ou pral gen tou yon chans revize pou egzamen an nan seksyon, Se konsa TFs ou ta dwe ale sou kèk pwoblèm pratik, ak sa a, se yon lòt bon chans yo wè ki kote ou toujou bezwen etidye moute pou egzamen an. Ann kòmanse nan kòmansman an ak okte 'n' miyèt moso. Sonje yon ti jan se jis yon 0 oswa yon 1, ak yon multiple se yon koleksyon 8 nan sa yo Bits. Se pou yo gade nan koleksyon sa a nan Bits dwa isit la. Nou ta dwe kapab konnen ki jan anpil Bits gen. Ki kote nou konte gen nan jis 8 nan yo, uit 0 oswa 1 inite. E depi gen nan 8 Bits, sa se 1 multiple, e kite yo konvèti li nan ekzadesimal. Ekzadesimal se baz 16, epi li trè fasil a konvèti yon nimewo nan binè, ki se ki sa se sa ki, nan yon nimewo nan ekzadesimal. Tout sa nou fè se nou gade nan gwoup 4, epi nou konvèti yo nan chif la ekzadesimal ki apwopriye yo. Nou kòmanse ak gwoup la dwa-pi fò nan 4, se konsa 0011. Sa k ap pase yo dwe youn 1 ak yon sèl 2, ki fè ansanm ki fè 3. Lè sa a, kite pou yo gade nan blòk la lòt moun ki te 4. 1101. Sa k ap pase yo dwe youn 1, yon sèl 4, ak yon 8. Ansanm ki nan pral fè 13, ki fè D. Epitou, n ap sonje ke nan ekzadesimal nou pa jis ale 0 a 9. Nou ale 0 jiska F, se konsa apre 9, 10 koresponn ak A, 11 rive nan B, et setra kote F se 15. Isit la se yon 13 D, Se konsa konvèti li nan tout sa nou desimal fè se nou aktyèlman trete chak pozisyon kòm yon pouvwa nan 2. Se youn 1, yon sèl 2, zewo 4s, zewo 8s, youn 16, et setra, ak li a yon ti kras difisil yo kalkile nan tèt ou, men si nou ale nan glise nan pwochen nou ka wè repons la ki. Esansyèlman nou pwal atravè de dwat tounen nan bò gòch, epitou n ap miltipliye chak chif pa pouvwa a korespondan nan 2. Epi sonje, pou ekzadesimal nou don nimewo sa yo avèk 0x nan kòmansman an pou nou pa konfonn li ak yon kantite desimal. Kontinye sou, sa a se yon Table ASCII, ak ki sa nou itilize ASCII pou se yo kat soti nan karaktè nan valè nimerik. Sonje nan pset a chifreman nou te fè anpil pou sèvi ak tab la ASCII yo nan lòd yo sèvi ak plizyè metòd pou chifreman, Seza tande kòz la ak kalkile nan Vigenère, konvèti lèt diferan nan yon fisèl dapre kle yo te bay nan itilizatè a. Se pou yo gade nan yon ti kras nan matematik ASCII. Gade nan 'P' + 1, nan fòm karaktè ki ta ka Q, ak sonje ke ''5 ≠ 5. Ak ki jan egzakteman nou ta konvèti ant 2 fòm sa yo? Li pa aktyèlman twò difisil. Yo nan lòd jwenn 5 n ap retire '0 ' paske gen 5 kote ant '0 'la ak '5 a. Yo nan lòd yo ale nan lòt fason nou jis ajoute 0 a, Se konsa li sòt de tankou aritmetik regilye. Jis sonje ke nan lè yon bagay ki gen quotes bò kote l 'li nan yon karaktè e konsa koresponn ak yon valè nan tablo a ASCII. Paralize nan plis sijè jeneral syans òdinatè. Nou te aprann ki sa yon algorithm ye epi ki jan nou itilize pwogramasyon aplike algoritm. Men kèk egzanp sou algoritm yo se yon bagay ki reyèlman senp tankou tcheke si yon nonb se menm oswa enpè. Pou ki sonje nou Mod nimewo a pa 2 epi tcheke si rezilta a se 0. Si se konsa, li nan menm. Si ou pa, li la enpè. Epi sa a, yon egzanp yon algorithm vrèman de baz yo. Yon ti kras nan yon yon sèl patisipe plis se rechèch binè, ki nou pral ale sou pita nan sesyon an revizyon. Ak pwogramasyon se yon tèm ke nou itilize pou pran yon algorithm ak konvèti li nan kòd òdinatè a kapab li byen. 2 egzanp sou pwogram se grafouyen, ki se ki sa nou te fè nan Semèn 0. Menm si nou pa aktyèlman tape soti kòd la li nan yon fason pou mete ann aplikasyon sa a algorithm, ki se enprime nimewo yo 1-10, ak isit la nou fè menm bagay la nan lang pwogramasyon C. Sa yo se fonksyonèl ekivalan, jis ekri nan lang ki diferan oswa sentaks. Nou Lè sa a, te aprann enfòmasyon sou ekspresyon Boolean, ak yon Boolean se yon valè ki nan swa vre oubyen fo, ak isit la souvan Boolean ekspresyon ale andedan nan kondisyon, kidonk si (x ≤ 5), byen, nou deja mete x = 5, se konsa ke kondisyon ki pral evalye vre. Men, si se vre, kèlkeswa sa kòd se anba kondisyon an ki pral dwe evalye pa òdinatè a, se konsa ke fisèl yo pral enprime estanda pwodiksyon, ak kondisyon nan tèm refere a nenpòt bagay ki andedan parantèz ki nan deklarasyon an si. Sonje tout operatè yo. Sonje && li a ak | | lè nou ap eseye konbine 2 oubyen plis kondisyon yo, == Pa = a tcheke si 2 bagay sa yo egal-ego. Sonje ke = se pou devwa Lè nou konsidere ke == se yon operatè Boolean. ≤, ≥ ak Lè sa a, 2 final la se oto-eksplikasyon. Yon revi jeneral nan lojik Boolean isit la. Ak ekspresyon Boolean yo enpòtan tou nan pasan, ki nou pral ale sou kounye a. Nou te aprann enfòmasyon sou 3 kalite pasan byen lwen tèlman nan CS50, pou, pandan y ap, epi fè ti tan. Ak li enpòtan yo konnen ke pandan ke pou pifò rezon nou ka sèvi ak aktyèlman nenpòt ki kalite riban jeneralman gen sèten kalite rezon oswa modèl komen nan pwogram ki espesifikman rele pou youn nan sa yo pasan ki fè li pi efikas oswa elegant nan Kòd l 'nan fason sa a. a Ann al sou sa ki chak nan sa yo pasan gen tandans pou l itilize pou pi souvan. Nan yon pou riban nou jeneralman deja konnen konbyen fwa nou vle repekte. Sa a ki sa nou mete nan kondisyon an. Pou, mwen = 0, mwen <10, pou egzanp. Nou deja konnen ke nou vle fè yon bagay 10 fwa. Koulye a, pou yon riban ti tan, jeneralman nou pa nesesèman konnen konbyen fwa nou vle riban an nan kouri. Men, nou fè konnen kèk sòt de kondisyon ke nou vle li nan toujou laverite oswa toujou gen fo. Pou egzanp, pandan ke se mete. Se pou nou di sa a, se yon varyab Boolean. Pandan ke la vre nou vle kòd la evalye, Se konsa yon ti jan ti kras pi plis rnouvlabl, yon ti jan ti kras pi plis jeneral pase yon pou riban, men nenpòt pou riban kapab tou gen pou konvèti nan yon riban ti tan. Anfen, fè pandan y ap pasan, ki ka trickiest nan konprann touswit, Byen souvan yo itilize lè nou vle evalye kòd la premye anvan lè a premye nou tcheke kondisyon an. Yon ka itilize komen pou yon fè pandan riban se lè ou vle jwenn opinyon itilizatè, epi ou konnen ou vle mande itilizatè a pou D 'a omwen yon fwa, men si yo pa ba ou bon konsèy touswit ou vle kontinye mande sa yo jiskaske yo ba ou konsèy ki bon. Sa a se itilize ki pi komen pou yon ti tan riban, epi kite pou yo gade nan estrikti aktyèl la nan sa yo pasan. Yo tipikman toujou gen tandans swiv sa yo modèl. Sou riban an pou andedan ou gen 3 eleman: inisyalizasyon, tipikman yon bagay tankou int mwen = 0 kote mwen se kontwa an, kondisyon, kote nou vle di kouri sa a pou riban osi lontan kòm kondisyon sa a toujou kenbe, tankou m update <10, ak Lè sa a, finalman,, ki se ki jan nou kantite varyab la vann san preskripsyon nan chak pwen nan riban an. Yon bagay komen nan wè gen se jis mwen + +, ki vle di kantite mwen pa 1 chak fwa. Ou kapab tou fè yon bagay tankou m + 2 =, ki vle di ajoute 2 a mwen chak fwa ou ale nan riban an. Lè sa a, fè an sa a jis vle di nenpòt kòd ki aktyèlman kouri kòm yon pati nan riban an. Se pou yon riban pandan y ap, tan sa a nou gen aktyèlman inisyalizasyon la deyò nan riban an, se konsa pou egzanp, kite a di ke yo ap eseye fè menm kalite riban kòm mwen jis ki dekri yo. Nou ta di Int mwen = 0 anvan riban a kòmanse. Lè sa a, nou te ka di lè m '<10 fè sa, Se konsa blòk la menm nan kòd tankou anvan, ak tan sa a pati nan update nan kòd la, pou egzanp, mwen + +, aktyèlman ale andedan nan riban an. Epi finalman, pou yon fè pandan, li nan menm jan ak riban a pandan y ap, men nou dwe sonje ke kòd la ap evalye yon fwa anvan yo kondisyon an tcheke, se konsa li fè sans yon anpil plis si ou gade nan li yo nan lòd anwo jouk anba. Nan yon fè pandan riban kòd la evalye anvan ou menm gade nan kondisyon la pandan y ap, Lè nou konsidere ke yon riban ti tan, li tcheke premye. Deklarasyon yo ak varyab. Lè nou vle kreye yon varyab nouvo nou premye vle inisyalize li. Pou egzanp, bar int initializes ba a varyab, men li pa bay li yon valè, se konsa sa ki valè bar la kounye a? Nou pa konnen. Li ta ka gen kèk valè fatra ki te deja ki estoke nan memwa a, epi nou pa vle sèvi ak varyab sa a jiskaske nou aktyèlman bay li yon valè, pou nou deklare li isit la. Lè sa a, nou inisyalize li nan dwe 42 anba a. Koulye a, nan kou, nou konnen sa a ka fè sou yon sèl liy, int bar = 42. Men, jis yo dwe klè etap sa yo miltip ke yo ale sou, deklarasyon an ak inisyalizasyon a ap pase separeman isit la. Sa rive sou yon sèl etap, ak youn nan pwochen, int Baz = bar + 1, deklarasyon sa a anba a, ki Baz ogmantasyon, se konsa nan fen sa a blòk kòd si nou te nan enprime valè a Baz li ta 44 paske nou deklare ak inisyalize li nan dwe 1 bar>, ak Lè sa a, nou kantite li yon fwa plis ak + +. nan Nou te ale sou sa a yon ti tan trè, men li la bon gen yon jeneral konprann nan sa ki fil ak evènman yo. Nou sitou te fè sa nan grafouyen, pou ou kapab panse a fil kòm sekans miltip nan kòd kouri nan an menm tan. Nan reyalite, li pwobableman pa ap kouri nan menm tan an, men sòt de abstrè nou ka panse a li nan fason sa a. Nan grafouyen, pou egzanp, nou te gen sprit yo miltip. Li te kapab egzekite diferan kòd nan menm tan an. Youn nan yo ta ka mache pandan y ap lòt la ap li di yon bagay nan yon pati diferan nan ekran an. Evènman yo se yon lòt fason pou separe soti lojik a ant eleman diferan nan kòd ou a, ak nan grate nou yo te kapab simulation evènman lè l sèvi avèk Difizyon an, ak sa a, se aktyèlman Lè m 'Resevwa, pa lè m tande, men esansyèlman li nan yon fason yo transmèt enfòmasyon soti nan yon luten nan yon lòt. Pou egzanp, ou ka vle transmèt jwèt sou, ak lè yon lòt luten resevwa jwèt sou, li reponn nan yon sèten fason. Se yon modèl enpòtan ke ou konprann pou pwogramasyon. Jis ale sou Semèn nan debaz 0, ki sa nou te ale sou twò lwen, kite pou yo gade nan pwogram sa a C senp. Tèks la ka yon ti jan ti kras piti isit la, men mwen pral ale sou li vrèman rapid. Nou ap tankou 2 dosye header nan tèt cs50.h la, ak stdio.h. Nou ap Lè sa a, defini yon konstan rele limit yo dwe 100. Nou ap mete ann aplikasyon Lè sa a, fonksyon prensipal nou an. Depi nou pa itilize agiman liy lòd isit la nou bezwen mete anile kòm agiman yo pou prensipal la. Nou wè int pi wo a prensipal la. Sa a ki kalite retou a, pakonsekan retounen 0 nan pati anba nan. E nou lè l sèvi avèk fonksyon CS50 bibliyotèk jwenn int mande itilizatè a pou D ', epi nou mete yo nan sa a x varyab, pou nou deklare x pi wo a, epi nou inisyalize l 'ak x GetInt =. Nou Lè sa a, tcheke yo wè si itilizatè a te ban nou bon konsèy. Si li nan LIMIT ≥ nou vle retounen yon kòd erè nan 1 epi enprime yon mesaj erè. Epi finalman, si itilizatè a ban nou bon D ' nou pral kòn kantite ak enprime soti ke rezilta. Jis asire w ke sa yo ki lakay ou frape tout ou ka wè etikèt yo nan diferan pati nan kòd la isit la. Mwen mansyone konstan, dosye header. Oh, int x. Asire w ke ou sonje ke nan yon varyab lokal yo. Sa diferansye li nan men yon varyab mondyal, ki nou pral pale sou yon ti jan pita nan sesyon an revizyon, epi nou ap rele fonksyon bibliyotèk la printf, Se konsa, si nou pa t 'enkli dosye a header stdio.h nou pa ta kapab rele printf. Apre sa, mwen kwè flèch la ke yo kouri koupe isit la se lonje dwèt la d%, ki se yon fisèl fòma nan printf. Li di enprime soti sa a varyab kòm yon nimewo, d%. E ke se li pou Semèn 0. Koulye a, Lucas ki pral kontinye. Hey, guys. Non mwen se Lucas. Mwen se yon sophomore nan kay la pi bon sou lakou lekòl la, Mather, ak mwen pral pale yon ti kras sou Semèn 1 ak 2.1. [Semèn 1 ak 2.1!] [Lucas Freitas] Kòm Lexi 't'ap di yo, lè nou te kòmanse tradui kòd ou nan grafouyen C youn nan bagay sa yo ke nou remake se ke ou pa kapab jis ekri kòd ou yo ak kouri li lè l sèvi avèk yon drapo vèt ankò. Aktyèlman, ou gen yo sèvi ak kèk etap sa yo fè pwogram C ou vin tounen yon dosye ègzèkutabl. Fondamantalman sa w ap fè lè w ap ekri yon pwogram se ke ou tradui lide ou a nan yon lang ke yon du ka konprann, Se konsa lè w ap ekri yon pwogram nan C ki sa w ap fè se aktyèlman ekri yon bagay ki du ou a pral nan konprann, ak Lè sa a, du a pral tradui ki kòd nan yon bagay ki òdinatè w lan pral konprann. Epi bagay la se, òdinatè w lan se aktyèlman trè bèbè. Òdinatè w lan kapab sèlman konprann 0s ak 1, Se konsa aktyèlman nan òdinatè yo an premye moun ki konn pwograme lè l sèvi avèk 0s ak 1S, men se pa ankò, di Bondye mèsi. Nou pa bezwen memorize sekans yo pou 0s ak 1S pou yon riban pou oswa pou yon riban pandan y ap ak sou sa. Se poutèt sa nou gen yon du. Ki sa ki yon du fè se li fondamantalman tradui kòd la C, nan ka nou an, nan yon lang ki sou òdinatè ou a pral konprann, ki se kòd la objè, ak du a ke nou ap sèvi ak Yo rele rezone, kidonk sa a se aktyèlman senbòl la pou rezone. Lè ou gen pwogram ou an, ou dwe fè 2 bagay sa yo. Premyèman, ou gen konpile pwogram ou an, ak Lè sa a, w ap ale nan kouri pwogram ou an. Te rekeyi pwogram ou an ou gen yon anpil nan opsyon yo fè sa. Premye a se fè program.c rezone nan ki pwogram ki non an nan pwogram ou an. Nan ka sa a ou ka wè yo ap jis li di: "Hey, konpile pwogram mwen an." Ou pa ap li di: "Mwen vle sa a non pou pwogram m '" oswa anyen. Dezyèm posiblite a an, ap ban yon non nan pwogram ou an. Ou ka di rezone-o ak Lè sa a, non an ke ou vle nan dosye a ègzèkutabl yo nonmen non li kòm ak Lè sa a, program.c. Epi ou ka tou fè fè pwogram, epi wè ki jan nan 2 ka yo an premye Mwen mete. C, ak nan yon sèl nan twazyèm mwen sèlman gen pwogram? Yeah, ou aktyèlman pa ta dwe mete. C lè w itilize fè. Sinon du a se aktyèlman ale nan rele nan ou. Epi tou, mwen pa konnen si ou nèg sonje, men yon anpil fwa nou menm tou nou itilize-lcs50 oswa-LM. Yo rele ki lye ak. Li jis di du a di ou pral sèvi sa yo bibliyotèk dwa la, Se konsa, si ou vle itilize cs50.h ou gen aktyèlman kalite rezone program.c-lcs50. Si ou pa fè sa, du a pa pral konnen ke w ap lè l sèvi avèk sa yo fonksyon nan cs50.h. Ak ki lè ou vle kouri pwogram ou, ou gen 2 opsyon. Si ou te fè program.c rezone nou pa t 'bay yon non nan pwogram ou an. Ou gen nan kouri li lè l sèvi avèk. / A.out. A.out se yon non estanda ki sonnen bay pwogram ou an si ou pa bay li yon non. Sinon w ap ale nan fè. / Pwogram si ou te bay yon non nan pwogram ou an, epi tou li si ou te fè fè pwogram non an ke yon pwogram sa pral jwenn deja yo pral pwograme non an menm jan dosye a c. Lè sa a, nou te pale de kalite done ak done. Fondamantalman kalite done yo menm bagay la kòm bwat ti kras yo itilize nan magazen valè, se konsa done kalite yo aktyèlman jis tankou Pokémons. Yo vini nan tout gwosè ak kalite. Mwen pa konnen si ke analoji fè sans. Gwosè nan done aktyèlman depann sou achitekti machin lan. Tout done gwosè yo ki mwen pral montre isit la yo aktyèlman pou yon machin 32-bit, ki se ka a nan aparèy nou an, men si w ap aktyèlman kodaj Mac ou a oswa nan yon Windows tou pwobableman w ap ale nan gen yon machin 64-ti jan, se konsa sonje ke gwosè yo done ki mwen pral montre isit la yo se pou machin nan 32-bit. Premye a ke nou te wè se te yon int, ki se trè dwat. Ou sèvi ak int nan magazen yon nonb antye relatif. Nou menm tou nou te wè karaktè a, Char la. Si ou vle sèvi ak yon lèt oswa yon yon senbòl ti kras w ap pwobableman ale nan sèvi ak yon Char. Yon Char gen 1 multiple, ki vle di 8 Bits, tankou Lexi te di. Fondamantalman nou gen yon Table ASCII ki gen 256 konbinezon ki posib nan 0s ak 1, ak Lè sa a, lè ou tape yon Char li a pral tradui karaktè a ki entrain ou yon nimewo ki di ou gen nan tablo a ASCII, tankou Lexi te di. Nou genyen tou flote la, ki nou itilize nan magazen nimewo desimal. Si ou vle chwazi 3.14, pou egzanp, w ap ale nan sèvi ak yon flote oswa yon doub ki gen presizyon plis. Yon flote gen 4 bytes. Yon doub gen 8 bytes, se konsa diferans la sèlman se presizyon la. Nou genyen tou yon long ki itilize pou nonm antye yo, epi ou ka wè pou yon machin 32-bit yon int ak yon long gen gwosè a menm, se konsa li pa vrèman fè sans yo sèvi ak yon long nan yon machin 32-bit. Men, si w ap itilize yon machin Mac ak 64-ti jan, aktyèlman yon long la gen gwosè 8, se konsa li reyèlman depann sou achitekti a. Pou machin nan 32-bit li pa fè sans yo sèvi ak yon long vrèman. Lè sa a, yon long lontan, sou lòt men an, gen 8 bytes, kidonk li se trè bon si ou vle gen yon nonb antye relatif pi long lan. Epi finalman, nou gen fisèl, ki se aktyèlman yon * Char, ki se yon konsèy nan yon Char. Li trè fasil a panse ke gwosè a nan fisèl la a pwal tankou nimewo a nan karaktè ki di ou gen la, men aktyèlman a * Char tèt li gen gwosè a nan yon konsèy nan yon Char, ki se 4 bytes. Gwosè a nan yon * Char se 4 bytes. Li pa enpòtan si ou gen yon mo ti piti oubyen yon lèt oswa yon anyen. Li nan ale nan gen 4 bytes. Nou menm tou nou te aprann yon ti kras sou Distribisyon, konsa kòm ou kapab wè, si ou gen, pou egzanp, yon pwogram ki di int x = 3 ak Lè sa a, printf ("d%", x / 2) èske ou konnen ki sa nèg li a pral enprime sou ekran? Yon moun? >> [Elèv yo] 2. 1. >> 1, yeah. Lè w ap fè 3/2 li nan pral jwenn 1.5, men depi nou ap sèvi ak yon nonb antye relatif li a pral inyore pati nan desimal, ak w ap ale nan gen 1. Si ou pa vle ki rive sa ou kapab fè, pou egzanp, se deklare yon flote y = x. Lè sa a, x ki itilize yo dwe 3 se kounye a pral fè 3,000 nan y. Lè sa a, ou kapab enprime y la / 2. Aktyèlman, mwen ta dwe gen yon 2. sou la. Li nan pral fè 3.00/2.00, ak w ap ale nan jwenn 1.5. E nou gen sa a f .2 jis pou mande pou 2 inite desimal an pati desimal la. Si ou gen .3 f li a pral gen aktyèlman 1,500. Si li nan 2 li pral yo dwe 1.50. Nou genyen tou ka sa a isit la. Si ou fè sa flote x = 3,14 ak Lè sa a, ou x printf w ap ale nan jwenn 3.14. Men, si ou fè x = int a nan x, ki vle di trete x kòm yon int epi ou enprime x kounye a w ap ale nan gen 3.00. ki fè sans? Paske w ap premye trete x kòm yon nonb antye relatif, kidonk, ou ap inyore pati nan desimal, ak Lè sa a, w ap enprime x. Epi finalman, ou ka tou fè sa, int x = 65, ak Lè sa a, ou deklare yon Char c = x, ak Lè sa a, si ou enprime c la w ap aktyèlman pral jwenn A, Se konsa, fondamantalman sa w ap fè la a se tradui nonb antye relatif la nan karaktè a, jis tankou tab la ASCII fè. Nou menm tou nou te pale osijè de operatè matematik. Pifò nan yo se trè dwat, se konsa +, -, *, /, epi tou li nou te pale de Mod, ki se rès la nan yon divizyon nan 2 chif yo. Si ou gen 10% 3, pou egzanp, sa vle di li divize 10 pa 3, ak sa ki rès la? Li nan pral fè 1, se konsa li la aktyèlman trè itil pou yon anpil nan pwogram yo. Pou Vigenère ak Seza tande kòz mwen trè asire ke tout ou nèg itilize Mod. Konsènan operatè matematik, fè anpil atansyon lè konbine * ak /. Pou egzanp, si ou fè (3/2) * 2 ki sa ou pral jwenn? [Elèv yo] 2. Yeah, 2, paske 3/2 a pwal 1.5, men depi ou ap fè operasyon ant 2 nonm antye relatif w ap aktyèlman jis pral konsidere 1, ak Lè sa a, 1 * 2 a pwal 2, ki fè gen anpil, anpil atansyon lè ap fè aritmetik ak nonm antye relatif paske ou ka jwenn sa 2 = 3, nan ka sa a. Epi tou li dwe pran anpil prekosyon sou priyorite. Ou ta dwe anjeneral itilize parantèz yo dwe asire ke ou konnen ki sa ou ap fè. Gen kèk rakoursi itil, nan kou, se yon sèl mwen + + oswa mwen + = 1 oswa lè l sèvi avèk + =. Sa a se menm bagay la kòm ap fè mwen = mwen + 1. Ou kapab tou fè mwen - oswa mwen - = 1, ki se menm bagay la kòm mwen = mwen -1, yon bagay ou nèg sèvi ak yon anpil nan pou pasan, nan omwen. Epitou, pou *, si ou itilize * = epi si w fè, pou egzanp, mwen * = 2 se menm bagay la kòm li di mwen = mwen * 2, ak menm bagay la pou divizyon. Si ou fè sa mwen / = 2 li nan menm bagay la kòm mwen = mwen / 2. Koulye a, sou fonksyon. Ou nèg te aprann ke fonksyon yo se yon estrateji trè bon pou konsève pou kòd pandan w ap pwogramasyon, kidonk si w vle fè travay an menm nan kòd ankò e ankò, pwobableman ou vle itilize yon fonksyon jis pou ou pa gen a kapab bay kopi ak keratin kòd la sou yo ak sou ankò. Aktyèlman, prensipal se yon fonksyon, ak lè mwen montre w fòma a nan yon fonksyon w ap ale nan wè ke se sa ki trè klè. Nou menm tou nou itilize fonksyon nan kèk bibliyotèk, pou egzanp, printf, GetIn, ki se nan bibliyotèk la CS50, ak fonksyon lòt tankou toupper. Tout moun sa yo fonksyon yo aktyèlman aplike nan bibliyotèk ak lòt, ak lè ou mete sa yo dosye ancrage nan konmansman an nan pwogram ou an w di a ou ka tanpri, ban m 'kòd la pou moun ki fonksyon Se konsa, mwen pa bezwen aplike yo nan tèt mwen? Epi ou kapab tou ekri fonksyon pwòp ou a, se konsa lè ou kòmanse pwogram ou reyalize ke bibliyotèk pa gen tout fonksyon yo ke ou bezwen. Pou pset an dènye, pou egzanp, nou te ekri trase, goumen, ak Passage, ak li a trè, trè enpòtan pou kapab ekri fonksyon yo paske yo te itil, epi nou itilize yo tout tan tout tan an nan pwogramasyon, epi li sove yon anpil nan kòd. Fòma a nan yon fonksyon se yon sèl sa a. Nou gen kalite retounen depi nan konmansman an. Ki sa ki kalite nan retounen? Se jis lè fonksyon ou a pral nan retounen. Si ou gen yon fonksyon, pou egzanp, faktoryèl, ki pral kalkile yon faktoryèl nan yon nonb antye relatif, pwobableman li pral retounen yon nonb antye relatif tou. Lè sa a, kalite nan retou a pwal int. Printf aktyèlman gen yon anile kalite retou paske ou pa ap retounen anyen. W ap sèlman enprime bagay sa yo nan ekran an ak yon moun kite fimen fonksyon an apre sa. Lè sa a, ou gen non an nan fonksyon an ke ou ka chwazi. Ou ta dwe yon ti kras ki rezonab, tankou pa chwazi yon non tankou XYZ oswa tankou x2f. Eseye fè moute yon non ki fè sans. Pou egzanp, si li nan faktoryèl, di faktoryèl. Si li nan yon fonksyon ki pral fè desen yon bagay, non li trase. Lè sa a, nou gen paramèt yo, ki rele yo tou agiman, ki se tankou resous yo ki fonksyon ou a bezwen soti nan kòd ou a fè travay li yo. Si ou vle kalkile faktoryèl la nan yon nimewo pwobableman ou bezwen gen yon nonm a kalkile yon faktoryèl. Youn nan agiman sa yo ke ou ap ale nan gen se nimewo a li menm. Lè sa a, li pral fè yon bagay epi retounen valè a nan fen a sof si li nan yon fonksyon anile. Ann gade pou wè yon egzanp. Si m 'vle ekri yon fonksyon ki rezime tout chif yo nan yon etalaj de nonm antye yo, premye a tout moun, kalite nan retou a pwal int paske mwen gen yon etalaj de nonm antye relatif. Lè sa a, mwen pral gen non an fonksyon tankou sumArray, ak Lè sa a, li la pral pran pozisyon an li menm, nan nom Int, ak Lè sa a, longè a nan etalaj la Se konsa, mwen konnen ki jan anpil nimewo mwen oblije rapò kantite. Lè sa a, mwen dwe inisyalize yon varyab sòm rele, pou egzanp, pou 0, ak chak fwa mwen wè yon eleman nan etalaj la mwen ta dwe ajoute li nan sòm, se konsa mwen te fè yon pou riban. Jis tankou Lexi te di, ou fè int mwen = 0, mwen 0 Lè sa a, li la pozitif. Si li la = a 0 Lè sa a, li nan 0, epi si li nan <0 Lè sa a, li la negatif. Ak youn nan lòt ap fè si, lòt bagay, si lòt bagay. Diferans ki genyen ant de a se ke yon sèl sa a se aktyèlman ale nan tcheke si> 0, <0 = 0 oswa twa fwa, pou si ou gen nimewo 2 a, pou egzanp, li pral vin isit la epi di si (x> 0), ak li a pral di wi, se konsa mwen enprime pozitif. Men, menm si mwen konnen ke li nan> 0 epi li pa pral fè 0 oswa <0 Mwen toujou pral fè se li 0, se li <0, Se konsa, mwen ap aktyèlman ale andedan nan ifs ke mwen pa t 'gen yo paske mwen deja konnen ke li pa pral satisfè nenpòt nan kondisyon sa yo. Mwen kapab itilize si la, lòt bagay, si lòt deklarasyon. Li fondamantalman di si x = 0 mwen enprime pozitif la. Si li pa, mwen pral tou teste sa a. Si li nan 2 pa mwen pral fè sa. Fondamantalman si mwen te gen x = 2 ou ta di si (x> 0), repons lan se wi, se konsa enprime sa a. Kounye a ke mwen konnen ke li nan> 0 e ke li satisfè premye a si Mwen pa menm ale nan kouri sa a kòd. Kòd la kouri pi vit, aktyèlman, 3 fwa pi vit si ou itilize sa a. Nou menm tou nou te aprann enfòmasyon sou ak ak oswa. Mwen pa pwal ale nan sa a paske Lexi deja te pale sou yo. Se jis nan && yo ak | operatè |. Bagay la sèlman mwen pral di se dwe fè atansyon lè ou gen 3 kondisyon. Sèvi ak parantèz paske li trè konfizyon lè ou gen yon kondisyon ak yon lòt youn oswa yon lòt. Sèvi ak parantèz jis yo dwe asire ke kondisyon ou fè sans paske se nan ka sa a, pou egzanp, ou ka imajine ke li ka kondisyon an premye ak youn oswa lòt la oswa 2 kondisyon yo konbine nan yon ak oswa yon sèl nan twazyèm, konsa jis dwe fè atansyon. Epi finalman, nou te pale de switch. Yon switch se trè itil lè ou gen yon varyab. Se pou nou di ke ou gen yon varyab tankou n ki ka 0, 1, oswa 2, epi pou chak nan ka sa yo w ap ale nan fè yon travay. Ou ka di chanje varyab la, epi li endike ke valè a Lè sa a, se tankou value1 mwen pral fè sa, ak Lè sa a, mwen kraze, ki vle di mwen pa pwal fè yon gade nan nenpòt nan ka yo lòt paske nou deja satisfè ka sa a ak Lè sa a, value2 yo ak sou sa, epi tou mwen te ka gen yon switch default. Sa vle di si li pa satisfè nenpòt nan ka yo ke mwen te ki mwen pral fè yon lòt bagay, men sa a si ou vle. Sa a tout pou mwen. Koulye a, kite a gen Tommy. Tout dwa, sa a se pral fè Semèn 3-ich. Sa yo se kèk nan sijè sa yo nou pral kouvri, kriptografik, objektif, ranje, et setra. Jis yon mo rapid sou kriptografik. Nou pa pwal, yon mato sa a lakay ou. Nou te fè sa a nan pset 2, men pou egzamen an asire w ke ou konnen diferans ki ant kalkile nan Seza tande kòz ak kalkile nan Vigenère, ki jan tou de nan sa yo travay Algorithms epi ki sa li la renmen yo ankripte ak dekriptaj tèks lè l sèvi avèk sa yo Algorithms 2. Sonje byen, kalkile nan Seza tande kòz tou senpleman wotasyon chak karaktè nan menm kantite lajan an, pou asire'w ke ou Mod pa kantite lèt nan alfabè an. Ak kalkile nan Vigenère, sou lòt men an, wotasyon chak karaktè pa yon kantite lajan diferan, se konsa olye ke li di chak Thorne karaktè pa 3 Vigenère pral Thorne chak karaktè pa yon kantite lajan diferan depann sou kèk mo kle kote chak lèt ​​nan mo kle a reprezante kèk kantite lajan diferan Thorne tèks la klè pa. Se pou nou premye pale de dimansyon varyab. Gen 2 diferan kalite varyab. Nou gen varyab lokal yo, ak sa yo yo pral defini deyò nan prensipal oswa andeyò nenpòt fonksyon oswa blòk, ak sa yo pap kapab genyen aksè nan nenpòt kote nan pwogram ou an. Si ou gen yon fonksyon ak nan ki fonksyon se yon riban pandan y ap varyab nan gwo mondyal se aksesib toupatou. Yon varyab lokal yo, sou la lòt bò, se scoped nan plas la kote li defini. Si ou gen yon fonksyon isit la, pou egzanp, nou gen sa a g fonksyon, ak andedan nan g gen yon varyab isit la yo rele y, ak sa vle di ke sa a se yon varyab lokal yo. Menm si sa a se varyab rele y ak sa a se varyab rele y sa yo fonksyon 2 pa gen okenn lide ki sa varyab lokal chak lòt la yo ye. Nan lòt men an, moute isit la nou di Int x = 5, ak sa a se deyò dimansyon nan de nenpòt fonksyon. Li nan deyò dimansyon nan de prensipal yo, kidonk sa a se yon varyab mondyal. Sa vle di ke andedan nan 2 sa yo fonksyon lè m 'di x - oswa x + + Mwen gen aksè nan x la menm kote sa a y ak y sa a yo se varyab diferan. Sa a se diferans ki genyen ant yon varyab mondyal ak yon varyab lokal yo. Osi lwen ke konsepsyon an konsène, pafwa li la pwobableman yon pi bon ide kenbe varyab lokal nenpòt lè ou kapab posib depi gen yon pakèt moun sou varyab mondyal ka jwenn vrèman konfizyon. Si ou gen yon pakèt moun sou fonksyon tout modifye menm bagay la ou ta ka bliye sa ki si sa a fonksyon aksidantèlman modifye sa a mondyal, ak sa a fonksyon lòt pa konnen sou li, epi li jwenn bèl konfizyon jan ou ka jwenn plis kòd. Kenbe varyab lokal nenpòt lè ou kapab posib se konsepsyon jis bon. Matris, sonje, yo se tou senpleman bay lis eleman nan kalite la menm. Anndan nan CI pa ka gen yon lis tankou 1 2.0,, hello. Nou jis pa ka fè sa. Lè nou deklare yon etalaj nan C tout nan eleman yo gen yo dwe nan kalite la menm. Men mwen gen yon etalaj de 3 nonm antye relatif. Men mwen gen longè nan etalaj la, men si mwen jis deklare l 'nan sa a sentaks kote mwen presize ki sa tout nan eleman yo ki mwen pa teknikman bezwen sa a 3. Du a se entelijan ase yo konnen ki jan gwo etalaj la yo ta dwe. Koulye a, lè m 'vle jwenn oswa fikse valè a nan yon etalaj sa a se sentaks la fè sa. Sa a pral aktyèlman modifye eleman an dezyèm nan etalaj la paske, sonje, numerotasyon kòmanse nan 0, pa nan 1. Si m 'vle li ki valè mwen kapab di yon bagay tankou int x = etalaj [1]. Oswa si mwen vle mete ke valè, tankou Mwen fè isit la, Mwen kapab di etalaj [1] = 4. Tan sa a gen aksè nan eleman nan endèks yo oswa pozisyon yo oswa kote yo ye nan etalaj la, e ke lis kòmanse nan 0. Nou ka menm tou nou gen ranje nan ranje, ak sa a yo rele yon etalaj milti-dimansyon. Lè nou gen yon etalaj milti-dimansyon sa vle di nou ka gen yon bagay tankou ranje ak kolòn, ak sa a se jis yon fason nan vizualizan sa a oswa panse sou li. Lè m 'gen yon etalaj milti-dimansyon sa vle di mwen pral kòmanse ki bezwen plis pase 1 endèks paske si mwen gen yon chema kadriye ladan jis li di sa ki ranje w ap nan pa ban nou yon nimewo. Sa ki nan vrèman jis pral ban nou yon lis nimewo. Se pou nou di mwen gen sa a etalaj isit la. Mwen gen yon etalaj rele gri, ak m ap di ranje 2 li a ak 3 kolòn, epi konsa sa a se youn fason pou vizualizan li. Lè m 'di mwen vle jwenn eleman an nan [1] [2] ki vle di ke paske sa yo, se ranje premye ak Lè sa a, kolòn Mwen pral Ale nan Ranje 1 depi m 'te di 1. Lè sa a, mwen pral vini sou isit la yo kolòn 2, ak mwen pral jwenn valè a 6. Fè sans? Multi-dimansyon ranje, sonje, se teknikman jis yon etalaj de ranje. Nou ka gen ranje nan ranje nan ranje. Nou kapab kenbe prale a, men vrèman yon fason yo reflechi sou ki jan sa a se ke yo te mete deyò ak sa k ap pase sou se visualized li nan yon griy tankou sa a. Lè nou pase ranje fonksyon, yo pwal santi yo konpòte yon ti jan diferan pase lè nou pase varyab regilye nan fonksyon tankou pase yon int oswa flote yon. Lè nou pase nan yon kalite int oswa Char oswa nenpòt nan sa yo lòt done nou jis te pran yon gade si fonksyon an modifye valè varyab sa a ki chanje a pa pral difize moute fonksyon an rele. Avèk yon etalaj, sou lòt men an, ki gen pou rive. Si m 'pase nan yon etalaj nan kèk fonksyon ak ki fonksyon chanje kèk nan eleman yo, lè m 'tounen vin moute nan fonksyon an ke yo rele li etalaj mwen se kounye a pral fè diferan, ak vokabilè a pou ke ranje se yo pase pa referans, kòm nou pral wè pita. Sa a se ki gen rapò ak aprann kijan travay endikasyon, kote sa yo kalite done debaz, sou lòt men an, yo pase pa vo anyen. Nou kapab panse a ki jan fè yon kopi kèk varyab ak Lè sa a, pase nan kopi a. Li pa enpòtan ki sa nou fè ak varyab sa a. Fonksyon an rele pa pral dwe konnen ke li te chanje. Matris yo se jis yon ti jan diferan nan ki konsiderasyon. Pou egzanp, kòm nou jis te wè, prensipal se senpleman yon fonksyon ki ka pran nan 2 agiman. Agiman nan premye fonksyon prensipal se arg, oswa nimewo a nan agiman, epi li se agiman nan dezyèm rele argv, ak sa yo se valè yo reyèl nan sa yo agiman. Se pou nou di mwen gen yon pwogram yo rele this.c, epi mwen di fè sa-a, ak mwen pral kouri sa a nan liy nan lòd. Koulye a, yo pase nan kèk agiman nan pwogram mwen rele sa a, Mwen te kapab di yon bagay tankou. / Sa a se CS 50. Sa a se ki sa nou imajine David fè chak jou nan tèminal la. Men koulye a, anndan an fonksyon prensipal nan pwogram sa a gen valè sa yo, se konsa arg se 4. Li ta ka yon ti kras konfizyon vrèman paske n ap sèlman pase nan se CS 50. Sa a se sèlman 3. Men sonje ke eleman an premye nan argv oswa agiman an premye se non an nan fonksyon nan tèt li. Se konsa, sa vle di ke nou gen 4 bagay sa yo isit la, ak eleman nan premye a pwal. / sa a. Epi sa ap reprezante kòm yon kòd. Lè sa a, eleman yo ki rete yo se sa ki nou tape nan apre non an nan pwogram nan. Se konsa, jis kòm yon sou kote, menm jan nou pwobableman te wè nan pset 2, sonje ke se fisèl la 50 ≠ 50 an antye ki pè. Se konsa, nou pa ka di yon bagay tankou, 'int argv x = 3.' Sa se jis pa pral fè sans, paske sa a se yon fisèl, e sa se yon nonb antye relatif. Se konsa, si ou vle konvèti ant 2 a, sonje, nou pral kontinye gen fonksyon sa a majik rele atwa. Ki pran yon kòd ak retounen nonb antye relatif la reprezante andedan nan ki fisèl. Se konsa, sa a, se yon erè fasil fè sou egzamen an, jis panse ke sa a, li pral otomatikman kalite ki kòrèk la. Men, jis konnen ke sa yo ap toujou gen strings menm si fisèl la sèlman gen yon nonb antye relatif oswa yon karaktè oubyen flote yon. Se konsa, kounye a kite a pale sou kouri tan. Lè nou gen tout bagay sa yo algoritm ki fè tout bagay sa yo fou, li vin vrèman itil mande kesyon an, "Konbyen tan yo pran?" Nou reprezante sa ak yon bagay yo rele asenptotik notasyon. Se konsa, sa a vle di ke - byen, kite a di nou ba algorithm nou an kèk D 'reyèlman, reyèlman, reyèlman gwo. Nou vle mande kesyon an, "Konbyen tan se li pral pran? Konbyen etap li pral pran algorithm nou yo kouri kòm yon fonksyon nan gwosè a nan D 'a? " Se konsa, fason nan premye nou ka dekri kouri tan la avèk gwo O. Ak sa a se tan pi move-ka kouri nou an. Se konsa, si nou vle sòt yon etalaj, epi nou bay algorithm nou an yon etalaj sa a, se nan desann lòd lè li ta dwe nan lòd montangn, ki k ap pase yo dwe ka ki pi mal la. Sa a se anwo nou mare l 'nan longè a maksimòm de tan algorithm nou an pral pran. Nan lòt men an, sa a Ω ki pral dekri pi byen ki ka kouri tan. Se konsa, si nou bay yon etalaj deja klase nan yon algorithm Fouye, konbyen tan li pral pran yo sòt li ye? Lè sa a, lè sa a, dekri yon pi ba mare sou kouri tan. Se konsa, isit la yo se sèlman kèk mo ki dekri kèk komen kouri fwa. Sa yo se nan Ascending lòd. Se tan ki pi rapid kouri nou gen yo rele konstan. Sa vle di pa gen pwoblèm konbyen eleman nou ba algorithm nou an, pa gen pwoblèm ki jan gwo etalaj nou an se, Fouye li oswa fè tou sa n ap fè etalaj la ap toujou pran menm kantite lajan an nan tan. Se konsa, nou ka reprezante ki jis ak yon 1, ki se yon konstan. Nou menm tou nou gade nan moman kouri logaritmik. Se konsa, yon bagay tankou rechèch binè se logaritmik, kote nou koupe pwoblèm lan nan mwatye tan chak ak Lè sa a, bagay sa yo jis jwenn pi wo soti nan la. Men, si w ap janm ekri yon O nan nenpòt ki algorithm faktoryèl, pwobableman ou pa ta dwe konsidere sa a kòm travay jou ou a. Lè nou konpare kouri fwa li enpòtan kenbe nan tèt ou tout bagay sa yo. Se konsa, si mwen gen yon algorithm ki nan O (n), ak yon lòt moun gen yon algorithm nan O (2n) sa yo, se aktyèlman asenptotik ekivalan. Se konsa, si nou imajine N yo dwe yon nimewo gwo tankou eleventy milya dola: Se konsa, lè nou ap konpare eleventy milya dola bay yon bagay tankou eleventy milya dola + 3, toudenkou ki +3 pa reyèlman fè yon gwo diferans ankò. Se poutèt sa nou ap ale nan kòmanse konsidere tout bagay sa yo yo dwe ekivalan. Se konsa, bagay sa yo tankou sa yo konstan isit la, gen nan 2 x sa a, oswa ajoute yon 3, sa yo, se jis konstan, ak sa yo yo ale nan lage yo. Se konsa, sa a, se poukisa tout 3 nan moman sa yo kouri yo se menm bagay la kòm li di yo ap O (n). Menm jan an, si nou gen 2 fwa kouri lòt, se pou yo di O (n ³ + 2n ²), nou ka ajoute + N, + 7, ak Lè sa a, nou gen yon lòt lè kouri sa se sèlman O (n ³). ankò, sa yo, se menm bagay la paske sa yo - sa yo, se pa menm bagay la. Sa yo se menm bagay yo, regrèt. Se konsa, sa yo, se menm bagay la tou paske sa a ³ n ki pral domine sa a ² 2n. Ki sa ki se pa menm bagay la se si nou te kouri fwa tankou O (n ³) ak O (n ²) paske sa ³ n se pi gwo pase sa a ² n. Se konsa, si nou gen ekspozan, toudenkou li sa a kòmanse gen pwoblèm, Men, lè nou ap jis fè fas ak faktè kòm nou yo moute isit la, Lè sa a, li pa pral gen pwoblèm yo paske yo te jis pral kite. Se pou nou pran yon gade nan kèk nan algoritm yo nou te wè byen lwen tèlman epi pale sou tan kouri yo. Fason an premye nan chèche pou yon nimewo nan yon lis, ke nou te wè, se te lineyè rechèch. Ak aplikasyon an nan rechèch lineyè se super senp. Nou jis gen yon lis, e nou pral fè yon gade nan chak eleman sèl nan lis la jiskaske nou jwenn nimewo a nou ap chèche pou. Se konsa, ki vle di ke nan ka ki pi mal la, sa a O (n). Epi ka-a pi move isit la ta ka si eleman an se eleman ki sot pase yo, Lè sa a, lè l sèvi avèk lineyè rechèch nou gen fè yon gade nan chak eleman yon sèl jiskaske nou jwenn nan yon sèl nan dènye yo nan lòd yo konnen ke li te aktyèlman nan lis la. Nou pa ka jis bay moute mwatye ak di, "Li pwobableman pa jwenn yo." Avèk rechèch lineyè nou gen fè yon gade nan tout bagay la. Tan an kouri pi bon-ka, sou la lòt bò, se konstan paske nan ka a pi bon eleman nan nou ap chèche pou se jis yon nan premye nan lis la. Se konsa li pral pran nou egzakteman 1 etap, pa gen pwoblèm ki jan gwo lis la se si nou ap chèche pou eleman nan premye chak fwa. Se konsa, lè ou chèche, sonje, li pa egzije pou yo lis nou an Ranje. Paske n ap senpleman pral gade sou tout eleman sèl, e li pa vrèman gen pwoblèm ki lòd sa yo eleman yo se pous Yon algorithm rechèch plis entelijan se yon bagay tankou rechèch binè. Sonje byen, aplikasyon de rechèch binè se lè w ap ale nan kenbe gade nan mitan an nan lis la. Ak paske nou menm nou ap chèche nan mitan an, nou egzije pou se lis la Ranje oswa lòt moun nou pa konnen kote mitan an se, epi nou gen gade sou lis la antye rive sou jwenn li, ak Lè sa a, nan pwen sa a nou ap jis gaspiye tan. Se konsa, si nou gen yon lis klase epi nou jwenn mitan an, nou pwal yo konpare mitan an eleman nan nou ap chèche pou. Si li twò wo, Lè sa a, nou ka bliye mwatye nan dwa paske nou konnen ke si eleman nou an se deja twò wo ak tout bagay a dwat a sa a eleman se menm ki pi wo, Lè sa a, nou pa bezwen gade gen ankò. Ki kote sou men nan lòt, si eleman nou an se twò ba, nou konnen tout bagay sa yo bò gòch sa a nan eleman tou se twò ba, se konsa li pa vrèman fè sans yo gade la, swa. Fason sa a, avèk chak etap ak chak fwa nou gade nan pwen milye a nan lis la, nou pral koupe pwoblèm nou yo nan mwatye paske toudenkou nou konnen yon pakèt antye nan nimewo ke yo pa ka fè yon sèl la nou ap chèche pou. Nan pseudocode sa a ta gade yon bagay tankou sa a, epi paske nou ap koupe lis la nan mwatye tan chak yon sèl, pi move-ka so kouri tan nou soti nan lineyè logaritmik. Se konsa, toudenkou nou genyen boutèy demi lit-an etap yo nan lòd jwenn yon eleman ki nan yon lis. Tan an kouri pi bon-ka, menm si, se toujou konstan paske kounye a, kite yo jis di ke eleman nan nou ap chèche pou se toujou mitan an egzak la lis orijinal la. Se konsa, nou ka grandi lis nou an kòm yo gwo nou vle, men si eleman nan nou ap chèche pou se nan mitan pou mitan, Lè sa a, li la sèlman pral pran nou 1 etap. Se konsa, Se poutèt sa nou ap O (boutèy demi lit n) ak Ω (1) oswa konstan. Se pou nou aktyèlman kouri binè rechèch sou lis sa a. Se konsa, kite a di ke nou ap chèche pou eleman nan 164. Premye bagay nou pral fè se jwenn pwen milye a nan lis sa a. Li jis konsa k ap pase ki pwen milye a pral tonbe nan ant 2 nimewo sa yo, se konsa kite yo jis di abitrèman, chak fwa pwen milye a tonbe ant 2 chif, kite yo jis wonn moute. Nou jis bezwen asire ke nou fè sa chak etap nan chemen an. Se konsa, nou ap ale nan wonn moute yo, epi nou ap pral di ke 161 se la nan mitan lis nou an. Se konsa, 161 <164, ak chak eleman nan kite nan 161 tou se <164, konsa nou konnen ke li pa la pral ede nou nan tout kòmanse ap chèche sou isit la paske eleman nan nou ap chèche pou pa ka la. Se konsa, sa nou kapab fè se nou ka jis bliye sou ke mwatye antye gòch nan lis la, e kounye a, sèlman konsidere soti sou bò dwat la nan pati a 161. Se konsa, ankò, sa a se pwen milye a; kite yo jis wonn moute. Koulye a, 175 se twò gwo. Se konsa, nou konnen li pa pral ede nou kap isit la oswa isit la, pou nou ka jis jete ki lwen, ak evantyèlman nou pral frape 164 la. Nenpòt kesyon sou rechèch binè? Kite yo deplase sou soti nan chèche pou rive nan yon lis deja-Ranje aktyèlman ap pran yon lis nimewo nan nenpòt lòd ak fè ke lis nan moute lòd. Te algorithm nan premye nou te etidye rele sòt jarèt. Ak sa a ta ka pi senp nan algoritm yo nou te wè. Sòt jarèt di ke lè nenpòt eleman 2 andedan lis la ap soti nan kote, sa vle di gen yon nimewo ki pi wo nan kite nan yon nimewo pi ba yo, Lè sa a, nou pral boukante yo, paske sa vle di ke lis la pral "Plis Ranje" pase sa li te la anvan. E nou jis ap pral kontinye pwosesis sa a ankò, li ankò e ankò jiskaske evantyèlman kalite a eleman nan jarèt kote kòrèk yo epi yo nou gen yon lis Ranje. Tan an kouri nan sa a a pwal O (n ²). Poukisa? Oke, paske nan ka ki pi mal la, nou pwal pran chak eleman, ak nou pral fini konpare l 'bay chak eleman lòt nan lis la. Men, nan ka a pi bon, nou gen yon lis deja klase, bil sòt nan jis pral ale nan yon fwa, di "non. Mwen pa t 'fè okenn echanj, se konsa mwen fè." Se konsa, nou gen yon pi bon-ka kouri lè nan Ω (n). Se pou nou kouri sòt jarèt sou yon lis. Oswa premye, kite la jis gade kèk pseudocode vrèman byen vit. Nou vle di nou vle kenbe tras nan, nan chak iterasyon nan riban an, Kenbe tras de si wi ou non nou chanje nenpòt eleman. Se konsa, rezon ki fè yo pou ki se, nou pral sispann lè nou pa t 'échanges nenpòt eleman. Se konsa, nan kòmansman an nan riban nou an, nou pa t 'échanges anyen, se konsa nou pral di sa a, se fo. Koulye a, nou pral yo ale nan lis la epi konpare eleman mwen eleman mwen + 1 epi si se ka a ki di ke gen yon nimewo pi gwo nan kite nan yon nimewo ki pi piti, Lè sa a, nou ap jis pral boukante yo. Lè sa a, nou pral sonje ke nou échanges yon eleman. Sa vle di ke nou bezwen yo ale nan lis la omwen 1 plis tan paske kondisyon an nan ki nou sispann se lè se lis la tout antye deja klase, sa vle di nou pa gen nenpòt ki te fè echanj. Se konsa, sa a, se poukisa kondisyon nou desann isit la se 'pandan ke kèk eleman yo te échanges. Se konsa, kounye a kite a jis gade nan sa a ap kouri sou yon lis. Mwen gen lis la 5,0,1,6,4. Sòt jarèt ki pral kòmanse tout wout la sou bò gòch la, epi li pral konpare eleman yo mwen, se konsa 0 a mwen + 1, ki se eleman 1. Li nan pral di, byen 5> 0, men kounye a 5 se sou bò goch la, Se konsa, mwen bezwen swap 5 an ak 0 a. Lè m 'swap yo, toudenkou li mwen jwenn lis sa a diferan. Koulye a, 5> 1, se konsa nou pral boukante yo. 5 se pa> 6, donk nou pa bezwen fè anyen isit la. Men, 6> 4, konsa nou bezwen swap. Yon fwa ankò, nou bezwen kouri nan lis la antye rive sou evantyèlman dekouvri ke sa yo se soti nan lòd; nou boukante yo, ak nan pwen sa a nou bezwen kouri nan lis la 1 plis tan asire w ke tout bagay ap nan lòd li yo, ak nan sa a sòt jarèt pwen li te fini. Yon algorithm diferan pou pran kèk eleman ak Fouye yo se sòt seleksyon. Lide a dèyè sòt seleksyon se ke nou ap ale nan bati yon pòsyon Ranje nan lis la 1 eleman nan yon tan. Ak fason an ke nou ap pwal fè sa se pa bati segman nan gòch nan lis la. Ak fondamantalman, chak - sou chak etap, nou pwal pran eleman ki pi piti a nou kite ki pa te Ranje ankò, e nou pral pou avanse pou li nan segman sa Ranje. Sa vle di nou bezwen kontinyèlman jwenn minimòm eleman nan klase ak Lè sa a, pran ki eleman minimòm ak swap li ak tou sa kite-ki pi eleman ki pa klase. Tan an kouri nan sa a a pwal O (n ²) paske nan ka ki pi mal la nou bezwen konpare chak eleman yon sèl bay yo chak eleman ak lòt. Paske nou ap di ke si nou kòmanse nan mwatye a gòch nan lis la, nou bezwen yo ale nan segman nan tout dwa jwenn eleman ki pi piti a. Lè sa a,, ankò, nou bezwen ale sou tout segman nan dwa ak kenbe ale sou ki sou yo ak sou yo ak sou ankò. Sa k ap pase yo dwe n ². Nou pwal bezwen yon pou andedan riban nan yon lòt pou riban ki sijere n ². Nan te panse a ka pi bon, se pou yo di nou bay li yon lis deja klase; nou aktyèlman pa fè nenpòt pi bon pase ² n. Paske sòt seleksyon pa gen okenn fason pou konnen ke eleman minimòm-nan se jis yon sèl la mwen rive yo dwe gade nan. Li toujou bezwen asire w ke sa a se aktyèlman minimòm la. Ak wout la sèlman nan asire w ke li nan minimòm lan, lè l sèvi avèk sa a algorithm, se fè yon gade nan chak eleman yon sèl ankò. Se konsa, reyèlman, si ou ba li - si w bay sòt seleksyon yon lis deja klase, li pa pral fè nenpòt pi bon pase bay li yon lis ki pa klase ankò. By wout la, si li k ap pase yo ka a gen yon bagay ki O (yon bagay) ak Omega a nan yon bagay, nou ka jis di plis suksen ke li nan θ nan yon bagay. Se konsa, si ou wè sa a vini nenpòt kote, se sa ki ki jis vle di. Si gen yon bagay Theta nan n ², se toude ki O gwo (n ²) ak Ω (n ²). Se konsa, pi bon ka ak ka pi move, li pa fè yon diferans, algorithm a pral fè menm bagay la chak fwa. Se konsa, sa a se sa pseudocode pou sòt seleksyon t 'kapab sanble. Nou ap fondamantalman pral di ke mwen vle repekte sou lis la de goch a dwat, epi nan chak iterasyon nan riban an, mwen pral pou avanse pou pi eleman minimòm-nan nan sa a pòsyon Ranje nan lis la. E yon fwa mwen demenaje yon bagay la, mwen pa janm bezwen gade ki eleman ankò. Paske kòm pli vit ke mwen swap yon eleman nan segman a gòch nan lis la, li nan Ranje paske nou ap fè tout bagay nan lòd moute lè l sèvi avèk minimes. Se konsa, nou te di, oke, nou ap nan pozisyon mwen, epi nou bezwen gade tout nan eleman yo a dwat a mwen yo nan lòd jwenn minimòm la. Se konsa, sa vle di nou vle gade soti nan mwen 1 + a nan fen lis la. Epi, koulye a, si eleman a ke nou ap kounye a gade nan gen mwens pase minimòm nou an twò lwen, ki, sonje, nou ap kòmanse koupe minimòm-nan jis pou kèlkeswa sa eleman nou ap kounye a nan; mwen pral asime ke nan minimòm la. Si mwen jwenn yon eleman ki nan pi piti pase sa, Lè sa a, mwen pral di, oke, byen, mwen jwenn yon minimòm nouvo. Mwen pral sonje kote ke minimòm te ye a. Se konsa, koulye a, yon fwa mwen te ale nan segman sa dwa klase, Mwen kapab di mwen pral swap eleman minimòm-nan ak eleman ki nan pozisyon mwen. Sa a pral bati lis mwen an, pòsyon Ranje m 'lan nan lis la de gòch a dwat, epi nou pa janm bezwen gade yon eleman ankò yon fwa li a nan ki pòsyon. Yon fwa nou te échanges li. Se konsa, kite a kouri sòt seleksyon sou lis sa a. Se eleman ki ble isit la a pwal mwen an, ak eleman wouj la a pwal eleman nan minimòm. Se konsa, mwen kòmanse tout wout la sou bò gòch la nan lis la, se konsa nan 5. Koulye a, nou bezwen jwenn minimòm eleman nan klase. Se konsa, nou di 0 <5, kifè 0 se minimòm nouvo mwen an. Men, mwen pa ka sispann gen, paske menm si nou ka rekonèt ke 0 se pi piti a, nou bezwen kouri nan chak eleman lòt kote nan lis la a asire w. Se konsa, 1 se pi gwo, 6 se pi gwo, 4 se pi gran. Sa vle di ke apre kap nan tout nan eleman sa yo, mwen te detèmine 0 se pi piti a. Se konsa, mwen pral boukante 5 an ak 0 a. Yon fwa mwen swap sa, mwen pral jwenn yon lis nouvo, epi mwen konnen ke mwen pa janm bezwen gade ki 0 ankò paske yon fwa mwen te échanges li, mwen te klase li epitou n ap fè a. Kounye a li jis pou k ap pase ki eleman nan ble se ankò 5 an, e nou bezwen gade 1 an, 6 an ak 4 an detèmine ke 1 se eleman ki pi piti minimòm, se konsa nou pral boukante 1 an ak 5 an. Ankò, nou bezwen gade - konpare 5 an a 6 an ak 4 an, epi nou ap ale nan swap 4 an ak 5 an, epi finalman, konpare moun ki nimewo 2 ak swap yo jouk nou jwenn lis Ranje nou yo. Nenpòt kesyon sou kalite seleksyon? Oke. Se pou nou deplase li nan yon sijè an dènye isit la, e ke se rkursyon. Rkursyon, sonje, se bagay sa a meta reyèlman kote yon fonksyon repete rele tèt li. Se konsa, nan kèk pwen, pandan y ap fuction nou an, ap repete rele tèt li, gen bezwen yo dwe kèk pwen nan ki nou sispann rele tèt nou. Paske si nou pa fè sa, Lè sa a, nou ap jis pral kontinye fè sa a pou tout tan, ak pwogram nou an se jis pa pral mete fen nan. Nou rele kondisyon sa a ka de baz la. Epi ka-a baz di, olye ke w rele yon fonksyon ankò, Mwen jis ale nan retounen kèk valè. Se konsa, yon fwa nou te tounen yon valè, nou te sispann rele tèt nou, ak rès la nan apèl sa yo nou te fè byen lwen tèlman kapab tou retounen. Opoze a nan ka a baz se ka a repetitif. Ak sa a se lè nou vle fè yon lòt apèl fonksyon an ke nou se kounye a pous E nou pwobableman, byenke pa toujou, vle sèvi ak agiman diferan. Se konsa, si nou gen yon fonksyon ki rele f, ak f jis rele pran 1 agiman, ak nou jis kenbe w rele f (1), f (1), f (1), epi li jis pou k ap pase ki agiman a 1 tonbe nan ka repetitif, nou toujou ap pa janm ale nan sispann. Menm si nou gen yon ka baz, nou bezwen asire w ke evantyèlman nou ap ale nan frape ki ka baz. Nou pa jis kenbe rete nan ka sa a repetitif. Anjeneral, lè nou rele tèt nou, nou ap pwobableman pral gen yon agiman diferan chak fwa. Isit la se yon fonksyon vrèman senp repetitif. Se konsa, sa a pral kalkile faktoryèl a nan yon kantite. Up top isit la nou gen ka baz nou an. Nan ka a ki n ≤ 1, nou pa ap ale nan rele faktoryèl ankò. Nou pwal sispann; nou ap jis pral retounen kèk valè. Si sa a se pa vre, lè sa a nou pral frape ka repetitif nou an. Avi isit la ke nou pa jis ap rele faktoryèl (n), paske men sa pa ta dwe trè itil. Nou pral rele faktoryèl nan yon lòt bagay. Se konsa, ou ka wè, evantyèlman, si nou pase yon yon bagay faktoryèl (5) oswa, nou pwal rele faktoryèl (4) yo ak sou sa, epi evantyèlman nou ap ale nan frape sa a ka baz. Se konsa, sa a sanble bon. Ann wè sa ki pase lè nou aktyèlman kouri sa a. Sa a se chemine a, epi kite pou yo di ke prensipal ki pral rele sa a fonksyon ki gen yon agiman (4). Se konsa, yon fwa faktoryèl wè epi li = 4, faktoryèl pral rele tèt li. Koulye a, toudenkou, nou gen faktoryèl (3). Se konsa, sa yo fonksyon yo ale nan ap kontinye grandi jouk evantyèlman nou frape ka baz nou an. Nan pwen sa a, valè a retounen nan sa a se retounen nan (no valè a retounen nan sa a), valè a retounen nan sa a se no retounen valè sa a. Evantyèlman nou bezwen frape kèk nimewo. Nan tèt la isit la, nou di retou 1. Sa vle di ke yon fwa nou retounen ladan nimewo, nou ka pòp sa a nan chemine a. Se konsa, sa a faktoryèl (1) a se fè. Lè 1 retounen, sa a faktoryèl (1) retounen, sa a retounen nan 1. Valè a retounen nan sa a, sonje, te no valè a retounen nan sa a. Se konsa, toudenkou, sa a Guy konnen ke mwen vle retounen 2. Se konsa, sonje, retounen valè nan sa a se jis no valè a retounen moute isit la. Se konsa, kounye a nou ka di 3 x 2, epi finalman, isit la nou kapab di sa a se jis pral gen 4 x 3 x 2. E yon fwa sa a tounen, nou jwenn desann nan yon nonb antye relatif andedan sèl nan prensipal la. Nenpòt kesyon sou rkursyon? Tout dwa. Se konsa, gen nan plis tan pou kesyon nan fen a, Men, koulye a Se Jozèf ki va kouvri sijè ki rete yo. [Jozèf Ong] Tout dwa. Se konsa, kounye a ke nou te pale sou recursions, kite a pale yon ti kras sou sa ki rantre sòt se. Rantre sòt se fondamantalman yon lòt fason nan klasman yon lis nimewo. Ak kijan li fonksyone se, ak sòt unifye ou gen yon lis, ak sa nou fè se nou di, se pou yo separe sa a nan 2 mwatye. Nou pral premye kouri rantre sòt ankò sou mwatye nan bò gòch, Lè sa a, nou pral kouri rantre sòt sou mwatye a dwat, ak ki bay nou kounye a 2 mwatye ki yo Ranje, epi kounye a nou pwal konbine sa yo mwatye yo ansanm. Li se yon ti jan difisil yo wè san yon egzanp, se konsa nou pral ale nan mosyon yo ak wè sa ki rive. Se konsa, ou kòmanse ak lis sa a, nou fann l 'nan 2 mwatye. Nou kouri rantre sòt sou mwatye nan bò gòch premye. Se konsa, sa a, se mwatye nan bò gòch, epi kounye a nou kouri yo nan lis sa a ankò ki vin pase nan sòt fizyone, ak Lè sa a, nou gade, ankò, nan bò gòch la nan lis sa a epi nou kouri rantre sòt sou li. Koulye a, nou jwenn desann nan yon lis nan 2 chif, e kounye a, mwatye nan bò gòch se sèlman 1 eleman ki long, epi nou pa kapab fann yon lis ki nan sèlman 1 eleman nan mwatye, konsa nou jis di, yon fwa nou gen 50, ki se jis 1 eleman, li te deja klase. Yon fwa nou ap fè ak ki, nou ka wè ke nou kapab deplase sou mwatye a dwa a lis sa a, ak 3 se tou Ranje, epi konsa, kounye a ke tou de mwatye nan lis sa a yo Ranje nou ka antre nan nimewo sa yo tounen ansanm. Se konsa, nou gade nan 50 ak 3; 3 se pi piti pase 50, se konsa li ale nan premye ak Lè sa a, 50 vini pous Koulye a, ki nan fè; n 'al jwenn tounen moute ak sa yo ki lis ak sòt li nan mwatye dwat. 42 se nimewo pwòp li an, Se konsa, li deja klase. Se konsa, kounye a nou konpare sa yo 2 ak 3 se pi piti pase 42, se konsa ke vin mete nan premye, kounye a 42 vin mete nan, ak 50 vin mete pous Koulye a, ki nan Ranje, n 'al jwenn tout wout la tounen nan tèt la, 1337 ak 15. Bon, nou kounye a gade nan mwatye a gòch nan lis sa a; 1337 se pa tèt li pou li a klase epi menm ki gen 15. Se konsa, kounye a nou konbine nimewo sa yo 2 a sòt ke lis orijinal, 15 <1337, se konsa li ale nan premye, Lè sa a, 1337 ale pous Epi, koulye a nou tou de Ranje mwatye nan lis orijinal la moute tèt. Ak tout sa nou dwe fè se konbine sa yo. Nou gade 2 chif yo an premye nan lis sa a, 3 <15, se konsa li ale nan etalaj la sòt premye. 15 <42, se konsa li ale pous Koulye a, 42 <1337, ki ale pous 50 <1337, se konsa li ale pous Lè remake ke nou jis te pran 2 chif koupe nan lis sa a. Se konsa, nou pa jis ap altène ant 2 bay lis yo. Nou jis ap kap nan kòmansman an, epi nou ap pran eleman nan ki nan pi piti ak Lè sa a, mete l 'nan etalaj nou an. Koulye a, nou te fizyone tout mwatye yo ak nou ap fè. Nenpòt kesyon sou rantre sòt? Wi? [Elèv] Si li la divize an gwoup diferan, poukisa pa yo jis fann li yon fwa epi ou gen 3 ak 2 nan yon gwoup? [Repoze nan enkonpreansibl kesyon] Rezon ki fè yo - se konsa kesyon an se, poukisa pa nou ka jis rantre yo nan ke premye etap apre nou fin fè yo? Rezon ki fè nou ka fè sa, kòmanse nan eleman yo bò gòch-pi fò nan toulède bò, ak Lè sa a, pran yonn ki pi piti a epi mete l nan, se ke nou konnen ke sa yo bay lis moun yo nan Ranje lòd. Se konsa, si m ap gade eleman yo bò gòch-pi fò nan tou de mwatye, Mwen konnen yo pwal santi yo gen eleman yo pi piti nan tout sa yo lis. Se konsa, mwen ka mete yo nan tach yo pi piti eleman nan lis sa a gwo. Nan lòt men an, si mwen gade nan 2 sa yo bay lis nan nivo nan dezyèm lòt bò a, 50, 3, 42, 1337 ak 15, sa yo ki pa yo Ranje. Se konsa, si mwen gade nan 50 ak 1337, mwen pral mete 50 nan lis mwen an premye. Men, ki pa vrèman fè sans, paske 3 se eleman ki pi piti a soti nan tout moun sa yo. Se konsa, rezon ki fè la sèlman nou ka fè etap sa a konbine se paske lis nou yo ap deja klase. Ki se poukisa nou te jwenn desann tout wout la jouk anba a paske lè nou gen jis yon kantite sèl, ou konnen ke yon kantite sèl nan ak tèt li se deja yon lis Ranje. Nenpòt kesyon? Pa gen? Konpleksite? Oke, ou ka wè ke nan chak etap gen nan nimewo fen, epi nou kapab divize yon lis nan boutèy demi lit mwatye n fwa, ki se kote nou jwenn sa a n x boutèy demi lit n konpleksite. Epi ou pral wè ka a pi bon pou sòt unifye se n boutèy demi lit n, epi li jis pou k ap pase ka sa a ki pi mal la, oswa Ω a sou a, se tou n ale n. Yon bagay kenbe nan tèt ou. Deplase sou, kite la ale nan kèk dosye super debaz Mwen / O. Si ou te gade Goumen, ou pral avi nou te gen kèk sòt de sistèm ki kote ou ta ka ekri nan yon dosye log si w li nan kòd la. Ann gade pou wè ki jan ou ta ka fè sa. Oke, nou gen fprintf, ki ou ka panse a kòm printf jis, men jis enprime nan yon dosye olye de sa, yo e pakonsekan f la nan kòmansman an. Sa a sòt de kòd moute isit la, ki sa li fè se, kòm ou ta ka gen pou wè nan Goumen, li ale nan 2 dimansyon enprime etalaj nou yo soti kite ranje a ranje ki nimewo yo ye. Nan ka sa a, printf simagri soti nan tèminal ou a oswa sa nou rele randman estanda a nan seksyon. Epi, koulye a, nan ka sa a, tout sa nou dwe fè se ranplase printf ak fprintf, di li sa ki dosye ou vle enprime a, ak nan ka sa a li jis simagri li soti ak sa yo ki dosye olye pou yo enprime li soti nan tèminal ou a. Oke, Lè sa a, ki amèn kesyon an: Ki kote nou jwenn sa a sòt de dosye soti nan, dwa? Nou te pase ouvri sesyon an sa a fuction fprintf men nou pa te gen okenn lide kote li te soti nan. Oke, depi byen bonè nan kòd la, ki sa nou te te sa a moso nan kòd sou isit la, ki fondamantalman di ke louvri dosye a rele log.txt. Kisa nou fè aprè sa, se nou dwe asire w ke dosye a aktyèlman louvri avèk siksè. Se konsa, li ta ka rate pou rezon miltip; ou pa gen ase espas sou òdinatè ou, pou egzanp. Se konsa, li toujou enpòtan ou anvan ou fè nenpòt operasyon ak dosye a ke nou tcheke si te ke dosye louvri avèk siksè. Se konsa, sa ki yon, sa se yon agiman fopen, byen, nou ka louvri yon dosye nan plizyè fason. Ki sa nou ka fè se, nou ka pase l w, ki vle di pase sou desizyon dosye a si li sòti deja, Nou ka pase yon yon, kote yo kole nan fen a nan dosye a olye pou yo k prensip li, oubyen nou ka presize r, ki vle di, kite la louvri dosye a kòm li-sèlman. Se konsa, si pwogram nan ap eseye fè okenn chanjman nan dosye a, yell nan yo e yo pa kite yo fè li. Finalman, yon fwa nou ap fè ak dosye a, fè fè operasyon sou li, nou bezwen asire yo ke nou fèmen dosye a. Se konsa, nan fen pwogram ou an, ou yo ale nan pase yo ankò sa a ranpli ke ou louvri, epi jis fèmen li. Se konsa, sa a se yon bagay ki enpòtan ki di ou gen asire w ke ou fè. Se konsa, sonje ou ka louvri yon dosye, lè sa a ou ka ekri nan dosye a, fè operasyon nan dosye a, men Lè sa a, ou gen yo fèmen dosye a nan fen an. Nenpòt kesyon sou dosye baz mwen / O? Wi? [Kesyon elèv, enkonpreansibl] Dwa isit la. Kesyon an se, ki kote sa a ranpli log.txt parèt? Oke, si ou jis bay li log.txt, li kreye l 'nan anyè a menm jan ègzèkutabl la. Se konsa, si you're - >> [kesyon elèv, enkonpreansibl] Wi. Nan dosye a menm, oswa nan anyè a menm, jan ou rele li. Koulye a, memwa, chemine, ak pil wòch. Se konsa, kouman se memwa mete soti nan òdinatè a? Oke, ou ka imajine memwa kòm sòt de sa a blòk isit la. Ak nan memwa nou gen sa ki rele pil wòch la kole sou la, ak chemine a ki la anba isit la. Ak pil wòch la ap grandi anba ak chemine a ap grandi anwo. Se konsa, kòm mansyone Tommy - oh, byen, e nou gen sa yo lòt 4 segments ki m ap jwenn yo nan yon dezyèm - Kòm Tommy te di anvan, ou konnen ki jan fonksyon li rele tèt yo ak rele chak lòt? Yo bati sa a sòt de ankadreman chemine. Byen, si apèl prensipal foo, foo vin mete sou pil la. Man rele ba, ba jwenn nan mete yo sou chemine a, epi ki vin mete yo sou pil la apre. Antan yo retounen, yo chak pran wete chemine a. Ki sa ki chak nan sa yo kote yo ye ak memwa kenbe? Oke, tèt la, ki se segman nan tèks, gen pwogram nan tèt li. Se konsa, kòd machin lan, se sa ki gen, yon fwa ou konpile pwogram ou an. Next, nenpòt inisyalizèd varyab mondyal. Se konsa, ou gen varyab mondyal nan pwogram ou an, nou di tankou, yon 5 =, ki vin mete nan segman sa, ak dwa anba ke, w gen nenpòt uninitialized done mondyal, ki se jis Int yon, men ou pa di li la egal a anyen. Reyalize sa yo, se varyab mondyal, se konsa yo ap deyò nan prensipal la. Se konsa, sa a vle di nenpòt ki varyab mondyal ke yo te deklare men se pa sa inisyalizèd. Se konsa, sa ki nan pil wòch la? Memwa afekte lè l sèvi avèk malok, ki nou ap jwenn nan yon ti jan ti kras. Epi finalman, ak chemine a ou gen nenpòt varyab lokal ak nenpòt fonksyon ou ta ka rele nan nenpòt nan paramèt yo. Bagay la pase, ou pa vrèman gen konnen ki sa varyab yo anviwònman fè sa, men chak fwa ou kouri pwogram nan, gen yon bagay ki asosye, tankou sa a se non itilizatè a nan moun ki te kouri al pwogram nan. E se te pral fè sòt de nan pati anba nan. An tèm de adrès memwa yo, ki se valè ekzadesimal, valè yo nan kòmansman an tèt nan 0, epi yo ale tout wout la desann nan pati anba nan. Nan ka sa a, si ou sou sistèm nan 32-ti jan, adrès la nan pati anba a a pwal 0x, ki te swiv pa afekte, paske sa a, se 32 Bits, ki se 8 bytes, ak nan ka sa a 8 bytes koresponn ak 8 chif ekzadesimal. Se konsa, desann isit la w ap ale nan genyen, renmen, 0xffffff, ak 'kanpe w ap ale nan gen 0. Se konsa, sa yo se endikasyon? Gen kèk nan ou gen dwa pa yo te kouvri sa a nan seksyon anvan an. men nou t 'ale sou li nan konferans, konsa yon konsèy se jis yon kalite done ki magazen, olye pou yo kèk sòt de valè tankou 50, li estoke adrès la nan kèk kote nan memwa. Tankou sa memwa [enkonpreansibl]. Se konsa, nan ka sa a, ki sa nou te ye, se nou gen yon konsèy nan yon nonb antye relatif oswa yon * Int, epi li gen adrès sa a ekzadesimal nan 0xDEADBEEF. Se konsa, sa nou genyen se, kounye a, sa a pwen konsèy nan kèk kote nan memwa, ak sa a, se jis yon, valè a 50 se nan sa a kote memwa. Sou kèk sistèm 32-bit, sou tout sistèm 32-ti jan, endikasyon Leve kanpe, pran Bits 32 oswa 4 bytes. Men,, pou egzanp, sou yon sistèm 64-ti jan, endikasyon yo se 64 miyèt moso. Se konsa, sa a, se yon bagay ou pral vle kenbe nan tèt ou. Se konsa, sou yon sistèm fen-ti jan, yon konsèy se Bits fen long. Endikasyon yo se sòt de difisil yo dijere san bagay sa yo siplemantè, kidonk kite a ale nan yon egzanp sou alokasyon memwa dinamik. Ki sa ki alokasyon dinamik memwa fè pou ou, oswa sa nou rele malok, li pèmèt ou asiyen kèk sòt de done deyò nan seri a. Se konsa, sa a done se sòt de plis pèmanan pou dire a nan pwogram nan. Paske menm jan ou konnen, si ou deklare x andedan nan yon fonksyon, ak ki retounen fonksyon, ou pa gen aksè a done yo ki te ki estoke nan x. Ki sa ki endikasyon kite nou fè se moun yo kite nou sere memwa oswa magazen valè nan yon segman diferan nan memwa, sètadi pil wòch la. Koulye a, yon fwa nou retounen soti nan fonksyon, osi lontan ke nou gen yon konsèy ak sa yo ki kote nan memwa, Lè sa a, sa nou kapab fè se nou ka jis gade nan valè yo a. Se pou yo gade nan yon egzanp: Sa a se layout memwa nou ankò. E nou gen fonksyon sa a, prensipal la. Ki sa li fè se - oke, se konsa senp, dwa? - Int x = 5, sa se jis yon varyab sou chemine a nan prensipal la. Nan lòt men an, kounye a nou deklare yon konsèy ki fè apèl giveMeThreeInts yo fonksyon. Se konsa, kounye a nou ale nan sa a fonksyon ak nou kreye yon ankadreman chemine nouvo pou li. Sepandan, nan sa a ankadreman chemine, nou deklare int * tanporèr, ki nan 3 mallocs nonm antye relatif pou nou. Se konsa, gwosè nan int pral ban nou konbyen bytes sa a int se, ak malok ba nou ki bytes anpil nan espas sou pil la. Se konsa, nan ka sa a, nou kreye ase espas pou 3 nonm antye yo, ak pil wòch la se yon fason 'kanpe, ki se poukisa mwen te trase li moute pi wo. Yon fwa n ap fè a, nou vini tounen moute isit la, ou bezwen sèlman 3 antye tounen, ak li retounen adrès la, nan ka sa a sou ki kote memwa se. Epi nou mete konsèy = switch, ak 'kanpe nou gen jis yon lòt konsèy. Men, sa ki ki retounen fonksyon se anpile isit la epi disparèt. Se konsa, tanporèr disparèt, men nou toujou kenbe adrès la nan kote sa yo nonm antye relatif 3 se andedan nan ak elektrisite. Se konsa, nan sa a seri, endikasyon yo se scoped lokalman pou ankadreman an anpile, men memwa la, kote yo al gade se nan pil wòch la. ki fè sans? [Elèv] Èske ou ta kapab repete sa? >> [Jozèf] Wi. Se konsa, si m 'ale tounen jis yon ti jan, ou wè sa a tanporèr afekte kèk memwa sou pil wòch la moute a. Se konsa, lè sa a fonksyon, giveMeThreeInts retounen, sa a chemine isit la ki pral disparèt. Se avèk li nenpòt nan varyab yo, nan ka sa a, sa a konsèy ki te afekte nan anpile ankadreman. Sa ki pral disparèt, men depi nou tounen tanporèr epi nou mete konsèy = tanporèr, konsèy la kounye a pral nan pwen memwa nan menm nan kote kòm tanporèr te ye a. Se konsa, kounye a, menm si nou pèdi tanporèr, ki konsèy lokal yo, nou toujou kenbe adrès la memwa de sa ki li te lonje dwèt andedan nan ki konsèy varyab. Kesyon? Ki kapab kalite yon sijè konfizyon si ou pa te ale sou li nan seksyon. Nou ka, tf ou pral definitivman ale sou li ak nan kou nou ka reponn kesyon nan fen sesyon an revizyon yo pou sa. Men, sa a se sòt de yon sijè konplèks, ak Mwen gen plis egzanp ke yo pral montre moute ki pral ede klarifye sa ki endikasyon aktyèlman yo. Nan ka sa a, endikasyon yo se ekivalan a ranje, Se konsa, mwen ka jis itilize sa a konsèy kòm menm bagay la kòm yon etalaj int. Se konsa, mwen Indexing nan 0, ak chanje nonb antye relatif nan premye 1, chanje nonb antye relatif nan dezyèm nan 2, ak nonb antye relatif nan 3yèm a 3. Se konsa, plis sou pwent. Oke, sonje Binky. Nan ka sa a nou te resevwa lajan yon konsèy, oswa nou deklare yon konsèy, men okòmansman, lè m 'jis deklare yon konsèy, li pa nan lonje dwèt nan nenpòt kote nan memwa. Se jis valè fatra andedan nan li. Se konsa, mwen pa gen okenn lide kote sa a konsèy la lonje dwèt yo. Li te gen yon adrès ki se jis ki te ranpli avèk a 0 ak nan 1 kote ke okòmansman li te deklare. Mwen pa ka fè anyen ak sa-a, jouk tan mwen rele malok sou li ak Lè sa a, li ban m 'yon espas ti kras sou pil wòch la kote mwen ka mete valè anndan an. Lè sa a, ankò, mwen pa konnen sa ki andedan sa a memwa. Se konsa, nan premye bagay mwen dwe fè se tcheke si sistèm nan te gen ase memwa bay m 'tounen 1 nonb antye relatif nan plas an premye, ki se poukisa mwen fè sa tcheke. Si konsèy se nil, sa vle di ke li pa t 'gen ase espas oswa kèk erè lòt ki te fèt, Se konsa, mwen ta dwe sòti deyò nan pwogram mwen an.  Men, si li te fè reyisi, koulye a, mwen ka itilize ki konsèy ak sa ki konsèy * fè, se li swiv ki kote adrès la se nan kote ki valè se, epi li kouche li egal a 1. Se konsa, sou isit la, nou ap tcheke si sa memwa te egziste. Yon fwa ou konnen li egziste, ou ka mete nan li ki sa valè ou vle mete nan li; nan ka sa a 1. Yon fwa nou ap fè avèk li, ou bezwen gratis ki konsèy paske nou bezwen jwenn tounen nan sistèm la ki memwa ke ou mande a nan plas an premye. Paske òdinatè a pa konnen lè nou ap fè ak li. Nan ka sa a nou ap klèman di l ', oke, nou ap fè ak ki memwa. Si kèk pwosesis lòt bezwen li, gen kèk lòt pwogram bezwen li, yo santi lib yo ale pi devan epi pran li. Ki sa nou kapab tou fè se nou ka jis jwenn adrès la nan varyab lokal yo nan seri a. X Se konsa, int se anndan ankadreman an anpile nan prensipal la. Men, lè nou itilize sa a Comercial, sa a ak operatè, ki sa li fè se li pran x, ak x se sèlman kèk done nan memwa yo, men li gen yon adrès. Li nan ki sitiye kèk kote. Se konsa, lè ou rele & x, ki sa sa a fè se li ban nou adrès ki nan x. Pa fè sa, n ap fè pwen konsèy kote x se nan memwa. Koulye a, nou jis yon bagay tankou * x, nou pwal jwenn 5 tounen. Se yon zetwal la te rele dereferencing li. Ou menm, swiv adrès la epi ou jwenn valè a nan li ki estoke la. Nenpòt kesyon? Wi? [Elèv] Si w pa fè bagay la 3-pwenti, li toujou konpile? Wi. Si w pa fè bagay la 3-konsèy, li te toujou ale nan konpile, men mwen pral montre w ki sa ki rive nan yon dezyèm, epi san nou fè sa, sa a, se sa nou rele yon fwit memwa. Ou pa ap bay sistèm nan fè bak memwa li yo, se konsa apre yon pandan y ap pwogram nan ki pral akimile memwa ke li pa la lè l sèvi avèk, ak pa gen anyen lòt ka itilize l. Si ou te janm wè Firefox ak 1.5 milyon dola kilookte sou òdinatè ou, nan manadjè a travay, sa a, se sa k ap pase sou. Ou gen yon fwit memwa nan pwogram nan yo ke yo pa ap manyen. Se konsa, kouman fè sa ki konsèy travay aritmetik? Oke, aritmetik konsèy se sòt de Indexing tankou nan yon etalaj. Nan ka sa a, mwen gen yon konsèy, ak sa m 'fè se mwen fè pwen konsèy eleman nan premye sa a etalaj nan 3 nonm antye relatif ki mwen te resevwa lajan. Se konsa, kounye a sa m 'fè, zetwal konsèy jis chanje eleman nan premye nan lis la. Star konsèy +1 pwen sou isit la. Se konsa, konsèy se sou isit la, konsèy +1 se sou isit la, konsèy +2 se sou isit la. Se konsa, jis ajoute 1 se menm bagay la kòm k ap deplase ansanm sa a etalaj. Ki sa nou fè se, lè nou fè konsèy +1 ou jwenn adrès lan sou isit la, ak yo nan lòd jwenn valè a nan isit la, ou mete yon etwal nan soti nan ekspresyon nan tout dèreferans li. Se konsa, nan ka sa a, mwen mete kote nan premye nan sa a etalaj nan 1, dezyèm kote a 2, ak twazyèm kote a 3. Lè sa a, sa m ap fè sou isit la se mwen enprime konsèy nou an +1, ki jis ki ban m '2. Koulye a, mwen incrementing konsèy, se konsa konsèy egal konsèy +1, ki deplase li pi devan. Se konsa, kounye a si mwen enprime soti konsèy +1, konsèy +1 se kounye a 3, ki nan ka sa a simagri soti 3. Ak yo nan lòd yo gratis yon bagay, konsèy la ke mwen bay li yo dwe montre nan kòmansman an nan etalaj la ki m 'te tounen soti nan malok. Se konsa, nan ka sa a, si m 'te rele 3 dwa isit la, sa pa ta dwe gen dwa, paske li nan nan mitan an nan etalaj la. Mwen dwe fè soustraksyon pou li ale nan kote orijinal la premye plas nan premye anvan mwen ka libere li. Se konsa, isit la nan yon egzanp pi bone. Nan ka sa a, nou ap allocation 7 karaktè nan yon etalaj karaktè. Ak nan ka sa a sa n ap fè se nou ap loupin plis pase 6 an premye nan yo, epitou n ap mete yo nan Z. Se konsa, pou int mwen = 0, mwen> 6, mwen + +, Se konsa, konsèy + mwen pral jis ba nou, nan ka sa a, konsèy,, +1 konsèy, +2 konsèy konsèy +3, ak sou sa ak pou fè nan riban an. Ki sa ki li pral fè se li vin ke adrès, dereferences li jwenn valè a, ak chanjman ki valè nan yon Z. Lè sa a, nan fen a sonje sa a se yon fisèl, dwa? Tout strings gen fini ak karaktè a nil témine. Se konsa, sa m 'fè a se nan konsèy 6 Mwen mete nil Terminator pèsonaj la pous Epi, koulye a sa m ap fondamantalman fè sou isit la ap aplike printf pou yon fisèl, dwa? Se konsa, lè printf kounye a lè li nan te rive jwenn nan fen yon fisèl? Lè li frape pèsonaj la nil témine. Se konsa, nan ka sa a, pwen orijinal konsèy mwen nan konmansman an nan sa a etalaj. Mwen enprime karaktè nan premye deyò. Mwen demenaje li sou yon sèl. Mwen enprime ke karaktè deyò. Mwen deplase li sou. Apre sa, mwen kontinye ap fè sa, jouk tan mwen rive nan fen an. Epi, koulye a konsèy la * fen pral dèreferans sa a epi pou yo jwenn nil pèsonaj la témine tounen. Se konsa, pandan y ap riban mwen kouri sèlman lè ke valè se pa pèsonaj la nil témine. Se konsa, koulye a, mwen sòti soti nan sa a riban. Se konsa, si mwen fè soustraksyon 6 sa a soti nan konsèy, M 'ale tounen tout wout la nan konmansman an. Sonje byen, m ap fè sa paske mwen gen pou yo ale nan kòmansman an yo nan lòd yo libere li. Se konsa, mwen konnen sa ki te yon anpil. Èske gen nenpòt kesyon? Tanpri, se wi? [Enkonpreansibl kesyon Elèv] Èske ou ka di ke pi fò? Sorry. [Elèv] Sou glise nan dènye dwa ou anvan ou libere konsèy la, ki kote yo te ou aktyèlman chanje valè la nan konsèy la? [Jozèf] Se konsa, isit la menm. >> [Elèv] Oh, oke. [Jozèf] Se konsa, mwen gen yon konsèy mwens mwens, dwat, ki deplase bagay la tounen yon sèl, ak Lè sa a, mwen libere l ', paske sa a konsèy la gen yo dwe pwente nan konmansman an nan etalaj la. [Elèv] Men, ki pa ta dwe bezwen te ou te sispann apre sa liy. [Jozèf] Se konsa, si mwen te sispann apre sa a, sa a ta dwe konsidere kòm yon fwit memwa, paske mwen pa t 'kouri gratis la. [Elèv] Mwen [enkonpreansibl] apre twa liy ki premye ki kote ou te gen konsèy +1 [enkonpreansibl]. [Jozèf] uh-huh. Se konsa, sa ki nan kesyon an genyen? Sorry. Non, pa gen okenn. Ale non, ale, tanpri. [Elèv] Se konsa, ou pa ap chanje valè a endikasyon. Ou pa ta yo te oblije fè konsèy mwens mwens. [Jozèf] Wi, egzakteman. Se konsa, lè m 'fè konsèy +1 ak konsèy +2, Mwen pa fè konsèy egal konsèy +1. Se konsa, konsèy la jis rete lonje dwèt nan kòmansman an nan etalaj la. Li nan sèlman lè m 'fè plis plis ke li kouche valè a tounen andedan konsèy la, ke li aktyèlman deplase sa a ansanm. Tout dwa. Plis kesyon? Yon fwa ankò, si sa a se sòt de boulvèsan, sa a yo pral kouvri nan sesyon. Mande parèy ansèyman ou sou li, epi nou ka reponn kesyon nan fen an. Epi anjeneral nou pa renmen fè bagay sa a mwens. Sa a gen bezwen m 'kenbe tras de konbyen lajan mwen te konpanse nan etalaj la. Se konsa, an jeneral, sa a se jis yo eksplike travay ki jan aritmetik konsèy. Men, sa ki anjeneral nou renmen fè se nou renmen yo kreye yon kopi konsèy la, ak Lè sa a, nou pral sèvi ak sa kopi lè n ap deplase nan fisèl la. Se konsa, nan sa yo ka ou itilize kopi a nan enprime fisèl la an antye, men nou pa dwe fè tankou konsèy mwens 6 oswa kenbe tras nan konbyen lajan nou te deplase nan sa a, jis paske nou konnen ki pwen orijinal nou toujou pwente nan konmansman an nan lis la ak tou sa ki nou chanje sa te kopi. Se konsa, an jeneral, chanje kopi konsèy orijinal ou yo. pa eseye sòt de tankou - don't chanje kopi orijinal yo. Eseye chanje kopi yo sèlman nan orijinal ou yo. Se konsa, ou remake lè nou pase fisèl la nan printf ou pa bezwen mete yon etwal la devan li tankou nou te fè sa ak tout dereferences yo lòt, dwa? Se konsa, si ou enprime soti fisèl la nan tout% espere se yon adrès, ak nan ka sa a yon konsèy oswa nan ka sa a tankou yon etalaj de karaktè. Karaktè, Char * s, ak ranje yo se menm bagay la. Pwente se pèsonaj, ak ranje karaktè yo se menm bagay la. Se konsa, tout sa nou dwe fè se pase nan konsèy. Nou pa bezwen pase nan tankou konsèy * oswa yon bagay tankou sa. Se konsa, ranje ak pwent yo se menm bagay la. Lè w ap fè yon bagay tankou x [y] sou isit la pou yon etalaj, ki sa li la ap fè anba kapo machin lan se li nan di, oke, sa se yon etalaj karaktè, Se konsa li yon konsèy. Se konsa, x yo se menm bagay la, ak sa ki sa li fè se li ajoute y x, ki se menm bagay la kòm fè pi devan nan memwa ki anpil. Epi, koulye a x + y ap ban nou kèk sòt de adrès, epi nou dèreferans adrès la oubyen swiv flèch la nan kote ki kote nan memwa se ak nou jwenn valè a soti nan ki kote nan memwa. Se konsa,, se konsa sa yo de yo se egzakteman menm bagay la. Se jis nan yon sik Massachusetts Institute of Technology. Yo fè menm bagay la. Yo ap jis syntactics diferan pou chak lòt. Se konsa, sa ki kapab ale mal ak endikasyon? Tankou, yon anpil. Oke. Se konsa, move bagay. Gen kèk move bagay ou ka fè yo pa tcheke si rele malok ou retounen nil, dwa? Nan ka sa a, mwen mande sistèm lan ban m '- ki sa ki ladan nimewo? Menm jan ak 4 2 milya fwa, paske gwosè a nan yon nonb antye relatif se 4 bytes. Mwen mande l 'pou tankou 8 milya dola bytes. Natirèlman òdinatè mwen pa pral pou kapab ban m 'ki tounen memwa anpil. E nou pa t 'tcheke si sa a se nil, se konsa lè nou eseye dèreferans li sou la - swiv flèch la nan kote li pral - nou pa gen ke memwa. Sa a se sa nou rele dereferencing yon konsèy nil. Lè sa a esansyèlman lakòz ou segfault. Sa a se youn nan fason ki ou ka segfault. Lòt move bagay ou ka fè - oh byen. Ki te dereferencing yon konsèy nil. Oke. Lòt move bagay - byen, ranje ke ou jis mete yon ti tchèk nan gen ki cheke si konsèy la se nil ak sòti soti nan pwogram nan si li sa fèt ki malok retounen yon konsèy nil. Sa a se komik la xkcd. Moun yo konprann li kounye a. Sòt de. Se konsa, memwa. Apre sa, mwen te ale sou sa a. Nou ap rele malok nan yon riban, men chak fwa nou rele malok n ap pèdi tras nan kote sa a konsèy la montre a, paske nou ap clobbering li. Se konsa,, rele inisyal la malok ki ban m 'memwa sou isit la. Endikasyon konsèy mwen an sa. Koulye a, mwen pa libere li, se konsa koulye a, mwen rele malok ankò. Kounye a li lonje dwèt sou isit la. Koulye a, memwa mwen an ap lonje dwèt sou isit la. Montre sou isit la. Montre sou isit la. Men, mwen te pèdi tras nan adrès ki nan tout memwa a sou isit la ke mwen resevwa lajan. Se konsa, koulye a, mwen pa gen okenn referans a yo ankò. Se konsa, mwen pa ka libere yo deyò nan sa a riban. Se konsa, yo nan lòd yo ranje yon bagay tankou sa a, si ou bliye memwa gratis, epi ou jwenn sa a koule memwa, Ou gen libere memwa a andedan sa a riban yon fwa ou ap fè ak li. Bon, sa a se sa ki pase. Mwen konnen anpil nan ou rayi sa a. Men koulye a, - ye! Ou jwenn tankou 44,000 kilookte. Se konsa, ou libere li nan fen riban a, Epi sa a, pral jis libere memwa a chak fwa. Esansyèlman, pwogram ou a pa gen yon fwit memwa ankò. Epi, koulye a yon lòt bagay ou ka fè se libere kèk memwa ke ou te mande pou de fwa. Nan ka sa a, ou yon bagay malok, ou chanje valè li yo. Ou libere li yon fwa paske ou di ou t fè ak li. Men, lè sa a nou te libere l 'ankò. Sa a se yon bagay ki trè move. Li pa nan ale nan okòmansman segfault, men apre yon pandan y ap sa sa a se doub libere sa a move estrikti pil ou an, epi ou pral aprann yon ti jan plis sou sa si w deside pran yon klas tankou CS61. Men, esansyèlman apre yon pandan y ap òdinatè ou a pral nan jwenn konfonn sou sa ki kote memwa yo ki kote ak ki kote li nan ki estoke - kote done ki estoke nan memwa. Se konsa, libere yon konsèy de fwa se yon move bagay ke ou pa vle fè. Lòt bagay ki kapab ale mal se pa sa lè l sèvi avèk sizof. Se konsa, nan ka sa a ou malok 8 bytes, ak sa a, se menm bagay la kòm de nonb antye, dwa? Se konsa, sa a, se parfe ki an sekirite, men sa li ye? Bon, kòm Lucas te pale osijè de sou diferan architectures, nonm antye relatif yo se ki gen longè diferan. Se konsa, sou aparèy la ke w ap itilize, nonm antye relatif yo se apeprè 4 bytes, men sou kèk sistèm lòt yo ka 8 bytes oswa yo ka 16 bytes. Se konsa, si mwen jis itilize nimewo sa a sou isit la, pwogram sa a ta dwe travay sou aparèy la, men li pa a pral asiyen ase memwa sou kèk sistèm lòt. Nan ka sa a, sa a se ki sa ki operatè a sizof itilize pou. Lè nou rele sizof (Int), ki sa sa a fè, se  li ba nou gwosè a nan yon nonb antye relatif sou sistèm nan ke pwogram nan ap kouri. Se konsa, nan ka sa a, sizof (Int) ap retounen 4 sou yon bagay tankou aparèy elektrik la, e kounye a, volonte sa-a 4 * 2, ki se 8, ki se jis kantite lajan an nan espas ki nesesè pou de nonb antye. Sou yon sistèm diferan, si yon int, se tankou 16 bytes oswa 8 bytes, li jis ale nan retounen bytes ase nan magazen ki kantite lajan. Epi finalman, strukt. Se konsa, si ou te vle nan magazen yon tablo sudoku nan memwa, ki jan ta ka nou fè sa? Ou ta ka panse a tankou yon varyab pou premye bagay la, yon varyab pou bagay la dezyèm fwa, yon varyab pou bagay la twazyèm, yon varyab pou bagay nan katriyèm - move, dwa? Se konsa, yon sèl amelyorasyon ou ka fè sou tèt sa a se fè yon 9 x 9 etalaj. Sa a bon, men sa ki si ou te vle asosye lòt bagay avèk tablo a sudoku renmen sa difikilte pou an nan tablo a se, oswa, pou egzanp, sa ki nòt ou a se, oswa konbyen tan li la pran w rezoud sa a tablo? Oke, sa ou ka fè se ou kapab kreye yon struct. Sa mwen ap di la a se fondamantalman mwen defini estrikti sa a sou isit la, ak mwen defini yon tablo sudoku ki gen ladann yon tablo ki se 9 x 9. Epi ki sa li gen li gen endikasyon nan non an nan nivo la. Li tou te gen x ak y yo, ki se koòdone pou kote m'a ye kounye a. Li tou te gen tan pase [enkonpreansibl], epi li gen kantite total mouvman mwen te antre byen lwen tèlman. Se konsa, nan ka sa a, mwen ka gwoup yon pakèt antye nan done nan jis estrikti yon sèl olye pou yo gen li tankou vole alantou an tankou varyab diferan ke mwen pa ka vrèman kenbe tras nan. Lè sa a pèmèt nou gen jis bèl sentaks pou sòt de indican bagay diferan andedan sa a struct. Mwen te jis ka fè board.board, ak mwen jwenn tablo a sudoku tounen. Board.level, mwen jwenn kòman li kapab difisil se. Board.x ak board.y ban m 'koòdone pou kote m' te ka nan tablo a. Se konsa, mwen gen aksè nan sa nou rele jaden an struct la. Sa a defini sudokuBoard, ki se yon kalite ke mwen gen. Epi, koulye a nou isit la. Mwen gen yon varyab ki rele "tablo" nan sudokuBoard kalite. Se konsa, koulye a, mwen kapab jwenn aksè nan tout jaden yo ki fè moute estrikti sa a sou isit la. Nenpòt kesyon sou strukt? Wi? [Elèv] Pou int x, y, ou te deklare tou de sou yon sèl liy? >> [Jozèf] uh-huh. [Elèv] Se konsa, ou ta ka jis fè sa ak tout nan yo? Renmen nan x, fwa vigil y ke total? [Jozèf] Wi, ou ta ka definitivman fè sa, men rezon ki fè mwen mete x ak y sou liy lan menm - ansanm ak kesyon an se poukisa nou ka jis fè sa a sou liy lan menm? Poukisa nou pa nou jis mete tout moun sa yo sou liy lan menm se x ak y yo ki gen rapò ak chak lòt, ak sa a se jis estilitikman plis kòrèk, nan yon sans, paske li nan gwoupman de bagay sou liy lan menm ki sòt tankou nan gen rapò ak menm bagay la. Apre sa, mwen jis fann sa yo apa. Se jis nan yon style bagay sa yo. Li woulant pa fè okenn diferans tou. Nenpòt lòt kesyon sou strukt? Ou ka defini yon Pokédex ak yon struct. Yon Pokemon gen yon nimewo ak yon li gen yon lèt, yon mèt kay, yon kalite. Lè sa a, si ou gen yon etalaj de Pokemon, ou ka fè moute yon Pokédex, dwa? Okay, fre. Se konsa, kesyon sou strukt. Moun sa yo se ki gen rapò ak strukt. Finalman, gdb. Ki sa ki gdb kite ou fè? Li pèmèt ou dbug pwogram ou an. Men, si ou pa te itilize gdb, mwen ta rekòmande l ap gade kout la ak jis pral sou sa ki gdb se, ki jan w ap travay avèk li, ki jan ou ta ka sèvi ak li, ak tès l 'sou yon pwogram nan. Se konsa, sa ki gdb pèmèt ou fè se li pèmèt pran yon poz [enkonpreansibl] moute pwogram nan ou ak yon liy pratik. Pou egzanp, mwen vle ekzekisyon poz nan tankou liy 3 nan pwogram m 'yo, ak pandan y ap Mwen nan liy 3 Mwen ka enprime soti tout valè yo ki la. Se konsa, sa nou rele tankou s'arrête nan yon liy se nou rele sa a mete yon breakpoint nan ki liy ak Lè sa a, nou ka enprime soti varyab yo nan eta a nan pwogram nan nan moman sa. Nou ka Lè sa a, apati de la etap nan pwogram nan liy-pa-liy. Lè sa a, nou kapab gade eta a nan chemine a nan moman an. Se konsa, yo nan lòd yo itilize gdb, ki sa nou fè se nou rele rezone sou dosye a C, men nou dwe pase l ggdb a-drapo. E yon fwa nou ap fè ak ki nou jis kouri gdb nan dosye a pwodiksyon rezilta. Se konsa, nou jwenn kèk mas tankou nan tèks tankou sa a, men vrèman tout sa ou dwe fè se tape nan kòmandman nan kòmansman an. Kraze prensipal mete yon breakpoint nan prensipal la. Lis 400 bay lis liy ki nan kòd alantou liy 400. Se konsa, nan ka sa a ou ka jis gade toutotou epi di, o, Mwen vle mete yon breakpoint nan liy 397, ki se liy sa a, ak Lè sa a, pwogram ou an kouri nan ki etap ak li a pral kase. Li nan ale nan pran yon poz la, epi ou ka enprime soti, pou egzanp, valè de wo oswa ki ba. Se konsa, gen yon pakèt moun sou kòmandman ou bezwen konnen, ak sa a Slideshow pral moute sou sou sit entènèt la, Se konsa, si ou jis vle referans sa yo oswa renmen mete yo sou ti papye akòdeyon ou a, santi yo lib. Fre. Sa yo ki te kwiz Revizyon 0, epi nou pral bwa ozalantou si ou gen nenpòt kesyon. Tout dwa.  [Aplodisman] [CS50.TV]