[Powered by Google Translate] Problema Taqsima Set 2: Edition Hacker
Rob Bowden, Università ta 'Harvard
Dan huwa CS50. CS50.TV
Allura, jien Rob. I'ma anzjan fl Kirkland. Dan huwa tielet sena tiegħi TFing CS50.
Hija l-ewwel darba li aħna qegħdin jinbidlu mis-sezzjoni tradizzjonali lecture stil,
fejn aħna biss tip ta 'reviżjoni dak li ġara fil-lecture u mbagħad inti guys jistaqsu mistoqsijiet,
issa li jkunu ħafna aktar problema bbażati fuq, fejn nużaw Ispazji, u -
Oh, hekk l-idea hi li tmur din ir-rabta I bagħtitlek u mbagħad tkun taf tkun fl-Ispazju tiegħi.
Hawn xi ħadd li ma jkollhom laptop? Okay.
Allura aħna qed tmur biex tkun qed tuża dan, u aħna qed tmur li tkun qiegħda tagħmel il-problemi jgħixu fit-taqsima
u tiddiskuti magħhom u jidhru x'hemm ħażin
u I tista 'pull up xi kodiċi tiegħek, u I jistgħu jiddiskutu l-ideat tiegħek.
Allura jkun xi ħadd kellu diffikultà?
Tista 'chat fuq il-ġenb; I do not know jekk aħna ser ikollhom raġuni għal dan.
Issa, bħall-supersection preċedenti, jekk inti kienu fuq dik il-klassi, inti taf dak li huwa madwar.
Fuq kollox ta 'settijiet P hemm għaddej li jkun dawn is-sezzjonijiet.
Allura P-sett 2, speċifikazzjonijiet, I raden inti raw dan fuq P-sett 1 diġà.
Iżda nistgħu nħarsu lejn P-sett 2 għal dak li aħna qed tmur biex tkun għaddej matul illum.
U tkun taf tara sezzjoni ta 'mistoqsijiet.
Allura dan se jkun fil kollha ta 'l P-settijiet; se jkun hemm sezzjoni ta' mistoqsijiet.
S'issa konna qal, "Ikkunsidra dan l-opportunità għall-prattika."
Inti mhux ser ikunu mitluba jissottomettu dan il-programm.
L-idea hija li dawn huma mistennija li tip ta 'jgħinek tibda mas-sett problema.
I raden fuq l-edizzjoni Hacker, ħafna minnhom huma mistennija li jkun biss l-ġodda, affarijiet interessanti li jitgħallmu.
Huma ma jistgħux ikunu direttament applikabbli għal-sett problema.
U d-dritt issa aħna qed ma jkollhom inti tissottometti lilhom, iżda fit-teorija,
għal settijiet problema aktar tard, inti tista 'tissottometti lilhom, u għalhekk inti tista' jew toħroġ it-Taqsima
jew jaraw it-taqsima biex jiksbu l-tweġibiet, jew tista 'biss tikseb minnhom fuq tiegħek
jekk ma tħossokx bħal jgawdu preżenza tiegħi.
Allura l - Naħseb li dan huwa l-ewwel wieħed.
Oh. Ukoll, taħt dawn it-taqsimiet ta 'mistoqsijiet irridu wkoll inti ssaqsi mistoqsijiet dwar l-xorts.
So I raden, fit-teorija, int suppost biex jaraw dawn qabel ma waslu għall-taqsima,
iżda huwa multa jekk inti ma; aħna ser jmorru fuq minnhom xorta waħda.
Allura aħna tista 'tibda ma' dawn: "Kif ma loop filwaqt differenti minn linja do-waqt?
Meta hija l-aħħar partikolarment utli? "
Allura ħadd li jkollu xi -?
[Student] Il-do-waqt li loop dejjem se tesegwixxi l-inqas darba.
Iva. Allura li hija d-differenza. A loop filwaqt li - I'll biss tagħmel dan fuq hawnhekk - filwaqt loop, aħna għandna l-kundizzjoni
dritt hawn, billi do-waqt, inti ma għandekx kundizzjoni sakemm aħna jiksbu l isfel hawn.
U għalhekk, meta program tiegħek s eżekuzzjoni, u jiġrilha għal-linja filwaqt li,
immedjatament kontrolli jekk din il-kundizzjoni huwa veru.
Jekk din il-kundizzjoni mhux veru, se biss skip fuq il-linja kompletament.
Do-waqt li loop, bħala l-programm huwa ta 'esekuzzjoni, jiġrilha l-"do."
Xejn jiġri f'dan il-punt, biss tkompli esekuzzjoni.
Imbagħad meta hits l-"filwaqt li," jekk il-kundizzjoni hija vera, dan ser loop lura u jagħmlu mill-ġdid
u għal darb'oħra u għal darb'oħra sakemm il-kundizzjoni mhux veru u mbagħad biss taqa permezz.
Għalhekk, id-differenza hija, li dan jista 'skip dritt mill-bidu nett.
Dan neċessarjament tesegwixxi darba u mbagħad jistgħu jesegwixxu darbiet aktar jekk il-kundizzjoni għadu vera.
Allura l-linja filwaqt li se biss tagħmel dan darba, jew - il-linja filwaqt li - aħna ma jistgħux jeħtieġu li tagħmel dan fil-livelli kollha,
peress hekk kif nikbru għal dan, jekk il-kundizzjoni hija falza, aħna ser biss skip dritt fuqha.
Billi do-waqt li loop, aħna ser tesegwixxi darba, neċessarjament.
Imbagħad, meta nikbru għall-kundizzjoni, aħna jiċċekkjaw jekk huwa veru jew falza.
Jekk huwa veru, aħna ser jagħmlu mill-ġdid; jekk huwa falz, aħna ser biss tkompli tmur.
Allura meta huwa l-aħħar partikolarment utli?
Allura nista 'ngħid li fil-intier ta' l-4 snin, 3 snin, tkun xi tkun,
li jien kont qed programmazzjoni, I użaw dan, bħal, taħt 10 darbiet.
U probabbilment 5 minnhom huma fil-CS50 meta aħna qed jintroduċu do-waqt loops.
Allura meta inti użati do-waqt linji?
Meta huwa l-- yeah?
[Student] Meta inti qed tipprova tikseb input utent, jew xi ħaġa inti tixtieq li tivverifika -
Yeah. So do-waqt loops, utent input huwa l-waħda kbira.
C'est pourquoi fuq il-settijiet 1 problematiċi koppja, meta inti tixtieq li tistaqsi lill-utent, bħal,
"Tagħti me a string," inti ma tistax tkompli sakemm ikollok dak string.
U għalhekk inti, neċessarjament, jeħtieġ li jistaqsu għall-sekwenza mill-inqas darba.
Iżda mbagħad jekk ikunu wieġbu xi ħaġa ħażina, imbagħad inti għandek bżonn loop lura u tagħmel talba oħra.
Imma minbarra l-input utent, huwa rari ħafna li I jiltaqgħu ma 'każ
fejn irrid loop "mill-inqas darba" imma possibilment aktar.
Mistoqsijiet jew -? Has ħadd użati do-waqt loop imkien ieħor?
Okay. Allura dak li jmiss huwa, "What ma mhux iddikjarat identifikatur
normalment jindikaw jekk outputted minn clang? "
Allura x'tip ta 'kodiċi jista I write li tinkiseb "identifikatur mhux iddikjarat?"
[Student] Li x = 2?
Allura nistgħu biss tipprova li fil hawn, x = 2.
Aħna ser imexxu dan - oh, I ma ikklikkja dan. Allura hawnhekk għandna nikseb - id-dritt.
"Użu ta 'x identifikatur mhux iddikjarat."
Allura dak l-identifikatur mhux iddikjarat, varjabbli.
Hija se spiss sejħa varjabbli identifikatur.
Allura jista 'ma jafux huwa attwalment varjabbli; ma tafx x'inhu.
Allura huwa identifikatur.
Allura għaliex hi mhux iddikjarat? Yeah.
Allura biex tkun ċara dwar terminoloġija, id-dikjarazzjoni ta 'varjabbli
huwa meta inti tgħidli "x int," jew "string y," ikun x'ikun.
L-inizjalizzazzjoni tal-varjabbli, jew l-assenjament tal-varjabbli,
huwa kull meta inti tgħidli "x = 2."
Allura nistgħu nagħmlu dawn fil-passi separati, int x, x = 2, u sakemm - li jista 'jkollna mazz ta' għalf fil hawn -
imma sakemm din il-linja jiġri dan, x għadu uninitialized, iżda dan kien iddikjarat.
U hekk nistgħu ovvjament tagħmel dan fl-1-linja, u issa aħna qed tiddikjara u initializing.
Mistoqsijiet?
U fl-aħħarnett, "Għaliex huwa l-Cipher Caesar mhux sikura ħafna?"
Allura l-ewwel, ħadd ma jridu jgħidu dak li l-Cipher Caesar hu?
[Student] Caesar Cipher biss hija li inti Mappa, inti shift kull ittra,
ċertu numru ta 'ittri jmorru fuq, u jimxu lura fuq, u mhuwiex ħafna sikur għaliex
hemm biss 26 għażliet possibbli u inti biss għandek tipprova kull 1 ta 'dawn sakemm inti ġġibu.
Oh. So, I għandu jirrepeti?
Il Cipher Caesar, it's - I mean, inti ser ikunu jittrattaw ma 'dan fuq il-problemi li inti -
jew I raden l-edizzjoni standard tas-sett problema li mhux fuq il-edizzjoni Hacker.
Allura fuq l-edizzjoni standard għas-sett problema, ikollok messaġġ bħal, "Hello, dinja,"
u inti ukoll għandek numru bħall 6, u tieħu dak il-messaġġ, u kull karattru individwali,
inti jirrotawh minn 6 pożizzjonijiet fl-alfabett.
Allura l-"h" fil bonjour isir h-i-j-k-l-m-n.
Allura l-ewwel ittra tkun n. Aħna jagħmlu l-istess ħaġa ma 'e.
Jekk għandna, bħal, z jew xi ħaġa, allura aħna nagħlaq lura madwar għal "a."
Iżda kull karattru gets mdawwar 6 karattri aktar tard fil-alfabett, u mhuwiex ħafna sikuri
peress li hemm biss 26 possibilitajiet għal ħafna modi kif inti tista wrap ittra waħda.
Allura inti tista 'sempliċement tipprova kull 26 wieħed minnhom u, preżumibbilment, għal messaġġ twil biżżejjed,
biss 1 ta 'dawn l-affarijiet possibbli 26 se tkun leġġibbli,
u l-wieħed leġibbli se tkun l-messaġġ oriġinali.
Għalhekk mhuwiex mod tajjeb ħafna ta 'encrypting xejn affattu.
Mhux relatat ma 'dawk xorts, "X'inhi l-funzjoni?"
Allura dak li huwa funzjoni? Iva.
[Istudenti] Huwa bħal biċċa separata ta 'kodiċi li inti tista' sejħa biex jgħaddu u mbagħad jiksbu l-valur tar-ritorn ta 'kwalunkwe.
Yeah. So I ser tirrispondi billi wkoll jwieġbu li jmiss - jew jirrepetu billi wkoll biss twieġeb il-wieħed li jmiss.
Tista 'tuża l-funzjonijiet minflok sempliċiment ikkopjar u pasta kodiċi fuq u aktar mill-ġdid.
Ħu dan il-kodiċi, poġġih ġo fuction, u allura inti tista 'biss sejħa l-funzjoni
fejn ġejt ikkupjar u pasta.
Allura funzjonijiet huma utli.
Allura issa aħna ser nagħmlu l-problemi attwali.
L-ewwel waħda. Allura l-idea ta 'l-ewwel waħda hija, inti tgħaddiha string, u irrispettivament mill--
jew ma jgħidu kollha zghar? Ma jfissirx kollha zghar.
Allura l-messaġġ jistgħu jiġu xejn, u - oh no. Hija ma.
"Għas-sempliċità, inti jista 'jassumi li l-utent se biss input zghar ittri u spazji."
Allura aħna jgħaddu messaġġ biss ma 'ittri lowercase u mbagħad aħna jalterna
bejn il-kapital u zghar - aħna jibdlu l-sekwenza li jkun kapital u zghar, li jalterna.
Allura qabel ma aħna nagħtuk 2 li anki adsa fis-problema,
dak li huwa l-ewwel ħaġa li għandna bżonn tagħmel?
Oh, dak li ma I biss ikklikkja fuq? Oh, I biss għafast fuq email fil hawn.
Allura l-ewwel ħaġa li għandna bżonn tagħmel - jien tħares lejn l-waħda ħażina?
Huwa dan parti ta 'dan wieħed?
Le, dawn huma xorta fil hemm, għalkemm.
Okay, xorta hawn.
Issa aħna ma tistax tassumi -? Iva. Hawnhekk ma nistgħux nassumu li huwa biss zghar u spazji.
Allura issa għandna biex jittrattaw l-fatt li l-ittri jista 'jkun xi rridu li jkun.
U għalhekk l-ewwel ħaġa li rridu nagħmlu huwa biss jiksbu l-messaġġ.
Aħna biss bżonn li tikseb string, string s = GetString, okay.
Issa din il-problema, hemm koppja ta 'modi ta' kif isir dan.
Iżda aħna ser jridu jużaw l-operaturi bitwise hawn.
Hemm nies li jew ma kinux fil-supersection,
jew xi ħaġa, u ma jafux liema operaturi bitwise huma?
Jew kif dawn jirrelataw mal ASCII b'xi mod?
[Student] I ma kienx fil-supersection, imma naf liema operaturi bitwise huma.
Okay. Allura mbagħad I ma jkollhom imorru fuq il-baŜi ta 'dawn, imma jien ser jispjegaw
dak li aħna qed tmur jridu jużaw hawnhekk.
Allura "A": rappreżentazzjoni Binarju tal-kapital A, in-numru huwa 65.
Jien biss ser tħares lejn - 41 se tkun 01000001.
Allura li għandu jkun ta '65 fil-deċimali; għalhekk dan huwa l-rappreżentazzjoni binarja tal-kapital karattru A.
Issa, ir-rappreżentazzjoni binarja tal-karattru zghar "a"
se tkun l-istess ħaġa, kważi. Hija li - 6, yeah. Dan huwa dritt.
Kapital Allura binarja A zghar, binarja "a."
Allura avviż li d-differenza bejn A u "a" hija din daqsxejn waħda.
U dan jiġri li jkun il-bit 32, il-bit tirrappreżenta n-numru 32.
U li jagħmel sens peress A huwa 65; "a" huwa 97.
Id-differenza bejniethom hija 32.
Allura issa nafu li nistgħu jikkonvertu minn A sa "a" billi tieħu A
u bitwise oring dan, ma '- li qisu 1.
Din hija bitwise OR, bil 00100000, u li ser tagħtina "a."
U aħna tista 'tikseb minn "a" sa A mill bitwise anding
ma '11, 0 f'dak il-post, 11111.
Allura dan imbagħad tagħtina eżattament dak "a" kienet, imma jikkanċella dan daqsxejn individwali,
hekk aħna ser ikollhom 01000001; I do not know jekk I magħduda dritt.
Iżda din it-teknika ta 'bitwise oring li tikseb mill-kapital li zghar,
u bitwise anding li tikseb minn lowercase għall-kapital ma jkunx esklussiv għall A.
Kollha ta 'l-ittri, K vs k, Z vs z,
kollha kemm huma biss se jvarjaw minn dan daqsxejn waħda.
U għalhekk inti tista 'tuża dan għall-bidla minn kwalunkwe ittra zghar għal kwalunkwe ittra kapitali u viċi versa.
Okay. Allura mod faċli ta 'jkollna minn dan - hekk minflok li
jiktbu l x'ikun 1011111 hu - mod faċli ta tirrappreżenta dan in-numru, u dan mhuwiex wieħed
li I marru fuq fil-supersection, iżda tilde (~) huwa operatur ieħor bitwise.
X'inhu ~ ma huwa jagħti ħarsa lejn ir-rappreżentazzjoni bit.
Ejja tieħu kwalunkwe numru.
Dan huwa biss ftit numru binarju, u dak ~ ma hija biss Flips kollha tal-bits.
Allura dan kien 1, issa ta '0, dan huwa 0, issa 1, 010,100.
Allura li kollox ~ ma. Allura 32 se jkun in-numru - jeħles li -
hekk 32 se jkun in-numru 00100000, u għalhekk ~ ta 'dan se tkun
dan in-numru up hawn li I anded "a" ma.
Does kulħadd tara li? Dan huwa pjuttost komuni, bħal meta inti tixtieq li insemmu
għall-affarijiet aktar tard li nistgħu tkun qed tara, meta irridu naraw jekk -
jew irridu kollox, kull sett daqsxejn waħda ħlief għal 1
inti għandek tendenza li tagħmel ~ tal-bit li aħna ma trid stabbiliti.
Allura aħna ma rridux-sett bit 32, hekk aħna ~ ta '32.
Okay. Allura nistgħu nużaw dawk kollha hawn.
Kull dritt, dan huwa multa jekk int ma jsir, aħna għandu bil-mod jimxu fuq flimkien,
jew jimxu fuq dan, dan - permezz ta 'dan. Walk permezz ta 'dan.
Allura aħna għandna string tagħna, u rridu li jiffurmaw ingassa kull karattru f'dak string u jagħmel xi ħaġa biex dan.
Allura kif do we loop fuq string? X'għandu nużaw?
Jien ma jmur biex tagħmel dan hawn fuq. Yeah.
Allura għandi iterator tiegħi, u hu qal li, imma kif inkun naf kemm karattri huma fis-sekwenza?
Strlen (i), allura i + +.
Allura dak I ghamilt hawnhekk mhix l-aħjar mod ta 'nagħmlu l-affarijiet.
Hawn xi ħadd jaf għaliex?
Għaliex int iċċekkjar tal-lingwa tas-sekwenza kull wieħed ħin.
Allura aħna ser jridux jimxu strlen, nista 'ngħid up hawn, int tul = strlen (i),
u mbagħad do i <tul, u fil-każ li inti ma bbenefikawx qabel,
I tista 'wkoll tagħmel INT i = 0, tul = strlen (i).
U hekk dan huwa kemmxejn preferibbli, peress li issa stajt ristretta l-ambitu
tat-tul varjabbli għal ftit dan "għal" loop, minflok li tiddikjara li qabel
u li dejjem jeżisti, u fil-każ li inti ma qabda għaliex dan huwa ħażin,
jew għaliex l-oriġinali kien ħażin, it's - tibda fil-linja għal.
I ċċekkjati l-kundizzjoni. Huwa i <it-tul ta 'i?
Allura l-tul ta 'i, ejja taħdem ma "hello" il-ħin kollu.
Allura tul ta 'i, h-e-l-l-o. Tul hija 5.
Hekk i = 0, it-tul huwa 5, hekk i ma tkunx <5, sabiex il-linja tkompli.
Imbagħad immorru għal darb'oħra. Aħna jiċċekkja l-kondizzjoni. Huwa i <it-tul ta bonjour?
Mela ejja check-tul ta bonjour. H-e-l-l-o. Dak 5; i mhix <5, hekk aħna tkompli mill-ġdid.
Allura aħna qegħdin kalkolu, aħna huma isserraħ hello, għal kull iterazzjoni tal-linja,
anke ħasbu li qatt ma se jibdlu; huwa dejjem se jkunu 5.
Allura aħna biss ftakar 5 bil-quddiem, u issa kollox aħjar.
Allura iterazzjoni fuq il-sekwenza sħiħa.
What do rridu nagħmlu għal kull karattru ta 'l-sekwenza?
[Student speaking, mhux intelliġibbli]
Yeah. Għalhekk, jekk il-karattru huwa mhux alfabetiku, allura aħna biss jixtiequ skip fuqha.
Għaliex aħna biss jimpurtahom ittri alfabetiċi; ma nistgħux kapitalizzazzjoni numru.
Allura kif nistgħu nagħmlu dan? Allura kundizzjoni tagħna, hekk jekk irridu xi ħaġa - jiċċekkjaw jekk huwa alfabetiku.
Allura kif nistgħu tivverifika din?
[Student] Tista 'biss tuża l-funzjoni huwa alpha.
Hija li jinkludu f'xi wieħed minn dawn, jew kwalunkwe jinkludu simili, char.h jew xi ħaġa?
Ejja ma tuża l-funzjoni huwa alpha, u jużaw il-espliċiti - hekk aħna s [i],
li huwa l-karattru 8 ta 'i, ftakar li string huwa firxa ta' karattri,
hekk il-karattru 8 ta 's.
Issa, jekk huwa ittra kapitali, nafu għandu jkun f'firxa speċifika.
U dak hu li firxa?
Yeah. Mela jekk i [i] hija ≥ 65, u s [i] hija ≤ 90, x'għandi nagħmel minflok?
Yeah. Allura inti għandek assolutament qatt ma jeħtieġ li tkun taf l-valuri ASCII ta 'xejn qatt.
Qatt jaħsbu tan-numri 65, 90, 97 u 102, jew kwalunkwe huwa.
Inti ma għandekx bżonn - 112 -? Inti m'għandekx bżonn tkun taf dawk fil-livelli kollha. Dak ħażin wisq.
Jużaw biss il-karattri uniku kwotazzjoni, kostanti kwotazzjoni waħda. Allura "A" u inqas minn 90 hija "Z."
U dan huwa ferm aħjar - I ma jkunux jafu l-quċċata tar-ras tiegħi li Z huwa 90.
I do know off-quċċata tar-ras tiegħi li "Z" huwa l-kapital Z.
Dan sakemm dan huwa fil-medda ta 'kapital A sa Z kapital, jew nistgħu jiċċekkja għal zghar,
Jew jekk huwa fil-medda ≥ "a" u ≤ z.
Allura dak kundizzjoni tagħna.
L-istil ta 'fejn jitqiegħdu dawn l-affarijiet tvarja.
I ser jagħmlu dan bħal dan.
Issa, dak li rridu nagħmlu?
Aħna nafu din l-ittra huwa karattru, karattru alfabetiku.
Għalhekk għandna bżonn li jalternaw bejn jekk dan issa għandhom ikunu ittra kapitali jew ittra zghar.
Kif nistgħu jżommu rekord ta 'liema waħda aħna tixtieq li jkun?
[Vuċijiet Student, mhux intelliġibbli]
Allura iva, iżda let me check.
Modulu 0-2 kien qal, kien suġġeriment jintefgħu 'l barra, u jiena naqbel ma' dan.
Ħlief avviż li, bħal - dan huwa l-każ? Yeah.
Huwa kull wieħed ieħor, iżda ma nistgħux modulu 2 ta 'i, jew i mod 2, peress li
avviż li E huwa l-kapital u "a" hija zghar? Iżda hemm spazju tisseparahom?
Allura dawn qed tmur biex tkun l-mod istess 2, iżda dawn qed każijiet differenti.
[Kwistjoni Student, mhux intelliġibbli]
Yeah. Allura aħna qed biss jmorru biex iżommu għadd.
Nistgħu wkoll tagħmel dan fil hawn jekk ridna; li tista 'tikseb dens ftit
fil-għal dikjarazzjonijiet loop; I ser tqiegħed lilha up here.
Allura għadd int = jibda fil 0.
U hekk issa, jien ser jgħoddu kif ħafna karattri alfabetiċi aħna kellna.
Allura aħna qed inevitabbilment se joqgħod + + peress sibna ieħor karattru alfabetiku.
Iżda, hekk issa inti qed tgħid jekk mod għadd 2.
Allura dak li jekk mod għadd 2? Oh. I ser tagħmel == 0 għal issa.
Aħna ser tmur ukoll fuq dak. Mela jekk mod għadd 2 == 0, imbagħad dak?
[Studenti risposta, mhux intelliġibbli]
Allura aħna tixtieq li jispiċċaw uppercase.
Hemm 2 każijiet; uppercase u zghar huma l-każijiet 2.
Allura jekk aħna qed fil zghar għandna bżonn li tagħmel dan kbar.
Jekk huwa uppercase aħna ma bżonn li tagħmel xejn.
Iżda, hemm mod - shouldn't jkunu flipped -
li aħna lanqas biss bżonn li jiċċekkja jekk huwa uppercase jew zghar?
X'nistgħu nagħmlu biex dejjem jaċċertaw li aħna dejjem jispiċċaw fil uppercase?
Allura avviż dak li għamilna għal lowercase "a"; dak jekk aħna ma dan istess ħaġa eżatt li uppercase A?
Does uppercase Bidla, jew ma l-bidla valur?
Yeah. Allura kull ittra kapitali bitwise anded mal ~ 32 se tkun li l-karattru uppercase istess
minħabba li għal kwalunkwe karattru uppercase-bit 32 mhuwiex stabbilit.
Mela jekk irridu li tressaq il-karattru i [i], irridu li ssir zghar jew uppercase.
Mela jekk kien zghar, huwa issa uppercase, jekk kien uppercase, huwa għadu uppercase, u li hu.
I qal dan fil-supersection: Tista 'tuża 32 jekk trid, imma I-tendenza li jippreferu jagħmlu "a" - A,
minflok sempliċiment 32 plain, minħabba li jista 'jkun kwalunkwe bit-oħra.
Wara l-32 bit, jista 'jkun kwalunkwe minn dawn, jew aħna ma jkollhomx biżżejjed
numri li jirrappreżentaw kollha tal-karattri.
Allura jekk ikollok il-bit 32, jista 'jkun il-bit 64, jista' jkun il-bit 128.
Kwalunkwe minn dawn bits jista 'jkun il ftit li jiddistingwi bejn uppercase u zghar.
I m'għandhomx bżonn tkun taf li huwa l-bit 32.
I jistgħu jużaw dan "a" - A li jiksbu l-ftit li tvarja bejn it-tnejn
mingħajr il-bżonn li tistrieħ fuq in-numru magic li hija 32.
U għalhekk issa, inkella għadd kien fard, u iva, liema do I trid tagħmel?
[Tweġibiet Student, mhux intelliġibbli]
[Student] X'hemm li?
I se tagħmel dan fl-1 tieni.
Mela issa jekk irrid - I tixtieq tagħmel żgur li l-karattru huwa issa zghar,
u so I tista JEW minn 32, u 32 tifsira "a" - A.
Iżda l-avviż, bl-istess raġunament bħal dak preċedenti, li jekk
l-ittra kienet diġà zghar, imbagħad oring bi 32 biss iżomm dan zghar.
Hija ma biddel il-karattru oriġinali.
Imma issa I ma jkollhomx biex jevitaw qal, "Jekk huwa zghar, biss tinsa dwar dan,
jekk huwa uppercase, allura din tinbidel. "
Huwa ħafna aktar konvenjenti biex jagħmlu dan.
[Student] Would li l-istrateġija tal tnaqqas il-uppercase mix-xogħol zghar kieku ma kienx 32?
Jekk kien, bħal, 34 jew xi ħaġa?
Għalhekk, jeħtieġ li tkun taf li d-differenza bejn il-2 hija -? >> 1 bit.
Dan jista 'jkun aktar minn 1 bit, sakemm kollha tal-bits taħt din il-pożizzjoni huma l-istess.
Għalhekk għandna bżonn mill-inqas 26 karattri - jew, hemm 26 karattri.
Għalhekk għandna bżonn mill-inqas 26 numri li jirrappreżentaw id-differenza -
Id-differenza bejn A u "a" għandha tkun mill-inqas 26,
jew inkella aħna ma kinux rappreżentati il-numri tal-kapital.
Dan ifisser li A, jekk nibdew mill-1, li għaddej biex tuża kollha ta 'dawn bits,
kollha ta 'dawn ewwel 5 bits, li jirrappreżentaw kollox permezz Z.
C'est pourquoi il-ftit li jmiss, jew dan bit, il-ftit li jmiss huwa dak li l-magħżula biex issir distinzjoni bejn A u "a".
Li wkoll għaliex, fit-tabella ASCII, hemm 5 simboli li jisseparaw ittri kapitali mill-ittri lowercase.
Peress li dawk huma l-simboli, l-5 żejda li ġġib l-32 huwa d-differenza bejniethom.
[Student] Allura nistgħu nagħmlu dan, għaliex ASCII, imfassla b'dan il-mod.
Iva. Iżda ASCII - id-differenza tista 'tkun ukoll kemm ta' dawn bits.
Bħal, jekk A kienu 10000001, u "a" kien 11100001 - ninsa, tkun xi tkun.
Imma kieku kien dan, allura nistgħu għadhom jużaw "a" - A.
Huwa biss issa d-differenza bejn A u "a" għadu dawn bits 2.
Naħseb huwa miktub 48. Huwa 32 + 64? Naħseb li huwa?
Dan xorta jkun 2 bits; kull karattru waħdieni, bħal, Z u z, K u k,
xorta jkollhom l-bits eżatt l-istess stabbiliti ħlief għal dawk bits 2.
Dan sakemm dan huwa dejjem veru, irrispettivament ta 'jekk aħna qed tuża ASCII jew xi sistema oħra,
sakemm hemm biss numru sett ta 'bits li huma differenti għal kull karattru,
allura li xogħlijiet multa.
Huwa biss li 32 twaqqaf għaliex dan huwa l-ewwel wieħed nistgħu possibilment użu. Kessaħ. >>
I-tendenza li jippreferu, fil-każ li inti ma bbenefikawx, jekk il-blokk huwa biss linja waħda,
inti tista 'jeħles mill-ċineg kaboċċi; so I-tendenza li jippreferu jagħmlu dan.
Ukoll, inti taf kif nistgħu nagħmlu affarijiet simili i [i] + = 1?
Tista 'wkoll tagħmel s [i] bitwise U = 32.
U bitwise JEW = 32.
Ukoll, l-għadd mod 2 == 0.
Mela ftakar li - I mhux ser jikteb dan - xi valur non-żero hija vera, u 0 hija falza.
Mela "jekk mod għadd == 2 0" huwa l-istess kif qal "jekk ma jgħoddux mod 2."
I probabbilment kien biss maqluba l-linji u qal, "jekk għadd mod 2,
jagħmlu l-OR 1, do inkella l-U 1, "I hekk li ma kellhomx bżonn il-" le. "
Iżda dan xogħlijiet biss ukoll.
U x'iktar 'nagħmel hawn?
Inti tista tgħaqqadhom ma ternarji jekk int riedu, iżda mbagħad li d biss tagħmel l-affarijiet Messier
u probabbilment aktar diffiċli biex jinqara, hekk aħna mhux se tagħmel dan.
Kull min ikollu xi suġġerimenti oħra?
Hija li l-problema mitlub? Oh yeah.
Allura jeħles ta 'dawn il-linji vojta, issa aħna ser jistampaw f% s, hija s-sena għall-kordi,
Aħna se print f, s.
Issa ejja run. Did I tagħmel xejn ħażin?
Li l-\ "; Irrid li n.
Okay. Issa aħna ser run. Hija ser probabbilment Yell fil lili.
Strlen huwa string.h.
Allura dan huwa l-ħaġa sbieħ dwar clang huwa jgħidlek liema huwa fi,
minflok GCC li biss jgħid, "ħej, inti nesa xi ħaġa, I do not know dak li kien."
Iżda dan se tell me, "Inti mifhum li jinkludi string.h."
So I ma wasslitx lill għal xejn, hekk huwa ma tgħid xejn.
Iżda aħna ser tagħmel eżempju tagħhom, "Grazzi 4-add".
Li jistenna dritt. Hooray.
Allura jirritornaw lejn prinċipali tiegħek, I kważi qatt tagħmel dan.
Huwa fakultattiv. U ewlenija hija l-funzjoni unika li huwa fakultattiv.
Jekk inti ma jirritornawx xejn minn prinċipali, huwa preżunt li inti fisser li jirritornaw 0.
Mistoqsijiet?
Okay. Allura issa l-problema tat-tieni.
"Recall mit lecture 2 2 ġimgħa li jagħmlu skambju ta 'valuri varjabbli" 2 billi tgħaddi
dawk il-varjabbli 2 sa funzjoni (anki jekk jissejħu tpartit) ma eżattament ix-xogħol, għall-inqas mhux mingħajr "pointers." "
U jinjora pointers sakemm aħna jiksbu għalihom.
Aħna rridu li tpartit 2 varjabbli; aħna mhux qed jużaw funzjoni li tagħmel dan.
Aħna xorta se tagħmel dan fl prinċipali bhalu jgħid.
Iżda l-użu dawk il-varjabbli 2, aħna ma tixtieq li tuża varjabbli temporanju.
Hemm 2 modi biex tagħmel dan.
Tista 'tagħmel dan bl-użu l-operaturi tiegħek binarji tradizzjonali.
Allura ħadd ma jaf mod ta 'malajr u maħmuġ ta' kif isir dan?
Hija tista 'attwalment tieħu minuta ta' ħsieb. Jekk ikolli -
I ser jistabbilixxu l-problema up bħal dawn jistaqsu. Mela jekk ikolli 2 varjabbli, A, li huwa biss numru sħiħ
li jagħtu me, u varjabbli somma B, li hija ieħor numru sħiħ li jien mogħtija.
Mela jekk ikolli dawn il-varjabbli 2, issa nixtieq li tpartit lilhom.
Il tradizzjonali, bl-użu l-operaturi tiegħek binarji regolari, I mean, bħall +, -, ÷.
Mhux operaturi bitwise li jaġixxu fuq binarju.
Hekk billi tuża -, +, ÷, u dawk kollha.
Aħna jista 'tpartit billi tagħmel xi ħaġa bħal = a + b, u b = a - b, a = a - b.
Allura, sanità kontroll, u allura aħna ser tara għaliex li x-xogħlijiet.
Ejja ngħidu = 7, b = 3, imbagħad a + b se tkun 10.
Allura aħna qed issa iffissar ta '10 =, u allura aħna qed tagħmel b = a - b.
Allura aħna qed tagħmel b = a - b, li se jkun ta '7, u b = a - b darb'oħra,
jew a = a - b. Liema se tkun 10-7 li huwa 3.
Allura issa, korrett, "a" kien ta '7, b kienx 3, u issa b huwa 7 u "a" huwa 3.
Allura dak it-tip ta 'jagħmel sens; "a" huwa l-kombinazzjoni tal-numri 2.
Fuq dan il-punt, "a" huwa l-kombinazzjoni, u allura aħna qed tnaqqas l-b oriġinali,
u allura aħna qed jitnaqqas dak kien l-oriġinali "a."
Iżda dan ma taħdimx għall-numri.
Biex tara dan, ejja tikkunsidra sistema; hekk aħna normalment think ta 'numri interi bħala 32 bits.
Ejja jaħdmu fuq xi ħaġa li biss bħal 4 bits.
Nisperaw I toħroġ bi eżempju tajjeb dritt issa.
So, I know, dan se jkun faċli.
Ejja ngħidu 2 numri tagħna huma 1111, u 1111; hekk aħna qed fil binarja dritt issa.
Fl deċimali attwali, jekk inti tixtieq li jaħsbu li dan il-mod,. = 15 u b = 15
U hekk aħna nistennew, wara we tpartit minnhom - dawn ma jkollhomx jiġu l-istess numri,
imma I ma kien b'dan il-mod.
Ejja jagħmluhom mhux l-istess numri. Ejja nagħmlu 1111 u 0001.
Allura = 15 u b = 1.
Wara aħna tpartit minnhom, nistennew "a" li tkun l-1 u b li tkun 15.
Allura l-ewwel pass tagħna huwa = a + b.
Numri tagħna huma biss 4 bits wiesgħa, hekk "a," li huwa 1111, + b, li huwa 0001,
se jispiċċa jkun 10000, imma aħna biss 4 bits.
Allura issa = 0.
U issa irridu li jistabbilixxu b = a - b - fil-fatt, dan għadu jaħdem perfettament out.
a = a - ejja ara jekk din taħdem out perfettament - b.
Mela allura b = 0 - 1 li xorta jkun 15, u mbagħad = a - b, li tkun 1.
Forsi dan jaħdem.
Inħoss bħal hemm raġuni ma jaħdimx bl-użu regolari.
Okay, hekk li jaħdmu fuq is-suppożizzjoni li ma jaħdimx bl-operazzjonijiet binarji regolari,
u jien se tfittex - I se Google biex tara jekk dan huwa veru.
Allura aħna tixtieq li tagħmel dan bl-użu l-operaturi bitwise, u l-clue hawnhekk huwa XOR.
Allura, l-introduzzjoni XOR (^) jekk inti ma bbenefikawx encore.
Huwa, għal darb'oħra, operatur bitwise u għalhekk taġixxi ftit ftit, u it's -
Jekk inti għandek il-bits 0 u 1, mela dan se tkun l-1.
Jekk inti għandek il-bits 1 u 0, dan ser ikun 1, inti għandek l-bits 0 u 0 inneħħu jkun 0,
u jekk ikollok l-bits 1 u 1 dan ser ikun 0.
Allura huwa simili JEW. Jekk waħda mill-bits huma veri, li għamilhom 1, iżda għall-kuntrarju JEW, ma jistax jiġi kemm bits li huma vera.
JEW kien dan ikun 1, XOR jkollhom dan ikunu 0.
Allura aħna qed tmur biex jridu jużaw XOR hawn.
Aħseb dwar dan għal minuta; jien ser Google.
Ukoll, inti ma tistax taqra dan; jien bħalissa fuq il-XOR tpartit algoritmu paġna.
Nisperaw li dan ser jispjega għaliex I can't -
Dan huwa eżattament l-algoritmu li aħna biss għamlet.
I għadhom ma tara għaliex - I irid ikun biss qabad eżempju ħażin,
iżda f'dan il-każ fejn "a" ġara li jsiru 0, wara jkollna sa 5 bits, hekk issa "a" huwa 0,
dan huwa dak li jissejjaħ "overflow numru sħiħ."
Skond il-Wikipedija, "B'differenza mill-tpartit XOR, din il-varjazzjoni teħtieġ li juża xi metodi
biex jiggarantixxu li x + y ma tikkawża overflow numru sħiħ. "
Allura dan ma jkollu problemi; dan kien overflow numru sħiħ, imma jien għamilt xi ħaġa ħażina.
M'inix ċert. I ser jippruvaw biex toħroġ bi ieħor.
[Student] Ukoll, mhuwiex overflow numru sħiħ meta inti qed tipprova tpoġġi numru fil hemmhekk
akbar mill-ammont ta 'bits ikollok allokati?
Yeah. Aħna 4 bits. That's - kellna 4 bits, aħna mbagħad jippruvaw żid 1 miegħu, hekk aħna jispiċċaw ma '5 bits.
Iżda l-ftit 5 biss gets maqtugħa, yeah.
Hija tista 'fil-fatt -
[Student] Does li tarmi inti żball, jew ma li - kieku din tarmi żball?
No Allura hemm ebda żball. Meta ikollok għal-livell immuntar, speċjali daqsxejn
x'imkien huwa stabbilit li qal kien hemm overflow, iżda fis-C int tip ta 'biss ma tittratta dik.
Inti fil-fatt ma tistax tittratta magħha ħlief jekk tuża istruzzjonijiet speċjali assemblaġġ fil C.
Ejja jaħsbu dwar swap XOR.
U naħseb li l-artiklu Wikipedija jista 'wkoll ġew qal li -
Għalhekk ukoll aġġornati aritmetika modulari, so I raden I kien, fit-teorija, tagħmel aritmetika modulari
meta I qal li 0-1 huwa 15-ġdid.
Allura li jista attwalment - fuq proċessur regolari li ma 0-1 = 15.
Minħabba li aħna jispiċċaw ta '0, aħna naqqas 1, hekk allura hija biss garżi lura madwar 1111.
Allura dan algoriżmu jista 'attwalment jaħdmu, l-a + b, il-a - b, b - a; li jista' jkun multa.
Iżda hemm xi proċessuri li ma tagħmel dan, u għalhekk ma jkunx multa f'dawk dawk speċifiċi.
Tpartit XOR se taħdem fuq kull proċessur. Okay.
L-idea hija li huwa suppost li tkun l-istess, għalkemm.
Fejn aħna qed jużaw XOR li b'xi mod jiksbu l-informazzjoni ta 'kemm fis-1 ta' varjabbli,
u mbagħad iġbed l-informazzjoni tal-varjabbli individwali mill-ġdid.
Allura ħadd ma jkollu ideat / ir-risposta?
[Tweġiba Student, mhux intelliġibbli]
Allura dan għandu jaħdem, u wkoll, XOR huwa kommuttativa.
Irrispettivament ta 'liema ordni dawn in-numri 2 jiġri li jkun fil up hawn,
dan ir-riżultat se jkun l-istess.
Allura ^ b huwa b ^ a.
Inti tista 'wkoll tara dan bil-miktub bħala ^ = b, b ^ = a, a ^ = b darb'oħra.
Allura dan huwa dritt, u li wieħed jara għaliex dan jaħdem, think tal-bits.
Bl-użu ta 'numru smallish, ejja ngħidu 11001, u 01100.
Allura dan huwa 'a', dan huwa b.
Allura ^ = b.
Aħna ser tkun iffissar = "A" għall-XOR 'dawn l-affarijiet 2.
Allura 1 ^ 0 hija 1; 1 ^ 1 huwa 0; 0 ^ 1 huwa 1, u 0 ^ 0 hija 0, 1 ^ 0 hija l-1.
Allura "a," jekk inti tħares lejn in-numru deċimali, li għaddej biex tkun -
int mhux se tara ħafna ta 'relazzjoni bejn l-oriġinal "a" u l-ġodda "a,"
iżda tħares lejn l-bits, "a" hija issa bħal malji ta 'l-informazzjoni
kemm l-oriġinali "a" u l-b oriġinali.
Mela jekk nieħdu b ^ a, naraw li aħna ser jispiċċaw fil-oriġinali "a."
U jekk nieħdu l-oriġinali "a" ^ il-ġdid "a," naraw aħna jispiċċaw fil-b oriġinali.
Allura (a ^ b) ^ b = "a." L-oriġinali
U (a ^ b) ^ a = il-b oriġinali.
Hemm - mod ieħor ta 'jara dan huwa XOR xejn fih innifsu huwa dejjem 0.
Allura 1101 ^ 1101, l-bits ser ikunu l-istess.
Allura hemm qatt ma se jkun hemm każ fejn 1 huwa ta '0 u l-ieħor huwa 1.
Allura dan huwa 0000.
L-istess ma 'dan. (A ^ b) ^ b huwa bħal ^ (b ^ b).
(B ^ b) se jkun ta '0; a ^ 0 huwa biss se jkun "," peress li l-bits huma 0.
Allura l-uniċi li ser ikunu fejn "a" kien oriġinarjament ta '1 - kellhom dawk.
U l-istess idea here; jien pjuttost ċert li huwa wkoll kommuttativa.
Yeah. I ma jgħidu qabel li kien kommuttativa.
Il ^ "a," u huwa assoċjattiv, hekk issa (b ^ a) ^ a.
U nistgħu nagħmlu b ^ (a ^ a).
U għalhekk għal darb'oħra, irridu jiksbu l-b oriġinali.
Allura "a" issa huwa l-kombinazzjoni ta "a" u b flimkien.
Bl-użu tagħna Combo ġdida "a" li ngħidu b = Combo "a" ^ lb oriġinali, irridu jiksbu l-oriġinali "a."
U issa Combo = "a" ^ lb ġdid, li kienet l-oriġinali - jew li issa dak li kien "a" jew b.
Li dan il-każ stabbiliti hawn. Dan huwa = b, b qodma.
Allura issa kollox huwa lura fl-ordni skambjat.
Jekk aħna attwalment ħares lejn l-bits, b = a ^ b, huwa se XOR dawn 2,
u t-tweġiba se tkun din, u mbagħad = a ^ b huwa XORing dawn 2 u t-tweġiba hija din.
Mistoqsijiet? Okay. Allura l-aħħar wieħed huwa pjuttost sinifikanti aktar diffiċli.
[Student] Naħseb li għandu mistoqsija dwar dan. >> Oh, sorry.
[Student] X'hemm fil-fatt aktar malajr? Jekk tuża dan XOR, jew hija jekk inti tiddikjara varjabbli ġdid?
Allura dak li huwa effettivament aktar mgħaġġla, li tiddikjara varjabbli ġdid jew jużaw XOR li tpartit?
It-tweġiba hija, fil-probabbiltà kollha, varjabbli temporanju.
U dan huwa minħabba darba huwa miġbura isfel - dan fil-livell assemblaġġ,
hemm l-ebda ħaġa bħal varjazzjonijiet lokali jew kwalunkwe varjabbli temporanji jew għal xi dan il-għalf.
Huma qed biss bħall - hemm memorja, u hemm reġistri.
Reġistri huma fejn l-affarijiet huma attivament qed jiġri.
Inti ma jżidux 2 affarijiet fil-memorja, inti żid 2 affarijiet fir-reġistri.
U inti ġġib l-affarijiet mill-memorja fil reġistri li imbagħad żid magħhom,
u allura inti tista 'tpoġġi lura fil-memorja, imma l-azzjonijiet kollha jiġri fir-reġistri.
Allura meta inti qed tuża l-approċċ varjabbli temporanju, normalment dak li jiġri huwa
dawn in-numri 2 huma diġà fir-reġistri.
U allura minn dak il-punt, wara li tkun ħadthom skambjati minnhom,
hija ser biss jibdew jużaw ir-reġistru ieħor.
Kullimkien inti kienet tuża b, inneħħu biss jużaw ir-reġistru li kienet diġà ħżin "a."
Allura ma għandux bżonn li tagħmel xejn biex fil-fatt jagħmlu l-tpartit. Yeah?
[Student] Imma wkoll tieħu memorja aktar, id-dritt?
Huwa se jieħu biss memorja aktar jekk jeħtieġ li jaħżen dak varjabbli temporanja.
Bħal jekk inti użu aktar tard dak il-varjabbli temporanja mill-ġdid x'imkien,
imbagħad - jew inti tassenja xi ħaġa f'dan varjabbli temporanja.
Mela jekk fi kwalunkwe punt fil-ħin "a," b fid temperatura għandhom valuri distinti jew xi ħaġa,
allura huwa għaddej biex ikollhom postijiet distinti fil-memorja, iżda huwa veru li
hemm varjabbli lokali ħafna li se biss jeżistu reġistri.
F'liema każ, huwa qatt ma jitqiegħed fis-memorja, u hekk int qatt ma ħela memorja.
Okay. Aħħar domanda hija daqsxejn aktar.
Allura hawnhekk, f'dan appliance CS50, hemm dizzjunarju.
U r-raġuni għal dan hija għaliex [? B66] hija jespliċitaw kontrollur fejn inti ser ikunu bil-miktub
użu ta 'tabelli hash jew tipprova jew xi struttura tad-data.
Inti ser tkun kitba ta 'jespliċitaw kontrollur, u int se tkun qed tuża din dizzjunarju sabiex tagħmel dan.
Iżda għal din il-problema, aħna biss ser tħares up biex tara jekk kelma waħda hija fid-dizzjunarju.
Allura minflok tal-ħażna-dizzjunarju kollu f'xi struttura tad-data
u mbagħad tfittex fuq dokument kollu biex tara jekk xejn s misspelled,
aħna biss trid issib 1 kelma. Allura nistgħu biss skennjati fuq il-dizzjunarju kollu
u jekk aħna qatt isibu l-kelma fid-dizzjunarju kollu, allura ma kienx fil hemmhekk.
Jekk aħna skennjati fuq il-dizzjunarju kollu u ma tara l-kelma, allura aħna qed tajba, sibna dan.
Hija tgħid hawnhekk li aħna rridu li tibda tħares lejn Ċ file-handling funzjoni,
peress li aħna trid taqra l-dizzjunarju,
imma jiena ser jagħti l-ħjiel hawn dwar liema funzjonijiet għandek taħseb.
I ser jiktbu dwar Spazji.
Allura dawk prinċipali tkun taf tixtieq li tħares lejn huma f miftuħa u mbagħad, inevitabbilment, f magħluqa,
li se jmorru fl-aħħar tal-programm tiegħek, uf f scan.
Tista 'wkoll tuża f taqra, imma inti probabilment ma jridux
minħabba li - inti ma tispiċċa jeħtieġu dan.
F scan f huwa dak li int ser tkun qed tuża jiġu skennjati fuq il-dizzjunarju.
U għalhekk inti m'għandekx bżonn għall-kodiċi up-soluzzjoni, biss jippruvaw u simili psewdo-kodiċi tiegħek mod
għal soluzzjoni, u mbagħad aħna ser jiddiskutu dan.
U fil-fatt, peress li jien diġà ħadt dawn, jekk inti tmur fi kwalunkwe terminal jew qoxra appliance tiegħek,
Nixtieq - I normalment - jekk inti ma bbenefikawx għadhom, I do not know jekk inti għamilt fil-klassi,
iżda raġel, hekk l-paġni bniedem, huma pjuttost utli għall tħares lejn pretty ħafna kull funzjoni.
So I jistgħu jagħmlu, bħal, f bniedem, scan f.
Dan issa huwa l-info dwar il-familja f scan tal-funzjonijiet.
I tista 'wkoll tagħmel f bniedem, miftuħa, u li ser tagħti me-dettalji ta' dak.
Mela jekk inti taf liema funzjoni qed tuża, jew inti qed taqra kodiċi
u inti tara xi funzjoni u int simili, "X'jagħmel din do?"
Just bniedem Isem funzjoni li.
Hemm ftit eżempji stramb fejn inti jista 'jkollhom jgħidu
simili. bniedem 2 li isem il-funzjoni, jew bniedem 3 li isem il-funzjoni,
iżda inti biss għandek tagħmel li jekk bniedem funzjoni isem ma jiġri biex jaħdmu l-ewwel darba.
[Student] Allura jien qari tal-paġna bniedem għall miftuħ, imma jien xorta konfuż dwar kif tuża dan u l-programm.
Okay. A lott tal-paġni bniedem huma inqas minn utli.
Huma qed aktar utli jekk inti diġà taf dak li jagħmlu
u allura inti biss jeħtieġ li jiftakru l-ordni tal-argumenti jew xi ħaġa.
Jew jistgħu jagħtuk ħarsa ġenerali, iżda xi wħud minnhom huma ferm kbira.
Bħal f scan f, ukoll. Dan jagħtik l-informazzjoni għal kulħadd ta 'dawn il-funzjonijiet,
u 1 linja stabbiliti hawn jiġri jiġifieri, "F scan f jaqra mill-punt sekwenza jew nixxiegħa."
Imma f miftuħa. Allura, kif se nużaw f miftuħ?
L-idea ta 'programm li teħtieġ li tagħmel fajl I / O huwa li
inti l-ewwel bżonn biex tiftaħ il-fajl inti tixtieq li tagħmel affarijiet ma ', u inevitabbilment,
aqra l-affarijiet minn dak fajl u tagħmel Jittieħed magħhom.
F miftuħ huwa dak li nużaw biex tiftaħ il-fajl.
Il-ħaġa nikbru lura, iva, liema fajl irridu li tiftaħ, huwa jagħtina l -
fil hawn jgħid "/ utent / sehem / dict / kliem."
Dan huwa l-fajl li aħna rridu li tiftaħ, u rridu li tiftħu -
irridu espliċitament jispeċifika jekk irridu li tiftaħ li taqra jew jekk irridu li tiftaħ jiktbu.
Hemm ftit ta 'kombinazzjonijiet u l-għalf, imma irridu li tiftaħ dan għall-qari.
Aħna rridu li jinqara mill-fajl.
Allura dak li ma dan ir-ritorn? Hija prospetti fajl stilla (*),
u jien ser juru biss dak kollu fil-f varjabbli, hekk *,
għal darb'oħra, huwa pointer, iżda aħna ma jridux jiffaċċjaw pointers.
Inti tista 'taħseb f bħala, f issa hija l-varjabbli int ser tuża biex jirrappreżentaw il-fajl.
Mela jekk inti tixtieq li jinqara mill-fajl, inti taqra minn f.
Jekk inti tixtieq li tagħlaq il-fajl, inti qrib f.
Allura fl-aħħar tal-programm meta aħna inevitabbilment tixtieq li tagħlaq il-fajl, dak li għandu nagħmlu?
Aħna rridu li tagħlaq f.
Allura issa l-funzjoni fajl aħħar li aħna qed tmur jridu jużaw huwa scan f, f f scan.
U dak li ma huwa skanijiet fuq il-fajl tfittex għal mudell biex jaqblu.
Ħarsa lejn il-paġna bniedem hawn, naraw int f f scan, jinjora l-valur tar-ritorn għal issa.
L-ewwel argument hija l-fluss * fajl, għalhekk l-ewwel argument aħna qed tmur jridu jgħaddu huwa f.
Aħna iskannjar fuq f.
It-tieni argument hija sekwenza format.
I se jtik string format dritt issa.
I think we jiġri li jgħidu, 127s \ n, lott ta 'li l-bla bżonn.
L-idea ta 'dak li sekwenza format huwa, huwa inti tista' taħseb f scan bħala l-oppost ta 'f istampar.
Allura print f, f istampar aħna wkoll jużaw dan it-tip ta 'parametru format,
iżda f istampar dak li aħna qed tagħmel hu - ejja nħarsu lejn ekwivalenti.
Allura print f, u hemm attwalment ukoll f istampar f, fejn l-ewwel argument se tkun f.
Meta tistampa f, nistgħu ngħidu xi ħaġa simili, "print 127s \ n" u mbagħad jekk irridu tgħaddiha xi spag,
li għaddej biex tipprintja din string u mbagħad linja ġdida.
Liema 127 mezzi, jien pretty żgur, imma stajt qatt ristrett ruħi miegħu,
Inti lanqas biss jeħtieġ li jingħad 127 "fil-f istampar,
imma dak li jfisser hu jistampaw l-ewwel 127 karattri.
Hekk jien pjuttost ċert li huwa l-każ. Tista 'Google għal dan.
Iżda fil-wieħed li jmiss jien kważi pożittiv, dan ifisser li.
Allura dan huwa jistampaw l-ewwel 127 karattri, segwit minn linja ġdida.
F scan f issa, minflok tħares lejn varjabbli u l-istampar hija,
li għaddej biex tħares lejn xi spag, u jaħżnu l-mudell fil-varjabbli.
Ejja attwalment jużaw f scan fil-eżempju differenti.
Mela ejja ngħidu li kellna xi int, x = 4,
u ridna li toħloq sensiela magħmula minn - riedu joħolqu l-sekwenza
li kien simili, dan se toħroġ ħafna aktar tard,
xi ħaġa li biss bħal 4.jpg.
Allura dan jista 'jkun ta' programm fejn inti se jkollhom counter somma,
qosor kontra i, u inti tixtieq li tiffranka mazz ta 'stampi.
Allura inti tixtieq li jiffrankaw i.jpg, fejn i hija xi iterazzjoni ta 'linja tiegħek.
Allura kif nistgħu jagħmlu din string għal dak JPEG?
Jekk int riedu li jistampaw 4.jpg, nistgħu biss jgħidu f istampar, d.jpg%,
u allura print għal dik JPEG.
Iżda jekk irridu li jiffrankaw l-4.jpg string, nużaw f scan.
Allura string s - fil-fatt aħna can't - karattru, char i, immorru 100.
So I biss ddikjarat uħud firxa ta '100 karattru,
u dan huwa dak li aħna qed inevitabbilment se tkun ħażna li JPEG pulzieri
Allura aħna qed tmur għall-użu f scan, u l-format, kif aħna ngħid d.jpg%
sabiex jistampaw 4.jpg, il-format ta 'dan se tkun d.jpg%.
Allura l-format huwa d.jpg%, dak li rridu li tissostitwixxi d% ma huwa x-
u issa għandna bżonn li taħżen din string x'imkien.
U fejn aħna qed tmur biex taħżen din is-sekwenza huwa fl-i firxa.
Allura wara din il-linja tal-kodiċi, i, jekk aħna jistampaw, f% i tal-i varjabbli,
li għaddej biex jistampaw 4.jpg.
Allura f scan f huwa l-istess bħal scan f, ħlief issa huwa tħares fuq dan il-fajl
għal dak li jaħżen fl-i.
Dak hu l-aħħar argument se tkun.
Aħna tixtieq li taħżen - "f Scan familja ta 'scans funzjonijiet kemm fil skont il-format kif ppruvaw hawn taħt.
Jekk xi huma maħżuna fil-punti lokazzjoni inti tista 'ritorn - "
Le, aħna jista 'jkun tajjeb. Let me think għat-tieni.
Allura scan f ma - dak l-Heck hija l-funzjoni li ma li?
Allura scan f mhux se jieħu integer u jagħmlu dot jpg.
Huwa ser [Mumbles].
Ħlief varjabbli int fil string int C.
X'inhu dan il-varjabbli, jew dak li huwa din il-funzjoni imsejħa?
Iva. That's - iva. Allura dak I kien li tiddefinixxi lilek qabel kienet i f istampar,
li - li jagħmel sens ħafna aktar, għaliex I qal li kien ferm aktar simili f print.
Scan f għadu tip ta 'bħal f istampar, iżda f istampar i se scan dan matul
u tissostitwixxi l-varjabbli u issa jaħżnu sekwenza.
Minflok l-istampar hija, li taħżnu fil string.
Allura jinjora dak kollox. Inti xorta tista 'taħseb l-specifier format kif bħal dik ta' f istampar.
Allura issa, jekk ridna li jagħmlu l-ħaġa 4.jpg, aħna se nagħmlu f istampar s, x 'dan.
Allura dak li scan f qed tagħmel - dak li kien il-mistoqsija tiegħek se tkun?
[Student] Jien biss konfuż dwar dak li aħna qed tipprova tagħmel dritt hawn
ma 'dak JPEG. Tista 'tispjega dak iż-żmien 1 aktar?
Allura dan kien - huwa relevanti ta 'inqas għal f scan f issa; wieħed jittama, se jorbtu lura f'xi tip ta' mod.
Imma dak I inizjalment kien l-intenzjoni li juru kien - dan huwa attwalment direttament rilevanti għal dawn [?? F5]
Inti se tkun qed tuża f istampar i, fejn, ngħidu aħna 100 immaġini,
u inti tixtieq li taqra immaġini 1.jpg, 2.jpg, 3.jpg.
Allura biex tagħmel dan, għandek bżonn li f miftuħa, u allura inti għandek tgħaddi fis-sekwenza li inti tixtieq li tiftaħ.
Allura aħna rridu li tiftaħ 1.jpg; sabiex jinħolqu l-sekwenza li hija 1.jpg,
nagħmlu s print f ta '% d.jpg--aħna ma tagħmel għall-i int = 0.
i <40, i + +.
Allura% s f print d.jpg ta 'i.
Allura wara din il-linja, issa l-varjabbli jew il-s array se 1.jpg.
Or, 0.jpg, 1.jpg, 2.jpg. U hekk aħna tista 'tiftaħ, imbagħad, kull immaġini għall-qari.
Allura dan huwa dak i jistampaw f ma. Inti tara dak i jistampaw f issa qed tagħmel?
[Student] Okay, hekk huwa jieħu - joħloq string, something.jpg, u mbagħad taħżnu.
Iva. Hija toħloq - dan huwa pass ieħor string format, bħal f scan u f istampar,
fejn huwa introduċa l-varjabbli fil-tieni argument, jista 'jkun s-kuntrarju i.
Forsi - I jfisser, li huwa l-każ. Imma tkun xi tkun l-ordni ta 'argumenti huwa.
Huwa ser daħħal il-varjabbli kollha fis-sekwenza format
u mbagħad aħżen fi buffer tagħna; nitolbu li buffer, huwa fejn aħna qed jaħżnu l-sekwenza.
Allura aħna qed jaħżnu ġewwa ta 's-sekwenza kif suppost-formattjati, d% li ġew sostitwiti bl 4.
[Student] Mela jekk aħna ma dan, huwa l-f varjabbli biss se tiġi assenjata?
Iva. Allura għandna tagħlaq il-f oriġinali qabel ma tagħmel dan.
Imma - u allura wkoll, kieku ma kienx hemm xi f jiftħu hawn, allura aħna jeħtieġ li jgħidu -
Yeah. Iżda hija kienet ser tiftaħ fajls mitt differenti.
[Student] Imma aħna mhux se tkun tista 'aċċess jew - okay.
Okay. Allura scan f, f scan f, huwa tip ta 'l-istess idea,
iżda minflok, minflok maħżuna ġo string, huwa aktar simili inti issa
jmorru fuq Sting u l-mudell tqabbil kontra dik string u l-ħażna r-riżultati fis varjabbli.
Tista 'tuża f scan biex parse fuq xi ħaġa bħal 4.jpg, u jaħżnu l-4 integer fis x int somma.
Dak hu li nistgħu nużaw f scan għall.
F scan f se tagħmel dan fil-linja tal-kmand.
Jien fil-fatt pretty żgur dan huwa dak li l-librerija CS50 ma.
Allura meta inti tgħidli, "nikseb int," huwa scan f-Ing fuq - f scan huwa l-mod ikollok l-input utent.
F scan f se tagħmel l-istess ħaġa, iżda bl-użu ta 'fajl li scan fuq.
Allura hawn, aħna huma li jiskanja fuq dan il-fajl.
Il-mudell li qed nippruvaw biex jaqblu xi sekwenza li hu 127 karattri fit-tul
segwit minn linja ġdida
Hekk jien pretty żgur nistgħu anki sempliċement jgħidu "jaqblu i," peress li fl-dizzjunarju
aħna jiġri li jkollhom, aħna qed garantit l-ebda kelma hija li fit-tul,
u wkoll f f scan, naħseb, se tieqaf fil-linja l-ġdida x'ikun.
Iżda aħna ser jinkludu l-linja l-ġdida fil-logħba, u -
[Student] Jekk aħna ma kinux jinkludu l-linja l-ġdida, ma kienx ikun issib partijiet ta 'kelma?
Hija - kull - tħares lejn l dizzjunarju -
Għalhekk fl-dizzjunarju, dawn huma kollha ta 'kliem tagħna.
Kull wieħed ikun fuq linja ġdida.
Il f scan se jtellgħu din il-kelma.
Jekk aħna ma jinkludux il-linja l-ġdida, allura huwa possibbli li l-f iskan li jmiss se biss aqra l-linja l-ġdida.
Iżda inkluż linja l-ġdida allura se biss jinjora l-linja l-ġdida.
Imma aħna qatt ser tingħata parti ta 'kelma, peress li aħna dejjem qari sa linja ġdida, irrelevanti x'inhu.
[Student] Imma x'jiġri jekk inti tfittex għall-kelma "cissa," bħal cissa.
Se ssib li, u jgħidu li l-logħba?
Allura hawnhekk għandna - li se tinqara - dan huwa attwalment punt tajjeb.
Aħna qatt ma jużaw l-kurrent - il-kelma aħna qed tfittex huwa l-ewwel argument linja tal-kmand.
Allura, spag kelma = ARGV 1.
Allura l-sekwenza aħna qed tfittex huwa ARGV 1.
Aħna mhux qed infittxu kelma fil-livelli kollha fil-f scan tagħna.
Dak li aħna kienu qed jagħmlu mal scan f huwa jkollna kull kelma fid-dizzjunarju,
u mbagħad darba għandna din il-kelma aħna qed tmur għall-użu strcmp biex iqabblu lilhom.
Aħna ser iqabblu kelma tagħna u dak li aħna aqra biss pulzieri
Allura inevitabbilment, aħna qed tmur biex jispiċċaw jagħmlu mazz ta 'scan fs
sakemm huwa biss hekk jiġri li f scan se terġa 'lura -
huwa ser jerġa wieħed, sakemm din tkun imqabbla kelma ġdida,
u ser jirritorna xi ħaġa oħra hekk kif naqset milli tqabbel il-kelma.
Aħna huma qari fuq il-dizzjunarju kollu, il-ħażna linja b'linja kull kelma fil-varjabbli i.
Imbagħad aħna jitqabblu kelma bil i, u jekk il-paragun == 0,
strcmp jiġri biex iġibu 0 jekk taqbila sar.
Mela jekk kien 0, allura nistgħu jistampaw f, mqabbla,
jew kelma hija fil-dizzjunarju, jew kwalunkwe inti tixtieq li jistampaw f.
U mbagħad - aħna ma rridux li f qrib fuq u aktar mill-ġdid.
Dan hu t-tip ta 'ħaġa li rridu nagħmlu, u aħna mhux biss tfittex għal kelma fil-dizzjunarju.
Allura nistgħu nagħmlu dan, jekk ridna li tfittex mudell tagħhom, cissa, bħalek qal qabel,
jekk ridna li tfittex li mudell, allura jonqsu fil-każ
għaliex li mhux attwalment kelma, iżda wieħed mill-kliem fil-dizzjunarju jiġri li jkollhom li fiha.
Għalhekk ikun jaqblu din il-kelma, iżda dan is-subsett tal-kelma mhijiex kelma nnifisha.
Iżda li mhux kif aħna qed tużaha; aħna qed qari f'kull kelma
u mbagħad jitqabblu l-kelma li għandna ma 'din il-kelma.
Allura aħna qed dejjem jqabbel kliem sħiħ.
I tista 'tibgħat l-soluzzjonijiet finalizzati aktar tard.
Dan huwa tip ta 'kważi t-tweġiba ġusta, naħseb.
[Kumment Student, mhux intelliġibbli]
Oh, ma nista 'jeħles li qabel? Char i, I raden aħna qal 127 - ninsa dak li l-akbar huwa.
Aħna ser biss tagħmel 128; hekk issa i huwa twil biżżejjed.
M'għandniex bżonn li jistampaw xejn.
Aħna wkoll se jridu li jkollhom li tagħlaq fajl tagħna, u li għandu jkun madwar il-tweġiba t-tajba.
CS50.TV