>> [Ddoqq il-mużika]
>> DAVID J. Malan: Kull dritt.
Dan huwa CS50, u dan huwa l-bidu ta 'Ġimgħa 2.
U tkun taf tfakkar li aktar minn l-aħħar ftit ġimgħat,
konna qegħdin jintroduċu kompjuter xjenza u, min-naħa, l-ipprogrammar.
>> U bdejna l-istorja permezz ta ' Scratch, dik il-lingwa grafika
minn Media Lab MIT'S.
U allura l-iktar reċentement, ġimgħa li għaddiet, aħna ma
jintroduċu higher-- ta ' lingwa ta 'livell aktar baxx magħruf
kif Ċ, xi ħaġa li purament testwali.
U, tabilħaqq, l-aħħar darba aħna esplorat fi ħdan il-kuntest
għadd ta 'kunċetti.
>> Dan, irtirar, kien il-ħafna ewwel programm ħarisna lejn.
U dan il-programm, pjuttost sempliċi, prints out, "bonjour, dinja."
Iżda hemm daqstant seeming magic jiġri.
Hemm dan #include ma 'dawn parentesi angolu.
Hemm int.
Hemm (vojt).
Hemm parentesi, ċingi kaboċċi, semi-colons, u għalhekk ħafna aktar.
>> U għalhekk, ifakkar li aħna introdotti Scratch
b'tali mod li nistgħu, idealment, tara l-passat li sintassi, l-għalf li verament mhux
dak kollu li intellettwalment interessanti iżda kmieni
huwa, assolutament, daqsxejn delikata biex nagħlaq moħħ tiegħek madwar.
U, tabilħaqq, wieħed mill-aktar komuni affarijiet kmieni fi klassi ta 'programmazzjoni,
speċjalment għal dawk li huma inqas komdu, huwa li tinkiseb frustrati bl
u tripped minn ċerti sintattika żbalji, biex ma nsemmux żbalji ta 'interpretazzjoni.
U hekk fost l-għanijiet tagħna illum, fil-fatt, se
jkun li tgħammar int ma 'xi tekniki soluzzjoni ta 'problemi dwar kif
biex isolvu aħjar il-problemi huma stess fil-forma ta 'debugging.
U tkun taf tfakkar ukoll li l- ambjent li aħna introdotti
aħħar darba kien jissejjaħ CS50 IDE.
Dan huwa softwer fuq l-internet li tippermetti li inti programm fil-sħaba,
biex ngħidu hekk, filwaqt li jżommu kollha ta 'tiegħek fajls flimkien, kif aħna se jerġa illum.
U tfakkar li aħna revisited dawn is-suġġetti hawn,
fosthom il-funzjonijiet, u loops, u varjabbli, u l-espressjonijiet Boolean,
u kondizzjonijiet.
U fil-fatt ftit aktar li aħna tradotti mid-dinja ta 'scratch
għad-dinja ta 'C.
>> Iżda l-bini fundamentali blokki, biex ngħidu hekk,
kienu verament għadhom l-istess ġimgħa li għaddiet.
Fil-fatt, aħna verament biss kellhom biċċa puzzle differenti, jekk inti se.
Minflok dan vjola jiffranka blokk, aħna minflok
kienet printf, li hija din il-funzjoni fl Ċ li
jippermettilek li jistampaw xi ħaġa u format fuq l-iskrin.
Aħna introduċiet il CS50 Librerija, fejn inti
issa għad-dispożizzjoni tiegħek get_char, u get_int, u get_string,
u funzjonijiet oħra ftit kif ukoll, li permezz tagħhom tista 'tikseb l-input
mill-tastiera tal-utent stess.
U aħna wkoll ħa ħarsa lejn l-affarijiet bħall these- BOOL, u char,
u doppju, float, int, spag long_long.
U hemm anke tipi ta 'data oħra fid C.
>> Fi kliem ieħor, meta inti tiddikjara varjabbli taħżen xi valur,
jew meta inti jimplimentaw funzjoni li jirritorna xi valur,
inti tista 'tispeċifika liema tip ta 'valur li hu.
Huwa ta 'spag, bħal sekwenza ta 'karattri?
Huwa ta 'numru, bħal integer?
Huwa ta 'b'punt li jvarja valur, jew bħalhom?
Għalhekk fl Ċ, b'differenza Scratch, aħna fil-fatt beda biex tispeċifika liema tip ta 'data
konna jirritornaw jew jużaw.
>> Imma, naturalment, aħna wkoll dam fis xi limiti fundamentali tal-kompjuters.
U b'mod partikolari, din il-lingwa C, irtirar
li ħadna ħarsa lejn overflow numru sħiħ, ir-realtà
li jekk inti biss għandek ammont finit ta 'memorja
jew, speċifikament, numru finit ta 'bits, inti tista' biss joqgħod tant għoli.
U hekk aħna ħares lejn dan l-eżempju hawn li biha kontro f'ajruplan,,
fil-fatt, jekk running twil biżżejjed se overflow u jirriżultaw fi software
żball potenzjal fiżiku attwali.
>> Aħna wkoll ħares lejn f'wiċċ l-ilma punt impreċiżjoni, ir-realtà
li ma biss numru finit ta ' ta 'bits, kemm jekk huwa 32 jew 64,
inti tista 'tispeċifika biss numri tant wara punt deċimali, wara li inti
tibda tikseb impreċiż.
Allura per eżempju, terz fil- dinja hawn, fid-dinja tal-bniedem tagħna,
nafu huwa biss numru infinit tal 3s wara l-punt deċimali.
Iżda kompjuter ma jistax neċessarjament jirrappreżentaw numru infinit ta 'numri
jekk inti biss jippermettu dan ftit ammont finit ta 'informazzjoni.
>> Allura mhux biss ma aħna tgħammar int bil-qawwa akbar f'termini
ta 'kif inti tista' tesprimi lilek innifsek fid- tastiera f'termini ta 'pprogrammar,
aħna wkoll limitati dak inti tista 'attwalment tagħmel.
U fil-fatt, bugs u żbalji jistgħu joriġinaw minn dawk it-tipi ta 'kwistjonijiet.
U fil-fatt, fost is-suġġetti llum ser ikunu suġġetti bħat debugging
u fil-fatt tfittex taħt il-barnuża fl-aħħar ġimgħa kif ġew introdotti affarijiet
huma effettivament implementati sabiex inti aħjar
jifhmu kemm il-kapaċitajiet ta u -limitazzjonijiet ta 'lingwa bħal C.
>> U fil-fatt, aħna ser qoxra lura l-saffi mill-aktar sempliċi ta istruttura tad-data,
xi ħaġa imsejħa firxa, li Scratch jiġri li jsejjaħ "lista."
Huwa ftit differenti fil-kuntest.
U allura aħna ser jintroduċi wkoll waħda mill- ewwel ta 'problemi speċifiċi għas-domain tagħna
fil CS50,-dinja ta ' kriptografija, l-arti tal scrambling
jew ċċifrar informazzjoni hekk li inti tista 'tibgħat messaġġi sigrieti
u jiddekowdja messaġġi sigrieti bejn żewġ persuni, A u B.
>> Allura qabel we tranżizzjoni għal dak dinja ġdida,
ejja jippruvaw tgħammar int ma 'xi tekniki li magħhom inti tista 'telimina
jew inaqqsu għall-inqas f'xi tal-frustrazzjonijiet
li inti probabilment ltaqgħu magħhom matul il-ġimgħa li għaddiet waħdu.
Fil-fatt, qabel int qed such-- xi wħud problemi ewwel tiegħek fil C. U odds huma,
jekk int simili me, l-ewwel darba inti tipprova tip ta 'programm,
anke jekk taħseb loġikament il-programm huwa pjuttost sempliċi,
inti tista 'tajjeb ħafna hit ħajt, u il kompilatur mhux se jikkoopera.
Jagħmel jew Clang mhux se li fil-fatt jagħmlu offerti tiegħek.
>> U għaliex jista 'jkun?
Ukoll, ejja tagħti ħarsa lejn, forsi, programm sempliċi.
Jien ser jimxi 'l quddiem u jiffrankaw dan fajl deliberatament imsejjaħ buggy0.c,
għaliex naf li jkun żbaljat bil-quddiem.
Imma jien ma jista jirrealizzaw li jekk dan hija l-ewwel jew it-tieni jew it-tielet programm
li jien attwalment jagħmlu myself.
Hekk jien ser jimxi 'l quddiem u tip out, int prinċipali (vojt).
U allura ġewwa tal ċingi kaboċċi tiegħi, a familjari ħafna ( "hello, world--
backslash, n ") - u semi-colon.
>> Stajt salvati l-fajl.
Issa jien se jinżlu tieqa terminal tiegħi
u t-tip għamla buggy0, minħabba li, għal darb'oħra, l-isem tal-fajl llum hija buggy0.c.
So I tip jagħmel buggy0, Ikteb.
>> U, oh, gosh, jiġbor lura mingħand aħħar darba li l-ebda messaġġi ta 'żball hija ħaġa tajba.
Allura l-ebda output hija ħaġa tajba.
Iżda hawnhekk għandi b'mod ċar xi numru ta 'żbalji.
>> Allura l-ewwel linja tal-produzzjoni wara ittajpjar jagħmel buggy0, irtirar,
huwa l-output pjuttost verbose Clang s.
Taht il-barnuża, IDE CS50 huwa kkonfigurat
li tuża mazz sħiħ ta ' għażliet ma din il kompilatur
sabiex inti ma għandekx biex jaħsbu dwar minnhom.
U li dak kollu li l-ewwel linja mezzi li jibda bil Clang.
>> Iżda wara li, l-problemi jibdew jagħmlu apparenza tagħhom.
Buggy0.c fuq il-linja 3, karattri 5, hemm kbir, żball aħmar.
X'inhu li?
Impliċitament tiddikjara funzjoni librerija printf ma 'tip int (char * CONST,
...) [-Werror].
I mean, huwa malajr ħafna gets arcane ħafna.
U ċertament, fl-ewwel t'għajn, aħna se le
jistennew li inti tifhem l- totalità ta 'dak il-messaġġ.
U għalhekk wieħed mill-lezzjonijiet għal-lum huwa għaddej
li jkun biex jipprova li l-avviż mudelli, jew affarijiet simili,
għall-iżbalji inti jista 'jkollhom jiltaqgħu magħhom fil-passat.
Mela ejja tease apparti biss dawk il-kliem li tfittex familjari.
Il-big, iżball aħmar huwa kjarament simboliku ta 'xi ħaġa li tkun ħażina.
>> b'mod impliċitu li tiddikjara printf funzjoni librerija.
Għalhekk anki jekk jien ma pjuttost jifhmu dak li impliċitament li tiddikjara funzjoni librerija
tfisser, il-problema żgur tirrigwarda printf b'xi.
U s-sors ta 'din il-kwistjoni għandha x'taqsam ma 'tiddikjara dan.
>> Li tiddikkjara funzjoni huwa isemmi dan għall-ewwel darba.
U aħna użati l terminoloġija aħħar ġimgħa li jiddikjaraw prototip funzjoni tal-
jew b'linja waħda fil-quċċata tal tiegħek fajl stess jew f'fajl header hekk imsejħa.
U f'liema fajl ma nistgħu ngħidu aħħar ġimgħa li printf huwa kwotazzjoni,
unquote, iddikjara?
F'liema fajl prototip tiegħu?
>> Mela jekk inti recall, l-ewwel ħaġa I ttajpjata, kważi kull programm aħħar time--
u aċċidentalment mument ilu beda ittajpjar myself-- kien dan here-- waħda
hash-- #include <stio-- għall input / output-- dot siegħa U fil-fatt,
jekk I issa jiffranka dan il-fajl, jien ser li jimxi 'l quddiem u ċar l-iskrin tiegħi,
li tista 'tagħmlu billi jittajpja Ċar, jew inti tista 'żżomm Kontroll L,
biss biex ċar tieqa terminal tiegħek biss biex jeliminaw xi imbarazz.
>> Jien ser jimxi 'l quddiem u -Ġdid tat-tip make-buggy0, Ikteb.
U voila, jien xorta tara li kmand twila minn Clang,
iżda hemm ebda messaġġ ta 'żball f'dan il-ħin.
U fil-fatt, jekk nagħmel ./buggy0, bħad aħħar darba,
fejn dot ifisser dan il tad-direttorju, Slash ifisser biss,
hawnhekk jidħol l-isem tal-programm u dak l-isem tal-programm huwa buggy0,
Daħħal, "bonjour, dinja."
>> Issa, kif jista 'jkollok miġbura din is-soluzzjoni
mingħajr ma neċessarjament jirrikonoxxi kif ħafna kliem
kif għamilt, ċertament, li jkollhom għamlu dan għal tant snin?
Ukoll, realizzata kull l-ewwel problema sett, aħna jintroduċu inti għal kmand
li l-persunal CS50 stess kiteb imsejħa help50.
U fil-fatt, Ċ ma ispeċifikazzjoni għall il-problema stabbilita dwar kif tuża dan.
>> Iżda essenzjalment huwa help50 programm li l-persunal CS50 s
kiteb li jippermetti li inti run kmand jew tmexxi programm,
u jekk ma tifhimx tagħha produzzjoni, li jgħaddu l-output tagħha li help50,
f'liema punt l-software li l-persunal tal-kors kiteb
se tħares lejn l-output programm tiegħek linja b'linja, karattri mill-karattru.
U jekk aħna, l-istaff, jirrikonoxxu l- messaġġ ta 'żball li int tesperjenza,
aħna nippruvaw biex tipprovoka inti ma 'xi mistoqsijiet rhetorical, ma 'xi pariri,
ħafna bħal TF jew CA jew ruħi ser jagħmlu personalment fil-ħinijiet uffiċċju.
>> Sabiex tfittex li help50 jekk inti ma neċessarjament jirrikonoxxu problema.
Imma ma jistrieħ fuqu wisq bħala crutch.
Ċertament jipprova jifhem tagħha produzzjoni u mbagħad jitgħallmu minnha
b'tali mod li biss darba jew darbtejn taħseb Qatt run help50 għal żball partikolari
messaġġ.
Wara dan, inti għandek tkun mgħammra aħjar lilek innifsek
ċifra barra dak li attwalment hu.
>> Ejja nagħmlu ieħor hawnhekk.
Let me go quddiem, u f'ieħor fajl aħna ser sejħa dan buggy1.c.
U f'dan il-fajl jien ser deliberately--
imma nippretendu li jien ma jifhmu dak żball stajt magħmula.
>> Jien ser jimxi 'l quddiem u jagħmlu this-- #include, peress li jien stajt
Tgħallimt lezzjoni tiegħi minn mument ilu.
Int prinċipali (vojt), bħal qabel.
U mbagħad fil hawn jien ser biex tagħmel string i - get_string.
U recall mill-aħħar darba li din il-mezzi, ħej, kompjuter,
tagħti me varjabbli, sejħa hija s, u jagħmlu t-tip ta 'dak varjabbli string
so I jista 'jaħżen f'kelma waħda jew iktar fiha.
>> U mbagħad fuq il-lemin naħa tas-sinjal ugwali
huwa get_string, li hija funzjoni fil-Librerija CS50
li ma eżattament dan.
Jiġrilha funzjoni u mbagħad idejn minn lemin għax-xellug.
Allura dan is-sinjal ugwali ma jfissirx "Hija" kif aħna tista 'taħseb fil-matematika.
Dan ifisser assenjazzjoni mill-lemin għax-xellug.
Allura dan ifisser, jieħdu l-sekwenza mill l-utent u jaħżnu ġewwa ta 's.
>> Issa ejja jużawh.
Let me imorru quddiem issa u bħala t-tieni linja, let me imorru quddiem u jgħidu "bonjour" -
mhux "dinja," imma "hello,% s-- li huwa placeholder tagħna, comma i,
li hija varjabbli tagħna, u mbagħad semi-colon.
Mela jekk jien ma screw up wisq hawn, dan il qisu kodiċi korrett.
>> U instincts tiegħi issa huma li josservawha.
Il-fajl huwa msejjaħ buggy1.c.
Hekk jien ser tagħmel tagħmel buggy1, Ikteb.
U darn-it, jekk ma jkunx hemm anke żbalji aktar milli qabel.
I mean, hemm aktar messaġġi ta 'żball Ikun
jidhru minn linji attwali f'dan il-programm.
>> Iżda l-takeaway hawnhekk huwa, anki jekk int megħlub
b'żewġ jew tliet jew erba 'messaġġi aktar' żball,
tiffoka dejjem fuq il-ħafna ewwel ta 'dawk il-messaġġi.
Ħarsa lejn il-quċċata-aktar waħda, scrolling back-up skond il-bżonn.
So here I ittajpjat jagħmlu buggy1.
Hawn dak output Clang kif mistenni.
>> U hawnhekk l-ewwel żball aħmar.
Użu ta 'identifikatur mhux iddikjarat spag, ma I jfisser standard fil-?
Għalhekk fl-istandard huwa fil-fatt xi ħaġa oħra.
Hija tirreferi għall-tal-utent tastiera, essenzjalment.
>> Iżda li mhux dak I fisser.
I fisser spag, u I fisser get_string.
Allura x'inhu li jien nesa li tagħmel dan il-ħin?
X'hemm nieqes dan iż-żmien?
Għandi #include tiegħi, so I jkollhom aċċess għal printf.
>> Imma dak li għandi ma jkollhom aċċess għall għadha biss?
Ukoll, bħad aħħar darba, I-ħtieġa li tgħid il-kompilatur
Clang liema dawn il-funzjonijiet huma.
Get_string ma jaqax bl C. U b'mod partikolari, huwa
ma jaqax fil- header fajl,.
Hija minflok tiġi fi ħaġa li l-persunal kiteb,
li huwa fajl differenti isem imma adattat issemmiet.
>> Allura sempliċiment billi żżid li linja waħda tal-irtirar code-- mill-aħħar darba
li meta Clang timxi, li għaddej biex tħares lejn kodiċi ta 'fuq tiegħi għal isfel,
xellug għal-lemin.
Huwa ser avviż, oh, inti trid.
Let me go u ssib li, kull fejn hija fuq is-server,
kopja u paste, essenzjalment, fil-quċċata tal-fajl tiegħek
sabiex f'dan il-punt fl-istorja, linja 1, il-bqija tal-programm
jistgħu, tabilħaqq, tuża kwalunkwe waħda mill-funzjonijiet hemmhekk, fosthom get_string.
Hekk jien ser jinjora il-bqija ta 'dawn l-iżbalji,
minħabba I, tabilħaqq, jissuspettaw li huma biss l-ewwel wieħed fil-fatt mattered.
U jien ser jimxi 'l quddiem u terġa' ssir, wara iffrankar fajl tiegħi jagħmlu buggy1.
U voila, għamlet xogħol.
U jekk nagħmel ./buggy1 u tip, għal Pereżempju, Zamyla, jiena issa se tikseb bonjour,
Zamyla, minflok bonjour, dinja.
>> Kull dritt.
Allura l-takeaways hawn mbagħad għandhom, wieħed, jippruvaw glean kif kemm tista
mill-messaġġi ta 'żball waħdu, tfittex lejn uħud mill-kliem rikonoxxibbli.
Preskrizzjoni li, l-użu help50 kull il-problema sett ispeċifikazzjoni.
Iżda preskrizzjoni li, wisq, dejjem tfittex fil-iżball quċċata biss, għall-inqas
inizjalment, biex tara liema informazzjoni għandu mnejn attwalment rendiment.
Iżda jirriżulta hemmhekk s saħansitra aktar funzjonalità mibnija
fil-Librerija CS50 sabiex jgħinu inti kmieni fil-semestru
u kmieni fl-ipprogrammar ċifra barra dak li għaddej ħażin.
Mela ejja nagħmlu eżempju ieħor hawn.
Jien ser sejħa dan buggy2, li, għal darb'oħra, se jkun żbaljat barra
tal-bieb, permezz tad-disinn.
>> U jien ser jimxi 'l quddiem u jagħmlu #include.
U mbagħad jien ser tagħmel int prinċipali (vojt).
U mbagħad jien ser tagħmel għal loop.
Għal (int i _ 0.
i huwa inqas minn jew ugwali għal 10.
i ++, u mbagħad fl-braces kaboċċi, jien ser li jistampa biss simbolu hashtag hawn
u karattru linja ġdida.
>> Allura intenzjoni tiegħi ma 'dan programm huwa pjuttost sempliċi
li jtenni 10 darbiet u fuq kull iterazzjoni
ta 'dak loop kull darba permezz taċ-ċiklu,
jistampa hashtag, a hashtag, li hashtag.
kull linja waħda minħabba I għandna l-linja ġdida hemmhekk.
U tfakkar li l-għall loop, kull l-aħħar week--
u int ser tingħata aktar familjari mal-sintassi
billi tużaha mal-prattika qabel long-- dan jagħti me
varjabbli msejħa iu settijiet għal 0.
>> Din il żidiet i fuq kull iterazzjoni minn 1.
Hekk i tmur għal 1 sa 2 sa 3.
U allura din il-kondizzjoni fil- tan-nofs bejn il semi-colons
gets verifikati fuq kull iterazzjoni biex jagħmlu żgur li għadna fil-firxa.
So I jridu jtenni 10 darbiet, so I għandhom intuwittivament tip ta 'ħafna biss
tpoġġi 10 kif rbit superjuri tiegħi hemmhekk.
>> And yet, meta I run dan, wara kumpilazzjoni bl make buggy2--
u dan ma jikkumpilaw OK.
So I ma jkollhom Żball sintassi dan iż-żmien.
Let me imorru quddiem issa u run buggy2, Ikteb.
U issa iscroll.
U let me jżidu id-daqs tat-tieqa.
>> I jidhru li jkollhom 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11.
Allura hemm 11 hashtags, anki jekk I b'mod ċar tpoġġi 10 ta 'ġewwa ta' dan loop.
Issa, xi wħud minnkom tista 'tara immedjatament dak l-iżball hu għaliex, fil-fatt, din il-
mhuwiex żball diffiċli ħafna biex jagħmlu.
Iżda huwa komuni ħafna magħmula fi stadju bikri.
>> Dak li nixtieq li jiġi rrilevat, madankollu, hija, kif tista I figura dan out?
Ukoll, jirriżulta li -Librerija CS50 ġejja
mhux biss ma get_string u get_int u get_float u funzjonijiet oħra.
Hija wkoll tiġi flimkien ma 'funzjoni speċjali imsejħa eprintf, jew, żball printf.
U dan jeżisti biss biex isiru hija ftit aktar faċli għalik
meta debugging kodiċi tiegħek għal ftit jistampa messaġġ ta 'żball fuq l-iskrin
u jafu fejn ġew minn.
>> Allura per eżempju, ħaġa waħda I jista nagħmlu hawnhekk ma din il-funzjoni huwa this--
eprintf, u mbagħad jien ser jimxi 'l quddiem u jgħidu I issa% i, backslash, n.
U jien ser plagg fil-valur ta 'i.
U top up, għaliex dan hija fil-Librerija CS50,
Jien ser jimxi 'l quddiem u jinkludu
so I jkollhom aċċess għal din il-funzjoni.
Imma ejja tikkunsidra liema linja 9 suppost li tkun qiegħda tagħmel.
Jien ser jitħassar dan eventwalment.
Din il m'għandha x'taqsam xejn ma bil-għan predominanti tiegħi.
Iżda eprintf, printf żball, huwa biss maħsub li tagħti me xi informazzjoni djanjostika.
Meta I run program tiegħi, nixtieq li tara dan fuq l-iskrin temporanjament
kif ukoll just biex jifhmu x'inhu għaddej.
>> U, tabilħaqq, fuq kull iterazzjoni hawn 'linja ta' 9
Irrid nara, dak li huwa l-valur ta 'i?
X'inhu l-valur ta 'i?
U, forsi, I għandhom biss ara dak il-messaġġ, wkoll, 10 darbiet.
>> So let me go quddiem u recompile programm tiegħi,
kif nagħmel xi ħin I jagħmlu bidla. ./buggy2.
U now-- OK.
Hemm ħafna aktar għaddejjin.
So let me iscroll fil tieqa saħansitra akbar.
>> U tkun taf tara li kull wieħed l hashtags għadu istampar.
Iżda fl bejn kull wieħed minnhom issa dan huwa produzzjoni dijanjostiċi formattjati kif ġej.
L-isem tal-programm tiegħi hawnhekk huwa buggy2.
L-isem tal-fajl huwa buggy2.c.
In-numru linja li minnha dan kien stampat huwa linja 9.
U mbagħad lejn il-lemin ta 'dik l- messaġġ ta 'żball li jien jistennew.
>> U x'hemm sbieħ dwar dan hija li issa jien ma jkollhom bilfors joqgħod
in my head dak il-programm tiegħi qed tagħmel.
I jista 'jara li fuq il- ewwel iterazzjoni i huwa ta '0,
imbagħad 1, imbagħad 2, imbagħad 3, imbagħad 4, allura 5, imbagħad 6, imbagħad 7, allura 8, allura 9, imbagħad
10.
Allura stenna minuta.
X'qed jiġri hawn?
I għadhom jidhru li huma isserraħ kif maħsub sa 10.
>> Iżda fejn ma nibda?
0, 1, 2, 3, 4, 5, 6, 7, 8, 9 10.
Allura 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10-- il-11 saba
hija indikattiva tal-problema.
I jidhru li jkollhom magħduda b'mod inkorrett linja tiegħi.
Pjuttost milli jmorru 10 iterazzjonijiet, Jien jibdew minn 0,
Jien jispiċċa fi u permezz 10.
Iżda għaliex, bħal kompjuter, Jien jibdew għadd ta '0,
Inkun jingħaddu l li, iżda mhux permezz, 10.
>> U għalhekk l-jiffissaw, I eventwalment realizzati hawnhekk, huwa wieħed minn żewġ affarijiet.
I jistgħu sempliċement ħafna jgħidu joqgħod sa inqas minn 10.
Allura 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, li huwa, tabilħaqq, korretta,
anki jekk ħsejjes ħażin ftit.
Jew I jistgħu jagħmlu inqas minn jew ugwali sa 9, sakemm nibda f'0.
Jew jekk int verament ma simili dan, inti jista 'joqgħod sa permezz 10 iżda jibdew fl-1.
Iżda għal darb'oħra, dan biss mhux dak komuni.
Fil programming-- għalkemm mhux tant fil Scratch--
iżda fil-programmazzjoni fil C u lingwi oħra,
bħall JavaScript u Python u oħrajn, huwa
biss komuni ħafna għall- diskussjoni tagħna ta 'binarja
għal ftit jibdew jingħaddu fil- anqas numru tista ', liema huwa ta' 0.
Kull dritt.
Allura dak eprintf.
U għal darb'oħra, issa li stajt dehret tiegħi problema, u jien ser jmorru lura għal 0
permezz ta 'inqas minn 10, jien ser li jmorru fi u ħassar eprintf.
>> M'għandux ikun hemm meta I vapur kodiċi tiegħi jew jissottomettu kodiċi tiegħi
jew juru lill ħaddieħor.
Huwa verament ftit maħsub li għandhom jintużaw temporanjament.
Imma issa stajt fiss dan il partikolari problema kif ukoll.
>> Ukoll, ejja nagħmlu eżempju wieħed aktar hawn li jien ser Whip up kif ġej.
Jien ser jimxi 'l quddiem u #include. $ 50
U jien ser jimxi 'l quddiem u #include.
>> U jien ser tiffranka dan il-fajl bħala buggy3.c.
U jien ser jimxi 'l quddiem u tiddikjara int prinċipali (vojt).
U allura ġewwa tal hemmhekk Jien ser tagħmel int i _ -
Irrid li jimplimentaw programm bi get_negative_int.
Din mhix funzjoni li jeżisti s'issa.
Allura aħna qed tmur biex jimplimentaw hija fi ftit mument.
Iżda aħna qed tmur biex tara għaliex huwa Buggy fl-ewwel pass.
U ladarba stajt gotten l int mill-utent,
Jien biss ser jistampaw% i hija negattiva numru sħiħ, backslash, n, comma, i.
Fi kliem ieħor, kollha I jixtiequ dan il-programm li tagħmel
huwa jiksbu int negattiv minn l-utent u mbagħad jistampa
li tali u tali huwa int negattiva.
>> Issa għandi bżonn biex jimplimentaw din il-funzjoni.
Allura aktar tard fil-fajl tiegħi, jien ser imorru quddiem u tiddikjara funzjoni msejħa
get_negative_int (vojt) - u aħna ser terga 'lura għal dak li linja jfisser darb'oħra
fi n int moment--; do-- do n printf following-- huwa :.
U mbagħad jien ser do n - get_int, u jagħmlu dan filwaqt li n hija akbar minn 0.
U mbagħad jirritornaw n ;.
>> Allura hemm ħafna għaddej fil dan imma ebda wieħed minnhom aħna ma
tħares lejn ġimgħa li għaddiet, għall-inqas fil-qosor.
Allura fuq il-linja 10 hawn stajt iddikjarata funzjoni msejħa get_negative_int,
u stajt jitqiegħdu (vojt), fil parentesi, ir-raġuni li huma dan il
ma jieħux input.
Jien ma jgħaddux xejn għal din il-funzjoni.
Jien biss jkollna xi ħaġa lura minnha.
>> U dak li jien bit-tama li nikseb lura huwa integer.
M'hemm l-ebda tip ta 'dejta fil Ċ imsejħa negative_int.
Huwa biss int, hekk li għaddej li jkunu fuqna biex tiżgura
li l-valur li attwalment jintbagħat lura huwa mhux biss int
iżda huwa wkoll negattiva.
>> On-line 12 Jien tiddikjara varjabbli imsejħa nu jagħmilha ta 'int tip.
U mbagħad fil-linja 13 permezz 18 jien tagħmel xi ħaġa waqt li xi ħaġa huwa veru.
Jien jimxu 'l quddiem u l-istampar n jiġifieri, kolon, u mbagħad spazju,
bħal fil-pront għall-utent.
>> Jien imbagħad titlob get_int u ħażna valur tar-ritorn hekk imsejħa tagħha
f'dak varjabbli n.
Imma jien ser iżommu tagħmel dan waqt n hija akbar minn 0.
Fi kliem ieħor, jekk l-utent jagħti me int u dak in-numru huwa akbar minn 0,
Ergo, pożittivi, jien ser biss iżommu reprompting-utent,
iżommu reprompting, billi jġegħluhom jikkooperaw u jagħtu me int negattiv.
>> U ladarba n huwa attwalment negative-- jissoponi l-utent finalment tipi -50,
allura dan loop filwaqt li m'għadux jgħodd għaliex -50 ma tkunx akbar minn 0.
Allura aħna break out ta 'dik loop loġikament u r-ritorn n.
>> Iżda hemm wieħed ieħor ħaġa I għandek tagħmel.
U nista 'sempliċement tagħmel dan billi ikkupjar u pasta
linja waħda tal-kodiċi fil-quċċata tal-fajl.
I bżonn biex jgħallmu Clang, jew wegħda li Clang,
espliċitament li jien se, tabilħaqq, mur u jimplimentaw
dan il get_negative_int funzjoni.
Hija tista 'biss tkun aktar baxxa fil-fajl.
Għal darb'oħra, ifakkar li Clang taqra affarijiet fuq għal isfel,
xellug għal-lemin, sabiex inti ma tistax sejħa funzjoni jekk Clang
ma jkunx jaf li għaddej jeżistu.
>> Issa, sfortunatament, dan il-programm, kif xi wħud minnkom jista 'jkollok ndunat,
huwa diġà Buggy.
Let me imorru quddiem u jagħmlu buggy3.
Hija jikkompila, hekk problema tiegħi issa mhux żball sintassi, bħal żball testwali,
huwa fil-fatt se tkun loġika Żball li stajt deliberatament
magħmula bħala opportunità biex pass permezz x'inhu għaddej.
>> Jien ser jimxi 'l quddiem issa u run buggy3.
U jien se jmorru quddiem u mhux jikkoopera.
Jien ser jagħtuh in-numru 1.
Hija ma bhalu, hekk huwa suġġeriment me darb'oħra.
>> Kif dwar 2?
3?
50?
Ebda wieħed minn dawk li qed jaħdmu.
Kif dwar -50?
U l-programm jidher li qed jaħdem.
>> Let me jippruvaw darba aktar.
Let me jippruvaw -1, jidher li qed jaħdem.
Let me jippruvaw -2, jidher li qed jaħdem.
Let me jippruvaw 0.
Huh, li żbaljata.
Issa, aħna qed tkun ftit pedantic hawn.
Imma hija, tabilħaqq, il-każ li għamilhom 0 huwa la pożittiv u lanqas negattiv.
U għalhekk il-fatt li programm tiegħi huwa qal li għamilhom 0 huwa numru sħiħ negattiv,
li mhux teknikament korretta.
>> Issa, għaliex hi tagħmel dan?
Ukoll, jista 'jkun ovvju.
U, tabilħaqq, il-programm huwa maħsub li jkun pjuttost sempliċi
hekk aħna għandna xi ħaġa biex jesploraw.
>> Imma ejja jintroduċu t-tielet debugging teknika hawn imsejħa debug50.
Allura dan huwa programm li konna biss maħluqa
din is-sena tissejjaħ debug50 li se jippermetti li inti
li tuża dak li sejjaħ built-in debugger grafika fl IDE CS50.
U debugger huwa biss programm li ġeneralment ihallik run program tiegħek
iżda pass pass pass, linja billi linja b'linja, jieqaf, poking
madwar, tħares lejn varjabbli b'tali mod li il-programm ma biss blow passat inti
u malajr jistampaw xi ħaġa jew le print xi ħaġa.
Dan jagħtik l-opportunità, fil veloċità tal-bniedem, li jinteraġixxu miegħu.
>> U biex tagħmel dan, inti sempliċiment tagħmel dan li ġej.
Wara kompilazzjoni kodiċi tiegħek, li jiena diġà għamlu, buggy3,
inti tmur quddiem u run debug50 ./buggy.
Tant simili help50 tkun inti tmexxi help50 u allura l-kmand,
debug50 tkun inti run debug50 u allura l-isem tal-kmand.
>> Issa jaraw dak li jiġri fuq l-iskrin tiegħi, fuq in-naħa tal-lemin b'mod partikolari.
Meta I hit Run, kollha tal- għarrieda bord din il-lemin
jiftaħ fuq l-iskrin.
U hemm ħafna tmur fuq ewwel daqqa t'għajn.
Iżda hemm mhux wisq ħafna jinkwetaw dwar s'issa.
>> Dan huwa juru lili kollox li għaddej ġewwa tal-programm tiegħi
dritt issa u permezz ta 'dawn buttuni top up huwa mbagħad
tippermetti lili biex pass permezz-kodiċi tiegħi finalment pass pass pass.
Imma mhux biss.
Avviż x'jiġri.
Fl-tieqa terminal tiegħi Jien qed imqanqla għal n.
U jien ser jimxi 'l quddiem u jikkooperaw din id-darba u t-tip fil -1.
U għalkemm ftit cryptically, -1 huwa numru sħiħ negattiv, kif mistenni.
>> U mbagħad tfal ħareġ bl istatus 0 GDBserver joħorġu.
GDB, GNU Debugger, huwa l-isem tas-softwer sottostanti
li jimplimenta din debugger.
Imma dan kollu verament ifisser, il debugger marru għax-programm tiegħi jieqfu
u kollox kien tajjeb.
Jekk irrid biex verament debug programm tiegħi, Għandi biex preemptively tell debug50,
fejn ma nixtieq li jibdew titjib permezz Kodiċi tiegħi?
>> U forsi l-eħfef mod biex tagħmel dan huwa kif ġej.
Jekk I imbagħad jerġgħu jsiru fuq il- kanal ta 'editur tiegħi hawnhekk,
sabiex verament biss fil-sidebar hawn, lejn ix-xellug tan-numru linja,
avviż li jekk jien kemm tikklikkja ladarba, nressaq tikka ħamra ftit.
U li dot aħmar ftit, bħal sinjal ta 'waqfien, ifisser, ħej,
debug50, l-eżekuzzjoni nieqaf tal-kodiċi tiegħi hemm dritt meta I run dan il-programm.
>> Mela ejja tagħmel dan.
Let me imorru quddiem u run program tiegħi mill-ġdid ma debug50 ./buggy3, Ikteb.
U issa, avviż, xi ħaġa differenti li ġara.
Jien mhux qed imqanqla għadhom fil-tieqa terminal tiegħi
għal xejn, għax jien ma gotten wasalniex fil-programm tiegħi.
Avviż li fuq il-linja 8 li issa hija enfasizzata,
u hemm vleġġa ftit fil qal xellug, inti waqfa qasira hawn.
Din il-linja tal-kodiċi, linja 8, għadha ma eżegwita.
>> U x'hemm kurjuż, jekk nħares minn hawn fuq in-naħa tal-lemin,
avviż li jien hija lokali varjabbli, lokali fis-sens
li huwa ġewwa l-funzjoni attwali.
U l-valur, apparentement fil-kontumaċja, u tip ta 'konvenjenti, huwa ta' 0.
Imma jien ma tip 0.
Dik biss jiġri li jkun tiegħu valur awtomatiku fil-mument.
>> So let me go quddiem u tagħmel dan issa.
Let me imorru quddiem u fuq -quċċata dritt hawn, jien
se jimxi 'l quddiem u ikklikkja din l-ewwel ikona li
ifisser pass fuq li jfisser ma skip imma pass fuq din il-linja ta 'kodiċi,
eżekuzzjoni tagħha tul it-triq.
>> U issa, avviż, tiegħi pront għadu kif inbidlet.
Għaliex huwa li?
Stajt qallek debug50, run din il-linja tal-kodiċi.
Xi jfisser din il-linja tal-kodiċi do?
Twassalni għal int.
KOLLOX SEW.
Let me jikkooperaw.
Let me imorru quddiem issa u t-tip -1, Ikteb.
U issa avviż dak li nbidlet.
Fuq in-naħa tal-lemin, varjabbli lokali tiegħi i
huwa indikat bħala -1 issa.
U huwa għadu ta 'int tip.
>> U l-avviż, wisq, tiegħi hekk imsejħa sejħa munzell, fejn ma I nieqaf?
Aħna ser nitkellmu aktar dwar dan fil-futur.
Iżda l-sejħa munzell biss jirreferi għal dak li funzjonijiet bħalissa fil-mozzjoni.
Dritt issa huwa biss prinċipali.
U d-dritt issa l-uniku lokali varjabbli huwa i b'valur ta '1.
>> U meta I finalment pass fuq il-linja hawn, bl-istess ikona fil-lemin ta 'fuq,
-1 Huwa numru sħiħ negattiv.
Issa huwa jieqaf matul dak Brace kaboċċi.
Ejja ħalliha tagħmel ħaġa tagħha.
I pass fuq dik il-linja, u voila.
>> Allura mhux kollha li terriblement illuminanti għadhom,
iżda hija ma let me nieqaf u jaħsbu permezz loġikament
dak li dan il-programm qed tagħmel.
Iżda dan ma kienx il-każ żbaljata.
Ejja nagħmlu dan mill-ġdid kif ġej.
>> Jien ser jitlaq minn dak breakpoint fuq il-linja 8 mal-tikka ħamra.
Jien ser terġa 'ssir debug50.
Huwa awtomatikament waqfa qasira hawn.
Iżda dan iż-żmien, minflok titjib fuq din il-linja,
let me fil-fatt imorru ġewwa tal get_negative_int u ċifra barra,
għaliex hi taċċetta 0 bħala risposta valida?
>> Allura minflok tikklikkja Pass Matul.
Jien ser jimxi 'l quddiem u kklikkja Pass Into.
U tinnota li l-linja 8 thats issa enfasizzat issa f'daqqa
isir linja 17.
>> Issa, mhuwiex li l debugger tkun skipped linji 14 u 15 u 16.
Huwa biss hemm xejn biex turi li inti hemmhekk.
Dawk huma biss tiddikjara varjabbli, U allura hemm il-kelma Do
u mbagħad miftuħa kaboċċi Brace.
L-unika linja funzjonali li l- mmerraq verament huwa dan wieħed hawn, 17.
U li fejn konna waqfa qasira awtomatikament.
>> Allura printf ( "n.is:") ;, hekk li s'issa ma seħħx.
Mela ejja imorru quddiem u kklikkja Pass Matul.
Issa tiegħi fil-pront, fil-fatt, mibdula għal ( "n huwa:").
Issa get_int, jien mhux ser li jolqot titjib fis-
għaliex dik il-funzjoni kienet magħmula mill CS50 fil-Librerija.
Huwa preżumibbilment korrett.
>> Hekk jien ser jimxi 'l quddiem u tip ta jikkooperaw billi jagħtiha
l int, imma mhux int negattiv.
So let me go quddiem u hit 0.
U issa x'jiġri hawn meta nasal isfel għal-linja 21?
Stajt ma tennew mill-ġdid.
Jien ma jidhirx li tkun mwaħħla f'dik linja.
Fi kliem ieħor, dan isfar bar ma jibqgħu għaddejjin madwar,
u madwar, u madwar.
>> Issa, għaliex huwa li?
Ukoll, n, dak li n dritt issa?
I tista 'tħares lejn il-lokali varjabbli fil-debugger.
n huwa 0.
Kull dritt, dak li kien il-kundizzjoni tiegħi?
>> 20-- linja 20 hija, ukoll, 0 huwa akbar minn 0.
Dan mhuwiex veru.
0 ma tkunx akbar minn 0.
U hekk jien faqqgħet ta 'dan.
>> U hekk hu għalhekk fuq il-linja 21, jekk I attwalment tkompli,
Jien ser jirritorna 0, anki għalkemm I għandu jkollhom rifjutati 0
bħala mhux attwalment tkun negattiva.
Allura issa, jien ma verament anki kura dwar il-debugger.
Ghandek dan, I m'għandhomx bżonn li taf liema aktar li qed jiġri.
>> Hekk jien ser jimxi 'l quddiem u ikklikkja l-buttuna Play,
u ħalli din finitura up.
Issa, stajt induna li tiegħi bug hija apparentement fuq il-linja 20.
C'est iżball loġiku tiegħi.
>> U hekk dak ma nixtieq biex tagħmel għall-bidla dan?
Jekk il-problema hija li jien ma qbid 0, huwa biss żball loġiku.
U nista 'ngħid waqt n huwa ikbar minn jew ugwali għal 0,
iżommu wassal lill-utent mill-ġdid u għal darb'oħra.
>> Allura, għal darb'oħra, żball sempliċi, forsi anke ovvju meta inti raw lili
tikteb biss ftit minuti ilu.
Iżda l-takeaway hawn hija li ma debug 50,
u ma debugging softwer b'mod aktar ġenerali,
inti għandek din is-setgħa l-ġdida nstabu li walk permezz-kodiċi tiegħek stess, tfittex
permezz ta 'dak bord tal-lemin dak Valuri varjabbli tiegħek huma.
Allura inti ma neċessarjament għandhom jużaw xi ħaġa
bħalek eprintf li jistampaw dawk il-valuri.
Inti tista 'attwalment tara minnhom viżwalment fuq l-iskrin.
>> Issa, lil hinn minn dan, huwa ta 'min jinnota li hemm teknika oħra li l-
attwalment super komuni.
U inti jista 'jistaqsi għaliex din ftit Guy hawn ġie seduta fuq il-palk.
Allura hemm din it-teknika, b'mod ġenerali magħrufa bħala debugging papra tal-gomma,
li verament huwa biss xhieda tal-fatt
li programmaturi spiss meta qed tikteb kodiċi,
dawn mhux qed neċessarjament jikkollaboraw ma 'oħrajn,
jew jaħdmu f'ambjent maqsuma.
>> Huma qed tip ta 'dar.
Forsi huwa tard bil-lejl.
Huma qed jippruvaw figura xi bug fil-kodiċi tagħhom.
U dawn qed biss ma tara dan.
>> U hemm l-ebda roommate.
M'hemm l-ebda TF.
M'hemm l-ebda AI madwar.
Kull ma għandek fuq il-blata tagħhom hija din ducky gomma ftit.
>> U hekk debugging papra tal-gomma huwa biss din l-istedina
biex jaħsbu ta 'xi ħaġa bħala iblah kif dan bħala kreatura reali,
u fil-fatt jimxu permezz-kodiċi tiegħek verbalment biex dan l-oġġett inanimate.
Allura, per eżempju, jekk dan huwa eżempju tiegħi here--
u jfakkru li aktar kmieni il-problema kien dan,
jekk jien tħassar din l-ewwel linja ta 'kodiċi, u jien jimxi 'l quddiem u jagħmlu Buggy 0 darb'oħra,
ifakkar li kelli dawn messaġġi ta 'żball hawn.
Allura l-idea hawnhekk, redikola għalkemm I jħossu fil-mument tagħmel dan b'mod pubbliku,
huwa dan l-iżball.
>> OK, hekk problema tiegħi hija li stajt impliċitament iddikjarat funzjoni librerija.
U dik il-funzjoni librerija hija printf.
Declare-- OK, niddikjara tfakkarni ta 'prototipi.
>> Dak ifisser I-ħtieġa li fil-fatt tgħid il-kumpilatur minn qabel liema
il-funzjoni Dehra.
Stenna minuta.
I ma kellhomx io.h. istandard
Grazzi ħafna.
>> Hekk biss dan il-proċess of-- inti m'għandhomx bżonn li fil-fatt ikollhom papri.
Iżda din l-idea tal-mixi lilek innifsek permezz-kodiċi tiegħek stess
sabiex inti anki tisma lilek innifsek, sabiex inti
tirrealizza ommissjonijiet tiegħek stess rimarki, huwa ġeneralment l-idea.
>> U, forsi aktar loġikament, mhux hekk ħafna ma 'li wieħed iżda l involut aktar
Eżempju aħna biss għamlet fil 3.c Buggy, inti tista 'timxi lilek innifsek permezz ta' dan
kif ġej.
Allura kull dritt, gomma ducky, DDB, jekk inti se.
Hawnhekk għandna fil-funzjoni prinċipali tiegħi, Jien ssejjaħ nikseb int negattiv.
>> U jiena jkollna l-valur tar-ritorn.
Jien maħżuna fuq in-naħa tax-xellug fuq il-linja 8 fil-varjabbli imsejjaħ i.
OK, iżda stenna, kif għamlet li nikseb dak il-valur?
Let me ħarsa lejn il-funzjoni fil-linja 12.
>> F'konformità 12, aħna għandna nikseb int negattiv.
Ma tieħu xi inputs, ma jirritorna l int, OK.
Niddikjara fuq il-linja 14 n varjabbli.
Huwa ser taħżen numru sħiħ.
Dak hu li nixtieq.
>> Hekk ukoll dan li ġej waqt li n is-- let lili jneħħu dak l-jiffissaw I diġà għamlu.
Għalhekk, filwaqt li n hija akbar minn 0, jistampa n jiġifieri, OK.
U mbagħad sejħa nikseb int maħżuna n.
U mbagħad tiċċekkja jekk n hija 0, n huwa not-- hemm hu.
Allura, għal darb'oħra, inti ma bżonn l-papra attwali.
Iżda biss mixi lilek innifsek permezz kodiċi tiegħek bħala eżerċizzju intellettwali
spiss ser jgħinek jirrealizzaw x'inhu għaddej,
għall-kuntrarju biss tagħmel xi ħaġa bħal dan, tluq fil-iskrin,
u ma jitkellem lilek innifsek permezz dan, li huwa onestament ma
kważi bħala teknika effettiva.
Allura hemm ikollok, l- għadd ta 'tekniki differenti
għall-fatt debugging kodiċi tiegħek u s-sejba tort, li kollha
għandhom ikunu għodod toolkit tiegħek hekk li int mhux tard bil-lejl,
speċjalment, int fil-dining swali, jew fil-ħinijiet tal-uffiċċju,
banging ras tiegħek kontra l- ħajt, jippruvaw isolvu xi problema.
Tirrealizza li hemm għodda tas-software.
Hemm għodod papri tal-gomma.
U hemm persunal kollu ta ' appoġġ stennija għal jagħtu daqqa t'id.
>> Allura issa, kelma fuq il-problema settijiet, u fuq dak li aħna qed jittamaw li inti
toħroġ minnhom, u kif immorru madwar tevalwa.
Per sillabu tal-kors, il- settijiet problema CS50 s
huma evalwati fuq erba 'assi primarji, sabiex li speak-- ambitu, korrettezza, disinn,
u stil.
U l-ambitu eżatt tirreferi għal kemm tal-biċċa usted bitten off?
Kemm ta 'problema usted ppruvaw?
Liema livell ta 'sforz usted manifestat?
>> Korrettezza hija, ma x-xogħol programm kif huwa suppost li kull speċifikazzjoni CS50
meta inti tipprovdi ċertu dħul jew ċerti produzzjonijiet li jkunu ġejjin lura?
Disinn huwa l-aktar suġġettiva minnhom.
U huwa l-waħda li se jieħdu l-itwal biex jitgħallmu
u l-itwal biex jgħallmu, fil safejn jeħodna għall-
kemm ukoll bil-miktub huwa kodiċi tiegħek?
>> Hija ħaġa waħda li biss jistampaw il-korretta riżultati jew jirritorna l-valuri dritt.
Imma inti tagħmel dan bħala effiċjenti possibbli?
Inti tagħmel dan firda u conquer, jew binarja
tfittxija kif aħna ser malajr tara li għamilna ġimgħatejn ilu mal-ktieb tat-telefon?
Hemm modi aħjar biex isolvu l- problema milli għandek bħalissa għandhom hawn?
C'est opportunità għal disinn aħjar.
>> U allura style-- kif pjuttost huwa kodiċi tiegħek?
Int ser ikollok avviż li jien pretty partikolari dwar indenting kodiċi tiegħi,
u l-iżgurar varjabbli tiegħi huma raġonevolment msemmija. n,
waqt qasir, huwa l-isem tajjeb għal numru, I għal numru sħiħ għadd,
i għal string.
U li jista 'jkollna itwal varjabbli ismijiet stil.
Style hija kemm tajba ma kodiċi tiegħek ħarsa?
U kif jista 'jinqara huwa?
>> U maż-żmien, liema TAs tiegħek u TFS se jagħmlu fil-kors
huwa jipprovdi inti ma 'dik tip ta 'rispons kwalitattiv
hekk li tikseb aħjar lejn dawk l-aspetti varji.
U f'termini ta 'kif aħna jevalwaw kull wieħed minn dawn l-assi,
huwa tipikament bi ftit ħafna bramel sabiex inti, ġeneralment,
jiksbu sens ta 'kemm inti qed isir.
U, tabilħaqq, jekk inti tirċievi punteġġ fuq kwalunkwe minn dawn korrettezza axes--, disinn
u stil especially-- dak in-numru ġeneralment ikun bejn 1 u 5.
U, litteralment, jekk int jkollna 3 fiż-bidu tas-semestru,
din hija ħaġa tajba ħafna.
Dan ifisser hemm għadu lok għal titjib,
li inti tama fil teħid ta 'klassi għall-ewwel darba.
Hemm nisperaw xi ftit ta 'limitu li int jaspiraw li jintlaħaq.
U hekk jkollna 3 dwar -biċċiet kmieni,
jekk mhux xi 2 u 4, il- huwa, tabilħaqq, ħaġa tajba.
Huwa tajjeb fil-firxa, ukoll fi ħdan l-aspettattivi.
>> U jekk moħħok huwa tlielaq, stenna minuta, tlieta minn ħamsa.
Li verament 6 minn 10.
C'est 60%.
Alla tiegħi, dan huwa l F.
>> Mhuwiex.
Mhuwiex, fil-fatt, f'dak.
Pjuttost, huwa opportunità biex ittejjeb matul il-kors tas-semestru.
U jekk int jkollna xi Poors, dawn huma opportunità
biex jieħdu vantaġġ ta 'ħinijiet tal-uffiċċju, ċertament sezzjonijiet u riżorsi oħra.
>> Aħjar hija opportunità, tassew, biex ikunu kburin eżatt kemm inti ħadthom
jaqgħu matul il-kors tas-semestru.
Allura do jirrealizzaw, jekk xejn inkella, tlieta hija tajba.
U dan jippermetti lok għal tkabbir matul iż-żmien.
>> Kif dawk assi huma ppeżata, realistikament int
se jqattgħu ħafna mill-ħin tiegħek jkollna affarijiet li x-xogħol, aħseb u ara kif suppost.
U hekk korrettezza tendenza li jiġu peżati l-aktar, kif ma '
dan il-fattur multiplikattiv ta 'tlieta.
Disinn huwa importanti wkoll, iżda xi ħaġa li inti ma neċessarjament
jonfqu kollha ta 'dawk sigħat fuq tipprova tikseb affarijiet biss għax-xogħol.
>> U għalhekk huwa mwieżna ftit aktar ħafif.
U allura l-istil hija mtaqqla l-inqas.
Anki jekk huwa mhux inqas importanti fundamentalment,
huwa biss, forsi, l- eħfef ħaġa li tagħmel id-dritt,
jimitaw l-eżempji aħna tagħmel fil lecture u t-taqsima,
ma 'affarijiet nicely indentati, u ikkummenta,
u oħrajn hija fost l-aktar faċli affarijiet li jagħmlu u tikseb id-dritt.
Allura bħala tali, tirrealizza li dawn huma punti
li huma relattivament faċli biex taqbadha.
>> U issa kelma fuq this-- onestà akkademika.
Allura kull l-tal-kors sillabu, se tara
li l-kors għandha pjuttost Ftit tal-lingwa madwar dan.
U l-kors jieħu l-kwistjoni tal- onestà akkademika pjuttost serjament.
>> Għandna l-distinzjoni, għall-aħjar jew għall-agħar,
li bagħat kull sena aktar studenti għal azzjoni dixxiplinarja
minn aktar xi oħra Naturalment, li jien konxju mid.
Dan mhuwiex neċessarjament indikattiv tal-fatt
li l-istudenti CS, jew studenti CS50, huma kwalunkwe inqas onesti minn klassi tiegħek.
Iżda r-realtà li f'dan il- dinja, b'mod elettroniku, aħna biss
għandhom teknoloġiku mezzi ta 'jidentifikaw dan.
>> Huwa importanti għalina għal ġustizzja madwar l-klassi
li nagħmlu jikxfu dan, u jgħollu il-kwistjoni meta naraw l-affarijiet.
U biss li żebgħa stampa, u verament biex tgħin xi ħaġa bħal din sink fi,
dawn huma l-għadd ta ' studenti matul l-aħħar 10 snin
li kienu involuti f'xi kwistjonijiet bħal dawn ta 'onestà akkademika,
b'xi 32 studenti minn waqgħa 2015, li
jiġifieri li nagħmlu jieħdu il-kwistjoni bis-serjetà ħafna.
U, finalment, dawn in-numri compose, aktar reċentement, madwar 3%, 4% jew hekk
tal-klassi.
>> Dan għall-maġġoranza super ta 'studenti jidher li l-linji huma ċari.
Imma iżomm dan mind, b'mod partikolari tard
bil-lejl meta tissara mal xi soluzzjoni għal sett problema,
li jeżistu mekkaniżmi biex jinkiseb aħjar lilek innifsek
appoġġ milli inti tista think, anki f'dak siegħa.
Jirrealizzaw li meta nirċievu Sottomissjonijiet istudenti, aħna jaqsmu
iqabblu kull sottomissjoni din is-sena kontra kull sottomissjoni aħħar sena,
kontra kull sottomissjoni mill-2007, u peress li, tħares lejn, kif ukoll,
kodiċi repożitorji onlajn, forums ta 'diskussjoni, siti tax-xogħol.
U aħna isemmu dan, verament, kollha għall-fini
tal-iżvelar sħiħ, li jekk xi ħadd ieħor jistgħu jsibuha online,
ċertament, hekk nistgħu-kors.
Imma, verament, l-ispirtu tal-kors jeħodna
għal din il-klawsola fil-sillabu.
Huwa verament huwa biss, ikun raġonevoli.
>> U jekk kellna biex telabora fuq dan biss bi lingwa daqsxejn aktar,
jirrealizzaw li l-essenza ta 'kulħadd xogħol li inti tissottometti lill dan il-kors
għandu jkun tiegħek stess.
Iżda f'dak il-, hemm ċertament opportunitajiet, u l-inkoraġġiment,
u l-valur pedagoġiku fl iduru għall others-- myself, il TFS, il-CAs,
l TAs, u oħrajn fil-klassi, għall-appoġġ, let ħbieb waħdu
u roommates li studjaw KEFA u l-ipprogrammar qabel.
U għalhekk hemm allowance għal dak.
U r-regola ġenerali ta 'thumb huwa this-- meta jitolbu għall-għajnuna,
inti tista 'turi kodiċi tiegħek lill-oħrajn, imma inti ma tista 'tara tagħhom.
Għalhekk anki jekk int fid ħinijiet tal-uffiċċju, jew fis-sala D, jew x'imkien ieħor
taħdem fuq xi sett biċċa, jaħdmu flimkien ma 'ħabib, li
hija totalment multa, fl- aħħar tal-ġurnata tax-xogħol tiegħek
għandhom finalment jappartjenu għal kull tal inti rispettivament, u mhux
jkun xi sforz kollaborattiv, ħlief għall-proġett finali fejn
huwa permess u inkoraġġit.
>> Jirrealizzaw li jekk inti tissara ma 'xi ħaġa
u ħabib tiegħek jiġri biss li tkun aħjar fuq dan allura int,
jew aħjar fil din il-problema milli suppost, jew ftit aktar il-bogħod il quddiem milli suppost,
huwa totalment raġonevoli li jduru lill ħabib tiegħek u jgħidu, ħej,
do you f'moħħu tħares lejn kodiċi tiegħi hawnhekk, lili tgħin post dak kwistjoni tiegħi huwa?
U, wieħed jittama, fil- interess tal-valur pedagoġiku
li l-ħabib ma biss jgħidu, oh, tagħmel dan, iżda pjuttost,
x'qed nieqes fuq il-linja 6, jew xi ħaġa bħal dik?
Iżda l-soluzzjoni mhix għall-ħabib li jmiss lilek
ngħid, oh, ukoll, hawnhekk, let me iġbed dan up, u juru soluzzjoni tiegħi lilek.
Allura li huwa l-linja.
Inti juru kodiċi tiegħek biex oħrajn, iżda inti ma tistax
fehma tagħhom, bla ħsara għall-oħra restrizzjonijiet fl sillabu tal-kors tal.
>> Allura wieħed iżomm f'moħħu dan il hekk imsejħa klawsola dispjaċir
fil sillabu tal-kors kif ukoll, li jekk inti jikkommettu xi att li
mhuwiex raġonevoli, iżda jiġbed l l-attenzjoni tal-kapijiet tal-kors tal-
fi żmien 72 siegħa, il-kors jista 'jimponi sanzjonijiet lokali li
jistgħu jinkludu mhux sodisfaċenti jew nuqqas grad għax-xogħol sottomess.
Iżda l-kors mhux se jirreferi l- kwistjoni għal aktar azzjoni dixxiplinari,
ħlief f'każijiet ta 'atti ripetuti.
Fi kliem ieħor, jekk inti tagħmel xi stupid, bil-lejl speċjalment tard, id-deċiżjoni
li l-għada filgħodu jew jumejn aktar tard, tqum u tirrealizza,
dak li kien I ħsieb?
Inti fil CS50 jkollhom żbokk għall-iffissar dik il-problema
u li tkun proprjetarja sa dan, sabiex inkunu se jissodisfaw inti fin-nofs u jittrattaw
magħha fil-kwistjoni li huwa kemm edukattivi u ta 'valur għalik,
iżda xorta punittivi b'xi mod.
U issa, li jieħdu l-tarf off, dan.
>> [Daqq video]
>> [Ddoqq il-mużika]
>> [END Daqq]
DAVID J. Malan: Kull dritt, aħna huma lura.
U issa nħarsu lejn wieħed mill- ewwel ta 'oqsma tagħna fid-dinja reali
fil CS50, l-arti tal-kriptografija, l-arti ta 'jibgħat u jirċievi
messaġġi sigrieti, encrypted Messaġġi jekk inti se,
li jistgħu jiġu deciphered biss jekk ikollok xi ingredjent ewlieni li l-mittent ikollu
kif ukoll.
Allura biex jimmotivaw dan aħna ser tieħu ħarsa lejn din il-ħaġa hawn,
li huwa eżempju ta ' ċirku decoder sigriet li
jistgħu jintużaw biex insemmu dak messaġġ sigriet fil-fatt hu.
Fil-fatt, lura fil- jum fl-iskola grad,
jekk inti qatt mibgħut messaġġi sigrieti biex xi ħabib jew xi tgħaffiġ fil-klassi,
inti jista 'jkollok ħasbu inti kienu qed għaqlija
billi fuq biċċa tiegħek ta jinbidlu karta, simili, A sa B, u B sa C, u Ċ sa D,
u oħrajn.
Imma inti kienu fil-fatt encrypting informazzjoni tiegħek, anke
kieku kien ftit trivjali, ma kienx li diffiċli biex l-għalliem li tirrealizza,
ukoll, jekk inti biss bidla B sa A u Ċ sa B,
inti fil-fatt figura dak il-messaġġ kien,
imma inti kienu fil ċċifrar informazzjoni.
>> You kienu biss tagħmel dan sempliċement, ferm simili Ralphie hawn
fil-film famuż li jilgħab pretty ħafna ad nauseum kull xitwa.
[Daqq video]
-Kun Magħruf li dak kollu li Ralph Parker huwa hawnhekk
maħtur membru tal-Little Orfni Annie Sigriet Ċirku
u huwa intitolat għall-unuri kollha u l-benefiċċji li jseħħu għalihom.
>> -Signed, Little Orfni Annie, Pierre Andre, bil-linka iffirmat kontro.
Unuri u l-benefiċċji, diġà fl-età ta 'disa.
>> [Shouting]
-Ejja.
Ejja nneħħu fuq magħha.
I m'għandhomx bżonn kollha li jazz dwar kuntrabandisti u pirati.
>> għada bil-lejl -Listen għall l-avventura tikkonkludi
tal-vapur pirata iswed.
Issa, wasal iż-żmien għal Messaġġ sigriet Annie
għalik membri tal-Ċirku Sigriet.
Ftakar, gidjien, huma biss il-membri ta Secret Ċirku Annie
jistgħu jiddekowdja-messaġġ sigriet Annie.
>> Ftakar, Annie jiddependi fuq int.
Set labar tiegħek lil B2.
Hawn hu l-messaġġ.
12, 11--
>> -I Am fl-ewwel laqgħa sigrieta tiegħi.
>> -14, 11, 18, 16.
>> -Pierre Kien fil tonight vuċi kbira.
I tista 'tgħid li s tonight Messaġġ kien verament importanti.
>> -3, 25, li l-messaġġ minn Annie lilha nfisha.
Ftakar, ma tgħid xi ħadd.
>> -90 Sekondi wara, jien fl-uniku kamra fid-dar fejn tifel ta 'disa
jista ipoġġu fil-privatezza u jiddekowdja.
Ah, B!
I marru għall-ieħor, E.
>> L-ewwel kelma hija tkun.
S, kien ġejjin faċli issa, U, 25--
>> -OH, Jaqgħu fuq, Ralphie, I gotta go!
>> -I'll Jkun dritt isfel, Ma!
Gee whiz!
>> -T, O, kun żgur to-- kun żgur li dak li?
Liema kienet Little Orfni Annie nipprova ngħid?
Kun żgur li dak?
>> -Ralphie, Andy s'est li go, ser ikollok jogħġbok toħroġ?
>> dritt -kull, Ma!
I ser tkun dritt out!
>> -I Kien jersqu qrib issa.
It-tensjoni kienet diżappuntanti.
Liema kienet?
Il-destin tal-pjaneta jista hang fil-bilanċ.
>> -Ralphie!
gotta Andy go!
>> -I'll Jkun tajjeb, għal biki out loud!
>> -Almost Hemm, swaba tiegħi taru, my mind kien nassa azzar, kull pori ivvibrat.
Kien kważi ċar, iva, iva, iva.
>> -Kun Żgur li tixrob Ovaltine tiegħek.
Ovaltine?
A kummerċjali crummy?
Tifel ta 'kelba.
[END Daqq]
DAVID J. Malan: OK, hekk li kien 'il bogħod ħafna
ta 'introduzzjoni kriptografija, u Ovaltine wkoll.
Fil-fatt, minn din il reklam qodma hawnhekk, għaliex hija Ovaltine hekk tajjeb?
Huwa estrazzjoni konċentrat ta 'misjura xgħir, ħalib pur baqra krema, il
u speċjalment ippreparati kawkaw, flimkien bil fosfatidi naturali u vitamini.
Hija huwa msaħħaħ aktar bl vitamini addizzjonali B u D, yum.
U inti xorta tista 'tikseb dan, apparentement, fuq Amazon, kif għamilna hawn.
>> Iżda l-motivazzjoni hawn kien li jintroduċu kriptografija, b'mod speċifiku
tip ta kriptografija magħruf kif kriptografija ċavetta sigrieti.
U kif tissuġġerixxi l-isem, il-sħiħ sigurtà ta 'sistema kripto sigrieti ewlenin,
jekk inti se, metodoloġija għal ftit scrambling
informazzjoni bejn żewġ persuni, huwa li biss il-mittent u biss l-benefiċjarju
jafu key-- sigriet xi valur, xi frażi sigrieta, xi numru sigriet, li
jippermettilhom li kemm kriptaġġ u decrypt informazzjoni.
U kriptografija, tassew, huwa biss dan mill-ġimgħa 0.
>> Din hija problema fejn hemm inputs, bħall-messaġġ attwali bl-Ingliż
jew kwalunkwe lingwa li inti trid tibgħat lil xi ħadd fil-klassi,
jew madwar l-internet.
Hemm xi output, li se li jkun il-messaġġ scrambled li inti
jridu li l-benefiċjarju li jirċievi.
U anki jekk xi ħadd fil- nofs jirċeviha wisq,
inti ma tridx li neċessarjament tkun tista 'decrypt dan,
minħabba ġewwa ta 'dan il- kaxxa s-sewda, jew algoritmu,
hija xi mekkaniżmu, xi pass pass istruzzjonijiet, għat-teħid li l-kontribut
u dan jinbidel il produzzjoni, fi nisperaw b'mod sigur.
>> U, fil-fatt, hemm xi vokabularju f'din id-dinja kif ġej.
test sempliċi hija l-kelma ta ' xjentist kompjuter ikun
jużaw biex jiddeskrivu l-input messaġġ, bħall-Ingliż
jew kwalunkwe lingwa li attwalment trid tibgħat lill xi bniedem ieħor.
U allura l-ciphertext huwa l-ġirja għall-enciphered, jew encrypted,
Verżjoni tiegħu.
>> Iżda hemm ingredjent wieħed ieħor hawnhekk.
Hemm wieħed dħul ieħor għall kriptografija ċavetta sigriet.
U li huwa l-muftieħ innifsu, li hija, b'mod ġenerali,
kif Ser naraw, numru, jew ittra, jew kelma, ikun x'ikun
l-algoritmu huwa attwalment jistenna.
>> U kif taħseb li decrypt informazzjoni?
Kif inti unscramble dan?
Ukoll, inti biss jitwaqqaf il- outputs u l-inputs.
>> Fi kliem ieħor, ladarba xi ħadd jirċievi messaġġ encrypted tiegħek,
hu jew hi sempliċiment li tkun taf li istess ċavetta.
Huma jkunu rċevew l ciphertext.
U minn fejn jitwaħħal dawn iż-żewġ inputs fis-sistema kripto,
l-algoritmu, din il-kaxxa iswed, barra għandhom jidħlu l-plaintext oriġinali.
U għalhekk dak l-livell għoli ħafna dawl ta 'dak kriptografija huwa attwalment
kollha madwar.
>> Mela ejja nikseb hemmhekk.
Ejja issa nħarsu taħt il-barnuża ta 'xi ħaġa
aħna kont qed tieħu għall mogħtija għall -ġimgħa li għaddiet, u għal din is-sessjoni
here---sekwenza.
A sensiela fl-aħħar tal-ġurnata huwa biss sekwenza ta 'karattri.
>> Jista 'jkun dinji bonjour, jew bonjour Zamyla, jew ikun x'ikun.
Imma dak ma jfissirx li jkun sekwenza ta 'karattri?
Fil-fatt, il-librerija CS50 jagħti us tip ta 'data msejħa sekwenza.
>> Iżda hemm attwalment l-ebda ħaġa bħal string fil C.
Huwa verament huwa biss sekwenza ta ' karattru, karattru, karattri,
karattru, lura, li lura, li lura, li lura, back ġewwa
tal-memorja tal-kompjuter tiegħek, jew RAM.
U aħna ser tħares aktar profonda fis dan fil- futur meta nħarsu lejn memorja innifsu,
u l-utilizzazzjoni, u l- theddid li huma involuti.
>> Imma ejja jikkunsidraw l-sekwenza Zamyla.
Hekk biss l-isem tal il-bniedem hawn, Zamyla,
li hija sekwenza ta ' karattri, Z-A-M-Y-L-A.
U issa ejja nassumu li l-isem Zamyla tal qed jiġi maħżun ġewwa ta 'kompjuter
programm.
>> Ukoll, li inhi minħabba li għandna tkun kapaċi li tħares lejn dawk il-karattri
individwalment.
Hekk jien biss se tiġbed ftit kaxxa madwar Isem Zamyla hawn.
U huwa l-każ fis-C li meta inti ikollhom string, bħall Zamyla-- u forsi
li string wasal lura minn funzjoni bħal string nikseb,
inti tista 'attwalment timmanipola karattru bil-karattru.
>> Issa, dan huwa germane għall- konverżazzjoni fil-idejn, għax
fil kriptografija jekk inti tixtieq li tibdel A sa B, u B sa C, u Ċ sa D,
u oħrajn, inti jeħtieġ li tkun kapaċi li tħares lejn il-karattri individwali
fi string.
Inti jeħtieġ li tkun kapaċi li jibdlu l Z għal xi ħaġa oħra, lA
għal xi ħaġa oħra, il-M li xi ħaġa oħra, u l-bqija.
U għalhekk għandna bżonn mod, programmatically, hekk
biex jitkellmu, f'C li tkun kapaċi li jibdlu u ħarsa lejn ittri individwali.
U nistgħu nagħmlu dan kif ġej.
>> Let me go ras lura fil IDE CS50.
U let me imorru quddiem u toħloq fajl ġdid
li jien ser sejħa dan string0 iż-żmien, bħala l-ewwel eżempju ta 'dan tagħna, dot ċ.
U jien ser jimxi 'l quddiem u Whip up kif ġej.
>> Allura jinkludu CS50.h, u mbagħad jinkludi io.h standard,
li Jien kważi dejjem se tkun qed tuża fil-programmi tiegħi, għall-inqas
inizjalment.
int null prinċipali, u mbagħad fil hawn jien ser tagħmel kordi gets nikseb sekwenza.
U mbagħad jien ser imorru quddiem u tagħmel dan.
Irrid li jimxi 'l quddiem u, bħala kontroll sanità,
biss jgħidu, bonjour, mija i, semi-colon, jagħmel sekwenza 0.
UH oh, dak li ma nagħmel hawn?
Oh, I ma plagg fil.
Allura lezzjonijiet li tgħallmu, li ma kienx intenzjonali.
>> Allura żball, aktar mija konverżjonijiet minn argumenti data.
U dan huwa fejn, fil linja 7-- OK, so I jkollhom,
kwotazzjoni unquote, li sekwenza tiegħi għal printf.
Stajt ltqajna sinjal mija.
Imma jien nieqsa t-tieni argument.
>> Jien nieqsa l-virgola i, li I ma jkollhom eżempji preċedenti.
Allura opportunità tajba biex jiffissaw wieħed aktar żball, aċċidentalment.
U issa let me run string0, tip Zamyla.
OK, bonjour Zamyla.
>> Allura konna run dan it-tip ta 'programm drabi differenti ftit issa.
Imma ejja nagħmlu xi ħaġa ta ' ftit differenti dan iż-żmien.
Minflok biss istampar Zamyla tal isem sħiħ bl printf,
ejja tagħmel dan karattru minn karattru.
>> Jien ser tuża għall loop.
U jien ser jagħti lili nnifsi varjabbli għadd, imsejħa i.
U jien ser iżommu iterazzjoni, hekk Sakemm i huwa inqas mit-tul ta 's.
>> Jirriżulta, aħna ma tagħmel din l-aħħar darba,
li ċ tiġi flimkien ma ' funzjoni msejħa Stirling.
Lura fil-ġurnata, u b'mod ġenerali xorta meta jimplimentaw il-funzjonijiet,
bnedmin se spiss jagħżlu ħafna ismijiet konċiżi li tip ta 'ħoss
bħal dak li trid, anki jekk huwa nieqsa xi vokali ftit jew l-ittri.
Allura Stirling huwa l- isem ta 'funzjoni li
jieħu argument bejn parentesi li għandhom ikunu string.
U hija biss jirritorna numru sħiħ, it-tul ta 'dak sekwenza.
>> Allura dan għal loop fuq il-linja 7 va biex jibdew jingħaddu mill-i huwa ugwali 0.
Huwa ser inkrement i fuq kull iterazzjoni
b'1, kif aħna kont qed tagħmel għal xi ftit drabi.
Iżda li għaddej biex biss tagħmel dan il sal-punt
meta i huwa t-tul tas-sekwenza nnifisha.
>> Allura dan huwa mod ta ', finalment, iterazzjoni fuq il-karattri
fis-sekwenza kif jiġifieri ġej.
Jien ser jistampa mhux spag kollha, iżda fil-mija c,
karattru wieħed segwit minn linja ġdida.
U mbagħad jien ser jimxi 'l quddiem, u għandi bżonn
ngħid li nixtieq li jistampaw karattru ith ta 'i.
>> Mela jekk i huwa l-varjabbli li jindikaw l-indiċi tas-sekwenza, fejn
inti fiha, I jeħtieġu li jkunu kapaċi li jgħidu, agħti lili il-karattru ith ta 'i.
U ċ għandu mod ta 'kif isir dan ma 'parentesi kwadri.
Inti sempliċiment tgħid l-isem tal- spag, li f'dan il-każ huwa s.
Imbagħad inti tuża parentesi kwadri, li huma normalment eżatt fuq Ritorn tiegħek jew Ikteb
buttuna fuq it-tastiera.
U allura inti tpoġġi l-indiċi tal- karattru li inti tixtieq li jistampaw.
Allura l-indiċi se tkun number-- 0, jew 1, jew 2, jew 3, jew dot,
dot, dot, xi numru ieħor.
>> U aħna jiżgura li huwa għaddej biex jkun in-numru dritt, minħabba I
jibdew jingħaddu f'0.
U fil-kontumaċja, l-ewwel karattru fi string huwa billi konvenzjoni 0.
U t-tieni karattru huwa parentesi 1.
U t-tielet karattru jkun parentesi 2.
U inti ma tridx li jmorru wisq s'issa imma aħna mhux se għaliex aħna qed
ser biss inkrement i sakemm tirrappreżenta t-tul tas-sekwenza.
U f'liema punt, dan għal loop se tieqaf.
>> So let me go quddiem u jiffrankaw din il programm, u run jagħmlu sekwenza 0.
Imma jien invitat up.
Impliċitament tiddikjara funzjoni librerija Stirling tat-tip bħal din u such-- issa,
dan ħsejjes familjari.
Iżda mhux printf.
U mhuwiex jiksbu sekwenza.
>> I ma screw up fil -istess mod dan iż-żmien.
Iżda avviż stabbiliti hawn ftit isfel aktar, jinkludu l-string.h header,
espliċitament jipprovdi l dikjarazzjoni għal Stirling.
Allura fil-fatt hemm ħjiel fil hemmhekk.
>> U fil-fatt jirriżulta hemm ieħor fajl header
li konna mhux użati fil-klassi s'issa, iżda huwa
fost dawk disponibbli lilek, imsejħa string.h.
U f'dak il-fajl, string.h huwa Stirling ddikjarata.
So let me go quddiem u jiffranka dan, tagħmel sekwenza
0-- sbieħ, l-ebda messaġġi ta 'żball f'dan il-ħin.
>> ./string0 Zamyla, u Jien wasalt biex hit Ikteb,
f'liema punt getstring huwa għaddej biex jirritorna l-sekwenza, poġġih fil s.
Imbagħad li għal linja se ttenni fuq karattri S wieħed fi żmien,
u tipprintjahom waħda għal kull linja, għaliex Kelli li backslash n fl-aħħar.
So I jistgħu iħallu barra dik backslash n, u mbagħad biss print Zamyla kollha
fl-istess linja, effettiv reimplementing
printf, li mhux kollha li utli.
Iżda f'dan il-każ, stajt ma jsirx dan.
Stajt attwalment stampata waħda karattru fi żmien, waħda għal kull linja,
sabiex inkunu attwalment ara l-effett.
>> Imma jien nosserva ħaġa waħda hawn.
U aħna ser terga 'lura għal dan fil-ġimgħa futur.
Jirriżulta li din il kodiċi huwa potenzjalment Buggy.
>> Jirriżulta li string tikseb u xi funzjonijiet oħra fil-ħajja
mhux bilfors dejjem ritorn dak li qed jistennew.
Nafu mill-klassi l-aħħar ħin f'dan l tinkiseb
sekwenza suppost li jirritornaw string.
Imma x'jiġri jekk it-tipi utent jeskludi tali kelma twila, jew il-paragrafu, jew essay
li hemm biss mhux biżżejjed memorja fil-kompjuter biex tajbin.
>> Bħal, dak li jekk xi ħaġa tmur ħażin minn taħt il-barnuża?
Jista 'ma jiġri spiss, imma jista 'jiġri darba
fil-waqt, ħafna b'mod mhux frekwenti.
U għalhekk jirriżulta li string tikseb u l-funzjonijiet bhalu ma neċessarjament
dejjem tirritorna kordi.
Huma jistgħu jirritornaw xi valur żball, xi valur sentinella biex ngħidu hekk,
li jindika li xi ħaġa marret ħażin.
U inti taf biss dan mill wara li tgħallmu fil-klassi issa,
jew li taqra xi dokumentazzjoni aktar.
Jirriżulta li string tikseb jista 'jirritorna valur msejħa null.
Null huwa valur speċjali li aħna ser terga 'lura fl-ġimgħa futur.
Iżda għal issa, biss jafu li jekk irrid biex ikunu verament xieraq fil-mixja 'l quddiem
jużaw string jiksbu, jien m'għandhomx biss sejħa hija,
u bl-addoċċ tuża l-valur tar-ritorn tiegħu, fidu li huwa string.
>> Għandi l-ewwel say, ħej, stenna minuta, biss
jipproċedi jekk i ma tkunx daqs null, fejn nulli, għal darb'oħra,
huwa biss ftit valur speċjali.
U huwa l-uniku valur speċjali li inti bżonn ninkwetaw dwar għal sekwenza tikseb.
Get sekwenza huwa jew se li jirritorna string jew null.
>> U dan il-punt exclamation hija ugwali sinjal inti tista 'taf minn forsi klassi matematika
li inti tista 'tiġbed sinjal ugwali ma linja ġo fiha sabiex jindikaw mhux ugwali.
Li mhux ġeneralment karattru inti tista tip fuq it-tastiera tiegħek.
U hekk lingwi ta 'programmar aktar, meta inti tixtieq li tgħid le ugwali,
inti jintuża punt exclamation, inkella magħruf bħala bang.
Allura inti tgħidli bang huwa daqs, li tfisser mhux ndaqs, loġikament.
Huwa biss simili hemm ma 'aktar minn, jew ugwali għal, jew inqas minn
jew ekwivalenti għal ewlenin fuq it-tastiera tiegħek li ma dan kollu fi simbolu wieħed.
Allura hu għalhekk li, fil eżempji mill-passat, għamilt xi parentesi miftuħa, u mbagħad
sinjal ugwali, sabiex tagħmel ikbar minn jew, ngħidu, inqas minn.
>> Allura x'inhu l-takeaway hawn?
Din hija sempliċement mod issa ta ' introduzzjoni ta 'din sintassi, din il-karatteristika,
iterazzjoni fuq individwu karattri string.
U bħad dawk kwadru parentesi jippermettu li tirċievi fil minnhom,
iqis dawk parenteżi kwadri kif tip ta ssemmi f'dan sottostanti
disinn, fejn kull karattru ġewwa ta 'sekwenza
huwa tip ta 'kaxxa fil x'imkien taħt il-barnuża fil-memorja tal-kompjuter tiegħek.
>> Imma ejja jagħmlu varjant ta 'dan.
Jirriżulta li din il programm hija korretta.
Allura kull assi CS50 għall-evalwazzjoni kodiċi, dan huwa korrett issa.
Speċjalment issa li jien iċċekkjar għall- null, dan il-programm qatt ma għandhom crash.
U jien biss jafu li mill-esperjenza.
Iżda hemm xejn li nistgħu verament tmur ħażin hawn.
Iżda huwa ma tantx imfassla tajjeb, għaliex ejja mmorru lura għall bażiċi.
>> L-ewwel, principles-- dak ma għal linja do?
A għall-linja ma tliet affarijiet.
Hija initializes xi valur, jekk inti ssaqsi lill.
Huwa jagħmel verifiki kundizzjoni.
U mbagħad wara kull iterazzjoni, wara kull ċiklu,
dan żidiet xi valur, jew il-valuri, hawnhekk.
>> Allura dak li jfisser?
Aħna initialize i għal 0.
Aħna jivverifika u kun żgur i huwa inqas minn it-tul ta 'i, li hija Z-A-M-Y-L-A,
hekk li hija inqas minn 6.
U, tabilħaqq, 0 hekk kif anqas minn 6.
>> Aħna jistampa Z mill-isem Zamyla s.
Imbagħad aħna inkrement i 0-1.
Aħna mbagħad tiċċekkja, hija l-1 inqas mit-tul tal-i?
It-tul ta 'i hija ta' 6.
Iva hekk hu.
>> Allura aħna jistampaw fl-isem Zamyla, l ZA.
Aħna inkrement i minn 0, sa 1, sa 2.
Aħna mbagħad tiċċekkja, hija ta '2 inqas minn it-tul tal-isem Zamyla s.
6- hekk 2 ikun anqas minn 6.
Iva, ejja jistampa issa M Isem Zamyla, il-tielet karattru.
>> Il-prinċipali hawnhekk hija li fuq kull iterazzjoni 'l-istorja, jien iċċekkjar,
huwa i inqas mit-tul ta 'Zamyla?
Iżda l-qabda hija li Stirling mhix proprjetà.
Dawk minnkom li programmati qabel fl Java jew lingwi oħra
tista 'taf-tul ta' sekwenza hu proprjetà, biss ftit aqra biss valur.
>> Fil Ċ f'dan il-każ, jekk dan ikun funzjoni li hi litteralment
għadd tan-numru ta ' karattri fit Zamyla kull darba
nitolbu dik il-funzjoni.
Kull darba li inti titlob lill-kompjuter għall-użu Stirling, huwa billi tagħti ħarsa lejn Zamyla,
u qal Z-A-M-Y-L-A, 6.
U dan jirritorna 6.
Il-ħin li jmiss inti sejħa dan ġewwa li għal loop,
li għaddej biex tħares lejn Zamyla għal darb'oħra, jgħidu Z-A-M-Y-L-A, 6.
U li għaddej biex jirritornaw 6.
Allura x'hemm stupid dwar dan id-disinn?
>> Għaliex huwa kodiċi mhix 5 out of 5 tiegħi għad-disinn dritt issa, biex ngħidu hekk?
Well, jien tistaqsi kwistjoni bla bżonn.
Jien tagħmel aktar xogħol milli għandi bżonn biex.
>> Għalhekk anki jekk il- -tweġiba hija korretta, jiena
titlob lill-kompjuter, dak li huwa it-tul ta 'Zamyla darb'oħra,
u għal darb'oħra, u għal darb'oħra, u għal darb'oħra?
U din ir-risposta hija qatt se jibdlu.
Huwa dejjem se jkunu 6.
>> Allura soluzzjoni aħjar minn dan Ikun din il-verżjoni li jmiss.
Let me imorru quddiem u poġġih fil- fajl separat imsejjaħ string1.c,
biss biex iżommuhom separati.
U jirriżulta fi għal loop, inti tista 'attwalment
tiddikjara varjabbli multipli fuq darba.
>> Hekk jien ser iżommu i u stabbilit għal 0.
Imma jien wkoll ser żid comma, u jgħidu,
tagħti me a varjabbli imsejjaħ n, li valur huwa daqs it-tul sensiela ta 'i.
U issa, jekk jogħġbok aċċerta kundizzjoni tiegħi sakemm i huwa inqas minn n.
>> Allura b'dan il-mod, il-loġika hija identika fl-aħħar tal-ġurnata.
Imma jiena ftakar- valur 6, f'dan il-każ.
X'inhu l-tul ta 'isem Zamyla tal?
U jien tqegħid fil n.
>> U jien xorta verifika il-kundizzjoni kull darba.
Hija ta '0 inqas minn 6?
Hija l-1 ta 'inqas minn 6?
Huwa 2 inqas minn 6, u oħrajn?
>> Imma jien ma tistaqsi il-kompjuter għal darb'oħra, u għal darb'oħra, x'hemm
it-tul tal-isem Zamyla tal?
X'inhu l-tul ta 'isem Zamyla tal?
X'inhu l-tul ta 'isem dan il Zamyla tal?
Jien litteralment ftakar li l-ewwel u biss twieġeb f'din it-tieni n varjabbli.
Allura dan issa se jkun mhux biss korretti, iżda wkoll mfassla tajjeb.
>> Issa, dak dwar stil?
Stajt jismu varjabbli tiegħi pretty ukoll, nixtieq ngħid.
Huma qed super konċiża dritt issa.
U li l-totalment multa.
>> Jekk inti biss għandek wieħed sekwenza fi programm,
inti tista 'ukoll sejħa hija s għal sekwenza.
Jekk inti biss għandek varjabbli waħda biex tiġi magħduda fi programm,
inti tista 'ukoll sejħa hija i.
Jekk ikollok xi tul, n huwa super komuni kif ukoll.
Imma jien ma kkummentawx xi wieħed kodiċi tiegħi.
>> Stajt ma informa lill-reader-- jekk din TF tiegħi, jew AT,
jew eżatt colleague-- dak li suppost li jkunu għaddejjin f'dan il-programm.
U dan biex tikseb stil tajjeb, dak I trid tagħmel
huwa this-- xi ħaġa bħal jistaqsu utent għall-input.
U jien tista 'jikteb din il kwalunkwe numru ta 'modi.
>> Kun żgur s-- kun żgur nikseb sekwenza lura string.
U mbagħad fl here-- u dan huwa forsi l jtenni comment-- aktar importanti
matul il-karattri fit-i wieħed fi żmien.
UI jistgħu jużaw kwalunkwe għażla tal-lingwa Ingliża
hawn biex jiddeskrivu kull ta 'dawn biċċiet ta' kodiċi.
>> Avviż li jien ma jitqiegħdu tikkummenta dwar kull linja tal-kodiċi,
verament ftit dwar il-interessanti dawk, dawk li
għandhom xi tifsira li I jista tixtieq li tagħmel super ċara lil xi ħadd
qari kodiċi tiegħi.
U għaliex huma inti titlob tikseb sekwenza jistaqsu utent għall-input?
Anki li wieħed ma jkunx neċessarjament dak kollu li deskrittiv.
Iżda dan jgħin tgħid storja, minħabba li l- tieni linja fil-istorja hija, kun żgur
jiksbu sekwenza lura string.
>> U t-tielet linja fit-istorja hija, jtenni fuq il-karattri f'wieħed i
kull darba.
U issa biss għal miżura tajba, Jien ser jimxi 'l quddiem u żid
wieħed kumment aktar li biss jgħid print numru i karattru s.
Issa, dak li jiena għamlu fl-aħħar tal-ġurnata?
>> Għandi żied xi Ingliż kliem fil-forma ta 'kummenti.
Is-simbolu mmejla mmejla ifisser, ħej, kompjuter dan huwa għall-bniedem,
mhux għalik, il-kompjuter.
Allura dawn qed injorati loġikament.
Huma qed biss hemm.
>> U, tabilħaqq, CS50 IDE jurihom bħala griż, bħala utli, iżda mhux essenzjali
għall-programm.
Avviż dak li inti issa tista 'tagħmel.
Kemm jekk int taf C programmazzjoni jew le, inti
tista 'biss joqgħod lura lejn din programm, u skim l-kummenti.
Staqsi utent għall-input, kun żgur jiksbu sekwenza lura string,
jtenni fuq il-karattri fit-i wieħed fi żmien, jistampaw il-karattru
karattru i-th fil s-- inti ma anke jkollhom biex tħares lejn il-kodiċi
biex jifhem dak li dan il-programm ma.
U, aħjar għadhom, jekk inti stess ħarsa fuq dan il-programm fil-ġimgħa jew tnejn,
jew xahar, jew sena, inti wisq ma għandekx
biex stare fil-kodiċi, tipprova tiftakar,
dak li kien I jippruvaw jagħmlu ma 'dan il-kodiċi?
>> You ħadthom qallek lilek innifsek.
You ħadthom deskritti għalik innifsek, jew xi kollega, jew AT, jew TF.
U għalhekk dan issa se jkun korretta, u d-disinn tajba,
u finalment stil tajjeb ukoll.
So do iżommu dan f'moħħhom.
>> Allura hemm waħda oħra Ħaġa Jien ser tagħmel hawn
li issa jistgħu jiżvelaw eżattament x'hemm għaddejjin taħt il-barnuża.
Allura hemm din il-karatteristika fis-C, u ilsna oħra,
imsejħa typecasting li jew impliċitament
jew espliċitament jippermettilek li jikkonvertu minn tip ta 'data għall-ieħor.
Imxejna ġiet jittrattaw hekk ferm illum ma kordi.
>> U kordi huma karattri.
Iżda lura mit-ġimgħa 0, liema huma karattri?
Karattri huma biss estrazzjoni fuq quċċata ta 'numri deċimali numbers--,
u n-numri deċimali huma verament ftit estrazzjoni fuq quċċata ta 'numri binarja,
kif aħna definiti fiha.
>> Allura karattri huma numri.
U n-numri huma karattri, biss skont il-kuntest.
U jirriżulta li ġewwa ta 'programm tal-kompjuter,
inti tista 'tispeċifika kif inti tixtieq li tfittex fil-bits ġewwa ta 'dak il-programm?
>> Recall minn ġimgħa 0 li kellna Ascii, li huwa biss dan il-kodiċi
ittri mapping għan-numri.
U aħna qal, il-kapital A hija 65.
Kapital B hija 66, u oħrajn.
>> U avviż, aħna essenzjalment għandna Chars fuq -filliera ta 'fuq hawnhekk, bħala C kieku jsejħulhom,
karattri, u mbagħad ints fit-tieni filliera.
U jirriżulta li inti tista 'tikkonverti ħarir bejn it-tnejn, tipikament.
U jekk irridu nagħmlu dan il deliberatament, aħna
tista 'tixtieq li jiġu indirizzati xi ħaġa bħal din.
>> Aħna tista 'tixtieq li jikkonvertu b'ittri kbar biex ibaxxu
każ, jew b'ittri żgħar li b'ittri kbar.
U jirriżulta hemmhekk s attwalment mudell hawn
nistgħu iħaddnu fi ftit mument.
Imma ejja nħarsu l-ewwel fi Eżempju ta 'kif isir dan b'mod espliċitu.
>> Jien se jmorru lura fis IDE CS50.
Jien ser toħloq fajl imsejħa 0.c. ASCII
U jien ser jimxi 'l quddiem u żid tiegħi io.h standard fil-quċċata, vojt ewlenija int
fil-quċċata tal-funzjoni tiegħi.
U allura jien biss se jagħmlu l- following-- A għal loop minn i huwa ugwali,
ejja ngħidu, 65.
>> U mbagħad I se tkun inqas minn 65, flimkien ma '26 ittri fil-alfabett.
So I ser let il-kompjuter jagħmlu l-matematika għalija hemmhekk.
U allura ġewwa dan loop, dak li jien morna ghall-istampa?
>> % Ċ huwa% i backslash n.
U issa nixtieq li plagg fil żewġ valuri.
Stajt temporanjament tqiegħed inkwistjoni jimmarka hemm biex jistiednu l-kwistjoni.
>> Irrid li jtenni mill 65 quddiem għal 26-ittri tal-alfabett,
stampar fuq kull iterazzjoni li ekwivalenti integrali karattru.
Fi kliem ieħor, nixtieq li jtenni aktar minn 26 numri istampar
dak il-karattru ASCII huwa, l-ittra, u dak in-numru korrispondenti is--
verament ftit recreating -mappa minn dik slide.
Allura dak li għandu dawn trade marks in kwistjoni jkunu?
>> Ukoll, jirriżulta li t-tieni wieħed għandu jkun biss il-i varjabbli.
Irrid nara li bħala numru.
U l-argument tan-nofs hawn, I tista 'tgħid il-kompjuter
għall-kura li numru sħiħ i bħala karattru, hekk kif
li jibdlu hawn għal mija C.
>> Fi kliem ieħor, jekk I, il programmer bniedem, taf
dawn huma biss numri fl-aħħar tal-ġurnata.
U naf li 65 għandu Mappa sa ċertu karattru.
Ma 'dan mitfugħa espliċitu, bil-parentesi,
l-isem tad-data tip li trid jikkonvertu, u parentesi magħluqa,
inti tista 'tgħid l- kompjuter, ħej, kompjuter,
jikkonvertu dan il numru sħiħ għal char.
>> Allura meta I run dan il- programm wara kumpilazzjoni,
ejja ara dak li get-- jagħmlu ascii 0.
Darn dan, dak li ma nagħmel ħażin hawn?
Użu ta 'identifikatur mhux iddikjarat, id-dritt, mhux intenzjonali,
imma ejja ara jekk ma nistgħux Raġuni permezz ta 'dan.
>> Allura linja five-- so I ma jiksbu bogħod ħafna qabel screwing up.
Kollox sew.
Allura linja 5 għall i huwa ugwali 65-- nara.
Mela ftakar li fl Ċ, kuntrarjament għal uħud ilsna jekk għandek programmazzjoni ta 'qabel
esperjenza, għandek li tgħid il-kompjuter,
b'differenza Scratch, liema tip ta 'varjabbli li hu.
>> U jien nesa frażi ċavetta hawn.
F'konformità ħames, stajt bdew jużaw i.
Imma jien ma qallek C liema data tip li hu.
Hekk jien se jmorru fil hawn u jgħidu, ah, jagħmilha integer.
>> Issa jien ser jimxi 'l quddiem u recompile.
Dak iffissat dik.
./ascii0 Daħħal, li tip ta 'kessaħ.
Mhux biss huwa super fast li titlob lill-kompjuter din il-mistoqsija,
pjuttost milli tfittex it up fuq slide, hija stampata waħda għal kull linja, A huwa 65,
B hija 66, it-triq kollha down-- peress I ma dan 26 times-- lill-ittri z,
li huwa 90.
U, fil-fatt, ftit aktar intelliġenti kieku
kienu għalija biex ma toqgħodx fuq il-kompjuter biex iżżid 26.
I setgħet biss għamlu 90 kif ukoll, sakemm
kif I ma jagħmlu l-istess żball darbtejn.
Irrid li jitla 'permezz z, mhux biss sa permezz y.
>> Allura dak mitfugħa espliċita.
Jirriżulta li din il lanqas ma huwa meħtieġ.
Let me imorru quddiem u terġa 'ssir din l kompilatur, u terġa 'ssir ASCII 0.
Jirriżulta li C hija pjuttost intelliġenti.
>> U printf, b'mod partikolari, huwa pjuttost intelliġenti.
Jekk inti biss tgħaddi minn i darbtejn għaż-żewġ placeholders, printf
se tirrealizza, oh, ukoll I taf li inti tatni integer-- xi numru,
bħall 65, jew 90, jew ikun x'ikun.
Imma nara li inti trid lili biex format dak in-numru bħal karattru.
U hekk printf jista impliċitament fondut il int għal char għalik ukoll.
Allura li mhux problema għal kollox.
>> Iżda avviż, minħabba din l-ekwivalenza nistgħu attwalment jagħmlu dan ukoll.
Let me imorru quddiem u jagħmlu waħda Verżjoni oħra ta this-- 1.c. ASCII
U minflok jiġu mtennija fuq interi, jistgħu verament blow moħħok
billi jiġu mtennija fuq karattri.
Jekk char ċ gets kapital A, I tixtieq li tmur quddiem u tagħmel dan,
sakemm Ċ hija inqas minn jew ugwali sa Z. kapital U fuq kull iterazzjoni
Irrid li inkrement Ċ, nista issa konformi printf tiegħi hawn
jiġifieri,-mija C hija mija i darb'oħra, comma C.
>> U issa, I jistgħu jmorru l-direzzjoni l-oħra, ikkastjar il-karattru espliċitu
għal integer.
Allura, għal darb'oħra, għaliex kieku inti tagħmel dan?
Huwa ftit stramb biex isolvi tal jgħodd f'termini ta 'karattri.
>> Imma jekk inti tifhem x'hemm għaddejjin taħt il-barnuża,
hemm verament ebda magic.
Inti biss qal, ħej, kompjuter jagħtu me varjabbli imsejjaħ Ċ tat char tip.
Initialize lill kapital A. U Avviż kwistjoni kwotazzjonijiet uniku.
>> Għall-karattri fis-C, jiġbor lura mingħand aħħar ġimgħa, tuża kwotazzjonijiet uniku.
Għal kordi, għall-kliem, frażijiet, tuża kwotazzjonijiet doppja.
OK, kompjuter, iżommu tagħmel dan, hekk Sakemm il-karattru huwa inqas minn
jew ugwali għal z.
U naf mit-tabella ASCII tiegħi li kollha ta dawn il-kodiċijiet ASCII huma kontigwi.
>> M'hemm l-ebda lakuni.
Allura huwa biss A sa Z, separati minn numru wieħed kull wieħed.
U allura nista 'inkrement char, jekk jien verament irridu.
Fl-aħħar tal-ġurnata, huwa biss numru.
Naf li dan.
So I tista 'biss jippreżumu li żżid 1 lilha.
>> U allura din id-darba, I jistampaw c, u allura l-ekwivalenti integrali.
U jien ma anki bżonn l-voti espliċitu.
I tista let printf u l figura kompjuter affarijiet out,
b'tali mod li issa jekk I run jagħmlu Ascii1./ascii1,
I nikseb l-istess ħaġa eżatt kif ukoll.
>> programm inutli, though-- ħadd se attwalment jikteb softwer
sabiex insemmu, dak li kien l- Numru li l-mapep għall-A, jew B, jew Z?
Int biss ser Google, jew tfittex it up fuq l-internet, jew tfittex it up
fuq slide, jew espressjonijiet simili.
Għalhekk, fejn ma dan il-fatt tikseb utli?
>> Ukoll, taħdit ta 'dik slide, avviż hemm
mudell attwali hawnhekk bejn uppercase u zghar li ma kienx aċċidentali.
Avviż li l-kapital A hija 65.
Zghar a huwa 97.
U kif bogħod huwa każ huwa aktar baxx minn?
>> Allura 65. huwa kif ħafna passi bogħod mill 97?
Allura 97 nieqes 65. huwa 32.
Allura kapital a huwa 65.
Jekk inti żid 32 għal dan, ikollok zghar a.
U, b'mod ekwivalenti, jekk inti naqqas 32, ikollok lura għall-kapital A-- istess ma B
li ftit b, kbar Ċ sa ftit ċ.
>> Kollha ta 'dawn il-lakuni huma 32 bogħod minn xulxin.
Issa, dan jidher li inessu jagħmel xi ħaġa bħal Microsoft Word,
jew Google Docs karatteristika, fejn inti jista 'jagħżel kollox u mbagħad jgħidu,
bidla kollha li zghar, jew bidla kollha li b'ittri kbar,
jew jibdlu biss l-ewwel kelma ta 'sentenza li b'ittri kbar.
Nistgħu attwalment jagħmlu xi ħaġa bħal dik nfusna.
>> Let me imorru quddiem u jiffrankaw fajl hawn imsejħa tikkapitalizza 0.c.
U ejja imorru quddiem u Whip up programm li ma eżattament dak li ġej.
Allura jinkludu l-librerija CS50.
U jinkludu istandard I / O.
>> U Naf li dan huwa li ġejjin dalwaqt.
Hekk jien ser poġġih fil hemm diġà, string.h,
so I jkollhom aċċess għal affarijiet simili Stirling,
u mbagħad int null prinċipali, bħas-soltu.
U mbagħad jien ser jimxi 'l quddiem u jagħmlu kordi gets nikseb spag,
biss li tikseb string mill-utent.
U mbagħad jien ser do verifika sanità tiegħi.
Jekk string ma null ugwali, allura huwa tajjeb li jipproċedi.
U dak ma nixtieq li tagħmel?
Jien ser jtenni mill i huwa ugwali 0, u n sal-tul sensiela ta 'i.
>> U jien ser tagħmel dan sakemm i huwa inqas minn n, ui flimkien plus.
S'issa, jien verament ftit self ideat minn qabel.
U issa jien ser jintroduċu fergħa.
>> Allura taħseb lura lill Scratch, fejn kellna dawk frieket fl-triq,
u l-aħħar ġimgħa fil Ċ jien ser jgħidu dan, jekk il-karattru numru i fir i
huwa akbar minn jew ugwali għal ibaxxu każ,
and-- fil Scratch inti litteralment jgħidu u, iżda fl Ċ you say ampersand,
ampersand-- u l-karattru numru i fir i huwa inqas minn jew ugwali għal ibaxxu każ z,
ejja nagħmlu xi ħaġa interessanti.
Ejja attwalment jistampa karattru bla newline
li huwa l-karattru fil-sekwenza, il-karattru numru i fir-sekwenza.
>> Imma ejja imorru quddiem u naqqas 32. minnha.
Inkella, jekk il-karattru fil- sekwenza li aħna qed tfittex
mhuwiex bejn ftit ta ' u ftit z, imorru quddiem
u biss stampati out mhux mibdula.
Allura konna introdotti din il notazzjoni parentesi
għal kordi tagħna biex jiksbu fl- i-th karattru fil-sekwenza.
>> Stajt żied xi loġika kondizzjonali, bħall Scratch fil-ġimgħa li għaddiet minn ġimgħa, fejn
Jien biss jużaw fundamentali tiegħi fehim ta 'x'inhu
għaddejjin taħt il-barnuża.
Huwa l-karattru numru i ta 'i ikbar minn jew ugwali għal?
Simili, huwa 97, jew 98, jew 99, u ibqa 'sejjer hekk?
>> Imma huwa wkoll anqas minn jew ugwali mal-valur tal zghar z?
U jekk iva, liema ma din il-linja jfisser?
14, dan huwa tip ta 'l- nibbieta ta 'l-idea kollha,
kapitalizzazzjoni l-ittra mill sempliċiment tnaqqas 32 minnha,
f'dan il-każ, għaliex naf, kull li ċart, kif numri tiegħi huma rappreżentati.
Mela ejja imorru quddiem u run dan, wara kumpilazzjoni tikkapitalizza 0.c,
u run kapitalizzazzjoni 0.
>> Ejja tip fil xi ħaġa simili Zamyla kollha lowercase jidħol.
U issa għandna Zamyla kollha uppercase.
Ejja tip fil Rob kollha zghar.
Ejja nippruvaw Jason kollha zghar.
U aħna iżommu jkollna l kapitalizzazzjoni sfurzat.
Hemm bug minuri li I tip ta 'ma kinitx tantiċipa.
Avviż pront ġdida tiegħi huwa jispiċċaw fuq l-istess linja ismijiet tagħhom,
li tħoss messy ftit.
>> Hekk jien se jmorru hawn, u fil-fatt fl-aħħar ta dan il-programm
jistampa karattru newline.
Dak kollox.
Bil printf, inti m'għandekx bżonn li jgħaddu fi varjabbli jew il-kodiċi format.
Tista 'litteralment biss print xi ħaġa bħal newline.
>> Mela ejja imorru quddiem u jagħmlu kapitalizzazzjoni 0 darb'oħra, terġa 'ssir din, Zamyla.
U issa huwa prettier ftit.
Issa, fil-pront tiegħi huwa fuq il-linja l-ġdida tiegħu stess.
Allura li kollox multa u tajba.
Allura li huwa eżempju tajjeb.
Imma jien ma anki neċessarjament jeħtieġ li kodiċi iebsa l 32.
Taf xiex?
I jistgħu say-- I do not qatt ftakar x'inhi d-differenza.
>> Imma naf li jekk I jkollu ittra żgħira,
Jien essenzjalment tixtieq li naqqas off ikun x'ikun l-distanza tkun bejn ftit
au big A, għaliex jekk jien jassumi li kollha ta 'l-ittri l-oħra huma l-istess,
li għandha x-xogħol isir.
Iżda pjuttost milli tagħmel dan, inti taf liema?
Hemm mod ieħor għadu.
>> Jekk thats tikkapitalizza 1.c-- jekk kienu I biex iqiegħed dak ġo fajl separat.
ejja do kapitalizzazzjoni 2.c kif ġej.
Jien ser verament tnaddaf dan up hawn.
U minflok anki wara li jafu jew kura dwar dawk f'livell baxx
dettalji ta 'implementazzjoni, jien minflok biss jmorru għal stampar ta 'karattru,
kwotazzjoni unquote, mija Ċ, u imbagħad jitlob funzjoni oħra li
teżisti li jieħu l-argument, li huwa karattru, bħal din.
>> Jirriżulta b'mod Ċ, hemm sejħa funzjoni oħra
li fuq, li bħala l-isem tagħha jissuġġerixxi tieħu karattru
u jagħmel lill b'ittri kbar tagħha ekwivalenti, u mbagħad jirritornaha dan
sabiex printf jistgħu plagg fil hemmhekk.
U hekk li jagħmlu dan, għalkemm, jiena jeħtieġ li jiġu introdotti fajl ieħor.
Jirriżulta hemm fajl ieħor li inti taf biss mill-klassi,
jew textbook, jew online referenza, imsejħa type.h. C
>> Mela jekk jien nżid li l fosthom header tiegħi fajls, u issa mill-ġdid jiġbor dan il-programm,
capitalize2, ./capitalize2 Ikteb.
Ejja tip fil Zamyla kollha zghar, għadu jaħdem l-istess.
Imma inti taf liema?
Jirriżulta li biex fuq għandha xi funzjonalità oħra.
>> U let me jintroduċu din il kmand hawn, tip ta 'awkwardly
isem, iżda raġel għalih manwali.
Jirriżulta li l-aktar kompjuters Linux, kif aħna qed jużaw here-- operattiva Linux
system-- jkunu jafu imsejħa bniedem, li jgħid,
ħej, kompjuter, agħti lili manwal tal-kompjuter.
What do inti tixtieq li tfittex up f'dak manwal?
>> Irrid li tfittex l-funzjoni msejħa biex fuq, Ikteb.
U huwa ftit cryptic biex jinqara kultant.
Iżda avviż aħna qed fil- manwal programmer Linux.
U dan kollu test.
U avviż li hemm il- isem tal-funzjoni up here.
Jirriżulta hija għandha ku imsejjaħ biex ibaxxu, li ma l-oppost.
U avviż taħt sinopsi, biex jużaw din funzjoni tal-paġna bniedem, biex ngħidu hekk,
huwa javżak me I jeħtieġ li jinkludu type.h. ċ
U kont naf li mill-prassi.
>> Hawnhekk, huwa juru lili l-tnejn prototipi għall-funzjoni,
b'tali mod li jekk jien qatt jridu jużaw din il Naf dak li jieħdu bħala input,
u dak li jirritornaw bħala output.
U mbagħad jekk I jaqra id-deskrizzjoni, nara
f'aktar dettall dak li l-funzjoni ma.
Iżda aktar importanti minn hekk, jekk Jiena nħares taħt il-valur tar-ritorn,
jgħid il-valur irritornat huwa dik tal-ittra konvertiti,
jew Ċ, l-input oriġinali, jekk l-konverżjoni ma kienx possibbli.
>> Fi kliem ieħor, li fuq se jipprova li jikkonvertu ittra lill b'ittri kbar.
U jekk iva, li għaddej biex jirritornaha.
Imma jekk ma tistax għal xi reason-- forsi huwa każ diġà fuq,
forsi huwa punt exclamation jew xi punctuation-- ieħor
huwa biss se jirritorna l-oriġinal Ċ,
li jfisser I jistgħu jagħmlu ZIP tiegħi aħjar imfassla kif ġej.
>> I m'għandhomx bżonn kollha ta ' dawn il-linji darn ta 'kodiċi.
Kollha tal-linji stajt biss enfasizzati jistgħu
jiġu imniżżla fil biss sempliċi wieħed linja, li hija this-- mija printf
ċ lill ogħla parentesi S i.
U dan ikun Eżempju ta 'disinn aħjar.
>> Għaliex jimplimentaw 7 jew 8 linji tal-kodiċi, kwalunkwe kien I biss
mħassra, meta inti tista 'minflok kollass kollha ta 'dak loġika u teħid ta' deċiżjonijiet
in linja waħda waħda, 13 issa, li tistrieħ fuq librerija function--
funzjoni li jiġi ma Ċ, iżda li ma eżattament dak li trid tagħmel.
U, franchement, anki jekk hija ma jiġu mal Ċ,
inti tista 'timplimenta it yourself, kif Rajna, bil nikseb int negattiv
u jiksbu l-aħħar ġimgħa int pożittiv ukoll.
>> Dan il-kodiċi issa huwa ħafna aktar leġġibbli.
U, tabilħaqq, jekk aħna iscroll, tħares kemm aktar kompatt
din il-verżjoni tal-programm tiegħi huwa.
Huwa tqil top ftit issa, ma 'dawn kollha jinkludi.
Imma dak li OK, għaliex issa jien wieqfa fuq l-ispallejn tal programmaturi
quddiemi.
U min kien li implimentati biex fuq verament
ma me a favor, ferm simili min implimentati Stirling verament
ma me a favor xi żmien ilu.
U hekk issa għandna programm ta 'disinn aħjar
li jimplimenta l-istess loġika eżatt.
>> Taħdit ta 'Stirling, let me go quddiem u tagħmel dan.
Let me imorru quddiem u jiffrankaw dan il-fajl bħala stirling.c.
U jirriżulta li, nistgħu qoxra lura waħda saff ieħor pjuttost sempliċi issa.
Jien ser jimxi 'l quddiem u Whip up programm ieħor fil prinċipali
hawnhekk li sempliċiment jerġa 'timplimenta Tul sekwenza kif ġej.
Allura hawnhekk linja ta 'kodiċi li me gets string mill-utent.
Aħna nżommu jużaw dan għal darb'oħra u darb'oħra.
Ħalli nagħtikom lili nnifsi varjabbli msejħa n ta 'int tip li l-ħażniet numru.
>> U let me imorru quddiem u jagħmlu l-loġika ta 'wara.
Filwaqt li l-karattru n-th fil i ma mhux ugwali backslash 0, imorru quddiem
u inkrement n.
U mbagħad jistampa n printf mija i.
Jien jsostnu li dan il-programm hawn, mingħajr sejħa tul spag,
figuri fl-tul ta 'sekwenza.
>> U l-magic huwa kompletament inkapsulati fl Linja 8
hawn ma 'dak qisu sintassi ġdida, din il backslash 0 fil-kwotazzjonijiet uniku.
Iżda għaliex huwa li?
Ukoll, tikkunsidra liema kien għaddej dan il-ħin.
>> U bħala twarrib qabel ninsa, realizzata wisq, li minbarra l-paġni bniedem
li jiġu mal tipiku sistema Linux bħal CS50 IDE,
tirrealizza li aħna, l persunal kors, ikollhom ukoll
għamlet verżjoni websajt ta 'din l-idea istess imsejħa
reference.cs50.net, li għandu kollha ta 'dawn l-istess paġni bniedem,
kollha ta 'dik l-istess dokumentazzjoni, kif ukoll
kaxxa ftit fil-quċċata li tippermetti inti biex jikkonvertu kollha ta 'l-ġust
lingwa arcane fis anqas komdi modalità, fejn aħna, il-persunal tal-għalliema,
għaddew u ppruvaw biex jissimplifikaw xi wħud mill-lingwa li żżomm affarijiet
iffukat fuq l-ideat, u mhux xi wħud mill-teknikalitajiet.
Allura wieħed iżomm f'moħħu, reference.cs50.net kif riżors ieħor ukoll.
>> Iżda għaliex jaħdem tul sekwenza fil il-mod I propost mument ilu?
Hawn Isem Zamyla darb'oħra.
U hawnhekk l-isem Zamyla tal boxed hekk kif I iżommu tagħmel,
li jagħti stampa li din hija, verament, biss sekwenza ta 'karattri.
Iżda Zamyla ma teżistix f'iżolament fi programm.
>> Meta inti tikteb u tmexxi programm, inti qed tuża Mac tiegħek jew PC tiegħek
bħala memorja, jew RAM biex ngħidu hekk.
U inti tista 'taħseb kompjuter tiegħek bħala li
lottijiet ta 'gigabytes ta' memorja dawn il-jiem.
U GIG ifisser biljuni, hekk biljuni ta 'bytes.
>> Imma ejja kontrina fil-ħin.
U ejja ngħidu li aħna qed jużaw kompjuter verament qodma li
biss għandha 32 bytes tal-memorja.
I tista ', fuq l-iskrin tal-kompjuter tiegħi, sempliċiment jiġbed dan out kif ġej.
>> I jistgħu sempliċement jgħidu li tiegħi kompjuter għandu dan kollu memorja.
U dan huwa bħal stick ta 'memorja, jekk inti recall stampa tagħna mill-aħħar darba.
U jekk I biss jaqsam B'dan darbiet biżżejjed,
I jsostnu li għandi 32 bytes tal-memorja fuq l-iskrin.
>> Issa, fir-realtà, nista 'biss jiġbed s'issa fuq dan l-iskrin hawn.
Hekk jien ser jimxi 'l quddiem, u biss b'konvenzjoni,
jiġbed memorja tal-kompjuter tiegħi bħala grilja, mhux linja biss bħala wieħed dritta.
Speċifikament, nitlob issa li dan il grilja, dan il 8 b'4 grilja,
biss jirrappreżenta 32 bytes kollha tal-memorja disponibbli fil Mac tiegħi,
jew disponibbli fil-PC tiegħi.
U dawn qed tgeżwir fuq żewġ linji, biss
minħabba li taqbel aktar fuq l-iskrin.
Iżda din hija l-ewwel byte.
Din hija t-tieni byte.
Dan huwa t-tielet byte.
>> U dan huwa l-byte 32.
Jew, jekk naħsbu bħal kompjuter xjentist, dan huwa byte 0, 1, 2, 3, 31.
Allura inti għandek 0-31, jekk tibda tgħodd f'0.
>> Mela jekk nużaw programm li s-sejħiet nikseb spag,
u nikbru string mill-bniedem bħal I ma sejjaħ Zamyla, Z-A-M-Y-L-A,
kif fid-dinja ma l- jżommu rekord tal-kompjuter ta 'liema byte,
li blokki ta 'memorja, jappartjeni għal liema string?
Fi kliem ieħor, jekk aħna tipproċedi biex tip isem ieħor fil-kompjuter,
bħal dan Andi, li ssejjaħ jiksbu sekwenza għat-tieni darba,
A-N-D-I għandu jispiċċa fil- memorja tal-kompjuter kif ukoll.
Imma kif?
>> Ukoll, jirriżulta li taħtha l- barnuża, liema Ċ ma meta ħażna kordi
li t-tipi tal-bniedem fi, jew li ġejjin minn xi sors ieħor, huwa
jiddelinea l-aħħar wieħed minnhom ma backslash character-- speċjali
0, li huwa biss mod speċjali kif tgħid 80 bits fil-filliera.
>> Allura A-- dan huwa n-numru 97 irtirar.
Allura xi mudell ta '8 bits jirrappreżenta numru deċimali 97..
Din il backslash 0 huwa litteralment l-għadd 0, Nul a.k.a., N-U-L, b'differenza qabel,
N-U L-L, li aħna tkellem dwar.
Iżda għal issa, biss jafu li dan backslash 0 huwa biss 80 bits fil-filliera.
>> U huwa biss din il-linja fil- ramel li tgħid xejn fuq ix-xellug
jappartjeni għal string wieħed, jew tip ta 'data waħda.
U xejn lejn il-lemin jappartjeni għal xi ħaġa oħra.
Isem Andi, l sadanittant, li ftit viżwalment
jiġri biex nagħlaq fuq il-linja l-oħra, iżda li biss fih dettall estetika,
bl-istess mod huwa Nul terminat.
>> Hija sensiela ta 'karattri A-N-D-I, flimkien ma wieħed minn ħamsa karattru sigriet,
kollha 0 bits, li għadha tiddemarka -aħħar ta 'isem Andi kif ukoll.
U jekk aħna sejħa jiksbu sekwenza tielet darba fil-kompjuter biex tikseb string bħal
Maria, M-A-R-I-A, bl-istess mod huwa Maria Isem Nul terminat bil backslash 0.
>> Dan huwa fundamentalment differenti minn kif kompjuter se tipikament
jaħżnu numru sħiħ, jew float, jew oħrajn tipi ta 'data xorta, għaliex irtirar,
integer huwa normalment 32 bit, jew 4 bytes, jew forsi anke 64 bits,
jew tmien bytes.
Iżda ħafna primitives fil-kompjuter fi lingwa ta 'programmar
għandhom numru fiss ta ' bytes taħt il hood--
forsi 1, forsi 2, forsi 4, forsi 8.
>> Iżda kordi, mid-disinn, għandhom Numru dinamika ta 'karattri.
Inti ma taf minn qabel, sakemm it-tipi tal-bniedem fil Z-A-M-Y-L-A,
jew M-A--R I-A, jew A-N-D-I. Ma tafx kif ħafna drabi l-utent se jintlaqtu
-keyboard.
Għalhekk, inti ma tafx kif karattri ħafna bil-quddiem
int ser bżonn.
>> U hekk Ċ biss tip ta weraq bħal Breadcrumb sigriet taħt il-barnuża
fl-aħħar tas-sekwenza.
Wara ħażna Z-A-M-Y L-A fil-memorja, huwa wkoll biss tpoġġi l-ekwivalenti
ta 'perjodu.
Fit-tmiem ta 'sentenza, li tqiegħed 80 bits, hekk kif
li tiftakar meta Zamyla jibda u jispiċċa.
>> Allura x'inhu l-konnessjoni, allura, għal dan il-programm?
Dan il-programm hawn, Stirling, hija sempliċement mekkaniżmu
biex jinkiseb string mill-utent, linja 6.
Linja 7, niddikjara varjabbli imsejħa nu stabbilixxa din ugwali għal 0.
>> U mbagħad fil-linja 8, I sempliċiment talab lill- kwistjoni, filwaqt li l-karattru n th ma
mhux ugwali kollha 0 bits-- fi kliem ieħor, ma
ugwali din il speëjali karattru, backslash 0, li
kien biss li character-- Nul speċjali imorru quddiem u biss inkrement n.
>> U jżomm tagħmel dan, u jżomm nagħmilx hekk, u tkompli tagħmel dan.
U hekk anke jekk fl -passat konna użati i,
huwa perfettament multa semantikament għall-użu n-
jekk int biss tipprova li count dan iż-żmien deliberatament,
u biss jixtiequ li hija sejħa n.
Allura dan biss iżomm tistaqsi l-mistoqsija, huwa l-karattru n-th fil i 0s kollha?
Jekk le, inħarsu lejn il-ħarsa li jmiss, tfittex għall-ieħor, tfittex għall-ieħor,
tfittex għall-ieħor.
>> Iżda hekk kif tara backslash 0, din il-linja loop-- 9 sa 11-- jieqaf.
Inti break out tal-linja waqt, tħalli ġewwa ta 'dik n varjabbli
għadd totali ta 'dawn kollha li karattri fit-sekwenza inti raw,
b'hekk istampar out.
Mela ejja tipprova dan.
>> Let me imorru quddiem u, mingħajr tuża l-funzjoni Stirling,
iżda biss bl-użu verżjoni homegrown tiegħi stess hawn imsejħa Stirling, let me imorru quddiem
u run Stirling, it-tip fil xi ħaġa bħall Zamyla, li naf minn qabel
huwa ta 'sitt karattri.
Ejja naraw jekk din taħdem.
Tabilħaqq, huwa sitta.
Ejja nippruvaw ma Rob, tliet karattri, tliet karattri kif ukoll, u ibqa 'sejjer hekk.
Allura dak kollu li għaddej fuq taħt il-barnuża.
U avviż l-konnessjonijiet, imbagħad, ma 'l-ewwel ġimgħa
tal-klassi, fejn tkellimna dwar xi ħaġa bħal estrazzjoni,
li huwa biss dan l-saffi ta 'ideat, jew kumplessità, fuq quċċata ta 'prinċipji bażiċi.
Hawnhekk, aħna qed tip ta 'tħares taħt il-barnuża ta Stirling,
biex ngħidu hekk, biex insemmu, kif se jiġi implimentat?
>> U nistgħu terġa 'timplimentaha nfusna.
Iżda aħna qed qatt darb'oħra ser li jerġa 'jimplementa Stirling.
Aħna biss ser użu Stirling sabiex
li fil-fatt tikseb xi kordi tul.
>> Imma hemm ebda magic taħt il-barnuża.
Jekk taf li taħtha il-barnuża, string
huwa biss sekwenza ta 'karattri.
U li sekwenza ta 'karattri kollha jistgħu jiġu indirizzati numerikament
ma parentesi 0, parentesi 1, parentesi 2, u int
jafu li fl-aħħar ta 'sekwenza huwa karattru speċjali, inti tista 'figura
kif jagħmlu l-aktar ħaġa fil- programm, minħabba li kull ma jeħodna għall
huwa qari u l-kitba memorja.
Dan huwa, li qed jinbidlu u tfittex fil-memorja, jew li jiċċaqilqu affarijiet
madwar fil-memorja, l-affarijiet ta 'stampar fuq l-iskrin, u oħrajn.
>> Mela ejja issa jużaw dan newfound għarfien ta 'dak kordi attwalment
huma taħt il-barnuża, u qaxxar saff wieħed ieħor
li sa issa konna ġew jinjora għal kollox.
B'mod partikolari, kwalunkwe ħin konna implimentat programm,
aħna kellna din il-linja tal-kodiċi qrib il-quċċata tiddikjara prinċipali.
U konna speċifikat null prinċipali int.
>> U li null ġewwa l parentesi Ġie qal dan il-ħin li ewlieni
innifsu ma tieħu ebda argument.
Kull input li ewlieni huwa se tikseb mill-utent
trid tiġi minn xi oħra mekkaniżmu, bħal nikseb int,
jew jiksbu float, jew tikseb spag, jew xi funzjoni oħra.
Iżda jirriżulta li meta tikteb programm,
inti tista 'attwalment tispeċifika li dan il-programm għandu
jieħdu l-inputs mill-bniedem fil-linja tal-kmand innifsu.
>> Fi kliem ieħor, anke jekk aħna s'issa ilhom biss ./hello bonjour
jew programmi simili, kollha tal- programmi oħra li aħna kont qed tuża,
li aħna lilna nfusna ma jiktbu, ilhom jieħdu, jidher,
linja ta 'kmand arguments-- affarijiet simili jagħmlu.
Inti ngħid xi ħaġa simili għamla, u mbagħad it-tieni kelma.
Jew clang, inti tgħidli clang, u mbagħad tieni kelma, l-isem ta 'fajl.
>> Jew anki RM jew CP, kif inti tista ' raw jew użati diġà
biex ineħħi jew kopja fajls.
Kollha ta 'dawn jieħdu l-hekk imsejħa linja ta 'kmand arguments--
Kliem addizzjonali fil-pront tat-terminal.
Imma sa issa, aħna lilna nfusna ma kellhomx
dan il-lussu ta 'teħid kontribut mill- utent meta hu jew hi attwalment runs
il-programm innifsu fil-linja tal-kmand.
>> Iżda nistgħu nagħmlu dan billi terġa 'tiddikjara prinċipali miexja 'l quddiem, mhux bħala li
null fil-parentesi, iżda dawn iż-żewġ argumenti
instead-- l-ewwel numru sħiħ, u t-tieni ħaġa
ġdid, xi ħaġa li aħna qed tmur biex sejħa firxa, xi ħaġa simili fl-ispirtu
għal dak li rajna fil-bidu nett bħala lista, iżda firxa ta 'spag, kif aħna ser dalwaqt tara.
Imma ejja ara dan billi Bħala eżempju, qabel we
jiddistingwu eżattament dak li tfisser.
>> Mela jekk immur fis CS50 IDE hawn, stajt marret quddiem
u ddikjarat fil-fajl imsejjaħ argv0.c-mudell li ġej.
U tinnota l-unika ħaġa li l differenti s'issa
huwa li stajt inbidlet null li int argc string ARGV parentesi miftuħa, qrib
parentesi.
U avviż għal issa, hemm xejn ġewwa ta 'dawk parentesi.
>> M'hemm l-ebda numru.
U hemm l-ebda i, jew n, jew kull ittra oħra.
Jien biss jużaw il- parentesi kwadri għal issa,
għal raġunijiet aħna ser jaslu lura fl ftit mument.
>> U issa dak li jien ser tagħmel hu li din il-.
Jekk argc huwa daqs huwa daqs 2-- u jfakkru li jkun daqs ugwali
hija l-operatur ugwaljanza tqabbil ix-xellug u d-dritt għall-ugwaljanza.
Mhuwiex l-assenjazzjoni operatur, li huwa
is-sinjal ugwali uniku, li jfisser kopja minn fuq il-lemin li l-xi valur xellug.
>> Jekk argc huwa ekwivalenti hija daqs 2, nixtieq li jiġifieri, printf, bonjour, percents, linja ġdida,
u mbagħad plagg in-- u hawn l-ġdida trick-- ARGV parentesi 1, minħabba raġunijiet
li aħna ser terga 'lura għal fil-mument.
Inkella jekk argc ma ugwali 2, inti taf liema?
Ejja biss jmorru 'l quddiem u, bħas-soltu, jistampa l bonjour dinja bl-ebda sostituzzjoni.
>> Għalhekk jidher li jekk argc, li stands għall-għadd argument, huwa daqs 2,
Jien ser jistampa bonjour xi ħaġa jew oħra.
Inkella, fil-kontumaċja, jien morna għall-istampa bonjour dinja.
Allura dak li jfisser dan?
>> Well, let me imorru quddiem u jiffrankaw dan il-fajl, u mbagħad ma jagħmlu argv0,
u mbagħad ./argv0, Ikteb.
U jgħid bonjour dinja.
Issa, għaliex huwa li?
>> Ukoll, jirriżulta ghaċ tmexxi programm fil-linja tal-kmand,
inti timla dak li aħna ser ġeneralment sejħa vettur argument.
Fi kliem ieħor, awtomatikament l- kompjuter, is-sistema operattiva,
se idejn għall-programm tiegħek nnifisha lista ta 'kollha tal-kliem
li l-bniedem ittajpjat fil il pront, fil-każ li inti
l-programmer trid tagħmel xi ħaġa ma dik l-informazzjoni.
U f'dan il-każ, l-unika kelma Stajt ittajpjat fil-prompt huwa ./argv0.
>> U għalhekk l-għadd ta 'argumenti li hija jiġu mgħoddija lill-programm tiegħi huwa biss wieħed.
Fi kliem ieħor, l-argument għadd, inkella magħruf bħala argc
hawnhekk bħala numru sħiħ, huwa biss wieħed.
Wieħed, naturalment, ma tkunx daqs tnejn.
U għalhekk dan huwa dak prints, bonjour dinja.
>> Imma let me jieħdu din x'imkien.
Ħalluni ngħid, argv0.
U allura kif madwar Maria?
U mbagħad hit Ikteb.
>> U avviż dak li magically jiġri hawn.
Issa, minflok dinja bonjour, jien biddel l-imġiba ta 'dan il-programm
billi l-input mhux minn get sekwenza jew xi funzjoni oħra,
imma minn, apparentement, kmand tiegħi innifsu, dak I oriġinarjament ittajpjat fil.
U nista 'tilgħab din il-logħba mill-ġdid billi jinbidlu biex Stelios, per eżempju.
>> U issa nara isem ieħor għadu.
U hawn, I jista 'jgħid Andi.
U jien jista 'jgħid Zamyla.
U nistgħu tilgħab din il-logħba ġurnata kollha, biss fejn jitwaħħal fil-valuri differenti,
sakemm I jipprovdi eżattament żewġ kelmiet fil-pront,
b'tali mod li argc, l-argument tiegħi għadd, hija ta '2.
>> Do nara dak l-isem pplaggjat fil printf, kull din il-kundizzjoni hawn?
Allura aħna jidhru li jkollhom issa il-kapaċità espressiva
ta 'teħid input mill b'mekkaniżmu ieħor, mill-hekk imsejħa linja tal-kmand,
aktar milli jkollhom għalfejn jistennew sakemm l-utent tiġġestixxi l-programm,
u mbagħad fil-pront lilu jew lilha jużaw xi ħaġa bħal string nikseb.
>> Allura dak li huwa dan?
Argc, għal darb'oħra, huwa biss integer, in-numru ta 'words-- arguments--
li l-utent ipprovdut fl- pront, fuq it-tieqa terminal,
inklużi l-isem tal-programm.
Allura ./argv0 tagħna huwa, effettivament, Isem tal-programm,
jew kif I run-programm.
>> Li jgħodd bħala kelma.
Allura argc ikun 1.
Imma meta nikteb Stelios, jew Andi, jew Zamyla, jew Maria,
dan ifisser l-għadd argument huwa tnejn.
U hekk issa hemm żewġ kelmiet li għaddew bi.
>> U avviż, nistgħu tkompli din il-loġika.
Jekk I attwalment ngħid xi ħaġa simili Zamyla Chan,
isem sħiħ, b'hekk tgħaddi tliet argumenti b'kollox,
issa jgħid l-inadempjenza mill-ġdid, minħabba li, naturalment, 3 mhuwiex ugwali għal 2.
>> U għalhekk b'dan il-mod, għandi aċċess permezz ARGV dan l-argument ġdid
li nistgħu teknikament sejħa xejn li rridu.
Iżda b'konvenzjoni, huwa ARGV u argc, rispettivament.
ARGV, l-argument vector, huwa tip ta sinonimu għal programmar
Karatteristika fis-C imsejħa firxa.
>> Firxa hija lista ta 'valuri simili lura, li lura, għal wara, biex lura.
Fi kliem ieħor, jekk wieħed huwa dritt hawn fil RAM, il-wieħed li jmiss huwa dritt li jmiss lilu,
u d-dritt li jmiss lilu.
Huma qed mhux kollha fuq il-post.
U din l-aħħar ipoteżi, fejn l-affarijiet huma kollha fuq il-post fil-memorja,
jista 'attwalment tkun karatteristika qawwija.
Iżda aħna ser terga 'lura għal li meta aħna jitkellmu dwar strutturi ta 'dejta fancier.
Għal issa, firxa hija biss blokki ta 'memorja kontigwa,
kull wieħed minn l-elementi tagħhom huma lura, li lura, għal wara, għal wara,
u ġeneralment l-istess tip.
>> Mela jekk inti taħseb dwar, minn mument ilu, dak li huwa string?
Ukoll, string, bħall Zamyla, Z-A-M-Y-L-A, hija, teknikament,
biss firxa.
Huwa ta 'firxa ta' karattri.
>> U hekk jekk aħna verament tiġbed dan, kif jien għamlet qabel, bħala blokki ta 'memorja,
jirriżulta li kull wieħed minn dawn karattri jieħu byte.
U allura hemm dak speċjali karattru sentinella, l-backslash 0,
jew kollha tmien 0 bits, li tiddemarka tmiem dak sekwenza.
Allura string, jirriżulta barra, nikkwota spag unquote,
huwa biss firxa ta 'chara-- char jkunu ta 'tip ta' data attwali.
>> U issa ARGV, meanwhile-- ejja jmorru lura għall-programm.
ARGV, anke jekk naraw il-kelma sekwenza hawnhekk, mhuwiex string innifsu.
ARGV, l-argument vector, firxa ta 'spag.
>> Hekk biss kif inti jista 'jkollhom firxa ta' karattri, inti jista 'jkollhom livell ogħla,
firxa ta 'strings-- hekk, per eżempju, meta I ittajpjat mument ilu ./argv0
argv0, l-ispazju Z-A-M-Y-L-A, I sostniet li ARGV kellu żewġ kordi fl ./argv0 it--,
u Z-A-M-Y-L-A. fl kliem ieħor, argc kien 2.
Għaliex huwa li?
>> Ukoll, effettivament, x'inhu għaddej fuq hija li kull wieħed minn dawn kordi
huwa, ovvjament, firxa ta 'karattri bħal qabel, li kull waħda li karattri
jieħu byte wieħed.
U ma jikkonfondi 0 attwali fl-isem tal-programm mal-0,
li jfisser 80 bits kollha.
U Zamyla, sadanittant, għadha wkoll firxa ta 'karattri.
>> Għalhekk fl-aħħar tal-ġurnata, huwa verament tidher bħal dan taħt il-barnuża.
Iżda ARGV, min-natura ta 'kif prinċipali xogħlijiet, tippermetti lili biex nagħlaq dan kollu
up fis, jekk inti se, firxa akbar li, jekk aħna ftit matul jissimplifikaw
dak l-istampa Dehra u ma pjuttost tiġbed biex iżidu hemmhekk,
dan il-firxa hija biss ta 'daqs 2, l-ewwel Element tagħha fih spag,
it-tieni element ta ' li fih sekwenza.
U, min-naħa, jekk inti tip ta 'zoom fl fuq kull
ta 'dawk kordi, dak li ara taħt il-barnuża
hija li kull sekwenza huwa biss firxa ta 'karattri.
>> Issa, hekk kif ma kordi, konna kapaċi jiksbu aċċess
l-karattru numru i fir string jużaw dik parentesi notazzjoni kwadru.
Bl-istess mod, ma arrays b'mod ġenerali, nistgħu
użu parentesi kwadri notazzjoni biex tikseb fi kwalunkwe numru ta 'spag fil-firxa?
Per eżempju, let me imorru quddiem u tagħmel dan.
>> Let me imorru quddiem u joħolqu argv1.c, li hija differenti ftit dan iż-żmien.
Minflok ta 'verifika għall argc2, Jien ser minflok tagħmel dan.
Għal int niġi 0, I hija inqas minn argc, I flimkien ma flimkien,
u mbagħad jistampa ġewwa ta 'dan, mija i, linja ġdida, u mbagħad
ARGV parentesi i.
>> Allura fi kliem ieħor, jien mhux qed jitratta ma ' karattri individwali fil-mument.
ARGV, kif implikat li dawn kwadru vojta ċingi għad-dritt ta 'l-ARGV isem,
tfisser ARGV huwa firxa ta 'spag.
U argc huwa biss int.
>> Din il-linja hawn, 6, huwa qal sett i ugwali għal 0.
Count it-triq kollha sa l-, imma ma jinkludux, argc.
U mbagħad fuq kull iterazzjoni, jistampa string.
Liema string?
>> -Sekwenza numru i fir ARGV.
So filwaqt li qabel I kien bl-użu parentesi kwadra
notazzjoni li jiksbu fil-ith karattru fi string, issa
Jien bl-użu notazzjoni parentesi kwadra li jiksbu fil-sekwenza ith fil-firxa.
Allura huwa tip ta 'saff wieħed hawn fuq, kunċettwalment.
>> U hekk x'hemm pulita dwar dan -programm issa, jekk I jikkompilaw argv1,
u mbagħad do ./argv1, u mbagħad it-tip fil xi ħaġa simili Baz bar foo,
li huma t-tliet kelmiet default li numru xjentist kompjuter jilħaq għal kwalunkwe ħin
hu jew hi teħtieġ xi kliem placeholder, u hit Ikteb, kull waħda minn dawn il-kliem,
inklużi l-isem tal-programm, li hija fil ARGV fl-ewwel lok,
jispiċċa milli jkun stampat wieħed kull darba.
U jekk nibdel dan, u jien ngħid xi ħaġa bħal argv1 Zamyla Chan,
aħna nikseb kollha tlieta minn dawk kliem, li huwa argv0,
argv1, argv2, għaliex f'dan il- każ argc, l-għadd, hija ta '3.
>> Imma x'hemm pulita hija jekk inti tifhem li ARGV huwa biss firxa ta 'kordi,
u inti tifhem li string firxa ta 'karattri,
nistgħu ngħidu tip ta jużaw dan parentesi kwadra notazzjoni iktar minn darba
biex jagħżlu string, u mbagħad jagħżlu karattru fi ħdan il spag,
għadis fil-fond kif ġej.
F'dan l-eżempju, let me go quddiem u sejħa dan argv2.c.
U f'dan l-eżempju, let me imorru quddiem u jagħmlu l-following-- għall-int i tikseb 0,
i huwa inqas minn argc, i flimkien plus, bħad qabel.
Għalhekk fl words-- oħra u issa din huwa jkollna kkumplikata biżżejjed.
Imbagħad jien ser ngħid jtenni fuq kordi fl ARGV,
bħala kumment li myself.
U mbagħad jien ser ikollhom nested għall loop, li inti probabilment
għamlu, jew ikkunsidrat tagħmel, fil Scratch, fejn
Jien se ngħid int-- jien mhux ser tuża i mill-ġdid,
minħabba I ma jridux dell, jew tip ta 'jissostitwixxu l-i eżistenti.
>> Jien ser, minflok, ngħidu j, għaliex li l-go tiegħi biex varjabbli wara i,
meta jien biss tipprova li count numri sempliċi.
Għal j gets 0-- u wkoll, n, li jkun ser jiksbu t-tul poppa tal faxxa ARGV i,
sakemm j hija inqas minn metru, j flimkien flimkien, jagħmlu dan li ġej.
U hawnhekk l-parti interessanti.
>> Jistampa karattru u linja ġdida, fejn jitwaħħal fil-bracket tal ARGV i, parentesi j.
OK, so let me żid xi kummenti hawn.
Jtenni fuq karattri fil string kurrenti,
print-j th karattru sekwenza numru i.
Allura issa, ejja jikkunsidraw dak li jfisser dawn il-kummenti.
>> Jtenni fuq il-kordi fil argv-- kemm
kordi huma ARGV, li hija l-firxa?
Argc ħafna, hekk jien iterazzjoni minn i ugwali 0 sa argc.
Sadanittant, kemm karattri huma fis-sekwenza numru i fir ARGV?
>> Ukoll, biex tikseb din ir-risposta, I biss sejħa tul sekwenza
fuq lI kura sekwenza attwali dwar, li hija ARGV parentesi i.
U jien ser taħżen temporanjament dik valur n, biss għal skopijiet caching,
biex tiftakar għall-effiċjenza.
U mbagħad jien ser initialize j għal 0, jibqgħu għaddejjin sakemm j huwa inqas minn n,
u fuq kull inkrement iterazzjoni j.
>> U mbagħad fil hawn, kull kumment tiegħi fuq il-linja 12,
jistampa karattru, segwit minn linja ġdida,
parentesi speċifikament ARGV i me tagħti l-sekwenza numru i
fil argv-- hekk l-ewwel kelma, il- tieni kelma, it-tielet kelma, ikun x'ikun.
U mbagħad ads j fil-fond, u gets lili il-karattru-j th tal-kelma.
U għalhekk, fil-fatt, inti tista 'tikkura ARGV bħala multi-dimensjonali,
bħala żewġ dimensjonijiet, array, li permezz tagħha kull tip kelma ta 'jistenna
bħal dan f'moħħu s tiegħek għajn, u kull karattru
huwa tip ta 'kompost kolonna, jekk li tgħin.
>> Fir-realtà, meta aħna tease dan il bogħod minn xulxin fil-ġimgħat li ġejjin,
li għaddej biex tkun ftit aktar sofistikata minn dik.
Imma inti tista 'verament think ta 'dak, għal issa,
kif biss dan b'żewġ dimensjonijiet firxa, fejn livell wieħed ta 'dan
huwa kollha tal-kordi.
U mbagħad jekk inti adsa aktar profonda, inti jistgħu jiksbu mill-karattri individwali
Hemmhekk billi tuża din notazzjoni hawn.
>> Allura x'inhi l-effett nett?
Let me imorru quddiem u jagħmluha darn argv2-- dan.
I għamel żball hawn.
B'mod impliċitu li tiddikjara l- Stirling funzjoni librerija.
Allura dan il-ħin, huwa forsi xieraq
li aħna qed tip ta 'irfinar eżattament fejn bdejna.
>> I invitat up, impliċitament li tiddikjara Stirling funzjoni librerija.
OK, stenna minuta.
Niftakar li, speċjalment peress li huwa dritt hawn.
I-ħtieġa li jinkludi string.h fil din il-verżjoni tal-programm.
>> Let me imorru quddiem u jinkludu string.h, ħlief li, imorru quddiem
u recompile argv2.
U issa, here we go, jagħmlu argv2, Ikteb.
U għalkemm huwa ftit cryptic ewwel daqqa t'għajn,
Avviż li, tabilħaqq, dak huwa stampat huwa dot argv2.
>> Imma jekk jien tip kelmiet wara l pront, bħal argv2 Zamyla Chan,
Daħħal, ukoll ftit cryptic ewwel daqqa t'għajn.
Imma jekk irridu iscroll back-up, ./argv2 Z-A-M-Y L-AC-H-A-N.
Allura aħna ve tennew fuq kull kelma.
U, min-naħa, konna tennew aktar minn kull karattru ġo kelma.
>> Issa, wara dan kollu, tirrealizza li hemm
Dettall ieħor aħna kont qed tip ta jinjora dan iż-żmien kollu.
Aħna biss teased barra dak -inputs ewlenin tiegħu tista 'tkun?
Xi ngħidu dwar l-output prinċipali tal?
>> Kollha ta 'dan iż-żmien, aħna kont qed biss ikkupjar u pasta
l-int kelma quddiem prinċipali, għalkemm inti tista 'tara fuq l-internet,
kultant b'mod żbaljat fil-verżjonijiet anzjani ta 'C u kompilaturi, li jgħidu null,
jew xejn affattu.
Iżda, fil-fatt, għall-verżjoni ta 'C li aħna qed jużaw,
C 11, jew 2011, tirrealizza li għandu jkun int.
U għandu jkun jew nulli jew argc u ARGV hawn.
>> Iżda għaliex int prinċipali?
Dak li huwa attwalment jirritorna?
Ukoll, jirriżulta kollu ta 'dan iż-żmien, kwalunkwe ħin li inti stajt bil-miktub ta 'prinċipali programm
huwa dejjem jirritorna xi ħaġa.
Iżda huwa kien jagħmel dan segretament.
>> Li xi ħaġa hija int, kif linja 5 jissuġġerixxi.
Imma dak int?
Ukoll, hemm dan konvenzjoni fl-ipprogrammar,
li permezz tiegħu jekk xejn ikollu marret ħażin u kollox huwa tajjeb,
programmi u l-funzjonijiet ġenerali return-- kemmxejn counterintuitively--
0.
0 ġeneralment ifisser kollox huwa tajjeb.
Għalhekk anki jekk inti taħseb bħala falz f'ħafna kuntesti,
fil-fatt ġeneralment ifisser ħaġa tajba
>> Sadanittant, jekk programm prospetti 1, jew negattiva 1, jew 5, jew negattiva 42,
jew kwalunkwe 0 nuqqas valur, li ġeneralment ifisser
li xi ħaġa marret ħażin.
Fil-fatt, fuq Mac tiegħek stess jew PC, inti jista 'jkollok attwalment raw
messaġġ ta 'żball, li bih jgħid xi ħaġa jew oħra, iżball
kodiċi negattiv 42, jew żball kodiċi 23, jew xi ħaġa bħal dik.
Dak in-numru huwa ġeneralment biss ħjiel li l-programmer, jew il-kumpanija
li għamel l-software, x'mar ħażin u għaliex,
sabiex ikunu jistgħu jfittxu permezz dokumentazzjoni tagħhom jew kodiċi,
u ċifra barra dak l- Żball effettivament tfisser.
Huwa ġeneralment mhux utli għalina utenti finali.
>> Imma meta prospetti ewlenin 0, kollox huwa tajjeb.
U jekk inti ma tispeċifika liema prinċipali għandu jirritorna,
se biss awtomatikament ritorn 0. għalik.
Iżda jirritornaw xi ħaġa inkella huwa attwalment utli.
>> F'dan il-programm finali, let me imorru quddiem u sejħa dan exit.c,
u jintroduċu l-aħħar tal-lum suġġetti, magħrufa bħala kodiċi żball.
Let me imorru quddiem u jinkludu tagħna fajls familjari up fuq, do int prinċipali.
U din id-darba, ejja do argc int, spag ARGV, u bil-parentesi tiegħi
li jimplika li huwa fid-array.
U allura let me biss tagħmel verifika sanità.
Din id-darba, jekk argc ma ugwali 2, imbagħad inti taf liema?
Insieghha.
I am ser ngħid li, ħej, utent, inti nieqes argument linja tal-kmand
n backslash.
>> U allura li dan.
Irrid għall-ħruġ.
I am ser preemptively, u b'mod prematur tassew, ritorn
xi ħaġa oħra għajr in-numru 1.
Il mur valur għall-ewwel żball li jista 'jiġri huwa 1.
Jekk ikollok xi oħra żbaljata sitwazzjoni li tista 'sseħħ,
inti jista 'jgħid ritorn 2 jew ritorn 3, jew forsi anke negattiv 1 jew negattiv 2.
>> Dawn huma biss kodiċijiet ħruġ li huma, ġeneralment,
biss utli għall-programmer, jew il- kumpanija li s-tbaħħir s-software.
Imma l-fatt li huwa mhux 0. huwa x'inhu importanti.
Mela jekk f'dan il-programm, nixtieq li jiggarantixxu li dan il-programm biss
xogħlijiet jekk l-utent jipprovdi lili ma 'għadd argument ta' tnejn,
l-isem tal-programm, u xi oħrajn kelma, I jistgħu jinfurzaw kemm jista ġej,
Yell fil-utent ma qal printf, nieqsa argument linja tal-kmand,
ritorn 1.
Li se biss immedjatament nieqaf-programm.
>> Huwa biss jekk argc huwa ekwivalenti 2 se nikbru isfel hawn, f'liema punt Jien se ngħid,
bonjour mija i, n backslash, argv1.
Fi kliem ieħor, jien ma jmur wara ARGV 0,
li huwa biss l-isem tal-programm.
Irrid li jistampa bonjour, comma, it-tieni kelma li l-bniedem ittajpjat.
U f'dan il-każ fuq linja 13, kollox huwa tajjeb.
>> Naf li argc huwa 2 loġikament minn dan il-programm.
Jien ser jimxi 'l quddiem u r-ritorn 0.
Bħala twarrib, wieħed iżomm f'moħħu li dan huwa minnu b'mod scratch kif ukoll.
>> Loġikament, I jistgħu jagħmlu dan u jirrappreżentaw dawn il-linji
tal-kodiċi fil din il-klawsola inkella hawn.
Imma dak li tip ta ' bla bżonn indenting kodiċi tiegħi.
U nixtieq li jagħmlu super ċar li l-ebda kwistjoni liema,
-kontumaċja, bonjour xi ħaġa se tikseb stampati,
sakemm l-utent tikkoopera.
>> Allura huwa komuni ħafna għall-użu kundizzjoni, biss jekk,
biex jaqbad xi żbaljata sitwazzjoni, u mbagħad ħruġ.
U mbagħad, sakemm kollox huwa tajjeb, m'għandhiex ħaġa oħra,
iżda biss ikollhom l-kodiċi barra minn dan, jekk, għaliex dan huwa
ekwivalenti f'dan il- każ partikolari, loġikament.
Hekk jien jirritornaw 0, just biex turi espliċitament kollox huwa tajjeb.
>> Jekk I titħalla barra r-ritorn 0, ikun awtomatikament preżunt għalija.
Imma issa li jien jirritornaw wieħed mill-inqas il-każ,
Jien ser, għal miżura tajba u ċarezza, ir-redditu 0 f'dan il-każ.
Allura issa let me imorru quddiem u jagħmlu l-ħruġ, li hija segue perfetta biex jitilqu biss.
>> Iżda li jagħmlu l-ħruġ, u let me go quddiem u jagħmlu ./exit, Ikteb.
U l-programm għajjat ​​fil lili, nieqsa argument kmand tal-linja.
OK, let me jikkooperaw.
>> Let me minflok tagħmel ./exit, David, Ikteb.
U issa huwa jgħid, bonjour David.
U inti ma tkunx normalment tara dan.
>> Iżda jirriżulta li hemm Mod speċjali fl-Linux biex effettivament jaraw
ma 'dak tal-ħruġ kodiċi programm ħareġ.
Kultant fi grafika dinja bħall Mac OS jew Windows,
inti biss tara dawn in-numri meta messaġġ ta 'żball pops up fuq l-iskrin
u l-programmer turi li inti dak in-numru.
Iżda jekk irridu naraw dak l-iżball messaġġ huwa, nistgħu nagħmlu dan here--
hekk ./exit, Ikteb, jistampa nieqsa argument kmand tal-linja.
>> Jekk jien issa do $ eku ?, li huwa ridiculously cryptic tfittex.
Iżda $?
huwa l-incantation maġika li tgħid, ħej, kompjuter,
tell me dak ta 'qabel Kodiċi ħruġ programm kien.
U jien hit Ikteb.
Nara 1, għaliex dan huwa dak I told funzjoni prinċipali tiegħi li jirritornaw.
>> Sadanittant, jekk nagħmel ./exit David, u hit Ikteb, nara, bonjour David.
U jekk jien issa do $ eku ?, nara bonjour 0.
U għalhekk dan se attwalment jkun informazzjoni prezzjuża
fil-kuntest tal-debugger, mhux hekk ħafna li inti, l-bniedem, se kura.
Iżda l-debugger u oħrajn Programmi aħna ser tuża dan is-semestru
spiss se tħares lejn dak in-numru, anki jekk huwa tip ta 'moħbija bogħod
sakemm inti tfittex għal dan, li jiddeterminaw jekk programm jew le
eżekuzzjoni kienet korretta jew mhux korretta.
>> U hekk dan iwassalna għall dan, fl-aħħar tal-ġurnata.
Bdejna llum billi tħares lejn debugging, u min-naħa fil-kors
innifsu, u imbagħad aktar interessanti, teknikament taħt il-barnuża
lejn dak kordi huma, li jdum ġimgħa aħna biss ħa għall mogħtija,
u ċertament ħadithom għall mogħtija fil scratch.
>> Aħna mbagħad ħares lejn kif nistgħu aċċess karattri individwali string,
u mbagħad għal darb'oħra ħa livell ogħla tħares lejn l-affarijiet, tħares lejn kif well--
jekk aħna rridu nġibu fil individwali elementi fil-lista bħall-istruttura,
ma nistgħu nagħmlu dan bil-kordi multipli?
U nistgħu b'argumenti linja tal-kmand.
Iżda din l-istampa hawn 'ftit kaxxi hija dimostrattiv ta din l-idea ġenerali
ta 'firxa, jew lista, jew vector.
U skond il- kuntest, kollha ta 'dawn il-kliem
tfisser affarijiet ftit differenti.
Għalhekk fl Ċ, aħna qed biss se biex jitkellmu dwar firxa.
U l-firxa hija chunk ta 'memorja, li kull wieħed minnhom huwa
Elementi huma kontigwi, lura, għal wara, biex lura, lura.
>> U dawn l-elementi huma, ġeneralment, tal-istess tip ta 'dejta, karattri,
karattru, karattru, karattri, jew spag, spag, spag, spag, jew int,
int, int, tkun xi tkun aħna qed jippruvaw biex jaħżnu.
Iżda fl-aħħar tal-ġurnata, dan huwa dak li jidher qisu kunċettwalment.
Inti qed tieħu tiegħek Memorja RAM jew kompjuter.
U int jiddelimitaw out in kaxxi identiku daqs medju, li kollha
huma lura, li lura, li lura, li lura b'dan il-mod.
>> U x'hemm sbieħ dwar din l-idea, u l-fatt
li nistgħu jesprimu valuri b'dan il-mod ma 'l-ewwel ta' strutturi ta 'dejta tagħna
fil-klassi, tfisser nkunu nistgħu nibdew biex isolvu problemi bil-kodiċi
li daħal hekk intuwittivament fil-ġimgħa 0.
Int ser ikollok tfakkar il-phone Eżempju ktieb, fejn
użajna firda u conquer, jew algoritmu tfittxija binarju,
biex jiġu ffiltrati permezz inġenerali mazz ta 'ismijiet u n-numri.
Iżda aħna jassumi, irtirar, li din ktieb tat-telefon kien diġà magħżula,
li xi ħadd ieħor kien diġà dehret out-- tingħata lista ta 'ismijiet
u numbers-- kif alphabetize lilhom.
U issa li fl Ċ aħna, ukoll, għandhom il-ħila
li jiġu affarijiet out, mhux fiżikament fi ktieb tat-telefon
iżda virtwalment fil-s kompjuter memorja, se nkunu ġimgħa d-dieħla jistgħu
li jintroduċi mill-ġdid this---ewwel ta 'strutturi ta' dejta tagħna fi array--
iżda, aktar importanti, il-kompjuter attwali algoritmi xjenza implimentati
fil-kodiċi, li magħhom nistgħu jaħżen dejta fl-istrutturi bħal dan,
u mbagħad tibda biex jimmanipulaw dan, u li attwalment isolvu problemi ma 'dan,
u biex jibnu fuq quċċata ta 'dan, finalment, il-programmi fis-C,
fl-Python, fil JavaScript, juri dubji databases SQL?
>> U aħna ser tara li dawn kollha ideat differenti jorbtu ma 'xulxin.
Iżda għal issa, tfakkar li l- dominju li aħna introdotti llum
Kien dan il-ħaġa hawn, u -dinja ta 'kriptografija.
U fost il-problemi li jmiss inti stess se ssolvi hija l-arti ta 'kriptografija,
scrambling u de-scrambling informazzjoni, u ċċifrar
u deciphering test, u jekk wieħed jassumi finalment
li inti issa taf liema huwa taħt il-barnuża
b'tali mod li meta inti tara jew jirċievu messaġġ bħal dan, inti
lilek innifsek jista jiddeċifraw dan.
Dan kollu, u l-ħin aktar li jmiss.
>> [Daqq video]
>> -Mover Biss waslu.
Jien se jmorru żjara professur kulleġġ tiegħu.
Yep.
Hi.
Huwa inti.
Stenna!
David.
Jien biss tipprova figura barra dak li ġara lilek.
Jekk jogħġbok, xejn tista 'tgħin.
You kienu kulleġġ tiegħu roommate, ma kinux inti?
You kienu hemm miegħu meta huwa lest il-proġett CS50?
>> [Ddoqq il-mużika]
>> -Li Kien CS50.
>> I love dan il-post.
>> -Eat Up.
Aħna qed tmur fin-negozju.
>> [END Daqq]