>> [CHWARAE CERDDORIAETH]
>> DAVID J. Malan: pob hawl.
Mae hyn yn CS50, ac mae hyn yn ddechrau Wythnos 2.
A byddwch yn cofio bod dros y ychydig wythnosau diwethaf,
rydym wedi bod yn cyflwyno cyfrifiadur gwyddoniaeth ac, yn ei dro, rhaglennu.
>> Ac rydym yn dechrau ar y stori ar ffurf Scratch, yr iaith graffigol
o Lab Cyfryngau MIT'S.
Ac yna yn fwyaf diweddar, yr wythnos diwethaf, gwnaethom
cyflwyno higher-- yn iaith lefel is-hysbys
fel C, rhywbeth sy'n testunol yn unig.
Ac, yn wir, tro diwethaf i ni harchwilio o fewn y cyd-destun
nifer o gysyniadau.
>> Mae hyn, galw i gof, yn yr union rhaglen gyntaf buom yn edrych ar.
Ac mae'r rhaglen hon, yn syml iawn, brintiau allan, "helo, byd."
Ond mae cymaint yn ôl pob golwg hud yn digwydd.
Mae #include hwn gyda cromfachau ongl hyn.
Mae int.
Mae (ddi-rym).
Mae cromfachau, braces cyrliog, hanner colon, a llawer iawn mwy.
>> Ac felly, yn cofio bod gwnaethom gyflwyno Scratch
fel y gallem, yn ddelfrydol, gweler y gorffennol hynny cystrawen, y pethau sydd wir nid
bob un sy'n ddeallusol ddiddorol ond yn gynnar
yw, yn gwbl, ychydig yn anodd i lapio eich meddwl o amgylch.
Ac, yn wir, un o'r rhai mwyaf cyffredin pethau yn gynnar mewn dosbarth rhaglennu,
yn enwedig ar gyfer y rhai sy'n llai cyfforddus, yw cael rhwystredig oherwydd
a baglu gan cystrawennol penodol camgymeriadau, heb sôn am gwallau rhesymegol.
Ac felly ymhlith ein nodau heddiw, mewn gwirionedd, bydd
fydd eich paratoi gyda rhai technegau datrys problemau ar gyfer sut y
i ddatrys problemau eu hunain yn well ar ffurf debugging.
A byddwch yn cofio, hefyd, fod y amgylchedd a gyflwynwyd gennym
tro diwethaf oedd enw CS50 IDE.
Mae hyn yn feddalwedd ar y we sy'n yn eich galluogi i raglen yn y cwmwl,
fel petai, tra'n cadw eich holl ffeiliau gyda'i gilydd, fel yr ydym eto bydd heddiw.
A dwyn i gof bod yn ailystyried y pynciau hyn yma,
yn eu plith swyddogaethau, a dolenni, a newidynnau, ac ymadroddion Boole,
ac amodau.
Ac mewn gwirionedd ychydig yn fwy ein bod yn cyfieithu o fyd Scratch
i fyd C.
>> Ond mae'r adeiladu sylfaenol blociau, fel petai,
yn wirioneddol dal i fod yr un fath yr wythnos diwethaf.
Yn wir, rydym yn wir yn newydd gael gwahanol ddarn pos, os mynnwch.
Yn lle hynny porffor arbed bloc, rydym yn lle hynny
wedi printf, sef swyddogaeth hon yn C sy'n
yn eich galluogi i argraffu rhywbeth a fformat ar y sgrin.
Cyflwynasom y CS50 Llyfrgell, lle rydych yn
yn awr yn eich get_char gwaredu, a get_int, a get_string,
ac ychydig o swyddogaethau eraill fel yn dda, trwy y gallwch gael mewnbwn
oddi wrth y defnyddiwr bysellfwrdd hun.
Ac rydym hefyd yn cymryd golwg ar bethau fel hyn- bool, a torgoch,
a dwbl, arnofio, int, llinyn long_long.
Ac mae hyd yn oed mathau data eraill yn C.
>> Mewn geiriau eraill, pan fyddwch yn datgan newidyn i storio rhywfaint o werth,
neu pan fyddwch yn gweithredu swyddogaeth sy'n dychwelyd rhywfaint o werth,
gallwch nodi pa math o werth sy'n cael ei.
A yw'n llinyn, fel dilyniant o gymeriadau?
A yw'n rif, fel cyfanrif?
Ai pwynt arnawf gwerth, neu debyg?
Felly, yn C, yn wahanol Scratch, rydym mewn gwirionedd Dechreuodd i bennu pa fath o ddata
rydym yn dychwelyd neu ddefnyddio.
>> Ond, wrth gwrs, rydym hefyd yn rhedeg i mewn rhai cyfyngiadau sylfaenol cyfrifiadurol.
Ac yn benodol, yr iaith hon C, galw i gof
ein bod yn cymryd golwg ar gorlif cyfanrif, y gwir amdani
os mai dim ond gennych swm cyfyngedig o gof
neu, yn benodol, mae nifer cyfyngedig o ddarnau, gallwch gyfrif mor uchel.
Ac felly rydym yn edrych ar yr enghraifft hon yma lle cownter mewn awyren,,
mewn gwirionedd, os rhedeg yn ddigon hir y byddai orlifo ac yn arwain at meddalwedd
gwirioneddol gwall potensial corfforol.
>> Rydym hefyd yn edrych ar fel y bo'r angen pwynt imprecision, y realiti
hynny gyda dim ond nifer cyfyngedig o ddarnau, boed yn 32 neu 64,
gallwch nodi cymaint o rifau ar ôl pwynt degol, ac ar ôl hynny i chi
yn dechrau cael anfanwl.
Felly, er enghraifft, un rhan o dair yn y byd yma, yn ein byd dynol,
rydym yn gwybod yn unig yw nifer anfeidrol o 3s ôl y pwynt degol.
Ond nid yw cyfrifiadur yn gallu reidrwydd yn cynrychioli nifer anfeidrol o rifau
os mai dim ond caniatáu iddo rai swm cyfyngedig o wybodaeth.
>> Felly, nid yn unig y gwnaethom yn eich paratoi gyda mwy o bŵer yn nhermau
o sut y gallech chi fynegi eich hun yn fysellfwrdd o ran rhaglennu,
rydym hefyd yn gyfyngedig beth gallwch chi ei wneud mewn gwirionedd.
Ac yn wir, chwilod a chamgymeriadau yn gallu codi o mathau hynny o faterion.
Ac yn wir, ymhlith y pynciau heddiw yn mynd i fod pynciau fel debugging
ac mewn gwirionedd yn edrych o dan y cwfl ar sut mae pethau'n cael eu cyflwyno wythnos ddiwethaf
yn cael eu rhoi ar waith mewn gwirionedd er mwyn i chi yn well
deall y galluoedd a cyfyngiadau iaith fel C.
>> Ac yn wir, byddwn yn edrychwch drwy'r haenau o'r symlaf o strwythur data,
rhywbeth o'r enw arae, a oedd yn Scratch digwydd i alw "rhestr."
Mae'n ychydig bach wahanol yn y cyd-destun.
Ac yna byddwn hefyd yn cyflwyno un o'r cyntaf o'n problemau parth-benodol
yn CS50, byd cryptograffiaeth, y grefft o sgrialu
neu wrth ciphering gwybodaeth fel eich bod yn gallu anfon negeseuon cudd
a dadgodio negeseuon cudd rhwng dau berson, A a B.
>> Felly, cyn trosglwyddo i ni at y byd newydd,
gadewch i ni geisio eich paratoi gyda rhai technegau y gallwch chi gael gwared ag ef
neu leihau o leiaf rai o'r rhwystredigaethau
eich bod yn ôl pob tebyg wedi dod ar draws dros yr wythnos diwethaf yn unig.
Yn wir, o flaen ydych yn such-- rhai o eich problemau cyntaf yn C. Ac groes yn,
os ydych chi fel fi, y tro cyntaf eich bod yn ceisio deipio rhaglen,
hyd yn oed os ydych yn meddwl yn rhesymegol mae'r rhaglen yn eithaf syml,
efallai y byddwch yn dda iawn yn taro wal, a nid yw'r compiler yn mynd i gydweithredu.
Gwneud neu beidio chlang yn mynd i mewn gwirionedd yn gwneud eich cais.
>> A pham y gallai hynny fod?
Wel, gadewch i ni edrych ar, efallai, yn rhaglen syml.
Rydw i'n mynd i fynd yn ei flaen ac arbed hyn yn ffeil o'r enw fwriadol buggy0.c,
gan fy mod yn gwybod ei fod i yn ddiffygiol o flaen llaw.
Ond efallai nad wyf yn sylweddoli bod os yw hyn yw'r rhaglen gyntaf neu'r ail neu'r trydydd
fy mod mewn gwirionedd yn gwneud fy hun.
Felly, yr wyf i'n mynd i fynd yn ei flaen a deipio allan, int prif (ddi-rym).
Ac yna y tu mewn fy braces cyrliog, yn gyfarwydd iawn ( "hello, world--
slaes, n ") - a hanner colon.
>> Rwyf wedi arbed y ffeil.
Nawr rydw i'n mynd i fynd i lawr i fy ffenestr terfynell
a math gwneud buggy0, oherwydd, unwaith eto, enw'r ffeil heddiw yn buggy0.c.
Felly, yr wyf teipio gwneud buggy0, Enter.
>> Ac, oh, diar, dwyn i gof o dro diwethaf nad oes unrhyw negeseuon gwall yn beth da.
Felly dim allbwn yn beth da.
Ond yma mae gen i yn glir rhyw nifer o gamgymeriadau.
>> Felly, y llinell gyntaf o allbwn ar ôl teipio gwneud buggy0, galw i gof,
yw allbwn weddol amleiriog chlang yn.
O dan y cwfl, IDE CS50 ei ffurfweddu
i ddefnyddio criw cyfan o opsiynau gyda crynhoydd hwn
fel nad oes gennych i feddwl amdanyn nhw.
A dyna'r cyfan y llinell gyntaf dulliau sy'n dechrau gyda chlang.
>> Ond ar ôl hynny, y problemau yn dechrau gwneud eu hymddangosiad.
Buggy0.c ar llinell 3, cymeriad 5, mae yna fawr, gwall coch.
Beth yw hynny?
Ymhlyg datgan swyddogaeth llyfrgell printf â'r math int (Etholaeth torgoch *,
...) [-Werror].
Yr wyf yn golygu, yn gyflym iawn mynd arcane iawn.
Ac yn sicr, ar y dechrau yr olwg, nid ydym fyddai
yn disgwyl i chi ddeall y gyfanrwydd y neges honno.
Ac felly un o'r gwersi ar gyfer heddiw yn mynd
i fod i geisio i hysbysiad patrymau, neu bethau tebyg,
i wallau a allai fod gennych dod ar eu traws yn y gorffennol.
Felly gadewch i ni tynnu ar wahân yn unig geiriau hynny sy'n edrych yn gyfarwydd.
Mae'r mawr, gwall coch yn amlwg symbolaidd o rywbeth yn anghywir.
>> ymhlyg datgan printf swyddogaeth llyfrgell.
Felly hyd yn oed os nad wyf yn deall yn hollol beth ymhlyg datgan swyddogaeth llyfrgell
fodd, y broblem yn sicr yn ymwneud â printf rhywsut.
A ffynhonnell y mater hwnnw wedi ei wneud â datgan ei.
>> Datgan swyddogaeth yw sôn am y tro cyntaf.
Ac rydym yn defnyddio'r derminoleg wythnos ddiwethaf o ddatgan prototeip swyddogaeth, yn
naill ai gydag un llinell ar ben eich ffeil eu hunain neu mewn hyn a elwir yn ffeil flaen.
Ac yn yr hyn a wnaeth ffeil a ddywedwn yr wythnos diwethaf fod printf yw dyfyniad,
unquote, datganodd?
Ym mha ffeil yw ei prototeip?
>> Felly, os ydych yn cofio, y peth cyntaf i mi teipio, mae bron pob rhaglen adeg-- diwethaf
ac yn ddamweiniol funud yn ôl dechreuodd teipio myself-- oedd hyn un Yma--
hash-- #include <stio-- am mewnbwn / dot output-- h Ac yn wir,
os wyf yn awr yn arbed y ffeil, dwi'n mynd i fynd yn ei flaen a chlirio fy sgrîn,
a gallwch wneud hyn drwy deipio Clir, neu gallwch ddal Rheoli L,
dim ond i glirio eich ffenestr terfynell dim ond cael gwared â rhai annibendod.
>> Rydw i'n mynd i fynd yn ei flaen a ail-math gwneud buggy0, Enter.
A voila, yr wyf yn dal i weld bod gorchymyn hir o chlang,
ond does dim neges gwall y tro hwn.
Ac yn wir, os wyf yn gwneud ./buggy0, yn union fel y tro diwethaf,
lle mae dot yn golygu hwn cyfeiriadur, Slash unig yn golygu,
yma hon enw'r rhaglen a bod enw'r rhaglen yn buggy0,
Mewnbynnu, "helo, byd."
>> Nawr, sut y gallai fod gennych gafwyd ateb hwn
heb o reidrwydd gan gydnabod cymaint o eiriau
fel y gwneuthum, yn sicr, ar ôl gwneud hyn am gymaint o flynyddoedd?
Wel, yn sylweddoli y broblem yn gyntaf set, rydym yn eich cyflwyno i gorchymyn
bod staff CS50 ei hun Ysgrifennodd enw help50.
Ac yn wir, C yn fanyleb ar gyfer y broblem a osodwyd ar sut i ddefnyddio hyn.
>> Ond a help50 y bôn rhaglen sy'n staff CS50 yn
ysgrifenasoch sy'n caniatáu i redeg gorchymyn neu rhedeg rhaglen,
ac os nad ydych yn deall ei allbwn, i basio ei allbwn i help50,
a phryd y feddalwedd a ysgrifennodd y staff y cwrs
Bydd yn edrych ar gynnyrch eich rhaglen linell wrth linell, cymeriad gan cymeriad.
Ac os ydym, staff, yn cydnabod yr neges wall nad ydych yn dioddef,
byddwn yn ceisio ysgogi chi gyda rhai cwestiynau rhethregol, gyda rhywfaint o gyngor,
yn debyg iawn i TF neu CA neu fi fy hun Byddai gwneud yn bersonol mewn oriau swyddfa.
>> Felly edrychwch i help50 os nad ydych yn ei wneud o reidrwydd yn cydnabod problem.
Ond peidiwch â dibynnu arno gormod fel crutch.
Yn sicr ceisio deall ei allbwn ac yna dysgu oddi wrtho
fel mai dim ond unwaith neu ddwywaith ydych chi'n byth yn rhedeg help50 gyfer gwall penodol
neges.
Ar ôl hynny, dylech fod yn offer eich hun yn well
i ffigwr beth ydyw mewn gwirionedd.
>> Gadewch i ni wneud un arall yma.
Gadewch i mi fynd yn ei flaen, ac mewn un arall ffeil byddwn yn galw buggy1.c hwn.
Ac yn y ffeil hon rwy'n mynd i deliberately--
ond esgus nad wyf yn ei wneud deall pa camgymeriad Rydw i wedi gwneud.
>> Rydw i'n mynd i fynd yn ei flaen ac yn gwneud this-- #include, ers i mi i wedi
dysgu fy ngwers o eiliad yn ôl.
Int prif (ddi-rym), fel o'r blaen.
Ac yna i mewn yma dwi'n mynd i wneud llinyn s - get_string.
A galw i gof o dro diwethaf fodd hon, hey, cyfrifiaduron,
rhoi newidyn mi, ffoniwch mae'n s, a gwneud y math hwnnw newidyn llinyn
felly rwy'n gallu storio un neu fwy o eiriau ynddo.
>> Ac yna ar y dde ochr y hafalnod
yn get_string, sydd yn swyddogaeth yn y Llyfrgell CS50
sy'n gwneud yn union hynny.
Mae'n cael swyddogaeth ac yna dwylo mae'n o'r dde i'r chwith.
Felly, nid yw hyn hafalnod yn golygu "Hafal" fel y gallem feddwl mewn mathemateg.
Mae'n golygu aseiniad o'r dde i'r chwith.
Felly, mae hyn yn golygu, yn cymryd y llinyn o y defnyddiwr ac yn ei storio y tu mewn o s.
>> Nawr, gadewch i ddefnyddio.
Gadewch i mi fynd yn ei flaen yn awr ac fel ail llinell, gadewch i mi fynd yn ei flaen ac yn dweud "helo" -
Nid yw "byd," ond "helo,% s-- sef ein dalfan, coma s,
sef ein amrywiol, ac yna hanner colon.
Felly os nad oeddwn yn sgriw i fyny gormod yma, mae hyn yn edrych fel cod cywir.
>> Ac mae fy greddfau awr yw llunio iddo.
Yr enw ar y ffeil yn buggy1.c.
Felly, yr wyf i'n mynd i wneud gwneud buggy1, Enter.
Ac asio-it, os nad oes hyd yn oed mwy o wallau nag o'r blaen.
Yr wyf yn golygu, mae mwy negeseuon gwall byddai'n
Ymddengys na llinellau gwirioneddol yn y rhaglen hon.
>> Ond mae'r prydau parod yma yw, hyd yn oed os ydych yn llethu
gyda dau neu dri neu pedwar mwy o negeseuon gwall,
canolbwyntio bob amser ar yr union cyntaf o negeseuon hynny.
O edrych ar y mwyaf top-un, sgrolio yn ôl i fyny fel y bydd angen.
Felly dyma yr wyf yn teipio gwneud buggy1.
Dyma bod allbwn chlang yn ôl y disgwyl.
>> A dyma y gwall coch cyntaf.
Defnyddio dynodwr heb ei ddatgan llinyn, oedd yr wyf yn golygu safonol mewn?
Felly, yn safonol yw mewn gwirionedd yn rhywbeth arall.
Mae'n cyfeirio at y defnyddiwr bysellfwrdd, yn y bôn.
>> Ond nid dyna beth oeddwn yn ei olygu.
Oeddwn yn ei olygu llinyn, ac yr wyf yn golygu get_string.
Felly beth yw hi i mi anghofio i wneud y tro hwn?
Beth sydd ar goll y tro hwn?
Mae gen i fy #include, felly yr wyf yn cael mynediad at printf.
>> Ond beth ddylwn i ei oes rhaid mynediad i ddim ond eto?
Wel, yn union fel y tro diwethaf, Mae angen i mi ddweud wrth y compiler
Chlang pa swyddogaethau hyn yn cael eu.
Nid Get_string yn dod gyda C. Ac yn arbennig, mae'n
nid yw'n dod yn y header ffeil,.
Mae'n lle hynny yn dod i mewn rhywbeth ysgrifennodd y staff,
sy'n ffeil gwahanol enwi ond enw addas.
>> Felly syml drwy ychwanegu fod un llinell o adalw code-- o dro diwethaf
pan chlang yn rhedeg, mae'n mynd i edrych ar fy cod top i'r gwaelod,
o'r chwith i'r dde.
Mae'n mynd i hysbysiad, oh, rydych am.
Gadewch i mi fynd a dod o hyd hynny, lle bynnag y mae ar y gweinydd,
adysgrifia a bastio iddo, yn ei hanfod, i ben eich ffeil eich hun
fel eu bod yn y fan hon yn y stori, llinell 1, gweddill y rhaglen
Gall, yn wir, yn defnyddio unrhyw un o'r swyddogaethau ynddo, yn eu plith get_string.
Felly, yr wyf i'n mynd i anwybyddu gweddill gwallau hynny,
oherwydd fy mod, yn wir, yn amau ​​mai dim ond yr un cyntaf mewn gwirionedd yn bwysig.
Ac yr wyf i'n mynd i fynd yn ei flaen ac ailgynnal, ar ôl arbed fy ffeil yn gwneud buggy1.
Ac voila, yr oedd y gwaith.
Ac os wyf yn gwneud ./buggy1 a deipio i mewn, i enghraifft, Zamyla, yr wyf yn awr yn cael helo,
Zamyla, yn hytrach na helo, byd.
>> Iawn.
Felly mae'r siopau cludfwyd yma wedyn yn mynd i, un, ceisiwch i gywain cymaint ag y gallwch
o'r negeseuon gwall ei ben ei hun, yn edrych ar rai o'r geiriau adnabyddadwy.
Gwahardd hynny, defnyddiwch help50 fesul y broblem a osodwyd fanyleb.
Ond gwahardd hynny, hefyd, bob amser yn edrych ar y gwall uchaf yn unig, o leiaf
i ddechrau, i weld pa wybodaeth gallai cynnyrch mewn gwirionedd.
Ond mae'n troi allan yno yn hyd yn oed mwy ymarferoldeb a adeiladwyd
i mewn i'r llyfrgell CS50 i helpu rydych yn gynnar yn y semester
ac yn gynnar yn rhaglennu chyfrif i maes beth sy'n mynd o'i le.
Felly gadewch i ni wneud esiampl arall yma.
Rydw i'n mynd i alw buggy2 hwn, sydd, unwaith eto, yn mynd i fod yn ddiffygiol allan
y porth, drwy ddylunio.
>> Ac yr wyf i'n mynd i fynd yn ei flaen a gwneud #include.
Ac yna dwi'n mynd i wneud int prif (ddi-rym).
Ac yna dwi'n mynd i wneud am ddolen.
Ar gyfer (int i _ 0.
ff yn llai na neu'n hafal i 10.
ff ++, ac yna yn braces cyrliog, dwi'n mynd i argraffu dim ond symbol hashtag yma
ac yn gymeriad llinell newydd.
>> Felly fy bwriad gyda hyn rhaglen yn eithaf syml,
i ailadrodd 10 gwaith ac ar bob iteriad
o'r ddolen bob tro drwy'r cylch,
argraffu hashtag, yn hashtag, mae hashtag.
Un i bob llinell oherwydd fy mod yn yn cael y llinell newydd yno.
A dwyn i gof bod y ar gyfer dolen, fesul week-- diwethaf
a byddwch yn cael mwy o gyfarwydd â'r gystrawen
drwy ei ddefnyddio ag arferion cyn long-- mae hyn yn rhoi i mi
newidyn enw i ac yn gosod i 0.
>> Mae hyn yn cynnyddu ff ar pob iteriad erbyn 1.
Felly, fi yn mynd at 1 i 2 i 3.
Ac yna y cyflwr hwn yn y canol rhwng y hanner colon
yn cael eu gwirio ar bob iteriad i wneud yn siŵr ein bod yn dal i fod o fewn yr ystod.
Felly, yr wyf yn awyddus i ailadrodd 10 gwaith, felly rwy'n rhaid i reddfol fath o iawn yn unig
rhoi 10 fel fy uchaf rhwymo yno.
>> Ac eto, pan fyddaf yn rhedeg hyn, ar ôl llunio gyda gwneud buggy2--
ac mae'n llunio OK.
Felly, nid oes gennyf cystrawen gwall y tro hwn.
Gadewch i mi fynd yn ei flaen yn awr a rhedeg buggy2, Enter.
Ac yn awr sgrolio i fyny.
A gadewch i mi gynyddu maint y ffenestr.
>> Yr wyf yn ymddangos i gael 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11.
Felly mae 11 o hashtags, er bod Rwyf yn amlwg yn rhoi 10 tu mewn dolen hwn.
Yn awr, efallai y bydd rhai ohonoch yn gweld ar unwaith beth y gwall yw oherwydd, yn wir, mae hyn yn
Nid yw gwall galed iawn i wneud.
Ond mae'n gyffredin iawn gwneud yn gynnar iawn ar.
>> Yr hyn yr wyf am dynnu sylw, fodd bynnag, yw, sut y gallai Rwy'n ffigur hwn allan?
Wel, mae'n ymddangos fod daw'r Llyfrgell CS50
nid yn unig gyda get_string a get_int a get_float a swyddogaethau eraill.
Mae hefyd yn dod gyda swyddogaeth arbennig Gelwir eprintf, neu, gwall printf.
Ac mae'n bodoli yn gyfan gwbl i wneud ei fod yn ychydig yn haws i chi
pan debugging eich cod i ychydig argraffu neges gwall ar y sgrîn
ac yn gwybod o ble y daeth.
>> Felly, er enghraifft, un peth wyf yn gallai wneud yma gyda swyddogaeth hon yn this--
eprintf, ac yna dwi'n mynd i fynd yn ei flaen ac yn dweud fi yn awr% i, slaes, n.
Ac yr wyf i'n mynd i plwg yn werth i.
A hyd top, gan fod hyn yn y Llyfrgell CS50,
Rydw i'n mynd i fynd yn ei flaen ac maent yn cynnwys
felly yr wyf yn cael mynediad at y swyddogaeth hon.
Ond gadewch i ni ystyried pa linell 9 i fod i fod yn ei wneud.
Rydw i'n mynd i ddileu'r hyn yn y pen draw.
Mae hyn wedi ddim i'w wneud gyda fy nod trosfwaol.
Ond eprintf, gwall printf, yn unig a olygir i roi rhywfaint o wybodaeth ddiagnostig mi.
Pan fyddaf yn rhedeg fy rhaglen, yr wyf am gweld hyn ar y sgrin dros dro
yn ogystal dim ond er mwyn deall beth sy'n Digwydd.
>> Ac, yn wir, ar bob un ailadrodd yma o linell 9
Rwyf am weld, beth yw gwerth i?
Beth yw gwerth i?
A, gobeithio, yr wyf yn unig y dylai gweld bod neges, hefyd, 10 gwaith.
>> Felly, gadewch i mi fynd yn ei flaen ac ail-grynhoi fy rhaglen,
fel y rhaid i mi wneud unrhyw bryd Rwy'n gwneud newid. ./buggy2.
Ac yn now-- OK.
Mae llawer mwy yn mynd ymlaen.
Felly gadewch i mi sgrolio i fyny mewn ffenestr hyd yn oed yn fwy.
>> A byddwch yn gweld bod pob un o'r hashtags yn dal i argraffu.
Ond ym rhwng pob un ohonynt yn awr mae hyn allbwn diagnostig fformatio fel a ganlyn.
Mae'r enw fy rhaglen yma yn buggy2.
Mae enw'r ffeil yn buggy2.c.
Y rhif llinell y mae hon gael ei hargraffu yn llinell 9.
Ac yna ar y dde o'r dyna'r neges gwall fy mod i'n disgwyl.
>> A beth sy'n neis am hyn yw bod Nid yn awr mae'n rhaid i mi o reidrwydd yn cyfrif
yn fy mhen beth yw fy rhaglen yn ei wneud.
Gallaf weld bod ar y iteriad cyntaf i yw 0,
Yna 1, yna 2, yna 3, yna 4, yna 5, yna 6, yna 7, yna 8, yna 9, yna
10.
Felly arhoswch funud.
Beth sy'n mynd ymlaen fan hyn?
Rwy'n dal i ymddangos i fod yn cyfrif yn ôl y bwriad hyd at 10.
>> Ond ble wnes i ddechrau?
0, 1, 2, 3, 4, 5, 6, 7, 8, 9 10.
Felly 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10-- y bys 11eg
yn arwydd o'r broblem.
Rwyf yn ymddangos i wedi cyfrif anghywir yn fy ddolen.
Yn hytrach na mynd 10 iteriadau, Rwy'n dechrau ar 0,
Im 'yn dod i ben am a thrwy 10.
Ond oherwydd, fel cyfrifiadur, Dwi'n dechrau cyfrif ar 0,
dylwn i fod yn gyfrif i fyny i, ond nid trwy, 10.
>> Ac felly y atgyweiria, yr wyf yn y pen draw gwireddu yma, yn un o ddau beth.
Gallwn yn syml iawn dweud yn cyfrif hyd at lai na 10.
Felly 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, sef, yn wir, yn gywir,
hyd yn oed er ei fod yn swnio'n braidd yn anghywir.
Neu gallwn i wneud llai na neu'n hafal i 9, cyhyd ag y byddaf yn dechrau ar 0.
Neu os ydych ddim wir yn hoffi hynny, byddwch yn yn gallu cyfrif i fyny trwy 10 ond yn dechrau am 1.
Ond unwaith eto, mae hyn yn unig nid yw hynny'n gyffredin.
Yn programming-- er nid cymaint yn Scratch--
ond mewn rhaglenni mewn C ac ieithoedd eraill,
fel JavaScript a Python ac eraill, mae'n
jyst gyffredin iawn i ein trafodaeth ar deuaidd
i dim ond dechrau cyfrif yn y nifer isaf gallwch, sef 0.
Iawn.
Felly dyna eprintf.
Ac eto, yn awr fy mod i wedi cyfrifedig allan fy broblem, ac yr wyf i'n mynd i fynd yn ôl i 0
drwy llai na 10, dwi'n mynd i fynd i mewn a dileu eprintf.
>> ni ddylai fod yn yno pan fyddaf yn llong fy cod neu gyflwyno fy cod
neu ddangos i unrhyw un arall.
Mae wedi wirioneddol yn unig yn golygu i gael ei ddefnyddio dros dro.
Ond yn awr yr wyf i wedi sefydlog hyn broblem arbennig yn ogystal.
>> Wel, gadewch i ni wneud un enghraifft mwy yma fy mod i'n mynd i chwip i fyny fel a ganlyn.
Rydw i'n mynd i fynd yn ei flaen a #include. $ 50
Ac yr wyf i'n mynd i fynd yn ei flaen a #include.
>> Ac yr wyf i'n mynd i achub y ffeil fel buggy3.c.
Ac yr wyf i'n mynd i fynd yn ei flaen a datgan int prif (ddi-rym).
Ac yna y tu mewn o yno Rydw i'n mynd i wneud int i _ -
Rwyf am i weithredu rhaglen gyda get_negative_int.
Nid yw hon yn swyddogaeth sy'n bodoli eto.
Felly, rydym yn mynd i weithredu mewn dim ond hyn o bryd.
Ond rydym yn mynd i weld pam mae'n bygi yn pasio cyntaf.
Ac unwaith y byddaf wedi gotten mae int gan y defnyddiwr,
Im 'jyst yn mynd i argraffu% ff yn negyddol cyfanrif, slaes, n, coma, i.
Mewn geiriau eraill, yr wyf yn gyd am i'r rhaglen hon i wneud
yn cael int negyddol o y defnyddiwr ac yna argraffu
bod y fath ac o'r fath yn int negyddol.
>> Nawr mae angen i mi roi'r swyddogaeth hon.
Felly nes ymlaen yn fy ffeil, dw i'n mynd i fynd ymlaen a datgan swyddogaeth o'r enw
get_negative_int (gwagle) - ac fe wnawn ni yn dod yn ôl at yr hyn y llinell olygu eto
mewn int moment-- n; do-- do y printf canlynol-- n yw :.
Ac yna dwi'n mynd i wneud n - get_int, ac wneud hyn tra'n n yn fwy na 0.
Ac yna dychwelyd n ;.
>> Felly mae llawer yn digwydd yn hyn, ond nid oes yr un nad wnaethom
edrych ar yr wythnos diwethaf, o leiaf yn fyr.
Felly, ar llinell 10 yma rwyf wedi datgan swyddogaeth a elwir yn get_negative_int,
ac rydw i wedi rhoi (yn ddi-rym), yn cromfachau, y rheswm, mae hyn yn
nid yw'n cymryd mewnbwn.
Dydw i ddim yn pasio unrhyw beth i swyddogaeth hon.
Im 'jyst yn cael rhywbeth yn ôl oddi wrtho.
>> A hyn yr wyf i'n gobeithio fynd yn ôl yn gyfanrif.
Nid oes unrhyw fath o ddata yn C a elwir negative_int.
'I' jyst int, felly mae'n mynd i fod arnom i wneud yn siŵr
bod y gwerth sy'n mewn gwirionedd Nid yn unig ddychwelwyd yn cael ei yn int
ond hefyd yn negyddol.
>> Ar llinell 12 Rydw i'n datgan newidyn Gelwir n a'i gwneud yn o int fath.
Ac yna, yn unol 13 trwy 18 Rwy'n gwneud rhywbeth tra bod rhywbeth yn wir.
Rydw i'n mynd yn ei flaen ac argraffu n yw, colon, ac yna yn lle,
fel prydlon ar gyfer y defnyddiwr.
>> Yna, rwy'n galw get_int a storio ei hyn a elwir yn werth dychwelyd
yn y newidyn n.
Ond dw i'n mynd i barhau i wneud tra bod y n yn fwy na 0.
Mewn geiriau eraill, os yw'r defnyddiwr yn rhoi i mi yn int ac mae'r nifer yn fwy na 0,
ergo, cadarnhaol, dw i'n mynd i jyst cadw reprompting y defnyddiwr,
cadw reprompting, drwy eu gorfodi i cydweithredu ac yn rhoi int negyddol mi.
>> Ac unwaith n mewn gwirionedd negative-- Mae'n debyg y defnyddiwr yn olaf mathau -50,
Yna, nid yw hyn dolen tra yn wir oherwydd -50 ddim yn fwy na 0.
Felly, rydym yn torri allan o hynny dolen yn rhesymegol ac yn dychwelyd n.
>> Ond mae un arall beth mae'n rhaid i mi ei wneud.
A allaf wneud hyn yn syml trwy gopïo a gludo
un llinell o god ar frig y ffeil.
angen i mi ddysgu chlang, neu addewid i chlang,
yn benodol y byddaf, yn wir, ewch a gweithredu
hwn get_negative_int swyddogaeth.
efallai y bydd yn fod yn is yn y ffeil.
Unwaith eto, dwyn i gof bod chlang darllen pethau top i'r gwaelod,
o'r chwith i'r dde, felly ni allwch ffoniwch swyddogaeth os chlang
nid yw'n gwybod ei fod yn mynd i fodoli.
>> Yn awr, yn anffodus, mae'r rhaglen hon, fel y gallai rhai ohonoch wedi sylwi,
eisoes yn bygi.
Gadewch i mi fynd yn ei flaen ac yn gwneud buggy3.
Mae'n llunio, felly mae fy broblem nid yn awr yw gwall cystrawen, fel gwall testunol,
mewn gwirionedd mae'n mynd i fod yn rhesymegol gwall fy mod i wedi fwriadol
wnaed fel cyfle i gamu trwy'r hyn sy'n digwydd.
>> Rydw i'n mynd i fynd yn ei flaen yn awr ac yn rhedeg buggy3.
Ac yr wyf i'n mynd i fynd ymlaen ac nid yn cydweithredu.
Rydw i'n mynd i roi rhif 1.
Nid oedd yn ei hoffi, felly mae wedi fy ysgogi eto.
>> Beth am 2?
3?
50?
Dim un o'r rheini yn gweithio.
Beth am -50?
Ac mae'r rhaglen yn ymddangos i weithio.
>> Gadewch i mi roi cynnig arni unwaith eto.
Gadewch i mi roi cynnig -1, ymddangos i weithio.
Gadewch i mi roi cynnig -2, ymddangos i weithio.
Gadewch i mi roi cynnig ar 0.
Huh, dyna anghywir.
Nawr, rydym yn cael ychydig yn bedantig yma.
Ond mae'n, yn wir, yn wir bod 0 oes na yn gadarnhaol nac yn negyddol.
Ac felly y ffaith bod fy rhaglen yn yn dweud bod 0 yn gyfanrif negatif,
nid yw hynny'n dechnegol gywir.
>> Yn awr, pam y mae'n gwneud hyn?
Wel, gallai fod yn amlwg.
Ac, yn wir, mae'r rhaglen yn i fod i fod yn weddol syml
felly gennym rywbeth i archwilio.
>> Ond gadewch i ni gyflwyno trydydd debugging dechneg a elwir yn yma debug50.
Felly, mae hyn yn rhaglen ein bod ni newydd ei greu
blwyddyn gelwir hyn debug50 a fydd yn caniatáu i chi
i ddefnyddio'r hyn a elwir yn adeiledig yn debugger graffigol yn IDE CS50.
Ac mae dadnamydd yn unig yw rhaglen sy'n Yn gyffredinol, yn gadael i chi redeg eich rhaglen
ond gam wrth gam wrth gam, llinell drwy linell wrth linell, gan oedi, procio
o gwmpas, gan edrych ar newidynnau fel bod Nid yw'r rhaglen yn unig chwythu heibio i chi
ac yn gyflym argraffu rhywbeth neu beidio argraffu rhywbeth.
Mae'n rhoi cyfle i chi, yn cyflymder dynol, i ryngweithio ag ef.
>> Ac i wneud hyn, byddwch yn syml, yn gwneud y canlynol.
Ar ôl llunio eich cod, yr wyf yn gwneud yn barod, buggy3,
byddwch yn mynd yn ei flaen ac yn rhedeg debug50 ./buggy.
Felly yn debyg help50 ganddo ydych yn rhedeg help50 ac yna bydd y gorchymyn,
debug50 Mae gan y byddwch yn rhedeg debug50 a Yna enw'r gorchymyn.
>> Nawr gwylio beth sy'n digwydd ar fy sgrin, ar yr ochr dde yn arbennig.
Pan fyddaf yn taro Run, pob un o'r sydyn panel hwn dde
yn agor i fyny ar y sgrin.
Ac mae llawer yn digwydd ar ar yr olwg gyntaf.
Ond nid oes yn rhy llawer i boeni am eto.
>> Mae hyn yn dangos i mi bopeth sy'n mynd ymlaen y tu mewn fy rhaglen
ar hyn o bryd a thrwy gyfrwng y rhain botymau i fyny top wedyn
caniatáu i mi gamu drwy fy cod cam yn y pen draw wrth gam wrth gam.
Ond nid dim ond eto.
Sylwi ar yr hyn sy'n digwydd.
Yn fy ffenestr terfynell Im 'yn cael eu cymell i n.
Ac yr wyf i'n mynd i fynd yn ei flaen a gydweithredu y tro hwn a deipio i mewn -1.
Ac er ychydig gryptig, -1 yn cyfanrif negyddol, yn ôl y disgwyl.
>> Ac yna plentyn exited gyda statws 0 GDBserver cyffrous.
GDB, GNU Bar offer, yw'r enw o'r meddalwedd sylfaenol
sy'n gweithredu'r debugger hwn.
Ond mae hyn i gyd ei olygu mewn gwirionedd, y dadnamydd mynd i ffwrdd oherwydd bod fy rhaglen rhoi'r gorau iddi
ac roedd popeth yn dda.
Os ydw i eisiau i wir dadfygio fy rhaglen, Mae'n rhaid i mi ddweud wrth debug50 preemptively,
ble ydw i am ddechrau camu trwy fy cod?
>> Ac efallai y ffordd symlaf i wneud hynny fel a ganlyn.
Os byddaf yn hofran dros y gwter fy golygydd yma,
felly mewn gwirionedd dim ond yn y bar ochr yma, i'r chwith y rhif llinell,
rhybudd, os Fi jyst chlecia unwaith, yr wyf yn rhoi ychydig o dot coch.
Ac mai ychydig dot coch, fel arwydd stop, golygu, hey,
debug50, oedi gweithredu fy cod iawn yno pan fyddaf yn rhedeg y rhaglen hon.
>> Felly gadewch i ni wneud hynny.
Gadewch i mi fynd yn ei flaen ac yn rhedeg fy rhaglen eto gyda debug50 ./buggy3, Enter.
Ac yn awr, hysbysiad, rhywbeth gwahanol wedi digwydd.
Dydw i ddim yn cael eu hysgogi eto yn fy ffenestr terfynell
ar gyfer unrhyw beth, gan nad wyf wedi gotten yno eto yn fy rhaglen.
Sylwch fod ar linell 8 sydd bellach yn cael ei amlygu,
ac mae ychydig o saeth yn ddywediad chwith, rydych yn seibio yma.
Mae'r llinell hon o god, llinell 8, nid yw wedi cyflawni eto.
>> A beth sy'n chwilfrydig, os wyf yn edrych dros yma ar yr ochr dde,
sylwi bod fi yn lleol newidiol, lleol yn yr ystyr
ei fod y tu mewn i'r swyddogaeth bresennol.
A'i werth, yn ôl pob golwg yn ddiofyn, a math o gyfleus, yw 0.
Ond doeddwn i ddim yn teipio 0.
Mae hynny'n unig fydd yn digwydd i fod yn ei gwerth diofyn ar hyn o bryd.
>> Felly, gadewch i mi fynd yn ei flaen ac yn gwneud hyn yn awr.
Gadewch i mi fynd yn ei flaen ac ar top dde yma, rwy'n
mynd i fynd yn ei flaen a cliciwch yma icon cyntaf sy'n
yn golygu cam dros sy'n golygu nad oes sgip ond cam dros y llinell hon o god,
gweithredu ar hyd y ffordd.
>> Ac yn awr, yn sylwi, fy jyst brydlon wedi newid.
Pam hynny?
Rwyf wedi dweud wrth debug50, rhedeg y llinell hon o god.
Beth mae llinell hon o god yn ei wneud?
Ysgogi i mi am int.
IAWN.
Gadewch i mi gydweithio.
Gadewch i mi fynd yn ei flaen yn awr a math -1, Enter.
Ac yn awr sylwi ar beth sydd wedi newid.
Ar yr ochr dde, fy newidyn lleol i
Dangosir bod -1 nawr.
Ac mae'n dal i fod o int fath.
>> A rhybudd, hefyd, fy hyn a elwir yn ffoniwch stac, lle wnes i oedi?
Byddwn yn siarad mwy am hwn yn y dyfodol.
Ond mae'r pentwr alwad yn unig yn cyfeirio at yr hyn swyddogaethau ar hyn o bryd yn symud.
Ar hyn o bryd dim ond prif.
Ac yn hyn o bryd yr unig lleol newidyn yn fi gyda gwerth o 1.
>> A phan wyf o'r diwedd cam dros y llinell hon yma, gyda'r un eicon ar dde uchaf,
-1 Yw cyfanrif negyddol.
Nawr mae'n oedi dros y brês cyrliog.
Gadewch i ni gadael iddo wneud ei beth.
Yr wyf yn camu dros y llinell, a voila.
>> Felly nid bob un sy'n ofnadwy goleuo eto,
ond oedd yn gadael i mi oedi a meddwl yn rhesymegol drwy
beth mae'r rhaglen hon yn ei wneud.
Ond nid oedd hynny'n wir wallus.
Gadewch i ni wneud hyn eto fel a ganlyn.
>> Rydw i'n mynd i adael y torbwynt ar-lein 8 gyda'r dot coch.
Rydw i'n mynd i ailgynnal debug50.
Mae'n seibio yma yn awtomatig.
Ond y tro hwn, yn hytrach na camu dros y llinell hon,
gadewch i mi mewn gwirionedd yn mynd y tu mewn o get_negative_int a chyfrif i maes,
pam ei fod yn derbyn 0 fel ateb ddilys?
>> Felly, yn lle glicio Cam Over.
Rydw i'n mynd i fynd yn ei flaen a chliciwch Cam Into.
Ac yn sylwi bod y llinell 8 dyna Amlygodd awr yn awr yn sydyn
yn dod yn llinell 17.
>> Nawr, nid yw'n bod y dadnamydd wedi hepgor llinellau 14 a 15 ac 16.
'I' jyst does dim byd i ddangos i chi yno.
Mae'r rhai yn cael eu dim ond datgan newidynnau, ac yna mae 'y gair Gwneud
ac yna brês cyrliog agored.
Yr unig linell swyddogaethol sy'n llawn sudd wir yn yr un yma yma, 17.
A dyna lle rydym wedi seibio yn awtomatig.
>> Felly printf ( "n.is:") ;, felly Nid yw hynny wedi digwydd eto.
Felly gadewch i ni fynd yn ei flaen a chliciwch Camu Dros.
Nawr fy brydlon, yn wir, newid i ( "n yw:").
Nawr get_int, dydw i ddim yn mynd trafferthu camu i mewn i,
oherwydd dyna swyddogaeth oedd a wnaed gan CS50 yn y Llyfrgell.
Mae'n debyg gywir.
>> Felly, yr wyf i'n mynd i fynd yn ei flaen a fath o gydweithredu drwy roi ei
yn int, ond nid yw int negyddol.
Felly, gadewch i mi fynd yn ei flaen a tharo 0.
Ac yn awr yr hyn sy'n digwydd yma pan fyddaf yn mynd i lawr i linell 21?
Dydw i ddim wedi Ailadroddodd eto.
Nid wyf yn ymddangos i fod yn sownd yn y ddolen.
Mewn geiriau eraill, mae hyn yn melyn Nid yw bar yn dal i fynd o gwmpas,
ac o amgylch, ac o amgylch.
>> Yn awr, pam hynny?
Wel, n, yr hyn sy'n N hyn o bryd?
Gallaf edrych ar y lleol newidynnau mewn dadfygiwr.
n yw 0.
Mae pob hawl, beth oedd fy nghyflwr?
>> 20-- llinell 20 yn, wel, 0 yn fwy na 0.
Nid yw hynny'n wir.
0 Nid yw fwy na 0.
Ac felly yr wyf yn dorrodd allan o hyn.
>> Ac felly dyna pam ar-lein 21, os wyf mewn gwirionedd yn parhau,
Rydw i'n mynd i ddychwelyd 0, hyd yn oed er y dylai yr wyf wedi gwrthod 0
gan nad oedd yn negyddol mewn gwirionedd.
Felly, yn awr, nid wyf yn ei wneud mewn gwirionedd hyd yn oed gofalu am y dadfygiwr.
Got, nid oes angen iddo i mi gwybod beth arall sy'n digwydd.
>> Felly, yr wyf i'n mynd i fynd yn ei flaen a cliciwch y botwm Chwarae,
a gadael gorffen hyn i fyny.
Yn awr, rwyf wedi sylweddoli fod fy bug yn ôl pob golwg ar linell 20.
Dyna fy gwall rhesymegol.
>> Ac felly beth ydw i eisiau i wneud i newid hyn?
Os yw'r broblem yw nad wyf yn dal 0, 'i' jyst yn wall rhesymegol.
A gallaf ddweud wrth n yn fwy na neu'n hafal i 0,
cadw gan annog y defnyddiwr eto ac eto.
>> Felly, unwaith eto, camgymeriad syml, efallai hyd yn oed yn amlwg pan welodd chi fy
ysgrifennu dim ond ychydig funudau yn ôl.
Ond mae'r cludfwyd yma yw bod â dadfygio 50,
a gyda debugging meddalwedd yn fwy cyffredinol,
mae gennych bŵer newydd hwn dod o hyd i cerdded drwy eich cod eich hun, edrychwch
trwy gyfrwng y panel ar y dde beth eich gwerthoedd newidynnau yn cael eu.
Felly nid ydych yn ei wneud o reidrwydd rhaid i ni ddefnyddio rhywbeth
fel chi eprintf i argraffu gwerthoedd hynny.
Gallwch mewn gwirionedd yn eu gweld weledol ar y sgrin.
>> Yn awr, y tu hwnt i hyn, mae'n werth nodi fod yna techneg arall sy'n
mewn gwirionedd super cyffredin.
Ac efallai y byddwch yn meddwl tybed pam mae hyn ychydig guy yma wedi bod yn eistedd ar y llwyfan.
Felly mae yna dechneg hon, yn gyffredinol a elwir yn rwber debugging hwyaden,
sydd mewn gwirionedd yn unig yw dyst i'r ffaith
hynny rhaglenwyr yn aml pan yn ysgrifennu cod,
dydyn nhw ddim o reidrwydd yn cydweithio ag eraill,
neu weithio mewn amgylchedd a rennir.
>> Maent yn fath o gartref.
Efallai ei fod yn hwyr yn y nos.
Eu bod yn ceisio ffigwr rhai bug yn eu cod.
Ac maen nhw'n jyst heb wybod ei fod.
>> A does dim roommate.
Nid oes unrhyw TF.
Nid oes unrhyw CA gwmpas.
Mae pob maent yn ei gael ar eu silff yw hyn ducky rwber bach.
>> Ac felly debugging rwber hwyaden yn unig yw gwahoddiad hwn
i feddwl am rywbeth mor wirion gan fod hyn fel creadur go iawn,
ac mewn gwirionedd yn cerdded drwy eich cod lafar i'r gwrthrych difywyd.
Felly, er enghraifft, os mae hyn yn fy enghraifft Yma--
a dwyn i gof bod yn gynharach y broblem oedd hyn,
os wyf yn dileu y llinell gyntaf o god, ac yr wyf yn mynd yn ei flaen ac yn gwneud bygi 0 unwaith eto,
yn cofio fy mod wedi hyn negeseuon gwall yma.
Felly, y syniad yma, er fy mod yn hurt yn teimlo ar hyn o bryd yn gwneud hyn yn gyhoeddus,
yw bod gwall.
>> Iawn, felly mae fy broblem yw fy mod i wedi ymhlyg datgan swyddogaeth llyfrgell.
A dyna swyddogaeth llyfrgell yn printf.
Declare-- OK, yn datgan fy atgoffa o brototeipiau.
>> Mae hynny'n golygu bod angen i mewn gwirionedd i mi dweud wrth y compiler ymlaen llaw beth
y swyddogaeth yn edrych fel.
Arhoswch funud.
Doeddwn i ddim yn cael io.h. safonol
Diolch yn fawr iawn.
>> Felly, dim ond y broses hon o- chi Nid oes angen i mewn gwirionedd yn cael hwyaden.
Ond y syniad hwn o gerdded eich hun drwy eich cod eich hun
er mwyn i chi hyd yn oed yn clywed eich hun, er mwyn i chi
sylweddoli hepgoriadau yn eich pen eich hun sylwadau, yn gyffredinol y syniad.
>> Ac, efallai yn fwy rhesymegol, nid felly llawer gyda'r un ond mae'r mwy o ran
enghraifft, rydym yn unig oedd yn 3.c bygi, efallai y byddwch yn cerdded eich hun drwyddo
fel a ganlyn.
Felly iawn, rwber ducky, DDB, os mynnwch.
Yma, mae gennym yn fy mhrif swyddogaeth, Rwy'n galw cael int negyddol.
>> Ac yr wyf yn cael y gwerth dychwelyd.
Im 'yn storio ar yr ochr chwith ar-lein 8 mewn newidyn enw i.
OK, ond aros, sut y gwnaeth bod yn cael y gwerth hwnnw?
Gadewch i mi edrych ar y swyddogaeth yn unol 12.
>> Yn llinell 12, rydym wedi cael int negyddol.
Nid yw'n cymryd unrhyw mewnbynnau, yn dychwelyd yn int, OK.
Yr wyf yn datgan ar linell 14 yn n amrywiol.
Mae'n mynd i storio yn gyfanrif.
Dyna beth rwyf eisiau.
>> Felly wneud y canlynol tra n yw-- gadael mi dadwneud yr hyn y mae'r atgyweiria wneuthum eisoes.
Felly, er n yn fwy na 0, argraffu n yw, OK.
Ac yna ffoniwch cael ei storio int yn n.
Ac yna gwirio os n yn 0, n yn not-- yno y mae.
Felly, unwaith eto, nid ydych yn ei wneud Mae angen i'r hwyaden gwirioneddol.
Ond dim ond cerdded eich hun drwy eich cod fel ymarfer deallusol
Byddwch yn aml yn eich helpu sylweddoli beth sy'n digwydd,
yn hytrach na dim ond gwneud rhywbeth fel hyn, yn syllu ar y sgrin,
ac nad yw siarad eich hun drwy iddo, sydd nid yn onest yn
bron fel techneg effeithiol.
Felly dyna ni, mae nifer o wahanol dechnegau
am gwirionedd yn debugging eich cod a dod o hyd i fai, pob un ohonynt
Dylai fod yn arfau yn eich pecyn cymorth fel nad ydych yn hwyr yn y nos,
yn enwedig, ydych chi yn y fwyta neuaddau, neu ar oriau swyddfa,
taro eich pen yn erbyn y wal, yn ceisio datrys rhyw broblem.
Sylweddoli bod offer meddalwedd.
Mae offer hwyaid rwber.
Ac mae 'na staff cyfan o cefnogi aros i roi help llaw.
>> Felly nawr, gair ar y broblem setiau, ac ar yr hyn rydym ni'n gobeithio i chi
mynd allan ohonynt, a sut byddwn yn mynd ati werthuso.
Fesul maes llafur y cwrs, setiau problem CS50 yn
yn cael eu gwerthuso ar pedair echel cynradd, felly i speak-- cwmpas, cywirdeb, dylunio,
ac arddull.
A chwmpas yn unig yn cyfeirio at faint y darn ydych chi wedi brathu i ffwrdd?
Faint o broblem ydych chi wedi ceisio?
Pa lefel o ymdrech ydych chi wedi amlygu?
>> Cywirdeb yw, gwneud y gwaith rhaglen fel mae'n fod i bob manyleb CS50
pan fyddwch yn rhoi rhai mewnbynnau neu rhai allbynnau yn dod yn ôl?
Dylunio yw'r mwyaf goddrychol ohonynt.
Ac mae'n un a fydd cymryd yr amser hiraf i ddysgu
ac am y cyfnod hiraf i addysgu, yn i'r graddau y mae'n boils i lawr i,
pa mor dda ysgrifenedig yn eich cod?
>> Mae'n un peth i ddim ond argraffu'r cywir allbynnau neu ddychwelyd gwerthoedd cywir.
Ond ydych chi'n gwneud hyn fel effeithlon â phosibl?
Ydych chi'n gwneud hyn rhaniad a gorchfygu, neu deuaidd
chwilio gan y byddwn yn fuan yn gweld bod y gwnaethom bythefnos yn ôl gyda'r llyfr ffôn?
A oes ffyrdd gwell o ddatrys y broblem nag yr ydych wedi yma ar hyn o bryd?
Dyna gyfle i ddylunio gwell.
>> Ac yna style-- sut 'n bert yw eich cod?
Byddwch yn sylwi bod Rwy'n eithaf benodol am tolcio fy cod,
a gwneud yn siwr fy newidynnau yn cael eu henwi yn rhesymol. n,
gyfnod byr, yn enw da ar gyfer rhif, fi am cyfanrif cyfrif,
s ar gyfer llinyn.
A gallwn gael mwy o amser arddull enwau amrywiol.
Style yn union pa mor dda mae eich cod edrych?
A pha mor ddarllenadwy ydyw?
>> A thros amser, beth yw eich CA a bydd TFS wneud yn y cwrs
yn rhoi i chi y math o adborth ansoddol
fel eich bod yn cael gwell ar wahanol agweddau hynny.
Ac o ran y ffordd yr ydym yn gwerthuso pob un o'r bwyeill hyn,
'i' fel arfer gydag ychydig iawn bwcedi er mwyn i chi, yn gyffredinol,
cael ymdeimlad o ba mor dda rydych yn ei wneud.
Ac, yn wir, os byddwch yn derbyn sgôr ar unrhyw un o'r rhai gywirdeb axes--, dylunio
ac arddull especially-- y rhif hwnnw yn gyffredinol yn rhwng 1 a 5.
Ac, yn llythrennol, os ydych yn cael 3 ar ddechrau'r semester,
mae hyn yn beth da iawn.
Mae'n golygu mae dal lle i wella,
y byddech yn gobeithio amdano mewn cymryd dosbarth am y tro cyntaf.
Mae gobeithio rhyw ychydig o nenfwd y mae gennych anelu at gyrraedd.
Ac felly mae cael 3 ar darnau cynharaf,
os nad yw rhai 2 a 4, yw, yn wir, yn beth da.
Mae'n dda o fewn amrediad, ymhell o fewn disgwyliadau.
>> Ac os yw eich meddwl yn rasio, aros munud, tri allan o bump.
Mae hynny'n wir yn 6 allan o 10.
Dyna 60%.
Fy Nuw, dyna F.
>> Nid yw'n.
Dyw hi ddim yn, mewn gwirionedd, hynny.
Yn hytrach, mae'n gyfle i wella yn ystod y semester.
Ac os ydych yn cael rhai Poors, mae'r rhain yn gyfle
i fanteisio ar oriau swyddfa, sicr adrannau ac adnoddau eraill.
>> Gorau yn gyfle, mewn gwirionedd, i fod yn falch o ba mor bell ydych chi wedi
dod yn ystod y semester.
Felly yn sylweddoli, os nad oes dim arall, tri yn dda.
Ac mae'n caniatáu lle i dyfu dros amser.
>> Ynghylch sut y bwyeill hynny bwysoli, yn realistig eich bod yn
mynd i treulio'r rhan fwyaf o'ch amser yn dod pethau i'w gwaith, heb sôn am yn gywir.
Ac felly cywirdeb yn tueddu i gael eu pwysoli fwyaf, fel gyda
y ffactor lluosol dri.
Dylunio hefyd yn bwysig, ond rhywbeth nad ydych yn ei wneud o reidrwydd
yn treulio pob un o'r oriau hynny ar ceisio cael pethau yn unig i weithio.
>> Ac felly mae'n bwysoli ychydig yn fwy ysgafn.
Ac yna arddull yn cael ei bwysoli y lleiaf.
Hyd yn oed er ddim llai 'i' bwysig yn sylfaenol,
'i' jyst, efallai, y peth hawsaf i'w wneud yn iawn,
dynwared yr enghreifftiau yr ydym yn wneud mewn darlith ac adran,
gyda phethau 'n glws hindentio, a dywedodd,
ac yn y blaen ymhlith yr hawsaf pethau i'w gwneud ac yn ei gael yn iawn.
Felly, fel y cyfryw, yn sylweddoli bod y rhai pwyntiau
sy'n gymharol hawdd i'w ddeall.
>> Ac yn awr gair ar this-- gonestrwydd academaidd.
Felly, fesul y cwrs maes llafur, byddwch yn gweld
bod y cwrs wedi eithaf ychydig o iaith o gwmpas hyn.
Ac mae'r cwrs yn cymryd y mater o gonestrwydd academaidd yn eithaf difrifol.
>> Mae gennym y gwahaniaeth, er gwell neu er gwaeth,
o fod wedi ei anfon bob blwyddyn yn fwy myfyrwyr ar gyfer camau disgyblu
na'r rhan fwyaf o unrhyw un arall gwrs, fy mod yn ymwybodol o.
Nid yw hyn o reidrwydd arwydd o'r ffaith
bod myfyrwyr CS, neu fyfyrwyr CS50, yn unrhyw llai gonest na'ch cyd-ddisgyblion.
Ond y gwirionedd sydd yn hyn byd, yn electronig, rydym yn unig
cael technolegol yn golygu o ganfod hyn.
>> Mae'n bwysig i ni am tegwch ar draws y dosbarth
ein bod yn gwneud canfod hyn, a chodi y mater pan ydym yn gweld pethau.
A dim ond i baentio llun, ac yn wir yn i helpu i rhywbeth fel sinc hwn i mewn,
mae'r rhain yn y nifer o fyfyrwyr dros y 10 mlynedd diwethaf
sydd wedi bod yn ymwneud mewn rhyw materion o'r fath o onestrwydd academaidd,
gyda rhai 32 o fyfyrwyr o syrthio 2015, a oedd
yw dweud ein bod yn cymryd y mater yn ddifrifol iawn.
Ac, yn y pen draw, y niferoedd hyn yn cyfansoddi, yn fwyaf diweddar, tua 3%, 4% neu hynny
y dosbarth.
>> Felly, ar gyfer y mwyafrif o fyfyrwyr super mae'n ymddangos bod y llinellau yn glir.
Ond peidiwch cadw hyn mewn meddwl, yn enwedig yn hwyr
yn y nos pan trafferth gyda rhywfaint o ateb i set problem,
bod mecanweithiau ar gyfer cael eich hun yn well
gefnogaeth nag gallech chi yn meddwl, hyd yn oed ar yr awr honno.
Sylweddoli bod pan fyddwn yn derbyn cyflwyniadau i fyfyrwyr, rydym yn croesi
cymharu pob cyflwyniad eleni yn erbyn pob cyflwyniad y llynedd,
yn erbyn pob cyflwyniad o 2007, ac ers hynny, gan edrych ar, yn ogystal,
cod storfeydd ar-lein, fforymau trafod, safleoedd swyddi.
Ac rydym yn sôn am hyn, mewn gwirionedd, pob er mwyn
o ddatgeliad llawn, os Gall rhywun arall yn ei chael yn ar-lein,
yn sicr, felly gallwn cwrs.
Ond, mewn gwirionedd, yr ysbryd y cwrs boils i lawr
cymal hwn yn y maes llafur.
Mae wir yn gyfiawn, yn rhesymol.
>> Ac os ydym yn cael i ymhelaethu ar hynny gyda dim ond ychydig yn fwy iaith,
sylweddoli mai hanfod pob gwaith yr ydych yn cyflwyno i'r cwrs hwn
Rhaid mai eich.
Ond o fewn hynny, yn sicr cyfleoedd, ac anogaeth,
a gwerth phedagogaidd wrth droi at others-- fy hun, mae'r TFS, mae'r MD,
yr Asesiadau Trafnidiaeth, ac eraill yn y dosbarth, am gymorth, gadewch i ffrindiau ei ben ei hun
a roommates sydd wedi astudio CS a rhaglennu o'r blaen.
Ac felly mae lwfans ar gyfer hynny.
Ac mae'r rheol gyffredinol yn this-- wrth ofyn am gymorth,
efallai y byddwch yn dangos eich cod i eraill, ond efallai na fyddwch yn gweld nhw.
Felly hyd yn oed os byddwch chi yn oriau swyddfa, neu yn y neuadd D, neu yn rhywle arall
yn gweithio ar rai set darn, gweithio ochr yn ochr ffrind, a oedd yn
yn hollol iawn, yn y ddiwedd y diwrnod gwaith
Dylai pen draw perthyn i bob ohonoch yn y drefn honno, ac nid
fod rhywfaint o ymdrech ar y cyd, heblaw am y prosiect terfynol lle
mae wedi caniatáu ac annog.
>> Sylweddoli bod os ydych yn trafferth gyda rhywbeth
a bod eich ffrind yn unig fydd yn digwydd i fod yn well ar hyn yna rydych,
neu well ar y broblem na chi, neu ychydig ymhellach ymlaen na chi,
mae'n hollol resymol i droi at eich ffrind a dweud, hey,
ydych chi'n ots edrych ar fy cod yma, fy helpu i weld beth yw fy mater?
A, gobeithio, yn y llog o werth addysgol
bod ffrind yn gwneud nid yn unig yn dweud, oh, yn gwneud hyn, ond yn hytrach,
beth ydych chi'n ei golli ar-lein 6, neu rywbeth fel 'na?
Ond nid yr ateb yw i'r ffrind nesaf i chi
i ddweud, oh, yn dda, yma, gadewch i mi dynnu hyn i fyny, ac yn dangos fy ateb i chi.
Felly dyna'r llinell.
Rydych yn dangos eich cod i eraill, ond efallai nad ydych
gweld nhw, yn amodol ar y llall cyfyngiadau yn maes llafur y cwrs.
>> Felly yn cadw mewn cof hwn hyn a elwir yn gymal difaru
yn y maes llafur y cwrs yn ogystal, os byddwch yn cyflawni rhywfaint o weithred sy'n
Nid yn rhesymol, ond yn dod ag ef i sylw'r penaethiaid y cwrs
o fewn 72 awr, mae'r cwrs Gall osod sancsiynau lleol sy'n
Gall gynnwys anfoddhaol neu methu radd ar gyfer y gwaith a gyflwynwyd.
Ond ni fydd y cwrs yn cyfeirio'r bwys ar gyfer camau disgyblu pellach,
ac eithrio mewn achosion o weithredoedd dro ar ôl tro.
Mewn geiriau eraill, os byddwch yn gwneud rhywfaint o dwp, yn enwedig yn hwyr y nos, penderfyniad
bod y bore wedyn neu ddau ddiwrnod yn ddiweddarach, byddwch yn deffro ac yn sylweddoli,
beth oedd wyf yn meddwl?
Rydych yn gwneud yn CS50 cael allfa ar gyfer gosod y broblem honno
a bod yn berchen i fyny ato, er mwyn i ni Bydd cwrdd â chi hanner ffordd ac yn ymdrin
ag ef mewn mater sydd yn y ddau addysgiadol a gwerthfawr i chi,
ond yn dal cosbol mewn rhyw ffordd.
Ac yn awr, i gymryd y ymyl oddi ar, mae hyn.
>> [VIDEO Playback]
>> [CHWARAE CERDDORIAETH]
>> [DIWEDD Playback]
DAVID J. Malan: pob hawl, yr ydym yn ôl.
Ac yn awr rydym yn edrych ar un o'r cyntaf o'n parthau byd go iawn
yn CS50, y grefft o cryptograffeg, y grefft o anfon a derbyn
negeseuon cudd, wedi'i amgryptio negeseuon os mynnwch,
na ellir ond eu dehongli'r os oes gennych rhywfaint cynhwysyn allweddol y mae'r anfonwr wedi
hefyd.
Felly, i gymell hwn byddwn yn cymryd yn edrych ar y peth hyn yma,
sy'n enghraifft o ffoniwch decoder gyfrinach bod
gellir eu defnyddio er mwyn chyfrif i maes beth neges gudd mewn gwirionedd.
Yn wir, yn ôl yn y diwrnod yn yr ysgol radd,
os ydych chi erioed anfon negeseuon cudd at rhyw ffrind neu ryw wasgfa yn y dosbarth,
efallai eich bod wedi meddwl ydych yn bod yn glyfar
gan ar eich darn o newid papur, fel, A i B, a B i C, a C i D,
ac yn y blaen.
Ond oeddech yn amgryptio mewn gwirionedd eich gwybodaeth, hyd yn oed
os oedd braidd yn ddibwys, nid oedd hynny anodd i'r athro i wireddu,
yn dda, os ydych yn unig yn newid B i A ac C i B,
chi mewn gwirionedd yn chyfrif i maes beth oedd y neges,
ond yr oeddech yn ciphering gwybodaeth.
>> Yr oeddech yn jyst yn gwneud ei yn syml, yn debyg iawn Ralphie yma
mewn ffilm enwog sy'n chwarae 'n bert lawer nauseum ad bob gaeaf.
[VIDEO Playback]
-Bod Yn hysbys i bob un sy'n Ralph Parker yn drwy hyn
penodi aelod o'r Little Amddifad Annie Secret Circle
ac mae ganddo hawl i holl anrhydedd a budd-daliadau sy'n digwydd iddynt.
>> -Signed, Little Orphan Annie, gwrth-lofnodi Pierre Andre, mewn inc.
Anrhydeddau a budd-daliadau, eisoes yn naw oed.
>> [Gweiddi]
-Come Ar.
Gadewch i ni fynd ymlaen ag ef.
Dydw i ddim angen yr holl jazz hynny am smyglwyr a môr-ladron.
>> nos yfory -Listen gyfer yr antur olaf
y llong môr-ladron du.
Nawr, mae'n amser i Neges gyfrinach Annie
ar eich cyfer chi aelodau'r Cylch Secret.
Cofiwch, plant, dim ond aelodau o Annie Secret Circle
Gall dadgodio neges gudd Annie.
>> Cofiwch, Annie yn dibynnu ar chi.
Gosodwch eich pinnau i B2.
Dyma yw'r neges.
12, 11--
>> -I Wyf mewn, fy nghyfarfod cyfrinachol cyntaf.
>> -14, 11, 18, 16.
>> Roedd -Pierre mewn llais mawr heno.
Gallwn ddweud bod heno neges yn bwysig iawn.
>> -3, 25, dyna neges o Annie ei hun.
Cofiwch, peidiwch â dweud wrth neb.
>> -90 Eiliad yn ddiweddarach, rwy'n yn yr unig ystafell yn y tŷ lle mae bachgen o naw
Gallai eistedd mewn preifatrwydd a dadgodio.
Aha, B!
Es i i'r nesaf, E.
>> Y gair cyntaf yw fod.
S, ei fod yn dod yn haws yn awr, U, 25--
>> -OH, Yn dod ar, Ralphie, yr wyf yn gotta fynd!
>> -I'll Fod yn iawn i lawr, Ma!
Gee whizz!
>> -T, O, gofalwch eich bod canlynol-- gofalwch eich bod yn beth?
Beth oedd Little Amddifad Annie ceisio ei ddweud?
Byddwch yn siwr i beth?
>> -Ralphie, Andy wedi mynd i yn mynd, byddwch dewch allan?
>> hawl -Mae pob, Ma!
'n annhymerus' fod allan yn iawn!
>> Roedd -I dod yn nes yn awr.
Roedd y tensiwn yn ofnadwy.
Beth oedd ei?
Mae tynged y blaned Gall hongian yn y cydbwysedd.
>> -Ralphie!
gotta Andy fynd!
>> -I'll Fod yn iawn allan, ar gyfer crio yn uchel!
>> -Almost Yno, fy mysedd yn hedfan, fy meddwl Roedd trap dur, pob mandwll vibrated.
Yr oedd bron yn glir, ie, ie, ie.
>> -Bod Yn siwr i yfed eich Ovaltine.
Ovaltine?
Mae masnachol crummy?
Yn fab i ast.
[DIWEDD Playback]
DAVID J. Malan: OK, felly a oedd yn bell iawn
o gyflwyno cryptograffeg, a hefyd Ovaltine.
Yn wir, o hen hysbyseb hon yma, pam mae Ovaltine mor dda?
Mae'n echdynnu ddwys o aeddfed brag haidd, llaeth buwch hufennog pur, yn
a baratowyd yn arbennig coco, ynghyd gyda phosphatides naturiol a fitaminau.
Mae'n cael ei hatgyfnerthu ymhellach gyda fitaminau ychwanegol B a D, iym.
A gallwch ddal i gael ei, mae'n debyg, ar Amazon, fel y gwnaethom yma.
>> Ond mae'r cymhelliant yma oedd cyflwyno cryptograffeg, yn benodol
Math o cryptograffeg hysbys fel cryptograffeg allweddol gyfrinach.
Ac fel yr awgryma'r enw, y cyfan diogelwch system crypto allweddol gyfrinach,
os mynnwch, methodoleg am ddim ond sgrialu
gwybodaeth rhwng dau o bobl, yw bod Dim ond yr anfonwr a dim ond y derbynnydd
gwybod key-- gyfrinach rhywfaint o werth, mae rhai ymadrodd gyfrinach, mae rhai rhif gyfrinach, bod
eu galluogi i ddau amgryptio a dadgryptio gwybodaeth.
A cryptograffeg, mewn gwirionedd, yn unig yw hwn o wythnos 0.
>> Mae'n broblem lle mae mewnbynnau, fel y neges gwirioneddol yn y Saesneg
neu beth bynnag iaith y byddwch yn am anfon at rywun yn y dosbarth,
neu ar draws y rhyngrwyd.
Mae rhywfaint o allbwn, sy'n mynd i fod y neges wedi'i sgramblo eich bod
eisiau gan y bobl dderbyn.
A hyd yn oed os bydd rhywun yn y canol yn derbyn hynny hefyd,
nad ydych chi eisiau iddyn nhw o reidrwydd yn gallu dadgryptio iddo,
oherwydd tu mewn hon blwch du, neu algorithm,
rhywfaint o mecanwaith, rhyw gam wrth gam cyfarwyddiadau, am gymryd y mewnbwn
a throsi i mewn i'r allbwn, mewn gobaith ffordd ddiogel.
>> Ac, mewn gwirionedd, mae rhywfaint o geirfa yn y byd hwn fel a ganlyn.
testun plaen yw'r gair yn gwyddonydd cyfrifiadurol byddai
eu defnyddio i ddisgrifio'r mewnbwn neges, fel y Saesneg
neu beth bynnag iaith chi mewn gwirionedd eisiau anfon i ryw dynol eraill.
Ac yna y ciphertext yw'r scramble i'r enciphered, neu wedi'i amgryptio,
fersiwn ohono.
>> Ond mae yna un cynhwysyn arall yma.
Mae un mewnbwn arall i cryptography allweddol gyfrinach.
A dyna yw'r allwedd ei hun, sydd, yn gyffredinol,
fel y byddwn yn gweld, rhif, neu llythyr, neu air, beth bynnag
yr algorithm ei fod mewn gwirionedd yn disgwyl.
>> A sut ydych chi'n dadgryptio gwybodaeth?
Sut ydych chi'n ddehongli hyn?
Wel, 'ch jyst gwrthdroi'r allbynnau a mewnbynnau.
>> Mewn geiriau eraill, unwaith y bydd rhywun yn derbyn eich neges wedi'i amgryptio,
ef neu hi yn syml gan i wybod bod un allweddol.
Maent wedi derbyn y ciphertext.
A thrwy blygio dau y rhai mewnbynnau i mewn i'r system crypto,
y algorithm, blwch du hwn, allan Dylai ddod i'r plaintext gwreiddiol.
Ac felly dyna y lefel uchel iawn Golygfa o'r hyn cryptography mewn gwirionedd
popeth am.
>> Felly, gadewch i ni fynd yno.
Gadewch i ni yn awr yn edrych oddi tano y cwfl o rywbeth
rydym wedi bod yn cymryd yn ganiataol ar gyfer yr wythnos ddiwethaf, ac ar gyfer y sesiwn hwn
Yma-- y llinyn.
Mae llinyn ar ddiwedd y dydd yn unig yw dilyniant o gymeriadau.
>> Gallai fod yn fyd helo, neu helo Zamyla, neu beth bynnag.
Ond beth mae hynny'n ei olygu i fod dilyniant o gymeriadau?
Yn wir, y llyfrgell CS50 yn rhoi ni fath ddata o'r enw llinyn.
>> Ond nid oes mewn gwirionedd dim y fath beth fel llinyn yn C.
Mae wir yn unig yw dilyniant o cymeriad, cymeriad, cymeriad,
cymeriad, y cefn, wrth gefn, i yn ôl, wrth gefn, i gefnogi y tu mewn
o gof eich cyfrifiadur, neu RAM.
A byddwn yn edrych yn ddyfnach i hynny yn y dyfodol pan fyddwn yn edrych ar cof ei hun,
a defnyddio, a'r bygythiadau sy'n cymryd rhan.
>> Ond gadewch i ni ystyried y llinyn Zamyla.
Felly dim ond enw y dynol yma, Zamyla,
hynny yw dilyniant o cymeriadau, Z-A-M-Y-L-A.
Ac yn awr gadewch i ni dybio bod enw Zamyla yn yn cael ei storio y tu mewn cyfrifiadur
rhaglen.
>> Wel, mae'n sefyll i reswm y dylem yn gallu edrych ar y cymeriadau hynny
yn unigol.
Felly Im 'jyst yn mynd i dynnu ychydig blwch o gwmpas enw Zamyla yma.
Ac mae'n wir yn C pan fyddwch cael llinyn, fel Zamyla-- ac efallai
y llinyn wedi dod yn ôl o swyddogaeth fel get llinyn,
alli 'n weithredol drin mae'n cymeriad gan cymeriad.
>> Yn awr, mae hyn yn germane gyfer y sgwrs wrth law, oherwydd
yn cryptograffiaeth os ydych am newid A i B, a B i C, a C i D,
ac yn y blaen, mae angen i chi fod yn gallu i edrych ar y cymeriadau unigol
mewn llinyn.
Mae angen i chi allu newid Z i rywbeth arall, y A
i rywbeth arall, y M i rhywbeth arall, ac yn y blaen.
Ac felly mae angen ffordd, programmatically, felly
i siarad, yn C i allu newid ac edrych ar llythrennau unigol.
A gallwn wneud hyn fel a ganlyn.
>> Gadewch i mi fynd yn bennaeth yn ôl mewn IDE CS50.
A gadewch i mi fynd yn ei flaen ac yn creu ffeil newydd
y byddaf yn galw amser hwn string0, fel ein enghraifft gyntaf o'r fath, dot c.
Ac yr wyf i'n mynd i fynd yn ei flaen a chwip i fyny fel a ganlyn.
>> Felly gynnwys CS50.h, ac Yna, yn cynnwys io.h safonol,
yr wyf bron bob amser i'n mynd i yn defnyddio yn fy rhaglenni, o leiaf
yn y lle cyntaf.
int prif ddi-rym, ac yna i mewn yma rwy'n mynd i wneud llinynnau yn cael cael llinyn.
Ac yna dwi'n mynd i mynd yn ei flaen ac yn gwneud hyn.
Dw i eisiau mynd ymlaen ac, fel gwiriad pwyll,
dim ond dweud, helo, cant s, hanner colon, yn gwneud llinyn 0.
Uh oh, yr hyn a wnaeth i ei wneud yma?
O, doeddwn i ddim yn plygio i mewn.
Felly ddysgwyd gwersi, bod Nid oedd yn fwriadol.
>> Felly camgymeriad, mwy cant trawsnewidiadau na dadleuon data.
A dyma lle, yn llinell 7-- Iawn, felly mae gen i,
dyfyniad unquote, dyna fy llinyn i printf.
Mae gen i arwydd canradd.
Ond dw i'n colli'r ail ddadl.
>> Dw i'n colli'r coma, sy'n Oedd gennyf mewn enghreifftiau blaenorol.
Felly yn gyfle da i osod un yn fwy camgymeriad, yn ddamweiniol.
Ac yn awr gadewch i mi redeg string0, teipiwch Zamyla.
OK, helo Zamyla.
>> Felly rydym wedi cynnal y math hwn o raglen ychydig o adegau gwahanol yn awr.
Ond gadewch i ni wneud rhywbeth ychydig yn wahanol y tro hwn.
Yn hytrach na dim ond argraffu Zamyla yn enw cyfan allan gyda printf,
gadewch i ni wneud hynny cymeriad gan cymeriad.
>> Rydw i'n mynd i ddefnyddio ar gyfer dolen.
Ac yr wyf i'n mynd i roi fy hun newidyn cyfrif, enw i.
Ac yr wyf i'n mynd i gadw ailadrodd, felly hir fel fi yn llai na hyd y s.
>> Mae'n troi allan, nid y gwnaethom gwneud hyn y tro diwethaf,
hynny c comes ag a swyddogaeth o'r enw Stirling.
Yn ôl yn y dydd, ac yn gyffredinol dal wrth weithredu swyddogaethau,
Bydd pobl yn aml yn dewis iawn Enwau cryno y math hwnnw o sain
sydd angen arnoch, hyd yn oed er 'i' ar goll rhai llafariaid neu lythyrau.
Felly Stirling yw'r enwi o swyddogaeth sy'n
cymryd dadl rhwng cromfachau dylai hynny fod yn llinyn.
Ac mae'n jyst yn dychwelyd yn gyfanrif, hyd y llinyn.
>> Felly, mae hyn ar gyfer dolen ar linell 7 yn mynd i ddechrau cyfrif yn i yn dychwelyd 0.
Mae'n mynd i gynyddiad ff ar bob iteriad
gan 1, fel yr ydym wedi bod yn gwneud ychydig o weithiau.
Ond mae'n mynd i wneud yn unig hyd nes y pwynt
pryd fi yw hyd y llinyn ei hun.
>> Felly, mae hyn yn ffordd o, yn y pen draw, ailadrodd dros y cymeriadau
yn y llinyn fel y mae a ganlyn.
Rydw i'n mynd i argraffu nid llinyn cyfan, ond cant c,
cymeriad unigol wedi'i ddilyn gan y llinell newydd.
Ac yna dwi'n mynd i mynd yn ei flaen, ac mae angen i mi
dweud fy mod eisiau argraffu cymeriad ith o s.
>> Felly, os fi yw'r newidyn sy'n dynodi mynegai y llinyn, lle
yn cael eu ynddo, mae angen i chi i mi fod yn gallu dweud, yn rhoi cymeriad ith o s mi.
Ac c wedi ffordd o wneud hyn gyda cromfachau sgwâr.
Rydych yn syml yn dweud enw'r llinyn, sydd yn yr achos hwn s.
Yna, byddwch yn defnyddio cromfachau sgwâr, sy'n cael eu Fel arfer, ychydig uwchben eich Ffurflen Dreth neu Enter
allweddol ar y bysellfwrdd.
Ac yna rydych yn rhoi'r mynegai y cymeriad yr ydych am eu hargraffu.
Felly mae'r mynegai yn mynd i fod yn number-- 0, neu 1, neu 2, neu 3, neu dot,
dot, dot, rhyw rif arall.
>> Ac rydym yn sicrhau ei fod yn mynd i fod y nifer cywir, oherwydd yr wyf yn
yn dechrau cyfrif ar 0.
Ac at ball, cymeriad cyntaf mewn llinyn yw drwy gonfensiwn 0.
A'r ail gymeriad yn braced 1.
A'r trydydd cymeriad yw braced 2.
Ac nad ydych eisiau mynd yn rhy yn hyn, ond ni fyddwn yn oherwydd ein bod yn
mynd i dim ond gynyddiad ff nes ei fod hafal i hyd y llinyn.
Ac a phryd, Bydd hyn ar gyfer dolen stopio.
>> Felly, gadewch i mi fynd yn ei flaen ac arbed hyn rhaglen, a rhedeg yn gwneud llinyn 0.
Ond yr wyf gwyneb.
Ymhlyg datgan swyddogaeth llyfrgell Stirling gyda math o'r fath ac such-- yn awr,
hyn yn swnio'n gyfarwydd.
Ond nid yw'n printf.
Ac nid yw'n cael llinyn.
>> Doeddwn i ddim yn sgriw i fyny yn yr un ffordd y tro hwn.
Ond sylwi lawr yma ychydig i lawr ymhellach, yn cynnwys y string.h pennawd,
darparu'r benodol datganiad ar gyfer Stirling.
Felly mae mewn gwirionedd yn gliw i mewn 'na.
>> Ac yn wir mae'n troi allan mae ffeil flaen arall
nad ydym wedi defnyddio yn y dosbarth eto, ond mae'n
ymhlith y rhai sydd ar gael i chi, a elwir string.h.
Ac yn y ffeil, string.h yn datgan Stirling.
Felly, gadewch i mi fynd yn ei flaen ac arbed hyn, gwneud llinyn
0-- neis, dim negeseuon gwall y tro hwn.
>> ./string0 Zamyla, a Rwy'n ar fin daro Chofnoda,
a phryd getstring yn mynd i ddychwelyd y llinyn, rhowch ef yn s.
Yna, ar gyfer ddolen yn mynd i ailadrodd dros gymeriadau S un ar y tro,
ac argraffu un bob llinell iddynt, oherwydd Roedd gen bod n slaes ar y diwedd.
Felly gallwn i hepgor y slaes n, ac yna dim ond argraffu Zamyla gyd
yn yr un llinell, reimplementing effeithiol
printf, ac nid yw bob un sy'n ddefnyddiol.
Ond yn yr achos hwn, nid wyf wedi gwneud hynny.
Rwyf wedi eu hargraffu mewn gwirionedd yn un cymeriad ar y tro, un i bob llinell,
er mwyn i ni mewn gwirionedd yn gweld yr effaith.
>> Ond dylai Nodaf un peth yma.
A byddwn yn dod yn ôl at hyn mewn wythnos yn y dyfodol.
Mae'n ymddangos bod hyn yn cod o bosibl yn buggy.
>> Mae'n troi allan bod yn cael llinyn a rhai swyddogaethau eraill mewn bywyd
Nid gwneud o reidrwydd bob amser yn dychwelyd yr hyn yr ydych yn disgwyl.
Rydym yn gwybod o ddosbarth ddiwethaf amser yn y sy'n cael
llinyn i fod i ddychwelyd llinyn.
Ond beth os bydd y mathau ddefnyddiwr allan o'r fath gair hir, neu baragraff, neu draethawd
fod yna dim ond nid yn ddigon cof yn y cyfrifiadur i ffitio iddo.
>> Fel, beth os bydd rhywbeth yn mynd anghywir o dan y cwfl?
Efallai nad yw'n digwydd yn aml, ond gallai ddigwydd unwaith
mewn blwc, anaml iawn.
Ac felly mae'n troi allan y get llinyn a swyddogaethau hoffi ei wneud yw o reidrwydd yn
bob amser yn dychwelyd llinynnau.
Efallai y byddant yn dychwelyd rhywfaint o werth wall, rhywfaint o werth sentinel fel petai,
sy'n dangos bod rhywbeth wedi mynd o'i le.
A fyddech yn unig yn gwybod hyn o wedi dysgu yn y dosbarth yn awr,
neu ar ôl darllen rhai yn fwy ddogfennaeth.
Mae'n troi allan bod yn cael llinyn Gall dychwelyd gwerth a elwir yn null.
Null yn werth arbennig yr ydym annhymerus ' dod yn ôl i mewn wythnos yn y dyfodol.
Ond am nawr, dim ond yn gwybod bod os ydw i eisiau i fod yn wirioneddol briodol wrth symud ymlaen
gan ddefnyddio get llinyn, yr wyf yn Ni ddylai dim ond ei alw,
ac blindly defnyddio ei werth dychwelyd, ymddiried ei fod yn llinyn.
>> Dylwn ddweud yn gyntaf, hey, arhoswch funud, dim ond
fwrw ymlaen os s nid yw'n gyfartal null, lle null, unwaith eto,
yn unig yw rhywfaint o werth arbennig.
Ac mae'n yr unig werth arbennig i chi Mae angen i chi boeni am i get llinyn.
Cael llinyn naill ai yn mynd i ddychwelyd llinyn neu null.
>> Ac mae hyn ebychnod hafal arwydd efallai y byddwch yn gwybod o efallai dosbarth mathemateg
y gallech dynnu hafalnod gyda llinell trwyddo i ddangos nid yn gyfartal.
Nid yw hynny'n gyffredinol gymeriad gallwch deipio ar eich bysellfwrdd.
Ac felly yn y rhan fwyaf o ieithoedd rhaglennu, pan fyddwch eisiau i ddweud nad gyfartal,
ydych yn defnyddio pwynt ebychnod, a elwir hefyd yn bang.
Felly, yr ydych yn dweud bang hafal, a oedd yn golygu nad hafal, yn rhesymegol.
Mae'n union fel nad oes 'na fwy na, neu'n hafal i, neu'n llai na
neu'n hafal i allwedd ar eich bysellfwrdd hynny mae hyn i gyd mewn un symbol.
Felly dyna pam, yn enghreifftiau o'r gorffennol, wnaethoch chi gael braced agored, ac yna
arwydd cyfartal, er mwyn gwneud fwy na neu'n, yn dweud, yn llai na.
>> Felly beth yw'r prydau parod yma?
Mae hyn yn syml yn ffordd bellach o cyflwyno cystrawen hwn, nodwedd hon,
ailadrodd dros unigol cymeriadau mewn llinyn.
Ac yn union fel y rhai sgwâr cromfachau yn eich galluogi i gael gafael arnynt,
ystyried y cromfachau sgwâr hynny fel fath o awgrymu ar hyn sylfaenol
dylunio, lle pob cymeriad tu mewn llinyn
yn fath o mewn bocs yn rhywle oddi tano y cwfl yn y cof eich cyfrifiadur.
>> Ond gadewch i ni wneud amrywiad o hyn.
Mae'n ymddangos bod hyn yn rhaglen yn gywir.
Felly fesul echelinau CS50 ar gyfer arfarnu cod, mae hyn yn gywir yn awr.
Yn enwedig yn awr fy mod yn gwirio am null, dylai rhaglen hon byth yn damwain.
Ac yr wyf yn jyst yn gwybod bod o brofiad.
Ond does dim byd arall sy'n gallwn ni wir yn mynd o'i le yma.
Ond nid yw'n cynllunio'n dda iawn, oherwydd gadewch i ni fynd yn ôl at yr hanfodion.
>> Yn gyntaf, principles-- beth yw gwaith ar gyfer dolen yn ei wneud?
A am ddolen yn gwneud tri pheth.
Mae'n initializes rhai werth, os ydych yn gofyn iddo wneud hynny.
Mae'n gwirio amod.
Ac yna ar ôl pob iteriad, ar ôl pob cylch,
mae'n cynnyddu rhai gwerth, neu werthoedd, yma.
>> Felly beth mae hynny'n ei olygu?
Rydym ymgychwyn fi i 0.
Rydym yn gwirio ac yn gwneud yn siwr i yn llai na hyd y s, sy'n Z-A-M-Y-L-A,
felly sy'n llai na 6.
Ac, yn wir, 0 yn llai na 6.
>> Rydym yn argraffu allan Z o enw Zamyla yn.
Yna, rydym yn cynyddiad i 0-1.
Yna byddwn yn gwirio, yw 1 yn llai na hyd s?
Mae hyd y s yw 6.
Ydy.
>> Felly rydym yn argraffu mewn enw Zamyla, yn ZA.
Rydym cynyddiad ff o 0, 1, 2.
Yna byddwn yn gwirio, yw 2 yn llai na hyd y enw Zamyla yn.
6- felly 2 yn llai na 6.
Ie, gadewch i ni argraffu nawr M yn enw Zamyla, sef y trydydd cymeriad.
>> Yr hyn sy'n allweddol yma yw bod ar bob ailadroddiad o'r stori, dwi'n gwirio,
yn ff llai na hyd Zamyla?
Ond mae'r dal yw bod Nid Stirling yn eiddo.
Mae'r rhai ohonoch sydd wedi rhaglennu o'r blaen yn Java neu ieithoedd eraill
allai wybod hyd y llinyn yn eiddo, dim ond rhai darllen yn unig werth.
>> Yn y C yn yr achos hwn, os yw hyn yn swyddogaeth sy'n llythrennol
cyfrif nifer y cymeriadau yn Zamyla bob tro
rydym yn galw y swyddogaeth.
Bob tro y byddwch yn gofyn i'r cyfrifiadur i ddefnyddio Stirling, mae'n cymryd golwg ar Zamyla,
ac yn dweud Z-A-M-Y-L-A, 6.
Ac mae'n dychwelyd 6.
Y tro nesaf y byddwch yn ffonio y tu mewn i hynny dolen,
mae'n mynd i edrych ar Zamyla eto, yn dweud Z-A-M-Y-L-A, 6.
Ac mae'n mynd i ddychwelyd 6.
Felly beth dwp am ddylunio hon?
>> Pam nad yw fy cod nid 5 allan o 5 ar gyfer dylunio ar hyn o bryd, fel petai?
Wel, dwi'n gofyn cwestiwn yn ddiangen.
Rwy'n gwneud mwy o waith nag angen i mi.
>> Felly er bod y ateb yn gywir, yr wyf yn
gofyn i'r cyfrifiadur, beth yw hyd Zamyla eto,
ac unwaith eto, ac unwaith eto, ac unwaith eto?
A dyna ateb yw byth yn mynd i newid.
Mae bob amser yn mynd i fod yn 6.
>> Felly yn ateb gwell na hyn fyddai y fersiwn nesaf.
Gadewch i mi fynd yn ei flaen ac yn ei roi mewn ffeil ar wahân o'r enw string1.c,
dim ond er mwyn ei gadw ar wahân.
Ac mae'n troi allan mewn i dolen, gallwch mewn gwirionedd
ddatgan newidynnau lluosog ar unwaith.
>> Felly, yr wyf i'n mynd i gadw fi a'i osod i 0.
Ond rwyf hefyd yn ddim yn mynd i ychwanegu atalnod, a dweud,
rhoi newidyn a elwir n, y mae ei fi gwerth hafal i hyd llinyn y s.
Ac yn awr, os gwelwch yn dda yn gwneud fy nghyflwr cyn belled ag y fi yn llai na n.
>> Felly, yn y modd hwn, mae'r rhesymeg yn union yr un fath ar ddiwedd y dydd.
Ond yr wyf yn cofio y gwerth 6, yn yr achos hwn.
Beth yw hyd y enw Zamyla yn?
A dwi'n ei roi yn n.
>> A dwi'n dal i wirio y cyflwr bob tro.
Yw 0 llai na 6?
Yw 1 yn llai na 6?
A yw 2 yn llai na 6, ac yn y blaen?
>> Ond dydw i ddim yn gofyn y cyfrifiadur eto, ac eto, beth sydd
hyd y enw Zamyla yn?
Beth yw hyd y enw Zamyla yn?
Beth yw hyd y enw Zamyla hwn?
Im 'yn llythrennol yn cofio bod yn gyntaf a ond ateb yn yr ail n amrywiol.
Felly, mae hyn yn awr fyddai nid yn unig yn gywir, ond a gynlluniwyd yn dda hefyd.
>> Nawr, beth am steil?
Rwyf wedi enwi fy newidynnau eithaf da, byddwn yn dweud.
Maent yn super gryno iawn yn awr.
A dyna gwbl iawn.
>> Os mai dim ond un llinyn mewn rhaglen,
efallai y byddwch yn ogystal yn ei alw s i linyn.
Os mai dim ond un newidyn ar gyfer cyfrif mewn rhaglen,
efallai y byddwch yn ogystal yn ei alw i.
Os oes gennych hyd, n yn super cyffredin yn ogystal.
Ond nid wyf wedi gwneud sylwadau unrhyw un o fy cod.
>> Dydw i ddim wedi gwybod i'r reader-- boed hynny yn fy TF, neu TA,
neu dim ond colleague-- hyn sydd i fod i fod yn mynd ymlaen yn y rhaglen hon.
Ac felly i gael arddull da, beth fyddai wyf am ei wneud
yn this-- rhywbeth fel gofynnwch defnyddiwr ar gyfer mewnbwn.
A gallwn ailysgrifennu hwn unrhyw nifer o ffyrdd.
>> Gwnewch yn siwr s-- wneud yn siŵr get llinyn dychwelyd llinyn.
Ac yna yn y Yma-- ac mae hyn yn bosibl y ailadrodd comment-- pwysicaf
dros y cymeriadau yn s un ar y tro.
A gallwn ddefnyddio unrhyw dewis iaith Saesneg
yma i ddisgrifio pob darnau hyn o god.
>> Sylwch nad wyf wedi rhoi sylwadau ar bob llinell o god,
mewn gwirionedd dim ond ar y diddorol rai, y rhai sy'n
cael rhywfaint o ystyr fy mod gallai am wneud super glir i rywun
darllen fy cod.
A pham yr ydych yn ffonio ei gael llinyn gofynnwch defnyddiwr ar gyfer mewnbwn?
Nid yw hyd yn oed bod un o reidrwydd holl ddisgrifiadol hynny.
Ond mae'n helpu ddweud stori, gan fod y ail linell yn y stori yw, gwnewch yn siŵr
cael llinyn dychwelyd llinyn.
>> A'r llinell yn drydydd yn y stori yw, ailadrodd dros y cymeriadau yn s un
ar y tro.
Ac yn awr yn unig ar gyfer mesur da, Rydw i'n mynd i fynd yn ei flaen ac yn ychwanegu
un sylw mwy na dim ond Dywed print i-ed gymeriad mewn s.
Yn awr, beth a wneuthum ar ddiwedd y dydd?
>> Rwyf wedi ychwanegu rhai Saesneg geiriau ar ffurf sylwadau.
Mae'r symbol slaes slaes golygu, hey, cyfrifiadur hwn yw i'r bobl,
nid i chi, y cyfrifiadur.
Felly, maen nhw'n anwybyddu yn rhesymegol.
Maent yn unig yno.
>> Ac, yn wir, CS50 IDE dangos iddynt fel llwyd, â bod yn ddefnyddiol, ond nid yn allweddol
i'r rhaglen.
Sylwi ar yr hyn y gallwch ei wneud yn awr.
P'un a ydych yn gwybod C rhaglennu neu beidio, byddwch yn
Gall dim ond sefyll yn ôl ar hyn rhaglen, a sgimio y sylwadau.
Gofynnwch defnyddiwr ar gyfer mewnbwn, gwnewch yn siŵr cael llinyn dychwelyd llinyn,
ailadrodd dros y cymeriadau yn s un ar y tro, argraffwch y cymeriad
i-fed gymeriad mewn s-- nad ydych yn ei wneud hyd yn oed yn rhaid i ni edrych ar y cod
i ddeall yr hyn y rhaglen hon yn ei wneud.
Ac, yn well eto, os ydych chi eich hun yn edrych yn yn y rhaglen hon mewn wythnos neu ddwy,
neu fis, neu flwyddyn, chi hefyd nad oes rhaid i
i syllu ar y cod, geisio cofio,
beth oedd yr wyf yn ceisio'i wneud gyda'r cod hwn?
>> Rydych chi wedi dweud eich hun.
Rydych chi wedi disgrifio i chi eich hun, neu ryw gydweithiwr, neu TA, neu TF.
Ac felly y byddai hyn yn awr yn gywir, a dylunio da,
ac yn dda arddull yn y pen draw yn ogystal.
Felly peidiwch gadw hynny mewn cof.
>> Felly mae un arall beth rwy'n mynd i wneud yma
Gall fod yn awr yn datgelu yn union beth sydd mynd ymlaen o dan y cwfl.
Felly mae yna nodwedd hon yn C, ac ieithoedd eraill,
gelwir stereoteipio naill ai yn ymhlyg
neu benodol caniatáu i chi droi o un math data i un arall.
Rydym wedi bod yn delio felly yn hyn heddiw gyda llinynnau.
>> A llinynnau yn gymeriadau.
Ond dwyn i gof o wythnos 0, beth yw'r cymeriadau?
Cymeriadau yn unig echdyniad ar ben y rhifau degol numbers--,
a rhifau degol yn wir yn unig yn tynnu ar ben y rhifau deuaidd,
fel yr ydym diffinnir hi.
>> Felly cymeriadau niferoedd.
A rhifau yn gymeriadau, dim ond yn dibynnu ar y cyd-destun.
Ac mae'n ymddangos bod y tu mewn o raglen gyfrifiadurol,
gallwch nodi sut yr ydych am edrych ar y darnau du mewn y rhaglen?
>> Dwyn i gof o wythnos 0 a oedd gennym ASCII, sydd ychydig yn y cod hwn
llythyrau mapio i rifau.
Ac dywedasom, cyfalaf A yw 65.
Cyfalaf B yw 66, ac yn y blaen.
>> A rhybudd, rydym yn y bôn yn cael chars ar y rhes uchaf yma, fel y byddai C yn eu galw,
cymeriadau, ac yna ints ar yr ail reng.
Ac mae'n troi allan gallwch drosi ddi-dor rhwng y ddau, fel arfer.
Ac os ydym am ei wneud mae hyn yn fwriadol, rydym
Efallai am fynd i'r afael rhywbeth fel hyn.
>> Efallai y byddwn am newid priflythrennau i ostwng
achos, neu llythrennau bach i achos uchaf.
Ac mae'n troi allan yno yn mewn gwirionedd patrwm yma
gallwn gofleidio mewn dim ond hyn o bryd.
Ond gadewch i ni edrych yn gyntaf ar Enghraifft o wneud hyn yn benodol.
>> Rydw i'n mynd i fynd yn ôl i mewn i IDE CS50.
Rydw i'n mynd i greu ffeil o'r enw ASCII 0.c.
Ac yr wyf i'n mynd i fynd yn ei flaen ac ychwanegu fy io.h safonol ar y brig, prif ddi-rym int
ar dop fy swyddogaeth.
Ac yna Im 'jyst yn mynd i wneud y canlynol-- yn i ddolen o ff hafal,
gadewch i ni ddweud, 65.
>> Ac yna i yn mynd i fod yn llai na 65, yn ogystal â 26 o lythyrau yn yr wyddor.
Felly byddaf yn gadael y cyfrifiadur gwneud y cwestiwn i mi yno.
Ac yna y tu mewn dolen hwn, beth ydw i'n mynd i argraffu?
>> % C yw% ff slaes n.
Ac yn awr yr wyf am i blygio mewn dwy gwerthoedd.
Rwyf wedi rhoi cwestiwn dros dro marciau yno i wahodd y cwestiwn.
>> Rwyf am ailadrodd o 65 ymlaen am 26 llythrennau'r wyddor,
argraffu ar bob iteriad sy'n cyfwerth annatod cymeriad.
Mewn geiriau eraill, yr wyf am ailadrodd dros 26 rhifau argraffu
beth mae'r cymeriad ASCII yw, y llythyr, a beth y rhif cyfatebol yw--
mewn gwirionedd dim ond ail-greu y siart gan y sleid.
Felly beth ddylai marciau cwestiwn rhain fod?
>> Wel, mae'n ymddangos fod yr ail Dylai un yn unig fod y ff amrywiol.
Yr wyf am weld hynny fel rhif.
Ac mae'r ddadl canol yma, gallaf ddweud wrth y cyfrifiadur
i drin y cyfanrif ff fel cymeriad, er
yn lle yma i cant C.
>> Mewn geiriau eraill, os wyf i, yr rhaglennydd dynol, yn gwybod
dyma rhifau ar ddiwedd y dydd.
Ac yr wyf yn gwybod y dylai 65 map i ryw gymeriad.
Gyda hyn cast penodol, gyda cromfachau,
enw'r math data rydych am ei trosi i, ac yn parenthesis cau,
gallwch ddweud wrth y cyfrifiadur, hey, cyfrifiaduron,
trosi cyfanrif hon i torgoch.
>> Felly, pan fyddaf yn rhedeg hyn rhaglen ar ôl lunio,
gadewch i ni weld yr hyn yr wyf get-- gwneud ASCII 0.
Darn iddo, beth wnes i yn anghywir fan hyn?
Defnyddiwch y dynodwr heb ei ddatgan, iawn, nid yn fwriadol,
ond gadewch i ni weld os na allwn rheswm drwy hyn.
>> Felly llinell five-- felly doeddwn i ddim yn cael bell iawn cyn sgriwio i fyny.
Mae hynny'n iawn.
Felly llinell 5 ar gyfer i hafal 65-- Rwy'n gweld.
Felly cofiwch fod yn C, yn wahanol i rai ieithoedd os oes gennych rhaglennu ymlaen llaw
profiad, mae gennych i ddweud wrth y cyfrifiadur,
yn wahanol i Scratch, beth math o newidyn ydyw.
>> Ac yr wyf yn anghofio ymadrodd allweddol yma.
Yn unol pump, dwi wedi dechrau defnyddio i.
Ond nid wyf wedi dweud wrth C pa ddata math ydyw.
Felly, yr wyf i'n mynd i fynd i mewn yma ac dweud, AH, yn ei gwneud yn yn gyfanrif.
>> Nawr rydw i'n mynd i fynd yn ei flaen ac yn ail-grynhoi.
Mae hynny'n sefydlog hynny.
./ascii0 Enter, dyna fath o oer.
Nid yn unig y mae'n gyflym super i gofynnwch i'r cyfrifiadur y cwestiwn hwn,
yn hytrach nag edrych i fyny ar sleid, mae'n argraffu un i bob llinell, A yw 65,
B yw 66, yr holl ffordd down-- ers i mi yn gwneud hyn 26 times-- i'r z llythyrau,
sef 90.
Ac, mewn gwirionedd, ychydig yn mwy deallus byddai
wedi bod i mi beidio â dibynnu ar y cyfrifiadur i ychwanegu 26.
Gallai Fi jyst wedi gwneud 90 hefyd, cyhyd
gan nad wyf yn gwneud yr un camgymeriad ddwywaith.
Dw i eisiau mynd i fyny drwy z, nid dim ond i fyny drwy y.
>> Felly dyna cast penodol.
Mae'n ymddangos bod hyn yn Nid yw hyd yn oed yn angenrheidiol.
Gadewch i mi fynd yn ei flaen ac ailgynnal hwn casglwr, ac ailgynnal ASCII 0.
Mae'n ymddangos bod C yn eithaf smart.
>> Ac printf, yn arbennig, yn eithaf smart.
Os ydych yn unig basio fi ddwywaith ar gyfer y ddau dalfannau, printf
yn sylweddoli, oh, yn dda yr wyf yn gwybod eich bod rhoddodd mi integer-- rhywfaint o rif,
fel 65, neu 90, neu beth bynnag.
Ond yr wyf yn gweld eich bod am i mi fformat y rhif hwnnw fel cymeriad.
Ac felly printf gall fwrw ymhlyg y int i torgoch i chi yn ogystal.
Felly nid yw hynny'n broblem o gwbl.
>> Ond sylwi, oherwydd y cywerthedd hwn gallwn ni ei wneud mewn gwirionedd hyn hefyd.
Gadewch i mi fynd yn ei flaen ac yn gwneud un Fersiwn arall o'r this-- 1.c. ASCII
Ac yn lle ailadrodd drosodd cyfanrifau, yn wir chwythu eich meddwl
drwy ailadrodd dros gymeriadau.
Os yw torgoch c yn cael cyfalaf A, yr wyf yn am fynd yn ei flaen ac yn gwneud hyn,
ar yr amod bod C yn llai na neu'n hafal i Z. cyfalaf Ac ar bob iteriad
Rwyf am i gynyddiad C, gallaf yn awr yn fy llinell printf yma
dyweder, y cant C yn cant i eto, coma C.
>> Ac yn awr, gallaf fynd i'r cyfeiriad arall, castio cymeriad benodol
i yn gyfanrif.
Felly, unwaith eto, byddai pam eich bod yn gwneud hyn?
Mae'n ychydig yn rhyfedd i ddidoli o yn cyfrif o safbwynt cymeriadau.
>> Ond os ydych yn deall yr hyn sydd mynd ymlaen o dan y cwfl,
nid 'n sylweddol na hud.
Rydych yn jyst yn deud, hey, cyfrifiadur yn rhoi mi newidyn o'r enw C o torgoch fath.
Ymgychwyn i gyfalaf A. A sylwi ar y mater dyfynodau sengl.
>> Ar gyfer cymeriadau yn C, dwyn i gof o yr wythnos diwethaf, byddwch yn defnyddio dyfynodau sengl.
Ar gyfer llinynnau, am eiriau, ymadroddion, byddwch yn defnyddio dyfynodau dwbl.
OK, cyfrifiaduron, cadw gwneud hyn, felly belled â bod y cymeriad yn llai na
neu'n hafal i z.
Ac yr wyf yn gwybod o fy mwrdd ASCII bod yr holl codau ASCII hyn yn cyffiniol.
>> Does dim bylchau.
Felly dim ond A drwy Z, gwahanu gan un rhif un.
Ac yna gallaf gynyddiad golosg, os wyf wir eisiau.
Ar ddiwedd y dydd, mai dim ond rhif.
Rwy'n gwybod hyn.
Felly gall Fi jyst tybio ychwanegu 1 ato.
>> Ac yna y tro hwn, yr wyf yn argraffu c, ac yna cyfwerth annatod.
Ac nid wyf yn hyd yn oed angen y cast penodol.
Gallaf adael printf a'r ffigur cyfrifiadurol pethau allan,
felly yn awr os byddaf yn rhedeg gwneud Ascii1./ascii1,
Rwy'n cael yr un peth yn union yn ogystal.
>> rhaglen ddiwerth, though-- unrhyw un yn mynd i mewn gwirionedd yn ysgrifennu meddalwedd
er mwyn chyfrif i maes, beth oedd y rhif sy'n mapio i A, neu B, neu Z?
Rydych yn jyst yn mynd i Google, neu edrych i fyny ar-lein, neu yn edrych i fyny
ar sleid, neu debyg.
Felly, lle mae hyn yn ei gael mewn gwirionedd yn ddefnyddiol?
>> Wel, yn siarad o hynny sleid, yn sylwi mae
patrwm gwirioneddol yma rhwng priflythyren a llythrennau bach nad oedd yn ddamweiniol.
Hysbysiad bod cyfalaf A yw 65.
Llythrennau bach a yw 97.
A pha mor bell i ffwrdd yn achos is?
>> Felly 65 yw faint o gamau i ffwrdd oddi wrth 97?
Felly 97 minws 65 yw 32.
Felly cyfalaf yw 65.
Os ydych yn ychwanegu 32 at hynny, byddwch yn cael llythrennau bach a.
Ac, cyfwerth ei, os ydych yn tynnu 32, byddwch yn mynd yn ôl i gyfalaf A-- un peth gyda B
i ychydig b, C mawr i ychydig c.
>> Mae pob un o'r bylchau hyn yn 32 ar wahân.
Yn awr, mae hyn yn ymddangos i ganiatáu i ni i wneud rhywbeth fel Microsoft Word,
neu Google Docs nodwedd, lle rydych yn Gall ddewis popeth ac wedyn yn dweud,
newid yr holl i lythrennau bach, neu newid i gyd i achos uchaf,
neu'n newid dim ond y gair cyntaf brawddeg i priflythrennau.
Gallwn ei wneud mewn gwirionedd rhywbeth fel 'na ni ein hunain.
>> Gadewch i mi fynd yn ei flaen ac arbed ffeil yma a elwir yn manteisio 0.c.
A gadewch i ni fynd yn ei flaen a chwip i fyny rhaglen sy'n gwneud yn union hynny fel a ganlyn.
Felly yn cynnwys y llyfrgell CS50.
Ac maent yn cynnwys yr wyf yn safonol / O.
>> Ac yr wyf yn gwybod hyn yn dod yn fuan.
Felly dw i'n mynd i roi yn yno eisoes, string.h,
felly yr wyf yn cael mynediad at pethau fel Stirling,
ac yna int prif ddi-rym, yn ôl yr arfer.
Ac yna dwi'n mynd i fynd yn ei flaen ac yn gwneud llinynnau yn cael cael llinyn,
dim ond er mwyn cael llinyn gan y defnyddiwr.
Ac yna dwi'n mynd i gwneud fy siec bwyll.
Os nad yw llinyn yn null cyfartal, yna mae'n ddiogel i fynd ymlaen.
A beth ydw i eisiau ei wneud?
Rydw i'n mynd i ailadrodd o fi yn dychwelyd 0, a n hyd at hyd llinyn y s.
>> Ac yr wyf i'n mynd i wneud hyn ar yr amod bod ff yn llai na n, a fi yn ogystal a mwy.
Hyd yn hyn, rwy'n wir yn unig benthyca syniadau o'r blaen.
Ac yn awr yr wyf i'n mynd i gyflwyno gangen.
>> Felly meddyliwch yn ôl i'r Scratch, lle cawsom ffyrc hynny yn y ffordd,
a'r wythnos diwethaf yn C. Rydw i'n mynd i dweud hyn, os bydd y cymeriad i-fed yn s
yn fwy na neu'n gyfartal i ostwng achos,
ac-- yn Scratch byddech yn llythrennol ddweud ac, ond yn C rydych yn ei ddweud ampersand,
ampersand-- a chymeriad i-ed yn s yn llai na neu'n hafal i ostwng z achos,
gadewch i ni wneud rhywbeth diddorol.
Gadewch i ni mewn gwirionedd yn argraffu cymeriad heb unrhyw newline
hynny yw y cymeriad yn y llinyn, cymeriad i-fed yn y llinyn.
>> Ond gadewch i ni fynd yn ei flaen ac tynnu 32 ohono.
Arall os bydd y cymeriad yn y llinyn ein bod yn edrych
Nid yw rhwng ychydig ac ychydig z, mynd yn ei flaen
a dim ond hargraffu allan ddigyfnewid.
Felly rydym wedi cyflwyno hwn nodiant cromfachau
ar gyfer ein llinynnau i gyrraedd y i-fed gymeriad yn y llinyn.
>> Rydw i wedi ychwanegu rhai rhesymeg amodol, fel Scratch mewn un wythnos yr wythnos ddiwethaf, lle
Im 'jyst yn defnyddio fy sylfaenol dealltwriaeth o'r hyn sydd
mynd ymlaen o dan y cwfl.
A yw'r cymeriad i-fed s fwy na neu'n hafal i?
Fel, ai 97 neu 98, neu 99, ac yn y blaen?
>> Ond a yw'n hefyd yn llai na neu'n hafal at werth z llythrennau bach?
Ac os felly, beth mae hyn yn ei llinell yn ei olygu?
14, mae hyn yn fath o germ o'r holl syniad,
cyfalafu y llythyr gan yn syml dynnu 32 ohono,
yn yr achos hwn, oherwydd gwn, fesul hynny siart, sut mae fy rhifau yn cael eu cynrychioli.
Felly gadewch i ni fynd yn ei flaen ac yn rhedeg hyn, ar ôl llunio cyfalafu 0.c,
a rhedeg cyfalafu 0.
>> Gadewch i deipio i mewn rhywbeth fel Zamyla ym mhob llythrennau bach fynd i mewn.
Ac yn awr rydym wedi Zamyla ym mhob priflythyren.
Gadewch i deipio i mewn Rob ym mhob llythrennau bach.
Gadewch i ni geisio Jason ym mhob llythrennau bach.
Ac rydym yn parhau i gael y cyfalafu dan orfod.
Mae mân bug fy mod math o nid oedd yn rhagweld.
Hysbysiad fy brydlon newydd yn dod i ben i fyny ar yr un llinell ag eu henwau,
sy'n teimlo'n ychydig yn flêr.
>> Felly, yr wyf i'n mynd i fynd yma, a mewn gwirionedd ar ddiwedd y rhaglen hon
argraffu gymeriad newline.
Dyna i gyd.
Gyda printf, nid oes angen i chi pasio mewn newidynnau neu cod fformat.
Gallwch llythrennol dim ond argraffu rhywbeth fel newline.
>> Felly gadewch i ni fynd yn ei flaen ac yn gwneud manteisio 0 eto, ailgynnal iddo, Zamyla.
Ac yn awr mae'n ychydig yn prettier.
Yn awr, fy brydlon ar ei linell newydd ei hun.
Felly dyna i gyd iawn ac yn dda.
Felly dyna yn enghraifft dda.
Ond nid wyf yn ei wneud hyd yn oed yn o reidrwydd yn Mae angen i cod caled 32.
Ti'n gwybod beth?
Gallwn say-- Dydw i ddim erioed cofio beth yw'r gwahaniaeth.
>> Ond yr wyf yn gwybod os wyf cael llythyren fach,
Rwyf yn y bôn yn awyddus i dynnu i ffwrdd beth bynnag yw'r pellter rhwng ychydig
a a mawr A, oherwydd os wyf yn cymryd bod pob un o'r llythyrau eraill yr un fath,
Dylai bod yn cael y swydd ei wneud.
Ond yn hytrach na gwneud hynny, eich bod yn gwybod beth?
Mae ffordd arall o hyd.
>> Os hynny wedi manteisio 1.c-- pe bawn i roi hynny mewn ffeil ar wahân.
gadewch i ni yn manteisio 2.c fel a ganlyn.
Rydw i'n mynd i 'n sylweddol lanhau hyn i fyny yma.
Ac yn lle hyd yn oed yn gorfod gwybod neu ofal am y rhai lefel isel
Manylion gweithredu, rwy'n yn lle hynny jyst yn mynd i argraffu gymeriad,
dyfyniad unquote, cant C, a Yna ffoniwch swyddogaeth arall sydd
bodoli sy'n cymryd dadl, sydd yn gymeriad, fel hyn.
>> Mae'n troi allan yn C, mae galwad swyddogaeth arall
i uwch, sydd, fel ei enw yn awgrymu cymryd gymeriad
ac yn ei gwneud yn at ei priflythrennau cyfatebol, ac yna ei ddychwelyd
fel y gall printf plygio i mewn yno.
Ac felly i wneud hyn, fodd bynnag, yr wyf yn Mae angen i gyflwyno un ffeil arall.
Mae'n troi allan mae ffeil arall y byddech yn unig yn gwybod o ddosbarth,
neu werslyfr, neu ar-lein cyfeirio, a elwir yn C type.h.
>> Felly os byddaf yn ychwanegu bod hyd ymhlith fy header ffeiliau, ac yn awr yn ail-lunio'r rhaglen hon,
capitalize2, ./capitalize2 Enter.
Gadewch i deipio i mewn Zamyla ym mhob llythrennau bach, yn dal i weithio yr un fath.
Ond eich bod yn gwybod beth?
Mae'n ymddangos bod i uwch Mae rhywfaint o swyddogaethau eraill.
>> A gadewch i mi gyflwyno hwn yn gorchymyn yma, rhyw fath o lletchwith
a enwyd, ond dyn am llaw.
Mae'n ymddangos bod y rhan fwyaf o gyfrifiaduron Linux, gan ein bod yn defnyddio Yma-- gweithredu Linux
system, gael gorchymyn Gelwir dyn, sy'n dweud,
hey, cyfrifiadur, roi i mi llawlyfr y cyfrifiadur.
Beth ydych chi eisiau edrych i fyny yn y llawlyfr?
>> Rwyf am i chwilio am y swyddogaeth galw i uchaf, Enter.
Ac mae'n ychydig yn cryptig i ddarllen weithiau.
Ond sylwch ein bod yn y llawlyfr Linux rhaglennydd.
Ac mae hyn i gyd destun.
Ac yn sylwi bod mae y enwi y swyddogaeth yma.
Mae'n troi allan fod ganddo gefnder o'r enw i ostwng, sy'n gwneud y gwrthwyneb.
A hysbysiad o dan crynodeb, i ddefnyddio hyn swyddogaeth y dudalen dyn, fel petai,
yn dweud wrthyf fy mod Mae angen i gynnwys c type.h.
Ac yr wyf yn gwybod bod o ymarfer.
>> Yma, mae'n dangos i mi y ddau prototeipiau ar gyfer y swyddogaeth,
felly os wyf byth yn dymuno defnyddio hyn Yr wyf yn gwybod yr hyn y maent yn cymryd fel mewnbwn,
a'r hyn y maent yn dychwelyd fel allbwn.
Ac yna os wyf yn darllen y disgrifiad, yr wyf yn gweld
yn fwy manwl yr hyn y mae'r swyddogaeth yn ei wneud.
Ond yn bwysicach, os Edrychaf dan gwerth ddychwelyd,
mae'n dweud y gwerth a ddychwelwyd yn un y llythyr a addaswyd,
neu C, mewnbwn gwreiddiol, os nid oedd y trosiad yn bosibl.
>> Mewn geiriau eraill, i uchaf yn ceisio i drosi llythyr at priflythrennau.
Ac os felly, mae'n mynd i ddychwelyd.
Ond os y gall nid ar gyfer rhai reason-- efallai ei bod yn achos eisoes uchaf,
efallai ei fod yn bwynt ebychnod neu ryw punctuation-- arall
'i' jyst yn mynd i dychwelyd y C gwreiddiol,
sy'n golygu y gallaf wneud fy cod dylunio'n well fel a ganlyn.
>> Dydw i ddim angen yr holl o llinellau darn yma o god.
Mae pob un o'r llinellau dwi wedi dim ond tynnu sylw at y gall
gael eu cwympo i mewn i un syml llinell, sef this-- cant printf
c i S braced uchaf i.
A byddai hyn yn enghraifft o ddyluniad gwell.
>> Pam rhoi ar waith yn 7 neu 8 llinell o god, beth bynnag oedd Fi jyst
dileu, pryd y gallwch yn lle hynny cwympo hynny i gyd rhesymeg a gwneud penderfyniadau
i mewn i un llinell sengl, 13 awr, sy'n yn dibynnu ar llyfrgell function--
swyddogaeth sy'n dod gyda C, ond bod gwneud yn union yr hyn yr ydych eisiau iddo wneud.
Ac, dweud y gwir, hyd yn oed os nid oedd yn dod gyda C,
gallech roi ar waith eich hun, fel y rydym wedi gweld, gyda chael int negyddol
a chael bositif int wythnos diwethaf hefyd.
>> Mae'r côd hwn yn awr yn llawer mwy darllenadwy.
Ac, yn wir, os ydym yn sgrolio i fyny, edrych pa faint mwy cryno
fersiwn yma o fy rhaglen yw.
Mae'n ychydig yn drwm top awr, gyda'r rhain i gyd yn cynnwys.
Ond mae hynny'n iawn, oherwydd erbyn hyn Dwi'n sefyll ar ysgwyddau rhaglenwyr
ger fy mron.
A phwy bynnag yr oedd pwy gweithredu i uwch mewn gwirionedd
Gwnaeth i mi ffafr, yn debyg iawn pwy bynnag rhoi ar waith Stirling 'n sylweddol
Gwnaeth i mi ffafr beth amser yn ôl.
Ac felly yn awr mae gennym rhaglen dylunio gwell
sy'n gweithredu'r un rhesymeg union.
>> Wrth siarad Stirling, gadewch mi fynd yn ei flaen ac yn gwneud hyn.
Gadewch i mi fynd yn ei flaen ac arbed y ffeil fel stirling.c.
Ac mae'n troi allan, gallwn plicio yn ôl un haen arall 'n bert syml yn awr.
Rydw i'n mynd i fynd yn ei flaen a chwip i fyny rhaglen arall yn y prif
yma yn syml yn ail-offer hyd llinyn fel a ganlyn.
Felly dyma llinell o cod sy'n cael fy llinyn gan y defnyddiwr.
Rydym yn cadw defnyddio hyn eto ac eto.
Gadewch i mi roi newidyn enw fy hun n o int fath sy'n storio rhif.
>> A gadewch i mi fynd yn ei flaen a gwneud y rhesymeg ganlynol.
Er bod y cymeriad n-fed yn s yn ei wneud Nid yw slaes gyfartal 0, mynd yn ei flaen
a cynyddiad n.
Ac yna argraffwch printf cant ff n.
Yr wyf yn honni bod y rhaglen hon yma, heb alw hyd llinyn,
ffigurau allan hyd y llinyn.
>> Ac mae'r hud yn gwbl crynhoi mewn llinell 8
yma gyda hyn sy'n edrych fel cystrawen newydd, slaes hwn 0 mewn dyfynodau sengl.
Ond pam hynny?
Wel, yn ystyried beth wedi bod mynd ar yr holl amser hwn.
>> Ac fel o'r neilltu cyn i mi anghofio, yn sylweddoli hefyd, yn ychwanegol at y tudalennau dyn
sy'n dod gyda nodweddiadol system Linux fel CS50 IDE,
sylweddoli ein bod ni, y staff y cwrs, yn cael hefyd
gwneud fersiwn gwefan o hyn un syniad a elwir yn
reference.cs50.net, sydd â pob un yr un dudalennau dyn hynny,
hynny i gyd un peth dogfennaeth, yn ogystal â
blwch bach ar y brig sy'n caniatáu chi i droi'r cyfan o'r deg
iaith ddirgel i mewn i llai cyfforddus modd, lle yr ydym, staff addysgu,
wedi mynd drwy ac yn ceisio symleiddio peth o'r iaith i gadw pethau
canolbwyntio ar y syniadau, ac nid rai o'r materion technegol.
Felly cadwch mewn cof, reference.cs50.net fel adnodd arall hefyd.
>> Ond pam yn gweithio hyd llinyn mewn y ffordd rwy'n cynnig funud yn ôl?
Dyma enw Zamyla eto.
A dyma enw Zamyla yn mewn bocs i mewn, fel yr wyf yn cadw ei wneud,
i greu darlun o ei fod, mewn gwirionedd, dim ond dilyniant o gymeriadau.
Ond nid Zamyla yn bodoli ei ben ei hun mewn rhaglen.
>> Pan fyddwch yn ysgrifennu ac yn rhedeg rhaglen, ydych chi'n defnyddio eich Mac neu eich cyfrifiadur
fel cof, neu RAM fel petai.
A allwch chi feddwl am eich cyfrifiadur fel rhai
llawer o gigabeit o gof y dyddiau hyn.
A gig yn golygu biliynau, felly biliynau o bytes.
>> Ond gadewch i ni ailddirwyn mewn pryd.
Ac mae'n debyg ein bod yn defnyddio cyfrifiadur hen iawn sy'n
dim ond 32 bytes o gof.
Gallai Rwyf i, ar fy sgrin y cyfrifiadur, yn syml tynnu hyn allan fel a ganlyn.
>> Gallwn ddweud yn syml bod fy cyfrifiadur wedi holl o gof hwn.
Ac mae hyn yn debyg i ffon cof, os cofiwch ein llun o dro diwethaf.
Ac os Fi jyst yn rhannu mae hyn yn ddigon o amser,
Yr wyf yn honni bod gen i 32 bytes o gof ar y sgrin.
>> Yn awr, mewn gwirionedd, gallaf yn unig tynnu hyd yn hyn ar y sgrin hon yma.
Felly, yr wyf i'n mynd i fynd yn ei flaen, a dim ond drwy gonfensiwn,
tynnu cof fy nghyfrifiadur fel grid, nid dim ond fel un llinell syth.
Yn benodol, yr wyf yn honni nawr bod grid hwn, mae hyn yn 8 o 4 grid,
dim ond yn cynrychioli pob un o'r 32 bytes o gof sydd ar gael yn fy Mac,
neu ar gael yn fy PC.
Ac maen nhw'n lapio ar i ddwy linell, dim ond
oherwydd ei fod yn cyd-fynd yn fwy ar y sgrin.
Ond mae hyn yn y beit cyntaf.
Dyma'r ail beit.
Mae hyn yn y drydedd beit.
>> A hon yw'r beit 32ain.
Neu, os ydym yn meddwl fel cyfrifiadur gwyddonydd, mae hyn yn beit 0, 1, 2, 3, 31.
Felly, mae gennych 0 i 31, os byddwch yn dechrau cyfrif ar 0.
>> Felly, os ydym yn defnyddio rhaglen bod galwadau yn cael llinyn,
ac rydym yn cael llinyn gan y dynol fel yr wyf ddim yn enw Zamyla, Z-A-M-Y-L-A,
sut yn y byd y mae'r trac cadw cyfrifiadurol y mae beit,
pa talp o gof, sy'n perthyn i ba llinyn?
Mewn geiriau eraill, os byddwn yn symud ymlaen i deipio enw arall i mewn i'r cyfrifiadur,
fel Andi hwn, yn galw cael llinyn yr eildro,
A-N-D-I ddod i ben i fyny yn y cof cyfrifiadur yn ogystal.
Ond sut?
>> Wel, mae'n ymddangos fod o dan y cwfl, pa C yn ei wneud wrth storio llinynnau
bod y mathau dynol mewn, neu fod dod o ryw ffynhonnell arall, a yw'n
delineates diwedd iddynt yn slaes character-- arbennig
0, sydd ychydig yn ffordd arbennig o ddweud 80 ddarnau yn olynol.
>> Felly A-- dyma'r cofio rhif 97.
Felly, mae rhai patrwm o 8 did yn cynrychioli rhif degol 97.
Mae'r slaes 0 yn llythrennol rhif 0, nul a.k.a., N-U-L, yn wahanol yn gynharach,
N-U-L-L, a oedd yn siarad yr ydym am.
Ond am nawr, dim ond yn gwybod bod hyn yn slaes 0 yn unig yw 80 darnau yn olynol.
>> Ac mae'n dim ond llinell hon yn y tywod sy'n dweud unrhyw beth ar y chwith
yn perthyn i un llinyn, neu un math data.
Ac unrhyw beth ar y dde yn perthyn i rywbeth arall.
Andi yn enw, yn y cyfamser, a dim ond ar eu golwg
digwydd i lapio ar y lein arall, ond dim ond yn fanylyn esthetig,
yn yr un modd yn nul derfynu.
>> Mae'n llinyn o A-N-D-I cymeriadau, yn ogystal phumed gymeriad gyfrinach,
pob 0 ddarnau, mai dim ond llinell rhwng diwedd enw Andi yn ogystal.
Ac os ydym yn galw cael llinyn trydydd tro yn y cyfrifiadur i gael llinyn fel
Maria, M-A-R-I-A, yn yr un modd mae Maria enw nul derfynu gyda slaes 0.
>> Mae hyn yn sylfaenol wahanol o sut y byddai cyfrifiadur nodweddiadol
storio yn gyfanrif, neu fflôt, neu arall fathau o ddata yn dal, gan fod galw i gof,
yn gyfanrif fel arfer 32 darnau, neu 4 bytes, neu efallai hyd yn oed 64 darnau,
neu wyth bytes.
Ond mae llawer o primitives mewn cyfrifiadur mewn iaith raglennu
cael nifer penodol o bytes o dan y hood--
efallai 1, efallai 2, efallai 4, efallai 8.
>> Ond llinynnau, drwy gynllunio, yn cael nifer deinamig o gymeriadau.
Nid ydych yn gwybod ymlaen llaw, nes y mathau dynol mewn Z-A-M-Y-L-A,
neu M-A-R-I-A, neu A-N-D-I. Nid ydych yn gwybod faint o weithiau y defnyddiwr yn mynd i daro
y bysellfwrdd.
Felly, nad ydych yn gwybod sut nifer o gymeriadau o flaen llaw
rydych yn mynd i angen.
>> Ac felly C unig fath o ddail fel briwsion bara cudd o dan y cwfl
ar ddiwedd y llinyn.
Ar ôl storio Z-A-M-Y-L-A mewn cof, mae hefyd yn jyst yn rhoi'r cyfatebol
cyfnod.
Ar ddiwedd brawddeg, ei fod yn rhoi 80 o ddarnau, er
i gofio ble Zamyla dechrau ac yn gorffen.
>> Felly beth yw'r cysylltiad, Yna, at y rhaglen hon?
Mae'r rhaglen hon yma, Stirling, yn unig yw mecanwaith
ar gyfer cael llinyn oddi wrth y defnyddiwr, llinell 6.
Llinell 7, yr wyf yn datgan newidyn Gelwir n ac yn gosod yn hafal i 0.
>> Ac yna yn unol 8, yr wyf yn syml yn gofyn i'r cwestiwn, tra bod y cymeriad n-fed yn ei wneud
Nid yw cyfartal pob 0 bits-- mewn geiriau eraill, nid yw'n
gyfartal arbennig hwn cymeriad, slaes 0, a oedd yn
Roedd yn union hynny character-- nul arbennig mynd yn ei flaen a dim ond cynyddiad n.
>> Ac yn cadw ei wneud, ac yn cadw ei wneud, ac yn cadw ei wneud.
Ac felly er bod yn y gorffennol rydym wedi ei ddefnyddio i,
mae'n berffaith iawn semantig i ddefnyddio n,
os ydych ond yn ceisio ei cyfrif y tro hwn yn fwriadol,
a dim ond am ei alw n.
Felly, mae hyn yn unig yn cadw gofyn y cwestiwn, yw'r cymeriad n-fed s pob 0au?
Os nad yw, yn edrych i'r golwg nesaf, edrych i'r nesaf, edrychwch i'r nesaf,
edrych i'r nesaf.
>> Ond cyn gynted ag y byddwch yn gweld slaes 0, y llinell hon loop-- 9 drwy 11-- stopio.
Rydych dorri allan o'r ddolen tra, gan adael y tu mewn o hynny n newidyn
cyfanswm cyfrif o'r holl o'r cymeriadau yn y llinyn a welsoch,
a thrwy hynny ei brintio.
Felly gadewch i ni geisio hyn.
>> Gadewch i mi fynd yn ei flaen ac, heb ddefnyddio'r swyddogaeth Stirling,
ond dim ond yn defnyddio fy fersiwn homegrown hun yma a elwir yn Stirling, gadewch i mi fynd yn ei flaen
a rhedeg Stirling, teipiwch rhywbeth fel Zamyla, yr wyf yn gwybod ymlaen llaw
yw chwe cymeriadau.
Gadewch i ni weld a yw'n gweithio.
Yn wir, mae'n chwech.
Gadewch i ni geisio â Rob, tri chymeriad, tri chymeriad yn ogystal, ac yn y blaen.
Felly dyna i gyd sy'n mynd ar o dan y cwfl.
Ac yn sylwi ar y cysylltiadau, Yna, gyda'r wythnos gyntaf
o ddosbarth, lle buom yn siarad am rhywbeth fel tynnu,
sydd ychydig haenu hwn o syniadau, neu cymhlethdod, ar ben egwyddorion sylfaenol.
Yma, rydym yn fath o chwilio o dan y cwfl Stirling,
fel petai, er mwyn chyfrif i maes, sut y byddai'n cael ei roi ar waith?
>> A gallem ail-roi ar waith ein hunain.
Ond rydym yn byth yn mynd eto i ail-weithredu Stirling.
Rydym yn jyst yn mynd i defnyddio Stirling er mwyn
i mewn gwirionedd yn cael rhywfaint o hyd llinynnau.
>> Ond does dim hud o dan y cwfl.
Os ydych yn gwybod bod oddi tano y cwfl, llinyn
yn unig yw dilyniant o gymeriadau.
A bod dilyniant o gymeriadau Gellir mynd i'r afael rhifiadol
gyda braced 0, braced 1, braced 2, ac yr ydych
yn gwybod bod ar ddiwedd y llinyn yn cymeriad arbennig, gallwch chyfrif i maes
sut i wneud unrhyw beth y rhan fwyaf mewn rhaglen, gan fod yr holl ei fod yn boils i lawr i
yn darllen ac ysgrifennu cof.
Hynny yw, yn newid ac yn edrych ar gof, neu symud pethau
o gwmpas yn y cof, pethau argraffu ar y sgrin, ac yn y blaen.
>> Felly gadewch i ni yn awr yn defnyddio'r newfound hwn dealltwriaeth o'r hyn Llinynnau mewn gwirionedd
yw o dan y cwfl, a plicio yn ôl un haen arall
bod hyd yn hyn rydym wedi bod yn anwybyddu yn gyfan gwbl.
Yn benodol, unrhyw adeg rydym wedi gweithredu rhaglen,
rydym wedi cael y llinell hon o god agos at y brig yn datgan prif.
Ac rydym wedi penodedig prif ddi-rym int.
>> A bod yn ddi-rym y tu mewn i'r cromfachau Mae bod yn ei ddweud yr holl amser hwn y prif
ei hun yn cymryd unrhyw ddadleuon.
Unrhyw fewnbwn mai prif yw mynd i gael oddi wrth y defnyddiwr
rhaid iddo ddod o rai eraill mecanwaith, fel get int,
neu gael arnofio, neu gael llinyn, neu ryw swyddogaeth arall.
Ond mae'n troi allan y pan fyddwch yn ysgrifennu rhaglen,
alli 'n weithredol yn nodi y bydd y rhaglen hon
cymryd mewnbwn gan y dynol yn y llinell orchymyn ei hun.
>> Mewn geiriau eraill, er ein bod hyd yn hyn wedi bod yn rhedeg yn unig ./hello helo
neu raglenni tebyg, pob un o'r rhaglenni eraill yr ydym wedi bod yn defnyddio,
nad ydym ni ein hunain yn ysgrifennu, wedi bod yn cymryd, mae'n ymddangos,
arguments-- llinell orchymyn pethau fel gwneud.
Yr ydych yn dweud rhywbeth fel gwneud, ac yna ail air.
Neu chlang, byddwch yn dweud chlang, ac yna ail air, enw'r ffeil.
>> Neu hyd yn oed RM neu CP, fel y gallai wedi gweld neu eu defnyddio eisoes
i dynnu neu gopïo ffeiliau.
Mae pob un yn mynd hyn a elwir yn arguments-- llinell orchymyn
geiriau ychwanegol wrth yr anogwr terfynol.
Ond hyd yn hyn, rydym yn Nid ni ein hunain wedi cael
moethus hwn o gymryd mewnbwn gan y defnyddiwr pan fydd ef neu hi mewn gwirionedd yn rhedeg
y rhaglen ei hun yn y llinell orchymyn.
>> Ond gallwn wneud hynny drwy ail-ddatgan prif symud ymlaen, nid fel rhai
gwag mewn cromfachau, ond y ddau dadleuon
instead-- y cyntaf yn gyfanrif, a'r ail rhywbeth
newydd, rhywbeth ein bod ni'n mynd i alw amrywiaeth, rhywbeth tebyg mewn ysbryd
i hyn a welsom yn Scratch fel rhestr, ond amrywiaeth o linynnau, gan y byddwn yn fuan yn gweld.
Ond gadewch i ni weld hyn drwy Er enghraifft, cyn i ni
gwahaniaethu yn union beth mae hynny'n ei olygu.
>> Felly os byddaf yn mynd i mewn i CS50 IDE yma, yr wyf wedi mynd yn ei flaen
a datgan mewn ffeil o'r enw argv0.c y templed canlynol.
Ac yn sylwi ar y unig beth mae hynny'n wahanol hyd yn hyn
yw fy mod i wedi newid yn ddi-rym i int argc llinyn argv braced agored, yn agos
braced.
Ac yn sylwi ar hyn o bryd, mae yna dim byd tu mewn cromfachau hynny.
>> Does dim rhif.
A does dim i, neu n, neu unrhyw lythyr arall.
Im 'jyst yn defnyddio'r cromfachau sgwâr ar hyn o bryd,
am resymau byddwn yn dod yn ôl i mewn dim ond hyn o bryd.
>> Ac yn awr yr hyn yr wyf i'n mynd i wneud yw hyn.
Os argc hafal hafal 2-- a dwyn i gof bod hafal hafal
yw'r gweithredwr cydraddoldeb cymharu chwith ac i'r dde ar gyfer cydraddoldeb.
Dyw hi ddim yn yr aseiniad gweithredydd, sef
r hafalnod sengl, sy'n golygu copi o'r dde i'r chwith rhywfaint o werth.
>> Os argc hafal hafal 2, yr wyf am dyweder, printf, helo, percents, llinell newydd,
ac yna plwg in-- a dyma y newydd argv trick-- braced 1, am resymau
y byddwn yn dod yn ôl at mewn munud.
Else os nad yw argc yn gwneud gyfartal 2, eich bod yn gwybod beth?
Gadewch i jyst mynd yn ei flaen ac, fel arfer, print allan byd helo heb amnewid.
>> Felly byddai'n ymddangos bod os argc, a oedd yn yn sefyll am gyfrif dadl, yn hafal i 2,
Rydw i'n mynd i argraffu helo rhywbeth neu'i gilydd.
Fel arall, yn ddiofyn, rwy'n mynd i'r wasg helo byd.
Felly beth mae hyn yn ei olygu?
>> Wel, gadewch i mi fynd yn ei flaen ac arbed y ffeil, ac yna yn gwneud argv0,
ac yna ./argv0, Enter.
Ac mae'n dweud helo byd.
Yn awr, pam hynny?
>> Wel, mae'n troi allan unrhyw adeg rydych rhedeg rhaglen yn y llinell orchymyn,
ydych yn llenwi'r hyn yr ydym annhymerus ' Yn gyffredinol, ffoniwch fector dadl.
Mewn geiriau eraill, yn awtomatig y cyfrifiadur, y system weithredu,
yn mynd i law at eich rhaglen ei hun yn rhestr o'r holl o'r geiriau
bod y dynol teipio yn y brydlon, rhag ofn i chi
y rhaglennydd eisiau ei wneud rhywbeth gyda'r wybodaeth honno.
Ac yn yr achos hwn, yr unig air Rwyf wedi teipio wrth yr anogwr yn ./argv0.
>> Ac felly y nifer o ddadleuon sy'n cael eu trosglwyddo i fy rhaglen yn un.
Mewn geiriau eraill, mae'r ddadl cyfrif, a elwir hefyd yn argc
yma fel cyfanrif, dim ond un.
Un, wrth gwrs, nid yw'n gyfartal dau.
Ac felly dyma beth printiau, helo byd.
>> Ond gadewch i mi gymryd hyn yn rhywle.
Gadewch i mi ddweud, argv0.
Ac yna beth am Maria?
Ac yna daro Chofnoda.
>> A sylwi ar yr hyn sy'n digwydd yn hudol yma.
Yn awr, yn hytrach na byd helo, mae gennyf Newidiodd ymddygiad y rhaglen hon
drwy gymryd y cyfraniad chi, ni oddi wrth get llinyn neu ryw swyddogaeth arall,
ond o, mae'n debyg, fy gorchymyn ei hun, yr hyn yr wyf deipio yn wreiddiol yn.
Ac yr wyf yn gallu chwarae gêm hon eto gan ei newid i Stelios, er enghraifft.
>> Ac yn awr yr wyf yn gweld enw arall yn dal i.
Ac yma, efallai y byddwn yn ei ddweud Andi.
Ac efallai i mi ddweud Zamyla.
A gallwn chwarae'r gêm hon drwy'r dydd, jyst topio mewn gwerthoedd gwahanol,
cyn belled gan fy mod yn rhoi union dau air wrth yr anogwr,
fel bod argc, fy nadl cyfrif, yw 2.
>> Ydw i'n gweld bod enw plygio i mewn printf, fesul cyflwr hwn fan hyn?
Felly, rydym yn ymddangos i fod yn awr y gallu mynegiannol
o gymryd mewnbwn gan fecanwaith arall, o'r llinell orchymyn fel y'i gelwir,
yn hytrach na gorfod aros nes bod y defnyddiwr yn rhedeg y rhaglen,
ac yna ysgogi ef neu hi gan ddefnyddio rhywbeth fel get llinyn.
>> Felly beth yw hwn?
Argc, unwaith eto, yn unig yw cyfanrif, y nifer o words-- arguments--
bod y defnyddiwr a ddarperir yn y brydlon, yn y ffenestr derfynell,
gan gynnwys enw'r rhaglen.
Felly mae ein ./argv0 yw, yn effeithiol, enw'r rhaglen,
neu sut yr wyf yn rhedeg y rhaglen.
>> Sy'n cyfrif fel gair.
Felly, byddai argc fod yn 1.
Ond pan fyddaf yn ysgrifennu Stelios, neu Andi, neu Zamyla, neu Maria,
mae hynny'n golygu y cyfrif ddadl yw dau.
Ac felly yn awr mae dau air pasio yn.
>> A rhybudd, gallwn barhau rhesymeg hon.
Os wyf mewn gwirionedd yn dweud rhywbeth fel Zamyla Chan,
enw llawn, a thrwy hynny fynd heibio tri dadleuon i gyd,
erbyn hyn mae'n ei ddweud 'r ball eto, oherwydd, wrth gwrs, nid yw 3 yn gwneud hafal 2.
>> Ac felly yn y modd hwn, mae gen i mynediad drwy argv hwn ddadl newydd
y gallem dechnegol ffoniwch unrhyw beth yr ydym ei eisiau.
Ond erbyn confensiwn, mae'n argv a argc, yn y drefn honno.
Argv, fector dadl, yn garedig o gyfystyr ar gyfer rhaglennu
nodwedd yn C a elwir arae.
>> Arae yn rhestr o werthoedd tebyg yn ôl, wrth gefn, i gefnogi, i gefn.
Mewn geiriau eraill, os oes un yn iawn yma yn RAM, yr un nesaf yn iawn nesaf iddo,
ac i'r dde nesaf iddo.
Dydyn nhw ddim i gyd dros y lle.
A bod senario olaf, ble mae pethau i gyd dros y lle yn y cof,
mewn gwirionedd gall fod yn nodwedd pwerus.
Ond byddwn yn dod yn ôl at hynny pan fyddwn yn siarad am strwythurau data ffansi.
Am y tro, amrywiaeth yn unig yw darn o gof cyffiniol,
mae pob un o'i elfennau yn yn ôl, wrth gefn, i gefnogi, i gefnogi,
ac yn gyffredinol yr un fath.
>> Felly, os ydych yn meddwl am, o eiliad yn ôl, beth yw llinyn?
Wel, llinyn, fel Zamyla, Z-A-M-Y-L-A, yw, yn dechnegol,
dim ond arae.
Mae'n amrywiaeth o gymeriadau.
>> Ac felly os ydym wir yn tynnu hyn, gan fy mod yn wnaeth yn gynharach, fel darn o gof,
mae'n ymddangos fod pob un o'r rhain cymeriadau yn cymryd i fyny beit.
Ac yna mae hynny arbennig cymeriad sentinel, mae'r slaes 0,
neu bob wyth 0 ddarnau, bod llinell rhwng diwedd y llinyn.
Felly llinyn, mae'n troi allan, dyfynnu llinyn unquote,
yn unig yw amrywiaeth o chara-- CHAR bod yn fath data gwirioneddol.
>> Ac yn awr argv, meanwhile-- gadewch i ni fynd yn ôl at y rhaglen.
Argv, er ein bod yn gweld y gair llinyn yma, nid yn llinyn ei hun.
Argv, dadl fector, yn amrywiaeth o dannau.
>> Felly, yn union fel y gallwch gael amrywiaeth o cymeriadau, gallwch gael lefel uwch,
amrywiaeth o strings-- felly, er enghraifft, pan fyddaf yn teipio funud yn ôl ./argv0
argv0, gofod Z-A-M-Y-L-A, yr wyf yn honni bod Roedd gan argv dau linyn yn ./argv0 iddo--,
a Z-A-M-Y-L-A. yn geiriau eraill, argc yn 2.
Pam hynny?
>> Wel, yn effeithiol, beth sy'n mynd ar yw bod pob un o'r llinynnau hyn
yw, wrth gwrs, amrywiaeth o gymeriadau fel o'r blaen, mae pob un o'i gymeriadau
cymryd i fyny un beit.
A pheidiwch drysu'r 0 gwirioneddol yn enw'r rhaglen gyda'r 0,
sy'n golygu pob un o'r 80 ddarnau.
Ac Zamyla, yn y cyfamser, yn dal i fod hefyd amrywiaeth o gymeriadau.
>> Felly, ar ddiwedd y dydd, 'n sylweddol yn edrych fel hyn o dan y cwfl.
Ond argv, yn ôl natur y modd y prif gwaith, yn caniatáu i mi i lapio hyn oll
i fyny i mewn, os mynnwch, amrywiaeth mwy hynny, os ydym yn ychydig dros y symleiddio
beth mae'r darlun yn edrych fel ac nid ydynt yn yn eithaf tynnu i raddfa i fyny yno,
arae mae hyn yn unig o faint 2, y cyntaf elfen sy'n cynnwys llinyn,
ail elfen sy'n cynnwys llinyn.
Ac, yn ei dro, os ydych yn fath o chwyddo i mewn ar bob
o linynnau hynny, yr hyn yr ydych gweler o dan y cwfl
yw bod pob llinyn yn unig amrywiaeth o gymeriadau.
>> Yn awr, yn union fel gyda llinynnau, roeddem yn gallu cael mynediad
i gymeriad i-ed mewn llinyn defnyddio'r nodiant braced sgwâr.
Yn yr un modd, gyda arrays yn gyffredinol, gallwn
defnyddio nodiant braced sgwâr i gael ar unrhyw nifer o linynnau mewn amrywiaeth?
Er enghraifft, gadewch i mi mynd yn ei flaen ac yn gwneud hyn.
>> Gadewch i mi fynd yn ei flaen ac yn creu argv1.c, sydd ychydig yn wahanol y tro hwn.
Yn hytrach na gwirio am argc2, Rydw i'n mynd i yn lle hynny wneud hyn.
Ar gyfer int i mi gael 0, yr wyf yn llai na argc, yr wyf yn ogystal a mwy,
ac yna argraffwch y tu mewn o hyn, cant s, llinell newydd, ac yna
argv braced i.
>> Felly, mewn geiriau eraill, dydw i ddim yn ymdrin â cymeriadau unigol ar hyn o bryd.
Argv, fel a awgrymir gan y rhain sgwâr gwag braces ar y dde o'r enw'r argv,
golygu argv yw amrywiaeth o dannau.
Ac argc yn unig yw int.
>> Mae'r llinell yma, 6, yn gan ddweud set ff cyfartal i 0.
Cyfrwch yr holl ffordd i fyny at, ond heb gynnwys, argc.
Ac yna ar bob iteriad, argraffu llinyn.
Pa llinyn?
>> Mae'r llinyn i-ed yn argv.
Felly lle o'r blaen roeddwn i'n gan ddefnyddio'r braced sgwâr
nodiant i gyrraedd y ith cymeriad mewn llinyn, yn awr
Im 'yn arfer y nodiant braced sgwâr i gyrraedd y llinyn ith yn arae.
Felly mae'n fath o un haen uchod, gysyniadol.
>> Ac felly beth daclus am hyn rhaglen bellach, os wyf yn llunio argv1,
ac yna gwneud ./argv1, ac yna teipiwch yn rhywbeth fel Baz bar foo,
sef y tri gair diofyn bod Gwyddonydd cyfrifiadurol yn cyrraedd ar gyfer unrhyw adeg
ef neu hi angen rhai geiriau dalfan, a tharo Enter, pob un o'r geiriau hynny,
gan gynnwys enw'r rhaglen, sy'n yn argv yn y lleoliad cyntaf,
yn dod i ben i fyny yn cael eu hargraffu un ar y tro.
Ac os byddaf yn newid hyn, ac yr wyf yn dweud rhywbeth fel argv1 Zamyla Chan,
rydym yn cael pob un o'r tri o'r rheiny geiriau, sydd yn argv0,
argv1, argv2, oherwydd yn yr argc achos, y cyfrif, yw 3.
>> Ond yr hyn sy'n daclus yw os ydych yn deall hynny argv yn unig yw amrywiaeth o dannau,
ac eich bod yn deall bod llinyn yn amrywiaeth o gymeriadau,
gallwn mewn gwirionedd yn fath o yn defnyddio hyn sgwâr nodiant braced sawl gwaith
i ddewis llinyn, ac yna dewiswch cymeriad o fewn y llinyn,
deifio yn ddyfnach fel a ganlyn.
Yn yr enghraifft hon, gadewch i mi fynd ymlaen a galw argv2.c hwn.
Ac yn yr enghraifft hon, gadewch i mi fynd yn ei flaen a gwneud y canlynol-- gyfer int fi gael 0,
ff yn llai na argc, fi plws yn ogystal, yn union fel o'r blaen.
Felly, mewn words-- eraill ac yn awr mae hyn yn mynd yn ddigon cymhleth.
Yna mi i'n mynd i ddweud ailadrodd dros llinynnau yn argv,
fel sylw i mi fy hun.
Ac yna dwi'n mynd i gael nythu ar gyfer dolen, a oedd mae'n debyg y byddwch
wedi ei wneud, neu eu hystyried wneud, yn Scratch, lle
Rydw i'n mynd i ddweud fy mod int-- Nid yw mynd i ddefnyddio i eto,
oherwydd nid wyf am i gysgodi, neu math o ysgrifennu dros y ff bresennol.
>> Rydw i'n mynd i, yn lle hynny, yn dweud j, oherwydd dyna fy ewch i amrywiol ar ôl i,
pan Im 'jyst yn ceisio yn cyfrif rhifau syml.
Am j cael 0-- a hefyd, n, yn mynd i cael hyd starn o argv braced i,
cyn belled ag y j yn llai na m, j yn ogystal a mwy, yn gwneud y canlynol.
A dyma y rhan ddiddorol.
>> Argraffwch cymeriad a llinell newydd, blygio mewn argv braced i, braced j.
Iawn, felly gadewch i mi ychwanegu rhai sylwadau yma.
Ailadrodd drosodd cymeriadau mewn llinyn cyfredol,
print gymeriad j-fed mewn i-ed llinyn.
Felly nawr, gadewch i ni ystyried pa sylwadau hyn yn ei olygu.
>> Ailadrodd dros y tannau mewn argv-- faint o
llinynnau yn argv, sef arae?
Argc llawer, felly rwy'n ailadrodd o fi yn gyfartal 0 hyd at argc.
Yn y cyfamser, faint o gymeriadau yn y llinyn i-ed yn argv?
>> Wel, er mwyn cael yr ateb hwnnw, Fi jyst yn galw hyd llinyn
ar y llinyn cyfredol gofal i mi am, sef argv braced i.
Ac yr wyf i'n mynd i storio dros dro fod gwerth yn n, dim ond ar gyfer pwrpasau caching,
ei gofio ar gyfer effeithlonrwydd.
Ac yna dwi'n mynd ymgychwyn j i 0, gadw i fynd cyn belled â j yn llai na n,
ac ar bob gynyddiad ailadrodd j.
>> Ac yna i mewn yma, fesul fy sylw ar llinell 12,
argraffu gymeriad, wedi'i ddilyn gan y llinell newydd,
braced penodol argv ff rhoi llinyn i-ed i mi
yn argv-- felly y gair cyntaf, mae'r ail air, y trydydd gair, beth bynnag.
Ac yna deifio j yn ddyfnach, ac yn cael mi cymeriad j-fed o'r gair.
Ac felly, i bob pwrpas, gallwch drin argv fel aml-ddimensiwn,
fel dau-ddimensiwn, array, lle pob gair math o edrych
fel hyn yn eich meddwl yn llygad, a phob cymeriad
yn fath o gyfansoddi yn colofn, os yw hynny'n helpu.
>> Mewn gwirionedd, pan fyddwn yn tynnu hyn ar wahân yn yr wythnosau yn y dyfodol,
mae'n mynd i fod ychydig yn mwy soffistigedig na hynny.
Ond gallwch mewn gwirionedd feddwl am hynny, am y tro,
fel dim ond mae hyn dau ddimensiwn array, lle mae un lefel ohono
yw pob un o'r llinynnau.
Ac yna os ydych yn plymio yn ddyfnach, byddwch yn yn gallu cael at y cymeriadau unigol
ynddynt drwy ddefnyddio'r nodiant hwn yma.
>> Felly beth yw effaith net?
Gadewch i mi fynd yn ei flaen ac gwneud darn argv2-- iddo.
Yr wyf yn gwneud camgymeriad yma.
Ymhlyg datgan y Stirling swyddogaeth llyfrgell.
Felly, yr holl amser hwn, mae'n efallai y bo'n briodol
ein bod yn fath o orffen yn union lle rydym yn dechrau.
>> Rwy'n gwyneb, ymhlyg datgan Stirling swyddogaeth llyfrgell.
OK, arhoswch funud.
Yr wyf yn cofio hynny, yn enwedig gan ei fod yn iawn yma.
Mae angen i mi gynnwys string.h mewn y fersiwn hon o'r rhaglen.
>> Gadewch i mi fynd yn ei flaen ac yn cynnwys string.h, ac eithrio bod, mynd yn ei flaen
ac ail-grynhoi argv2.
Ac yn awr, dyma ni, yn gwneud argv2, Enter.
Ac er 'i' ychydig yn cryptig ar yr olwg gyntaf,
sylwi bod, yn wir, beth ei argraffu yn dot argv2.
>> Ond os wyf yn teipio rhai geiriau ar ôl y brydlon, fel argv2 Zamyla Chan,
Mewnbynnu, hefyd ychydig cryptig ar yr olwg gyntaf.
Ond os ydym yn sgrolio yn ôl i fyny, ./argv2 Z-A-M-Y-L-A C-H-A-N.
Felly rydym wedi bwysleisiodd dros bob gair.
Ac, yn ei dro, rydym wedi Ailadroddodd dros pob cymeriad o fewn gair.
>> Nawr, ar ôl hyn i gyd, sylweddoli fod yna
un fanylion eraill yr ydym wedi bod yn garedig o anwybyddu y tro cyfan.
Rydym yn unig pryfocio ar wahân beth Gall prif yn mewnbynnau fod?
Beth am allbwn prif yn?
>> Mae hyn i gyd bryd, rydym wedi bod jyst copïo a gludo
y gair int o flaen y brif, er efallai y byddwch yn gweld ar-lein,
weithiau yn anghywir mewn fersiynau hŷn o C a crynoadyddion, eu bod yn dweud yn ddi-rym,
neu ddim byd o gwbl.
Ond, yn wir, ar gyfer y fersiwn o C yr ydym yn ei ddefnyddio,
C 11, neu 2011, yn sylweddoli y dylai fod yn int.
A dylai fod naill ai'n ddi-rym neu argc a argv yma.
>> Ond prif pam int?
Beth yw mewn gwirionedd yn dychwelyd?
Wel, mae'n troi allan i gyd y tro hwn, unrhyw tro y byddwch wedi ysgrifennu prif raglen
mae bob amser yn dychwelyd rhywbeth.
Ond mae wedi bod yn gwneud hynny yn gyfrinachol.
>> Mae hynny'n rhywbeth hwn yn int, fel llinell 5 yn awgrymu.
Ond beth int?
Wel, mae hyn yn confensiwn mewn rhaglenni,
lle os nad oes dim wedi mynd o chwith a popeth yn iawn,
rhaglenni a swyddogaethau cyffredinol return-- braidd counterintuitively--
0.
0 gyffredinol yn arwydd popeth yn iawn.
Felly, hyd yn oed er eich barn am fel ffug mewn sawl cyd-destun,
mewn gwirionedd yn gyffredinol yn golygu yn beth da
>> Yn y cyfamser, os rhaglen yn dychwelyd 1, neu'n negyddol 1, neu 5, neu negyddol 42,
neu unrhyw-0 di werth, sydd yn gyffredinol yn arwydd
bod rhywbeth wedi mynd o'i le.
Yn wir, ar eich Mac neu PC eich hun, Efallai eich bod wedi gweld mewn gwirionedd
neges gwall, lle mae'n yn dweud rhywbeth neu'i gilydd, gwall
cod negyddol 42, neu wall cod 23, neu rywbeth fel 'na.
Y rhif hwnnw yn gyffredinol dim ond awgrym i'r rhaglennydd, neu'r cwmni
a wnaeth y meddalwedd, beth aeth o'i le a pham,
fel y gallant edrych drwy eu dogfennau neu god,
a chyfrif i maes yr hyn y mae'r gwall yn ei olygu.
Dyw hi ddim yn gyffredinol ddefnyddiol i ni ddefnyddwyr terfynol.
>> Ond pan prif dychwelyd 0, popeth yn iawn.
Ac os nad ydych yn nodi pa brif dylai ddychwelyd,
bydd yn jyst yn awtomatig dychwelyd 0 ar eich cyfer chi.
Ond yn dychwelyd rhywbeth arall mewn gwirionedd yn ddefnyddiol.
>> Yn y rhaglen olaf, gadewch i mi mynd yn ei flaen ac yn galw exit.c hwn,
a chyflwyno yr olaf o heddiw pynciau, a elwir yn cod gwall.
Gadewch i mi fynd yn ei flaen ac yn cynnwys ein ffeiliau cyfarwydd i fyny top, yn gwneud prif int.
A'r tro hwn, gadewch i ni wneud argc int, argv llinyn, a gyda fy cromfachau
awgrymu ei fod yn y rhesi.
Ac yna gadewch i mi jyst gwneud gwiriad pwyll.
Y tro hwn, os nad yw argc yn gwneud gyfartal 2, yna rydych yn gwybod beth?
Ei anghofio.
Yr wyf yn mynd i ddweud bod, hey, defnyddwyr, rydych yn colli ymresymiad llinell orchymyn
n slaes.
>> Ac yna dyna ni.
Rwyf am i ymadael.
Yr wyf yn mynd i preemptively, a cyn pryd mewn gwirionedd, yn dychwelyd
rhywbeth ar wahân i'r rhif 1.
Mae'r ewch i werth am y cyntaf gwall all ddigwydd yw 1.
Os oes gennych rywfaint gwallus eraill sefyllfa a allai ddigwydd,
gallech ddweud dychwelyd 2 neu ddychwelyd 3, neu efallai hyd yn oed yn negyddol 1 neu negyddol 2.
>> Mae'r rhain yn codau ymadael yn unig sydd, ar y cyfan,
ond yn ddefnyddiol i'r rhaglennydd, neu'r cwmni sy'n llongau y meddalwedd.
Ond mae'r ffaith ei fod yn Nid 0 yn yr hyn sy'n bwysig.
Felly, os yn y rhaglen hon, yr wyf am gwarantu bod y rhaglen hon yn unig
yn gweithio os bydd y defnyddiwr yn rhoi i mi gyda cyfrif dadl o ddau,
enw'r rhaglen, ac mae rhai eraill gair, gallaf orfodi cymaint fel a ganlyn,
gweiddi ar y defnyddiwr gyda printf dywediad, coll ymresymiad llinell orchymyn,
dychwelyd 1.
Bydd hynny yn unig ar unwaith dod allan o'r rhaglen.
>> Dim ond os argc hafal 2 byddwn yn mynd i lawr yma, a phryd wyf i'n mynd i ddweud,
helo cant s, slaes n, argv1.
Mewn geiriau eraill, rwy'n ddim yn mynd ar ôl argv 0,
sydd ychydig enw'r rhaglen.
Rwyf am i argraffu helo, coma, yr ail air y mae'r dynol teipio.
Ac yn yr achos hwn ar llinell 13, popeth yn iawn.
>> Gwn fod argc yw 2 rhesymegol o'r rhaglen hon.
Rydw i'n mynd i fynd yn ei flaen ac yn dychwelyd 0.
Fel o'r neilltu, yn cadw mewn cof bod mae hyn yn wir yn Scratch hefyd.
>> Yn rhesymegol, gallwn i wneud hyn ac grynhoi y llinellau hyn
cod mewn arall hwn cymal yma.
Ond mae hynny'n fath o ddiangen tolcio fy cod.
Ac yr wyf am wneud super glir nad waeth beth,
yn ddiofyn, helo bydd rhywbeth yn cael ei argraffu,
cyhyd ag y bo'r defnyddiwr yn cydweithio.
>> Felly mae'n gyffredin iawn i'w defnyddio cyflwr, dim ond os,
i ddal rhai gwallus sefyllfa, ac yna ymadael.
Ac yna, ar yr amod i gyd yw yn dda, nid yn cael arall,
ond dim ond yn cael y cod tu allan, os, am ei fod yn
cyfatebol yn hyn achos penodol, yn rhesymegol.
Felly rwy'n dychwelyd 0, dim ond i arwyddo benodol popeth yn iawn.
>> Os byddaf yn hepgor dychwelyd 0, byddai'n cymryd yn ganiataol yn awtomatig i mi.
Ond yn awr fy mod yn dychwelyd un mewn o leiaf yr achos hwn,
Rydw i'n mynd i, ar gyfer mesur da a eglurder, yn dychwelyd 0 yn yr achos hwn.
Felly nawr gadewch i mi fynd yn ei flaen ac yn gwneud allanfa, sydd yn segue perffaith i adael.
>> Ond gwnewch allanfa, a gadewch i mi fynd ymlaen llaw a gwneud ./exit, Enter.
Ac mae'r rhaglen yelled ar fi, coll ymresymiad llinell orchymyn.
OK, gadewch i mi gydweithredu.
>> Gadewch i mi yn lle hynny wneud ./exit, David, Enter.
Ac yn awr y mae'n ei ddweud, helo David.
Ac na fyddech fel arfer yn gweld hyn.
>> Ond mae'n troi allan bod yna ffordd arbennig mewn Linux i weld mewn gwirionedd
gyda pha cod allanfa rhaglen exited.
Weithiau mewn graffigol byd fel Mac OS neu Windows,
ydych ond yn gweld y rhifau hyn pan fydd neges gwall pops i fyny ar y sgrîn
a'r rhaglennydd yn dangos eich bod rhif.
Ond os ydym am weld beth y gwall neges yw, gallwn wneud hynny Yma--
felly ./exit, Mewnbynnu, print coll ymresymiad llinell orchymyn.
>> Os wyf yn awr yn gwneud $ adlais ?, sef chwerthinllyd cryptig yn edrych.
Ond $?
yw'r incantation hudol sy'n dweud, hey, cyfrifiaduron,
ddweud wrthyf beth mae'r blaenorol cod allanfa rhaglen oedd.
Ac yr wyf daro Chofnoda.
Gwelaf 1, oherwydd dyna beth yr wyf yn wrth fy mhrif swyddogaeth i ddychwelyd.
>> Yn y cyfamser, os wyf yn gwneud ./exit David, a tharo Enter, yr wyf yn gweld, helo David.
Ac os wyf yn awr yn gwneud $ adleisio ?, yr wyf yn gweld helo 0.
Ac felly y bydd hyn mewn gwirionedd yn yn wybodaeth werthfawr
yng nghyd-destun y dadnamydd, nid felly llawer y chi, y bobl, y byddai gofal.
Ond mae'r debugger ac eraill rhaglenni byddwn yn defnyddio semester hwn
Bydd yn aml yn edrych ar y rhif hwnnw, hyd yn oed er 'i' fath o guddio i ffwrdd
oni bai eich bod yn edrych ar ei gyfer, i penderfynu a yw rhaglen neu beidio
gweithredu yn gywir neu'n anghywir.
>> Ac felly sy'n dod â ni i hyn, ar ddiwedd y dydd.
Rydym yn dechrau heddiw trwy edrych ar debugging, ac yn ei dro yn y cwrs
ei hun, ac yna mwy o ddiddorol, dechnegol o dan y cwfl
ar ba llinynnau yn cael eu, sy'n para wythnos rydym yn unig yn cymryd yn ganiataol,
ac yn sicr yn mynd â nhw yn ganiataol yn Scratch.
>> Yna byddwn yn edrych ar sut y gallwn gael gafael ar cymeriadau unigol mewn llinyn,
ac yna unwaith eto yn cymryd lefel uwch edrych ar bethau, edrych ar sut well--
os ydym am gael o unigolion elfennau mewn rhestr fel strwythur,
ni allwn wneud hynny gyda llinynnau lluosog?
Ac a allwn gyda dadleuon llinell gorchymyn.
Ond mae hyn darlun yma o ychydig blychau yn dangosol o syniad cyffredinol hwn
o amrywiaeth, neu restr, neu fector.
Ac yn dibynnu ar y cyd-destun, yr holl eiriau hyn
golygu pethau ychydig yn wahanol.
Felly, yn C, rydym yn unig yn mynd i siarad am arae.
Ac amrywiaeth yn dalp o gof, pob un ohonynt yn
elfennau cydgyffwrdd, yn ôl, i gefnogi, i gefnogi, i gefn.
>> Ac elfennau hynny, yn gyffredinol, o'r un math data, cymeriad,
cymeriad, cymeriad, cymeriad, neu llinyn, llinyn, llinyn, llinyn, neu int,
int, int, beth bynnag ydym yn ceisio ei siop.
Ond ar ddiwedd y dydd, mae hyn yn sut mae'n edrych yn gysyniadol.
Rydych yn cymryd eich cof neu RAM cyfrifiadur.
Ac rydych yn cerfio allan i blychau yn union faint, pob un ohonynt
yn ôl, wrth gefn, i yn ôl, wrth gefn yn y modd hwn.
>> A beth sy'n neis am syniad hwn, a'r ffaith
ein bod yn gallu mynegi gwerthoedd yn y modd hwn gyda'r cyntaf o'n strwythurau data
yn y dosbarth, yn golygu y gallwn ddechrau i ddatrys problemau gyda cod
Daeth hynny mor reddfol mewn wythnos 0.
Byddwch yn cofio y ffôn enghraifft llyfr, lle
rydym yn defnyddio rhaniad a gorchfygu, neu algorithm chwiliad deuaidd,
didoli trwy ei gyfanrwydd criw o enwau a rhifau.
Ond rydym yn cymryd yn ganiataol, galw i gof, bod hynny llyfr ffôn eisoes yn didoli,
bod rhywun arall eisoes wedi cyfrifedig rhoddwyd rhestr o enwau out--
ac numbers-- sut i alphabetize nhw.
Ac yn awr bod yn C ydym, hefyd, y gallu
i osod pethau allan, nid gorfforol mewn llyfr ffôn
ond bron mewn cyfrifiadur cof, byddwn yn gallu yr wythnos nesaf
i gyflwyno eto this-- y cyntaf o'n strwythurau data mewn array--
ond yn bwysicach, cyfrifiadur gwirioneddol algorithmau gwyddoniaeth ar waith
mewn cod, gallwn storio ag ef data mewn strwythurau fel hyn,
ac yna cychwyn i drin iddo, a i mewn gwirionedd yn datrys problemau ag ef,
ac i adeiladu ar ben hynny, yn y pen draw, rhaglenni yn C,
yn Python, yn JavaScript, ymholi cronfeydd data gyda SQL?
>> A byddwn yn gweld bod pob un o'r rhain syniadau gwahanol cydgloi.
Ond am nawr, yn cofio bod y parth a gyflwynwyd gennym heddiw
Roedd y peth hyn yma, ac byd cryptography.
Ac ymhlith y problemau nesaf y byddwch chi eich hun yn datrys yw'r grefft o cryptograffeg,
sgramblo a dad-sgrialu gwybodaeth, a ciphering
ac ddehongli testun, a chan dybio yn y pen draw
eich bod bellach yn gwybod beth yw o dan y cwfl
felly pan fyddwch yn gweld neu dderbyn neges fel hyn, byddwch yn
Gall eich hun dehongli iddo.
Mae hyn i gyd, a mwy o amser nesaf.
>> [VIDEO Playback]
>> -Mover Newydd gyrraedd.
Rydw i'n mynd i fynd ymweliad ei athro coleg.
Yep.
Hi.
Mae'n chi.
Aros!
Dafydd.
Im 'jyst yn ceisio at chyfrif beth ddigwyddodd i chi.
Os gwelwch yn dda, gallai unrhyw beth o gymorth.
Yr oeddech yn ei goleg roommate, nid oeddech chi?
Yr oeddech yno gydag ef pan gorffennodd y prosiect CS50?
>> [CHWARAE CERDDORIAETH]
>> -bod Oedd CS50.
>> Rwyf wrth fy modd y lle hwn.
>> -Eat Fyny.
Rydym yn mynd allan o fusnes.
>> [DIWEDD Playback]