[Powered by Google Translate] Pwoblèm Seksyon Fikse 2: Edisyon pirataj
Rob Bowden, Inivèsite Harvard
Sa a se CS50. CS50.TV
Se konsa, mwen Rob. Mwen se yon wo grade nan Kirkland. Sa a se twazyèm ane mwen TFing CS50.
Li se premye fwa a ke nou ap chanje soti nan seksyon nan tradisyonèl-konferans-style,
kote nou jis kalite revizyon sa ki te pase nan konferans ak Lè sa a, ou nèg poze kesyon,
kounye a ke yo te yon anpil plis pwoblèm ki baze sou, kote nou, SÈVI AK ESPAS, ak -
Oh, se konsa lide a se pou yo ale nan ki genyen lyen ki m 'te voye ou menm ak Lè sa a, ou pral nan Espas m' yo.
yon moun pa gen yon konpitè pòtatif? Oke.
Se konsa, nou ap pral lè l sèvi avèk sa a, epi nou ap pral fè pwoblèm ap viv nan seksyon
ak diskite sou yo e yo lè n ap kalkile konnen ki sa ki nan mal
, mwen ta ka rale moute kèk nan kòd ou a, epi mwen ta ka diskite sou lide ou.
Se konsa, nenpòt moun ki te gen difikilte pou?
Ou ka chat sou bò a; Mwen pa konnen si nou pral gen rezon pou sa.
Koulye a, tankou supersection a anvan, si ou te nan ki klas, ou konnen ki sa ke la sou.
Sou tout P kouche gen k ap pase yo dwe seksyon sa yo.
Se konsa, P-seri 2, espesifikasyon, mwen devine ou te wè l 'sou P seri-1 deja.
Men, nou ka gade nan P seri-2 pou ki sa nou ap pral ale sou jodi a.
Epi ou ap wè yon seksyon nan kesyon yo.
Se konsa, sa a pral nan tout P ansanm sa yo,-; gen pral yon seksyon nan kesyon yo.
Se konsa, lwen nou te di, "Konsidere sa a yon opòtinite pratike."
Ou pa yo pral mande w soumèt pwogram sa a.
Lide a se ke sa yo yo sipoze kalite ede w jwenn te kòmanse ak mete an pwoblèm.
Mwen devine sou edisyon an pirataj, yo yon anpil nan yo sipoze jis pou nouvo, bagay enteresan yo aprann.
Yo ka pa dirèkteman aplikab a mete nan pwoblèm.
E yo gen dwa kounye a nou pa ap fè ou soumèt yo, men nan teyori,
pou kouche pwoblèm pita, ou ta ka soumèt yo, epi konsa ou ka swa vini nan seksyon
oswa gade seksyon a jwenn repons yo, oswa ou ka jis jwenn yo sou pwòp ou a
si ou pa santi w tankou jwi devan je m '.
Se konsa, nan - Mwen panse ke sa a se youn la an premye.
Oh. Epitou, anba seksyon sa yo nan kesyon nou menm tou nou te ou poze kesyon sou bout pantalon yo.
Se konsa, mwen devine, nan teyori, w ap sipoze fè gade sa yo anvan li te vini nan seksyon,
men li la bon si ou pa fè sa, nou pral ale sou yo de tout fason.
Se konsa, nou kapab kòmanse ak sa yo: "Kijan yon riban pandan y ap diferan de yon riban fè-pandan y ap?
Lè se lèt la patikilyèman itil? "
Se konsa, nenpòt moun ki gen nenpòt -?
[Elèv] Eske-pandan y ap riban ap toujou egzekite a omwen yon fwa. Nan
Wi. Se konsa, ki se diferans lan. Yon riban pandan y ap - I'll jis fè l 'sou isit la - pandan y ap riban, nou gen kondisyon an
dwa isit la, Lè nou konsidere ke yon fè-pandan y ap, ou pa gen yon kondisyon jiskaske nou jwenn desann isit la.
Se konsa,, lè pwogram ou an egzekite, epi li vin riban a pandan y ap,
li imedyatman tcheke si kondisyon sa a se verite.
Si se sa ki kondisyon se pa vre, li pral jis sote sou riban an antyèman.
Èske-pandan y ap riban, menm jan pwogram nan ap egzekite, li vin nan "fè a."
Pa gen anyen k ap pase nan pwen sa a, jis kontinye egzekite.
Lè sa a, lè li frape "pandan y ap la," si maladi a se vre, sa ap riban fen e fè l 'ankò
ak ankò e ankò jiskaske kondisyon an se pa vre ak Lè sa a, jis tonbe nan.
Se konsa, diferans lan ke yo te, ke sa a ka sote dwa Depi nan kòmansman an trè.
Sa a nesesèman ègzekutra yon fwa ak Lè sa a, yo ka egzekite fwa plis si maladi a se toujou vre.
Se konsa, riban a pandan y ap ap ap sèlman fè li yon fwa, oswa - riban a pandan y ap - nou ka pa bezwen fè li nan tout,
depi le pli vit ke nou jwenn nan li, si maladi a ki fo, nou pral jis sote dwat sou li.
Lè nou konsidere ke fè-pandan y ap riban, nou pral egzekite li yon fwa, nesesèman.
Lè sa a, lè nou jwenn nan kondisyon an, nou tcheke si li nan vrè oswa fo.
Si li nan verite a, nou pwal fè li ankò; si li nan fo, nou pral jis kontinye ale.
Se konsa, lè se lèt la patikilyèman itil?
Se konsa, mwen kapab di ke nan antye nan 4 ane yo, 3 zan, kèlkeswa sa,
ke mwen te ap pwogramasyon, mwen te itilize sa a, tankou, ki poko gen 10 fwa.
Ak pwobableman 5 nan yo se nan CS50 lè nou ap entwodwi fè-pandan y ap pasan.
Se konsa, lè ou te itilize fè-pandan y ap pasan?
Lè se - yeah? La
[Elèv] Lè ou ap eseye jwenn opinyon itilizatè, oswa yon bagay ou vle tcheke -
Yeah. Se konsa, fè-pandan y ap pasan, itilizatè D 'se youn nan gwo.
Se poutèt sa sou ansanm sa yo, premye pwoblèm koup, lè ou vle mande itilizatè a yo, renmen,
"Ban m 'yon kòd," ou pa kapab kontinye jiskaske w jwenn ki fisèl.
Se konsa, nou, nesesèman, bezwen pou mande pou fisèl la omwen yon fwa.
Men, Lè sa a, si yo reponn yon move bagay, Lè sa a, ou bezwen riban retounen lakay yo epi mande ankò.
Men, lòt pase opinyon itilizatè, li trè ra pou m 'kontre yon ka
kote mwen vle riban "omwen yon fwa", men petèt pi plis.
Kesyon oswa -? Èske gen moun ki te itilize yon fè-pandan y ap riban nenpòt lòt kote?
Oke. Se konsa, youn nan pwochen se, "Ki sa ki deklare lidantifian
anjeneral endike si outputted pa sonnen? "
Se konsa, ki kalite kòd te kapab m'ap ekri nou jwenn 'sekrè idantifyan?
[Elèv] Sa x = 2?
Se konsa, nou ka jis eseye li nan isit la, x = 2.
Nou pral kouri sa a - oh, mwen pa t 'klike sou li. Se konsa, isit la nou jwenn - tout dwa.
"Sèvi ak nan x idantifyan sekrè."
Se konsa, sa a, se idantifyan la sekrè, yon varyab.
Li pral souvan rele yon varyab yon idantifyan.
Se konsa, li pa ta ka konnen li la aktyèlman yon varyab; li pa konnen sa li ye.
Se konsa, li nan yon idantifyan.
Se konsa, poukisa li deklare? Yeah.
Se konsa, yo dwe klè sou tèminoloji, deklarasyon an nan yon varyab
se lè w di "x Int," oswa "fisèl y," kèlkeswa sa.
Inisyalizasyon a nan varyab la, oswa voye elèv la nan varyab la,
se nenpòt lè ou di "x = 2."
Se konsa, nou ka fè sa yo nan etap ki apa a, int x, x = 2, ak jiskaske - nou ka gen yon pakèt moun sou bagay nan isit la -
Men, jouk liy sa a rive, x se toujou uninitialized, men li te deklare.
Se konsa, nou ka evidamman fè l 'nan 1 liy, e kounye a, nou ap deklare ak inisyalizin.
Kesyon?
Epi finalman, "Poukisa se kriptaj la Seza tande kòz pa trè sekirite?"
Se konsa, an premye, nenpòt moun ki vle di ki sa kriptaj la Seza tande kòz se?
[Elèv] Seza tande kòz kriptaj jis se ke ou kat, ou chanje chak lèt ​​nou ekri,
yon sèten kantite lèt ale sou, yo epi li deplase tounen sou, epi li pa trè an sekirite paske
gen nan sèlman 26 opsyon posib epi ou jis gen eseye chak 1 nan tout sa yo jiskaske w jwenn li.
Oh. Se konsa, m 'ta dwe repete?
Kriptaj la Seza tande kòz, it's - Mwen vle di, ou pral fè fas ak li sou pwoblèm sa yo ke ou -
oswa mwen devine edisyon an estanda nan mete nan pwoblèm sa a, se pa sou edisyon an aker.
Se konsa, sou edisyon an estanda yo mete nan pwoblèm, ou jwenn yon mesaj tankou, "Alo mond,,"
epi ou genyen tou yon kantite tankou 6, epi ou pran mesaj sa, epi chak karaktè endividyèl,
ou Thorne li pa 6 pozisyon nan alfabè an.
Se konsa, 'h a' nan alo ta vin h-m-j-k-l-m-n.
Se konsa, lèt la premye ta dwe n. Nou fè menm bagay la ak e.
Si nou gen yon, renmen, z oubyen yon bagay, Lè sa a, nou tounen vlope toutotou Pou 'yon.
Men, chak karaktè vin sèvi a 6 karaktè pita nan alfabè a, epi li pa trè an sekirite
depi gen sèlman 26 posibilite pou konbyen fason ou ta ka vlope yon lèt yon sèl.
Se konsa, ou ka jis eseye tout 26 nan yo, epi, prezimableman, pou yon mesaj lontan ase,
sèlman 1 nan sa yo 26 bagay sa yo posib a pwal lizib,
ak yon sèl la lizib a pwal mesaj orijinal la.
Se konsa, li pa yon fason trè bon nan chifreman anyen nan tout.
Asosye ak sa ki bout pantalon, "Ki sa se yon fonksyon?"
Se konsa, sa se yon fonksyon? Wi.
[Elèv] Se tankou yon moso separe nan kòd ki ou ka rele yo ale nan ak Lè sa a, jwenn valè a retounen nan tou sa.
Yeah. Se konsa, mwen pral reponn li pa tou reponn pwochen an - oswa repete pa tou jis reponn youn nan pwochen.
Ou ka itilize fonksyon olye pou yo jis kopye ak kole kòd sou yo ak sou ankò.
Jis pran ki kòd, mete l 'nan yon fuction, ak Lè sa a, ou ta ka jis rele fonksyon an
tout kote ou yo te kopye ak kole.
Se konsa, fonksyon yo itil.
Se konsa, kounye a nou ap fè pwoblèm reyèl.
Yon sèl la an premye. Se konsa, lide nan yon nan premye se, ou pase l yon fisèl, ak kèlkeswa la -
oswa li di tout miniskil? Li pa di tout miniskil.
Se konsa, mesaj la kapab anyen, epi - oh pa gen okenn. Li fè sa.
"Pou senplisite, ou ka asime ke itilizatè a ap ap sèlman opinyon lèt miniskil ak espas."
Se konsa, nou pase l yon mesaj avèk sèlman lèt miniskil ak Lè sa a, nou altène
ant kapital ak miniskil - nou chanje fisèl la yo dwe kapital ak miniskil, altène.
Se konsa, anvan nou ba ou yon dezyèm menm plonje nan pwoblèm nan,
ki sa se bagay ki premye ke nou bezwen fè?
Oh, ki sa mwen te jis klike sou? Oh, mwen jis klike sou yon imèl nan isit la.
Se konsa, nan premye bagay nou dwe fè - m 'gade nan yon sèl la mal?
Èske sa se yon pati nan yon sèl sa a?
Non, sa yo se toujou nan la, menm si.
Okay, toujou isit la.
Koulye a, nou pa kapab pran? - Wi. Isit la nou pa ka asime ke li nan sèlman miniskil ak espas.
Se konsa, kounye a nou gen kontra avèk lefèt ke lèt yo ka tou sa nou vle yo fè.
Se konsa, nan premye bagay nou vle fè se jis jwenn mesaj la.
Nou jis bezwen jwenn yon kòd, fisèl s = GetString, oke.
Koulye a, pwoblèm sa a, gen yon koup nan fason pou fè li.
Men, nou pral vle itilize lojik operatè isit la.
Èske gen moun ki swa yo pa t 'nan supersection a,
oubyen yon bagay, epi yo pa konnen ki sa ki lojik operatè yo ye?
Oubyen kòman pou yo gen rapò ak ASCII nan okenn fason?
[Elèv] mwen pa t 'nan supersection a, men mwen konnen ki sa ki lojik operatè yo ye.
Oke. Se konsa, Lè sa a, mwen pa gen ale sou Basics yo nan yo, men mwen pral eksplike
ki sa nou ap ale nan vle itilize isit la.
Se konsa, 'A': reprezantasyon binè nan kapital A, nimewo a se 65.
Mwen jis pral gade - 41 a pwal 01000001.
Se konsa, ki ta dwe 65 nan desimal; kidonk sa a se reprezantasyon an binè nan A. la N. kapital
Koulye a, reprezantasyon nan binè nan pèsonaj la miniskil 'yon'
a pwal menm bagay la, prèske. Se ke - 6, yeah. Sa a se dwa.
Se konsa, binè kapital A, binè miniskil 'yon.
Se konsa, avi ke diferans ki genyen ant A ak 'yon' se sa a ti jan sèl.
Lè sa a k ap pase yo ti jan a 32, ti jan ki reprezante ki kantite 32.
Ak ki fè sans depi A a se 65; 'yon' se 97.
Diferans ki genyen ant yo se 32.
Se konsa, kounye a nou konnen ki nou kapab konvèti soti nan A rive 'yon' lè yo pran yon
ak lojik ORing li, ak - ki sanble ak yon 1.
Sa a se yon lojik OSWA, ak 00100000, e ke pral ban nou 'yon.
Epi nou ka jwenn nan 'yon' Yon pa lojik ANDing
ak 11 0, nan kote sa a, 11111.
Se konsa, sa a pral Lè sa a, ban nou ekzakteman ki sa 'yon' te, men anile soti sa a ti jan endividyèl,
se konsa n ap gen 01000001 yo, mwen pa konnen si mwen konte dwat.
Men, teknik sa a nan lojik ORing jwenn nan kapital miniskil,
ak lojik ANDing jwenn soti nan miniskil yo nan kapital la pa san konte A.
Tout moun nan lèt yo, K vs k, Z vs z,
yo tout yo jis pral diferan selon sa a ti jan sèl.
Se konsa, ou ka itilize sa yo chanje soti nan nenpòt lèt miniskil nan nenpòt lèt majiskil ak vis vèrsa.
Oke. Se konsa, yon fason fasil pou trape sa a soti nan - se konsa olye pou yo gen
ekri soti tou sa 1011111 se - yon fason fasil pou reprezante nan nimewo sa a, ak sa a se pa yon sèl
ke mwen te janbe nan supersection a, men tild (~) se yon lòt operatè lojik.
Ki sa ki ~ fè se li sanble nan reprezantasyon an ti jan.
Kite a pran nenpòt kantite.
Sa a se jis kèk nimewo binè, e ki sa ~ se li jis vire tout Bits yo.
Se konsa, sa a se te yon 1, kounye a yon 0, sa a se yon 0, kounye a yon 1, 010100.
Se konsa, ki nan tout sa ~ fè. Se konsa, 32 a pwal nimewo a - debarase m de sa -
Se konsa 32 a pwal nimewo a 00100000, epi konsa ~ sa a a pwal
nimewo sa a moute isit la ke mwen ANDed 'yon' avèk yo.
tout moun wè sa? Sa a se trè komen, tankou lè ou vle konnen ki
pou bagay sa yo pi ta ke nou ta ka wè, lè nou vle wè si -
oswa nou vle tout bagay, chak seri ti jan yon sèl eksepte pou 1
ou gen tandans ~ nan ti jan a ke nou pa vle mete.
Se konsa, nou pa vle mete nan ti jan 32, konsa nou ~ nan 32.
Oke. Se konsa, nou ka sèvi ak tout moun ki isit la.
Tout dwa, se konsa li gen pwoblèm si ou pa ap fè a, nou pral tou dousman mache sou yo ansanm,
oswa mache sou sa a, se konsa - nan sa a. Mache nan sa a.
Se konsa, nou gen fisèl nou an, e nou vle riban sou chak karaktè nan ki kòd li ansanm ak fè yon bagay sou li.
Se konsa, kouman fè nou riban sou yon fisèl? Kisa pou nou itilize?
Mwen pa pwal fè li sou isit la. Yeah.
Se konsa, mwen gen iterator mwen, li te di li, men ki jan mwen konnen ki jan anpil karaktè yo nan fisèl la?
Strlèn (yo), Lè sa a, mwen + +.
Se konsa, sa m 'te fè isit la se pa pi bon fason nan fè bagay.
nenpòt moun ki konnen poukisa?
Paske w ap tcheke lang nan fisèl la chak fwa sèl.
Se konsa, nou pral vle pou avanse pou pi strlèn, mwen te kapab di moute isit la, int longè = strlèn (yo),
ak Lè sa a, mwen <longè, epi nan ka ou pa te wè l 'devan,
Mwen te kapab fè tou int mwen = 0, longè = strlèn (yo).
Se konsa, sa a se yon ti jan preferab, depi koulye a, mwen te limite sijè ki abòde lan
de longè a varyab nan jis sa a 'pou' riban, olye pou yo deklare l 'devan
e ke li toujou egziste, ak nan ka ou pa t 'pran poukisa sa a, se move,
oswa poukisa orijinal la te move, it's - kòmanse nan la pou riban.
Mwen tcheke kondisyon an. Se mwen menm <longè nan s?
Se konsa, longè a nan s, kite la travay avèk "alo" tan an tout antye.
Se konsa, longè a, h-e-l-l-o. Longè se 5.
Se konsa, mwen = 0, longè se 5, kifè mwen se pa <5, se konsa riban an ap kontinye.
Lè sa a, n 'al jwenn ankò. Nou tcheke kondisyon an. Se mwen menm <longè nan alo?
Se konsa, kite a tcheke longè nan hello. H-e-l-l-o. Sa a se 5; mwen se pa <5, se konsa nou kontinye ankò.
Se konsa, nou kalkile, nou ap konte hello, pou chak iterasyon nan riban an,
menm te panse li pa janm la pral chanje; li te toujou pral fè 5.
Se konsa, nou jis sonje 5 moute devan, e kounye a, tout bagay ap pi byen.
Se konsa, iteration sou fisèl la.
Ki sa nou vle fè pou chak karaktè nan fisèl la?
[Elèv pale, enkonpreansibl]
Yeah. Se konsa, si karaktè a se ki pa alfabetik, lè sa a nou jis vle sote sou li.
Paske nou sèlman pran swen sou lèt alfabetik; nou pa ka tirer yon nimewo.
Se konsa, ki jan nou ka fè sa? Se konsa, kondisyon nou an, Se konsa, si nou vle yon bagay - tcheke si li nan alfabetik.
Se konsa, kouman nou tcheke sa a?
[Elèv] Ou ka jis sèvi avèk fonksyon an se alfa.
Èske ki te gen ladan swa nan sa yo, oswa nenpòt ki gen ladan yo tankou, char.h oswa yon bagay?
Pa kite nan itilize se fonksyon alfa, epi sèvi ak eksplisit a - konsa nou gen nan [mwen], nan
ki se karaktè nan wityèm nan la, sonje ke yon kòd se yon etalaj de karaktè,
Se konsa pèsonaj la wityèm nan s.
Koulye a, si li se yon lèt majiskil, nou konnen li te gen nan yon seri espesifik.
Ak sa ki se ke ranje?
Yeah. Se konsa, si yo [mwen] se ≥ 65, ak s [mwen] se ≤ 90, kisa pou m fè olye?
Yeah. Se konsa, ou ta dwe absoliman pa janm menm bezwen konnen valè yo ASCII nan anyen tout tan.
Pa janm panse a 65 nimewo yo, 90, 97 ak 102, oswa kèlkeswa sa li ye.
Ou pa bezwen - 112 -? Ou pa bezwen konnen sa yo nan tout. Sa a se sa ki mal tou.
Sèlman itilize karaktè yo ak yon sèl quote, konstan quote sèl. Se konsa, 'A' ak mwens pase 90 se 'Z.'
Ak sa a se siyifikativman pi bon - Mwen pa ta renmen konnen nan tèt la nan tèt mwen ke Z se 90.
Mwen konnen nan tèt la nan tèt mwen pou m di 'Z' se kapital Z.
Se konsa, osi lontan ke sa a se nan seri a nan kapital Yon nan kapital Z, oubyen nou ka tcheke pou miniskil,
Oswa si li nan nan seri a ≥ 'yon' ak ≤ z.
Se konsa, sa a, se kondisyon nou yo.
Style a pou ki kote yo mete tout bagay sa yo varye.
Mwen pral fè li tankou sa a.
Koulye a, ki sa nou vle fè?
Nou konnen lèt sa a se yon karaktè, yon karaktè alfabetik.
Se konsa, nou bezwen altène ant si sa a ta dwe kounye a gen yon lèt majiskil oswa yon lèt miniskil.
Ki jan nou kenbe tras nan ki youn nou vle li yo dwe?
[Elèv vwa, enkonpreansibl]
Se konsa, repons lan se wi, men kite m 'tcheke.
Modil 0-2 te di, se te yon sijesyon voye yo jete deyò, epi mwen dakò ak sa.
Eksepte avi ke, tankou - se ka sa a la? Yeah.
Li nan tout moun lòt, men nou pa kapab modil 2 nan mwen, oubyen mwen Mod 2, depi
voye avi sa E se kapital ak 'yon' se miniskil? Men, gen nan yon espas separe yo?
Se konsa, yo pwal santi yo dwe Mod a menm 2, men yo ap ka diferan.
[Kesyon elèv, enkonpreansibl]
Yeah. Se konsa, nou jis ap ale nan kenbe yon konte.
Nou te kapab fè tou ke nan la a si nou te vle; ki ta ka jwenn yon ti kras maladwa
nan la pou deklarasyon riban; Mwen pral mete l 'kanpe isit la.
Se konsa, konte int = kòmanse nan 0.
Se konsa, koulye a, mwen pral konte konbyen karaktè alfabetik nou te gen.
Se konsa, nou ap inevitableman pral konte + + depi nou te jwenn yon lòt karaktè alfabetik.
Men,, pou kounye a ou ap di si konte Mod 2.
Se konsa, sa si konte Mod 2? Oh. Mwen pral fè == 0 pou kounye a.
Nou pwal tou ale sou sa. Se konsa, si konte Mod 2 == 0, Lè sa a, ki sa?
[Elèv yo repons lan, enkonpreansibl]
Se konsa, nou vle li nan fini majuskul.
Gen 2 ka; majuskul ak miniskil yo ka yo 2.
Se konsa, si nou ap nan miniskil nou bezwen fè li majuskul.
Si li nan majuskul nou pa bezwen fè anyen.
Men, ki gen la yon fason - chould te ranvèrse -
ke nou pa menm bezwen yo tcheke si li nan majuskul oswa miniskil?
Kisa nou ka fè sa a toujou asire w ke nou toujou fini nan majuskul?
Se konsa, remake ki sa nou te fè sa pou miniskil 'yon'; sa ki si nou te fè sa menm bagay egzak majuskul A?
Èske majuskul Yon chanjman, oswa si li chanjman nan valè?
Yeah. Se konsa, nenpòt ki lojik lèt ​​majiskil ANDed ak ~ 32 a pwal ki karaktè majuskul menm
paske pou nenpòt ki karaktè majuskul ti jan nan 32nd se pa sa mete.
Se konsa, si nou vle pote pèsonaj la nan [mwen], nou vle li yo vin miniskil oswa majuskul.
Se konsa, si li te miniskil, li se kounye a majuskul, si li te majuskul, li la toujou majuskul, ak sa a, se li.
M 'te di sa nan supersection la: Ou kapab sèvi ak 32 si ou vle, men mwen gen tandans yo pito ap fè' yon '- A,
olye pou yo jis 32 plenn, paske li kapab gen nenpòt ki ti jan ak lòt.
Apre ti jan nan 32, li kapab nenpòt nan sa yo, oswa nou pa ta gen ase
chif ki rive jiska reprezante tout nan pèsonaj yo.
Se konsa, si ou jwenn ti jan an 32, li ka ti jan an 64, li ka ti jan a 128.
Nenpòt nan moun sa Bits ta ka ti jan a ki fè distenksyon ant majuskul ak miniskil.
Mwen pa ta dwe bezwen konnen ke li nan ti jan a 32.
M ka sèvi ak sa a 'yon' - Yon ti jan yo ka resevwa a ki diferan ant de la
san yo pa bezwen fè konfyans sou nimewo ki majik ki se 32.
Se konsa, koulye a, lòt konte te enpè, epi konsa sa m 'vle fè?
[Repons elèv, enkonpreansibl]
[Elèv] Ki sa ki nan sa?
Mwen pral fè l 'nan 1 dezyèm fwa.
Se konsa, kounye a si mwen vle - Mwen vle asire karaktè a se kounye a miniskil,
Se poutèt sa mwen kapab OSWA nan 32, ak 'yon' 32 siyifikasyon - A.
Men, avi, pa rezònman a menm jan ak yon sèl anvan an, ke si
lèt la te deja miniskil, lè sa a ORing pa 32 jis kenbe li miniskil.
Li pa te chanje karaktè orijinal la.
Men koulye a, mwen pa gen pou fè pou evite li di, "Si li se miniskil, jis bliye sou li,
si li nan majuskul, lè sa a chanje li. "
Li nan pi plis pratik yo fè sa.
[Elèv] Èske ke estrateji nan soustraksyon majuskul ki soti nan travay la miniskil si se te pa 32?
Si li te ye a, renmen, 34 oswa yon bagay?
Se konsa, ou bezwen konnen ke diferans ki genyen ant 2 a se -? >> 1 ti jan.
Li ta ka plis pase 1 ti jan, osi lontan ke tout nan Bits yo pi ba a nan pozisyon sa a se menm bagay la.
Se konsa, nou bezwen omwen 26 karaktè - oswa, gen 26 karaktè.
Se konsa, nou bezwen omwen 26 chif ki rive jiska reprezante diferans lan -
Diferans ki genyen ant A ak 'yon' te ka omwen 26,
oswa lòt moun nou pa ta reprezante tout chif yo kapital la.
Sa vle di ke A a, si nou kòmanse nan 1, li pral sèvi ak tout sa yo Bits,
tout moun sa yo 5 Bits premye, ki reprezante tout bagay nan Z.
Se poutèt sa ti jan nan pwochen, oswa ti jan sa a, ti jan nan pwochen se youn nan ki te chwazi nan distenge A ak 'yon.
Sa a se tou poukisa, nan tablo ASCII, gen 5 senbòl separe lèt majiskil ak lèt ​​miniskil.
Depi sa yo se senbòl yo, 5 siplemantè a ki pote moute 32 nan yo te diferans ki genyen ant yo.
[Elèv] Se konsa, nou te ka fè li, paske ASCII a ki fèt ki fason.
Wi. Men, ASCII - diferans lan ta ka tou tou de nan sa yo Bits.
Tankou, si A, te 10000001 ak 'yon' te 11100001 - Mwen bliye, kèlkeswa sa.
Men, si se te sa a, lè sa a nou te ka toujou sèvi ak 'yon' - A.
Se jis kounye a diferans ki genyen ant A ak 'yon' se toujou sa yo Bits 2.
Mwen panse ke yo ekri l la 48. Èske li 32 + 64? Mwen panse li se?
Li ta dwe toujou 2 Bits; chak karaktè sèl, renmen, Z ak z, K ak k,
yo ta toujou gen menm Bits yo egzak mete eksepte pou 2 moun ki miyèt moso.
Se konsa, osi lontan ke sa a, se toujou vrè, kèlkeswa si nou ap sèvi ak ASCII oswa kèk sistèm lòt,
osi lontan ke gen nan sèlman yon nimewo seri Bits ki diferan pou chak karaktè,
Lè sa a, ki ap travay amann.
Se jis ke 32 te mete kanpe paske li nan yon sèl nan premye nou te ka posib sèvi ak. >> Cool.
Mwen gen tandans yo pito, nan ka ou pa t 'wè, si blòk la a se sèlman yon sèl liy,
ou ka debarase m de aparèy òtopedik yo Curly; Se konsa, mwen gen tandans yo pito fè sa.
Epitou, ou konnen ki jan nou ka fè bagay sa yo tankou yo [mwen] + 1 =?
Ou kapab tou fè yo [mwen] lojik AK = 32.
Ak lojik OSWA = 32.
Epitou, konte Mod 2 == 0.
Se konsa, sonje ke - Mwen pa pral ekri li - nenpòt valè ki pa zewo se vre, epi 0 se fo.
Se konsa, "si konte Mod 2 == 0" se menm bagay la kòm li di: "si pa konte Mod 2."
Mwen pwobableman ta jis ranvèse liy la, li di, "si konte Mod 2,
OSWA 1, lòt AK 1, "pou m 'pa t' bezwen an nan" pa la. "
Men, sa a ap travay jis kòm byen.
Ak ki lòt bagay mwen ka fè isit la?
Ou te kapab konbine yo ak tèrsyèr si ou te vle, men Lè sa a, ki ta jis fè bagay sa yo messier
ak pwobableman pi difisil yo li, se konsa nou pa pral fè sa.
Nenpòt moun ki gen nenpòt ki lòt sijesyon?
Se ke tout pwoblèm nan te mande pou? Oh yeah.
Se konsa, debarase m de liy sa yo vid, kounye a nou ap enprime f,% s yo te youn a pou strings,
Nou pral enprime f, s.
Koulye a, kite nan kouri li. Èske m 'fè anyen ki mal?
Sa se yon \ "; mwen vle yon n.
Oke. Koulye a, nou pral kouri li. Li ap pwobableman rele nan m '.
Strlèn se nan string.h.
Se konsa, sa a se bagay ki bèl sou sonnen se li fè w konnen kisa li nan nan,
olye pou yo GCC ki jis di, "Hey, ou bliye yon bagay, mwen pa konnen sa sa te pase."
Men, sa a pral di m ', "Ou vle di ke yo gen ladan yo string.h."
Se konsa, mwen pa t 'vit pou anyen, se konsa li pa di anyen.
Men, nou pral fè egzanp yo, "Mèsi 4 ajoute la".
Ki sanble dwat. Hooray.
Se konsa, retounen nan prensipal ou, mwen prèske pa janm fè li.
Li nan si ou vle. Ak prensipal se fonksyon a sèlman pou ki li se si ou vle.
Si ou pa retounen anyen nan men prensipal yo, li nan sipoze ke ou vle di ke yo retounen 0.
Kesyon?
Oke. Se konsa, kounye a pwoblèm nan dezyèm fwa.
"Sonje nan konferans dezyèm 2 semèn a ki échanjé valè 2 varyab 'si yo pase
sa yo varyab 2 a yon fonksyon (menm si yo rele swap) pa egzakteman travay, omwen pa san 'endikasyon.' "
Ak inyore endikasyon jiskaske nou rive ladan yo.
Nou vle swap 2 varyab; nou pa lè l sèvi avèk yon fonksyon fè li.
Nou toujou ap pral fè li nan prensipal tankou li di.
Men, yo sèvi ak sa yo varyab 2, nou pa vle sèvi ak yon varyab tanporè.
Gen 2 fason yo fè sa.
Ou kapab fè l lè l sèvi avèk operatè tradisyonèl binè ou a.
Se konsa, nenpòt moun ki konnen yon fason rapid ak sal pou fè sa?
Li ta ka aktyèlman pran yon minit pou panse. Si mwen gen -
Mwen pral mete pwoblèm nan, tankou yo mande. Se konsa, si mwen gen 2 varyab, A, ki se jis yon nonb antye relatif
yo ke yo ban m ', ak B varyab sòm, ki se yon lòt nonb antye relatif ke mwen bay yo.
Se konsa, si mwen gen sa yo varyab 2, koulye a, mwen vle swap yo.
Tradisyonèl la, lè l sèvi avèk operatè regilye binè ou a, mwen vle di, tankou +, -, ÷.
Pa lojik operatè ki aji sou binè.
Se konsa, lè l sèvi avèk -, +, ÷, ak tout moun sa yo.
Nou te ka boukante nan fè yon bagay tankou yon = a + b, ak b = a - b, yon = yon - b.
Se konsa, saniti tcheke, ak Lè sa a, nou pral wè pou ki sa travay.
Se pou nou di yon = 7, b = 3, Lè sa a, a + b a pwal 10.
Se konsa, nou ap kounye a etabli yon 10 =, ak Lè sa a, n ap fè b = yon - b.
Se konsa, n ap fè b = yon - b, ki a pwal 7yèm, ak b = yon - b ankò,
oswa yon = yon - b. Ki a pwal 10 - 7 ki se 3.
Se konsa, koulye a, yo kòrèkteman, 'yon', te 7 b te 3, e kounye a, b se 7 ak 'yon' se 3.
Se konsa, ki kalite fè sans; 'yon' se konbinezon an nan 2 chif yo.
Nan pwen sa a, 'yon' se konbinezon an, ak Lè sa a, nou ap soustraksyon soti b orijinal la,
ak Lè sa a, nou ap soustraksyon konnen ki sa ki te orijinal la 'yon.
Men, sa pa travay pou tout nimewo yo.
Pou wè sa a, se pou yo konsidere yon sistèm; pou nou anjeneral panse a nonm antye relatif kòm 32 miyèt moso.
Se pou nou travay sou yon bagay ki sèlman tankou 4 miyèt moso.
Èspere ke mwen vini ak yon bon egzanp kounye a.
Se konsa, mwen konnen, sa a pral fasil.
Se pou nou di nimewo 2 nou yo se 1111, ak 1111; pou nou ap nan binè kounye a.
Nan desimal reyèl, si ou vle panse a li fason sa a, yon = 15 epi b = 15.
Se konsa, nou espere, apre nou fin boukante yo - yo pa menm gen yo dwe nimewo yo menm,
Men, mwen te fè li fason sa a.
Se pou nou fè yo pa chif yo menm. Se pou nou fè 1111 ak 0001.
Se konsa, yon = 15 epi b = 1.
Apre nou boukante yo, nou espere 'yon' yo dwe 1 ak b yo dwe 15.
Se konsa, premye etap nou an se yon = yon + b.
Nimewo nou yo se sèlman 4 Bits lajè, se konsa 'yon, ki se yon 1111, + b, ki se 0001,
ki pral yo te fini 10000, men nou sèlman gen 4 miyèt moso.
Se konsa, kounye a yon = 0.
Epi, koulye a nou vle mete b = yon - b - aktyèlman, sa a toujou ap travay deyò parfe.
yon = yon - kite a wè si sa a travay yo deyò parfe - b.
Se konsa, Lè sa a, b = 0 - 1, ki ta dwe toujou 15, ak Lè sa a, yon = yon - b, ki ta dwe 1.
Petèt sa a fè travay la.
Mwen santi mwen tankou gen yon rezon ki fè li pa travay lè l sèvi avèk regilye.
Oke, kidonk ap travay sou sipozisyon an ke li pa travay avèk operasyon binè regilye,
epi mwen pral gade pou - Mwen pral Google yo wè si se sa ki vre.
Se konsa, nou vle fè l 'lè l sèvi avèk lojik operatè yo, ak endis a isit la se or.
Se konsa, entwodwi or (^) si ou pa t 'wè li ankò.
Li nan, ankò, yon operatè lojik konsa li aji ti jan pa ti kras, ak it's -
Si ou gen Bits yo 0 ak 1, lè sa a sa a pral 1.
Si ou gen Bits yo 1 ak 0, li ap 1, ou gen Bits yo 0 ak 0 li pral 0,
epi si w gen Bits yo 1 ak 1 li ap 0.
Se konsa, li tankou OSWA. Si youn nan Bits yo yo se verite, li nan 1, men kontrèman ak OSWA, li pa ka tou de Bits ki yo se verite.
OSWA ta sa a dwe 1, or ta gen sa a dwe 0.
Se konsa, nou ap ale nan vle sèvi ak or isit la.
Reflechi sou li pou yon minit; mwen pral Google.
Oke, ou pa ka li sa; mwen kounye a sou paj la algorithm swap or.
Èspere ke sa a pral eksplike poukisa mwen can't -
Sa a se egzakteman algorithm a ke nou jis te fè sa.
Mwen toujou pa wè poukisa - Mwen dwe te jis pran yon egzanp move,
men ka sa a kote 'yon' te rive yo vin 0, apre jwenn a 5 Bits, pou kounye a 'yon' se 0,
ki se sa yo rele "nonb antye relatif debòde."
Dapre Wikipedia, "Kontrèman ak swap la or, sa a varyasyon mande pou li itilize kèk metòd
garanti ke x + y pa lakòz yon debòde nonb antye relatif. "
Se konsa, sa a fè gen pwoblèm; sa a te nonb antye relatif debòde, men mwen te fè yon bagay ki mal.
Mwen pa si. M ap eseye vini ak yon lòt.
[Elèv] Bon, se pa debòde nonb antye relatif lè w ap eseye mete yon nimewo nan la
pi gwo pase kantite a Bits ou te resevwa lajan?
Yeah. Nou gen 4 miyèt moso. That's - nou te gen 4 Bits, nou lè sa a eseye ajoute 1 sou li, pou nou fini ak 5 miyèt moso.
Men, ti jan nan senkyèm jis vin koupe, yeah.
Li ta ka aktyèlman -
[Elèv] ki voye ou jete yon erè, oswa fè yo ki - ki ta voye jete yon erè?
No Se konsa, gen nan pa gen erè. Lè ou jwenn li nan yon nivo tout pèp, yon ti jan espesyal
yon kote se mete ki t'ap di: te gen yon debòde, men nan C ou kalite jis pa fè fas ak sa.
Ou aktyèlman pa ka fè fas ak li sof si ou sèvi ak enstriksyon asanble espesyal nan C.
Se pou nou panse osijè de swap or.
Apre sa, mwen panse ke atik la Wikipedia ta ka te tou te di ke -
Se konsa, li tou pote moute modilè aritmetik, se konsa Mwen devine mwen te ye a, nan teyori, ap fè modilè aritmetik
lè m 'te di ke 0 - 1 se 15 ankò.
Se konsa, ki ta ka aktyèlman - sou yon processeur regilye ki fè 0 - 1 = 15.
Depi nou fini a 0, n ap retire 1, se konsa Lè sa a, li jis anvlòp tounen otou nan 1111.
Se konsa, sa a algorithm ta ka aktyèlman ap travay, a + b, yon - b, b - yon; ke sa ta kapab amann. La a
Men, gen nan kèk processeurs ki pa fè sa, se pou nou li pa ta dwe amann nan sa yo moun espesifik.
Swap or pral travay sou nenpòt ki processeur. Oke.
Lide a se ke li nan sipoze menm bagay la tou, menm si.
Ki kote nou yo ap itilize or yon jan kanmenm jwenn enfòmasyon nan tou de nan 1 nan varyab yo,
ak Lè sa a, rale mete deyò enfòmasyon an nan varyab endividyèl yo ankò.
Se konsa, nenpòt moun ki gen lide / repons lan?
[Repons elèv, enkonpreansibl]
Se konsa, sa a yo ta dwe travay, epi tou li, or se komitatif.
Kèlkeswa ki lòd nimewo sa yo 2 rive yo nan moute isit la,
sa a rezilta a pwal menm bagay la.
Se konsa, yon ^ b se B → A.
Ou ta ka wè tou sa a ekri tankou yon ^ = b, b ^ = yon, yon ^ = b ankò.
Se konsa, sa a se dwa, ak wè poukisa sa a ap travay, panse a Bits yo.
Lè l sèvi avèk yon nimewo smallish, kite la di 11001, ak 01100.
Se konsa, sa a se 'yon'; sa a se b.
Se konsa, yon ^ = b.
Nou ap pral mete = 'yon' or la nan 2 bagay sa yo.
Se konsa, 1 ^ 0 se 1; 1 ^ 1 se 0; 0 ^ 1 se 1, ak 0 ^ 0 se 0; 1 ^ 0 se 1.
Se konsa, 'yon,' Si ou gade nan nimewo a desimal, li te pral fè -
ou pa ap pral wè anpil nan yon relasyon ant orijinal 'yon' la ak nouvo 'nan yon,'
men gade nan Bits yo, 'yon' se kounye a tankou yon may nan enfòmasyon ki
nan tou de orijinal 'yon' a ak b orijinal la.
Se konsa, si nou pran B → A, nou wè ke nou pral fini nan orijinal la 'yon.
Men, si nou pran orijinal 'yon' ^ nouvo 'nan yon,' nou wè nou fini nan b orijinal la. A
Se konsa, (yon ^ b) ^ b = 'yon. Orijinal la
Ak (yon ^ b) ^ yon = b orijinal la.
Gen - yon lòt fason pou wè sa a se or anyen tèt li se toujou 0.
Se konsa, 1101 ^ 1101, tout Bits yo pwal gen menm bagay la.
Se konsa, gen pa janm k ap pase yo dwe yon ka kote 1 se yon 0 ak lòt la se 1.
Se konsa, sa a se 0000.
Menm bagay la ak sa a. (Yon ^ b) ^ b se tankou yon ^ (b ^ b).
(B ^ b) a pwal 0; yon ^ 0 se jis pral yo dwe 'yon,' depi tout Bits yo se 0.
Se konsa, yo menm sèlman ki pral fè kote 'yon' te orijinal yon 1 - te gen moun.
Ak lide nan menm isit la; Mwen sèten li la tou komitatif.
Yeah. Mwen t 'di anvan ke li te komitatif.
^ 'Nan yon,' epi li asosyatif, pou kounye a (b ^ a) ^ yon.
E nou ka fè b ^ (yon ^ a).
Se konsa, ankò, nou jwenn b orijinal la.
Se konsa, 'yon' se kounye a konbinezon an nan 'yon' b ak yo ansanm.
Sèvi ak nouvo Combo nou an 'yon' nou di b = Combo 'yon' ^ b orijinal la, nou jwenn orijinal la 'yon.
Epi, koulye a yon Combo = 'yon' ^ nouvo b la, ki te orijinal la - oswa ki se kounye a ki sa ki te 'yon' oswa b.
Sa a ka sa a desann isit la. Sa a se = b, fin vye granmoun b.
Se konsa, kounye a tout bagay se tounen nan lòd a échanges.
Si nou aktyèlman gade Bits yo, b = yon ^ b, ki pral or sa yo 2,
ak repons lan a pwal sa a, ak Lè sa a, yon = yon ^ B se XORing sa yo 2 ak repons lan se sa a.
Kesyon? Oke. Se konsa, yon sèl la pase a se yon ti jan siyifikativman pi difisil.
[Elèv] Mwen panse ke li te gen yon kesyon sou li. >> Oh, regrèt.
[Elèv] Ki sa ki nan aktyèlman pi vit? Si ou itilize sa a or, oswa se li si ou deklare yon varyab nouvo?
Se konsa, sa se aktyèlman pi vit, deklare yon varyab nouvo oswa lè l sèvi avèk or swap?
Repons lan se, nan tout chans, yon varyab tanporè.
E ke se paske yon fwa li konpile desann - pou nan nivo asanble,
gen nan pa gen bagay tankou varyab lokal oswa nenpòt varyab tanporè oswa nenpòt nan bagay sa a.
Yo ap jis tankou - gen nan memwa, e gen rejis.
Rejis yo ki kote bagay sa yo ap aktivman pase.
Ou pa ajoute 2 bagay sa yo nan memwa; ou ajoute 2 bagay sa yo nan rejis.
Epi ou pote bagay sa yo nan memwa nan rejis Lè sa a, ajoute yo,
ak Lè sa a, ou ta ka mete yo tounen nan memwa yo, men tout aksyon an k ap pase nan rejis.
Se konsa, lè w ap itilize pou yon ti tan apwòch la varyab, anjeneral, sa k ap pase se
nimewo sa yo 2 yo deja nan rejis.
Lè sa a, soti nan pwen sa a sou li a, aprè ou fin échanges yo,
sa ap jis kòmanse lè l sèvi avèk register lòt la.
Nenpòt kote ou te lè l sèvi avèk b, sa ap jis itilize register la ki te deja estoke 'yon.
Se konsa, li pa bezwen fè anyen pou aktyèlman fè swap la. Yeah?
[Elèv] Men, li tou pran memwa plis, dwa?
Li pral sèlman pran plis memwa si li bezwen nan magazen varyab sa a yon ti tan.
Renmen si ou pita itilize varyab sa a pou yon ti tan ankò yon kote,
Lè sa a, - oswa ou asiyen yon bagay ak sa yo ki varyab tanporè.
Se konsa, si nan nenpòt ki pwen nan tan 'yon,' b nan tanporèr yo gen valè distenk oubyen yon bagay,
Lè sa a, li la pral gen kote distenk nan memwa, men li se vre ke
genyen anpil moun ki varyab lokal ki pral sèlman egziste nan rejis.
Nan ka sa a, li pat janm konn mete nan memwa, ak sa ou pa janm ap gaspiye memwa.
Oke. Kesyon pase a se yon ti jan plis.
Se konsa, isit la, nan aparèy sa a CS50, gen yon diksyonè.
Ak rezon an pou sa a se paske [?? B66] se yon korektè période kote ou pral ekri
lè l sèvi avèk tab regle oswa eseye oswa kèk estrikti done.
Ou ap pral ekri yon korektè période, epi ou ap pral lè l sèvi avèk sa a diksyonè fè sa.
Men, pou pwoblèm sa a, nou menm ki pral gade jiska wè si yon mo sèl se nan diksyonè a.
Se konsa, olye pou yo estoke diksyonè a tout antye nan kèk estrikti done
ak Lè sa a, kap sou plis pase yon dokiman tout yo wè si anyen nan mal ekri,
nou jis vle jwenn 1 mo. Se konsa, nou ka jis analysis sou diksyonè a tout antye
epi si nou pa janm jwenn pawòl Bondye a nan diksyonè la an antye, Lè sa a, li pa t 'an la.
Si nou analysis sou diksyonè a tout antye ak wè pawòl Bondye a, lè sa a nou ap bon, nou jwenn li.
Li di isit la ke nou vle kòmanse gade nan dosye-manyen fonksyon C a,
depi nou vle li diksyonè a,
Men, mwen pral ba allusion a isit la kòm ki fonksyon ou ta dwe panse a.
Mwen pral ekri yo sou Espas.
Se konsa, yo menm prensipal ou pral vle gade nan yo f louvri, epi lè sa a, inevitableman, f fèmen,
ki pral ale nan fen pwogram ou an, ak f f eskanè.
Ou kapab tou itilize f li, men pwobableman ou pa vle
paske men sa - ou pa fini ki bezwen sa.
F eskanè f se ki sa ou ap pral lè l sèvi avèk analysis sou diksyonè a.
Se konsa, ou pa bezwen kòd moute solisyon an, jis eseye ak renmen pseudo-kòd wout ou
nan yon solisyon, ak Lè sa a, nou pral diskite sou li.
Ak aktyèlman, depi mwen deja ba ou sa yo, si ou ale nan yon tèminal oswa koki aparèy ou an,
Mwen ta - Mwen konn - si ou pa t 'wè ankò, mwen pa konnen si ou te fè nan klas yo,
men nonm, se konsa paj sa yo moun, yo trè itil pou gade nan bèl anpil fonksyon nenpòt.
Se konsa, mwen ka fè, renmen, f moun, eskanè f.
Sa a se kounye a info a sou fanmi an f eskanè nan fonksyon.
Mwen te kapab fè tou f nonm, louvri, epi ki pral ban m 'detay yo nan sa.
Se konsa, si ou konnen ki sa fonksyon w ap itilize, oswa w ap li kòd
epi ou wè kèk fonksyon epi w ap tankou, "Ki sa sa fè?"
Jis ki fonksyon nonm non.
Gen yon koup nan egzanp etranj ki kote ou ka gen yo di
renmen. nonm 2 ke non fonksyon, oswa moun 3 ke non fonksyon,
men ou gen sèlman fè sa si non fonksyon moun pa rive nan travay premye fwa a.
[Elèv] Se konsa, mwen ap li paj la nonm pou ouvè, men mwen m 'toujou konfonn sou ki jan yo itilize li ak pwogram nan.
Oke. Yon anpil nan paj sa yo moun yo gen mwens pase itil.
Yo ap plis itil si ou deja konnen sa yo fè
ak Lè sa a, ou jis bezwen sonje lòd la agiman yo oswa yon bagay.
Oswa yo ka ba w yon rezime jeneral, men kèk nan yo ki yo trè mal.
Menm jan ak f eskanè f, tou. Li ba ou enfòmasyon an pou tout moun sa yo fonksyon,
ak 1 liy desann isit la k ap pase nan di, "F eskanè f li soti nan pwen a fisèl oswa kouran."
Men, f louvri. Se konsa, kouman nou ta sèvi ak f louvri?
Lide a nan yon pwogram ki bezwen fè dosye mwen / O se ke
ou premye bezwen louvri dosye a ou vle fè bagay sa yo ak, ak inevitableman,
li bagay sa yo soti nan ki dosye a epi li fè lòt bagay ak yo.
F louvri se sa nou itilize yo louvri dosye a.
Bagay la nou jwenn tounen konsa, sa ki dosye nou vle louvri, li bay la nou menm nou -
nan isit la li di "/ itilizatè / pataje / dikt / mo yo."
Sa a se dosye a ke nou vle louvri, epi nou vle louvri li -
nou dwe fòmèlman presize si wi ou non nou vle louvri li pou li oswa pou si nou vle louvri li ekri.
Genyen nan yon koup la konbinezon ak lòt bagay, men nou vle louvri sa a pou lekti.
Nou vle li nan dosye a.
Se konsa, sa ki fè sa a tounen? Li retounen yon etwal dosye (*),
epi mwen pral jis montre tout sa ki nan f a varyab, se konsa *,
ankò, li nan yon konsèy, men nou pa vle fè fas ak endikasyon.
Ou ka panse a f kòm, f se kounye a varyab la w ap ale pou itilize pou reprezante dosye a.
Se konsa, si ou vle li nan dosye a, ou li soti nan f.
Si ou vle fèmen dosye a, ou fèmen f.
Se konsa, nan fen pwogram lan lè nou inevitableman vle fèmen dosye a, kisa pou nou fè?
Nou vle fèmen f.
Se konsa, kounye a fonksyon an dosye dènye ke nou ap ale nan vle itilize se eskanè f, f eskanè f.
Ak sa ki sa li fè se li analysis sou dosye a ap chèche pou yon modèl matche.
Gade nan paj la nonm isit la, nou wè int f eskanè f, inyore valè a retou pou kounye a.
Agiman an premye se kouran an * dosye, se konsa agiman an premye nou ap pral vle pase se f.
Nou ap analysis sou f.
Agiman Dezyèm se yon fisèl fòma.
Mwen pral ba ou yon kòd fòma kounye a.
Mwen panse ke nou rive di, 127s \ n, yon anpil nan sa a, se nesesè.
Lide a nan ki sa sa fisèl fòma se, se ou ka panse a f eskanè kòm opoze a nan f ekri ak lèt ​​detache.
Se konsa, ekri ak lèt ​​detache f, f ekri ak lèt ​​detache nou menm tou nou sèvi ak sa a ki kalite paramèt fòma,
men nan f ekri ak lèt ​​detache sa n ap fè se - Se pou yo gade nan yon ekivalan.
Se konsa, enprime f, ak gen nan aktyèlman tou f ekri ak lèt ​​detache f, kote agiman an premye a pwal f.
Lè ou enprime f, nou te ka di yon bagay tankou, "ekri ak lèt ​​detache 127s \ n" ak Lè sa a, si nou pase l kèk kòd,
li pral enprime sa a kòd li ansanm ak Lè sa a, yon liy nouvo.
Ki sa ki vle di 127, mwen trè si, men mwen pa janm te limite tèt mwen sou li,
Ou pa ta ka menm bezwen di '127 'nan f nan ekri ak lèt ​​detache,
men sa li vle di se enprime premye 127 karaktè yo.
Se konsa, mwen trè asire w ke nan ka sa a. Ou ka Google pou sa.
Men, nan youn nan pwochen mwen prèske pozitif sa vle di ke.
Se konsa, sa a se enprime premye 127 karaktè yo, ki te swiv pa yon liy nouvo.
F eskanè f kounye a, olye pou yo gade nan yon varyab ak enprime li,
li pral fè yon gade nan kèk fisèl, epi estoke modèl la nan varyab la.
Se pou nou sèvi ak aktyèlman f eskanè nan yon egzanp diferan.
Se konsa, kite a di nou te gen kèk Int, x = 4,
epi nou te vle kreye yon fisèl ki fèt ak - te vle kreye fisèl la
sa ki te tankou, sa a ap vini pita anpil,
yon bagay ki jis tankou 4.jpg.
Se konsa, sa a ta kapab yon pwogram kote w ap gen kontwa sòm,
rapò kantite kontrekare mwen, epi ou vle pou konsève pou yon pakèt moun sou imaj yo.
Se konsa, ou vle sove i.jpg, kote mwen gen kèk iterasyon nan riban ou a.
Se konsa, kouman nou fè sa a fisèl pou sa JPEG?
Si ou te vle enprime 4.jpg, nou te ka jis di f ekri ak lèt ​​detache, d.jpg%,
ak Lè sa a, li ta enprime pou sa JPEG.
Men, si nou vle sove 4.jpg nan fisèl, nou itilize f eskanè.
Se konsa, fisèl la - aktyèlman nou can't - karaktè, Char a, kite yo ale 100.
Se konsa, mwen jis te deklare kèk etalaj nan 100 karaktè,
ak sa a, se sa n ap inevitableman yo pral estoke ki JPEG pous
Se konsa, nou ap ale nan sèvi ak eskanè f, ak fòma a, ki jan nou ta di d.jpg%
yo nan lòd yo enprime 4.jpg, fòma sa a a pwal d.jpg%.
Se konsa, fòma a se d.jpg%, sa nou vle ranplase d% ak se x,
e kounye a, nou bezwen nan magazen ki fisèl kèk kote.
Ak ki kote nou pral nan magazen sa a fisèl se li nan s la etalaj.
Se konsa, apre liy sa a nan kòd, s, si nou enprime f, s% nan yo nan varyab,
li pral enprime 4.jpg.
Se konsa, f eskanè f se menm bagay la kòm eskanè f, eksepte kounye a li nan kap sou sa a ranpli
pou sa ki nan magazen li nan s.
Sa a ki sa agiman an dènye a pwal.
Nou vle nan magazen - "fanmi f Scan nan fonksyon analiz nan tou de dapre fòma kòm te eseye pi ba a.
Si nenpòt yo estoke nan pwen yo kote ou ta ka retounen - "
Non, nou ta ka bon. Kite m 'panse ke pou yon dezyèm fwa.
Se konsa, eskanè f pa bay - ki sa èk la se fonksyon a ki fè sa?
Se konsa, eskanè f se pa sa pral pran yon nonb antye relatif ak fè dot jpg.
Li nan ale nan [mumbles].
Save int varyab nan fisèl int C.
Ki sa ki se sa a varyab, oswa ki sa ki fonksyon sa a rele?
Wi. That's - repons lan se wi. Se konsa, sa m 'te defini avan ou te nan ekri ak lèt ​​detache f,
ki - ki fè sans pi plis, poutèt sa mwen te di li te pi plis tankou f ekri ak lèt ​​detache.
Scan f se toujou kalite tankou f ekri ak lèt ​​detache, men yo f ekri ak lèt ​​detache ki pral analysis li sou
epi ranplase varyab yo e kounye a, mete yo nan yon kòd.
Olye pou yo enprime li, li estoke l 'nan yon fisèl.
Se konsa, inyore ke antyèman. Ou ka toujou panse a dvi a fòma kòm tankou sa yo ki an f ekri ak lèt ​​detache.
Se konsa, koulye a, si nou te vle fè bagay la 4.jpg, nou ta fè la f ekri ak lèt ​​detache, x sa a.
Se konsa, sa eskanè f ap mache - sa ki te kesyon ou pral fè?
[Elèv] mwen jis konfonn sou ki sa nou ap eseye fè sa ki dwat isit la
ak ki JPEG. Èske ou ka eksplike ke 1 plis tan?
Se konsa, sa a te - li a relevent mwens f eskanè f kounye a; èspere ke, li pral mare tounen nan kèk kalite fason.
Men, sa m 'okòmansman te lide yo montre te - sa a se aktyèlman dirèkteman enpòtan ki sa yo [?? F5]
Ou ap pral lè l sèvi avèk yo f ekri ak lèt ​​detache, ki kote, di nou gen 100 imaj,
, epi ou vle li, 1.jpg imaj 2.jpg, 3.jpg.
Se konsa, yo nan lòd yo fè sa, ou bezwen f louvri, epi Lè sa a, ou gen yo pase nan fisèl la ke ou vle louvri.
Se konsa, nou ta vle louvri 1.jpg; nan lòd yo kreye fisèl la ki se 1.jpg,
f ekri ak lèt ​​detache nou fè a nan% d.jpg-nou pa t 'fè pou int mwen 0 =.
mwen <40, mwen + +.
Se konsa,% s f ekri ak lèt ​​detache d.jpg nan mwen.
Se konsa, apre liy sa a, kounye a varyab la oswa s la etalaj ki pral 1.jpg.
Oswa, 0.jpg, 1.jpg, 2.jpg. Se konsa, nou ka louvri, nan vire, chak imaj pou lekti.
Se konsa, ke se sa ki nan enprime f fè. ou wè sa a enprime f se kounye a ap fè?
[Elèv] Oke, kidonk li a ap pran - li kreye yon fisèl, something.jpg, ak Lè sa a, estoke li.
Wi. Li kreye - sa a se yon lòt fisèl fòma, jis tankou f eskanè ak f ekri ak lèt ​​detache,
kote li mete anndan tout nan varyab yo nan agiman, dezyèm lan, ta kapab nan kòm opoze a mwen.
Petèt - Mwen vle di, ki nan ka a. Men, tou sa lòd la nan agiman se.
Li nan ale nan insert tout nan varyab yo nan fisèl la fòma
ak Lè sa a, estoke nan zòn de defans nou yo; nou rele ke yon zòn de defans, li nan kote n ap estoke fisèl la.
Se konsa, nou estoke andedan nan fisèl la kòrèkteman-formate, li te gen d% te ranplase ak 4.
[Elèv] Se konsa, si nou te fè sa sa a, se f nan varyab jis yo pral transfere?
Wi. Se konsa, nou ta dwe fèmen f orijinal la anvan yo fè sa a.
Men, - ak Lè sa a, tou, si te gen pa yon f louvri moute isit la, Lè sa a, nou ta bezwen di -
Yeah. Men, li ta louvri yon santèn dosye diferan.
[Elèv] Men, nou pa ta kapab gen aksè a oswa - oke.
Oke. Se konsa, eskanè f, f eskanè f, se kalite lide la menm,
men olye pou yo, olye pou yo estoke l 'nan yon fisèl, li nan plis tankou ou se kounye a
ale sou yon batay ak modèl matche kont ki fisèl epi estoke rezilta yo nan varyab.
Ou kapab sèvi ak eskanè f analizan sou yon bagay tankou 4.jpg, epi estoke 4 nan nonb antye relatif nan x int sòm.
Sa a ki sa nou kapab itilize f eskanè pou li a.
F eskanè f ki pral fè sa nan liy lan lòd.
Mwen aktyèlman trè asire w sa a se sa bibliyotèk la CS50 fè.
Se konsa, lè ou di, "jwenn Int," li nan eskanè f-egziste sou - eskanè f se yon fason a ou jwenn opinyon itilizatè.
F eskanè f ki pral fè menm bagay la, men lè l sèvi avèk yon fichie nan yon analysis sou.
Se konsa, isit la, nou ap analysis sou sa a dosye.
Modèl la nou yo ap eseye matche ak se kèk fisèl ki se 127 karaktè long
ki te swiv pa yon liy nouvo
Se konsa, mwen sèten nou te ka menm jis di "matche ak nan," depi nan diksyonè a
nou rive gen, nou ap garanti pa gen okenn mo se ke long,
epi tou li f eskanè f, mwen panse ke, yo pral kanpe nan liy nan nouvo pa gen pwoblèm sa.
Men, nou pral gen ladan yo liy lan nouvo nan match la, ak -
[Elèv] Si nou pa t 'gen ladan yo liy lan nouvo, pa t' vle li jwenn pati nan yon mo?
Li - chak - gade nan diksyonè a -
Se konsa, nan diksyonè a, sa yo, se tout mo nou an.
Chak se yon sèl sou yon liy nouvo.
F nan eskanè ki pral ranmase mo sa a.
Si nou pa gen ladan yo liy lan nouvo, Lè sa a, li posib pou f nan eskanè pwochen yo pral jis li liy nan nouvo.
Men, ki gen ladan nouvo liy Lè sa a, yo pral jis inyore liy nan nouvo.
Men, nou pa janm ap jwenn yon pati nan yon mo, paske nou yo toujou lekti jiska yon liy nouvo, pa gen pwoblèm sa.
[Elèv] Men, sa ki si ou rechèch pou pawòl Bondye a "cissa," tankou cissa.
Eske li jwenn ke, epi w'a di li nan yon match?
Se konsa, isit la nou - li pral li nan - sa a se aktyèlman yon pwen bon.
Nou pa janm ap sèvi ak aktyèl la - pawòl Bondye a nou ap chèche pou se lòd agiman an premye liy.
Se konsa, fisèl, mo = argv 1.
Se konsa, fisèl la nou ap chèche pou se argv 1.
Nou pa ap chèche pou yon mo nan tout nan f eskanè nou an.
Ki sa nou t ap fè ak eskanè f a ap vin chak mo nan diksyonè a,
ak Lè sa a, yon fwa nou gen mo sa a nou pral itilize strkan yo konpare yo.
Nou pral konpare pawòl Bondye nou an ak sa nou fèk li pous
Se konsa, inevitableman, nou ap ale nan fini fè yon pakèt moun sou eskanè FS
jiskaske li jis pou k ap pase ki eskanè f ap retounen -
li pral retounen yon sèl, osi lontan ke li te matche yon nouvo mo,
epi li pral retounen yon lòt bagay le pli vit ke li te echwe pou pou matche ak mo a.
Nou ap li sou diksyonè la an antye, estoke liy pa liy chak mo nan s a varyab.
Lè sa a, nou ap konpare pawòl ak nan, epi si konparezon an == 0,
strkan k ap pase nan pote 0 si yo te yon match fè fè yo.
Se konsa, si li te 0, lè sa a nou ka enprime f, matche,
oswa mo se nan diksyonè, oswa kèlkeswa sa ou vle enprime f.
Lè sa a, - nou pa vle f fèmen sou yo ak sou ankò.
Sa a se ki kalite bagay nou vle fè a, epi nou pa yo se jis kap chèche mo nan diksyonè a.
Se konsa, nou ka fè sa, si nou te vle gade pou modèl yo, cissa, tankou ou te di anvan,
si nou te vle gade pou ke modèl, lè sa a li ta rate nan ka a
paske sa a, se pa aktyèlman yon mo, men se yon sèl nan mo yo nan diksyonè a k ap pase nan gen sa nan li.
Se konsa, li ta matche ak mo sa a, men sa a gwoup ki sot nan pawòl Bondye a se pa yon mo tèt li.
Men se pa sèlman ki jan n ap sèvi ak li, nou ap li nan chak mo
ak Lè sa a, konpare pawòl la nou genyen ak mo sa a.
Se konsa, nou toujou ap konpare pawòl plen.
Mwen ka voye voye soti solisyon yo fini pita.
Sa a se kalite prèske repons kòrèk la, mwen panse ke.
[Kòmantè elèv, enkonpreansibl]
Oh, mwen te debarase m de ki ye anvan an? Char a, mwen devine nou te di 127 - Mwen bliye sa ki pi gwo a se.
Nou pral jis fè 128; konsa koulye a yo se lontan ase.
Nou pa bezwen enprime anyen.
Nou ap tou ale nan vle gen yo fèmen dosye nou an, e ke yo ta dwe sou repons kòrèk la.
CS50.TV