JASON HIRSCHHORN: Byenveni, tout moun, nan Semèn 6. Mwen kontan wè ou tout vivan epi yo byen apre egzamen 0, paske mwen konnen ke te yon ti jan ki graj. Men, Erezman, nou tout te fè ekstrèmman byen. Se konsa, se sa ki bèl bagay. Si w ap nan seksyon m 'yo, mwen te bay pi nan ou tounen ti tès ou deja. Yon koup nan nou, mwen satisfè apre klas la. Men, si ou se yon elèv ekstansyon ak ou pa te resevwa egzamen ou tounen ankò, TF ou a ap pwobableman travay sou li ak evalyasyon li, epi li pral jwenn li tounen ou yon ti tan. Se konsa, elèv yo ekstansyon mwen an ki gen l ap gade kounye a - èspere ke ap viv - Mwen pral resevwa ti tès ou yon ti tan tou. Ajanda nou an pou jodi a se jan sa a. Premyèman, nou ap ale nan ale sou kèk resous ki CS50 bay ba ou. Nou pral ale sou egzamen 0 kap vini an, ak Mwen pral reponn nenpòt kesyon okenn moun gen sou pwoblèm patikilye. Lè sa a,, nou pral ale sou dosye mwen / O ak pwoblèm mete 5. Moun sa yo ki de dènye sijè pral pran moute èstime nan seksyon jodi a. Mwen mete lis sa a moute chak semèn kòm yon rapèl ou tout, men nan nwayo seksyon, nou gen sèlman 90 minit - nou yo pa kapab kouvri tout bagay ke mwen ta renmen yo kouvri pou ou guys. Men, nou fè gen yon tòn resous pou ou a fè desen sou jan ou jwenn yo konnen materyèl la ak travay nan pwoblèm ou an kouche. Yon rapèl ke mwen gen sou entènèt yon tèks bwat, mete kanpe pou ou pou w ranpli si ou gen nenpòt fidbak pou m ', tou de pozitif ak konstriktif, sou seksyon. Eske se sa ke URL sitiye dwa desann isit la. Se konsa, tanpri, pran yon ti tan si ou gen nenpòt fidbak, si pandan seksyon, oswa apre, oswa apre ou fin gade videyo a sou entènèt, ban m 'fidbak ou. Mwen vrèman apresye nenpòt ak tout nan li. Se konsa, mwen gen konvèsasyon ti avèk yon anpil nan mwen elèv yo pandan tout semèn nan - menm jan mwen men ti tès tounen, ap pale de la kou, wè kijan ou ap fè. Apre sa, yon sèl tèm te vini sou yo ak sou nan ap pale de - nan patikilye - pwoblèm kouche. Apre sa, mwen te enklizyon ki tèm sou tablo a kounye a. Esansyèlman, gen yon diferans ant vire nan yon bagay ki fè yo kòrèkteman ak yon bagay sa ki fè byen. Pifò moun ki te fè kokenn an tèm de Correct - 5 an oswa 4 a sou tout psets. Pifò moun ki ap resevwa sa yo tout tan la. Sepandan, jis paske ou te fè yon bagay dwat pa vle di ou te fè yon bagay kòm chik, oswa avèk efikasite, oswa kòm propreman jan ou te ka fè li. Epi sa a, sa ki desen an - ak nan yon pi piti degre, style - aks yo se pou. Se konsa, mwen pouse nou tout, ak lòt TFs ap pouse ou nèg, pa sèlman vire nan bagay sa yo ke yo kòrèk, men vire nan bagay sa yo ke yo kode byen. Pa fè nesesè POU pasan, pa rkalkule varyab si ou pa bezwen. Pou egzanp, gade dèyè nan pwoblèm mete 4, lè mete brik yo sou la ekran, chak ranje - chak brik nan yon ranje bay gen menm y kowòdone a-- menm wotè kowòdone a. Se konsa, ki y kowòdone-pa t 'bezwen ap kalkile andedan enteryè a pare solèy POU bouk ke ou gen anpil chans yo itilize yo mete sa yo brik sou ekran an. Li sèlman bezwen yo dwe kalkile chak fwa ou chanje yon ranje, oswa pati, li desann yon ranje. Se konsa, di si gen 10 brik nan yon ranje, chak brik ka gen menm bagay la tou koòdone-y, e ke sa y kowòdone- ka jis ap kalkile yon fwa pou tout moun nan sa yo. Li pa bezwen ap kalkile 10 fwa, ni fè sa kalkil bezwen rive nan aktyèl la fonksyon rele - nouvo fonksyon gracked apèl la. Se konsa, si sa ki te yon ti kras konfizyon pou ou, se plis generic, bagay sa yo ke pa bezwen rive chak fwa yon sèl ou ale nan yon bouk POU pa ta dwe mete andedan bouk la POU, ak pa ta dwe rive chak fwa ou ale nan bouk la POU. Yon lòt bon egzanp konsepsyon nou te wè nan Semèn 3 pou 15, ou te kapab kenbe tras nan zewo la. Se konsa, lè ou inisyalize tablo a, ou sove - nan yon varyab mondyal, petèt - x ak y kowòdone-a zewo la. Lè sa a, chak fwa ou - nan fonksyon deplase ou a, chak fwa ou fè yon mouvman siksè, ou mete nan kote nan zewo la. Sa ta sove-w nan gen fè pare solèy POU pasan gade nan la monte chak fwa nan fonksyon deplase ou epi jwenn zewo a, oswa jwenn mozayik la, ak Lè sa a, tcheke sa ki nan pwochen li. Olye de sa, ou gen kote adrès la nan la zewo, ou ka jis gade pi wo a, pi ba a, ak sou bò goch la e yo gen dwa ladan l ', yo jwenn mozayik nan ou te kap chèche. Se konsa, an tèm de pwogram yo nou ap ekri, yo ap pa janm gwo ase ke kèk nan sa yo pran desizyon konsepsyon yo reyèlman ale nan anpeche ou pwogram, oswa yon fè l 'kouri pi dousman, oswa petèt menm kouri soti nan memwa. Men, nou toujou ap pouse ou nèg yo ekri kòm elegant ak Kòd efikas ke posib. Se konsa, si ou fè fini ekri bagay sa yo ki gen yon anpil pi gwo sijè ki abòde yo, yo pral ekri ak bon konsepsyon nan adisyon a ke yo te kòrèk. Se konsa, yon nimewo nan ou gen pote ki deyò. Sa se bagay nou ap chèche pou - yon bagay nou ap ale nan kontinye pouse ou nèg sou. Si ou janm genyen nenpòt kesyon sou la konsepsyon de pwogram ou an, santi yo lib yo rive jwenn deyò m ', ak mwen se kè kontan yo mache nan pwogram ou an avèk ou, epi montre li kèk nan desen an desizyon ou fè a, li ba ou kèk sijesyon sou kòman yo fè menm pi bon konsepsyon desizyon yo. Se konsa, nou ap ale pou avanse pou pi sou ap pale de egzamen 0. Anvan nou fè sa, fè okenn moun gen nenpòt kesyon sou sa ki Mwen te kouvri byen lwen tèlman? [Frolman brwi] JASON HIRSCHHORN: Pandan sèt segonn. OK. Se pou nou pale sou egzamen 0 pou yon ti jan. Pifò nan ou gen egzamen ou 0 a tounen. Si ou pa fè sa, èspere ke ou sonje li yon ti jan. Men, si ou te pran egzamen 0, lè sa a ou yo te genyen tou aksè a PDF la sou entènèt nan echantiyon solisyon yo yo te. okenn moun gen nenpòt kesyon anvan nou vole nan materyèl semèn nan a sou yon pwoblèm patikilye sou egzamen 0 - poukisa repons la se sa li ye? Èske okenn moun konfonn sou anyen? Menm si ou te resevwa pwoblèm nan dwa, men jis ta renmen m 'yo eksplike li yon ti jan plis, mwen se kè kontan yo fè sa kounye a. Se konsa, mwen te mande ou nèg vin pare ak kèk panse sou egzamen 0. Se konsa, ki moun ki ta renmen resevwa nou te kòmanse avèk yon kesyon oswa kòmantè sou egzamen 0? [PAPER frolman] JASON HIRSCHHORN: Pa tout moun te fè pafètman. Se konsa, mwen konnen [ri] gen gen yo dwe kèk kesyon sou egzamen 0. OK. Wi. Ompica. OMPICA: Nimewo 10. JASON HIRSCHHORN: Nimewo 10. Ki yon sèl te nimewo 10? OMPICA: - a JASON HIRSCHHORN: Mwen haven't - OMPICA: genyen ladan yo a - JASON HIRSCHHORN: Nimewo 10 te gen wit mwen - ekri uit a mwen? OMPICA: Yeah. JASON HIRSCHHORN: OK. Se konsa, yon lòt kesyon ou ta ka genyen mande te m 'presyan? Repons la se wi. Nan seksyon anvan egzamen an, mwen te mande ou nèg ki prevwa nan kòd tou de Sterling ak uit a mwen. Tou de nan yo te rive parèt sou egzamen an. Se konsa, èspere ke, ou te peye atansyon a sa. Men, si ou te genyen, Lè sa a, ou ta gen pwobableman fè byen sou moun de. Men, wit a mwen, nou pa t 'aktyèlman Kòd li nan klas, men li te, ankò, mande sou egzamen an. Se konsa, yon koup nan bagay yo pran sonje lè kod uit a mwen. Premye bagay, pou chak kesyon an, se te ke ou bezwen yo tcheke si fisèl la te egal ak nil. Yon moun koup yo te eseye tcheke pita sou nan pwogram nan si yo bracket mwen te - Se konsa, yon karaktè espesifik nan ki fisèl - te egal ak nil. Men, sonje, ki nil se esansyèlman - li bon panse a nil kòm yon konsèy zewo - yon konsèy a zewo - yon sél kote dekwa nan memwa kote ou pa janm ka gen aksè. Se konsa, si yon bagay ki egal a nil, ou konnen ke li pa te initialisé, oswa pa gen anyen la. Se konsa, yo se yon etwal Char, S bracket mwen se yon Char. Se konsa, li fè sans yo konpare yo nil, men se pa yo bracket m 'nil. Men, ankò - se konsa sa ki te premye bagay la ke ou te sipoze fè - tcheke a asire w ke ou aktyèlman te resevwa yon fisèl reyèl. Next, ou te vle ale nan chak karaktè nan fisèl la. Se konsa, ki ta ka tankou yon bracket yo mwen, pou egzanp, si mwen se iterator ou. Apre sa, pran ki karaktè, ak jwenn valè aktyèl li yo. Ou genyen li ki estoke kòm yon karaktè, men valè a ASCII pou zewo - zewo kòm yon karaktè - se pa aktyèlman nonb antye ki pè a zewo. Li nan kèk lòt nimewo ke ou ka gade nan tablo a ASCII. Se konsa, yon fason yo korije pou sa - pwobableman fason ki pi bon yo korije pou ki - se fè soustraksyon soti nan li valè la N. - zewo kòm yon karaktè. Se konsa, mwens quote yon sèl, zewo, yon lòt quote sèl. Ki pral pran tou sa nimewo ou gen kòm yon karaktè, epi pou yo jwenn li egal a nimewo a kòm yon nonb antye ki pè vrè. Apre sa se trè menm jan ak apwòch la yon anpil moun ki te pran nan la pwoblèm mete 2, ak Seza tande kòz ak Viginere - moun ki algorithm, lè ou yo te wotasyon yo. Se konsa, apre ou genyen li kòm yon nimewo sòti nan zewo a nèf, Lè sa a, - depann sou kote li ale nan kantite nan ultim - ou bezwen anpil anpil pitit li pa yon pouvwa nan 10. Gen kèk moun ki te deplase soti nan do a nan sou devan, epi miltipliye moun nan nimewo pa yon pouvwa nan 10. Gen kèk moun ki te deplase soti nan devan an nan do - yo ak pou pran pi wo a lòd nimewo premye - e li ta delivre tout moun nan yon mondyal vann san preskripsyon varyab. Lè sa a, chak fwa nan POU an bouk, miltipliye ke jeyan mondyal vann san preskripsyon varyab pa 10, fè espas pou Char nan pwochen an. Se konsa, sa ki te yon ti kras konfizyon san yo pa m 'ekri l' sou tablo a. Men, solisyon ki nan egzanp lan se disponib nan ou. Men, moun yo te bagay sa yo gwo nou te kap chèche. Epitou yon chèk a asire w ke chak N. moun te depoze yon N. ant zewo ak nèf, epi yo pa kèk lòt karaktè, tankou yon A, pou egzanp. Moun sa yo ki te bagay sa yo nou te kap pou nan kesyon an. ki reponn kesyon ou a? OMPICA: Yeah. JASON HIRSCHHORN: OK. Èske gen nenpòt lòt kesyon sou egzamen 0? Ki sa ki sou konpile? Tout moun konpile dwa? No Te gen yon - [Ri] Nenpòt kesyon sou la konpilasyon pwosesis? Wow. [PAPER frolman] JASON HIRSCHHORN: Wi. Mikayèl la. MICHAEL: Eske nimewo 7 - o aza? JASON HIRSCHHORN: Nimewo 7. Nimewo 7 te jwenn yon nonb antye ki pè o aza. Ekselan. Se konsa, w ap bay yon nonb antye relatif yon ak yon nonb antye ki pè b, epi ou vle yon o aza nonb antye ki pè ant a ak b. Nou ka aktyèlman ekri yon sèl sa a sou tablo a, paske yon sèl sa a te yon sèl liy nan kòd - yon fason fè li. Se konsa, nou ap bay drand kòm yon fonksyon nou te ka sèvi ak yo. Ak sa ki drand - asepte li a te smi - sa drand retounen? MICHAEL: A flote ant 0.0 ak 1.0. JASON HIRSCHHORN: Yon nimewo - yeah. Yon nimewo ant 0 ak 1. Se konsa, nou te b ak yon. Lè sa a, nou gen nimewo tiraj osò nou yo ant 0 ak 1 ban nou pa drand. Gen kèk moun ki te eseye mete b, oswa b mwens yon, oswa yon bagay andedan sa yo parantèz. Sa ta vle di ke yo ap agiman nan fonksyon sa a. drand pa pran okenn agiman - tankou getString fè Pa pran okenn agiman. Se konsa, li jis paren louvri, fèmen paren - e ke, li menm, se rele nan fonksyon. Epi ki ba ou yon nimewo ant 0 ak 1. Natirèlman, nou gen yon seri antye ki nimewo yo ka pous Di, si b se 10 ak yon se 5, nou vrèman vle yon nimewo ak yon seri de 5. Se konsa, bagay la pwochen nou bezwen fè se anpil anpil pitit sa a pa ranje b mwens yon la. Se konsa, an konsideran ke nan anpil avans. Apre sa, ki pral ban nou yon nimewo ki nan yon seri bay yo. Epi ki ranje espesifik ke yo te nan diferans ki genyen ant b mwens yon. E finalman, ki pral sèlman ba ou li soti nan - di ranje ki genyen ant b mwens yon se 5, ki pral ba nou yon nimewo ki ant 0 a 5. Men, si yon se an reyalite 5, nou bezwen ranfòse ranje sa a jiska kote li nan aktyèlman sipoze, lè yo ajoute yon. Se konsa, ki vin bò dwat la lojik. Lè sa a,, ta ou gen yon lòt kesyon? MICHAEL: No Mwen jis santi vrèman bèbè kounye a. [Ri] JASON HIRSCHHORN: No pa santi yo reyèlman bèbè. Yon nimewo de moun plede ak kesyon sa a. Lè sa a,, lòt kesyon an se, drand, ou te di, ba ou yon flote - retounen yon flote. Men, fonksyon sa a aktyèlman mande pou yon nonb antye ki pè yo dwe retounen. Ou pa bezwen jete sa a klèman nan yon nonb antye ki pè, paske sa yo operasyon ap trete l tankou tout yon flote - kòm yon nimewo pwen k ap flote. Menm jan ak volonte sa a - menm si sa a se yon nonb antye, volonte sa a pou miltipliye kòrèkteman. Tout miltiplikasyon la ap travay. Ou pa bezwen voye l 'jete isit la. An reyalite, ou pa ta dwe voye l 'jete. Ki ta - si ou ta jete yon nimewo sa a, se ant 0 ak 1 - yon nimewo o aza, yon pwen k ap flote - Lè sa a, li pral swa dwe sèlman 0 oswa 1, se konsa ou pral pèdi nan tout sa presizyon. Men, nan fen a, lè ou retounen, li otomatikman vin voye tounen lakay kòm yon antye relatif. Se konsa, ou pa bezwen fè ki depoze tèt ou. Se konsa, sa a te repons lan nan kesyon sa a, nimewo 7. Nenpòt lòt kesyon ki gen nan egzamen 0? Yeah, Annie. Annie: Lè nou itilize repetitif - lè nou sèvi ak pasan repete? JASON HIRSCHHORN: Lè ou sèvi ak repetitif - se konsa pi plis jeneralman, nan Les ak inconvénients de rkursyon kont yon apwòch repete. Èske okenn moun ofri yon pro oswa yon kon? Tanpri? Pa kapab okenn moun. Ki moun ki ka ofri yon pro oswa yon kon? [PAPER frolman] ELÈV 1: recursive ki pi piti a kodaj - mwens tape? JASON HIRSCHHORN: Se konsa, jeneralman, rkursyon espesyalman, yon fonksyon - oswa yon algorithm tankou unifye sòt - ki confer tèt li nan yon apwòch repetitif - ka gen plis senp ki prevwa nan kòd recursive. Epi jis fè plis sans fè li recursive. Se konsa, ki ta ka yon pro rkursyon. Lòt moun? Yeah? ELÈV 2: Con rkursyon - Li itilize plis memwa. JASON HIRSCHHORN: Se konsa, egzakteman dwat. Yon fonksyon repetitif ap kenbe ajoute chemine ankadreman chemine a. Se konsa, si w ap opere sou yon anpil nan nimewo, epi yo gen yo rele sa a fonksyone yon lot, Lè sa a, ou pral sètènman Leve kanpe, pran plis memwa, pandan y ap yon apwòch repete ap ap sèlman mete yon sèl chemine ankadreman sou chemine a, paske li tout ap pase yo nan yon fonksyon. Nenpòt ki lòt Les ak inconvénients? Yeah. ELÈV 3: Les pou rkursyon. Ou pa bezwen detèmine nan avanse konbyen fwa a Kòd te dwe repete. Ou ka gen yon kantite Predetermined la fwa ki di ou gen repňte, lè sa a rkursyon se pi bon, paske li pran ke rezilta. JASON HIRSCHHORN: Mwen panse ke sa a, se vre. Men mwen panse ke nan tou de ka ou ta pa janm - ou ta pwobableman jwenn kèk D 'soti nan itilizatè a. Oswa fonksyon sa a ta gen kèk D ' ki ta detèmine konbyen fwa li ta dwe kouri. Se konsa, jeneralman, ou pa t 'vle Kòd difisil - menm nan yon apwòch repete - ki jan anpil fwa ke bouk yo ta dwe kouri. Èske ou te gen yon lòt ou te panse sou, Annie? OK. Se konsa, moun yo se pwobableman de la - pro nan pi gwo ak pi gwo a kon nan yon repetitif kont yon apwòch repete. OK. Tout lòt bagay sou egzamen 0? Se pou yo deplase sou. File Mwen / O. Gen yon bèl bagay kout semèn sa a nan dosye mwen / O ki èspere ke w wè miltip fwa, ak admire. Yon anpil nan travay antre nan sa a, epi mwen te tande li se ensanèi itil. Mwen tou te gen ladann lyen ki nan glise sa a, nan ka ou pa te gen yon chans gade li 10 fwa. Se konsa, nou yo ale nan yon ti tan ale sou la pi gwo etap sa yo louvri epi l ap travay ak dosye, ak Lè sa a, nou pral plonje nan yon pwoblèm kodaj anvan ekzamine pwoblèm gwoup la. Se konsa, ankò, mwen pral mete sa a moute sou ekran an, men mwen pral pale pou jis yon minit sou sa nou ap fè isit la ak dosye I/O-- ki sa sa vle di? Sa vle di ke nou kapab kreye nou an pwogram, ak Lè sa a, gen pwogram nou yo sòti, epi yo pa te fè nenpòt ki enpak sou mond lan deyò nan pwogram nou an. Men, lè nou kòmanse travay ak dosye - tou de li yo nan ak kreye yo - nou ka gen kèk efè sou la mond deyò nan pwogram nou an. Jis tankou si Microsoft Word pa t 'kapab fè nenpòt ki dokiman Word, Lè sa a, yon fwa Microsoft Word kite yo, tout nan ou ta travay fè wout, epi li ta vrèman dwe initil. Nou finalman vle pou kapab ekri pwogram ki kapab afekte nan mond bò kote yo, tou de pa pran nan entrain konplèks - an tèm de dosye ak via dosye, epi tou li kreye enteresan yo ak kontribisyon konvenkan - an tèm de diferan kalite dosye. Se konsa, ki pou rezon sa a yo kòmanse aprann kijan yo travay avèk dosye. Plis espesyalman, sa ki nou fè se jan sa a. Li trè senp. Gen sèlman yon koup nan etap, ak yo ki nan lis isit sou Kòd sa a. Se konsa, nou ap ale nan ale nan liy Kòd sa a pa liy. Premyèman, ou wè make - lè w ap travay ak yon dosye, kèlkeswa kalite a nan dosye li ye, ou bezwen louvri li. Apre sa se ak yon rele nan fopen - isit la menm. Ou gen ladan non an nan dosye a. Si dosye a se pa nan anyè ou a, oswa katab la kote pwogram sa a lavi, Lè sa a, ou ap bezwen tou gen ladan yon chemen nan kote ki dosye se. Nou pral asime ke sa a dosye yo rele "text.txt" - yon senp dokiman tèks - se nan la menm katab kòm pwogram sa a se. Se konsa, sa a, se yon lòt bagay kenbe nan tèt ou - ke si ou vle louvri yon dosye yon lòt kote, ou aktyèlman bezwen genyen ladan yo kote li yo. Dezyèmman, ou ka pase yon diskisyon fopen, ak se sa ki ou vle fè ak dosye a. Gen twa agiman prensipal ki w ap ale nan pase nan fopen. Ki moun ki ka ban m 'sa yo twa? Ki moun ki ka ban m 'youn nan yo? Wi. ELÈV 4: Non a dosye? JASON HIRSCHHORN: M regrèt. Te gen twa agiman prensipal ou ka pase kòm agiman an dezyèm fopen. Ou se dwa - Non a dosye se agiman an premye. Men, agiman an dezyèm fopen yo jeneralman twa strings, ak - repons lan se wi. Aleja. ALEJA: A pou ajoutra. JASON HIRSCHHORN: A, si ou vle kole nan yon dosye ki deja egziste. ELÈV 5: R pou Li. JASON HIRSCHHORN: R, si ou vle li soti nan yon dosye. ELÈV 6: W pou ekri. JASON HIRSCHHORN: Apre sa, w, si w vle ekri nan yon dosye. Se konsa, nan ka sa a, nou ap ekri nan dosye a, se konsa nou gen w. Ou louvri l ', ou menm tou nou gen pou konsève pou la ranpli yon kote, e ke sa a ak nan Kòd sou bò men gòch nan operatè a plasman - Mwen kreye yon konsèy nan yon dosye rele, nan ka sa a, dosye-a. Nou pa pral bezwen enkyete ki sa sa a tout bouchon bagay DOSYE se. Ase li yo di, li se yon tan kouran nan zewo ak moun yo. Epi sa a, ki jan nou yo ale nan opere li epi mwen konprann li. Bagay la pwochen nou bezwen fè - ak sa a se ekstrèmman enpòtan - nenpòt lè ou louvri yon dosye - an reyalite, nenpòt lè ou rele malok, pou egzanp, epi jwenn kèk memwa epi eseye epi sove l 'nan yon konsèy, ou toujou vle tcheke a asire w ke ke fonksyon pa t 'tounen nil. Se konsa, nan ka sa a, nou ap tcheke fè asire w ke nou aktyèlman louvri nan ranpli kòrèkteman, e te gen pa gen okenn erè nan pwogram nou an. Apre sa, yon fwa nou te tcheke a asire w ke nou gen yon dosye travay, nou kapab ekri, oswa li nan, oswa kole nan dosye a. Nan ka sa a, Mwen tou senpleman enprime yon sèl liy sa a dosye. Kouman pou mwen konnen sa? Oke, mwen lè l sèvi avèk fonksyon sa a rele fprintf. Tout moun nan fonksyon yo ou pral lè l sèvi avèk lè li ap ekri a, oswa li soti nan, oswa manipile dosye yo pral menm jan ak fonksyon ou te wè anvan, men kòmanse ak lèt ​​la F, kanpe pou dosye-a. Apre sa, fprintf, kontrèman ak ekri ak lèt ​​detache nòmal nou an app, pran yon sèl agiman adisyonèl, e ke se dosye a kote ou vle ekri ak lèt ​​detache liy sa a. Mwen pa gen anyen yo dwa pou yo ohai. Mwen pa gen twazyèm lan agiman printf - oswa agiman an dezyèm printf, nan twazyèm agiman fprintf, paske mwen pa gen okenn placeholders isit la. Mwen pa tankou nenpòt varyab. Men, ankò, fprintf ak tout moun sa yo dosye fonksyon ki opere avèk dosye yo jeneralman ale nan bezwen dosye a ki sou bagay yo ap fonksyone. Finalman, dènye bagay la enpòtan nan fè se yo fèmen dosye a, jis tankou ak - chak fwa nou malok yon bagay, nou vle libere yon bagay, n'a gen yon fwit memwa - nou vle yo fèmen dosye nou yo. Si pwogram sa a quitté san yo pa fèmen dosye a, chans yo pa gen anyen ta ale sa ki mal, espesyalman si li te yon ti dosye-a. Men, li se sètènman bon style kodaj epi pratike toujou fèmen dosye ou lè w ap fini lè l sèvi avèk li. Se konsa, ki se Basics yo nan dosye Mwen / O. Ou te pwobableman wè sa anvan, oswa gade l 'nan ke kout kokenn. okenn moun gen nenpòt kesyon, anvan n 'al jwenn nan kèk kodaj pratik pwoblèm, sou dosye mwen / O oswa nan etap mwen jis te ale sou? [Sezisman son] JASON HIRSCHHORN: Eske ou gen yon kesyon, Avi? AVI: Non JASON HIRSCHHORN: OK. Mwen pral rete tann yon lòt sèt segonn. [Ri] Sa a se yon tip vrèman bon. Ou mesye jis pa renmen poze kesyon. Sa a amann. OK. Se konsa, nou premye pwoblèm pratik se, nou se ale nan kopi fonksyon an nan yon zouti liy lòd ke ou pwobableman itilize anvan - kopi - zouti nan kopi. Si ou tape CP ak Lè sa a pase li de agiman nan tèminal ou a, ou kapab kopye yon dosye. Apre sa, se sa ki nou pral yo ekri kounye a. Se konsa, ankò, li koupe nan glise sa a, mwen ta ou ekri yon pwogram ki pran de ak sèlman de lòd-liy agiman - yon dosye sous ak yon dosye destinasyon - ak kopi sa ki nan sous la pote nan dosye a destinasyon yon sèl multiple nan yon tan. Se konsa, sa a, se yon anpil pou mande pou. Yon fwa ankò, yon apwòch bon sa a se pa ale tou dwat nan kòd la C, men kraze li desann nan yon koup la etap. Premyèman, panse osijè de lojik la - egzakteman sa m ap mande ou fè - epi mwen konprann tout la etap sa yo pwoblèm sa a. Se pa nan C, jis nan kèk pseudocode, oswa menm yon modèl mantal nan sa a pral sou. Apre sa, yon fwa ou gen pseudocode la desann, figi konnen kouman pseudocode la kat sou zouti ak bagay sa yo nou te aprann itilize nan C. E finalman, yon fwa ou gen tout sa ki ansanm, ou ka kòd pwoblèm nan. Pran 5 a 10 minit nan travay sou pwoblèm sa a. Mwen pral mete enstriksyon yo tounen moute nan yon dezyèm fwa. Lè sa a, nou pral ale sou pseudocode a, ak kòd li viv tankou yon gwoup. Si w gen nenpòt kesyon pandan w ap ap travay sou sa a, santi yo lib yo ogmante men ou, mwen menm m'ap vin ozalantou yo ak reponn yo. ELÈV 7: Èske mwen ka glise yon moso papye? JASON HIRSCHHORN: Ki sa ki nan ale? [Sezisman son] JASON HIRSCHHORN: OK. Ann al sou pseudocode a an premye, ak Lè sa a, mwen pral ba ou yon koup plis minit a fini kod. Ki moun ki ta renmen kòmanse m 'konsa ak liy lan premye nan pseudocode pou fonksyon sa a? 8 ELÈV: Tcheke a asire w ke ou te ba yo de dosye. JASON HIRSCHHORN: OK. Men, si nou pa ap? ELÈV 8: Mwen ta retounen 0. JASON HIRSCHHORN: Eske nou ta dwe retounen 0? ELÈV 8: Retounen yon - efasman. M regrèt. JASON HIRSCHHORN: Yeah. Pwobableman pa 0. Paske 0 vle di tout bagay te bon. OK. Se konsa, sa a, se liy lan premye nan pseudocode. Ki moun ki gen liy nan dezyèm nan pseudocode? ELÈV 9: Louvri tou de dosye yo? JASON HIRSCHHORN: Louvri tou de dosye. OK? ELÈV 10: Tcheke yo wè si dosye a se NULL? JASON HIRSCHHORN: Tcheke fè asire w ke ni yo NULL. Kòm yon sou kote - koupe 0 - se ke NULL? ELÈV 11: No JASON HIRSCHHORN: Sa a pa NULL. Sa yo rele Terminator a NULL. Li nan aktyèlman eple ki gen yon sèl l. Se konsa, tcheke yon bagay sou kont la - sa a, se aktyèlman yon karaktè - Se konsa, tcheke yon bagay kont ki pa menm bagay ak tcheke yo wè si li egal NULL. Se konsa, kèk moun - sou ti tès yo epi yo pwoblèm yo kouche - gen leve a de nan moun ki gen konfizyon. Men, de tout moun sa yo se an reyalite diferan. Youn fini yon fil - yon sèl la se yon konsèy a 0. ELÈV 12: Poukisa nou pa ou ta tcheke yo asire w ke dosye yo pa NULL ou anvan ou louvri yo? JASON HIRSCHHORN: Se konsa, louvri sove yon bagay nan ki dosye. Men, si ou tounen isit la - Se konsa, liy sa a - fopen - ap ba ou yon adrès ak magazen ki adrès nan dosye si li fonksyone. Si li pa travay, li pral estoke NULL - ELÈV 12: O. OK. Te resevwa ou. JASON HIRSCHHORN: Nan dosye-a. Se konsa, ou pa ka tcheke pou NULL anvan ou te louvri yo. NULL vle di yon bagay pa t ' travay kòrèkteman. OK. Se konsa, tcheke a asire w ni se? Oswa yo ye? Ki sa nou konprann nan sa? Nou pral ale ak sa a. ELÈV 13: Eske. JASON HIRSCHHORN: Eske? Ni se? ELÈV 13: Eske. JASON HIRSCHHORN: OK. Nou sanble yo gen kèk konsansis sou sa. Ni se NULL. OK, liy pwochen nan pseudocode. Ki moun ki pa ban m 'yon liy' fè ankò? Nou pral rete tann pou ou. Yeah. ELÈV 14: Ou gen li soti nan dosye a an premye? JASON HIRSCHHORN: OK. ELÈV 14: Oswa nou itilize fskanf oswa yon bagay tankou sa dosye a an premye? JASON HIRSCHHORN: Se konsa, nou vle li nan dosye a premye ak - kite a mete dwa sa isit la. Li soti nan dosye a sous. Lè sa a,, ki sa nou fè apre nou fin li nan dosye a sous? Yon lòt moun? ELÈV 15: Ekri nan dosye a destinasyon? JASON HIRSCHHORN: Nou ekri nou nan dosye a destinasyon, ak - OK. Ki lòt bagay yo nou manke? Yon moun lòt moun ki pa te ban m 'yon liy nan Kòd ankò - nan pseudocode. Yeah. ELÈV 16: Petèt ou ka toujou tcheke si gen yon bagay li pou li a, tankou liy ki vin apre a? Sa se tankou liy kap vini an, wè si li egziste. [ELEKTWONIK BEEP] JASON HIRSCHHORN: Wouch. Sa a lojisyèl ekri jounal m 'yo. Yeah? ELÈV 16: Yeah. JASON HIRSCHHORN: Se konsa, bay l 'ban mwen yon lòt fwa ankò. ELÈV 16: Tcheke si wi ou non gen nan toujou yon liy nan pwochen an dosye sous li. JASON HIRSCHHORN: OK. Se konsa, nou pa ap li liy - yo te lekti bytes isit la - men w ap kòrèk la. Nou vle li ak ekri jouk pa gen okenn plis bytes. OK. Se konsa, sa yo ta dwe reyèlman dwe dantle yon ti jan, paske yo ap anba a. Dwa? Jiskaske nou ap soti nan bytes, nou ap ale nan li nan dosye a sous ak ekri nan dosye a destinasyon. Lè sa a,, ki sa ki dènye a liy nan pseudocode? Yon moun ki pa nan bay m 'yon bagay ankò. ELÈV 17: Fèmen dosye yo? JASON HIRSCHHORN: Egzakteman. Fèmen dosye yo. Se konsa, gen nan pseudocode nou an. Mwen pral mete pseudocode a nan jdi, ak nan yon koup la minit nou ap Kòd sa a ansanm. OK. Se pou nou jwenn te kòmanse kòm yon gwoup. Nishant, mwen gen nouvo dosye mwen. Mwen te jis louvri sa a leve. Untitled Document 1. Ki sa ki nan premye bagay la mwen ta dwe fè? NISHANT: Enkli bibliyotèk? JASON HIRSCHHORN: OK. Ki sa ki bibliyotèk? NISHANT: Stdio.h, stdlib.h, mwen kwè? JASON HIRSCHHORN: OK. Ki sa ki se stdlib pou? NISHANT: Mwen bliye. JASON HIRSCHHORN: OK. Se konsa, gen ladan yo stdio. Kisa mwen dwe fè menm anvan menm yo Mwen kòmanse kod? NISHANT: Ekri yon header? JASON HIRSCHHORN: Ki jan Mwen jwenn li ki gen koulè pal? [Entèrpozisyon vwa] NISHANT: Ki jan ou fè jwenn li gen koulè pal? JASON HIRSCHHORN: Ki jan Mwen koulè kodaj? NISHANT: Mwen pa konnen. Oh. Sove. JASON HIRSCHHORN: sove. Wi. Mwen ta dwe delivre l 'kòm yon. C. Se konsa, delivre l 'sou Desktop a kòm cp.c. Dous. Men, si mwen vle jwenn style plen pwen, ki sa ki ta dwe mwen gen ladan yo nan tèt la? NISHANT: Ou te kapab ekri non ou, non nan pwogram nan, ak objektif la nan pwogram nan kòm byen? JASON HIRSCHHORN: sanble bon. Ekselan. Se konsa, ou te kòmanse nou sou pafètman. # Genyen ladan - nou pral tou ekri - OK. Se konsa, mwen panse ke mwen tout mete yo ale. Ki moun ki gen liy lan premye nan kòd pou m '- oswa liy yo an premye nan kòd ki li pral pran yo satisfè premye nou an kòmantè nan pseudocode? Ou. ELÈV 18: Yo ta dwe pa li ka Int arg, ak Lè sa a, Char * argv? JASON HIRSCHHORN: Mwen panse ke w ap dwat. Se pou nou chanje li nan int prensipal yo, paren louvri, Int arg, vigil, Char * argv? Tankou sa? ELÈV 18: parantèz. JASON HIRSCHHORN: parantèz. Louvri bracket, fèmen bracket, fèmen paran yo. Pafè. Koulye a, mwen ka pran lòd-liy agiman. OK. Asire nou ap bay de dosye. Ou ka bay m 'ki yo tou. ELÈV 18: Si arg - yon sèl sa a pa egal a 3. JASON HIRSCHHORN: Si paren louvri arg pa egal 3? ELÈV 18: Yeah, ou retounen 1 oswa anyen. JASON HIRSCHHORN: M regrèt. ELÈV 18: Retounen 1 oswa anyen. JASON HIRSCHHORN: Retounen 1. OK? Great. Louvri tou de dosye. Ki moun ki ka ede m 'louvri tou de dosye? Ki moun ki pa ban m 'Kòd' fè ankò? Kurt? KURT: Se konsa, tout bouchon F-I-L-E sous zetwal. JASON HIRSCHHORN: Mwen pral pran soti vwayèl yo. Sa yo se fre. Se tankou tumblr. ELÈV 18: pèr fopen - JASON HIRSCHHORN: pèr fopen? ELÈV 18: Louvri paren, argv, louvri bracket. JASON HIRSCHHORN: Rete tann. M regrèt. Louvri paren. OK. ELÈV 18: Yeah. Argv sub 1. JASON HIRSCHHORN: Gwoup 1 an? ELÈV 18: Yeah. Argv bracket louvri 1 - repons lan se wi. Lè sa a, vigil, ak Lè sa a, louvri doub quote, r, doub quote, paren fèmen, pwenvigil. JASON HIRSCHHORN: dous. Ak sa ki sou youn nan lòt? ELÈV 18: trè menm jan, men olye nan S-R-C, ou ta rele l 'D-S-T. JASON HIRSCHHORN: oo! Mwen renmen sa. ELÈV 18: Jis D-S-T. Yeah. Lè sa a, argv, louvri bracket, 2. Yeah. Lè sa a, w olye pou yo r. Yeah. JASON HIRSCHHORN: Great. Next koup la liy yo. Epitou, si okenn moun gen bagay sa yo ajoute nan liy ke nou te fè, santi yo lib yo ajoute sa yo tou. Tcheke a asire w ni se NULL. Ki moun ki ka ban m 'kòd la mwen bezwen satisfè ke liy nan pseudocode? Archer. ARCHER: Si src egal egal NULL oswa DST egal egal NULL, lè sa a ou retounen - JASON HIRSCHHORN: Ki sa? ARCHER: Retounen 2? JASON HIRSCHHORN: Retounen 2. Se konsa, si louvri paren src egal egal NULL, oswa - kèlkeswa sa ki thing's - tiyo? Tiyo? Nou pral rele li tiyo. Tiyo, tiyo, DST egal egal NULL, retounen 2. OK? Jiskaske nou ap soti nan bytes - nou sòt de sote sou etap sa a soti nan pati nan pseudocode ale nan isit la. Men, jouk nou ap soti nan bytes - sa ki fè sa son tankou? Ki kalite C èstrikti - men mwen pa sèvi ak estrikti nan mo, paske nou ap ale nan kòmanse lè l sèvi avèk ke nan kèk lòt ka - Men, C zouti fè sa son tankou? ELÈV 19: yon bouk. JASON HIRSCHHORN: A bouk. Son tankou yon bouk. Se konsa, ki moun ki ka ban m 'liy lan premye nan kòd la bouk dwa isit la? Ou kapab tou chwazi ki kalite bouk ou vle, si ou ban m ' liy sa a nan kòd. Gen twa kalite. Ou jwenn yo chwazi. Mwen ta sijere youn nan sa yo. Avi. Kilès nou vle? AVI: POU. JASON HIRSCHHORN: POU. AVI: Int mwen egal zewo. JASON HIRSCHHORN: OK. AVI: Pati sa a Mwen pa si sou yo. Men, mwen se mwens pase gwosè nan sous etwal? Mwen pa si de sa. JASON HIRSCHHORN: OK. AVI: Paske ou vle a gwosè nan yon dosye, dwa? JASON HIRSCHHORN: Se konsa, sa a pwobableman pa pral ban nou gwosè a nan aktyèl la pote nan bytes. Se konsa, ki lòt bagay nou te ka fè? Ki sa ki se yon lòt kalite bouk? Osinon èske nou dwe bwa ak bouk la POU? ELÈV 20: Èske ou ta kapab fè yon bouk PANDAN? Lè sa a,, ki sa ou ta fè se you'd - paske nou genyen yon * Char pou dosye a. Se konsa, si nou jis kenbe incrementing ki jouk nou ta jwenn karaktè a NULL nan nan fen li? Oswa ki pa gen, se ke pa ki jan dosye travay? JASON HIRSCHHORN: Se konsa, nou kapab kenbe incrementing Char a * jiskaske nou jwenn NULL la - ELÈV 20: Esansyèlman kenbe ale N. pa karaktè jiskaske nou frape fen a nan dosye a. JASON HIRSCHHORN: Wi. Se konsa, sa a, se sa nou vle fè. Nou vle kenbe lekti, pèsonaj pa karaktè, jiskaske nou jwenn nan fen a nan dosye a. ELÈV 20: Yeah. Jwenn - sa ki nan fen a oswa siy arè nan fen yon dosye tèks. JASON HIRSCHHORN: OK. Se konsa, lè nou jwenn nan fen a nan dosye a - ki jan nou konnen nou te rive nan nan fen yon dosye? Si m 'ap rele - Se konsa, kite a etap tounen. Ki sa ki se yon fonksyon? Ann ale nan liy sa a isit la menm. Li soti nan dosye a sous. Ki moun ki ka ban m 'ki liy nan Kòd? ELÈV 21: fskanf? JASON HIRSCHHORN: fskanf. OK. E si mwen vle li, trè espesyalman, yon sèl multiple? ELÈV 21: Mwen pa konnen. JASON HIRSCHHORN: OK. Menm pi fasil pase fskanf - sa ki se yon - Mwen vle li nan yon dosye sous? Li soti nan yon dosye sous. Ki sa ki se yon fonksyon - yeah. ELÈV 22: Li nan frèd? JASON HIRSCHHORN: frèd. Mwen panse ke se pou yo rete ak ke yon moun pou kounye a. Ki kalite agiman frèd pran? ELÈV 22: Pwobableman kalite a ranpli, ak Lè sa a, kote nan dosye a? JASON HIRSCHHORN: Ki sa mwen ka tape isit la nan dekouvri ki di ki kalite agiman frèd pran? PLIZYÈ ELÈV: Man frèd. JASON HIRSCHHORN: Man frèd ak fwrite. Sanble yo pann soti ansanm. Se konsa, frèd pran konbyen agiman? ELÈV 23: Kat. JASON HIRSCHHORN: Li pran kat agiman. Li pran yon konsèy, yon gwosè, e ke sa bagay, ki se etranj, ak kèk dosye. OK? Se pou yo li sou li dwa isit la. "Frèd nan fonksyon li n memb eleman nan done, chak gwosè bytes long, ki soti nan kouran an pwente nan pa kouran, sere yo nan kote a yo bay nan konsèy. " Se konsa, kat agiman. Poukisa nou pa mwen jis kopi sa a, epi kole li dwa isit la. OK. Se konsa, ki moun ki ka kòmanse ranpli agiman sa yo pou m 'konsa? Avi. AVI: Pran soti anile la. Mete jis src. Pran soti konsèy ak etwal la. Mete src. Lè sa a, - JASON HIRSCHHORN: Se konsa, mwen pral sispann ou la, paske se sa kòrèk. Ou se dwa ak src, men kote yo ta dwe src 'al jwenn? [Entèrpozisyon vwa] JASON HIRSCHHORN: Li ta dwe ale sou isit la. Sa a src a - src nou an se yon kalite. Se pou yo gade isit la. Sa a se mande pou yon * di ki kalite DOSYE, nou aktyèlman anjeneral wè yo tankou sa. Se konsa, sa a se mande pou gen yon diskisyon nan tape DOSYE * rele kouran ki se src. OK? Ki sa ki gwosè de bagay sa yo fè nou vle li? Mwen te ban nou sa a nan la pwoblèm deskripsyon. ELÈV 24: Youn multiple nan yon tan. JASON HIRSCHHORN: Youn multiple. Kòman gwo se yon multiple? Gwosè li se nan bytes, se konsa sa ka mwen mete dwa genyen? ELÈV 25: Youn. JASON HIRSCHHORN: Youn. Dwat. Gwosè li se nan inite multiple, Se konsa, 1 se 1 multiple. Konbyen mwen vle li nan yon tan. ELÈV 26: Youn? JASON HIRSCHHORN: Youn nan bagay. Mwen vle li se yon sèl bagay ki gen yon gwosè 1, youn mòde nan yon tan. Ak ki kote mwen mete l ', yon fwa mwen li li l'? ELÈV 27: Destinasyon? JASON HIRSCHHORN: Se konsa, mwen pa ka mete li tou dwat nan destinasyon. ELÈV 28: Ou se pral mete l 'nan yon twazyèm konsèy? ELÈV 27: Pou destinasyon an. JASON HIRSCHHORN: OK. Yeah. ELÈV 29: Ou ka deklare yon bagay yo aji kòm yon depo pou yon ti tan pi bonè. JASON HIRSCHHORN: OK. Ban m 'sa. ELÈV 29: Yon lòt dosye konsèy, petèt? JASON HIRSCHHORN: OK. Se konsa, sa a se anile zetwal - li nan yon kalite anile zetwal, se konsa li pa fè sa dwe fè yon konsèy dosye-a. Men, si M ap li yon sèl multiple, kote ta dwe yon bon plas nan magazen yon sèl multiple? ELÈV 29: Yon etalaj? JASON HIRSCHHORN: Yon etalaj. OK. Apre sa, ki lòt bagay se yon bagay ki nan jis gwosè yon sèl multiple? ELÈV 30: A Char *? ELÈV 29: Yeah. JASON HIRSCHHORN: A Char * se pa yon sèl multiple. ELÈV 29: A Char. JASON HIRSCHHORN: A Char se youn multiple. Dwa? Se konsa, kite a rele tanpon sa a se yon jenerik non yo itilize pou bagay sa yo nan magazen yon bagay pou yon ti tan. Se konsa, mwen kreye yon zòn de defans. Dwa? Men, li pran yon anile *. Se konsa, petèt ou gen rezon, ke li ta dwe gen yon zòn de defans nan gwosè 0. Se konsa, li estoke yon sèl - dwat. Paske dwa sa-a isit la - Char tanpon se yon karaktè, men sa a pran yon anile * - yon konsèy. Se konsa, mwen te kapab fè sa a ak kounye a tanpon se yon konsèy. Ki lòt bagay mwen ta ka fè? ELÈV 31: Mete yon etwal akote Char. JASON HIRSCHHORN: mwen te kapab te kreye li Char *. OK. Ki sa ki nan yon lòt bagay mwen te kapab fè? Oswa kite a ale ak yon sèl sa a. Char * tanpon, Se konsa, sa Mwen mete nan isit la? ELÈV 31: pezib. JASON HIRSCHHORN: pezib. Tanpon se yon konsèy nan yon Char. Apre sa, nan ki kote, nou ap mete yon sèl multiple nan yon bagay nou te li. Yeah. Avi. AVI: Jis yon kesyon rapid. ou vle malok tanpon? JASON HIRSCHHORN: Ki moun ki kapab reponn kesyon ki? ELÈV 32: Bon, Li fè sa ki pa vrèman pwen nan anyen kounye a, se konsa - JASON HIRSCHHORN: Men, fè nou vle malok li? ELÈV 32: Si nou te fè li ki fason sa a, mwen devine, yeah, paske ou ta bezwen kèk kote pou l 'bay pwen nan. JASON HIRSCHHORN: Eske nou gen malok li? ELÈV 33: Si w ap ale nan sèvi ak li deyò nan bouk la. JASON HIRSCHHORN: Èske nou pwal rete sèvi ak li deyò nan bouk la? ELÈV 34: Wi. ELÈV 35: Rete tann. nou vle deklare li nan bouk la pi lwen pase? JASON HIRSCHHORN: Se konsa, mwen devine nou gen kèk PANDAN KE bouk pseudo isit la ke nou ap ap eseye figi konnen, se sa nou pa gen vinn ankò. Nou pa bezwen malok li. Nou ap opere nan prensipal yo, li a sèlman pral yo dwe itilize andedan sa a bouk. Li pa bezwen egziste deyò sa a. Se konsa, li kapab yon varyab lokal yo. Ou gen yon konsèy yon varyab lokal yo. ELÈV 36: Men, li la pa montre anyen. JASON HIRSCHHORN: Non, li pa initialisé nan anyen. Men, nou pa ap ale nan sèvi ak li tou. Nou pral mete yon bagay nan li premye fwa a nou sèvi ak li. Se konsa, ki sanble OK. Se konsa, nou pa bezwen malok isit la. Apre sa, mwen panse ke yo ke li OKE kòm se. OK. Nou gen liy lan frèd. Se pou yo fè liy nan pwochen an. Si nou vle yo pou yo ekri yon dosye, ki sa ki yon bon fonksyon pou itilize pou fè sa? ELÈV 37: Fwrite? ELÈV 38: Fprintf? JASON HIRSCHHORN: Fprintf se youn. Ki sa ki nan yon lòt? ELÈV 39: Fwrite. JASON HIRSCHHORN: Fwrite. Apre sa, pou rezon nou an, fwrite, ki nou te wè isit la, se pwobableman chwa a pi byen. Li pran kat agiman tou. Nishant, èske ou kapab bay m 'agiman yo? NISHANT: ale youn nan premye a yo dwe jis tanpon. JASON HIRSCHHORN: OK. NISHANT: yon sèl dezyèm lan an jis pral fè 1. Twazyèm yon sèl k ap pase yo dwe 1. Apre sa, yonn nan katriyèm a pwal DST. JASON HIRSCHHORN: okenn moun gen nenpòt kesyon sou ki liy? Ki sanble bon. OK. Se konsa, kounye a li sanble bagay la yon sèl nou ap manke - aktyèlman, se pou yo ekri liy sa a pase. Fèmen dosye yo. Ki moun ki ka fini nou moute ekri sa yo de dènye liy? Wi. Padon, sa ki nan non ou? LUCY: Lucy. JASON HIRSCHHORN: Lucy. LUCY: fkloz src ak Lè sa a, fkloz destinasyon. JASON HIRSCHHORN: fkloz, louvri paren, src, paren fèmen, pwenvigil. Apre sa, fkloz - yeah? LUCY: Louvri parantèz, DST ak Lè sa a, pwenvigil. JASON HIRSCHHORN: Great. Ak sa ki mwen ta dwe gen ladan yo nan fen a? LUCY: Retounen 0. JASON HIRSCHHORN: Retounen 0. Mwen gen yo? Jis yon kesyon. nou dwe gen ladan yo retounen 0? ELÈV YO PLIZYÈ: No JASON HIRSCHHORN: No Main fè li otomatikman si w ap resevwa nan fen an. Men mwen panse ke li la bèl yo gen ladan li klèman. Espesyalman lè n ap retounen lòt bagay sa yo nan tout pwogram nan. OK. Sa a se sa nou ap manke - PANDAN KE ki sa? Ki moun ki ka panse a kèk - gen kèk sans de sa ki te gen te kapab antre nan peyi a? Menm si li nan jis nan kèk pseudocode tankou lang? Ki sa ki nou reyèlman - ki sa nou ta vle ale jouk? Yeah, Lucy. LUCY: fen a nan dosye. JASON HIRSCHHORN: fen a nan dosye. Se konsa, sa ou vle di nan fen nan dosye? LUCY: Yon fwa ou rive nan nan fen nan dosye a, sispann. JASON HIRSCHHORN: OK. Se konsa, yon fwa nou rive nan fen an nan dosye a. Ki jan nou fè konnen lè nou te rive nan fen a nan dosye a? ELÈV 40: Mwen panse ke zòn de defans yo pral mete nan NULL. ELÈV 41: Buffer te deklare andedan bouk la. JASON HIRSCHHORN: Se konsa, ou panse ap tanpon dwe mete nan NULL. Poukisa ta pezib dwe mete nan nil? ELÈV 40: Paske lè ou frèd, w ap eseye mete pa gen anyen nan zòn de defans. JASON HIRSCHHORN: OK. Se konsa, w ap panse frèd - lè nou te rive nan nan fen a ranpli, ki sa ki frèd pral fè? Mwen panse ke sa a, se kesyon an nou dwe konnen. Ki sa ki frèd fè? li mete NULL nan zòn de defans, oswa li fè yon lòt bagay? Ki jan nou ka konnen ki sa li fè? ELÈV 42: Man. JASON HIRSCHHORN: Man. Se konsa, kite yo gade sou isit la. Retounen valè. Sou siksè, frèd ak fwrite retounen nan nimewo nan atik li oswa ekri. Nimewo sa a egal a kantite bytes transfere sèlman lè gwosè se 1. Si yon erè fèt, oswa nan fen a dosye ki rive jwenn, valè retounen se yon konte atik kout oswa 0. Se konsa, pou rezon nou an, si rive frèd fen a nan dosye a, epi li soti nan fen a nan dosye, pa gen anyen kite li, sa ki li pral retounen? ELÈV 43: Zewo? JASON HIRSCHHORN: Ki sa? ELÈV 43: Zewo? JASON HIRSCHHORN: Zewo. Li pral retounen zewo. Se konsa, nou konnen ke frèd, lè nou te gen rive nan fen an nan dosye a, ki pral retounen zewo. Ki jan nou ka sèvi ak sa nan avantaj nou an? AVI: Ou ka deklare yon varyab deyò nan bouk la yo rele chèk la. Si chèk egal - pou kounye a - yon sèl. JASON HIRSCHHORN: OK. AVI: Lè sa a, ou ka mete yon SI deklarasyon dwa apre frèd li di si frèd egal zewo - pa gen okenn. JASON HIRSCHHORN: Ki moun ki ka ede Avi deyò? AVI: Ki sa ki nan valè a tounen pa frèd? JASON HIRSCHHORN: Nou jis janbe sa a. AVI: Ki jan ou fè reprezante li? JASON HIRSCHHORN: Se konsa, li retounen - kite a gade isit la - li retounen yon size_t, ki se esansyèlman yon nonb antye relatif. Se konsa, li retounen yon nonb antye relatif. Ak nan ka nou an, li pral retounen 1 oswa 0 - 1 si li li yon sèl bagay - yon sèl multiple, ak 0 si nou te rive nan fen an. Se konsa, si frèd - yeah? ELÈV 45: pa Èske ou ka jis mete plen an frèd (tanpon, 1, 1, src) nan la pandan y ap bouk? JASON HIRSCHHORN: Se konsa, ou pwopoze fè sa a nan genyen? [Entèrpozisyon vwa] JASON HIRSCHHORN: Kenbe sou. Se konsa, nou ap debarase nan sa. Se konsa, w ap pwopoze mete frèd nan genyen? Ki sa ki ta nou menm tou nou avanse pou pi si ou vle fè sa? ELÈV 45: tanpon a deyò. JASON HIRSCHHORN: Nou ta dwe tou avanse pou pi sa a soti isit la. ELÈV 45: Men, fè sa toujou ap avanse pou li pou pi devan? [Entèrpozisyon vwa] JASON HIRSCHHORN: OK. Se konsa, sa a se sa Okshar yo pwopoze yo. Nou kreye tanpon nou an. Nou PANDAN KE frèd, lè sa a nou fwrite. Refleksyon sou sa a? ELÈV 46: kesyon sèlman mwen an se, ta aktyèlman li egzekite frèd la komand yo ye? JASON HIRSCHHORN: Gwo kesyon. Lè w ap mete yon apèl fonksyon andedan nan yon kondisyon, fè sa rele fonksyon egzekite? Nou te wè egzanp sou sa a anvan. Dwa? ELÈV 46: OK. Yeah. Se konsa, li fè sa egzekite. JASON HIRSCHHORN: Nou te wè bagay sa yo tankou sa anvan, kote nou gen yon rele fonksyon andedan nan yon kondisyon. ki rele fonksyon egzekite? Wi. Se konsa, repons lan se wi. Sa a rele fonksyon ap egzekite. Men, ankò, se li ki sa nou vle? Ki sa ki se yon fason nou te ka konnen konnen si li nan sa nou vle? ELÈV YO PLIZYÈ: Kouri li? JASON HIRSCHHORN: Nou te kapab kouri li. Men, anvan nou fè sa, nou te kapab tou rezon ki fè nan sa a. Si - di nou gen yon sèl multiple nan nou an pote, nou pral jwenn yo isit la, nou pral jwenn nan Kòd sa a. Sa a ap kouri. frèd pral retounen yon sèl multiple ak magazen li nan zòn de defans la. Lè sa a ap evalye a 1, dwa, apre yo fin l 'tounen lakay 1. Se konsa, pandan 1. sa vle di kòd la andedan bouk la pandan y ap gen pou siyen? ELÈV 47: Yeah. Se vre. JASON HIRSCHHORN: Wi. 1 a se vre. Li pa 0. Se konsa, kòd la andedan isit la ap egzekite. Se konsa, nou pral ekri sa a. Nou pral avanse pou pi tounen nan sa a liy yon fwa ankò. Koulye a, nou genyen - nou ap nan fen a nan dosye nou yo. Nou li soti nan fen a nan dosye nou yo, paske nou sèlman te gen yon sèl multiple nan li. Frèd retounen 0, magazen yon bagay nan zòn de defans. Mwen franchman pa konnen ki sa li magazen nan zòn de defans. Nou te kapab pwobableman gade yo wè sa li fè. Ke mwen onètman pa konnen. Nou pa konnen, ki moun ki gen sousi sa ki li magazen nan zòn de defans? Men, li retounen 0. Epi yo pral pandan y ap 0 egzekite? PANDAN KE 0 pa pral egzekite. Se konsa, Lè sa a, nou pral deplase desann isit la. Se konsa, kite a jwenn yon montre nan men si sa a se kòd la nou ta dwe kouri, oswa si nou ta dwe fè chanjman an premye. Se konsa, si ou panse - ou dwe vote. Si ou panse ke nou ta dwe kouri Kòd sa a kòm se, tanpri leve men ou. OK. Genyen yon sèl - ou gen yon kesyon, enkyetid? Yeah. ELÈV 48: Apre nou deplase tanpon deyò nan bouk la, fè nou gen malok li? JASON HIRSCHHORN: Gwo kesyon. Apre nou avanse pou pi pezib deyò nan a bouk, nou dwe malok li? Sa a se yon kesyon sijè ki abòde. Si nou inisyalize pezib deyò nan sa a bouk, èske sa ap egziste andedan nan bouk la? ELÈV YO PLIZYÈ: Wi. JASON HIRSCHHORN: Wi. Grandè li yo kouvri andedan nan bouk la, , epi, reyèlman, anyen ki anba a li anndan nan kòd sa a, ki gen ladan an bagay sa yo andedan isit la. Se konsa, nou pa bezwen malok li. Li se yon varyab lokal yo, ak grandè li yo toujou gen ladan bouk la. ELÈV 49: nou bezwen libere li? JASON HIRSCHHORN: Eske nou bezwen gratis tanpon? ELÈV 49: Yeah, si nou pa fè sa malok. JASON HIRSCHHORN: Eske nou bezwen gratis tanpon? Nou pa fè sa. Yon fwa ankò, li se yon varyab lokal yo, se konsa nou pa bezwen gratis li. OK. Ann wè sa ki rive. Se konsa, li uninitialized. Sa se sa ki te yon bagay ki Marcus pwopoze pi bonè. Se konsa, nou genyen ki erè, varyab tanpon se uninitialized lè yo itilize isit la. Ki jan nou ka ranje sa a? ELÈV 50: malok li? ELÈV 51: pèr NULL? ELÈV 52: Di tanpon egal NULL. JASON HIRSCHHORN: OK. Sanble bon. Nou gen li kounye a. Se pou yo kreye yon bagay eseye kopye. Se konsa, nou gen dosye tèks nou an. Ki jan nou ka kouri pwogram sa a? Yeah. ELÈV 53: Ou kapab fè dot koupe CP, test.txt. Lè sa a, ou ka non yon lòt dosye kote li pral sere nan. JASON HIRSCHHORN: OK. Nou pral rele li out.txt. Cool? Seg fay. Refleksyon sou fay la seg? Sa a se gwo. Ki jan nou ka chèche konnen ki kote fay la seg se? Ki sa? ELÈV 54: gdb. JASON HIRSCHHORN: gdb. Nou kouri gdb pa ekri koupe gdb dot, non an nan pwogram nou an. Pa gen liy lòd agiman la. Nou pral mete yon breakpoint nan prensipal la. Si m 'vle kòmanse gdb, ki sa mwen fè? ELÈV 55: R. JASON HIRSCHHORN: R. Lè sa a, ki sa? ELÈV 55: Agiman yo? JASON HIRSCHHORN: Lè sa a, nan lòd-liy agiman. Se pou nou mache nan. N se jis pran m 'liy pa liy. Mwen pral ale jouk Mwen jwenn fòt seg m 'yo. Genyen fòt seg m 'yo. Li sanble ke frèd ki te koze fòt seg m 'yo. Mwen konnen frèd ki te koze fòt seg m 'yo, paske sa ki te nan liy nou jis egzekite. Apre sa, bagay la sèlman ki te pase nan ki liy - de bagay sa yo te pase. Frèd te ale, ak Lè sa a, nou tout nou te fè kèk chèk ti tan. Mwen se vle parye ke pandan ke an tcheke pa te sa ki lakòz fòt seg m 'yo. Gen plis chans, frèd te sa ki lakòz fòt seg m 'yo. Mwen menm mwen te wè yon bagay isit la, memcopy. Memwa kopi. Son tankou k ap deplase memwa soti nan yon sèl kote nan lòt la. Son tankou yon bagay ki ta ka rive nan frèd, petèt kèk memwa k ap soti nan isit la yo isit la. Se pou yo ale nan sa a ankò. Kouman pou mwen kòmanse li sou epi kouri l 'ankò? Yeah. ELÈV 56: ou bezwen mete yon komersyal anvan tanpon? JASON HIRSCHHORN: Se konsa, comercial anvan tanpon va fè m 'adrès ki nan tanpon, ki se yon karaktè *. Se pou yo kouri nan sa a yon lòt fwa ankò. Kouman pou mwen kouri atravè li yon lòt fwa ankò? ELÈV 57: Èske ou ka jis tape kouri ankò? JASON HIRSCHHORN: Jis tape kouri ankò. Se konsa, nou pa ap ale nan egzekite liy sa a. Se konsa, tanpon se yon konsèy NULL. Kòrèk? Li se montre - se pou yo wè. Si nou gen nou yo - desine yon foto rapid sou sa a. Èske tout moun wè si Mwen ekri sou isit la? Se konsa, nan chemine a, nou gen yon lokal varyab ak sa yo rele li tanpon, ak li nan yon konsèy nan yon Char. Ki sa ki adrès la se karaktè sa a nan? ELÈV 58: 0x0. JASON HIRSCHHORN: Dwa. Sa a ki sa sa a se. Nan isit la, andedan zòn de defans, se ki estoke 0x0. Sa a ki sa nou genyen - an konfigirasyon nou gen kounye a. Se konsa, liy sa a, frèd, mete yon bagay soti nan sous ki kote? Nan bwat sa a oswa bwat sa a? Ki bwat? Kite bwat oswa dwa bwat? Sa a bwat dwat. Li swiv konsèy la, ak mete l 'nan isit la. Lè nou eseye ak touche memwa nan kote 0, ki sa nou jwenn? Yon segmentation fay. Sa a erè a nou gen kounye a. Yeah. ELÈV 59: pa ou gen yo mete zetwal tanpon? Wi ou non? Pou frèd? JASON HIRSCHHORN: Se konsa, frèd pran yon konsèy. Se konsa, li pase nan zòn de defans. Lè sa a, li pral de-referans li yon kote andedan frèd. Men, ankò, nou te wè, li pran yon konsèy. Nou pa bezwen pase li zetwal tanpon. Ki ta ka pase li tou sa la isit la. Apre sa, ki ta pwobableman ban nou yon erè paske nou ap de-Référansman li. Dwa? Lè nou de-referans konsèy sa a, lè nou eseye jwenn aksè nan kote sa a, nou ap vin yon erè - nou fòt segmentation. Se konsa, - Wouch. Nou pral kite soti nan gdb. Liy nou an - pwoblèm nou yo - se dwa isit la sou liy sa a. Lè li nan yon pwoblèm paske nan liy sa a. Ki jan nou ka kreye yon bwat ki se aksesib nan frèd. Dwa? Nou bezwen yo kreye yon bwat sa a, se yon sèl multiple gwo, gwosè a nan yon Char. Men, nou bezwen ke bwat yo dwe aksesib lè sa a fonksyon ègzekutra. Se konsa, kote - yeah. Nenpòt ki ide? ELÈV 60: Jis mete l 'kòm nenpòt ki karaktè o aza. Ou menm, fè egal tanpon Char karaktè la. Lè sa a,, lè nou fin pezib gen - JASON HIRSCHHORN: Rete tann. Char pezib? Se konsa, pa gen okenn zetwal? ELÈV 60: Yeah. Pran soti etwal la. Pèr yon karaktè o aza. JASON HIRSCHHORN: OK. Se konsa, ban m 'yon sèl. ELÈV 60: Tankou yon oswa yon bagay. Lè sa a, lè ou gen tanpon la, ou sèvi ak yon - ELÈV 61: Star? Oh okenn, comercial la. ELÈV 60: Sèvi ak komersyal la. JASON HIRSCHHORN: OK. Ak sa ki sou nan fwrite? ELÈV 60: Sèvi ak komersyal la ankò. JASON HIRSCHHORN: Tout dwat. Se konsa, lide ou ye, se nou kreye yon karaktè ak mete yon bagay nan li, e Lè sa a, ekri ak sa yo ki Char. ELÈV 60: Yeah. JASON HIRSCHHORN: Ki sa ki moun panse? ELÈV 62: Li konplike. JASON HIRSCHHORN: OK. Se pou yo rale yo mete deyò. Se konsa, tan sa a, mwen pral trase sa a nan wouj sou chemine a isit la, ak Lè sa a, nou ap gen - Ooh! M regrèt. Se konsa, tan sa a nou gen yon bagay yo rele pezib, epi li sou chemine a. Kòrèk? Apre sa, n ap ekonomize nan li a, okòmansman. Lè sa a, nou gen apèl nou yo frèd. Ki sa ki frèd se li pran yon multiple soti nan dosye nou yo ak mete l 'yon kote. Li mete l 'nan tou sa la bagay la montre. Oke, anvan nou te gen adrès sa a - 0x0. Kounye a ki sa adrès nou genyen? ELÈV 63: Tou sa adrès tanpon se. JASON HIRSCHHORN: Tou sa adrès tanpon se. Li la pwobableman pral fè yon bagay tankou sa. Pwobableman ale nan kòmanse avèk yon b ak yon f, ak Lè sa a, gen sis lòt ekzadesimal chif. pa gen pwoblèm. Gen kèk adrès. Apre sa, n ap pase adrès ki pous Apre sa, nou pral mete yon sèl nou bagay multiple nan adrès sa a. Se konsa, nou ap ale nan mete yon sèl nou bagay multiple andedan isit la. Lè sa a, nou pral ekri ki soti nan sa ki nan tout tan tout tan andedan isit la. okenn moun gen nenpòt kesyon sou sa? Ki moun ki panse kòd sa a ap travay? Leve men ou si ou panse Kòd sa a ap travay. Ou dwe pran yon pozisyon. Apre sa, ki moun ki panse kòd sa a pa pral travay? Leve men ou. Tout lòt moun yo ta dwe ogmante men yo. OK. Michael, ki bò ou kanpe? MICHAEL: Mwen pa ka deside. Kalite nan mitan yo. JASON HIRSCHHORN: Ou se nan mitan yo. Chwazi yon. MICHAEL: Mwen pral gen lafwa ak di ke li pral travay. JASON HIRSCHHORN: OK. Ou ap gen konfyans ak di li ap travay? Kisa ki te pase? [Entèrpozisyon vwa] JASON HIRSCHHORN: Pa gen fay seg. Ki jan nou ka tcheke yo wè si de bagay sa yo yo egal? De dosye egal. ELÈV 64: diff. JASON HIRSCHHORN: diff. Chèk diff pou diferans ki genyen ant de dosye, epi si li retounen pa gen anyen, yo ap idantik. Men, si nou louvri moute, nou jwenn dosye nou yo. Se konsa, sa ki te solisyon an kòrèk. Se pou yo gade tounen nan li yon lòt fwa ankò. Nou aktyèlman pa t 'menm bezwen inisyalize li. Li ta pwobableman gade yon ti jan cleaner si ou pa t 'mete yon bagay o aza an la. Pwen an ke yo te, ou te bezwen yo kreye kèk espas nan magazen yon bagay soti nan frèd epi pran yon bagay soti nan fwrite. Apre sa, ke bagay te dwe swa yon lokal varyab sou chemine a - ou te kapab te malloc'd kèk espas. Se konsa, nou aktyèlman te kapab gen ekri malok isit la, ak ki ta yo te travay. Lè sa a, nou ta yo te estoke bagay sa yo nou yon kote sou pil wòch la. Men, sa a se aktyèlman, pwobableman, solisyon an pi elegant. Jis kreye kèk espas sou chemine a pou bagay sa yo ale. Mwen ta gen de lòt kòmantè. Si ou te pran vire nan sa a, epi Lè sa a, jwenn bay nòt sou sa a, kòmantè mwen ta dwe jan sa a. Sa yo 1 nan isit la, m ', gade tankou nimewo majik. Sa a 1, an tèm de frèd, fè sans. Sa a ki kantite bagay li ak ekri. Men, yon sèl sa a dwa isit la ta dwe pwobableman ap yon lòt bagay. Se konsa, sa se yon sèl solisyon? ELÈV 65: Kantite moun ki nan multiple. JASON HIRSCHHORN: Menm jan ak sa? ELÈV 65: Kantite moun ki nan Char. JASON HIRSCHHORN: Kantite moun ki nan Char. Yeah, multiple se pa yon kalite. Se konsa, gwosè nan travay Char. Nou te kapab genyen, nan tèt yo nan Kòd nou an, # yo defini sa. Rele yon bagay multiple ak li vrèman yon karaktè. Aktyèlman, yon apwòch menm pi bon ta ka yo te sa a - wen. Okenn moun konnen ki sa ki se? M regrèt. Mwen gen li bak. Rete tann, pa gen. Ki wout li ale? Okenn moun konnen ki sa ki se? Yeah. ELÈV 67: sipoze ede estandadize atravè sistèm bagay sa yo ke genyen - tankou nonb antye relatif siye ki gen 8 bytes? JASON HIRSCHHORN: Sa se egzakteman dwat. Sou machin diferan, gwosè a nan yon Char - pa anjeneral yon Char. Charaktèr yo anjeneral yon sèl multiple. Men, gwosè a nan kalite done lòt yo gwosè diferan sou yon machin 32-bit kont yon machin 64-ti jan. Yon uint8_t se toujou 8 Bits - toujou yon sèl multiple. Apre sa, mwen bezwen gen ladan ki estanda dosye Int header. Se konsa, kounye a, sa a ta te pwobableman gen te fason ki pi bon yo ekri kòd sa a. Se konsa, mwen debarase m de chif yo majik. Apre sa, mwen gen tou yon plis ki lojik tape pou tanpon. Li se pa tou senpleman yon Char, li se yon multiple, ki se ki sa nou ap atann li yo dwe. Apre sa, moute isit la, nou te aktyèlman te yon ti jan pi plis gaya. Nou pa rele li yon Char, ki - petèt, ki moun ki konnen - te kapab fè yon diferan gwosè sou machin diferan. Nou ap aktyèlman li di sa a se egzakteman yon sèl multiple, toujou, pa gen pwoblèm sa. Men, si nou gade isit la, nou fè CP. Uh-oh. Kisa ki te pase? ELÈV 68: Li ta ka chanje. JASON HIRSCHHORN: Ki sa? ELÈV 69 li: Eske se? ELÈV 70: Ou pa t ' defini li kòm yon kalite. ELÈV 71: Men, li ta dwe dwe defini nan estanda. ELÈV 72: Ki sa ki k ap pase sou? ELÈV 73: ta dwe defini kapab tout bouchon? JASON HIRSCHHORN: Se konsa, li pa # defini. Aktyèlman, nan ka sa a, mwen se pral sèvi ak tipedèf. Paske n ap sèvi ak li kòm yon kalite nan yon sèl kote. Se konsa, nan ka sa a, nou aktyèlman vle tipedèf tankou nou ap enprime yon kalite nouvo multiple, epi li se, ki esansyèlman, sa a. Li yon ti jan diferan pase # defini. Epi, koulye a, kòd nou travay pafètman. Se konsa, ankò, # defini pran yon bagay, ranplase li tout kote ak bagay la ak lòt. Se jis nan yon macro - steno yo debarase m de nimewo majik. Men, nan ka sa a, paske nou ap lè l sèvi avèk li kòm yon kalite - dwa isit la - yo nan lòd pou sa nan travay, nou bezwen tipedèf tou sa multiple se. Apre sa, n ap defini li dwa isit la. Li pa yon konstri, li la aktyèlman jis yon nonb antye relatif siye. Li nan yon sèl multiple lontan. Kòd sa a yo ap disponib sou entènèt, ak nou tout ta dwe gen li kounye a. Se konsa, nou genyen - pafè - 13 minit kite yo ale sou pwoblèm mete 5. Mwen vle mache nan copy.c ansanm, ak Lè sa a, nou pral pale yon ti tan sou pati pyès sa yo lòt nan pwoblèm nan mete. Se konsa, kite m 'rale moute copy.c. Epi bagay la fre se, nou te aktyèlman deja ekri yon anpil nan Kòd sa a. Kòd la nou te ekri literalman jis te soti kite peyi isit la lè m 'te ekri sa a sou m 'pwòp. Men, sa a se copy.c, fòme fondasyon an pou de premye pati pyès sa yo nan pwoblèm nan fikse pou whodunit.c, ki ou bezwen ekri, ak resize.c. Recover.c, ki se twazyèm lan ak final pati nan pwoblèm mete nan, se pa ki baze sou sa a ranpli. W ap ale nan bezwen ekri ki ranpli, nou ba ou yon modèl pou sa pote, men li pa gen anyen fè ak copy.c. Men, paske se copy.c se fondasyon pou de premye pati pyès sa yo, nou pwal mache nan li kounye a, kidonk, ou gen yon bon sans de ki sa li fè. Apre sa, kòmantè sa yo ki bay kèk nan byen lwen ou. Nou te deja ekri kèk nan sa a. Premyèman, nou ap fè asire w ke nou jwenn twa agiman. Apre sa, n ap sonje non an dosye-a. Se konsa, nou sote etap sa a lè nou kode bagay nou yo - lè CP nou an. Men, isit la, yo ap fè li yon ti jan pi pwòp. Yo ap tcheke a asire w tou de dosye yo se bon, nan adisyon a louvri yo. Nou te ekri tout kòd sa a jis kounye a, se konsa mwen pa ale nan rete sou Kòd sa a. Next se kèk bagay ki nan espesifik nan ki kalite dosye nou ap lè l sèvi avèk, ki yo se dosye bitmap. Dosye bitmap gen kèk Metadata ki asosye ak yo. Se konsa, koup la nan premye bytes ba w enfòmasyon sou dosye a. Yo pa koulè yo nan pixel a nan ki imaj. Yo di ou sou dosye a. Men, si w ap li pwoblèm seri a, ou pral gen pi plis enfòmasyon sou sou sa ki kalite estrikti Metadata yo enkli ak Bitmap. Men, sa a rezon sa a genyen sa a premye mete nan - Kòd sa a isit la menm. Nou ap li Metadata la - de moso nan Metadata - dosye a header ak info lento a. Apre sa, nou ap tcheke kèk pati nan li nan asire w ke li se yon dosye bitmap vre anvan kontinye. Li di ankò, sa yo se detay nou pa bezwen ale nan kounye a. Si w ap li pwoblèm seri a, ou pral konprann sa yo. Long istwa kout, sa yo yo se jis li di yo: sa a se yon dosye bitmap, ak e ki konfime ke. Apre sa, nou ap ekri sa yo nan dosye a deyò. Nou wè ke isit la. Nou ap ekri nan konsèy la soti. Apre sa, n ap detèmine pwotèj. Se konsa, ankò, kòm se particularit ak yon dosye bitmap, gen kèk liy gen ladan padding nan fen an. Men, si w ap li pwoblèm seri a, ou pral aprann plis sou pwotèj. Sa a se fòmil la yo jwenn pwotèj. Enpòtan sonje - lè ou chanje gwosè a nan yon bitmap pote, chanjman sa yo boure. Lè ou chanje gwosè a nan yon pote, chanjman sa yo boure. Li pa janm pral fè pi gran pase 3 - li pral 0 a 3, enklizif. Men, lè ou chanje gwosè a nan yon bagay, chanjman sa yo boure. Si m 'sèlman gen yon sèl pixel nan ki ranje, mwen bezwen twa bytes nan padding, paske chak ranje genyen yo dwe miltip nan kat bytes lontan nan yon dosye bitmap. Men, si mwen double l ', yo ale soti nan yon pixel nan de pixel, chak nan yo ki, Se pou nou di, se yon multiple, lè sa a mwen bezwen de bytes nan padding fè ki egal a kat. Se konsa, lè mwen chanje gwosè a nan yon bagay, Mwen bezwen chanje kantite lajan an nan padding m 'genyen. ki fè sans nan tout moun? Apre sa, nou repňte sou chak ranje, oswa atravè tout ranje yo. Lè sa a, nou repňte nan chak kolòn nan chak ranje. Nou ap trete bitmap sa a tankou yon griy, tankou nou te trete tablo a nan 15. Menm jan ak nou trete brik yo lè nou enprime yo sou ekran an. Yon kadriyaj nan ranje ak kolòn. Lè sa a, - nou te wè sa a. Nou aktyèlman jis kode sa a. Nou te kreye kèk depo pou yon ti tan. Nou li nan la, ak Lè sa a, nou ekri li soti. Sa a se egzakteman ki sa nou jis te fè. Apre sa, paske m 'te di chak liy fini nan kèk padding, nou sote sou ki padding - padding la fin vye granmoun. Lè sa a, nou ajoute l 'tounen. Nan ka sa a, n ap kreye menm dosye a egzak. Nou jis ap kopye l '. Se konsa, liy sa a se kalite dwòl. Nou te kapab literalman jis mete padding la pous Men, si ou chanje gwosè a nan dosye a, ou toujou vle liy sa a? Se konsa, si nou chanje gwosè a nan yon dosye li an, nou toujou vle sote sou padding la fin vye a? ELÈV 74: Wi. JASON HIRSCHHORN: Se konsa, nou fè. Paske sa a, ankò, kontra ak dosye a sous. Nou pa pran swen sou padding la soti nan dosye a sous. Nou vle pou yo ale nan liy nan pwochen an. Men, nou pa tou senpleman mete tounen kantite lajan an fin vye granmoun nan pwotèj. Nou bezwen mete do a nouvo kantite lajan pou pwotèj. Se konsa, lè nou ap chanje gwosè a nan yon dosye, nou toujou vle sote sou la padding nan dosye a fin vye granmoun - ki sa nou ap li nan soti nan. Men, sa ki nou ap ekri a, nou pral bezwen mete tounen kèk diferan kantite padding ki nou te detèmine. Yeah. ELÈV 75: lòd la nan tout sa yo de liy pa gen pwoblèm, dwa? Paske w ap manyen diferan dosye. JASON HIRSCHHORN: Egzakteman. Lòd la nan de liy sa yo pa gen pwoblèm. Nou ekri liy sa a. Sa a se isit la pou dosye a nou ap ekri nan. Sa a enpòtan, Se konsa, nou jwenn nan kantite lajan dwat Bondye ki gen pwotèj. Sa a gen fè fas ak dosye a nan. Nou vle sote dwa sou padding la. Nou pa vle li - si nou ap li yon multiple nan yon tan, nou pa pran swen sou sa yo bytes pwotèj. Nou vle pou avanse pou pi nan liy lan kap vini an. Finalman jis tankou Lucy te bay pou nou, nou fèmen dosye yo epi retounen 0. Se konsa, sa a se copy.c. Apre sa, nou aktyèlman te ekri - nou depanse pifò nan seksyon ekri sa a, esansyèlman. Ou te fè sa a. Se konsa, èspere ke ou gen yon bon sans nan sa ki k ap pase nan isit la. Gwo diferans nan, franchman, se jis pati sa a premye ki boule ak sengularite nan dosye bitmap. Se konsa, mwen gen kòm glise pwochen m 'yo, sa nou bezwen fè? Oke, kite la panse osijè de whodunit. Se pou yon moun ki li nan pwoblèm nan mete, sa nou fè bezwen fè nan whodunit? Tou senpleman. Aleja. ALEJA: Èske ou ka pran pati nan nan chak pixel ki vle di wouj. Lè sa a, - kalite? JASON HIRSCHHORN: OK. Se konsa, pran yon pati nan chak pixel ki vle di wouj. Sa a fèmen, men se pa tout nan li. ELÈV 76: Bon, gen nan diferan fason fè li. JASON HIRSCHHORN: OK. Ban m 'yon fason. ELÈV 76: Pran soti tout wouj la, epi Lè sa a, mete aksan sou ble a ak vèt. JASON HIRSCHHORN: OK. Se konsa, yo bay tou de fason sa yo - li son tankou nou ba li yon pixel, li gen yon nivo wouj, ble, ak vèt. Nou ta vle chanje nivo yo manm fanmi an la wouj, ble, ak vèt, tou depann sou sa pixel. Ki kote nan Kòd sa a nou ta dwe chanje wouj la relatif, ble, ak vèt nivo nan yon pixel bay yo. Apre nou te li li l '- anvan nou ekri li? Ban m 'kantite liy. ELÈV YO PLIZYÈ: 83. JASON HIRSCHHORN: 83. Se konsa, isit la menm. Pou whodunit, kòd a ou bezwen ekri tout ta dwe ale dwat la. Epi sa a, kòd la sèlman ou bezwen ekri. Paske, tankou nou tande yo, tout ou bezwen fè se chanje sa yo ble fanmi, nivo wouj, ak vèt ki soti nan chak pixel. Ou te li li l 'nan, e kounye a, w ap pral ekri li soti. Kouman pou mwen jwenn - si mwen gen bagay sa a rele trip, dwa isit la, epi li nan tape RGBTRIPLE - byen, si nou gade nan bmp.h, ki sa ki RGBTRIPLE? ELÈV 77: Li se yon konstri. JASON HIRSCHHORN: RGBTRIPLE se yon konstri. Nou wè ke dwa desann isit la. Se konsa, si mwen te vle aksè, di, nan nivo wouj nan konstri a, ki jan pou m jwenn aksè nan nivo a wouj nan konstri sa a? [KLAS soufl] ELÈV 78: RGBTRIPLE.rgbtred? JASON HIRSCHHORN: Eske se sa ke kòrèk? ELÈV 79: Li ta dwe trip dot, olye pou yo RGBTRIPLE dot? JASON HIRSCHHORN: Triple. Triple se varyab lokal la, se konsa isit la, gen nan pa gen endikasyon isit la. Se konsa, nou jis itilize notasyon an dot. Sa a ap ba m 'nan menm nivo ak wouj. Si m 'vle mande chanje li, mwen jis mete li egal a yon bagay diferan. Se konsa, ankò, liy sa a nan kòd jwenn aksè varyab sa a andedan konstri sa a, epi nou ka mete l 'nan yon nouvo bagay. Se konsa, pou whodunit, ankò, sa a se, nan sans, ki sa nou bezwen fè. Trè senp. Jis chanje kèk nivo fanmi, ak sa a se kote ki Kòd ale. Rdimansyonman, nan lòt men an, se yon ti jan Delice. An reyalite, rdimansyonman se pwobableman la trickiest yon pati nan pwoblèm sa a mete. Nou gen twa minit yo ale sou li. Men, ankò, nou te deja ekri pi fò nan Kòd sa a, se konsa nou yo ta dwe trè yo konnen yo. Ki kèk bagay nou vle fè nan rdimansyonman, si ou te li sou la pwoblèm mete? Si w bay yo ban mwen, nou ka pale sou yo. Ki kèk bagay nou vle fè? ELÈV 80: vètikal - Se konsa, ou gen orizontal rdimansyonman li, men vètikal rdimansyonman li kòm byen? JASON HIRSCHHORN: Se konsa, si n ap bay yon pixel, epi nou vle rdimansyonman li pa yon faktè nan de, li kounye a bezwen yo dwe rdimansyone orizontal ak rdimansyone vètikal. ki fè sans? Yeah. Se konsa, ki la pwobableman la pi gwo defi. Apre sa, nou pral pale sou sa nan yon sec. Yeah. ELÈV 81: fason pou mwen te panse nan li te ou te bezwen ekri ak lèt ​​detache li soti - JASON HIRSCHHORN: Rete tann. pa di nou kisa ou te fè. Nou pral pale nan lojik. ELÈV 81: OK. Ki sa ki te kesyon an? JASON HIRSCHHORN: Ou jis leve soti vivan men ou. Pa te gen okenn kesyon. Kite m 'prezante li. Kite m 'jis diskite sou yon ti tan sa a. Se konsa, nou te yon sèl pixel, nou vle répliquer l ', tou de orizontal ak vètikal. Se konsa, depreferans sa nou fè isit la se, nou li nan pixel nou yo, nou ekri li sepandan anpil nan fwa. Men, Lè sa a, nou gen Trick nou yo isit la, paske Lè sa a, nou vle ale dirèkteman nan a liy pwochen epi ekri li nan la kòmanse nan liy lan kap vini an. Se konsa, si nou vle répliquer tou de orizontal ak vètikal, ki sa ki yon bon fason fè sa - yon bon menm si yo fè sa? Se konsa, nou pa bezwen toujou ap chache alantou dosye nou an nan plas bagay sa yo. Kesyon ki pa ka gen fè sans, men mwen panse yon reponn a li pral ede. ELÈV 82: Kreye yon etalaj? JASON HIRSCHHORN: Se konsa, kite a panse nan chak dosye kòm yon ranje. Se pou nou panse an tèm de ranje. Si nou gen premye ranje nou an soti nan ti nou an foto, nou ka fè ki ranje nan yon gwo ranje nan yon gwo foto, ak Lè sa a, répliquer ki ranje sepandan anpil fwa li bezwen yo dwe repwodui, olye ke pral pixel pa pixel, ki vin konfizyon lè fè fas ak dosye. Paske si nou te gen - Mwen kouri soti nan espas. Si sa a se dosye nou, epi nou genyen ki yon sèl pixel a, e nou vle mete l ' dwa a, nou toujou gen kèk bagay ki bezwen ale sou la lè nou ap ekri ak kreye nouvo dosye nou yo - dosye nou yo ki nan de fwa tankou gwo. Men, li la vrèman difisil ak fonksyon dosye sote alantou nan liy nouvo tankou sa yo, ak Lè sa a, tounen isit la epi li mete bagay sa yo nan la. Li nan prèske enposib fè yon bagay tankou sa yo, si sa fè sans. Se konsa, si nou panse an tèm de ranje, nou ka pran ranje nou an, epi Lè sa a, mete l '- répliquer ranje vètikal. Epi sa a, ki jan nou fè fas ak rèsizin vètikal olye ke orizontal. Sa ki te kalite rapid, ak yon ti kras konfizyon. Malerezman tan nou an, se yo. Mwen pral rete deyò pou moun nan nou isit la ki moun ki gen kesyon sou la pwoblèm seri, ki gen ladan geri. Se konsa, kite a ajoune pou kounye a. Li di ankò, si ou gen nenpòt kesyon, nou ka chat deyò.