ZAMYLA CHAN: Mae'n fi, Zamyla.
Heddiw yn Mario, rydym yn mynd i fod yn gan dynnu hanner pyramid i Mario
i ddringo i fyny.
>> Felly gadewch i ni siarad am ein i-wneud ar gyfer y broblem hon.
Rydym yn mynd i eisiau i annog a dilysu
y defnyddiwr ar gyfer mewnbwn dilys o sut uchel y maent am pyramid Mario i fod.
Ac yna, rydym yn mynd i dynnu.
Felly gadewch i ni ddechrau arni gyda anogaeth a dilysu'r defnyddiwr am eu mewnbwn.
>> Gallwn wneud defnydd o'r Swyddogaeth Llyfrgell CS50
cael int fydd yn sicrhau bod y defnyddiwr mewnbynnau yn gyfanrif.
Unrhyw cyfanrifau cadarnhaol, negyddol cyfanrifau, rhif 0 i gyd yn gêm deg.
Fel arall, bydd y defnyddiwr yn cael ei annog i ailgeisio nes eu mewnbwn cyfanrif dilys.
Nawr, er get int yn ei wneud llawer o'r gwaith i ni
wrth sicrhau bod y defnyddiwr yn rhoi cyfanrif ni,
mae angen i ni wneud cais rhai cyfyngiadau ychwanegol ar hynny.
Wedi'r cyfan, ni allwn gael Mario dringo hanner pyramid o uchder negyddol 12.
>> Yn ychwanegol at hynny, mae'r manyleb problem
dweud mai dim ond o fewn ein gallu caniatáu i Mario i ddringo
pyramid o uchder rhwng 0 a 23.
Iawn, felly mae hynny'n golygu bod angen i ni i annog y defnyddiwr yn barhaus
i roi dilys ni rhif a dim ond yn parhau
unwaith y byddant wedi rhoi uchder dilys ni.
Sut rydym yn gwneud hynny?
>> Wel, prosesau parhaus yn rhoi i ni y syniad o loops-- rhywbeth yn ei wneud
dro ar ôl tro.
Mae un ddolen yn C fel tra dolen a fydd yn barhaus
gyflawni'r corff y ddolen ar yr amod bod y cyflwr a roddir yn gwerthuso i wir.
Cyn gynted ag y cyflwr hwnnw gwerthuso i ffug,
bydd y rhaglen yn symud ymlaen i beth bynnag a ddaw ar ôl hynny.
Felly er bod dolenni yn un ffordd o sicrhau ein bod yn barhaus
annog y defnyddiwr ar gyfer mewnbwn dilys.
Ac unwaith y byddant yn rhoi mewnbwn dilys i ni, byddwn yn symud ymlaen i beth bynnag a ddaw nesaf.
Rydym yn gwybod ein bod ni'n mynd i ofyn y defnyddiwr ar gyfer mewnbwn o leiaf unwaith.
Felly, yn awr rydym yn dod i chwaer o'r tra dolen, sef y do tra ddolen.
>> Wneud tra bydd dolenni gweithredu'r corff y ddolen o leiaf unwaith.
Felly, heb wirio cyflwr, bydd yn gweithredu'r corff y ddolen.
Ac yna gwirio cyflwr i weld a oes angen i ailadrodd ei hun.
Mae hyn yn dod mewn 'n hylaw pan rydym yn dilysu mewnbwn defnyddwyr.
Rydym yn gwybod ein bod ni'n mynd i ofyn iddynt o leiaf unwaith.
Felly do tra gallai dolen edrych rhywbeth fel hyn.
Mae gennym yn gyfanrif n.
Ac mewn y do tra dolen, rydym yn syth
annog y defnyddiwr ar gyfer cyfanrif.
Os n yn annilys, yna byddwn yn eu hannog eto ac eto ac eto nes eu bod yn
roi'r cyfanrif dilys inni.
Yn olaf, unwaith y n yn fewnbwn dilys, rydym annhymerus ' symud ymlaen i weddill ein rhaglen.
>> Felly, gadewch i ni fynd yn ôl at y fanyleb a'r siec beth yr amodau ar gyfer mewnbwn dilys
yn mynd i fod.
Yr uchelfannau dilys yn mynd i fod rhwng 0 a 23, yn gynhwysol.
uchder Felly annilys yn mynd i fod yn llai na 0 neu fwy na 23.
Felly cofiwch i ddylunio eich cyflwr yn ofalus,
gan wybod bod y cyflwr gyfer y do tra dolen
Dylai fod tra n yn annilys.
Yn awr nid yw hyn yn mynd i fod yn mynegiad Boole sengl syml.
Rydym yn mynd i gael i gyfuno dau fynegiad gwahanol
i wneud ein cyflwr cyfan.
>> Felly gadewch i ni dim ond yn edrych wrth fwrdd gwirionedd rwyf wedi eisoes wedi rhoi yr awgrym ein bod chi
mynd i fod yn ymdrin â dau Booleans.
Felly dyma tabl gwirionedd lle rwy'n gael dau Booleans-- Boolean 1 a 2.
Felly, rydym yn cael y dewis i werthuso bool1 a bool2 neu bool1 neu bool2.
A dim ond yn wir os yw'r ddau Booleans gwerthuso yn wir, tra bod yr holl
neu a fydd yn wir cyn belled â un o y ddau Booleans gwerthuso i wir.
OK, felly cymerwch eiliad, oedi hwn fideo a treulio y tabl hwn gwirionedd.
Byddaf yn iawn yma aros.
Pan fyddwch yn dod yn ôl, gweler os gallwch ddarlunio
mae mynegiad Boole ar gyfer eich cyflwr n cael mewnbwn annilys.
>> Felly nawr bod gennym mewnbwn defnyddwyr dilys, yn gadael i
mynd yn ei flaen ac yn siarad am sut yr ydym yn Gallai tynnu yr hanner pyramid.
Yma yn y golygydd testun syml, Rydw i wedi tynnu pyramid chwith alinio.
Ond gwyddom fod arnom angen ein pyramid i gael eu halinio i'r dde.
Felly, sut y gallaf wneud hyn?
Wel, efallai y byddwn yn ceisio gwthio popeth i'r ochr
drwy wneud dim ond rhoi ychydig cymeriad yn y canol.
Ac yna, ar gyfer y nesaf llinell, dw i'n mynd i roi
mwy o gymeriadau i'w wthio ar hyd, ac further-- yn y blaen ac yn y blaen forth--
nes i mi yr hawl halinio pyramid.
Felly mae gennym pyramid alinio i'r dde, ond nid yw'n edrych mor fawr â'r dotiau.
Ond rydym yn dal yn awyddus i cynnal y gofod 'n glws.
Felly, yr wyf i'n mynd i llythrennol mewnosod rhai mannau.
>> Yn hytrach na tri dot, 'n annhymerus' rhoi un, dau, tri lle.
Ar yr ail linell.
'N annhymerus' rhoi un, dau le.
Ac ar y olaf ond un llinell, dim ond un lle.
Ac yma gen i hawl halinio pyramid.
Rhag gwneud yr enghraifft yn y testun golygydd, mae gennym syniad ar gyfer y patrwm
y byddwn yn eu defnyddio i dynnu hanner pyramid.
Ar gyfer pob rhes, yr hyn a wnaeth i ni yn yr ydym deipio rhai mannau,
ac yna teipio rhai hashes, ac yna teipio
'r Chofnoda agoriad, a oedd yn yn creu llinell newydd.
Felly nawr bod gennym hynny, gadewch i ni fynd un cam ymhellach a dod o hyd i batrwm.
>> Felly, yr wyf i'n mynd i ddweud, ar gyfer y diddordeb yr enghraifft hon,
rydym yn delio gydag uchder o 8.
Mae'r rhes gyntaf yn mynd i gael dau hashes sy'n dilyn saith o leoedd.
Mae'r second-- tri hashes, chwech o leoedd.
Trydydd row-- pedwar hashes, pump spaces-- yn y blaen ac yn y blaen
nes i ni gyrraedd y rhes NTH.
Felly, yna, yr wyf yn gofyn i chi am y rhes NTH, faint o hashes ydym yn mynd i gael
a faint o lefydd?
Felly mae i fyny i chi i chyfrif i maes fformiwla i gynrychioli faint o hashes
a faint o leoedd yn cael eu hangen ar gyfer y rhes NTH pan fydd gennych rhywfaint o uchder.
>> Nawr, pan fyddwch yn figuring hyn allan, fod yn ofalus sut yr ydych yn mynegeio.
Beth allaf i ei olygu wrth hyn yw bod mewn bywyd bob dydd pob un ohonom
yn dechrau cyfrif, fel arfer gan 1.
Ond yn CS50 ac mewn gwyddoniaeth gyfrifiadurol yn gyffredinol, yr ydym yn 0 mynegeio.
Felly, byddai y rhes gyntaf yn n o 0 yn hytrach na 1.
Byddwch yn ofalus o hyn pan fyddwch chi ceisio at chyfrif i eich patrwm.
Felly nawr gadewch i ni fynd yn ôl at sut rydym yn mynd i dynnu ein pyramid.
Am bob rhes, rydym yn mynd i fod eisiau argraffwch y mannau, argraffwch y hashes,
ac yna ei argraffu llinell newydd.
Mae'r awgrym yma yw'r gair "yn lle" pob rhes.
Yn C, mae gennym lluniad a elwir yn ar gyfer dolen,
ohono'n cael ei gynnwys o initialization, cyflwr, y wybodaeth ddiweddaraf,
a chorff y ddolen.
>> Dweud oeddwn am ei ddweud, helo byd, 50 o weithiau, fy gyfer dolen
Byddai edrych rhywbeth fel hyn.
Rwy'n ymgychwyn fy cyfanrif i 0.
Yr amod yw fy mod yn llai na 50.
Ac yna fy niweddariad yn unig incrementing wyf gan un bob tro.
Gallwn hefyd ddefnyddio ar gyfer dolenni i ailadrodd dros bethau.
Sylwch yma sut na sydd gennym chodio caled rhif,
ond yn hytrach gosod y newidyn uchder yn hytrach i'r cyflwr.
Felly beth rwy'n ei wneud yma yw fy mod yn ailadrodd dros bob rhes y pyramid.
Gallaf wneud rhywbeth ar gyfer pob rhes y tu mewn i'r corff fy ddolen.
>> Beth rydym yn ei wneud y tu mewn corff y ddolen?
Wel, fel y dywedasom eisoes, rydym yn argraffu lleoedd ac rydym yn argraffu hashes
ac rydym yn argraffu llinell newydd.
Felly fy allanol ar gyfer dolen yn edrych fel hyn.
Yr wyf yn ailadrodd dros bob rhes y pyramid, gan ddefnyddio,
yn yr achos hwn, uchder fel y newidyn sy'n storio uchder y pyramid.
Y tu mewn i'r corff y ddolen, dwi'n argraffu mannau dro ar ôl tro, print
y hashes dro ar ôl tro, ac yna ei argraffu llinell newydd.
>> Felly nawr, gan ddefnyddio pob un o'r cysyniadau sy'n Rwyf wedi siarad am yn daith gerdded-drwy hyn,
dylech fod yn gallu annog y defnyddiwr ar gyfer mewnbwn, dilysu mewnbwn hwnnw,
ac yna llunio hanner pyramid.
>> Fy enw i yw Zamyla, ac mae hyn yn CS50.