[Powered by Google Translate] [Ġimgħa 3]
[David J. Malan - Università ta 'Harvard]
[Dan huwa CS50. - CS50.TV]
Let me tidderieġi us fid-direzzjoni ta 'fejn aħna jitħalla' off-aħħar darba,
li kien jibdew jaħsbu ftit aktar minn madwar sintassi
u jippruvaw jaħsbu ftit inqas dwar kollha tal-dettalji
li jieħu ftit ta 'żmien biex aklimatizza għal s'issa f'termini ta' semicolons
u parentesi u ċingi kaboċċi,
biex jibdew jieħdu affarijiet ftit għal livell kunċettwali ogħla
sabiex il-problemi li għandna issa tibda issolvi matul il-ġimgħat diversi li jmiss
ser jinvolvu aktar fis problemi f'livell għola konċettwali
u ftit inqas fis-sintattika kif ikollok saqajn tiegħek imxarrab
u idejk maħmuġ ma 'wħud mill-sintassi minn dawn aħħar ftit ġimgħat.
>> Allura ifakkar li ġimgħa li għaddiet aħna introduċiet dan il-kunċett ta 'firxa.
U firxa bl-Ingliż tista 'tiġi deskritta bħala xiex? >> [Rispons istudent inaudible]
Jiddispjacini?
A ġbir ta '? >> [Rispons istudent inaudible] >> Okay, tajba.
A ġbir ta 'oġġetti. Allura rajna arrays fil Scratch.
Jekk inti ġara li tuża għal pset 0 1 tal-listi Scratch li inti tista 'ttawwal l-affarijiet
bħall-larinġ u l-banana fi, inventarju ta 'tipi,
dan huwa tip ta 'bħal dak li l-firxa hija.
U mbagħad aktar teknikament, fil-kuntest ta 'kompjuter attwali,
firxa hija sempliċement blokki kontigwi ta 'memorja.
Fi kliem ieħor, inti għandek byte, imbagħad ieħor byte, imbagħad ieħor byte, imbagħad ieħor byte,
u jekk ġejt biex tiġbed dawk bytes fi stampa,
huma jkunu dahar ma 'dahar lura lura. Dak hu li aħna jfisser minn kontigwi.
>> Allura huwa numru byte 1, imbagħad 2, imbagħad 3.
Dan ma jfissirx up hawn, up hawn, up hawn, up here.
Firxa hija blokki kontigwi ta '0 jew aktar bytes.
Allura liema huma utli għall?
Recall kellna dan it-tip ta 'eżempju artifiċjali ta' gradi kwizz nies ħażna taċ fi programm
biex tiġi kkalkulata bħala medja kwizz tiegħek għal xi kors,
u jfakkru li nistgħu tibda bil-miktub dak il-programm billi jiddikjara quiz1 varjabbli.
Imbagħad jista 'jkollna ieħor varjabbli imsejħa quiz2.
Iżda mbagħad jekk kien hemm 3 kwizzijiet f'din il-klassi, quiz4.
Jew jekk kien hemm kwizz ta 'kull ġimgħa, ikun quiz5, quiz6, quiz7.
Allura inti għandek kollha ta 'dawn il-varjabbli iddikjarat ġewwa ta prinċipali
jew x'imkien ieħor fil-programm tiegħek,
u l-problema ma 'dan l-approċċ, faċli għalkemm huwa biss kopja u paste,
huwa huwa biss ferm malajr isir impossibbli.
Alla jipprojbixxu inti fil-fatt ikollhom 30 kwizzijiet jew 50 kwiżż.
Jekk huwa simili iskola għolja stil kwizz pop kuljum,
allura inti biss jkollhom lista twila ta 'ridiculously varjabbli li jiġu dikjarati,
u dan biss malajr ħafna gets out ta 'kontroll.
Huwa ikrah, huwa diffiċli li żżomm, huwa daqstant faċli li tagħmel typo
jekk ikollok numru 1 mistyped x'imkien fil-programm tiegħek.
>> Allura aħna introduċiet il-kunċett ta 'firxa minflok.
U tfakkar li aħna implimentat dan il-programm billi tagħmel ftit xi ħaġa bħal din.
Let me go fis lum Sors tad-direttorju Tnejn 3
u jiftħu firxa, li rajna aħħar darba.
U anki jekk kien hemm koppja ta 'tricks C ġodda hawn,
fosthom il-kunċett ta 'kostanti,
ifakkar li aħna ddikjarat sufruni multipli essenzjalment billi jużaw dan sintassi:
float, allura l-isem tal-varjabbli, allura aħna użati ċingi kwadru verament għall-ewwel darba,
u dak li għamilna ġewwa ta 'dawk ċingi kwadru kienet effettivament tqiegħed numru.
Iżda minflok ta 'tqegħid ta' numru, nressaq din il-kelma kapitalizzat, kwizzijiet.
U dak kien il-motivazzjoni għat-tqegħid kelma kapitalizzat bħal kwizzijiet
u mbagħad tuża trick 17 linja ta hawn biex effettivament jagħtu illi numru?
Liema kienet l-motivazzjoni hemmhekk? Yeah.
>> [Rispons istudent inaudible] >> Eżattament.
Jekk irridu li jibdlu dak il-valur 2, aħna biss biex jibdlu in 1 post
għaliex jikkunsidraw - I lanqas biss tiftakar dak li dan il-programm ma eżattament,
imma jekk inti biss skim tara kwizzijiet, kwizzijiet.
You see kwizzijiet, stabbiliti hawn aktar kwizzijiet.
Allura jekk aħna ma kellhomx din il-kostanti, dan l-użu ta 'sharp jiddefinixxu,
aħna kieku ittajpjat 2, allura 2, allura 2, allura 2, li huwa multa. Ikun daqstant korrett.
Iżda jissoponi li sena d-dieħla għandna 3 kwizzijiet fil CS50.
So I ikollhom imorru u taġġorna l-kodiċi, I għandhom recompile dan,
iżda l-problema hija jekk nagħmel xi ħaġa stupid, bħal I jinjoraw 1 tismija ta '2
u tinsa li plug fi 3, il-programm kollu jista 'tajjeb ħafna break.
Allura aħna qed biss tistaqsi għall-inkwiet.
>> Allura l-kunċett ta 'kostanti hija kollha dwar factoring barra xi biċċa ta' data,
jekk huwa string jew char jew float jew kwalunkwe,
u li tiddikjaraha 1 post sabiex inti tista 'aktar faċilment bidla fil-futur.
U huwa wkoll, franchement, daqsxejn aktar faċli biex jinqraw għaliex jekk inti biss jaħsbu ta 'dan issa,
huwa kwizzijiet, jew nistgħu saħansitra semmi mill-ġdid xi ħaġa bħal NUMBER_OF_QUIZZES
jew aktar espliċita xi ħaġa.
Il-kodiċi biss isir ftit aktar ovvju li dak li qed jagħmel,
u inti wonder ftit inqas dak in-numru 2 jista 'jiġri li jfisser.
Allura l-kostanti ma kellu xejn x'jaqsam fundamentalment ma 'arrays.
Il-firxa kienet introdotta permezz ta 'dawn il-ċingi kwadru.
>> Allura tinnota li fil-linja 23 nitolbu lill-utent, "Liema kienu punteġġi kwizz tiegħek?"
Imbagħad aħna biss għandhom dan loop li apparentement jitlob lill-utent għall-gradi tagħhom. Kif?
Hija ttenni 0-2. U jien ngħid 2 minħabba kwizzijiet f'kull limiti bħalissa 2.
Għalhekk ttenni minn 0 sa 2 u allura tistampa Quiz # ħaġa ta 'xi ħaġa,
u mbagħad tuża GetFloat tikseb valur mill-utent.
Allura Avviż dan huwa l-uniku element ġdid ieħor ta 'sintassi minn aħħar Erbgħa.
Jekk inti tixtieq li taħżen xi ħaġa f'post partikolari f'dak array,
inti terġa 'tuża l-parentesi kwadri.
>> Allura hemm daqsxejn ta dikotomija hawn.
L-ewwel darba li tuża l-parentesi kwadri
inti tużaha biex tispeċifika kemm hu kbir trid li l-firxa li tkun.
Iżda f'dan il-kuntest li jmiss hawn fejn aħna jimpjegaw mill-ġdid dawn il-parentesi kwadri
ifisser jekk f'dik firxa inti tixtieq li tqiegħed xi valur?
U d-distinzjoni hawnhekk tista 'tiġi dedotta mill-kuntest.
Avviż hawnhekk għandna tip ta 'data, allura għandna l-isem ta' varjabbli,
allura għandna ċingi kwadru tagħna ma 'numru ġewwa, virgola. Li minnu.
Allura thats dikjarazzjoni.
Huwa biss kif għalkemm aħna kienu għamlu xi ħaġa bħal float grade1; float Grade2;
iżda għal darb'oħra, dan malajr ħafna hija rriżervata fil-kopja mod wisq, pejst,
hekk minflok aħna biss simplifikati bħala tali,
li jfisser issa għandna grad li tista 'tiġi maħżuna bracket 0,
għandna ieħor grad li tista 'tiġi maħżuna bracket 1,
imma dak jekk I goof u, per eżempju, linja tiegħi tmur s'issa -
per eżempju, I jagħmlu dan inqas minn jew ugwali għal,
li jfakkru kien is-sors ta 'bug preċedenti -
li effettivament ifisser li fuq xi iterazzjoni aċċidentali 3 ta 'dan loop
I użu parentesi 2. Effettivament, dak li jista 'jiġri hawn? Jiddispjacini?
[Student] Huwa ser jiġi sostitwit. >> Huwa ser jiġu sostitwiti?
Liema jkun mibdul?
Dan litteralment huwa qal jissostitwixxi dak li hu fil-post 2 mal-valur tar-ritorn ta 'GetFloat.
Iżda l-problema hija kemm hu kbir huwa l-array f'dan il-punt fl-istorja?
[Rispons inaudible student] >> Il-firxa għadu biss ta 'daqs 2
minħabba li l-firxa, bħal kull varjabbli, ġie ddikjarat l-ewwel, qabel we użat,
u aħna speċifikati hawn minħabba dan kostanti li għandi 2 gradi li jien ser tpoġġi.
>> Imma ftakar, il-xjenzjati tal-kompjuter jibdew jingħaddu minn 0.
Allura l-ewwel post f'dak firxa hija kategorija 0.
Il-post li jmiss huwa 1. Din hija ħaġa dejjem hekk ftit wisq fuq il-ġenb.
Allura fi kliem ieħor, jekk I attwalment kellu dan array -
u let me tara kif ukoll dan tikkopera hawn għalina -
jekk I jkollhom firxa li stajt sempliċiment mfassla kif ġej
u stajt allokati spazju għal 2 elementi, I jista 'jiġbed dan bħal dan fil-memorja
fejn dan kanvas abjad kbira hija.
Huwa biss l-RAM għandi fil-kompjuter tiegħi, GIG ta 'RAM, 2 gigs ta RAM, tkun xi tkun,
iżda dawn il-kaxxi 2 issa individwalment jirrappreżentaw float, 32 bits.
Mela jekk nressaq numru 1 hawn bħal 1.0, allura nressaq numru ieħor hawn simili 3.2
iżda mbagħad I do bracket 2, li huwa simili tqegħid xi ħaġa hawn.
U kif l-istampa jissuġġerixxi, m'hemm xejn hemm.
Huwa tip ta 'bħal art ebda raġel minħabba I ma talabx-sistema operattiva
li tagħti me dan il-kwizz 3.
Jekk jien ma tixtieq li kwizz 3, I kellha l-previdenza
li titlob lill-sistema operattiva għal dan billi tiddikjara kwizzijiet biex ma jkunux 2
iżda biex minflok ugwali 3.
>> Allura fi kliem ieħor, l-istampa li għandna effettivament ikollhom fil-idejn tidher bħal dan hawn.
Dan għal darb'oħra huwa art ebda raġel. Aħna aħjar ma tippruvax miktub valuri hawnhekk.
Iżda għal darb'oħra, xjenzjati tal-kompjuter minħabba għadd minn 0,
meta nitkellmu dwar dan il-post fil-firxa, li suppost li tkun post 0,
dan suppost tkun post 1, u dan ma jeżistux
għaliex aħna biss talab lill-sistema operattiva għal 2 postijiet.
Allura dawk tal inti ma esperjenza ta 'programmazzjoni preċedenti minn lingwi oħra
tista 'taf li dan mhux dejjem il-każ ma' arrays jew affarijiet imsejħa vettori.
Pjuttost, inti tista 'sempliċement iżommu żżid u żżid u żżid affarijiet li arrays,
li, franchement, kellna dik l-abbiltà fis Scratch u għadhom aħna jidhru li taw it up here
għaliex ma inti C programmazzjoni ħafna aktar espliċitu.
Huwa biss int u l-kompjuter dritt issa, u l-kompjuter huwa biss se tagħmel
dak li inti tgħid li tagħmel.
Mela jekk inti biss għid li jtik 2 sufruni permezz ta 'linja 22 hawn,
li kollox int ser terġa 'lura mis-sistema operattiva: spazju għall-2.
>> Allura dejjem qed programmi tiegħek ser kultant tkun Buggy fir-rigward arrays.
Dan huwa biss it-tip tan-natura ta 'l-kruha li biha lkoll huma fallible,
u f'xi punt inti se indiċi probabbli ħafna lil hinn mill-konfini ta 'firxa tiegħek.
U dan huwa biss mod fancy ta 'tgħid li inti marru fis xi ħaġa bracket
u xi ħaġa kien biss kbira wisq ta 'numru. Inti marru lil hinn mill-limiti tal-firxa tiegħek.
Iżda l-rasu issa huwa dan.
Il-bqija ta 'dan il-programm verament m'għandha x'taqsam xejn fundamentalment ma' arrays.
Dan kollu biss dwar xi aritmetiku sempliċi għall-medji tal-kompjuter.
Allura aħna għandna hawn f'dan għat loop hawn ewwel somma varjabbli msejħa li aħna initialize għal 0.
Imbagħad aħna jtenni minn 0 sa 2 darb'oħra u aħna żid għal din il-varjabbli kalkolu totali
il-grad ith, hekk parentesi 0 allura bracket 1.
U allura kif inti tagħmel fl-iskola grad biex tiġi kkalkulata l-medja,
aħna sempliċiment jieħdu dik is-somma, diviża bin-numru totali ta 'kwizzijiet,
u mbagħad għal miżura tajba aħna sejħa funzjoni hawn imsejjaħ tond.
>> Issa, bħala twarrib, dak li huwa l-ftehim ma 'dan int parenthetical on line 34?
Jista għandhom joħorġu diġà fis-sezzjoni, ma jkunux verament tkellem dwar dan formalment hawnhekk,
imma dak li hu dan int fil parens probabilment tagħmel? >> [Rispons istudent inaudible]
Yeah, dan jirreferi għall-ikkastjar jew typecasting,
li tfisser it-teħid 1 tad-dejta tat-tip u dan jinbidel għal ieħor.
Inti ma tistax tagħmel dan ma 'kull tip ta' data minħabba li xi kultant ikun daqsxejn stramba.
Iżda f'dan il-każ, jekk il-valur tar-ritorn ta round huwa float
minħabba li, wara kollox, jien tieħu float u jaqsmuh minn numru simili 2,
Jien ser terġa 'lura float.
Iżda n-nies iskola grad ma verament jixtieq ikun jaf li l-medja tagħhom kien 93.4
għaliex dawn ser jirrealizzaw li kienu qatt tant qrib il-punt arrotondament 95.
>> Allura rridu minflok jużaw int li jarrotondaw kulħadd biex l-int eqreb,
li f'dan il-każ se tkun 94 bl-ebda punt wara dan.
Hekk li jinsab biss trick matematika ftit.
U aħna ser terġa 'lura għal dan il-kunċett ta' ikkastjar minħabba li se jkollha implikazzjonijiet,
jekk inti ma jkunux skoperti diġà, għall-problema stabbilita 2.
Allura firxa allura, inti tista 'taħseb - li għaddej biex jagħmlu me daħka ġurnata kollha.
Jidher qisu dan jekk inti tfassal stampa ta 'dan,
iżda l-importanti huwa li d-daqs huwa wkoll magħżula minnek
meta inti titlob mis-sistema operattiva.
Kwalunkwe mistoqsijiet imbagħad fuq matriċi? Yeah.
[Kwistjoni student inaudible]
Ah, mistoqsija tajba.
Il-kwistjoni huwa dak li jiġri lill-0 null fil-firxa? Ma teżistix f'dan il-kuntest.
Dan jeżisti biss fil-kuntest ta 'spag, li aħna qed dwar li ġejjin fil-ftit mument.
Iżda għal firxa, bħal f'dan il-każ, kull ikollok huwa dak li inti titlob lill-sistema operattiva għal.
>> U bħala twarrib, lest dan ikun ċar,
I iżommu qal li inti titlob lill-sistema operattiva, titlob lill-sistema operattiva.
Sistema operattiva, kif inti probabilment taf, huwa Mac OS, Windows, Linux.
Meta int ssejjaħ funzjonijiet simili GetFloat
jew inti tiddikjara varjabbli bħall gradi,
fl-aħħar tal-ġurnata inti effettivament tistaqsi xi ħadd ieħor li jtik li l-memorja
għaliex aħna bħala jaspiraw programmaturi
m'għandhom l-ebda idea kif fil-fatt tikseb aċċess fiżiku għall-memorja.
Iżda xi ħadd ma: is-sistema operattiva.
Allura minbarra jippreżentaw lilna ma ikoni pretty u l-menus u folders u simili
li tara fuq id-desktop tiegħek, jekk Mac jew PC,
sistemi operattivi wkoll tagħmel l-għalf livell baxx mundane,
l-għalf ferm teknika tal-ġestjoni tal-gigabyte
jew 2 gigabytes ta 'memorja li għandek, ġestjoni tal-CPU li għandek, u oħrajn.
Allura meta int bil-miktub il-kodiċi,
int verament hooking fis-sistema operattiva tiegħek f'dan is-sens.
Jien ser ikollhom biex jimminimizzaw dan. Kull dritt.
>> Mistoqsijiet oħra dwar arrays?
Nru? Okay.
Allura l-tranżizzjoni b'mod naturali minn matriċi huwa attwalment suġġett li l-daqsxejn familjari.
U aħna ħares qatt tant qosor f'dan il-ħin l-aħħar wisq.
Dan kien eżempju string minn l-Erbgħa.
Dan l-eżempju string kien programm pjuttost sempliċi,
u stajt attwalment simplifikata lilha minn koppja ta 'linji għal skopijiet tal-lum.
Kull ma fil-linja 19 hija tikseb string mill-utent, tirreġistrahom ġo varjabbli msejħa s.
Imbagħad fl-22 linja 'il quddiem huwa apparentement istampar li string 1 karattru għal kull linja.
Imma kif huwa tagħmel dan?
Aħna qed tiddikkjara i varjabbli, dan ikun iffissat ugwali għal 0,
u dan qed isir drawwa qadima issa.
Aħna ma kinux jidhru f'dan sa l-Erbgħa, iżda inti tista 'tip ta' jiddeduċu minn isimha
strlen jirritorna dak meta jingħata s? It-tul tas-sekwenza.
Mela jekk jien tgħaddih string, kwotazzjoni-unquote DAVID,
huwa wieħed jittama se jirritornaw lili n-numru 5 minħabba DAVID.
Allura dak l-iskop tagħha fil-ħajja huwa li tieħu string, kemm jekk iebes kodifikati minnek
jew f'dan il-każ pplaggjata bħala varjabbli, bħala argument,
u figuri barra dak it-tul ta 'dak sekwenza hu.
>> Allura hawn issa aħna qed tissellef xi notazzjoni mill-eżempju kwizz preċedenti.
Dan m'għandha x'taqsam xejn ma 'sufruni, m'għandha x'taqsam xejn ma' kwizzijiet,
iżda jirriżulta li l-jimteddu ftit abjad aħna kont qed tghidlek mill-ġimgħa 1
hija li string ma verament jeżistu C.
A string fl-aħħar tal-ġurnata hija verament ftit firxa.
Huwa ta 'firxa ta' bytes, hekk byte, byte, byte, byte, li jfakkru huwa biss 8 bits,
hekk blokki ta 'memorja, blokki ta' memorja, blokki ta 'memorja, blokki tal-memorja.
U l-mezzi li bihom string huwa implimentat
huwa billi l-ewwel karattru hawnhekk,
allura hawnhekk, allura hawnhekk, allura hawnhekk, lura lura lura fil-memorja tal-kompjuter.
Mela jekk int riedu li jespliċitaw kelma bħal HELLO, inti tpoġġi karattru H 1,
allura E, allura l allura L, imbagħad O - 5 karattri b'kollox - x'imkien fil RAM kompjuter tiegħek.
Iżda l-dettall prinċipali hawnhekk hija li dawn qed tmur biex tkun lura lura lura biex lura,
dritt li jmiss ma 'xulxin.
Meta meta ngħid i [i], dak bl-Ingliż huwa dan li tagħti me?
X'jagħmel s [i] jirrappreżentaw f'dan il-każ? Yeah.
>> [Student] Il-karattru ith fil-sekwenza. >> Eżattament. Il-karattru ith fil-sekwenza.
Issa, i se tibda fil 0 kif kull tiegħi għal loop hawn,
iżda li tajjeb għaliex kollox jibda jgħodd minn 0.
Allura s [0] se jirrappreżenta l-ittra H fi ftit kliem bħal HELLO,
s [1] se jirrappreżenta ittra bħal E fil-kelma bħall HELLO, u oħrajn.
U dak li aħna jidhru li tkun qiegħda tagħmel fuq kull iterazzjoni ta 'dan loop
huwa temporanjament ħażna l-karattru ith fil-varjabbli msejħa ċ, li huwa biss char,
u allura aħna qed istampar c
hekk li fl-aħħar tal-ġurnata dak li dan il-programm ma huwa dan li ġej.
Jekk immur fil-direttorju sors u nagħmel string1 u I jimxi 'l quddiem u run string1,
u mbagħad I tip kelma bħal HELLO, Daħħal, kollox ma huwa Stampa din il-karattru 1 kull darba.
>> Allura hemm opportunità għall-irfinar hawn.
Jien xorta li jagħmlu aktar xogħol, anki jekk huwa aktar ċar forsi b'dan il-mod, milli meħtieġ.
Liema linja tal-kodiċi hawn nista probabbilment armih kollox? Yeah.
Linja 24. F'konformità 24 jien tiddikjara ċ varjabbli.
Jien ħażna l-karattru ith ta s fiha, iżda mbagħad jien jużaw ċ hawn.
Allura jien jużaw c, hekk inħoss bħal I tista 'mhux biss tarmi linja 24 bogħod.
[Kumment student inaudible] >> Eżattament.
Allura meta niġu biex jitkellem dwar id-disinn ta 'programmi,
Avviż dan is-simplifikazzjoni żgħira tal-kodiċi, li huwa daqstant tinqara,
imma tirrealizza li s huwa biss varjabbli, tip tad-data tiegħu huwa firxa,
hekk i [i] huwa biss se istantanjament ritorn li inti l-karattru ith f'dak sekwenza.
U jekk inti tixtieq li jistampaw, li l-multa.
Inti sempliċiment għandek tuża ċ% għax int ma istampar string,
int istampar karattru fi string, u dan ukoll għandu l-effett ta 'stampar-karattru ith.
U mfakkra l-unika differenza verament mill-aħħar ġimgħa bl-użu printf
hija li filwaqt li fil-ġimgħat li għaddiet, aħna se nagħmlu xi ħaġa super sempliċi
bħall placeholder l-% s allura l-isem ta 'sekwenza hawn,
Issa aħna qed għadis ftit aktar profonda taħt il-barnuża u qal,
ma print-sekwenza; jistampaw il-karattru uniku hemmhekk.
>> Allura nistgħu nagħmlu xi ħaġa ftit differenti hawn għaliex hemm 1-oħra - mhux bug
għaliex dan il-programm hija tajba, imma jien tagħmel xi ħaġa stupid
li semmejt fil-qosor l-Erbgħa.
Iżda ħsieb lura, kif jista 'disinn dan il-programm jista' jittejjeb saħansitra aktar? Yeah.
[Rispons istudent inaudible] >> Oh, tajba.
Allura tfakkar li aħna introduċiet varjabbli 2 imsejjaħ n-aħħar darba,
li jidher li jkun tikkontradixxi nfusna għaliex l-għan tiegħi t-tieni ilu
kien biss li tarmi l bogħod varjabbli bħala bla bżonn,
iżda tfakkar li nhar l-Erbgħa aħna fil-fatt għamlet dan.
I biddel il-linja għal li attwalment ikollhom comma hawn, allura n = strlen,
u mbagħad minn hawn għamilt i <n, allura jien ma inkrementi tiegħi.
X'inhu l-qligħ fundamentali li jien kisba billi jbiddlu inizjalizzazzjoni tiegħi għal dan
u l-kundizzjoni tiegħi għal din issa? >> [Rispons istudent inaudible] >> Eżattament.
Jien ma jfakkar strlen ġdid u għal darb'oħra u għal darb'oħra minħabba jfakkru kif il-linja għal xogħlijiet.
Anke jekk dawn jibdew biex jiksbu aktar ikkumplikati li tħares,
ifakkar li l-ħaġa qabel l-virgola ewwel huwa l-inizjalizzazzjoni, li jiġri darba.
Il-kondizzjoni, għalkemm, hi fin-nofs,
u dan gets ċċekkjati kull darba li inti tmur permezz tal-linja.
>> Allura huwa tip ta 'stupid li għandha titlob l-kompjuter l-istess kwistjoni mill-ġdid u għal darb'oħra -
X'hemm-tul ta 'HELLO? X'hemm-tul ta 'HELLO? X'hemm-tul ta 'HELLO? -
għaliex kif aħna ser tara llum u nhar l-Erbgħa, dan definittivament se jieħu ż-żmien,
u mhuwiex użu tajjeb ħafna ta 'żmien minħabba biex insemmu l-tul ta' sekwenza
effettivament jieħu daqsxejn ta 'sforz.
Mhuwiex istantanja, kif huwa f'xi lingwa.
Allura billi jinbidlu dan għal n, il-prezz jien ħlas huwa dak?
Aħna qed jaraw kompromess hawn.
I jista 'jiffranka ħin billi ma titlob il-kwistjoni kkritikat istess ġdid u għal darb'oħra,
iżda li għaddej biex ispiża lili xi ħaġa, li huwa dak?
>> [Student] Inti titlef ċertu ammont ta 'memorja. >> Eżattament. Huwa ser tiswieli xi memorja.
Allura f'dan il-każ l-ispejjeż lili dak?
Ieħor bits 32 minħabba n huwa biss int, kif implikat mill-int kelma hawn.
Iżda huwa li okay?
Franchement, dan huwa probabbilment okay għaliex jekk inti taħseb dwarha,
l-itwal-sekwenza huwa, l-aktar ħin jien ser tkun ħela
minħabba strlen hija se tikseb sejjaħ għal darb'oħra u għal darb'oħra u għal darb'oħra
għal kull iterazzjoni tal-linja.
U dawn il-ġranet, Mac tiegħi tkun 2 gigs ta RAM, dawn il-jiem 4 gigs ta RAM kultant.
I think I jistgħu jaffordjaw 4 ta 'dawk bytes li attwalment veloċità affarijiet up.
Iżda din se tkun kompromess u tema verament fl-ipprogrammar u fl-xjenza tal-kompjuter
ta qatt ma jkollna xejn b'xejn.
Jekk inti tixtieq li ttejjeb xi ħaġa hawn, inti għandek tħallas għaliha fl-naħa l-oħra b'xi mod.
Spazju kontra l-ħin f'dan il-każ.
>> Allura dan kien kollu jwassal lejn xi ħaġa mistur bħal din,
li, kif inti probabilment dehret minn issa, fil-fatt jgħid?
[Rispons inaudible student] >> Yeah, għalhekk dan huwa, Kun żgur li tixrob Ovaltine tiegħek,
attwalment billi jintuża algoritmu imsejħa ROT13, ROT 1-3,
li sempliċiment ifisser dawwar kollha tal-ittri 13 postijiet,
li jfisser jieħu A u mbagħad żid 13 sa lilha u jmorru dot, dot, dot
it-triq kollha għall-ittra 13 bogħod, jagħmlu l-istess ħaġa għall-B u għall C u għal D u oħrajn.
U għalhekk jekk aħna verament jikkonvertu dan hawn jużaw bidla ta '13 postijiet,
aħna ser terġa 'lura għal dak Ralphie ftit kellu, li kien, Kun żgur li tixrob Ovaltine tiegħek.
Iżda issa għall-problema stabbilita 2, fl-edizzjoni standard mill-inqas,
inti għandek tip ta 'do dan enciphering lilek innifsek,
u għandna li b'xi mod jieħdu input bħal dan u kriptaġġ jew decrypt dan.
>> Allura liema minn dawn it-tip fundamenti tal twassalna biex dik l-opportunità?
Ejja tagħti ħarsa lejn dan l-eżempju 3 hawn.
L-ewwelnett, huwa msejjaħ ASCII. Xi jfisser ASCII jirreferu lura għal?
Standard Kodiċi Amerikana għall Interchange Informazzjoni,
li huwa mod verament twila ta 'tgħid liema? X'inhu ASCII?
[Inaudible student rispons] >> X'hemm li? >> [Student] A Mappa karattru. >> Mappa karattru.
Hija biss mapep numri għall-ittri minħabba li l-dinja għandha standardizzat
liema numri se jirrappreżenta dak l-ittri sabiex lkoll jistgħu jużaw il-kompjuters
u l-programmi tagħna kollha huma biss kompatibbli meta niġu għall-istampar l-affarijiet fuq l-iskrin.
Allura ifakkar li 65 jiġri li jirrappreżentaw A, 97 jiġri li jirrappreżentaw zghar a.
U hekk dan il-programm sempliċi hawn ASCII qiegħda tieħu vantaġġ ta 'dan il-fatt -
li d-dinja jaf li l-kapital A huwa 65 - u huwa biss istampar tal-mapping.
>> Għalhekk qabel we adsa fis dan il-kodiċi, let me minflok tiftaħ tieqa terminal.
Let me imorru quddiem u jagħmlu ASCII, u mbagħad ejja biss run dan il-ħaġa biss li jħassru l-output.
U hija biss tagħmel dan: ċart verament kbir li biss jgħidlekx me kollha tal-kodiċijiet varji
għall kollha ta 'l-ittri differenti.
Allura sempliċi program super, imma jien ma jkollhom kodiċi iebes dawk il-linji ta 'produzzjoni 52:
26 uppercase, 26 zghar.
Minflok, I ma 'dan programmatically ma' koppja ta 'linji.
Avviż dak li għamilt hawn.
I tennew mill-i huwa 65 dwar sa 65 + 26 għaliex jien ridt li jistampa 26 ittri
fil-alfabett Ingliż, i + + fuq kull iterazzjoni, u issa avviż dan mill-ġdid.
Hu l-ripetizzjoni ta 'typecasting ħabib tagħna
fejn inti jikkonvertu 1 dejta tat-tip għall-ieħor
għaliex dak li nixtieq do f'dan il-programm partikolari?
Irrid għadd numerikament minħabba li l-mod kif I kiber għadd - 65, 66, 67, u oħrajn -
imma ma rridx li jistampaw biss in-numri.
Irrid li jistampaw l-ittra segwita bin-numru.
Irrid li jistampaw A: numru, B: numru, iżda I tista 'tagħmel dan bl-varjabbli eżatt l-istess.
So I jistampa c% bħala placeholder għal karattru,
D% bħala placeholder għal ċifra jew numru.
Imbagħad dak li għandi plagg fl għal dawk placeholders 2?
I plug 1 fl-ekwivalenti karattru ta 'i, u mbagħad I jistampa i stess.
>> Allura Avviż dan wisq biss xogħlijiet.
Hekk kif I jistgħu mitfugħa minn float għal int
sabiex imorru minn numru reali li integer,
here I tista 'tmur minn int lil char, li hija ftit stramb -
ma pjuttost Mappa fuq id-dinja reali - iżda fil-kompjuters
a char huwa biss numru taħt il-barnuża,
hekk aħna qed tkun dejjem hekk espliċita hawn lejn il-kompjuter, qal,
printf, jistampa mhux i bħala 65, ipprintjaha bħala ekwivalenti numerika tagħha.
U jirriżulta jien teknikament ma anki bżonn din.
What I kienet tagħmel mument ilu huwa espliċitament ikkastjar
billi jispeċifikaw liema dejta tat-tip Irrid immur minn u lejn.
Imma avviż li jien diġà għandhom dan ċ% placeholder
u dan ieħor% placeholder ċ hawn.
Anke jekk dan mhux int, il-kompjuter jirrealizza li char,
huwa biss int taħt il-barnuża.
>> Mela jekk jien attwalment recompile dan u terġa 'ssir l-programm ASCII,
tinnota li għadu biss xogħlijiet minħabba l-kompjuter jirrealizza li hemm din il-korrispondenza.
Issa, huwa aktar importanti li jagħmlu l-ikkastjar espliċita fid-dinja ta 'sufruni biex ints
għaliex hemm int fil-fatt tagħmel deċiżjoni kkalkulati:
tarmi kollox wara l-punt deċimali.
Hawn hemm verament xejn li tarmi l bogħod minħabba karattru huwa biss numru,
u string huwa biss firxa ta 'karattri.
Allura meta niġu żmien li jittieħdu xi wħud kriptaġġ jew deċifrar,
kif qed jgħid li nistgħu ngħidu tittraduċi xi ħaġa bħal din nonsense li,
Kun żgur li tixrob Ovaltine tiegħek?
X'jiġri jekk nafu dritt issa - ejja tieħu bħala assunzjoni - li ċ-ċavetta,
in-numru li aħna qed ddur kollha ta 'dawn l-ittri minn, huwa n-numru 13?
Allura aħna marru mill-ittra B-triq kollha sa O fil-bidu tas-sentenza,
Kun żgur li tixrob Ovaltine tiegħek, għaliex jekk nagħmel B
u mbagħad mmur C, D, E, F, G, H, I, J, K, L, M, N, O,
hu għalhekk li l-encryption ta 'l-ittra B isir O
minħabba I biss miżjud 13 miegħu.
>> Mela jekk jien tixtieq li decrypt dan, I essenzjalment għandhom jieħdu O u mbagħad naqqas 13 minnha.
Or, franchement, għaliex hemm 26-ittri fil-alfabett, dan huwa wonderfully simetriċi,
nistgħu wkoll żid ftit 13 u aħna ser terġa 'lura għall-ittra B.
Imma kif taħseb li tmur dwar implimentazzjoni xi ħaġa bħal din fil-Caesar
jew verament manipulazzjoni kordi b'mod ġenerali?
Jekk l-ittra B huwa dak in-numru?
X'hemm-ittra B? Allura huwa 66, id-dritt?
Allura jekk l-ittra A huwa 65 u l-ittra B huwa 66,
hekk 66, I kollha għandek tagħmel hu li żżid 13 lilha, u dan jagħti me 79.
U jekk immorru ftit iqarrqu folja tagħna, 79 tabilħaqq mapep fuq O.
>> Iżda hemm daqsxejn ta 'każ kantuniera hawnhekk.
X'inhu, ngħidu aħna, l-ittra Z?
Jekk nagħmlu 66 + 25 biex tikseb it-triq kollha sa l-aħħar ta 'l-alfabett, aħna qed fuq 91.
91 + 13 tagħti me 104, u raden liema?
104 ma ugwali ittra uppercase.
Ejja ħa mmorru lura għal folja iqarrqu ftit hawn.
Jekk I terġa 'ssir dan il-programm fl-appliance, avviż li 104, jekk immur lura għall-tieqa terminal,
104 hija apparentement l-h zghar.
Għalhekk għandna bżonn xi trick qofol hawnhekk sabiex tagħmel ċert li meta aħna tibda fil Z
u aħna żid 13 sa din ma rridux li biss iżommu forġa quddiem għal numri akbar u akbar.
What do we verament irridu li tagħmel?
Inti tixtieq li nagħlaq madwar.
>> Għalhekk jirriżulta, kif inti stajt tidher probabbilment fit-taqsima issa jew fil-spec sett problema nnifisha
induna li hemm dan operatur ieħor fis-C li wkoll huwa sinjal fil-mija,
iżda billi konna użati% hawn biex tispeċifika placeholder,
jafu li, speċjalment għal sett problema 2, hemm ukoll xi ħaġa bħal din:
int x = y% z.
Let me biss tippreżenta din bħala forma ferm ġeneriċi ta 'dan.
Perċentwali ifisser dak fil-lingwa ta 'programmar? >> [Student] Modulo.
Modulo, li huwa mod fancy ta 'tgħid l-bqija.
Anki jekk hemm distinzjoni żgħira mad-definizzjoni hemm,
dan ifisser jaqsam y mill z iżda ma jibgħat lura l-riżultat ta 'dik id-diviżjoni;
minflok, jirritorna l-bqija.
>> Mela jekk y huwa attwalment 3 u z huwa attwalment 2, 3 diviż bi 2 hija l-1 bil-bqija ta '1,
hekk dak li ma x-fatt ugwali f'dan ix-xenarju? 1.
Dan huwa tali sempliċi, ta 'livell baxx idea.
Huwa jieħu ftit ħin biex tikseb moħħok imgeżwer madwaru
għaliex dan huwa probabbilment kien filwaqt li peress li inti anki kellhom kura dwar fdalijiet
u fil-fatt jużawhom għal xi ħaġa skop,
imma f'dan il-każ il-fatt sempliċi li inti tista 'tmur minn numru kbir bħal 3
lil numru relattivament żgħir bħal 2 u mbagħad wrap madwar effettiv
billi tuża l-bqija għal valur iżgħar bħal 1 se jkun trick imprezzabbli
li nistgħu nużaw kemm għal xi ħaġa bħal Caesar u dan Vigenere ħaġa oħra
fil-problema sett 2, iżda dan se jkun trick rikorrenti matul il-semestru.
Dan sempliċi, idea sempliċi ta 'ftit jieħdu l-bqija b'mod ġenerali
se jippermettilna naslu biex nagħlaq madwar.
U kif aħna tibda playing aktar mal-matriċi, kif aħna tibda playing aktar bil-memorja nnifisha,
dan se jsiru aktar u aktar ta 'trick qawwija.
>> Allura xi mistoqsijiet imbagħad fuq ASCII jew il-rappreżentazzjoni ta 'spag bħala arrays?
U aħna ser teħodha up 1 talja aktar. Yeah.
[Kwistjoni student inaudible] >> mistoqsija Tajba.
Xi jfisser meta varjabbli għandha b'asterisk quddiem ta 'dan?
Let me jipposponi twieġeb li, f'kull dettall,
iżda li jirreferi għal suġġett magħruf bħala pointer.
Pointers għandhom x'jaqsmu ma 'memorja, u aħna qed attwalment llum
tieħu l-ewwel pass lejn din id-diskussjoni,
iżda għal issa, let me nippretendu li l-istilla ma teżistix
u aħna ser tkompli ssejjaħ kordi kordi minflok tintuża * char,
li inti stajt probabbilment jidhru qabel u jien ser jitqiegħdu fuq l-iskrin fi ftit mument bħala teaser.
Allura aħna ser terga 'lura għal dik fid-dettall il-mod aktar milli ħafna minnkom probabbilment se simili.
Eventwalment,. Llum ma Yeah.
>> [Kwistjoni student inaudible]
F'liema kuntest do ikollok biex tipprovdi s-sinjal ta 'karattru? >> [Student] Yeah.
Allura fil-kontumaċja, meta inti ma jpoġġux +, biss numri pożittivi huma assunti.
Allura jekk biss jiktbu n-numru 1, huwa ta '1 pożittiv.
Jekk inti fil-fatt tixtieq li tispeċifika l-negazzjoni ta 'valur,
inti litteralment għandek tagħmel -1 fuq it-tastiera tiegħek.
Iżda dan probabbilment mhix kwistjoni tiegħek. >> [Rispons istudent inaudible]
>> Good kwistjoni. Okay.
Allura dan għandu ma, I jiġbru, ma 'xi tip ta' bug inti dam fis
għaliex inti kienu konverżjoni integer għal karattru,
iżda b'xi negattività ltqajna involuti,
u għalhekk il-karattru għadha kemm ħarġet mill munged b'xi.
Allura għal issa, let me oversimplify ftit sakemm aħna terġa 'lura għal dan it-tip ta' suġġett.
Għal issa, think ta 'affarijiet b'dan il-mod - u dan huwa oversimplification.
Imma fid-dinja ta 'numru sħiħ, inti għandek kemm bits għad-dispożizzjoni tiegħek?
Inti għandek 32 bits.
U s'issa, konna tkellimna dwar in-numru totali ta 'numri interi inti tista' għalhekk tirrappreżenta
hija madwar 4 biljun fl-total għax għandek 32 bits,
b'tali mod li 2 għall-32, b'tali mod li madwar 4 biljun.
Iżda rajna fil-ġimgħa jew 2 ilu li inti ma verament jkollhom firxa ta 'numri
minn 0 fil sa 4 biljun.
Il-firxa minflok jmur minn madwar negattiva 2 biljun għal pożittiv 2 biljun.
Iżda dan imbagħad iqajjem il-kwistjoni, kif taħseb li jirrappreżentaw l-kunċett ta 'negattivi 2000000000
aħseb u ara negattiva 1?
Għal issa, nistgħu oversimplify u biss jgħidu li aħna qed tmur biex jużaw il-ftit leftmost
ta 'dawk bits 32, u jekk huwa ta' 1 huwa numru negattiv,
u jekk huwa ta '0 huwa numru pożittiv.
Il-problema li rappreżentazzjoni simplifikata ta 'numri negattivi
hija li jekk inti kienu deliberatament qed għaqlija u jippruvaw li jikkonvertu mill-karattru għal numru
jew viċe versa, hemm ebda ħaġa bħal karattru negattiv.
Fid-dinja tal-ASCII, li juża biss 8 bits, kollha 8 ta 'dawk kwistjoni bits,
u l-ftit leftmost m'għandha x'taqsam xejn ma 'negattività.
U biss li jkunu ċari, meta ngħid bits xellugi,
ifakkar li meta għamilna daqsxejn relatati eżempji tagħna fl-ewwel ġimgħa
ifakkar li fassalna affarijiet simili 1001101, xi ħaġa bħal din.
Meta I say-ftit leftmost, I biss litteralment tfisser il-1 li tikteb it-triq kollha fuq lejn ix-xellug.
Għalhekk fl-dinja ta 'karattri ma jkun hemm ebda kunċett ta' negattività,
hekk li ftit leftmost attwalment għandu xi ħaġa li tagħmel ma 'ASCII, x'taqsam xejn mal-negattività.
>> Allura li ħsejjes simili - u barra mill-kuntest huwa diffiċli li tingħata risposta eżattament -
iżda b'xi, il-kodiċi tiegħek kien konfuża li ftit leftmost bħala li jirrappreżentaw valur negattiv
meta verament kien parti mill-karattru fil-kwistjoni.
U għal darb'oħra, jien oversimplifying minħabba kompjuters fil-fatt jagħmlu xi ħaġa ftit fancier
milli sempliċiment tibdil li ftit leftmost għal 1 għal sinjal negattiv versus 0.
Huma minflok, jekk int kurjuż lill-Google, l-użu xi ħaġa tipikament tissejjaħ jikkumplimentaw 2, il-
li huwa daqsxejn aktar sofistikati ta 'approċċ
iżda l-idea hija finalment l-istess.
>> Allura fil-qosor, kellha tagħmel mal-fatt li inti kienu timmassaġġja numru lil karattru
jew viċe versa, iżda kodiċi tiegħek ma kienx tieħu konjizzjoni tal-fatt
li 1 minn dawk bits kellhom importanza fid-dinja numerika.
Li mhux il-każ fid-dinja karattru.
Iżda ħsejjes bħalek ffissat, f'liema każ irrilevanti issa. Mistoqsijiet oħra.
Okay.
Allura s'issa, kollha tal-programmi konna bil-miktub ħadu kontribut forsi mill-utent
fil-forma ta 'funzjonijiet simili GetInt, GetString,
jew jekk inti ħadthom ġiet qari quddiem fil-kotba varji jew referenzi fuq l-internet,
inti infuskom jista 'jkollok użati funzjonijiet bħall scanf li, franchement, nużaw fil-librerija CS50.
Iżda fil-ġimgħa jew 2, aħna ser attwalment nuruk kif il-librerija CS50 tiġi implimentata
sabiex inkunu tista 'tieħu dawk ir-roti ta' taħriġ off kollox.
>> Iżda jirriżulta hemm mod ieħor biex jiksbu input mill-utent.
Fil-fatt, aħna lilna nfusna kienu jużaw argumenti kmand tal-linja
għal ftit ġimgħat issa.
Kull darba aħna run clang jew għandna run jagħmlu,
aħna mhux biss ittajpjat clang, Ikteb, aħna ma ittajpjat jagħmlu, Ikteb.
Dak li aħna tipikament miktuba wara l-kelma clang fil-pront tagħna terminal twieqi?
[Student] L-isem fajl. >> L-isem fajl, id-dritt?
Hello.c jew mario.c jew ikun x'ikun l-isem ta 'fajl rilevanti huwa.
U f'dan is-sens dak li inti stajt verament isir huwa inti ħadthom influwenzat l-imġiba ta clang
għaliex ċertament l-persuni li kiteb clang kellhom ebda idea li ftit qodma inti
kienet se jikteb programm imsejjaħ snin mario.c aktar tard.
Allura inti kellhom b'xi mod jinfluwenzaw l-imġieba ta 'dak il-programm,
u li clang programm kellhom jiġu miktuba b'tali mod li tista 'taċċetta l-input mill inti
biż-żieda ta 'kliem fuq il-pront quddiem il-hits utent Ikteb.
>> Għalhekk jirriżulta li għal xi żmien konna qed tiddikjara kważi kollha tal-programmi tagħna
biex tibda bħal dan - prinċipali int (vojt) - u allura konna marret quddiem
u bdew kitba kodiċi tagħna.
U aħna jista 'jkollha xi sharp tinkludi fil-quċċata tal-fajl,
iżda kważi kollha tal-programmi tagħna s'issa bdew ma 'dan
anki jekk inti jista 'jkollok dehru fit-taqsima, fil-kotba, ir-referenzi fuq l-internet
li dan ma fil-fatt għandhom ikunu bla effett.
Forma oħra leġittimi biex dan jieħu tkun int argc u mbagħad string ARGV [].
Allura issa dak li huwa dan jimplika?
Jirriżulta li argc, li hija konvenzjoni tal-bniedem - inti tista 'sejħa dan foo,
iżda se jkun biss ħafna inqas ċar lill-qarrejja -
argc biss huwa argument li l-funzjoni msejħa ewlenija li tirrappreżenta dak li?
Xi jfisser argc joqgħod għal għal dawk familjari?
>> [Rispons istudent inaudible] >> Yeah, in-numru ta 'argumenti jew għadd argument.
Huwa sempliċi bħal dik.
Kemm argumenti kienu għaddew dan il-programm?
X'ifisser dan?
Jekk fuq il-linja tal-kmand Għandi run xi ħaġa bħal din - clang mario.c--
argc meta I hit Ikteb se tieħu fuq il-valur ta ', xi ftit konfuż, 2.
Għalhekk jirriżulta li argc huwa għadd argument,
iżda għal raġunijiet storiċi, l-isem tal-programm innifsu huwa inkluż f'dik għadd.
Allura argc huwa 2 meta I kiteb clang mario.c.
X'jagħmel ARGV fiha?
L-ewwelnett, ARGV qisu string iżda mhux pjuttost
għax kif tal-Erbgħa li għadda u l-aktar tal-lum,
dawn parentesi kwadri jindika liema? Li firxa.
M'hemm l-ebda numru fil-firxa, u li għandu jagħmel sens intuwittivament
minħabba li l-persuni li kiteb snin ilu clang żgur kellhom ebda idea
kif ħafna nies kliem bħal minna tip fil-prompt qabel laqtu Ikteb.
>> Allura f'dan il-każ hawnhekk huma jkunu dikjarati l-funzjoni prinċipali bħala teħid firxa ta 'argumenti,
0 jew aktar argumenti.
Huma ma jafux bil-quddiem kemm hemm,
b'hekk m'hemm l-ebda deliberatament ġewwa numru ta 'dawn parentesi kwadri.
Imma l-fatt li l-parentesi kwadri huma hemm javżak-kompjuter,
jistennew firxa.
ARGV huwa biss notazzjoni qosor għal vector argument.
A vector huwa mod fancy ta 'tgħid array,
u firxa huwa mod fancy ta 'tgħid' lista jew il-ġbir.
Allura dan ifisser biss li jekk tikteb ewlenin bħal dan
minflok bħal kif aħna kont qed tagħmel dan għall-aħħar ftit ġimgħat,
programm tiegħek issa għandha l-poter li jaċċettaw argumenti kmand tal-linja
b'tali mod li m'għadx għandek tikteb mario u mbagħad hit Ikteb,
imbagħad it-tip fil-numru għal kemm blokki għoli trid li l-piramida li jkun,
imbagħad hit Ikteb ġdid.
Aħna ma anki ħtieġa li jużaw GetString jibqgħalu jew GetInt jew GetFloat għal dik il-kwistjoni.
Nistgħu biss nistennew li l-utent tat-tip dawn il-kliem fil-pront innifsu
bħad-awturi ta 'clang ddeċidiet li tkun ta' programm verament annoying
jekk biex jikkompilaw kodiċi tiegħek inti l-ewwel clang ittajpjat, hit Ikteb,
allura aħna qal lill-utent, jekk jogħġbok tip l-isem tal-fajl inti tixtieq li jikkompilaw,
allura aħna tip fil mario.c u hit Ikteb.
Imma dak li eżattament dak li aħna kont qed tagħmel lill-utenti tagħna l-koppja passat ta 'ġimgħat.
Aħna nużaw GetString u aħna stenna sakemm il-programm qed taħdem biex twassalhom għall-input.
Dan m'għadux jeħtieġ li jkun il-każ.
>> Allura f'dan l-eżempju hawn, issa għandna string ARGV,
u dan ukoll huwa oversimplification,
roti ta 'taħriġ li se malajr ħafna come off.
Dan huwa l-mod aktar xieraq ta 'kitba din id-dikjarazzjoni alternattiva ta prinċipali
għaliex jirriżulta li dak li aħna jżomm ssejjaħ string fil-fatt għandha stilla,
b'asterisk, fid-definizzjoni attwali tagħha, iżda dan biss jistenna ikkumplikat,
huwa konfuża għall-ewwel, hekk aħna jissimplifikaw bi ftit ħolqien ta 'sinonimu ta' tipi
fil-librerija CS50 li l-mapep * char għal din is-sekwenza kelma aktar faċli għall-utent.
>> Mela ejja fil-fatt jipprovaw dan imbagħad. Let me imorru quddiem u tiftaħ gedit here.
Let me imorru quddiem u tiftaħ ARGV ta '1.
Dan il-programm jidher li prints l-argumenti, iżda wkoll f'termini Ingliż,
billi tħares lejn dan il-kodiċi, dan xi jagħmlu aktar speċifiku?
Jekk I tip fil-kmand a.out foo bar, liema gets stampati tieqa iswed u abjad tiegħi?
A.out foo bar, Ikteb.
Jimxi 'l quddiem. Yeah. >> [Rispons istudent inaudible]
Tajba. Allura a.out, linja ġdida, foo, linja ġdida, bar, linja ġdida.
Għaliex dan? Aħna jista 'ċertament jikkonfermaw fi ftit mument.
Dan huwa tip ta 'linja fluffy tal-kodiċi.
Hija biss prints linja ġdida biss biex jagħmlu l-affarijiet prettier fuq l-iskrin.
Din hija linja li l-iterazzjoni minn 0 sa l argc,
u dan huwa inkrementazzjoni fuq kull iterazzjoni + +.
Allura dan huwa issa qal jistampaw string, kif implikat minn din% s.
ARGV [i] hija pjuttost l-istess idea mill-eżempju preċedenti.
Aħna użati li jsejħu l-i varjabbli; issa huwa msejjaħ, b'mod arbitrarju, ARGV.
Dan ifisser jistampaw l-argument ith li kien ittajpjat fil-linja tal-kmand,
u mbagħad wara dan ħaġa sħiħa isir, biss għal miżura tajba jistampaw linja oħra ġdida.
>> Mela ejja ara dan. Let me tiftaħ il-tieqa terminal.
Let me tiġbor ARGV ta '1, u issa let me run ARGV ta' 1, Ikteb. Hmm. Okay.
Ejja run bar foo. Interessanti. Baz.
U jekk inti stajt qatt staqsiet għaliex jien tip dan,
din hija biss wkoll konvenzjoni stupid xjenza tal-kompjuter.
Id-dinja ta 'spiss teħtieġ biss placeholders verbali għall-kliem.
Mela jekk inti tixtieq li nitkellmu dwar xi spag ġeneriku,
xjenzjati tal-kompjuter biss it-tendenza li jgħidu foo meta jkollhom bżonn kelma każwali,
allura jgħidu bar jekk ikollhom bżonn kelma każwali tieni,
allura jgħidu baz jekk ikollhom bżonn kelma terz, allura jgħidu QUX jekk ikollhom bżonn kelma 4,
u allura hemm enormi reliġjużi dibattitu online dwar dak wasal wara QUX,
sabiex inti tista 'Google li ċifra barra dak l-kelma arbitrarja oħra għandu jkun.
Iżda dawn ma jkollhom ebda tifsira tkun xi tkun,
għalkemm foo bar, jekk inti Google dan, dan ma għandhom tifsira,
li huwa parti mill-etimoloġija hawn.
>> Allura dan kollu qed tagħmel allura huwa l-istampar 1 ta 'dawn kordi għal kull linja.
Mela jekk jien minflok, għalkemm, riedu li jiksbu ftit fancier,
jissoponi li jien ma riedx li jistampaw kull sekwenza kull linja;
Jien ridt li jistampaw kull karattru minn kull sekwenza għal kull linja.
Kif jista I minflok tagħmel dan?
What do I bżonn għall-bidla dwar dan il-programm jekk irrid li jistampaw mhux kull kelma
imma nixtieq li jistampaw kull ittra kelma permezz ta 'ittra permezz ta' ittra,
allura l-ittra kelma li jmiss permezz ta 'ittra permezz ta' ittra?
Kif nistgħu jikkombinaw dawn l-ideat s'issa? Yeah.
[Student]% c. >> Kull dritt. Allura aħna x'imkien bżonn c%.
Tajba, minħabba I ma jridux li jistampaw kordi sħiħ, nixtieq li jistampaw karattri. X'aktar?
>> [Inaudible student rispons] >> interessanti.
Allura għandna bżonn it-tip ta 'dimensjoni 2 hawn issa
minħabba jaħsbu ARGV bħala firxa, iżda huwa firxa ta 'spag.
Iżda sa, bħal, 15-il minuta ilu, x'hemm string? Huwa ta 'firxa ta' karattri.
Allura verament, ARGV huwa firxa ta 'firxa ta' karattri,
firxa ta 'arrays ta' karattri.
Għalhekk jirriżulta li nistgħu nużaw notazzjonijiet parentesi biss aktar kwadru. Mela ejja jagħmlu dan.
Fil-quċċata ta 'din loop fuq il-linja 19, jien ser jtenni mill-i sa argc,
iżda mbagħad jien ser tagħmel dan:
għall - I ma jistgħux jużaw i issa.
I bżonn ieħor varjabbli għaliex nixtieq li jtenni matul l-kliem
iżda mbagħad wkoll fuq l-ittri fil-kliem
so I tip ta jkollhom assi vertikali u ma 'fus orizzontali, tip ta' kunċettwalment.
Allura j int gets 0, imbagħad I trid tagħmel j sakemm j huwa inqas minn - u jien ser jitnaddaf dan up fi ftit.
Kif nista jtenni fuq l-ittri string? Għamilna dan mument ilu.
Strlen ta ARGV [i]. Tajba.
U għal darb'oħra, jien jagħmlu ineffiċjenza ftit hawn billi ma joħloq n jew kwalunkwe,
iżda aħna ser terga 'lura għal dan.
>> Allura issa j + +. Issa għandi inċiż ulterjuri hawnhekk.
What do I issa tixtieq li jistampaw fuq kull iterazzjoni?
[Rispons istudent inaudible] >> Hekk [i] se tagħti me-kelma.
[I] [j], 'tip simili għal matriċi.
Dawk tal inti ma matematika 'y sfondi,
aħna qed tip ta 'indiċjar anke aktar fil-fond din matriċi jew din firxa ta' arrays,
din l-istruttura 2-dimensjonali.
Allura issa ejja ara dak li jiġri hawn. Let me tiftaħ tieqa tiegħi terminali akbar.
Let me terġa 'tagħmel ta ARGV ta' 1.
U stajt invitat up hawn, li hija lezzjoni tajba għaliex jien wisq nesa li jagħmlu dan.
Impliċitament li tiddikjara "strlen" librerija C funzjoni ma iffirmati tip "-
I lanqas biss jafu x'inhi l-bqija ta 'dan, imma rajt dan qabel,
b'mod impliċitu li tiddikjara.
Kull meta naraw dan l-iżball, dak ma dan normalment ifisser?
>> [Inaudible student rispons] >> I nesa librerija top up. Imma stenna minuta.
Normalment Stajt invitat up minħabba I nesa l-librerija CS50, iżda li hemmhekk.
Normalment Stajt invitat up għaliex stajt minsija standard I / O.
U franchement, jien ma anki bżonn din. Aħna ma jużawx GetString illum.
Allura dak li jien nieqsa?
Hemm ieħor librerija li issa għandna bżonn l-użu string.h kultant imsejħa,
u dan huwa biss pass ieħor librerija li għandu funzjonijiet aktar li mhumiex fl-istandard I / O.
>> Mela ejja jmorru lura għall-tieqa tiegħi terminal kbir.
Okay. Issa, kkritikat dan, I raden I kienet żbaljata. I kienet qed tuża l-librerija CS50.
Allura nistgħu jiffissaw dan f'wieħed minn 2 modi.
Nistgħu nkunu l-roti tat-taħriġ off dritt issa u biss tagħmel dan,
jew tip ejja ta 'jżomm dik is-simplifikazzjoni biss għal issa, paste dan lura fl-
issolvi din il-problema, u issa mur lura għall-tieqa terminal.
Allura biex tkun ċara, fil-librerija CS50 mhux biss il-funzjonijiet,
huwa wkoll il-sekwenza keyword, u huwa għalhekk li dan l-iżball biss ġara.
>> Allura here we go. I fiss kemm mill-kwistjonijiet librerija. Ikteb. Tajba.
ARGV ta '1, foo bar, Ikteb. Eċċellenti.
Allura issa għandna kull ittra ta 'kull kelma stampata 1 għal kull linja,
li ma jagħmilx għal programm interessanti ħafna,
imma avviż issa għandna l-kapaċità ta 'mhux biss iterazzjoni fuq kliem
iżda wkoll fuq l-ittri individwali kliem, li ħsejjes awfully familjari
li anki l-aktar sempliċi ta 'applikazzjonijiet bħal ittri scrambling fi string bħal dan.
Ejja jimxi 'l quddiem u tieħu 5-minuta break tagħna hawn.
U meta niġu lura, aħna ser jibda jitkellem dwar l-effiċjenza
li magħhom nistgħu nagħmlu dawn l-affarijiet aħjar.
>> Kull dritt. Aħna lura.
Grazzi għall wieħed mill-TFS tagħna li jilgħab ħafna Bananagrams,
għandna attwalment ikollhom mazz sħiħ ta 'Chars magħna hawn illum
fiżikament incarnated ma 'dawn il-biċċiet tal-plastik ftit,
u let me tipproponi li din lavanja abjad vojt hawn tirrappreżenta l-RAM fil-kompjuter tiegħi -
, laptop desktop, ikun x'ikun - u hemm qisu ħafna ta 'dan
għaliex jekk nibdew tqattiegħ up dan RAM fis żgħir byte ta 'daqs biċċiet,
ejja ngħidu li b'mod arbitrarju xi ħaġa li d-daqs u l blurry jirrappreżenta -
hemm immorru, u ejja zoom out ftit hawn -
ejja ngħidu xi ħaġa li d-daqs jirrappreżenta f'byte wieħed.
Allura nistgħu tabilħaqq joqogħdu mazz sħiħ ta 'bytes jew karattri ġewwa ta' dan il-memorja,
kif issuġġerit mill-daqs relattiv hawn.
>> Allura jissoponi issa li l-għan huwa li jiġu allokati memorja għal string.
Kif jaħdem dan attwalment jaħdmu?
Fil-programmi aħna kont qed miktub, konna normalment qed tuża GetString,
iżda issa, b'mod ċar, hemm dan il-kanal l-oħra li permezz tagħhom nistgħu nibdew input utent fil ARGV
permezz argumenti kmand tal-linja.
Imma x'inhu verament għaddej minn taħt il-barnuża?
Jirriżulta jekk nagħmlu sejħa - ejja iscroll lura lill GetString - il-GetString funzjoni
fil-librerija CS50, l-utent huwa wassal għal string,
it-tipi utent b'xi kelma - ejja sejħa hija HELLO.
U aħna kont qed tgħid għall-aħħar ftit ġimgħat li l-valur tar-ritorn ta 'GetString
huwa fil-fatt string, bħall-kelma HELLO.
>> Imma dak li hu verament GetString tagħmel?
Peress li l-tipi utent HELLO, Daħħal, GetString huwa li jidhru fl-
okay, kemm karattri huwa dan? Dan huwa H-E-L-L-O.
Għalhekk jeħtieġ li jiġu allokati, jeħtieġ li titlob lill-sistema operattiva - Linux f'dan il-każ -
għal mill-inqas 5 bytes li jaħżen HELLO.
U dak li mbagħad tipproċedi biex tagħmel darba jiġrilha lura dawk bytes 5 mis-sistema operattiva
huwa li jistabbilixxu HELLO lura lura lura lura.
U hekk dak li verament lura minn GetString hija blokki ta 'data li tidher bħal dan.
Iżda dan huwa daqsxejn ineżatta peress li jirriżulta li mhuwiex sempliċi
biss bħala ħażna HELLO fil-memorja tal-kompjuter
għaliex jissoponi dak il-programm tiegħi li jien bil-miktub fis-C mbagħad jitlob GetString mill-ġdid,
u l-kelma li jmiss l-utent tipi fil huwa BYE, BYE.
Well, I-ħtieġa li jitwaħħal li BYE kelma x'imkien fil-memorja.
I cannot clobber HELLO.
Per eżempju, jien ma jridu li l-kompjuter għal ftit tibda kitba fuq oħra bħal din
il-kelma oriġinali minħabba I xorta tista 'tuża l-kelma HELLO fil-varjabbli
x'imkien ieħor fil-programm tiegħi.
>> Allura B-Y-E għandu jispiċċa x'imkien ieħor fil-memorja.
Iżda l-konvenzjoni tipikament hija li l-sekwenza li jmiss inti jallokaw
probabbilment, iżda mhux dejjem, se jispiċċaw fil-post tal-memorja li jmiss disponibbli.
U jekk I ma talab lill-sistema operattiva għal kwalunkwe memorja
mill-aħħar darba I imsejħa GetString, odds huma l BYE kelma
se jispiċċaw dritt wara l-kelma HELLO fil-memorja.
Iżda f'dan il-punt tista 'forsi tara fejn xi problema potenzjali tinqala.
Minħabba li l-biċċiet li jmiss tal-memorja, il-bytes li jmiss li kienu biss ħielsa -
nadif lavanja abjad - fil-memorja tal-kompjuter kienu dritt li jmiss HELLO,
iħoss bħall-sekwenza ewwel I talab għal jistgħu f'daqqa issa bidla
għaliex stajt essenzjalment nbidel għal HELLOBYE
minflok b'xi demarcing-bidu tal BYE u t-tmiem ta 'HELLO.
>> Għalhekk jirriżulta li dak li verament għaddejjin taħt il-barnuża,
li inti jista 'jkollok glimpsed fil referenzi online jew taqsima jew kotba
jew xejn għadha biss hija li hemm attwalment demarkazzjoni intenzjonat
bejn il-kliem fil-memorja tal-kompjuter.
U fil-fatt, f'dan il-każ hawnhekk, aktar milli biss jitqiegħed BYE dritt li jmiss HELLO,
minflok, il-kompjuter tpoġġi karattru speċjali, il-karattru null speċjali, biex ngħidu hekk,
li hija rappreżentata bil-markatur mal backslash 0.
Allura storja twila fil-qosor, tfakkar li l-karattri huma rappreżentati fil ASCII.
ASCII huwa biss immappjar bejn in-numri u ittri,
u l-aktar ta 'dawk l-ittri jibdew madwar 65 għall-kapital A,
iżda jirriżulta li inti tista 'ċertament jirrappreżenta n-numru 0 bħala numru sħiħ jew fil-binarju,
u jirriżulta fid-dinja iddeċieda twil, twil ilu, "Inti taf liema?"
"Ejja numru riżerva 0 meta ma tirrappreżenta xi karattri fuq it-tastiera -
"L-ebda ittri, numri, l-ebda l-ebda punteġġjatura. 0 huwa speċjali."
"Huwa ser tkun il-karattru null speċjali, u aħna qed tmur biex tikteb bħala \ 0."
Id-differenza hija jekk aħna biss kiteb 0, 0 huwa karattru.
Ifakkar li hemm kodiċijiet ASCII għall 0, għal 1, għal 2, għat-3
minħabba li l-karattru 0 hija differenti mill-0 numru.
U inti tista 'tara li jekk inti tħares lura minn ġimgħa 1 meta aħna ewwel tkellem dwar ASCII,
0 u 1 u 2 u 3 it-triq kollha sa 9 kellhom kodiċijiet ASCII tagħhom stess.
Huma mhumiex, inzerta, 0 sa 9. Huma qed differenti ħafna.
Allura 0 sempliċiment ifisser "I am speċjali," u l-\ 0 mezzi, litteralment, "jien ma l-karattru 0."
"Jien dan il-valur speċjali, il-karattru null."
So I attwalment bżonn waħda oħra minn dawn peress li jien ma tistax tagħmel l-istess żball darbtejn.
>> Allura wara l BYE kelma aħna qed wkoll se bżonn ieħor wieħed minn dawn il-karattri nulla.
Let me grab pinna tiegħi hawn u let me malajr tiġbed ieħor \ 0
b'tali mod li wara I talbu lill-sistema operattiva għal 2 kordi
permezz GetString segwita minn sejħa għal GetString,
dan huwa dak attwalment fil-memorja.
Allura meta nasal lura string, jien verament jkollna lura li,
u meta nasal l-sekwenza li jmiss, jien verament jkollna lura dak.
Allura dan iqajjem il-kwistjoni, strlen, l-ewwel nett, liema għandu jirritorna?
Meta I call strlen fuq il-i string u s kien il-kelma HELLO li l-utent ittajpjat fil,
dak li aħna ma ovvjament ngħidu t-tul ta 'HELLO kien ftit minuti ilu?
Kien 5, id-dritt? H-E-L-L-O. U li tassew kif strlen xogħlijiet.
Hija prospetti dak ta 'bniedem normali tistenna t-tul ta' sekwenza li jkun.
Iżda fir-realtà, kemm hu kbir huwa l-firxa ta 'karattri li l-ħażna bonjour?
Huwa fil-fatt 6.
Allura strlen ma ssemmix dan il-fatt lilek.
Iżda taħt il-barnuża tal-kompjuter huwa tabilħaqq jużaw 6 bytes li jaħżen kelma 5-ittra,
u dan huwa minnu l-ebda kwistjoni kemm żmien il-kelma hija.
Hemm dejjem se jkun karattru null speċjali li jispiċċaw fl-aħħar tas-sekwenza
li demarc tul totali tagħha.
>> Mela allura jekk inti issa l-persuna implimentazzjoni strlen 20, 30 sena ilu,
kif taħseb li tmur dwar implimentazzjoni strlen stess?
Aħna jieħdu għal mogħtija li jeżisti, bħad nieħdu għall mogħtija li printf teżisti,
iżda jekk HELLO hija l-kelma in kwistjoni
u dak li nkun fil-memorja hija xi ħaġa li tidher bħal dan,
jekk kellek biex reimplement strlen għaliex inti kienu mitluba
jew għaliex, franchement, inti ma taf strlen jeżistu -
inti kellhom roll dan wieħed fuq tiegħek - kif tista 'inti jimplimentaw strlen
meta mogħti xi ħaġa li tidher bħal dan?
Issa li nafu string huwa firxa, nistgħu jtenni fuq kull wieħed mill-karattri individwali
tuża xi ħaġa simili - Ejja jipprova jagħmel dan fuq il-fly.
>> Let me jmorru fil-appliance. Let me toħloq fajl ġdid, strlen.c.
Let me imorru quddiem issa u ma jinkludu stdio.h sabiex inkunu jkollhom aċċess għall printf.
Let me do int prinċipali (vojt). Oh. I ser biss tagħmel dan fuq tiegħi stess għal issa imbagħad. [Chuckles]
Grazzi.
Dan huwa dak li qed nagħmel. Kull dritt.
Allura qabel I daru fuq l-iskrin, I ittajpjat kollha ta 'dak.
U issa dak li jien ser tagħmel hu dan li ġej:
printf ("Give me a string:")
Li jinsab biss l-istruzzjonijiet fluffy.
Issa let me do string s = GetString.
I diġà jeħtiġilhom li jagħmlu bidla issa.
Jien jużaw il-librerija CS50 f'daqqa, so let me jimxi 'l quddiem u t-tip fil cs50.h.
U issa ejja tagħmel dan: printf ("It-tul huwa:% d, strlen [i] -
u jien ma isir s'issa. X'iktar għandi jżidu dan il-programm?
>> [Student] string.h. >> String.h.
Allura għal issa, aħna qed jużaw strlen, so ejja tagħmel żgur li l-kumpilatur jaf meta dan ikun,
hekk sanità ftit check.
Jien jkollna string fil-linja 8, u f'konformità 9 jien stampar tul tiegħu ma d%.
Mela ejja imorru quddiem u tiftaħ dan up.
Aħna jagħmlu strlen - jikkompila okay -
strlen - let me zoom fi - Ikteb, H-E-L-L-O, Ikteb. It-tul huwa 5.
>> Okay, hekk strlen jidher li jaħdem, iżda fid-dinja kien jaf li.
Mela ejja issa jimplimentaw strlen ruħna kif ġej.
Let me jieħdu din il-librerija bogħod.
Aħna m'għadx għandhom aċċess għal string.h minħabba I lanqas biss jafu eżistiet.
Iżda li okay minħabba I tista 'timplimenta strlen myself
u li hija tieħu string imsejjaħ input,
u issa għandi bżonn biex insemmu l-tul ta 'din is-sekwenza.
Allura kif nista 'nagħmlu dan?
X'jiġri jekk I do - ejja ara kif tagħmel dan - Xi trid tagħmel?
>> [Rispons istudent inaudible] >> Okay.
Allura nistgħu nagħmlu dan fil-mazz ta 'modi. Let me jippruvaw jieħdu dan l-approċċ.
Ħalli nagħtikom nnifsi varjabbli i int, hekk i tibda fi 0.
U ħalluni ngħid dan: filwaqt input [i] mhux ugwali għal dak? \ 0.
Għalhekk jirriżulta, kif ma 'l-każ ma' l-Chars meta tikteb lilhom litteralment fi programm,
inti għandek tuża kwotazzjonijiet uniku, mhux kwotazzjonijiet doppja.
Mela jekk jien kienu bil-miktub l-ittra a, Jien kont nagħmel dan, l-ittra b, Jien kont nagħmel dan.
Dan, b'kuntrast, ikun string, mhux karattru individwali.
>> Allura nixtieq \ 0 litteralment. What do I trid tagħmel f'dan loop?
Actually, I bżonn ieħor varjabbli, u għalhekk it-tul int gets 0.
Anki jekk inti ma kinux ċert għaliex bdejna il-mod aħna ma,
issa li aħna qed tmur f'din it-triq, dak li nixtieq li tagħmel fuq il-linja 9?
tul + + u mbagħad stabbiliti hawn fuq il-linja 10, it-tul tar-ritorn.
Allura kif qed strlen implimentat?
Huwa fil-fatt implimentati probabbilment bħal dan.
Forsi l-persuna uża għall loop, forsi tagħmel filwaqt loop - li jaf?
Aħna tixtieq verament għandek tfittex taħt il-barnuża fil-kodiċi tas-sors attwali
f'xi fajl imsejħa string.c probabbilment.
>> Imma hawn ejja jaħsbu dwar dak li qed nagħmel.
Jien tiddikjara varjabbli imsejjaħ i, dan ikun iffissat ugwali għal 0.
Jien imbagħad jiddikjara ieħor tul varjabbli imsejħa, dan ikun iffissat ugwali għal 0.
Imbagħad jien tgħid waqt li l-karattru ith fil-input ma tkunx daqs il-karattru null speċjali, \ 0,
inkrement-tul.
Iżda hekk kif il-karattru ith huwa dan il-karattru speċjali, dak li jiġri għall-linja?
Hija short circuits. Huwa jwaqqaf, li jfisser li aħna mbagħad istantanjament lura tul.
>> Mela jekk jien ma mess up, ejja imorru quddiem u jmorru lura għall-tieqa terminal tiegħi.
Let me recompile. U jien ma screw up.
Redeclaration inkompatibbli ta 'funzjoni librerija strlen.
So I kienet tipprova tikseb wisq għaqlija għall-ġid tiegħi stess hawn.
Il-kompilatur attwalment jaf li hemm funzjoni msejħa strlen
anke jekk aħna ma inkludewx il-librerija. Li l-multa. Tkun xi tkun.
Aħna biss se jikkooperaw imbagħad. Ejja semmi mill-ġdid dan it-tul.
Let me jibdlu l-użu ta 'dan it-tul hawnhekk, u dan se jagħmel clang kuntenti.
Bħala twarrib, minħabba li xi wħud minn dawn il-funzjonijiet huma tant darn komuni -
strlen, Prinf - dawn għandhom attwalment tip ta 'status speċjali.
U hekk clang biss jaf ftit xi ħaġa speċjali dwarhom.
Li mhux dejjem il-każ ma 'funzjonijiet aktar, b'tali mod li għalhekk sirna għajjat ​​fil.
>> Let me erġa 'pprova. B'xorti tajba, huwa ħadem dak iż-żmien.
Allura issa let me run stess strlen tiegħi program.
Agħti me string: H-E-L-L-O, Ikteb. U jien invitat up.
Għaliex? >> [Rispons istudent inaudible] >> Eżattament.
Allura għandi myself hawn loop infinita sbieħ ħafna li tħares
għaliex anki jekk jien inkrementazzjoni tul fuq kull iterazzjoni,
dak li jien b'mod ċar ma tagħmel? Jien ma inkrementazzjoni i. Okay. Easy jiffissaw. Iva?
Okay. No Issa aħna se run afoul ta 'xi żball komuni ieħor fejn għandi bżonn parentesi.
U franchement, dan il-kodiċi qed tibda tfittex ikrah,
hekk aħna ser tieħu stab fil-tindif dan up fil-mument.
Imma issa jien inkrementazzjoni kemm tul u li.
Franchement, I diġà tara l-opportunità għal titjib hawnhekk, imma aħna ser terga 'lura għal dan.
>> Allura issa ejja biss tagħmel żgur li aħna qed inqas isir progress.
Dan ġara ftit tal inti, u jien traskurat li jsemmi dan bil-quddiem.
Meta inti għandek l-sfortuna ta 'xenarju bħal dan, kif taħseb li jiffissaw dan
qasir ta 'istartjar mill-ġdid l-appliance jew il-kompjuter tiegħek jew l-għeluq l-tieqa?
Huwa fil-fatt faċli.
Kontroll C se tibgħat dan ftit zunnarija simbolu Ċ, u li biss ttemm programmi l-aktar.
Jekk ikollok xi linja infinita tassew ħżiena li l-istampar drabi Jittieħed infinitament ħafna,
kultant inti jista 'jkollok hit Kontroll C elf darba biex jagħmluha attwalment tismagħha.
Hekk biss jirrealizzaw issa għaliex jien ma istampar xejn, li kien pjuttost faċli.
U teknikament, ladarba biżżejjed, imma jien nikseb paċenzja u I normalment hit li ħafna drabi.
>> Allura strlen. Agħti me string: HELLO. Huwa ser jaħdem dan iż-żmien?
Okay. Ieħor komuni żball. Have biex recompile.
Dan kien intenzjonat, li wieħed. Kull dritt.
Allura strlen, H-E-L-L-O, Ikteb. Eċċellenti.
Allura issa għandna strlen sa 5.
Allura aħna għandna litteralment reimplemented dik ir-rota.
Allura issa ejja tnaddaf dan up għaliex dan ma jagħmlu me impressjonat
mad-disinn tal-kodiċi tiegħi.
X'nistgħu ċar jeliminaw f'dan il-programm biex tnaddaf dan up?
[Rispons istudent inaudible] >> Yeah. Litteralment, aħna qed trattament i u t-tul identiku.
Allura għaliex ma aħna biss jiksbu intelliġenti u jgħidu filwaqt tul?
Pjuttost, ejja biss sejħa hija it-tul li tibda bil, initialize dan għal 0
minħabba kontumaċja-sekwenza għandha l-ebda tul sakemm aħna ċifra barra dak li hu.
>> Issa aħna nagħmlu dan, u issa dan huwa programm pretty eleganti.
Wieħed varjabbli. I mnaddfa it up, issikkati it up.
Allura issa ejja mmorru lura għall-tieqa terminal tiegħi. Ejja imorru quddiem u jitmexxa dan.
Għamla strlen. Jidher tajjeb. Mexxi strlen darb'oħra, Ikteb.
Agħti me string: HELLO, Ikteb. U jidher li tkun qed taħdem bħala 5.
Issa, biex ikunu ċari, jekk I ma kinux bil-miktub, per eżempju, HELLO in 1 string
u mbagħad BYE f'ieħor, nistgħu ċertament kliem multipli.
Jekk l-espressjoni I attwalment riedu tip kienx HELLO, iżda, per eżempju,
HELLO WORLD, avviż li dak li aħna ma jkollhomx hija din is-sitwazzjoni hawn, id-dritt?
Dan jissuġġerixxi li dan huwa 2 kordi.
Inti żgur tista 'jkollha karattri bar-ispazju, hekk jekk aħna fil-fatt ittajpjat fil-frażi itwal
bħall WORLD HELLO, dak li aħna verament ikollhom fil-memorja
jistenna ftit xi ħaġa bħal dik hemmhekk.
>> Kull dritt. Kwalunkwe mistoqsijiet allura dwar ir-rappreżentazzjoni hawn 'spag?
Nru? Kull dritt.
So I qal qabel li ssejjaħ strlen ġdid u għal darb'oħra deliberatament bħal dik
probabbilment ma tkunx l-idea aħjar għax int se tkun qed twettaq lott kollu ta 'xogħol
ġdid u għal darb'oħra u għal darb'oħra.
Tabilħaqq, liema tip ta 'xogħol huwa meħtieġ għall jidhru l-tul ta' spag, apparentement?
Int għandek tibda fil-bidu u mbagħad tfittex, tfittex, tfittex, tfittex, tfittex
sakemm inti finalment tara dan il-karattru speċjali, f'liema punt, ah, issa naf it-tul.
Allura qabel meta kellna strlen qed jissejjaħ mill-ġdid u għal darb'oħra u għal darb'oħra,
r-raġuni I propost li kien tip ta 'stupid għaliex mill-ġdid, li string qisu dik.
Huwa mhux se jibdlu kull darba li inti jtenni permezz ta 'xi linja,
hekk qed tagħmel ix-xogħol bla bżonn.
Fl-istess ħin inti għandek tkun taf, bħala twarrib, li kompilaturi bħal clang dawn il-jiem
ġew żviluppati matul bosta snin,
u kittieba kompilatur, programmaturi, huma pjuttost intelliġenti.
U hekk jirriżulta li kompilaturi clang u oħrajn jistgħu attwalment insemmu li,
okay, iva, inti kiteb strlen fil-kundizzjoni tiegħek,
li teknikament ifisser li aħna se sejħa hija għal darb'oħra u għal darb'oħra u għal darb'oħra.
Iżda kompilaturi intelliġenti tista 'attwalment jottimizzaw dawk it-tipi ta' deċiżjonijiet utent foqra
minn kodiċi tiegħek biex jirrimedjaw l-affarijiet.
>> Allura biss jirrealizzaw li xi kultant l-kumpilatur huwa aktar intelliġenti minn magħna
u se tip ta 'jaħbu iżbalji tagħna stess.
Iżda ċertament meta niġu għas-settijiet problema u simili,
do tkun ħsieb dwar dawk id-deċiżjonijiet tad-disinn fundamentalment żbaljata
potenzjalment għar-raġuni sempliċi li aħna'd tkun qiegħda tagħmel xogħol b'mod aktar
minn għandna attwalment ikollhom jagħmlu. Imma kemm aktar xogħol?
Fil-każ ta DINJA HELLO, Nibdew biex tiġġeneralizza l-daqs ta 'din il-problema.
X'hemm-tul tal-problema jew id-daqs tal-problema
meta l-kelma l-utent ittajpjat fil hija HELLO?
Huwa apparentement 5, forsi 6. Plus jew minus 1. Tkun xi tkun.
Huwa tant qrib aħna ser biss sejħa hija 5.
>> Allura x'inhu l-daqs tal-problema hawnhekk meta jippruvaw biex insemmu l-tul ta 'HELLO?
Huwa 1, 2, 3, 4, 5, u forsi 6 għall-karattru aħħar, imma ejja tiġġeneralizza li bħala n.
Allura n, biss il-n varjabbli, huwa dak xjenzati tal-kompjuter se tipikament jużaw
biex jiddeskrivu d-daqs ta 'problema, u l-problema in kwistjoni hija kemm żmien huwa HELLO?
Kif ħafna ħin ma strlen jieħdu?
Huwa jieħu fuq l-ordni ta 'passi n, fejn kull pass ifisser ħarsa lejn karattru,
tħares lejn karattru, tħares lejn karattru.
U kellna din id-diskussjoni ftit lura, jieħu xi ħaġa in-numru ta 'operazzjonijiet.
L-ewwel jum ta 'klassi kellna kulħadd awkwardly stand up,
u allura kulħadd beda tqabbil off ma 'xulxin
sabiex effettivament jgħoddu idealment kif ħafna nies kienu fil-kamra.
U aħna wkoll ma ħaġa oħra biha jekk I minflok ma kien il-mod l-iskola antika
ta 'kemm bdew 1, 2, 3, 4, 5, 6 u oħrajn,
li wisq, id-daqs ta 'dik il-problema kienet ta' n daqs. Kien hemm nies n fil-kamra.
Imma I jistgħu iħaffu dan up, id-dritt? Stil iskola Grad I tista 'tibda jingħaddu 2s.
2, 4, 6, 8, 10, 12. U li tħoss hekk ħafna aktar mgħaġġla, u tabilħaqq huwa.
Huwa litteralment darbtejn aktar malajr, iżda għal darb'oħra, jekk ieħor nies 400 mixi fil din il-kamra
kollha f'daqqa, dawn algoritmi se tieħu ieħor 400 jew forsi 200 passi.
>> Iżda għall-kuntrarju, jekk aħna verament nikseb intelliġenti u għandna minflok kollha ta 'inti għadd infuskom,
jitfakkar kif dan algoritmu maħduma.
You kollha saqajh. Let me malajr jgħaddi għal dan.
You kollha saqajh, inti paired off, allura nofs inti sib stabbiliti,
nofs inti sib stabbiliti, nofs inti sib stabbiliti,
u fuq kull iterazzjoni ta 'dan loop minn ġimgħa 0, aħna bin-nofs il-problema in kwistjoni
u marru n / 2, imbagħad n / 4, allura n / 8.
U l-implikazzjoni ta 'dan huwa li jekk ieħor nies 400 jimxu fil-kamra, no big deal,
dan se jieħu us f'rawnd 1 aktar, mhux 400 rawnds aktar, mhux 200 rawnds aktar.
U hekk l-istorja aħna told ftit lura kellu jagħmel ftit xi ħaġa ma 'dan.
Din il-linja ħamra hawnhekk hija lineari, huwa dritta, u huwa ittikkettjat bħala n
għaliex id-daqs ta 'problema tikber,
jekk algoriżmu tiegħek jew il-programm li magħhom inti qed issolvi dan jieħu passi n,
nistgħu plot bħala linja dritta fejn tieħu aktar żmien l-akbar id-daqs tal-problema.
U l-approċċ twosies, għadd 2, 4, 6, 8, xorta linja dritta, biss ftit aħjar.
Huwa jieħu żmien ftit inqas, sabiex il-linja isfar hija taħt il-punt linja aħmar għall-punt.
>> Iżda anke aħjar kien dan Grail qaddis ta 'dak li aħna imsejjaħ żmien logaritmika
fejn anke jekk għal darb'oħra aħna jirdoppja l-għadd ta 'nies fil-kamra,
aħna doppju tad-daqs ta 'dak il-ktieb tat-telefon mill-ewwel jum ta' klassi,
no big deal, hija tieħu 1 dmugħ paġna aktar, tieħu 1 seduta aktar 'l isfel
sabiex tissolva problema li l darbtejn akbar.
U hekk il-konverżazzjoni aħna issa jiksbu biex tibda jkollhom qed
kif nistgħu attwalment isolvu problemi b'mod effiċjenti
jekk nikkunsidraw l-aktar sempliċi ta 'problemi bħal dan?
Ejja ngħidu għandna 8 bibien li warajhom huma xi numri,
u kull wieħed minn dawn in-numri mhux magħżula bl-ebda mod,
dawn qed interi biss bl-addoċċ wara dawn il-bibien,
u aħna nistaqsu l-mistoqsija kif do you go dwar is-sejba l-għadd - li jaf -
7 wara dawn il-bibien?
What would you, bniedem, tagħmel sabiex issib lili n-numru 7
jekk jerġa 'kull wieħed minn dawn huma bibien u biex tara valur ikollok tiftaħ bieb?
Liema se jkunu l-algoritmu tiegħek tkun forsi?
>> [Rispons istudent inaudible] >> Allura tibda bil-lemin u tiftaħ bieb, tiftaħ bieb, tiftaħ bieb.
U fl-agħar każ, kemm żmien huwa se jieħu magħna biex issib in-numru 7?
U għal darb'oħra, dawn mhux qed magħżula, dan mhuwiex faċli kif, ukoll, jien ser tiftaħ il-bieb 7.
Hija tista 'tieħu magħna, maximally, 8 passi.
Fl-agħar każ, 7 hija saltwarjament fl-aħħar nett tal-linja tal-bibien,
hekk aħna jista 'jkollhom biex jippruvaw l-bibien kollha n.
Għalhekk għal darb'oħra hawn, aħna jidhru li jkollhom algoritmu lineari.
Fil-fatt, għamilna dan biss ftit ta 'snin ilu.
Wieħed mill-predeċessuri tiegħek ġiet ikkontestata ma preċiżament dan
fejn aħna ma jkollhom verżjoni diġitali, aħna minflok kellhom blackboard
ma 'xi biċċiet tal-karti fuqha.
U dak li ħsibt nixtieq tagħmel huwa li tieħu ħarsa lura lejn kif dan marru,
wieħed mill-aħjar opportunitajiet u forsi aktar strambi fuq il-palk
li jkollhom dimostrazzjoni dritt hawn fuq Sanders.
Kellna 2 fillieri ta 'numri.
Aħna biss se tħares lejn dak li jiġri hawn ma 'Sean għall-quċċata ta' dawn ringieli.
Sakemm l-ebda wieħed qatt darb'oħra voluntiera fil CS50,
kellna barka Sean li żżomm dan fuq camera,
hekk hu jaf li mijiet ta 'nies kienu jaraw dan issa għas-snin.
Iżda Sean għamlet biċċa xogħol aqwa - jew ma hu -? Fil-fatt konstatazzjoni lilna numru partikolari.
>> Mela ejja ara kemm hu solvuta din algoritmu sabiex aħna ser ikomplu dan konverżazzjoni qabel twil
ta 'kif insibu affarijiet b'mod effiċjenti.
[Malan fuq video] Għandi moħbija wara dawn il-bibien n-numru 7,
iżda tucked bogħod f'xi wħud minn dawn il-bibien kif ukoll huma oħra mhux negattivi numri,
u mira tiegħek huwa li jaħsbu ta 'dan ringiela ta' fuq ta 'numri biss bħala firxa
jew biss sekwenza ta 'biċċiet tal-karti bin-numri warajhom,
u mira tiegħek huwa, biss tuża l-firxa ta 'fuq hawn, issib lili n-numru 7.
U aħna mbagħad se critique kif inti tmur dwar kif isir dan. >> Kull dritt.
[Malan] Sib us-numru 7, jekk jogħġbok.
[Daħk]
[Malan] No [Rires]
5, 19, 13, [daħk]. Mhuwiex kwistjoni trick.
1.
[Daħk]
Fuq dan il-punt punteġġ tiegħek ma tantx hu tajjeb, sabiex inti tista 'ukoll jibqgħu għaddejjin. [Daħk]
3.
Mur fuq. Franchement, I iżda ma jistax jgħin wonder dak li qed anki jaħsbu dwar. [Daħk]
Biss il-filliera ta 'fuq, sabiex inti stajt ltqajna 3 xellug. Allura ssib lili 7.
[Studenti murmuring]
[Malan] 17.
[Studenti murmuring]
[Malan] 7! [Applause]
>> Allura l-Erbgħa aħna se adsa fis dan u algoritmi aktar sofistikati għall-konstatazzjoni affarijiet.
Għal issa aħna ser tħallik ma Sean u ara inti nhar l-Erbgħa.
[CS50.TV]