1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Adran 4] [Llai cyfforddus] 2 00:00:02,000 --> 00:00:04,000 [Nate Hardison] [Harvard University] 3 00:00:04,000 --> 00:00:07,000 [Mae hyn yn CS50.] [CS50.TV] 4 00:00:07,000 --> 00:00:10,000 >> Mae pob hawl, yn croesawu yn ôl i adran. 5 00:00:10,000 --> 00:00:13,000 Yn yr adran yr wythnos hon, rydym yn mynd i wneud un neu ddau o bethau. 6 00:00:13,000 --> 00:00:17,000 Rydym yn mynd i ailadrodd cyntaf 2 Set Problem, 7 00:00:17,000 --> 00:00:20,000 sef y broblem a osodwyd Cesar a Vigenère. 8 00:00:20,000 --> 00:00:23,000 Ac yna rydym yn mynd i ddeifio i mewn i adolygiad Cwis 0 9 00:00:23,000 --> 00:00:26,000 ac yn treulio ychydig o amser yn ailadrodd yr hyn yr ydym wedi siarad am 10 00:00:26,000 --> 00:00:30,000 ym mhob un o'r darlithoedd hyd yma, a byddwn hefyd yn gwneud ychydig o broblemau 11 00:00:30,000 --> 00:00:32,000 o cwisiau flwyddyn flaenorol. 12 00:00:32,000 --> 00:00:36,000 Y ffordd yr ydych guys gael yn ffordd dda o baratoi ar gyfer hynny. 13 00:00:36,000 --> 00:00:40,000 >> I ddechrau, yr wyf wedi booted i fyny cwpl o atebion da 14 00:00:40,000 --> 00:00:45,000 ar gyfer y set problem blaenorol, Datrys Set 2, i mewn i'r gofod. 15 00:00:45,000 --> 00:00:48,000 Os ydych yn guys i gyd daro y cyswllt hwn, 16 00:00:48,000 --> 00:00:53,000 ac os ydych yn clicio fy enw a chliciwch ar fy adolygiad cyntaf 17 00:00:53,000 --> 00:00:56,000 byddwch yn gweld caesar.c, sef yr union beth yr wyf i'n edrych ar. 18 00:00:56,000 --> 00:01:00,000 Gadewch i ni siarad am hyn yn gyflym iawn. 19 00:01:00,000 --> 00:01:02,000 Mae hyn yn unig yw ateb sampl. 20 00:01:02,000 --> 00:01:05,000 Nid yw hyn o reidrwydd yr ateb perffaith. 21 00:01:05,000 --> 00:01:08,000 Mae yna nifer o ffyrdd gwahanol i ysgrifennu hwn, 22 00:01:08,000 --> 00:01:10,000 ond mae yna ychydig o bethau fy mod am dynnu sylw at 23 00:01:10,000 --> 00:01:13,000 a welais gan fy mod yn graddio, camgymeriadau cyffredin yr wyf yn meddwl 24 00:01:13,000 --> 00:01:18,000 ateb hwn yn gwneud gwaith da iawn o drin. 25 00:01:18,000 --> 00:01:22,000 >> Y cyntaf yn cael rhyw fath o sylwadau pennawd ar y brig. 26 00:01:22,000 --> 00:01:25,000 Ar linellau 1 hyd 7 eich bod yn gweld y manylion, 27 00:01:25,000 --> 00:01:28,000 beth yn union y rhaglen hon yn ei wneud. 28 00:01:28,000 --> 00:01:32,000 Mae arfer safon dda pan fyddwch yn ysgrifennu C cod 29 00:01:32,000 --> 00:01:35,000 waeth beth os ydy'ch rhaglen yn cael ei gynnwys mewn ffeil sengl neu 30 00:01:35,000 --> 00:01:38,000 boed yn rhannu dros ffeiliau lluosog yn cael rhyw fath o 31 00:01:38,000 --> 00:01:40,000 orienting sylwadau ar y brig. 32 00:01:40,000 --> 00:01:43,000 Mae hyn hefyd ar gyfer pobl sy'n mynd allan ac ysgrifennu cod yn y byd go iawn. 33 00:01:43,000 --> 00:01:47,000 Dyma lle y byddant yn rhoi gwybodaeth hawlfraint. 34 00:01:47,000 --> 00:01:50,000 Isod mae'r cynnwys #. 35 00:01:50,000 --> 00:01:55,000 Ar llinell 16 mae hyn yn # diffinio, y byddwn yn dod yn ôl i mewn dim ond ychydig. 36 00:01:55,000 --> 00:01:59,000 Ac yna unwaith y bydd y swyddogaeth yn dechrau, yn dechrau unwaith y bydd prif 37 00:01:59,000 --> 00:02:03,000 oherwydd bod y rhaglen hon wedi cael ei gynnwys i gyd mewn un swyddogaeth 38 00:02:03,000 --> 00:02:09,000 y peth cyntaf sy'n digwydd-ac mae hyn yn idiomatig ac yn nodweddiadol o raglen C 39 00:02:09,000 --> 00:02:14,000 sy'n cymryd mewn llinell orchymyn dadleuon-yw ei fod ar unwaith yn gwirio 40 00:02:14,000 --> 00:02:18,000 >> ar gyfer y cyfrif ddadl, argc. 41 00:02:18,000 --> 00:02:24,000 Hawl yma rydym yn gweld bod y rhaglen hon yn disgwyl 2 dadleuon yn union. 42 00:02:24,000 --> 00:02:27,000 Cofiwch mae y ddadl gyntaf yw'r un arbennig 43 00:02:27,000 --> 00:02:29,000 bod bob amser yn enw'r rhaglen sy'n cael ei rhedeg, 44 00:02:29,000 --> 00:02:31,000 enw'r ffeil gweithredadwy. 45 00:02:31,000 --> 00:02:36,000 Ac felly beth yw hyn yn ei atal y defnyddiwr rhag rhedeg y rhaglen 46 00:02:36,000 --> 00:02:42,000 gyda mwy o ddadleuon neu lai. 47 00:02:42,000 --> 00:02:44,000 Y rheswm rydym am i chwilio am yr hawl i ffwrdd oherwydd 48 00:02:44,000 --> 00:02:52,000 ni allwn mewn gwirionedd gael mynediad i'r amrywiaeth argv dde yma ddibynadwy 49 00:02:52,000 --> 00:02:55,000 hyd nes y byddwn wedi gwirio i weld pa mor fawr ydyw. 50 00:02:55,000 --> 00:02:58,000 >> Un o'r camgymeriadau cyffredin a welais oedd y byddai pobl yn syth mynd i mewn 51 00:02:58,000 --> 00:03:01,000 a gafael argv [1]. 52 00:03:01,000 --> 00:03:06,000 Roedden nhw chrafangia 'r ddadl allweddol allan y rhesi, ac nid y mae i wirio i arno, 53 00:03:06,000 --> 00:03:11,000 ac yna byddent yn gwneud y prawf ar gyfer argc yn ogystal â'r prawf nesaf, 54 00:03:11,000 --> 00:03:16,000 a oedd y ddadl gyntaf yn wir yn cyfanrif ar yr un pryd, 55 00:03:16,000 --> 00:03:20,000 ac nad yw hynny'n gweithio oherwydd yn yr achos nad oes dadleuon a gyflenwir 56 00:03:20,000 --> 00:03:26,000 byddwch yn crafangio dadl nad yw ar gael neu geisio bachu un nad yw'n yno. 57 00:03:26,000 --> 00:03:29,000 >> Y peth mawr arall y dylech sylwi arno yw fod 58 00:03:29,000 --> 00:03:32,000 byddwch bob amser yn awyddus i argraffu rhyw fath o neges gwall defnyddiol 59 00:03:32,000 --> 00:03:34,000 i'r defnyddiwr i Dwyrain nhw. 60 00:03:34,000 --> 00:03:37,000 Rwy'n siŵr eich bod i gyd wedi cynnal rhaglenni lle mae pob yn sydyn mae'n damweiniau, 61 00:03:37,000 --> 00:03:41,000 a byddwch yn cael yr ymgom bach chwerthinllyd a pops i fyny ac yn dweud 62 00:03:41,000 --> 00:03:44,000 rhywbeth ofnadwy cryptig ac efallai yn rhoi i chi côd gwall neu rywbeth fel 'na 63 00:03:44,000 --> 00:03:47,000 sy'n gwneud dim synnwyr. 64 00:03:47,000 --> 00:03:50,000 Dyma lle chi wir eisiau darparu rhywbeth defnyddiol 65 00:03:50,000 --> 00:03:54,000 ac wedi'u targedu at y defnyddiwr fel bod pan fyddant yn rhedeg yn mynd "O," wyneb palmwydd. 66 00:03:54,000 --> 00:03:58,000 "Rwy'n gwybod yn union beth i'w wneud. Rwy'n gwybod sut i atgyweiria hon." 67 00:03:58,000 --> 00:04:01,000 >> Os nad ydych yn argraffu neges, yna byddwch yn darfod i fyny mewn gwirionedd 68 00:04:01,000 --> 00:04:04,000 gadael y defnyddiwr i fynd archwilio eich cod ffynhonnell 69 00:04:04,000 --> 00:04:07,000 at chyfrif i maes beth aeth o'i le. 70 00:04:07,000 --> 00:04:11,000 Mae yna hefyd rai adegau y byddwch yn defnyddio codau gwall gwahanol. 71 00:04:11,000 --> 00:04:14,000 Yma, rydym yn unig yn defnyddio un i ddweud nad oedd camgymeriad, 72 00:04:14,000 --> 00:04:16,000 roedd gwall, roedd gwall. 73 00:04:16,000 --> 00:04:20,000 Rhaglenni Bigger, yn aml yn rhaglenni sy'n cael eu galw gan raglenni eraill, 74 00:04:20,000 --> 00:04:25,000 yn dychwelyd rhyw fath o godau gwall arbennig mewn sefyllfaoedd gwahanol 75 00:04:25,000 --> 00:04:28,000 i programmatically gyfathrebu yr hyn yr ydych fyddai fel arall yn 76 00:04:28,000 --> 00:04:32,000 dim ond yn defnyddio neges Saesneg neis ar gyfer. 77 00:04:32,000 --> 00:04:35,000 Cool. 78 00:04:35,000 --> 00:04:37,000 Wrth i ni weithio i lawr, gallwch weld rydym yn tynnu y tu allan allweddol. 79 00:04:37,000 --> 00:04:40,000 Rydym yn profi i weld a yw'r allwedd yn cyd-fynd. 80 00:04:40,000 --> 00:04:42,000 Rydym yn cael neges gan y defnyddiwr. 81 00:04:42,000 --> 00:04:46,000 Y rheswm rydym yn ei wneud yn hyn o beth tra ddolen-ac mae hyn yn rhywbeth y byddwn yn cwmpasu 82 00:04:46,000 --> 00:04:50,000 mewn ychydig bit-ond mae'n troi allan os ydych yn teipio reolaeth D 83 00:04:50,000 --> 00:04:54,000 pan fyddwch yn cael y GetString brydlon ar y derfynell 84 00:04:54,000 --> 00:04:59,000 yr hyn sydd mewn gwirionedd yn ei wneud yn ei anfon gymeriad arbennig 85 00:04:59,000 --> 00:05:01,000 i'r rhaglen. 86 00:05:01,000 --> 00:05:05,000 Mae'n cael ei alw y ELF neu ar ddiwedd y cymeriad ffeil. 87 00:05:05,000 --> 00:05:08,000 Ac yn yr achos hwnnw, bydd ein llinyn neges yn null, 88 00:05:08,000 --> 00:05:14,000 felly nid oedd hyn yn rhywbeth rydym yn gwirio ei gyfer yn y broblem gosod iddo'i hun. 89 00:05:14,000 --> 00:05:17,000 >> Ond wrth i ni fynd ymlaen, yn awr ein bod wedi dechrau siarad am awgrymiadau 90 00:05:17,000 --> 00:05:21,000 a dyrannu cof deinamig ar y domen, 91 00:05:21,000 --> 00:05:25,000 gwirio null pryd bynnag y byddwch yn cael swyddogaeth a allai 92 00:05:25,000 --> 00:05:30,000 dychwelyd null fel gwerth yn rhywbeth y byddwch am i fynd i mewn i'r arfer o wneud. 93 00:05:30,000 --> 00:05:33,000 Mae hyn yn fan hyn yn bennaf ar gyfer darlunio. 94 00:05:33,000 --> 00:05:36,000 Ond pan fyddwch yn gwneud yn gweld GetString yn y dyfodol, 95 00:05:36,000 --> 00:05:41,000 felly o Broblem Set 4 ar, youll 'angen at cadw hyn mewn cof. 96 00:05:41,000 --> 00:05:44,000 Unwaith eto, nid yw hyn yn broblem i Problem Set 3 naill ai gan nad ydym wedi trafod hyn eto. 97 00:05:44,000 --> 00:05:53,000 Yn olaf, rydym yn cael y rhan hon lle rydym yn cyrraedd y ddolen amgryptio prif, 98 00:05:53,000 --> 00:05:57,000 ac mae un neu ddau o bethau sy'n mynd ymlaen yma. 99 00:05:57,000 --> 00:06:02,000 Yn gyntaf, rydym yn ailadrodd dros y llinyn neges gyfan ei hun. 100 00:06:02,000 --> 00:06:07,000 Yma, rydym wedi cadw yr alwad strlen yn y cyflwr, 101 00:06:07,000 --> 00:06:12,000 Nid y mae nifer ohonoch wedi dangos yn ffordd wych i fynd. 102 00:06:12,000 --> 00:06:15,000 Mae'n troi allan yn yr achos hwn nid hefyd yn wych, 103 00:06:15,000 --> 00:06:20,000 yn rhannol oherwydd ein bod yn addasu cynnwys y neges ei hun 104 00:06:20,000 --> 00:06:27,000 y tu mewn i'r ddolen am, felly os oes gennym neges sef 10 nod o hyd, 105 00:06:27,000 --> 00:06:32,000 y tro cyntaf byddwn yn dechrau y bydd am ddolen strlen ddychwelyd beth? 106 00:06:32,000 --> 00:06:35,000 10. 107 00:06:35,000 --> 00:06:40,000 >> Ond os byddwn wedyn yn addasu neges, yn dweud ein bod yn addasu ei gymeriad 5ed, 108 00:06:40,000 --> 00:06:46,000 ac rydym yn taflu mewn cymeriad \ 0 yn y sefyllfa 5ed, 109 00:06:46,000 --> 00:06:49,000 ar fersiwn dilynol, ni fydd strlen (neges) yn dychwelyd yr hyn a wnaeth 110 00:06:49,000 --> 00:06:52,000 y tro cyntaf i ni Ailadroddodd, 111 00:06:52,000 --> 00:06:56,000 ond bydd yn hytrach yn dychwelyd 5 oherwydd ein taflu yn y terminator null, 112 00:06:56,000 --> 00:06:59,000 a hyd y llinyn yn cael ei ddiffinio 113 00:06:59,000 --> 00:07:03,000 gan y sefyllfa honno \ 0. 114 00:07:03,000 --> 00:07:09,000 Yn yr achos hwn, mae hyn yn ffordd wych i fynd oherwydd ein bod yn addasu yn ei le. 115 00:07:09,000 --> 00:07:13,000 Ond byddwch yn sylwi bod hyn mewn gwirionedd yn syndod o syml i amgryptio 116 00:07:13,000 --> 00:07:16,000 os gallwch gael y math cywir. 117 00:07:16,000 --> 00:07:19,000 Y cyfan sydd ei angen yw i wirio p'un ai nad oedd y llythyr eich bod yn edrych ar 118 00:07:19,000 --> 00:07:21,000 yn priflythyren neu llythrennau bach. 119 00:07:21,000 --> 00:07:24,000 >> Y rheswm yn unig sydd gennym i wirio am hynny ac nid oes gennym i wirio am 120 00:07:24,000 --> 00:07:27,000 yr achos alffa yn oherwydd 121 00:07:27,000 --> 00:07:30,000 os yw cymeriad yn priflythyren neu os yw'n llythrennau bach 122 00:07:30,000 --> 00:07:33,000 yna mae'n bendant yn gymeriad yr wyddor, 123 00:07:33,000 --> 00:07:38,000 oherwydd nad oes gennym ddigidau priflythyren a llythrennau bach. 124 00:07:38,000 --> 00:07:41,000 Y peth arall yr ydym yn ei wneud-ac mae hyn yn ychydig yn anodd- 125 00:07:41,000 --> 00:07:45,000 yn cael ei rydym wedi newid y safon Cesar cipher fformiwla 126 00:07:45,000 --> 00:07:49,000 a roddasom yn y set problem fanyleb. 127 00:07:49,000 --> 00:07:52,000 Beth sy'n wahanol yma yw ein bod tynnu 128 00:07:52,000 --> 00:07:58,000 yn y brifddinas achos priflythyren A, ac yna rydym yn ei llwytho cyfalaf A 129 00:07:58,000 --> 00:08:02,000 cefnogi i mewn ar y diwedd. 130 00:08:02,000 --> 00:08:05,000 >> Yr wyf yn gwybod ychydig ohonoch wedi gwneud hyn yn eich cod. 131 00:08:05,000 --> 00:08:09,000 A wnaethoch unrhyw un ohonoch yn gwneud hyn yn eich cyflwyniadau? 132 00:08:09,000 --> 00:08:13,000 Chi wneud hyn. Allwch chi egluro beth mae hyn yn ei wneud, Sahb? 133 00:08:13,000 --> 00:08:18,000 Trwy dynnu allan, oherwydd gwnaethoch mod dde ar ôl hynny, 134 00:08:18,000 --> 00:08:21,000 rhaid i chi gymryd allan, fel y ffordd yr ydych yn ei gael [peswch] sefyllfa. 135 00:08:21,000 --> 00:08:25,000 Ac yna drwy ychwanegu yn ôl yn ddiweddarach i chi symud dros yr un yr ydych ei eisiau. 136 00:08:25,000 --> 00:08:27,000 Yeah, yn union. 137 00:08:27,000 --> 00:08:32,000 Beth Sahb ddywedodd oedd pan rydym am ychwanegu 138 00:08:32,000 --> 00:08:36,000 ein neges a'n allweddol at ei gilydd 139 00:08:36,000 --> 00:08:42,000 ac yna mod hynny, mod, trwy NUM_LETTERS, 140 00:08:42,000 --> 00:08:50,000 os nad ydym yn raddfa ein neges i'r briodol 0-25 ystod gyntaf, 141 00:08:50,000 --> 00:08:54,000 yna efallai y byddwn yn y pen draw yn cael nifer wirioneddol rhyfedd 142 00:08:54,000 --> 00:08:59,000 oherwydd bod y gwerthoedd yr ydym yn edrych ar pan fyddwn yn edrych ar neges [i], 143 00:08:59,000 --> 00:09:03,000 pan fyddwn yn edrych ar y cymeriad ith ein blaen-destun neges, 144 00:09:03,000 --> 00:09:08,000 yn werth rhywle yn yr ystod 65-122 145 00:09:08,000 --> 00:09:13,000 yn seiliedig ar y gwerthoedd ASCII ar gyfer priflythyren A drwy'r z llythrennau bach. 146 00:09:13,000 --> 00:09:18,000 Ac felly pan fyddwn yn mod iddo gan 26 neu drwy NUM_LETTERS, 147 00:09:18,000 --> 00:09:23,000 ers hynny oedd ein # diffinio ar y dde uchaf i fyny yma, 148 00:09:23,000 --> 00:09:28,000 mae hynny'n mynd i roi i ni gwerth sydd yn y amrediad 0 i 25, 149 00:09:28,000 --> 00:09:30,000 ac mae arnom angen ffordd i addasu hynny, yna yn ôl i fyny 150 00:09:30,000 --> 00:09:32,000 ac yn ei gael yn yr ystod ASCII priodol. 151 00:09:32,000 --> 00:09:36,000 Y ffordd hawsaf o wneud hynny ydy at jyst raddfa popeth i lawr 152 00:09:36,000 --> 00:09:39,000 i mewn i'r amrediad 0 i 25 oed i ddechrau, 153 00:09:39,000 --> 00:09:43,000 ac yna symud popeth yn ôl i fyny ar y diwedd. 154 00:09:43,000 --> 00:09:46,000 >> Arall gwall cyffredin a welais bobl yn rhedeg i mewn i yw bod 155 00:09:46,000 --> 00:09:50,000 os nad ydych mewn gwirionedd yn gwneud hyn graddio ar unwaith 156 00:09:50,000 --> 00:09:53,000 ac rydych yn ychwanegu neges ac allweddol at ei gilydd ac rydych yn eu hychwanegu, yn dweud, 157 00:09:53,000 --> 00:09:58,000 i mewn newidyn torgoch, y broblem gyda hynny 158 00:09:58,000 --> 00:10:01,000 Mae gan neges [i] yn nifer cymharol fawr i ddechrau- 159 00:10:01,000 --> 00:10:05,000 cofiwch ei fod yn o leiaf 65 oed os ei fod yn priflythyren gymeriad- 160 00:10:05,000 --> 00:10:09,000 os oes gennych allwedd mawr, dyweder, rhywbeth fel 100, 161 00:10:09,000 --> 00:10:13,000 a ydych yn ychwanegu hynny 2 at ei gilydd i mewn i golosg wedi'i lofnodi rydych yn mynd i gael orlif. 162 00:10:13,000 --> 00:10:17,000 Rydych yn mynd i gael gwerth sy'n fwy na 127, 163 00:10:17,000 --> 00:10:22,000 sef y gwerth mwyaf y gall newidyn torgoch dal. 164 00:10:22,000 --> 00:10:26,000 Unwaith eto, dyna pam y byddech eisiau gwneud y math yna o beth i ddechrau. 165 00:10:26,000 --> 00:10:29,000 Mae rhai pobl yn cael o gwmpas yr achos hwnnw drwy wneud yn os arall a phrofi 166 00:10:29,000 --> 00:10:33,000 i weld os byddai'n gorlifo cyn gwneud hynny, 167 00:10:33,000 --> 00:10:36,000 ond y ffordd hon yn cael tua hynny. 168 00:10:36,000 --> 00:10:40,000 Ac yna yn yr ateb hwn rydym yn argraffu'r y llinyn cyfan ar y diwedd un. 169 00:10:40,000 --> 00:10:45,000 Pobl eraill eu hargraffu cymeriad ar y tro. Mae'r ddau yn awesome. 170 00:10:45,000 --> 00:10:51,000 Ar y pwynt hwn, a oes gennych guys gennych unrhyw gwestiynau, unrhyw sylwadau am hyn? 171 00:10:51,000 --> 00:10:56,000 Pethau ydych yn hoffi, pethau nad ydych yn hoffi? 172 00:10:56,000 --> 00:10:58,000 >> Roedd gen i gwestiwn. 173 00:10:58,000 --> 00:11:01,000 Efallai wyf yn colli yn ystod eich esboniad, ond sut mae hyn yn rhaglen 174 00:11:01,000 --> 00:11:07,000 hepgor y gofod ar gyfer cysylltu'r allweddol i hyd y testun? 175 00:11:07,000 --> 00:11:10,000 Mae hyn yn unig Caesar cipher. >> O, sori, yeah. 176 00:11:10,000 --> 00:11:13,000 Yeah, byddwn yn gweld hynny. 177 00:11:13,000 --> 00:11:16,000 Yn y cipher Cesar gawsom o gwmpas oherwydd bod 178 00:11:16,000 --> 00:11:18,000 rydym yn unig flipped cymeriadau. 179 00:11:18,000 --> 00:11:27,000 Rydym yn Dim ond cylchdroi iddynt os ydynt yn priflythyren neu llythrennau bach. 180 00:11:27,000 --> 00:11:32,000 Rydych guys teimlo'n eithaf da am hyn? 181 00:11:32,000 --> 00:11:34,000 Teimlwch yn rhydd i gopïo cartref hwn, yn ei gymryd, 182 00:11:34,000 --> 00:11:37,000 gymharu â hyn yr ydych guys ysgrifennodd. 183 00:11:37,000 --> 00:11:42,000 Yn bendant mae croeso i chi anfon cwestiynau am y peth hefyd. 184 00:11:42,000 --> 00:11:46,000 Ac eto, yn sylweddoli bod y nod yma gyda eich problem yn gosod 185 00:11:46,000 --> 00:11:50,000 Nid yw i fynd â chi guys i ysgrifennu cod perffaith ar gyfer eich setiau problem. 186 00:11:50,000 --> 00:11:57,000 Mae'n brofiad dysgu. Yeah. 187 00:11:57,000 --> 00:12:01,000 >> Yn ôl i'r do tra ddolen, os yw'n hafal null, 188 00:12:01,000 --> 00:12:06,000 felly null unig yn golygu dim byd, dim ond daro chofnoda? 189 00:12:06,000 --> 00:12:12,000 Null yn werth pwyntydd arbennig, 190 00:12:12,000 --> 00:12:17,000 ac rydym yn defnyddio null pan fyddwn eisiau ei ddweud 191 00:12:17,000 --> 00:12:23,000 mae gennym newidyn pwyntydd sy'n pwyntio at ddim. 192 00:12:23,000 --> 00:12:28,000 Ac felly fel arfer mae'n golygu bod y newidyn hwn, y newidyn neges 193 00:12:28,000 --> 00:12:35,000 yn wag, ac yma, oherwydd ein bod yn defnyddio'r math CS50 llinyn arbennig, 194 00:12:35,000 --> 00:12:37,000 beth yw'r math llinyn CS50? 195 00:12:37,000 --> 00:12:42,000 Ydych chi wedi gweld yr hyn ydyw pan David dynnu yn ôl y cwfl yn y ddarlith? 196 00:12:42,000 --> 00:12:44,000 Mae'n ffynci-mae'n pwyntydd, dde? 197 00:12:44,000 --> 00:12:48,000 Iawn, yeah. >> Mae'n * torgoch. 198 00:12:48,000 --> 00:12:52,000 Ac felly mewn gwirionedd y gallai rydym yn cymryd lle'r hyn 199 00:12:52,000 --> 00:12:56,000 i'r dde yma gyda neges * torgoch, 200 00:12:56,000 --> 00:13:04,000 ac felly mae'r swyddogaeth GetString, os nad yw'n llwyddo i gael llinyn gan y defnyddiwr, 201 00:13:04,000 --> 00:13:08,000 Ni all dosrannu linyn, a bod yr achos un lle na all dosrannu llinyn 202 00:13:08,000 --> 00:13:11,000 yw os bydd y defnyddiwr mathau diwedd, cymeriad ffeil D reolaeth, 203 00:13:11,000 --> 00:13:17,000 nad yw'n rhywbeth yr ydych yn ei wneud fel rheol, ond os bydd hynny'n digwydd 204 00:13:17,000 --> 00:13:20,000 yna bydd y swyddogaeth yn dychwelyd y gwerth null fel ffordd o ddweud 205 00:13:20,000 --> 00:13:23,000 "Hey, doeddwn i ddim yn cael llinyn." 206 00:13:23,000 --> 00:13:27,000 Beth fyddai'n digwydd os na fyddwn yn rhoi neges = null, 207 00:13:27,000 --> 00:13:30,000 sy'n rhywbeth nad ydym wedi bod yn ei wneud eto? 208 00:13:30,000 --> 00:13:32,000 Pam fyddai hynny'n broblem yma? 209 00:13:32,000 --> 00:13:38,000 Gan fy mod yn gwybod ein bod yn siarad ychydig mewn darlith am ollyngiadau cof. 210 00:13:38,000 --> 00:13:42,000 Yeah, gadewch i ni wneud hynny, a gadewch i ni weld beth sy'n digwydd. 211 00:13:42,000 --> 00:13:44,000 >> Basil gwestiwn oedd yr hyn fydd yn digwydd os nad ydym mewn gwirionedd wedi 212 00:13:44,000 --> 00:13:48,000 neges hon = null prawf? 213 00:13:48,000 --> 00:13:51,000 Gadewch i sgrolio i fyny i'r brig. 214 00:13:51,000 --> 00:13:53,000 Gallwch guys sylwadau hyn. 215 00:13:53,000 --> 00:13:55,000 A dweud y gwir, 'n annhymerus' gadw mewn adolygiad. 216 00:13:55,000 --> 00:13:58,000 Bydd hyn yn Revision 3. 217 00:13:58,000 --> 00:14:02,000 Beth fydd yn rhaid i chi ei wneud i redeg y rhaglen hon yw y bydd rhaid i chi glicio ar yr eicon hwn gêr i fyny yma, 218 00:14:02,000 --> 00:14:04,000 a bydd yn rhaid i chi ychwanegu dadl ato. 219 00:14:04,000 --> 00:14:10,000 Bydd rhaid i chi roi y ddadl allweddol ers i ni eisiau i basio mewn llinell orchymyn ddadl. 220 00:14:10,000 --> 00:14:13,000 Dyma dw i'n mynd i roi y rhif 3. Rwy'n hoffi 3. 221 00:14:13,000 --> 00:14:19,000 Nawr chwyddo yn ôl allan, rhedeg y rhaglen. 222 00:14:19,000 --> 00:14:24,000 Mae'n rhedeg, llunio, adeiladu. 223 00:14:24,000 --> 00:14:27,000 Yma rydym yn mynd. Mae'n aros i gael ei annog. 224 00:14:27,000 --> 00:14:33,000 Os byddaf yn teipio rhywbeth fel helo-lle oedd hynny'n mynd? 225 00:14:33,000 --> 00:14:38,000 O, fy rhaglen cymryd gormod o amser i'w rhedeg. Roeddwn yn jawing am gyfnod rhy hir. 226 00:14:38,000 --> 00:14:40,000 Yma, mae'n mynd. 227 00:14:40,000 --> 00:14:43,000 Nawr rwy'n deipio helo. 228 00:14:43,000 --> 00:14:46,000 Rydym yn gweld ei fod yn amgryptio briodol. 229 00:14:46,000 --> 00:14:52,000 Nawr, beth sy'n digwydd os ydym yn ei wneud GetString brydlon i ddychwelyd null? 230 00:14:52,000 --> 00:14:57,000 Cofiwch, dywedais ein bod yn gwneud hynny drwy wasgu rheolaeth D ar yr un pryd. 231 00:14:57,000 --> 00:14:59,000 'N annhymerus' sgrolio i fyny yma. Byddwn yn rhedeg unwaith eto. 232 00:14:59,000 --> 00:15:01,000 Adeiladu. Mae y mae'n mynd. 233 00:15:01,000 --> 00:15:04,000 Nawr pan fyddaf yn taro reolaeth D 234 00:15:04,000 --> 00:15:12,000 Cawn y llinell hon sy'n dweud opt/sandbox50/bin/run.sh, nam Segmentiad. 235 00:15:12,000 --> 00:15:15,000 Ydych chi wedi gweld guys hynny o'r blaen? 236 00:15:15,000 --> 00:15:17,000 >> [Myfyrwyr] Pam nad oes->> Mae'n ddrwg gennym? 237 00:15:17,000 --> 00:15:20,000 [Myfyrwyr] Pam nad oes tomen graidd yn yr achos hwn? 238 00:15:20,000 --> 00:15:26,000 Mae'r domen craidd yn-y cwestiwn pam nad oes unrhyw domen craidd yma? 239 00:15:26,000 --> 00:15:29,000 Y cwestiwn yw y gall fod, ond mae'r domen craidd yn ffeil 240 00:15:29,000 --> 00:15:31,000 sy'n cael ei storio ar y disg caled. 241 00:15:31,000 --> 00:15:34,000 Yn yr achos hwn rydym wedi anabl dadlwythiadau craidd 242 00:15:34,000 --> 00:15:37,000 ar y gweinydd yn rhedeg fel nad oes gennym bobl SEG ffawtio 243 00:15:37,000 --> 00:15:40,000 ac adeiladu tunnell o dadlwythiadau craidd. 244 00:15:40,000 --> 00:15:46,000 Ond efallai y cewch un. 245 00:15:46,000 --> 00:15:48,000 Dadlwythiadau craidd yn y math o beth y gallwch chi yn aml yn anablu, 246 00:15:48,000 --> 00:15:52,000 ac weithiau rydych yn ei wneud. 247 00:15:52,000 --> 00:15:55,000 Y, i ateb eich cwestiwn, wall Basil, 248 00:15:55,000 --> 00:16:00,000 yn dweud ein bod yn ceisio cael mynediad i pwyntydd 249 00:16:00,000 --> 00:16:05,000 nad oedd i fod i gyfeirio at unrhyw beth. 250 00:16:05,000 --> 00:16:09,000 Cofiwch Binky yn y fideo pan fydd Binky ceisio 251 00:16:09,000 --> 00:16:12,000 mynd yn cael mynediad i pwyntydd nid yw hynny'n tynnu sylw i unrhyw beth? 252 00:16:12,000 --> 00:16:16,000 Yn yr achos hwn mae'n debyg dechnegol y pwyntydd yn pwyntio at rywbeth. 253 00:16:16,000 --> 00:16:20,000 Mae'n pwyntio at null, sy'n dechnegol 0, 254 00:16:20,000 --> 00:16:25,000 ond sy'n cael ei diffinio mewn segment nad sy'n hygyrch 255 00:16:25,000 --> 00:16:28,000 gan eich rhaglen, er mwyn i chi gael wall 256 00:16:28,000 --> 00:16:31,000 oherwydd nad ydych yn cyrchu cof sy'n mewn segment dilys 257 00:16:31,000 --> 00:16:38,000 fel y segment domen neu segment stac neu segment data. 258 00:16:38,000 --> 00:16:40,000 Cool. 259 00:16:40,000 --> 00:16:48,000 Unrhyw mwy o gwestiynau am Cesar? 260 00:16:48,000 --> 00:16:51,000 >> Gadewch i ni symud ymlaen. Gadewch i ni edrych ar Diwygiad 2 yn gyflym iawn. 261 00:16:51,000 --> 00:17:00,000 Dyna Vigenère. 262 00:17:00,000 --> 00:17:04,000 Yma yn Vigenère 263 00:17:04,000 --> 00:17:06,000 byddwn yn cerdded trwy yr un yma yn weddol gyflym oherwydd, unwaith eto, 264 00:17:06,000 --> 00:17:10,000 Vigenère a Cesar yn eithaf tebyg. 265 00:17:10,000 --> 00:17:12,000 Sylwadau Pennawd yn blaen, 266 00:17:12,000 --> 00:17:17,000 # Diffinio yn bod cyn i osgoi defnyddio rhifau hyn hud. 267 00:17:17,000 --> 00:17:21,000 Y peth braf yw dweud ein bod am symud i 268 00:17:21,000 --> 00:17:23,000 yn wyddor gwahanol neu rywbeth fel 'na. 269 00:17:23,000 --> 00:17:26,000 Yn hytrach na gorfod mynd â llaw newid yr holl y 26 yn y cod 270 00:17:26,000 --> 00:17:30,000 gallem newid hyn i 27 neu ollwng i lawr 271 00:17:30,000 --> 00:17:34,000 os ydym yn defnyddio gwahanol wyddorau, ieithoedd gwahanol. 272 00:17:34,000 --> 00:17:38,000 Unwaith eto, rydym wedi cael y gwiriad hwn o'r cyfrif ddadl, 273 00:17:38,000 --> 00:17:42,000 ac yn wir bron y gallwch dderbyn hwn fel templed. 274 00:17:42,000 --> 00:17:46,000 Dylai 'N bert lawer pob rhaglen i chi ysgrifennu wedi- 275 00:17:46,000 --> 00:17:50,000 os bydd yn cymryd llinell orchymyn dadleuon-rhyw dilyniant o linellau 276 00:17:50,000 --> 00:17:55,000 sy'n darllen fel hyn ar y cychwyn cyntaf. 277 00:17:55,000 --> 00:17:59,000 Dyna un o'r profion cyntaf y byddwch yn bwyll am ei wneud. 278 00:17:59,000 --> 00:18:03,000 >> Yma hyn a wnaethom oedd ein gwneud yn siŵr bod 279 00:18:03,000 --> 00:18:06,000 y gair allweddol yn ddilys, a dyna oedd y gwiriad ail waith inni ei wneud. 280 00:18:06,000 --> 00:18:11,000 Hysbysiad eto ein bod yn gwahanu oddi wrth hyn argc a 2. 281 00:18:11,000 --> 00:18:14,000 Sylwer bod yn yr achos hwn un peth yr ydym yn gorfod ei wneud oedd yn lle hynny 282 00:18:14,000 --> 00:18:18,000 o ddefnyddio i i roeddem am i ddilysu y llinyn cyfan, 283 00:18:18,000 --> 00:18:21,000 ac er mwyn gwneud yr ydych yn ei rhaid i chi fynd cymeriad gan cymeriad 284 00:18:21,000 --> 00:18:23,000 dros y llinyn. 285 00:18:23,000 --> 00:18:29,000 Does dim ffordd dda i alw rhywbeth arno 286 00:18:29,000 --> 00:18:31,000 oherwydd hyd yn oed, er enghraifft, i fydd i ddychwelyd 0 287 00:18:31,000 --> 00:18:37,000 os na all dosrannu cyfanrif, felly nid yw hyd yn oed yn gweithio. 288 00:18:37,000 --> 00:18:42,000 Unwaith eto, neges 'n glws dweud wrth y defnyddiwr yn union beth ddigwyddodd. 289 00:18:42,000 --> 00:18:45,000 Yna yma, unwaith eto, rydym hefyd yn ymdrin â'r achos lle 290 00:18:45,000 --> 00:18:50,000 y defnyddiwr mathau mewn cymeriad D reolaeth ar hap. 291 00:18:50,000 --> 00:18:54,000 >> Ac yna roedd Charlotte gwestiwn yn gynharach am sut rydym yn rheoli i osgoi mannau 292 00:18:54,000 --> 00:18:57,000 yn ein llinyn yma. 293 00:18:57,000 --> 00:19:00,000 Roedd hyn yn fath o debyg i'r hyn a wnaethom â'r rhaglen Myspace 294 00:19:00,000 --> 00:19:04,000 a wnaethom yn adran, a'r ffordd y gweithiodd 295 00:19:04,000 --> 00:19:08,000 yw ein bod yn olrhain nifer y llythyrau yr ydym ni wedi gweld. 296 00:19:08,000 --> 00:19:13,000 Wrth i ni gerdded dros y llinyn neges, wrth i ni gerdded dros cymeriad gan cymeriad, 297 00:19:13,000 --> 00:19:16,000 rydym yn olrhain mynegai fel rhan o'n gyfer dolen, ac yna rydym hefyd yn olrhain 298 00:19:16,000 --> 00:19:21,000 y nifer o lythyrau, felly heb fod yn arbennig cymeriadau, nad ydynt yn-digid, heb fod yn wyn gofod 299 00:19:21,000 --> 00:19:27,000 ein bod wedi gweld yn y newidyn ar wahân. 300 00:19:27,000 --> 00:19:33,000 Ac yna mae hyn yn ateb yn addasu'r allweddol 301 00:19:33,000 --> 00:19:41,000 i gael cyfanrif allweddol go iawn, ac mae'n gwneud hynny ar y hedfan, 302 00:19:41,000 --> 00:19:47,000 i'r dde cyn iddo wedyn yn mynd i amgryptio cymeriad negesau ei hun. 303 00:19:47,000 --> 00:19:50,000 Mae rhai atebion a oedd yn berffaith yn rhy fawr 304 00:19:50,000 --> 00:19:58,000 a fyddai'n newid y allweddol i fyny wrth brofi am ddilysrwydd yr allwedd yn. 305 00:19:58,000 --> 00:20:01,000 Yn ogystal â gwneud yn siŵr bod y cymeriad a'r gair allweddol 306 00:20:01,000 --> 00:20:05,000 Roedd yn gymeriad yr wyddor mae hefyd yn newid hynny i mewn i gyfanrif 307 00:20:05,000 --> 00:20:13,000 yn yr amrediad 0 i 25 yna ewch gorfod gwneud hynny yn nes ymlaen yn hyn ar gyfer dolen. 308 00:20:13,000 --> 00:20:18,000 Unwaith eto, byddwch yn gweld yma mae hyn yn wir yr un cod union 309 00:20:18,000 --> 00:20:22,000 a ddefnyddiwyd gennym yn y Caesar ar y pwynt hwn. 310 00:20:22,000 --> 00:20:25,000 Rydych yn gwneud yr un peth yn union, felly mae'r tric go iawn yn figuring allan 311 00:20:25,000 --> 00:20:30,000 sut i droi'r gair allweddol i mewn i gyfanrif. 312 00:20:30,000 --> 00:20:35,000 >> Un peth a wnaethom yma sydd ychydig yn drwchus 313 00:20:35,000 --> 00:20:39,000 yn yr ydym ailadrodd yr ymadrodd hwn, yr wyf yn dyfalu y gallai ydych yn ei alw, 314 00:20:39,000 --> 00:20:45,000 3 gwaith ar wahân ar linellau 58, 59, a 61. 315 00:20:45,000 --> 00:20:52,000 A all rhywun esbonio beth yn union yr ymadrodd hwn yn ei wneud? 316 00:20:52,000 --> 00:20:55,000 Mae'n cael mynediad i gymeriad, fel y dywedasoch. 317 00:20:55,000 --> 00:20:59,000 Yeah, mae'n [Anghlywadwy] cymeriad yn y keyword, 318 00:20:59,000 --> 00:21:04,000 ac felly mae'n nifer o lythyrau gweld oherwydd eich bod dim ond symud ar hyd 319 00:21:04,000 --> 00:21:06,000 y gair allweddol unwaith y byddwch wedi gweld y llythyr, 320 00:21:06,000 --> 00:21:10,000 fel bod yn mynd i sgip yn effeithiol mannau a phethau fel 'na. 321 00:21:10,000 --> 00:21:12,000 Yeah, yn union. 322 00:21:12,000 --> 00:21:16,000 Ac yna unwaith y byddwch wedi gweld y gair allweddol wag 'ch jyst mod er mwyn i chi symud yn ôl o gwmpas. 323 00:21:16,000 --> 00:21:18,000 Yn union. Dyna esboniad berffaith. 324 00:21:18,000 --> 00:21:23,000 Beth Kevin ddweud yw ein bod yn awyddus i mynegai i mewn i'r gair allweddol. 325 00:21:23,000 --> 00:21:28,000 Rydym yn awyddus i gael y cymeriad num_letters_seen, os mynnwch, 326 00:21:28,000 --> 00:21:32,000 ond os num_letters_seen yn fwy na hyd y gair allweddol, 327 00:21:32,000 --> 00:21:37,000 y ffordd yr ydym yn mynd yn ôl i mewn i'r amrediad priodol yw y byddwn yn defnyddio'r gweithredwr mod 328 00:21:37,000 --> 00:21:40,000 yn effeithiol lapio o gwmpas. 329 00:21:40,000 --> 00:21:43,000 Er enghraifft, fel yn y tymor byr, mae ein gair allweddol yw cig moch, 330 00:21:43,000 --> 00:21:46,000 ac mae'n 5 llythyr hir. 331 00:21:46,000 --> 00:21:50,000 Ond rydym wedi gweld 6 llythyr yn ein testun plaen ar y pwynt hwn 332 00:21:50,000 --> 00:21:52,000 ac wedi'i amgryptio 6. 333 00:21:52,000 --> 00:21:57,000 Byddwn yn dod i ben i fyny cael mynediad i'r num_letters_seen, 334 00:21:57,000 --> 00:22:00,000 sydd 6, mod hyd y gair allweddol, 5, 335 00:22:00,000 --> 00:22:04,000 ac felly byddwn yn cael 1, ac felly yr hyn y byddwn yn ei wneud yw gallwn eich 336 00:22:04,000 --> 00:22:14,000 mynediad i'r tu mewn cymeriad cyntaf ein gair allweddol yn y pwynt hwnnw. 337 00:22:14,000 --> 00:22:21,000 >> Mae pob hawl, unrhyw gwestiynau am Vigenère 338 00:22:21,000 --> 00:22:26,000 cyn i ni symud ymlaen? 339 00:22:26,000 --> 00:22:31,000 Rydych guys teimlo'n eithaf da am hyn? 340 00:22:31,000 --> 00:22:35,000 Cool, mawr. 341 00:22:35,000 --> 00:22:38,000 Rwyf am wneud yn siŵr eich bod guys yn cael y cyfle i weld cod 342 00:22:38,000 --> 00:22:48,000 ein bod yn meddwl yn edrych yn dda ac yn cael y cyfle i ddysgu oddi wrtho. 343 00:22:48,000 --> 00:22:53,000 Mae hyn yn mynd i fod yn yr olaf byddwn yn defnyddio mannau am y tro, 344 00:22:53,000 --> 00:22:59,000 ac rydym yn mynd i pontio yn awr, ac yr wyf i'n mynd i fynd i cs50.net/lectures 345 00:22:59,000 --> 00:23:06,000 fel y gallwn wneud ychydig o cwis adolygiad. 346 00:23:06,000 --> 00:23:10,000 Y ffordd orau Rwy'n credu i ddechrau gwneud cwis adolygiad 347 00:23:10,000 --> 00:23:15,000 i ddod at y dudalen Darlithoedd, cs50.net/lectures, 348 00:23:15,000 --> 00:23:20,000 ac o dan bob un o'r penawdau wythnos, felly os wyf yn edrych yma yn Wythnos 0, 349 00:23:20,000 --> 00:23:27,000 Gwelaf fod gennym restr o bynciau ein bod wedi ymdrin yn Wythnos 0. 350 00:23:27,000 --> 00:23:31,000 >> Os bydd unrhyw un o'r pynciau yn ymddangos yn anghyfarwydd i chi 351 00:23:31,000 --> 00:23:34,000 byddwch yn bendant eisiau mynd yn ôl a chwalfa barhaus y mwd y nodiadau darlith ac o bosibl 352 00:23:34,000 --> 00:23:39,000 hyd yn oed yn sgimio trwy'r darlithoedd, gwylio nhw eto os ydych eisiau 353 00:23:39,000 --> 00:23:44,000 i gael blas ar beth sy'n mynd ymlaen â phob un o'r pynciau. 354 00:23:44,000 --> 00:23:49,000 Byddaf yn dweud hefyd y flwyddyn o'r adnoddau oeri rydym wedi cael 355 00:23:49,000 --> 00:23:55,000 Dyma'r siorts yr ydym wedi eu creu, ac os ydych yn edrych ar Wythnos 0, 356 00:23:55,000 --> 00:24:00,000 Nid oes gennym yr holl o'r pynciau a drafodir, ond mae gennym eithaf ychydig ohonynt, 357 00:24:00,000 --> 00:24:03,000 rhai o'r rhai anoddach, felly gwylio hyn shorts eto 358 00:24:03,000 --> 00:24:08,000 yn ffordd dda i fynd â chi i fyny i gyflymu. 359 00:24:08,000 --> 00:24:15,000 Yn benodol, dw i'n mynd i roi mewn plwg ar gyfer y 3 ar y gwaelod, ers i mi wneud hynny. 360 00:24:15,000 --> 00:24:20,000 Ond os ydych yn cael trafferth gyda deuaidd, darnau, hecs, y math o bethau, 361 00:24:20,000 --> 00:24:22,000 binary yn lle gwych i ddechrau. 362 00:24:22,000 --> 00:24:25,000 ASCII yn un arall sy'n dda i weld hefyd. 363 00:24:25,000 --> 00:24:31,000 Gallwch hyd yn oed yn fy ngwylio ar gyflymder 1.5x os ydw i'n mynd yn rhy araf i chi. 364 00:24:31,000 --> 00:24:35,000 Ers ei adolygiad, croeso i chi wneud hynny. 365 00:24:35,000 --> 00:24:40,000 >> Dim ond i gychwyn yn gyflym iawn, rydym yn mynd i fynd drwy ychydig o'r problemau hyn cwis 366 00:24:40,000 --> 00:24:44,000 yn unig i gorddi yn gyflym drwy'r rhain. 367 00:24:44,000 --> 00:24:50,000 Er enghraifft, gadewch i ni edrych ar broblem 16 sy'n gen i'r dde i fyny yma ar y bwrdd. 368 00:24:50,000 --> 00:24:54,000 Rydym wedi cael y cyfrifiad canlynol yn binary, 369 00:24:54,000 --> 00:24:56,000 ac rydym am ddangos unrhyw waith. 370 00:24:56,000 --> 00:24:59,000 Iawn, dw i'n mynd i roi hyn yn ergyd. 371 00:24:59,000 --> 00:25:01,000 Dylech guys ddilyn ynghyd â phapur, 372 00:25:01,000 --> 00:25:04,000 a byddwn yn gwneud hyn yn gyflym iawn. 373 00:25:04,000 --> 00:25:06,000 Rydym yn awyddus i berfformio y cyfrifiad canlynol yn deuaidd. 374 00:25:06,000 --> 00:25:16,000 Mae gen i 00,110,010. 375 00:25:16,000 --> 00:25:27,000 Ac yr wyf i'n mynd i ychwanegu ato 00,110,010. 376 00:25:27,000 --> 00:25:30,000 Ar gyfer y math ysgolheigion yn dilyn ar hyd yn y cartref, 377 00:25:30,000 --> 00:25:35,000 hyn yn effeithiol lluosi gyda 2. 378 00:25:35,000 --> 00:25:37,000 Gadewch i ni ddechrau. 379 00:25:37,000 --> 00:25:39,000 Rydym yn mynd i ddilyn yr algorithm ogystal ag yr ydym yn ei wneud 380 00:25:39,000 --> 00:25:43,000 pan fyddwn yn ychwanegu rhifau degol gyda'i gilydd. 381 00:25:43,000 --> 00:25:46,000 Really yr unig wahaniaeth yma yw ein bod dolen yn ôl o gwmpas 382 00:25:46,000 --> 00:25:51,000 unwaith y byddwn wedi 1 + 1 yn hytrach na ar ôl inni gael i 10. 383 00:25:51,000 --> 00:25:53,000 >> Os byddwn yn dechrau o'r dde, yn gyflym iawn, beth yw'r digid cyntaf? 384 00:25:53,000 --> 00:25:55,000 [Myfyrwyr] 0. >> [Nate H.] 0. 385 00:25:55,000 --> 00:25:58,000 Great, yr ail ddigid? 386 00:25:58,000 --> 00:26:00,000 [Myfyrwyr] 1. 387 00:26:00,000 --> 00:26:02,000 [Nate H.] A yw'n 1? 1 + 1 yn? 388 00:26:02,000 --> 00:26:04,000 [Myfyrwyr] 10. 389 00:26:04,000 --> 00:26:08,000 [Nate H.] Yn union, felly beth yw'r digid mod i'n ysgrifennu i'r dde o dan y 2 rhai hadio at ei gilydd? 390 00:26:08,000 --> 00:26:11,000 [Myfyrwyr] 1, 0, neu 0 ac yna gario'r 1. 391 00:26:11,000 --> 00:26:15,000 [Nate H.] 0 ac yn cario 1, yn union. 392 00:26:15,000 --> 00:26:18,000 Un nesaf i fyny, Basil, rydych yn i fyny. 393 00:26:18,000 --> 00:26:20,000 Beth yw'r parti? >> [Basil] 1. 394 00:26:20,000 --> 00:26:23,000 [Nate H.] 1, perffaith. Kevin? 395 00:26:23,000 --> 00:26:27,000 [Kevin] 0. >> [Nate H.] 0, Charlotte? 396 00:26:27,000 --> 00:26:30,000 [Charlotte] 0. >> [Nate H.] Yeah, a beth ddylwn i ei wneud? 397 00:26:30,000 --> 00:26:32,000 [Myfyrwyr] Mae'r 1. 398 00:26:32,000 --> 00:26:34,000 [Nate H.] A beth ddylwn i ei wneud? Ac yna yr wyf yn cario'r 1. 399 00:26:34,000 --> 00:26:36,000 Perffaith, Sahb? >> [Sahb] Nawr eich bod wedi 1. 400 00:26:36,000 --> 00:26:40,000 [Nate H.] A ydw i'n gwneud unrhyw beth yma? 401 00:26:40,000 --> 00:26:43,000 [Sahb] Yna am yr un nesaf ydych wedi 1 oherwydd eich cario trosodd 1. 402 00:26:43,000 --> 00:26:49,000 [Nate H.] Great, felly dyma gallwn orffen i fyny. 403 00:26:49,000 --> 00:26:51,000 Cool. 404 00:26:51,000 --> 00:26:54,000 [Myfyrwyr] yw 0 + 0 = 0? 405 00:26:54,000 --> 00:26:56,000 0 + 0 = 0. 406 00:26:56,000 --> 00:27:01,000 1 + 1, fel y dywedasoch, yw 10, neu 1, 0, yn hytrach. 407 00:27:01,000 --> 00:27:07,000 10 yn gamarweiniol oherwydd i mi 10 yn golygu y rhif 10, 408 00:27:07,000 --> 00:27:12,000 ac mae'n y chwiw o sut yr ydym yn ei chynrychioli pan fyddwn ni'n ysgrifennu. 409 00:27:12,000 --> 00:27:20,000 Rydym yn cynrychioli y rhif 2 o 1, 0, ac mae'r rhif 10 yn ychydig yn wahanol. 410 00:27:20,000 --> 00:27:23,000 >> Beth fath o neis am deuaidd yw nad oes mewn gwirionedd yw bod llawer o 411 00:27:23,000 --> 00:27:25,000 achosion mae angen i chi ddysgu. 412 00:27:25,000 --> 00:27:30,000 Mae 0 + 0 = 0, 0 + 1 = 1, 413 00:27:30,000 --> 00:27:34,000 1 + 1 yn 0, ac yna yn cario 1, 414 00:27:34,000 --> 00:27:37,000 ac yna gallwch chi weld yma ar y drydedd golofn o'r dde 415 00:27:37,000 --> 00:27:40,000 gawsom y 1, 1, a 1. 416 00:27:40,000 --> 00:27:43,000 Ac 1 + 1 + 1 yn 1, 417 00:27:43,000 --> 00:27:45,000 a ydych yn cario arall 1. 418 00:27:45,000 --> 00:27:48,000 Pan fyddwch chi'n gwneud ychwanegol deuaidd, 'n bert syml. 419 00:27:48,000 --> 00:27:51,000 Byddwn yn gwneud mwy ddau o'r rhain i bwyll wirio eich hunain 420 00:27:51,000 --> 00:27:54,000 cyn i chi fynd i mewn gan fod hyn yn 421 00:27:54,000 --> 00:28:00,000 yn ôl pob tebyg rhywbeth y byddwn yn gweld ar y cwis. 422 00:28:00,000 --> 00:28:03,000 Nawr gadewch i ni wneud yr un nesaf yn ogystal. 423 00:28:03,000 --> 00:28:06,000 Gadewch i ni wneud problem 17. 424 00:28:06,000 --> 00:28:12,000 Rydym yn mynd i drosi'r rhif deuaidd canlynol i degol. 425 00:28:12,000 --> 00:28:28,000 Mae gen i 10100111001. 426 00:28:28,000 --> 00:28:33,000 Cofiwch yn y fideo deuaidd mod i wedi 427 00:28:33,000 --> 00:28:36,000 Yr wyf yn cerdded drwy un neu ddau o enghreifftiau, ac yr wyf yn dangos sut y 428 00:28:36,000 --> 00:28:41,000 mae popeth yn gweithio pan fyddwch chi'n ei wneud yn degol. 429 00:28:41,000 --> 00:28:45,000 Pan fyddwch yn gweithio mewn cynrychiolaeth degol Rwy'n credu ein bod 430 00:28:45,000 --> 00:28:48,000 ar y pwynt hwn yn ein bywydau mor rhugl ynddi y 431 00:28:48,000 --> 00:28:53,000 mae'n eithaf hawdd i sglein dros y mecanwaith o sut y mae'n gweithio mewn gwirionedd. 432 00:28:53,000 --> 00:28:59,000 >> Ond i wneud ailadrodd cyflym, os wyf yn cael y rhif 137 433 00:28:59,000 --> 00:29:06,000 hyn yn ei olygu mewn gwirionedd-ac eto, mae hyn yn degol chynrychiolaeth- 434 00:29:06,000 --> 00:29:19,000 y rhif 137 yn degol yn golygu bod gen i 1 x 100 + 3 x 10 + 7 x 1. 435 00:29:19,000 --> 00:29:22,000 Mae hyn i gyd yn aros ar y sgrin. 436 00:29:22,000 --> 00:29:29,000 Ac yna os ydych yn edrych ar y niferoedd hyn yn iawn yma, 437 00:29:29,000 --> 00:29:34,000 100, 10 ac 1, byddwch yn gweld eu bod yn mewn gwirionedd yn holl bwerau o 10. 438 00:29:34,000 --> 00:29:43,000 Mae gen i 10 ², 10 ¹, a 10 i sero. 439 00:29:43,000 --> 00:29:48,000 Mae gennym un math o beth yn deuaidd, 440 00:29:48,000 --> 00:29:55,000 ac eithrio bod ein sylfaen, fel y'i gelwir, yw 2 yn hytrach na 10. 441 00:29:55,000 --> 00:29:58,000 Mae'r 10au a ysgrifennais i lawr yma yn y gwaelod, 442 00:29:58,000 --> 00:30:02,000 y ² 10, 10 ¹, 10 i'r sero, 10 yw ein sylfaen, 443 00:30:02,000 --> 00:30:08,000 a'r ddehonglwr, 0, 1, neu 2, 444 00:30:08,000 --> 00:30:14,000 ei awgrymu gan y safle'r digid yn y nifer a rydym yn ysgrifennu. 445 00:30:14,000 --> 00:30:21,000 1, os ydym yn edrych arno, mae hyn 1 yn y sefyllfa 2il. 446 00:30:21,000 --> 00:30:27,000 Mae'r 3 yn y sefyllfa 1af, a'r 7 yn y sefyllfa 0. 447 00:30:27,000 --> 00:30:35,000 Dyna sut yr ydym yn cael y ddehonglwyr gwahanol isod am ein canolfannau. 448 00:30:35,000 --> 00:30:40,000 >> Yn dilyn hyn i gyd we'll-mewn gwirionedd, eich bod yn gwybod beth? 449 00:30:40,000 --> 00:30:43,000 Byddwn yn gwneud-lle oedd fy dadwneud botwm yn mynd? 450 00:30:43,000 --> 00:30:45,000 Mae y mae'n mynd. 451 00:30:45,000 --> 00:30:47,000 Rwyf wrth fy modd dadwneud hyn beth. 452 00:30:47,000 --> 00:30:51,000 Yn dilyn hyn yr wyf yn meddwl i mi o leiaf 453 00:30:51,000 --> 00:30:54,000 y ffordd hawsaf i ddechrau trosi rhif deuaidd 454 00:30:54,000 --> 00:30:57,000 neu rhif hecsadegol lle y sylfaen yw 16 455 00:30:57,000 --> 00:31:02,000 a bod 10 neu 2 yn mynd yn ei flaen ac ysgrifennu 456 00:31:02,000 --> 00:31:09,000 y canolfannau a ddehonglwyr gyfer pob un o'r rhifau yn fy rhif deuaidd ar y brig. 457 00:31:09,000 --> 00:31:14,000 Os byddwn yn dechrau o'r chwith i'r dde unwaith eto, 458 00:31:14,000 --> 00:31:17,000 sy'n fath o groes i reddf, 459 00:31:17,000 --> 00:31:23,000 'N annhymerus' newid yn ôl i du yma, mae gennym y 2 i'r sefyllfa 0, 460 00:31:23,000 --> 00:31:27,000 ac yna mae gennym 2 ¹, 2 ², 461 00:31:27,000 --> 00:31:33,000 ac yna 2 i 3, 2 i 4, 2 i 5, 6, 462 00:31:33,000 --> 00:31:39,000 7, 8, 9, a 10. 463 00:31:39,000 --> 00:31:41,000 Mae'r niferoedd hyn rwyf wedi ysgrifennu allan yn yr holl esbonyddion. 464 00:31:41,000 --> 00:31:48,000 Dim ond ysgrifennodd y canolfannau yma yn y 3 cyntaf yn unig ar gyfer gofod. 465 00:31:48,000 --> 00:31:50,000 >> Ar y pwynt hwn yr wyf i'n mynd i fynd yn ei flaen ac rwy'n wir yn mynd i ddileu 466 00:31:50,000 --> 00:31:53,000 y pethau a wnaethom yn degol, os yw hynny'n iawn. 467 00:31:53,000 --> 00:31:57,000 Rydych chi wedi cael yr holl hynny. 468 00:31:57,000 --> 00:32:05,000 Bydd y rhai ohonoch gwylio ar-lein Rwy'n siŵr y gallu i ailddirwyn mi os hoffech chi. 469 00:32:05,000 --> 00:32:07,000 Newid yn ôl i'r gorlan. 470 00:32:07,000 --> 00:32:12,000 Nawr, beth y gallwn ei wneud-os nad ydych guys yn hollol i fyny i gyflymu ar eich bwerau o 2, 471 00:32:12,000 --> 00:32:15,000 mae hynny'n hollol cŵl. 472 00:32:15,000 --> 00:32:18,000 Mae'n digwydd. Yr wyf yn deall. 473 00:32:18,000 --> 00:32:23,000 Rwy'n unwaith wedi cael cyfweliad am swydd lle y dywedwyd wrthyf y dylwn wybod yr holl bwerau o 2 474 00:32:23,000 --> 00:32:26,000 i fyny trwy'r 2 i 30. 475 00:32:26,000 --> 00:32:29,000 Nid oedd swydd rwy'n got. 476 00:32:29,000 --> 00:32:32,000 Beth bynnag, gallwch chi guys mynd yn ei flaen a gwneud y math yma, 477 00:32:32,000 --> 00:32:35,000 ond gyda deuaidd nid yw'n gwneud synnwyr mewn gwirionedd, 478 00:32:35,000 --> 00:32:38,000 ac nid yw'n gwneud synnwyr gyda degol neu hecsadegol naill ai, 479 00:32:38,000 --> 00:32:43,000 i wneud y math allan lle mae gennych sero. 480 00:32:43,000 --> 00:32:49,000 Gallwch weld gen i 0 yma, o 0 yma, 0 yma, 0 yma, 0 yma, 0 yma. 481 00:32:49,000 --> 00:32:52,000 Pam na gwneud synnwyr i wneud y math gwirioneddol 482 00:32:52,000 --> 00:32:56,000 i gyfrifo'r pŵer priodol o 2 ar gyfer y swydd? 483 00:32:56,000 --> 00:32:59,000 Yn union, fel Charlotte dywedodd, bydd yn 0. 484 00:32:59,000 --> 00:33:05,000 Efallai yn ogystal arbed amser os nad cyfrifo pwerau 2 yn eich siwt cryf. 485 00:33:05,000 --> 00:33:10,000 Yn yr achos hwn dim ond angen i gyfrifo am 2 i 0 a yw-? 486 00:33:10,000 --> 00:33:12,000 [Myfyrwyr] 1. 487 00:33:12,000 --> 00:33:14,000 [Nate H.] 1, 2 i 3 sydd-? 488 00:33:14,000 --> 00:33:16,000 [Myfyrwyr] 8. >> [Nate H.] 8. 489 00:33:16,000 --> 00:33:18,000 2 i 4? 490 00:33:18,000 --> 00:33:21,000 [Myfyrwyr] 2. Mae'n ddrwg gen i, 1. 491 00:33:21,000 --> 00:33:26,000 [Nate H.] 2 i 4 yn 16, yn union. 492 00:33:26,000 --> 00:33:28,000 2 i 5, Kevin? >> 32. 493 00:33:28,000 --> 00:33:32,000 [Nate H.] 32, 2 i 8? 494 00:33:32,000 --> 00:33:38,000 [Myfyrwyr] 32 x 8, 256. 495 00:33:38,000 --> 00:33:41,000 [Nate H.] Perfect. 496 00:33:41,000 --> 00:33:43,000 A 2 i'r 10? 497 00:33:43,000 --> 00:33:45,000 [Myfyrwyr] 1024. 498 00:33:45,000 --> 00:33:49,000 [Nate H.] Yeah, 1024. 499 00:33:49,000 --> 00:33:57,000 >> Unwaith y byddwn wedi cael y niferoedd hyn gallwn grynhoi nhw i gyd i fyny. 500 00:33:57,000 --> 00:34:01,000 A dyma lle mae'n bwysig iawn i wneud un neu ddau o bethau. 501 00:34:01,000 --> 00:34:07,000 Mae un yn mynd yn araf ac yn gwirio eich gwaith. 502 00:34:07,000 --> 00:34:10,000 Gallwch ddweud bod yna 1 ar ddiwedd y rhif hwn, 503 00:34:10,000 --> 00:34:15,000 felly dylai yn bendant gael odrif fel fy ganlyniad, 504 00:34:15,000 --> 00:34:18,000 oherwydd bod yr holl rai eraill yn mynd i fod hyd yn oed yn nifer 505 00:34:18,000 --> 00:34:21,000 ystyried ei bod yn rhif deuaidd. 506 00:34:21,000 --> 00:34:24,000 Y peth arall i'w wneud yw os ydych yn cyrraedd y pwynt ar y prawf 507 00:34:24,000 --> 00:34:27,000 ac rydych wedi ysgrifennu allan cyn belled â hyn 508 00:34:27,000 --> 00:34:30,000 a ydych yn rhedeg allan o amser 509 00:34:30,000 --> 00:34:33,000 edrych ar y nifer o bwyntiau bod y broblem hon yn werth. 510 00:34:33,000 --> 00:34:40,000 Mae hyn yn broblem, fel y gallwch weld-os byddaf yn troi yn ôl at fy ngliniadur yn gyflym iawn- 511 00:34:40,000 --> 00:34:44,000 broblem hon yn werth 2 bwynt, felly nid dyma'r math o ychwanegiad 512 00:34:44,000 --> 00:34:47,000 dylech fod yn mynd trwy os ydych yn pwyso yn wir am amser. 513 00:34:47,000 --> 00:34:52,000 Ond byddwn yn newid yn ôl i'r iPad, a byddwn yn mynd drwyddo yn gyflym iawn. 514 00:34:52,000 --> 00:34:54,000 >> Rwy'n hoffi gwneud y niferoedd bach cyntaf 515 00:34:54,000 --> 00:34:56,000 oherwydd fy mod yn dod o hyd i hynny'n haws. 516 00:34:56,000 --> 00:35:00,000 Rwy'n hoffi 32 a 8 oherwydd eu bod yn mynd gyda'i gilydd yn eithaf hawdd, ac rydym yn cael 50. 517 00:35:00,000 --> 00:35:03,000 16 ac 1 yn cael 17. 518 00:35:03,000 --> 00:35:05,000 Dyna ni yn cael 57, 519 00:35:05,000 --> 00:35:14,000 ac yna gallwn wneud y gweddill o hyn, felly rydym yn gallu ei wneud 57, 156. 520 00:35:14,000 --> 00:35:16,000 Dewch ar. 521 00:35:16,000 --> 00:35:19,000 Dyn, yn dda, gadewch i ni weld. 522 00:35:19,000 --> 00:35:27,000 Roedd gennym 57, 256, a 1024. 523 00:35:27,000 --> 00:35:31,000 Ar y pwynt hwn, byddai'n well gen i jyst yn mynd drwyddo. 524 00:35:31,000 --> 00:35:35,000 Nid oes gennyf unrhyw syniad. I amlwg bod angen i ddarllen i fyny ar hyn. 525 00:35:35,000 --> 00:35:40,000 7, 6, a 4, byddwch yn cael 17. 526 00:35:40,000 --> 00:35:42,000 1, 5, 5, 2, 13. 527 00:35:42,000 --> 00:35:45,000 Yna rydym yn cael 3, ac yna rydym yn cael 1. 528 00:35:45,000 --> 00:35:52,000 1337. 529 00:35:52,000 --> 00:35:55,000 Wyau Pasg, unrhyw un? 530 00:35:55,000 --> 00:35:59,000 Unrhyw un yn adnabod rhif hwn? 531 00:35:59,000 --> 00:36:02,000 Chris yn cydnabod y rhif. Beth mae'n ei olygu, Chris? 532 00:36:02,000 --> 00:36:04,000 [Chris] Phentreflys. 533 00:36:04,000 --> 00:36:11,000 Phentreflys, felly os ydych yn edrych ar hyn, mae'n edrych fel lît. 534 00:36:11,000 --> 00:36:15,000 Pethau haciwr. Gwyliwch allan am y math hwnnw o stwff ar y canol tymor neu cwis, yn hytrach. 535 00:36:15,000 --> 00:36:19,000 Os ydych yn gweld y math o bethau ac rydych yn meddwl "Huh," 536 00:36:19,000 --> 00:36:22,000 allai fod mewn gwirionedd yn golygu rhywbeth. 537 00:36:22,000 --> 00:36:24,000 Nid wyf yn gwybod. David yn hoffi ei roi i mewn 538 00:36:24,000 --> 00:36:26,000 Mae'n ffordd dda o bwyll ei wirio. 539 00:36:26,000 --> 00:36:30,000 Fel iawn, gallaf weld beth sy'n mynd ymlaen. 540 00:36:30,000 --> 00:36:34,000 >> Dyna Wythnos 0/Week 1 stwff. 541 00:36:34,000 --> 00:36:39,000 Os byddwn yn newid yn ôl at ein gliniadur yn awr, 542 00:36:39,000 --> 00:36:46,000 chwyddo allan, ac un neu ddau o bethau eraill. 543 00:36:46,000 --> 00:36:50,000 Mae ASCII, yr ydym wedi bod yn gwneud llawer o gyda setiau broblem. 544 00:36:50,000 --> 00:36:55,000 Mae'r syniad o gyfalaf A. Beth yw hynny mewn gwirionedd? 545 00:36:55,000 --> 00:36:57,000 Mae gwybod ei fod yn y cyfanrif degol. 546 00:36:57,000 --> 00:37:00,000 65 yw yr hyn y mae'n ei mapio yn y tabl ASCII, 547 00:37:00,000 --> 00:37:03,000 a dyna felly sut y cyfrifiadur yn ysgrifennu iddo, 548 00:37:03,000 --> 00:37:06,000 a dyna sut rydym wedi bod yn cael i ffwrdd gyda gwirionedd ysgrifennu 549 00:37:06,000 --> 00:37:09,000 cyfalaf cymeriad A a chymeriad lythrennau bach a 550 00:37:09,000 --> 00:37:14,000 mewn rhai o'r atebion hyn ac yn gosod problem eich bod wedi bod yn ei wneud. 551 00:37:14,000 --> 00:37:16,000 Mae cwpl o bethau eraill. 552 00:37:16,000 --> 00:37:25,000 Rydym wedi cael datganiadau, ymadroddion boolean, amodau, dolenni, newidynnau ac edafedd. 553 00:37:25,000 --> 00:37:29,000 >> Mae'r rhai i gyd yn ymddangos i wneud synnwyr ar gyfer y rhan fwyaf? 554 00:37:29,000 --> 00:37:35,000 Mae rhai o'r derminoleg yn ffynci ychydig ar adegau. 555 00:37:35,000 --> 00:37:46,000 Rwy'n hoffi i feddwl am ddatganiad ag ar gyfer y rhan fwyaf o rywbeth rhan sy'n dod i ben gyda hanner colon. 556 00:37:46,000 --> 00:37:51,000 Datganiadau fel x = 7, sy'n gosod amrywiol, 557 00:37:51,000 --> 00:37:54,000 a elwir yn ôl pob tebyg x = 7. 558 00:37:54,000 --> 00:38:01,000 Mae'n debyg x hefyd yn fath sy'n gallu storio rhif 7, 559 00:38:01,000 --> 00:38:05,000 felly ei fod yn int neu efallai arnofio neu gyfnod byr neu golosg, 560 00:38:05,000 --> 00:38:07,000 rhywbeth fel 'na. 561 00:38:07,000 --> 00:38:12,000 Mae mynegiant boolean yn defnyddio hyn dwbl yn dychwelyd 562 00:38:12,000 --> 00:38:17,000 a bang yn hafal i neu os nad yw'r hafal, llai na, mwy na, 563 00:38:17,000 --> 00:38:22,000 yn llai na neu'n hafal i, y cyfan sydd math o bethau. 564 00:38:22,000 --> 00:38:28,000 Amodau wedyn yn ddatganiadau os arall. 565 00:38:28,000 --> 00:38:32,000 Byddwn yn cofio na allwch gael arall heb cyfatebol os. 566 00:38:32,000 --> 00:38:37,000 Yn yr un modd, ni allwch gael arall os heb cyfatebol os. 567 00:38:37,000 --> 00:38:40,000 Dolenni, dwyn i gof y 3 math o dolenni rydym wedi bod yn curo i mewn i chi 568 00:38:40,000 --> 00:38:43,000 ar gyfer yr ychydig olaf o adrannau a setiau problem. 569 00:38:43,000 --> 00:38:46,000 Gan ddefnyddio yn tra pan fyddwch chi'n cael mewnbwn defnyddwyr, 570 00:38:46,000 --> 00:38:51,000 defnyddio tra dolenni hyd nes y bydd cyflwr penodol yn wir, 571 00:38:51,000 --> 00:38:56,000 ac yna defnyddio rhai ar gyfer dolenni os bydd angen i chi 572 00:38:56,000 --> 00:39:01,000 yn gwybod pa fersiwn o'r ddolen ydych yn ar hyn o bryd ar dyna sut yr wyf yn meddwl am y peth. 573 00:39:01,000 --> 00:39:07,000 Neu os ydych yn gwneud ar gyfer pob cymeriad mewn llinyn Rwyf am wneud rhywbeth, 574 00:39:07,000 --> 00:39:15,000 ar gyfer pob elfen mewn arae Rwyf am wneud rhywbeth i gael yr elfen honno. 575 00:39:15,000 --> 00:39:18,000 >> Trywyddau a digwyddiadau. 576 00:39:18,000 --> 00:39:21,000 Nid yw'r rhain yr ydym wedi trafod hynny yn benodol yn C, 577 00:39:21,000 --> 00:39:23,000 ond cofiwch hyn o Scratch. 578 00:39:23,000 --> 00:39:26,000 Dyma syniad o gael sgriptiau gwahanol. 579 00:39:26,000 --> 00:39:32,000 Mae hyn hefyd yn syniad hwn o ddarlledu digwyddiad. 580 00:39:32,000 --> 00:39:37,000 Nid yw rhai pobl yn defnyddio darlledu yn eu prosiectau i ddechrau, 581 00:39:37,000 --> 00:39:40,000 sy'n gwbl oer, 582 00:39:40,000 --> 00:39:46,000 ond mae'r rhain yn 2 ffyrdd gwahanol o ddelio â mater hwn mwy o faint o'r enw concurrency, 583 00:39:46,000 --> 00:39:49,000 sef sut ydych chi'n cael rhaglenni i weithredu 584 00:39:49,000 --> 00:39:54,000 neu ymddangos yn gweithredu ar yr un pryd? 585 00:39:54,000 --> 00:39:59,000 Gwahanol dasgau redeg wrth dasgau eraill hefyd yn rhedeg. 586 00:39:59,000 --> 00:40:01,000 Dyma sut mae eich system weithredu yn ymddangos i weithio. 587 00:40:01,000 --> 00:40:04,000 Dyma pam hyd yn oed er, er enghraifft, 588 00:40:04,000 --> 00:40:10,000 Rwyf wedi cydio yn fy porwr yn rhedeg, gallaf droi ar Spotify a chwarae cân. 589 00:40:10,000 --> 00:40:14,000 Mae hynny'n fwy o beth cysyniadol i ddeall. 590 00:40:14,000 --> 00:40:17,000 Byddwn yn edrych ar yr edafedd byr 591 00:40:17,000 --> 00:40:21,000 os hoffech chi ddysgu mwy am hynny. 592 00:40:21,000 --> 00:40:26,000 >> Gadewch i ni weld, rwy'n credu y gallai fod wedi bod yn 593 00:40:26,000 --> 00:40:31,000 yn broblem ar hyn mewn un o'r rhain. 594 00:40:31,000 --> 00:40:35,000 Unwaith eto, yr wyf yn meddwl nad edafedd a digwyddiadau yn rhywbeth y byddwn yn ymdrin yn C 595 00:40:35,000 --> 00:40:41,000 dim ond oherwydd ei fod yn llawer mwy anodd nag mewn Scratch. 596 00:40:41,000 --> 00:40:44,000 Ni ddylech boeni am y peth yno, ond yn bendant yn deall y cysyniadau, 597 00:40:44,000 --> 00:40:47,000 deall beth sy'n mynd ymlaen. 598 00:40:47,000 --> 00:40:52,000 Cyn i ni symud ymlaen, unrhyw gwestiynau am Wythnos 0 deunydd? 599 00:40:52,000 --> 00:40:55,000 Mae pawb yn teimlo'n 'n bert da? 600 00:40:55,000 --> 00:41:03,000 Newidynnau Dealltwriaeth a beth yw newidyn? 601 00:41:03,000 --> 00:41:08,000 >> Symud ymlaen. Wythnos 1. 602 00:41:08,000 --> 00:41:12,000 Mae cwpl o bethau fan hyn nad oedd yn cynnwys yn arbennig 603 00:41:12,000 --> 00:41:21,000 yn yr adolygiad o reidrwydd cwis a hefyd yn bethau mwy cysyniadol i feddwl amdano. 604 00:41:21,000 --> 00:41:30,000 Y cyntaf yw y syniad o'r hyn y cod ffynhonnell, crynoadyddion a chod gwrthrych yn cael eu. 605 00:41:30,000 --> 00:41:32,000 Unrhyw un? Basil. 606 00:41:32,000 --> 00:41:37,000 A yw gwrthrych cod-yr wyf yn golygu cod ffynhonnell yr hyn yr ydych ei roi i mewn i clang, 607 00:41:37,000 --> 00:41:42,000 a chod gwrthrych yw beth clang rhoi allan fel y gall eich cyfrifiadur ddarllen y rhaglen. 608 00:41:42,000 --> 00:41:44,000 Yn union. 609 00:41:44,000 --> 00:41:47,000 Cod ffynhonnell yw'r cod C yr ydych yn ei deipio. 610 00:41:47,000 --> 00:41:50,000 Cod gwrthrych yw hyn a gewch allan o clang. 611 00:41:50,000 --> 00:41:54,000 Dyma'r 0au ac 1 yn y fformat deuaidd. 612 00:41:54,000 --> 00:41:59,000 Yna, beth fydd yn digwydd pan fydd gennych criw o ffeiliau gwrthrych, 613 00:41:59,000 --> 00:42:04,000 dweud eich bod yn llunio prosiect neu raglen sy'n defnyddio ffeiliau cod ffynhonnell lluosog, 614 00:42:04,000 --> 00:42:09,000 sydd erbyn confensiwn yn cael y. estyniad ffeil c. 615 00:42:09,000 --> 00:42:13,000 Dyna pam ein bod wedi caesar.c, vigenère.c. 616 00:42:13,000 --> 00:42:18,000 Os ydych yn ysgrifennu rhaglenni Java i chi roi iddynt yr estyniad. Java. 617 00:42:18,000 --> 00:42:24,000 Rhaglenni Python yn cael yr estyniad. Py aml. 618 00:42:24,000 --> 00:42:26,000 >> Unwaith y byddwch wedi ffeiliau c lluosog., Byddwch yn llunio nhw. 619 00:42:26,000 --> 00:42:29,000 Clang poeri allan hyn i gyd junk deuaidd. 620 00:42:29,000 --> 00:42:33,000 Yna, oherwydd eich bod dim ond eisiau 1 rhaglen 621 00:42:33,000 --> 00:42:37,000 gennych y ddolen linker pob un o'r rhain gwrthrych ffeiliau at ei gilydd 622 00:42:37,000 --> 00:42:40,000 i 1 ffeil gweithredadwy. 623 00:42:40,000 --> 00:42:45,000 Mae hyn hefyd yn beth sy'n digwydd pan fyddwch yn defnyddio'r llyfrgell CS50, er enghraifft. 624 00:42:45,000 --> 00:42:50,000 Mae'r llyfrgell CS50 yn y ddau hynny. Ffeil pennawd h 625 00:42:50,000 --> 00:42:53,000 eich bod yn darllen, y # includecs50.h. 626 00:42:53,000 --> 00:42:58,000 Ac yna mae hefyd yn ffeil ddeuaidd llyfrgell arbennig 627 00:42:58,000 --> 00:43:02,000 sydd wedi cael ei lunio sy'n 0s a 1s, 628 00:43:02,000 --> 00:43:08,000 a bod-l faner, felly os ydym yn mynd yn ôl at ein Mannau ac rydym yn edrych yn gyflym iawn 629 00:43:08,000 --> 00:43:11,000 ar yr hyn sy'n mynd ymlaen yma pan fyddwn yn edrych ar ein gorchymyn clang, 630 00:43:11,000 --> 00:43:15,000 hyn sydd gennym yw hyn yw ein ffynhonnell ffeiliau cod iawn yma. 631 00:43:15,000 --> 00:43:18,000 Mae'r rhain yn griw o faneri compiler. 632 00:43:18,000 --> 00:43:22,000 Ac yna ar y diwedd un, mae'r rhain yn-l baneri cyswllt yn 633 00:43:22,000 --> 00:43:30,000 y ffeiliau deuaidd gwirioneddol ar gyfer y 2 llyfrgelloedd, y llyfrgell CS50 ac yna y llyfrgell mathemateg. 634 00:43:30,000 --> 00:43:35,000 >> Deall pob math o bwrpas ffeiliau ' 635 00:43:35,000 --> 00:43:38,000 yn y broses casglu yn rhywbeth youll 'angen at fod yn gallu 636 00:43:38,000 --> 00:43:43,000 rhoi o leiaf trosolwg lefel uchel o. 637 00:43:43,000 --> 00:43:46,000 Cod ffynhonnell yn dod i mewn cod gwrthrych yn dod allan. 638 00:43:46,000 --> 00:43:53,000 Ffeiliau cod gwrthrych cysylltu â'i gilydd, a byddwch yn cael hardd, ffeil gweithredadwy. 639 00:43:53,000 --> 00:43:55,000 Cool. 640 00:43:55,000 --> 00:43:58,000 Dyma hefyd lle gallwch gael gwallau mewn mannau lluosog 641 00:43:58,000 --> 00:44:00,000 yn y broses casglu. 642 00:44:00,000 --> 00:44:04,000 Mae hyn yn lle, er enghraifft, os byddwch yn cymryd allan y faner cysylltu, 643 00:44:04,000 --> 00:44:10,000 y faner CS50, a byddwch yn hepgor mewn Mannau neu pan fyddwch yn rhedeg eich cod, 644 00:44:10,000 --> 00:44:13,000 dyma lle byddwch yn cael gwall yn y cyfnod cysylltu, 645 00:44:13,000 --> 00:44:18,000 a bydd y linker yn dweud, "Hey, rydych elwir yn GetString swyddogaeth 646 00:44:18,000 --> 00:44:20,000 sydd yn y llyfrgell CS50. " 647 00:44:20,000 --> 00:44:25,000 "Rydych yn dweud wrthyf ei fod yn y llyfrgell CS50, ac ni allaf ddod o hyd i'r cod ar gyfer hynny." 648 00:44:25,000 --> 00:44:28,000 Dyna lle mae'n rhaid i gysylltu i mewn, a dyna wahân 649 00:44:28,000 --> 00:44:33,000 o gwall compiler oherwydd bod y casglwr yn edrych ar gystrawen a bod math o bethau. 650 00:44:33,000 --> 00:44:38,000 Mae'n dda i wybod beth sy'n digwydd pryd. 651 00:44:38,000 --> 00:44:42,000 >> Pethau eraill i wybod amdano. 652 00:44:42,000 --> 00:44:49,000 Byddwn yn dweud yn bendant eisiau cymryd golwg ar y tymor byr ar stereoteipio a wnaed gan Jordan 653 00:44:49,000 --> 00:44:55,000 i ddeall beth ints o dan y cwfl, 654 00:44:55,000 --> 00:44:58,000 pa chars o dan y cwfl. 655 00:44:58,000 --> 00:45:02,000 Pan fyddwn yn sôn am ASCII, ac rydym mewn gwirionedd yn edrych ar y tabl ASCII, 656 00:45:02,000 --> 00:45:07,000 beth mae hynny'n ei wneud yn rhoi i ni o dan y cwfl golwg 657 00:45:07,000 --> 00:45:13,000 ar sut y cyfrifiadur mewn gwirionedd yn cynrychioli cyfalaf A a 7 digid 658 00:45:13,000 --> 00:45:17,000 a coma a marc cwestiwn. 659 00:45:17,000 --> 00:45:20,000 Mae'r cyfrifiadur hefyd ffyrdd arbennig i gynrychioli 660 00:45:20,000 --> 00:45:23,000 y rhif 7 fel cyfanrif. 661 00:45:23,000 --> 00:45:27,000 Mae ganddo ffordd arbennig i gynrychioli'r rhif 7 fel rhif pwynt arnawf, 662 00:45:27,000 --> 00:45:29,000 a'r rhai yn wahanol iawn. 663 00:45:29,000 --> 00:45:32,000 Stereoteipio yw sut yr ydych yn dweud wrth y cyfrifiadur "Hey, rwyf am i chi i drosi 664 00:45:32,000 --> 00:45:37,000 o un cynrychioliad i un arall gynrychiolaeth. " 665 00:45:37,000 --> 00:45:40,000 Pam nad ydym yn edrych ar hynny. 666 00:45:40,000 --> 00:45:44,000 >> Byddwn hefyd yn bwrw golwg ar y tymor byr o ran llyfrgelloedd a byr ar crynoadyddion. 667 00:45:44,000 --> 00:45:47,000 Mae'r rhai yn siarad am y broses o gasglu, 668 00:45:47,000 --> 00:45:53,000 beth yw llyfrgell, ac ewch dros rai o'r cwestiynau y gallech ofynnir i ni. 669 00:45:53,000 --> 00:45:55,000 Cwestiynau ar ddeunydd Wythnos 1? 670 00:45:55,000 --> 00:46:03,000 A oes unrhyw bynciau i mewn yma sy'n ymddangos yn frawychus yr hoffech eu cwmpasu? 671 00:46:03,000 --> 00:46:07,000 Im 'yn ceisio chwythu trwy'r rhan fwyaf o'r pynciau hyn yn gynharach er mwyn i ni gyrraedd 672 00:46:07,000 --> 00:46:13,000 awgrymiadau a gwneud ychydig o dychweliad. 673 00:46:13,000 --> 00:46:15,000 Meddyliau? 674 00:46:15,000 --> 00:46:19,000 Unrhyw beth i gwmpasu? 675 00:46:19,000 --> 00:46:21,000 Amser ar gyfer rhai siocled efallai? 676 00:46:21,000 --> 00:46:23,000 Rydych guys yn gweithio drwyddo. 677 00:46:23,000 --> 00:46:26,000 Rydw i'n mynd i gadw sipian ar fy nghoffi. 678 00:46:26,000 --> 00:46:31,000 Wythnos 2. 679 00:46:31,000 --> 00:46:34,000 Galwadau da, ffoniwch da. 680 00:46:34,000 --> 00:46:38,000 Yn Wythnos 2 buom yn siarad ychydig mwy am swyddogaethau. 681 00:46:38,000 --> 00:46:43,000 >> Yn y setiau problem rhai cyntaf ni ddim yn ysgrifennu unrhyw swyddogaethau o gwbl 682 00:46:43,000 --> 00:46:45,000 heblaw am y swyddogaeth? 683 00:46:45,000 --> 00:46:47,000 [Myfyrwyr] Main. >> Main, yn union. 684 00:46:47,000 --> 00:46:51,000 Ac felly rydym wedi gweld y gwisgoedd gwahanol prif gwisgo. 685 00:46:51,000 --> 00:46:54,000 Mae un y mae'n cymryd unrhyw ddadleuon, 686 00:46:54,000 --> 00:46:58,000 ac rydym yn unig yn dweud ddi-rym rhwng y cromfachau, 687 00:46:58,000 --> 00:47:01,000 ac yna mae un arall lle rydym yn awyddus i gymryd dadleuon llinell orchymyn, 688 00:47:01,000 --> 00:47:08,000 ac fel y gwelsom, dyna lle mae gennych argc int a llinyn argv amrywiaeth 689 00:47:08,000 --> 00:47:13,000 neu, yn awr ein bod wedi eu hamlygu mewn gwirionedd llinyn i fod yn * torgoch ei bod yn 690 00:47:13,000 --> 00:47:20,000 rydym yn mynd i ddechrau ysgrifennu fel golosg * argv ac yna cromfachau. 691 00:47:20,000 --> 00:47:22,000 Mewn 3 Set Problem, 'ch guys yn gweld criw o swyddogaethau, 692 00:47:22,000 --> 00:47:27,000 ac rydych yn gweithredu criw o swyddogaethau, tynnu, yn edrych i fyny, sgrialu. 693 00:47:27,000 --> 00:47:31,000 Mae'r prototeipiau eu hysgrifennu i gyd yno i chi. 694 00:47:31,000 --> 00:47:33,000 >> Beth oeddwn i eisiau siarad am yma gyda swyddogaethau yn gyflym iawn 695 00:47:33,000 --> 00:47:38,000 yw bod mae yna 3 rhan iddynt pryd bynnag y byddwch yn ysgrifennu swyddogaeth. 696 00:47:38,000 --> 00:47:43,000 Mae'n rhaid i chi nodi'r math dychwelyd y swyddogaeth. 697 00:47:43,000 --> 00:47:46,000 Mae'n rhaid i chi nodi enw ar gyfer y swyddogaeth, ac yna rhaid i chi nodi 698 00:47:46,000 --> 00:47:51,000 y rhestr ddadl neu'r rhestr paramedr. 699 00:47:51,000 --> 00:47:57,000 Er enghraifft, pe bawn i ysgrifennu swyddogaeth i grynhoi criw o gyfanrifau 700 00:47:57,000 --> 00:48:03,000 ac yna dychwelyd i mi y swm yr hyn a fyddai'n fy math dychwelyd 701 00:48:03,000 --> 00:48:06,000 os oeddwn i eisiau i grynhoi cyfanrifau, ac yna dychwelyd y swm? 702 00:48:06,000 --> 00:48:12,000 Yna enw'r swyddogaeth. 703 00:48:12,000 --> 00:48:27,000 Os byddaf yn mynd yn ei flaen ac ysgrifennu mewn gwyrdd, y rhan hon yw'r math dychwelyd. 704 00:48:27,000 --> 00:48:34,000 Mae'r rhan hon yn yr enw. 705 00:48:34,000 --> 00:48:40,000 Ac yna rhwng cromfachau 706 00:48:40,000 --> 00:48:46,000 yw lle yr wyf yn rhoi dadleuon, 707 00:48:46,000 --> 00:48:56,000 yn aml yn talfyrru fel args, a elwir weithiau yn params ar gyfer paramedrau. 708 00:48:56,000 --> 00:49:00,000 Ac os oes gennych un, 'ch jyst yn nodi'r un. 709 00:49:00,000 --> 00:49:06,000 Os oes gennych lluosog byddwch yn gwahanu pob un gyda choma. 710 00:49:06,000 --> 00:49:13,000 Ac ar gyfer pob dadl byddwch yn ei rhoi 2 beth sydd-Kevin? 711 00:49:13,000 --> 00:49:18,000 [Kevin] rhaid i chi roi y math ac yna'r enw. 712 00:49:18,000 --> 00:49:21,000 Ac yna yr enw, ac mae'r enw yr enw yr ydych wedi bod yn mynd i ddefnyddio 713 00:49:21,000 --> 00:49:25,000 i gyfeirio at y ddadl o fewn y swyddogaeth swm, 714 00:49:25,000 --> 00:49:27,000 o fewn y swyddogaeth eich bod ar hyn o bryd ysgrifennu. 715 00:49:27,000 --> 00:49:32,000 >> Nid oes rhaid i chi-er enghraifft, os ydw i'n mynd i grynhoi, 716 00:49:32,000 --> 00:49:41,000 ddweud, amrywiaeth o gyfanrifau-we'll gwneud amrywiaeth int, 717 00:49:41,000 --> 00:49:46,000 a byddaf yn rhoi fy hun rhai braces cyrliog yno- 718 00:49:46,000 --> 00:49:51,000 Yna, pan fyddaf yn pasio amrywiaeth i'r swyddogaeth swm 719 00:49:51,000 --> 00:49:55,000 Imi ei drosglwyddo yn y sefyllfa gyntaf y rhestr ddadl. 720 00:49:55,000 --> 00:49:59,000 Ond nid yw'r amrywiaeth a wyf yn pasio oes yn rhaid i gael y arr enw. 721 00:49:59,000 --> 00:50:07,000 Arr yn mynd i fod sut yr wyf yn cyfeirio at y ddadl honno o fewn corff y swyddogaeth. 722 00:50:07,000 --> 00:50:10,000 Y peth arall y mae angen i ni gymryd i ystyriaeth, 723 00:50:10,000 --> 00:50:14,000 ac mae hyn yn ychydig yn wahanol o swyddogaethau, ond yr wyf yn meddwl ei fod yn bwynt pwysig, 724 00:50:14,000 --> 00:50:20,000 yw bod yn C pan oeddwn i'n ysgrifennu swyddogaeth fel hyn 725 00:50:20,000 --> 00:50:29,000 sut ydw i'n gwybod faint o elfennau yn y casgliad? 726 00:50:29,000 --> 00:50:31,000 Mae hyn yn dipyn o gwestiwn tric. 727 00:50:31,000 --> 00:50:35,000 Rydym yn siarad am hyn ychydig yn adran yr wythnos diwethaf. 728 00:50:35,000 --> 00:50:40,000 Sut ydw i'n gwybod y nifer o elfennau y tu mewn i amrywiaeth yn C? 729 00:50:40,000 --> 00:50:44,000 A oes ffordd? 730 00:50:44,000 --> 00:50:49,000 >> Mae'n troi allan nad oes unrhyw ffordd o wybod. 731 00:50:49,000 --> 00:50:52,000 Mae'n rhaid i chi basio i mewn ar wahân. 732 00:50:52,000 --> 00:50:55,000 Mae dric y gallwch chi ei wneud 733 00:50:55,000 --> 00:51:00,000 os ydych yn yr un swyddogaeth y mae'r casgliad wedi cael ei ddatgan, 734 00:51:00,000 --> 00:51:04,000 ac rydych yn gweithio gydag amrywiaeth stac. 735 00:51:04,000 --> 00:51:06,000 Ond mai dim ond yn gweithio os ydych chi yn yr un swyddogaeth. 736 00:51:06,000 --> 00:51:09,000 Unwaith y byddwch yn pasio amrywiaeth i un arall swyddogaeth neu os ydych chi wedi datgan amrywiaeth 737 00:51:09,000 --> 00:51:12,000 ac rydych yn rhoi'r amrywiaeth ar y domen, ydych chi wedi defnyddio malloc 738 00:51:12,000 --> 00:51:15,000  a bod y math o bethau, yna nid oes wybod. 739 00:51:15,000 --> 00:51:18,000 Yna byddwch mewn gwirionedd yn rhaid i chi basio o gwmpas 740 00:51:18,000 --> 00:51:21,000 dadl arbennig neu arall paramedr 741 00:51:21,000 --> 00:51:23,000 yn dweud wrthych pa mor fawr yw'r casgliad yn. 742 00:51:23,000 --> 00:51:28,000 Yn yr achos hwn, byddwn i eisiau defnyddio atalnod-I'm ddrwg gennym, mae'n mynd oddi ar y sgrin yma- 743 00:51:28,000 --> 00:51:32,000 a byddwn yn pasio yn ddadl arall 744 00:51:32,000 --> 00:51:40,000  a galw yn int len ​​ar gyfer hyd. 745 00:51:40,000 --> 00:51:44,000 >> Un peth a allai ddod i fyny ar y cwis 746 00:51:44,000 --> 00:51:49,000 yn gofyn i chi ysgrifennu neu weithredu swyddogaeth benodol o'r enw rhywbeth. 747 00:51:49,000 --> 00:51:54,000 Os nad ydym yn rhoi i chi y prototeip, felly y peth i gyd yma, 748 00:51:54,000 --> 00:51:58,000 y llanast cyfan gelwir y datganiad swyddogaeth neu brototeip swyddogaeth, 749 00:51:58,000 --> 00:52:01,000 mae hyn yn un o'r pethau cyntaf y byddwch am roi taw ar i lawr os nad yw'n rhoi 750 00:52:01,000 --> 00:52:03,000 i chi ar unwaith ar y cwis. 751 00:52:03,000 --> 00:52:06,000 Y gamp arall yr wyf wedi dysgu yw bod 752 00:52:06,000 --> 00:52:11,000 dweud ein bod yn rhoi i chi yn brototeip ar gyfer swyddogaeth, ac yr ydym yn dweud, "Hey, mae'n rhaid i chi ysgrifennu." 753 00:52:11,000 --> 00:52:16,000 Y tu mewn i'r braces cyrliog sydd gennych ar y cwis 754 00:52:16,000 --> 00:52:20,000 os byddwch yn sylwi bod yn fath dychwelyd a byddwch yn sylwi bod y math dychwelyd 755 00:52:20,000 --> 00:52:25,000 yn rhywbeth ar wahân i ddi-rym, sy'n golygu nad yw'r swyddogaeth yn dychwelyd unrhyw beth, 756 00:52:25,000 --> 00:52:28,000 yna un peth yn bendant am ei wneud yw ysgrifennu 757 00:52:28,000 --> 00:52:33,000 rhyw fath o ddatganiad dychwelyd ar ddiwedd y swyddogaeth. 758 00:52:33,000 --> 00:52:40,000 Dychwelyd, ac yn yr achos hwn, byddwn yn rhoi wag oherwydd ein bod eisiau i lenwi'r wag. 759 00:52:40,000 --> 00:52:44,000 Ond mae hyn yn cael chi feddwl yn y ffordd gywir am sut ydw i'n mynd i ymdrin â'r broblem? 760 00:52:44,000 --> 00:52:49,000 Ac mae'n eich atgoffa eich bod yn mynd i gael i ddychwelyd gwerth 761 00:52:49,000 --> 00:52:51,000 i'r galwr am y swyddogaeth. 762 00:52:51,000 --> 00:52:54,000 >> Yeah. >> [Myfyrwyr] A yw'r arddull yn berthnasol pan fyddwn yn ysgrifennu cod ar y cwis? 763 00:52:54,000 --> 00:52:58,000 O'r fath fel y pant a'r math o bethau? >> [Myfyrwyr] Yeah. 764 00:52:58,000 --> 00:53:00,000 Na, ddim cymaint. 765 00:53:00,000 --> 00:53:09,000 Rwy'n credu bod llawer o-mae hyn yn rhywbeth y byddwn yn glir ar y cwis ar y dydd o, 766 00:53:09,000 --> 00:53:15,000 ond yn nodweddiadol poeni am # yn cynnwys ac yn y math o bethau, mae'n fath o tu allan. 767 00:53:15,000 --> 00:53:17,000 [Myfyrwyr] Oes angen i chi roi sylwadau eich cod llawysgrifen? 768 00:53:17,000 --> 00:53:19,000 Oes angen i chi roi sylwadau eich cod llawysgrifen? 769 00:53:19,000 --> 00:53:24,000 Sylwadau bob amser yn dda os ydych chi'n poeni am gredyd rhannol 770 00:53:24,000 --> 00:53:29,000 neu os ydych am i gyfleu eich bwriad i'r graddiwr. 771 00:53:29,000 --> 00:53:33,000 Ond yr wyf, eto, yn glir ar y cwis ei hun ac ar y diwrnod cwis, 772 00:53:33,000 --> 00:53:39,000 ond nid wyf yn credu y bydd yn ofynnol i chi ysgrifennu sylwadau, dim. 773 00:53:39,000 --> 00:53:42,000 Yn nodweddiadol, ond nid yw'n bendant y math o beth lle mae 774 00:53:42,000 --> 00:53:45,000 y gallwch gyfleu eich bwriad, fel "Hey, dyma lle yr wyf i'n mynd ag ef." 775 00:53:45,000 --> 00:53:49,000 Ac weithiau a all helpu gyda chredyd rhannol. 776 00:53:49,000 --> 00:53:51,000 Cool. 777 00:53:51,000 --> 00:53:53,000 >> Basil. 778 00:53:53,000 --> 00:53:56,000 [Basil] Beth yw'r gwahaniaeth rhwng ddatgan, dyweder, int lang 779 00:53:56,000 --> 00:54:03,000 yn y dadleuon neu baramedrau yn erbyn datgan newidyn o fewn y swyddogaeth? 780 00:54:03,000 --> 00:54:05,000 Wow, coffi yn mynd i lawr y bibell wynt. 781 00:54:05,000 --> 00:54:07,000 [Basil] Fel y mae pethau rydym am eu rhoi mewn dadleuon. 782 00:54:07,000 --> 00:54:09,000 Yeah, dyna gwestiwn mawr. 783 00:54:09,000 --> 00:54:11,000 Sut ydych chi'n dewis pa bethau rydych am ei roi yn y dadleuon 784 00:54:11,000 --> 00:54:17,000 erbyn yr hyn bethau y dylech eu gwneud tu mewn i'r swyddogaeth? 785 00:54:17,000 --> 00:54:24,000 Yn yr achos hwn rydym yn cynnwys y ddau o'r rhain fel dadleuon 786 00:54:24,000 --> 00:54:29,000 oherwydd eu bod yn rhywbeth bod pwy bynnag sy'n mynd i ddefnyddio'r swyddogaeth swm 787 00:54:29,000 --> 00:54:32,000 Mae angen i nodi pethau hynny. 788 00:54:32,000 --> 00:54:35,000 >> Mae'r swyddogaeth swm, fel yr ydym yn siarad am, nid oes ffordd o wybod 789 00:54:35,000 --> 00:54:40,000 pa mor fawr yr amrywiaeth yn gaiff gan ei galwr neu bwy bynnag sy'n defnyddio'r swyddogaeth swm. 790 00:54:40,000 --> 00:54:44,000 Nid oes ganddo unrhyw ffordd o wybod pa mor fawr y casgliad yw. 791 00:54:44,000 --> 00:54:48,000 Y rheswm rydym yn pasio yn y hyd iawn yma fel dadl 792 00:54:48,000 --> 00:54:51,000 oherwydd mae hynny'n rhywbeth yr ydym yn yn y bôn dweud wrth y galwr y swyddogaeth, 793 00:54:51,000 --> 00:54:55,000 pwy bynnag sy'n mynd i ddefnyddio'r swyddogaeth swm, "Hey, nid yn unig yn rhaid i chi roi i ni arae 794 00:54:55,000 --> 00:54:59,000 o ints, rhaid i chi hefyd ddweud wrthym pa mor fawr y casgliad eich bod wedi rhoi i ni y mae. " 795 00:54:59,000 --> 00:55:03,000 [Basil] Bydd y rhai y ddau yn dadleuon llinell orchymyn? 796 00:55:03,000 --> 00:55:06,000 Na, mae'r rhain yn ddadleuon gwirioneddol y byddech yn trosglwyddo i'r swyddogaeth. 797 00:55:06,000 --> 00:55:10,000 >> Gadewch i mi wneud tudalen newydd yma. 798 00:55:10,000 --> 00:55:13,000 [Basil] Fel y byddai enw pasio- 799 00:55:13,000 --> 00:55:24,000 [Nate H.] Os oes gen i int brif (gwag), 800 00:55:24,000 --> 00:55:27,000 ac yr wyf i'n mynd i roi yn fy 0 dychwelyd i lawr yma yn y gwaelod, 801 00:55:27,000 --> 00:55:31,000 a dweud fy mod am alw swyddogaeth swm. 802 00:55:31,000 --> 00:55:42,000 Yr wyf am ddweud int x = swm (); 803 00:55:42,000 --> 00:55:46,000 I ddefnyddio'r swyddogaeth swm rhaid i mi basio yn y casgliad yr wyf am ei grynhoi 804 00:55:46,000 --> 00:55:51,000 a hyd y rhesi, felly mae hwn yn lle 805 00:55:51,000 --> 00:55:54,000 gan dybio Cefais amrywiaeth o ints, 806 00:55:54,000 --> 00:56:12,000 dweud Cefais int numbaz [] = 1, 2, 3, 807 00:56:12,000 --> 00:56:16,000 math o ddefnydd y hacio i fyny cystrawen iawn yno, 808 00:56:16,000 --> 00:56:21,000 yna beth fyddwn i'n ei wneud yn swm y byddai wyf am eu trosglwyddo yn 809 00:56:21,000 --> 00:56:27,000 yn numbaz a'r rhif 3 810 00:56:27,000 --> 00:56:30,000 i ddweud wrth y swyddogaeth swm "Iawn, dyma y casgliad rwyf am i chi i grynhoi." 811 00:56:30,000 --> 00:56:34,000 "Dyma ei faint." 812 00:56:34,000 --> 00:56:39,000 Ydy hynny'n gwneud synnwyr? A yw hynny'n ateb eich cwestiwn? 813 00:56:39,000 --> 00:56:42,000 >> Mewn llawer o ffyrdd y mae'n ei wneud ochr yn ochr hyn yr ydym ni'n ei wneud gyda phrif 814 00:56:42,000 --> 00:56:44,000 pan fyddwn yn cael y dadleuon llinell orchymyn. 815 00:56:44,000 --> 00:56:47,000 Mae rhaglen fel Cesar cipher, er enghraifft, yr oedd angen 816 00:56:47,000 --> 00:56:53,000 Ni fyddai dadleuon llinell orchymyn yn gallu gwneud unrhyw beth. 817 00:56:53,000 --> 00:56:57,000 Ni fyddai'n gwybod sut i amgryptio os nad oeddech yn dweud wrthynt beth allweddol i ddefnyddio 818 00:56:57,000 --> 00:57:03,000 neu os na wnaethoch ddweud wrth yr hyn a ddywedodd llinyn ydych eisiau i amgryptio. 819 00:57:03,000 --> 00:57:08,000 Anogaeth ar gyfer mewnbwn, dyma lle rydym wedi cael 2 gwahanol fecanweithiau 820 00:57:08,000 --> 00:57:14,000 ar gyfer cymryd mewnbwn gan y defnyddiwr, am gymryd gwybodaeth i mewn o'r defnyddiwr. 821 00:57:14,000 --> 00:57:19,000 Am Problem Set 1 rydym yn gweld hyn GetInt, GetString, ffordd GetFloat 822 00:57:19,000 --> 00:57:26,000 o anogaeth ar gyfer mewnbwn, ac mae hynny'n ei alw trwy ddefnyddio llif mewnbwn safonol. 823 00:57:26,000 --> 00:57:28,000 Mae'n ychydig yn wahanol. 824 00:57:28,000 --> 00:57:31,000 Mae'n rhywbeth y gallwch ei wneud ar un adeg yn hytrach nag 825 00:57:31,000 --> 00:57:35,000 pan fyddwch yn galw y rhaglen, pan fyddwch yn dechrau y rhaglen yn rhedeg. 826 00:57:35,000 --> 00:57:41,000 Mae'r dadleuon llinell orchymyn gyd yn cael eu nodi pan fyddwch yn dechrau rhedeg rhaglen. 827 00:57:41,000 --> 00:57:47,000 Rydym wedi bod yn cymysgu'r ddau o'r rheiny. 828 00:57:47,000 --> 00:57:52,000 Pan fyddwn yn defnyddio dadleuon i swyddogaeth, mae'n debyg iawn i ddadleuon llinell gorchymyn i brif. 829 00:57:52,000 --> 00:57:56,000 Mae'n pan fyddwch yn galw ar y swyddogaeth angen i chi ddweud ei 830 00:57:56,000 --> 00:58:05,000 beth yn union sydd ei angen er mwyn cyflawni ei dasgau. 831 00:58:05,000 --> 00:58:08,000 Peth arall da i edrych ar-a byddaf yn gadael i chi edrych arno yn eich amser sbâr, 832 00:58:08,000 --> 00:58:11,000 ac wedi ei orchuddio yn y cwis-oedd y syniad o gwmpas 833 00:58:11,000 --> 00:58:15,000 a newidynnau lleol yn erbyn newidynnau byd-eang. 834 00:58:15,000 --> 00:58:18,000 A oes talu sylw i hynny. 835 00:58:18,000 --> 00:58:23,000 >> Nawr ein bod yn dod ymlaen at y stwff eraill, 836 00:58:23,000 --> 00:58:27,000 mewn Wythnos 3 ddechreuon ni siarad am chwilio a didoli. 837 00:58:27,000 --> 00:58:32,000 Chwilio a didoli, o leiaf yn CS50, 838 00:58:32,000 --> 00:58:39,000 iawn yw cyflwyniad i rai o'r rhannau mwy damcaniaethol gwyddoniaeth gyfrifiadurol. 839 00:58:39,000 --> 00:58:42,000 Mae'r broblem o chwilio, y broblem o ddosbarthu 840 00:58:42,000 --> 00:58:46,000 yn fawr, problemau canonaidd. 841 00:58:46,000 --> 00:58:52,000 Sut ydych chi'n dod o hyd i nifer penodol mewn amrywiaeth o filiynau o gyfanrifau? 842 00:58:52,000 --> 00:58:55,000 Sut ydych chi'n dod o hyd i enw penodol y tu mewn llyfr ffôn 843 00:58:55,000 --> 00:58:59,000 sydd wedi ei storio ar eich gliniadur? 844 00:58:59,000 --> 00:59:04,000 Ac felly rydym yn cyflwyno y syniad o amseroedd rhedeg asymptotic 845 00:59:04,000 --> 00:59:11,000 i 'n sylweddol mesur faint o amser, pa mor anodd y broblem yn, 846 00:59:11,000 --> 00:59:14,000 pa mor hir y maent yn ei gymryd i ddatrys. 847 00:59:14,000 --> 00:59:20,000 Yng Nghymru, yr wyf yn credu, 2011 cwis mae problem yr wyf yn credu rhinweddau 848 00:59:20,000 --> 00:59:27,000 cwmpasu yn gyflym iawn, sef yr un yma, problem 12. 849 00:59:27,000 --> 00:59:32,000 O na, mae'n Omega. 850 00:59:32,000 --> 00:59:41,000 >> Yma rydym yn sôn am yr amser yn rhedeg cyflymaf posibl 851 00:59:41,000 --> 00:59:46,000 ar gyfer algorithm penodol ac yna yr amser yn rhedeg arafaf posibl. 852 00:59:46,000 --> 00:59:52,000 Mae hyn yn Omega ac O yn wirioneddol yn unig llwybrau byr. 853 00:59:52,000 --> 00:59:55,000 Maent yn llwybrau byr nodiannol dros ddweud 854 00:59:55,000 --> 00:59:59,000 pa mor gyflym yn yr achos gorau posibl yn ein redeg algorithm, 855 00:59:59,000 --> 01:00:06,000 a sut y bydd yn araf yn yr achos gwaethaf posibl ein algorithm yn rhedeg? 856 01:00:06,000 --> 01:00:10,000 Gadewch i ni wneud un neu ddau o'r rhain, ac mae'r rhain yn cael eu cynnwys hefyd 857 01:00:10,000 --> 01:00:13,000 yn y tymor byr ar nodiant asymptotic, yr wyf yn argymell. 858 01:00:13,000 --> 01:00:17,000 Jackson yn gwneud gwaith da iawn. 859 01:00:17,000 --> 01:00:23,000 Gyda chwiliad deuaidd, rydym yn siarad am chwiliad deuaidd â bod yn algorithm, 860 01:00:23,000 --> 01:00:28,000 ac rydym fel arfer yn siarad am y peth yn nhermau O. mawr ei 861 01:00:28,000 --> 01:00:30,000 Beth yw'r O fawr? 862 01:00:30,000 --> 01:00:34,000 Beth yw'r amser yn rhedeg arafaf posibl o chwiliad deuaidd? 863 01:00:34,000 --> 01:00:36,000 [Myfyrwyr] N ²? 864 01:00:36,000 --> 01:00:41,000 Close, yr wyf yn dyfalu yn debyg i hynny. 865 01:00:41,000 --> 01:00:43,000 Mae'n llawer cyflymach na hynny. 866 01:00:43,000 --> 01:00:45,000 [Myfyrwyr] Binary? >> Yeah, chwiliad deuaidd. 867 01:00:45,000 --> 01:00:47,000 [Myfyrwyr] Mae'n n log. 868 01:00:47,000 --> 01:00:49,000 Mewngofnodi n, felly, beth mae mewngofnodi n ei olygu? 869 01:00:49,000 --> 01:00:51,000 Mae'n haneri arno bob iteriad. 870 01:00:51,000 --> 01:00:56,000 Yn union, felly yn yr achos arafaf posibl, 871 01:00:56,000 --> 01:01:00,000 ddweud os oes gennych amrywiaeth datrys 872 01:01:00,000 --> 01:01:08,000 miliwn o gyfanrifau a nifer ydych yn chwilio am 873 01:01:08,000 --> 01:01:14,000 naill ai yn yr elfen gyntaf yn yr amrywiaeth neu'r elfen olaf un yn y rhesi. 874 01:01:14,000 --> 01:01:18,000 Cofiwch, mae'r algorithm chwiliad deuaidd yn gweithio drwy edrych ar yr elfen canol, 875 01:01:18,000 --> 01:01:21,000 gweld os yw hynny'n gêm yr ydych yn chwilio amdano. 876 01:01:21,000 --> 01:01:23,000 Os ydyw, yna fawr, daethoch o hyd iddo. 877 01:01:23,000 --> 01:01:27,000 >> Yn yr achos gorau posibl, pa mor gyflym mae rhedeg chwiliad deuaidd? 878 01:01:27,000 --> 01:01:29,000 [Myfyrwyr] 1. 879 01:01:29,000 --> 01:01:32,000 1, mae'n amser cyson, mawr O o 1. Yeah. 880 01:01:32,000 --> 01:01:36,000 [Myfyrwyr] Mae gen i gwestiwn. Pan fyddwch yn dweud mewngofnodi n, rydych yn ei olygu o ran sylfaen 2, dde? 881 01:01:36,000 --> 01:01:40,000 Ie, felly dyna y peth arall. 882 01:01:40,000 --> 01:01:44,000 Rydym yn dweud n log, ac yr wyf yn dyfalu pan oeddwn i yn yr ysgol yn uchel 883 01:01:44,000 --> 01:01:48,000 Rwyf bob amser yn cymryd yn ganiataol bod log yn sylfaen 10. 884 01:01:48,000 --> 01:01:57,000 Yeah, felly ydy, ewch 2 sylfaen fel arfer yn yr hyn yr ydym yn eu defnyddio. 885 01:01:57,000 --> 01:02:02,000 Unwaith eto, mynd yn ôl i'r chwiliad deuaidd, os ydych yn chwilio am naill ai 886 01:02:02,000 --> 01:02:05,000 yr elfen ar y diwedd un neu'r elfen ar y dechrau, 887 01:02:05,000 --> 01:02:08,000 oherwydd eich bod yn dechrau yn y canol, ac yna rydych yn ei daflu 888 01:02:08,000 --> 01:02:13,000 pa un bynnag nad 1/2 yn bodloni'r meini prawf yr ydych yn chwilio amdano, 889 01:02:13,000 --> 01:02:15,000 a byddwch yn mynd i'r hanner nesaf a hanner nesaf a hanner nesaf. 890 01:02:15,000 --> 01:02:19,000 Os ydw i'n chwilio am yr elfen fwyaf yn y filiwn amrywiaeth cyfanrif 891 01:02:19,000 --> 01:02:25,000 Rydw i'n mynd i haneru ar log y rhan fwyaf o 1 miliwn o weithiau 892 01:02:25,000 --> 01:02:28,000 cyn i mi o'r diwedd yn profi ac yn gweld bod yr elfen wyf i'n chwilio am 893 01:02:28,000 --> 01:02:33,000 yn y mwyaf neu yn y mynegai uchaf y rhesi, 894 01:02:33,000 --> 01:02:38,000 a bydd angen cofnod o n, ewch o 1 miliwn o weithiau. 895 01:02:38,000 --> 01:02:40,000 >> Fath Bubble. 896 01:02:40,000 --> 01:02:43,000 Ydych chi'n guys cofio y swigen algorithm fath? 897 01:02:43,000 --> 01:02:47,000 Kevin, a allwch roi i mi ailadrodd cyflym o'r hyn a ddigwyddodd yn y math swigen algorithm? 898 01:02:47,000 --> 01:02:50,000 [Kevin] Yn y bôn mae'n mynd drwy bopeth yn y rhestr. 899 01:02:50,000 --> 01:02:52,000 Mae'n edrych ar y ddau gyntaf. 900 01:02:52,000 --> 01:02:55,000 Os yw'r un cyntaf yn fwy na'r ail un ei gyfnewid nhw. 901 01:02:55,000 --> 01:02:58,000 Yna mae'n cymharu ail a'r trydydd, un peth, cyfnewidiadau, 902 01:02:58,000 --> 01:03:00,000 trydydd a'r pedwerydd, yr holl ffordd i lawr. 903 01:03:00,000 --> 01:03:03,000 Bydd niferoedd Bigger dilyn i fyny at y diwedd. 904 01:03:03,000 --> 01:03:07,000 Ac ar ôl dolenni ond mae llawer o rydych yn ei wneud. 905 01:03:07,000 --> 01:03:11,000 Yn union, felly beth Kevin ddweud yw y byddwn yn gwylio rhifau mwy 906 01:03:11,000 --> 01:03:15,000 swigen hyd at ddiwedd y rhesi. 907 01:03:15,000 --> 01:03:19,000 Er enghraifft, ydych chi'n meddwl gerdded ni trwy yr enghraifft hon os yw hyn yn ein casgliad? 908 01:03:19,000 --> 01:03:21,000 [Kevin] Byddwch yn cymryd 2 a 3. 909 01:03:21,000 --> 01:03:23,000 3 yn fwy na 2, er mwyn i chi eu cyfnewid. 910 01:03:23,000 --> 01:03:29,000 [Nate H.] Iawn, felly rydym yn cyfnewid y rhain, ac felly rydym yn cael 2, 3, 6, 4, a 9. 911 01:03:29,000 --> 01:03:31,000 [Kevin] Yna byddwch yn cymharu 3 a 6. 912 01:03:31,000 --> 01:03:33,000 3 yn llai na 6, felly byddwch yn eu gadael, 913 01:03:33,000 --> 01:03:37,000 a 6 a 4, byddech yn eu cyfnewid am 4 yn llai na 6. 914 01:03:37,000 --> 01:03:42,000 [Nate H.] Iawn, felly yr wyf yn cael 2, 3, 4, 6, 9. 915 01:03:42,000 --> 01:03:46,000 [Kevin] A 9 yn fwy na 6, er mwyn i chi ei adael. 916 01:03:46,000 --> 01:03:48,000 A fyddech chi'n mynd yn ôl trwy hyn eto. 917 01:03:48,000 --> 01:03:50,000 >> [Nate H.] Ydw i'n ei wneud ar y pwynt hwn? >> [Kevin] Rhif 918 01:03:50,000 --> 01:03:52,000 A pham nad ydw i'n ei wneud ar y pwynt hwn? 919 01:03:52,000 --> 01:03:54,000 Oherwydd ei fod yn edrych fel fy amrywiaeth yn cael ei datrys. Rydw i'n edrych arno. 920 01:03:54,000 --> 01:03:57,000 [Kevin] Ewch drwyddo eto ac yn gwneud yn siwr nad oes dim mwy cyfnewid 921 01:03:57,000 --> 01:04:00,000 cyn y gallwch yn llawn stopio. 922 01:04:00,000 --> 01:04:04,000 Yn union, felly mae angen i chi gadw i fynd drwyddo ac i wneud yn siwr nad oes unrhyw cyfnewid 923 01:04:04,000 --> 01:04:06,000 y gallwch ei wneud ar y pwynt hwn. 924 01:04:06,000 --> 01:04:08,000 Roedd yn un lwcus, fel y dywedasoch, yr ydym yn dod i ben i fyny 925 01:04:08,000 --> 01:04:12,000 mai dim ond i wneud 1 yn mynd trwy ac rydym yn datrys. 926 01:04:12,000 --> 01:04:16,000 Ond i wneud hyn yn achos gyffredinol byddwn mewn gwirionedd yn rhaid i ni wneud hyn drosodd a throsodd. 927 01:04:16,000 --> 01:04:20,000 Ac mewn gwirionedd, roedd hyn yn enghraifft o achos gorau posibl, 928 01:04:20,000 --> 01:04:24,000 fel y gwelsom yn y broblem. 929 01:04:24,000 --> 01:04:28,000 Gwelsom fod yr achos gorau posibl yn cael ei n. 930 01:04:28,000 --> 01:04:32,000 Aethom drwy 1 yr amrywiaeth amser. 931 01:04:32,000 --> 01:04:35,000 Beth yw yr achos gwaethaf posibl ar gyfer y algorithm? 932 01:04:35,000 --> 01:04:37,000 [Kevin] N ². 933 01:04:37,000 --> 01:04:41,000 A beth mae hynny'n ei olwg ei hoffi? Beth fyddai edrych amrywiaeth fel y byddai cymryd amser ² n? 934 01:04:41,000 --> 01:04:43,000 [Kevin] [Anghlywadwy] didoli. 935 01:04:43,000 --> 01:04:51,000 Yn union, felly os cefais y array 9, 7, 6, 5, 2, 936 01:04:51,000 --> 01:04:54,000 gyntaf 9 Byddai swigen yr holl ffordd i fyny. 937 01:04:54,000 --> 01:04:59,000 Ar ôl 1 iteriad byddem wedi 7, 6, 5, 2, 9. 938 01:04:59,000 --> 01:05:07,000 Yna y 7 byddai swigen i fyny, 6, 5, 2, 7, 9, ac yn y blaen ac yn y blaen. 939 01:05:07,000 --> 01:05:13,000 >> Byddai'n rhaid i ni fynd drwy'r casgliad cyfan n amseroedd, 940 01:05:13,000 --> 01:05:16,000 a gallwch mewn gwirionedd yn cael ychydig yn fwy manwl na hyn 941 01:05:16,000 --> 01:05:23,000 oherwydd unwaith rydym wedi symud y 9 yr holl ffordd i fyny i mewn i'w swydd olaf posibl 942 01:05:23,000 --> 01:05:26,000 rydym yn gwybod nad ydym byth yn rhaid i gymharu yn erbyn yr elfen honno eto. 943 01:05:26,000 --> 01:05:29,000 Unwaith y byddwn yn dechrau byrlymu y 7 i fyny 944 01:05:29,000 --> 01:05:35,000 rydym yn gwybod ein bod yn gallu dod i ben unwaith y 7 yn iawn cyn y 9 945 01:05:35,000 --> 01:05:37,000 ers i ni wedi cymharu eisoes y 9 iddi. 946 01:05:37,000 --> 01:05:46,000 Os ydych yn gwneud hyn mewn ffordd smart nid yw'n wir, mae'n debyg, bod llawer o amser. 947 01:05:46,000 --> 01:05:49,000 Nid ydych yn mynd i gymharu'r holl phosibl [Anghlywadwy] cyfuniadau 948 01:05:49,000 --> 01:05:55,000 bob tro byddwch yn mynd drwy bob iteriad. 949 01:05:55,000 --> 01:05:59,000 Ond o hyd, pan fyddwn yn siarad am hyn rhwymo uchaf rydym yn dweud bod 950 01:05:59,000 --> 01:06:04,000 ydych yn edrych ar n ² cymariaethau yr holl ffordd drwyddo. 951 01:06:04,000 --> 01:06:12,000 >> Gadewch i ni fynd yn ôl, ac ers i ni yn dechrau cael ychydig yn brin ar amser 952 01:06:12,000 --> 01:06:15,000 Byddwn yn dweud y dylech bendant yn mynd trwy weddill y tabl hwn, 953 01:06:15,000 --> 01:06:17,000 llenwi i gyd allan. 954 01:06:17,000 --> 01:06:20,000 Meddyliwch am enghreifftiau. Meddyliwch am enghreifftiau pendant. 955 01:06:20,000 --> 01:06:22,000 Mae hynny'n wir yn ddefnyddiol ac o gymorth i'w wneud. 956 01:06:22,000 --> 01:06:25,000 Dynnu allan. 957 01:06:25,000 --> 01:06:28,000 Dyma'r math o dabl bod wrth i chi fynd drwy mewn gwyddoniaeth gyfrifiadurol 958 01:06:28,000 --> 01:06:32,000 ddylasech 'n sylweddol yn dechrau i chwi wybod y galon. 959 01:06:32,000 --> 01:06:34,000 Dyma'r math o gwestiynau a gewch mewn cyfweliadau. 960 01:06:34,000 --> 01:06:36,000 Mae'r rhain yn fath o bethau sy'n dda i wybod, 961 01:06:36,000 --> 01:06:41,000 a meddwl am yr achosion hynny ymyl, mewn gwirionedd figuring allan sut i feddwl am 962 01:06:41,000 --> 01:06:45,000 gwybod bod am swigen didoli'r casgliad gwaethaf posibl 963 01:06:45,000 --> 01:06:52,000 i ddatrys gyda hynny yw un sydd yn ôl. 964 01:06:52,000 --> 01:06:58,000 >> Pointers. Gadewch i ni siarad ychydig am awgrymiadau. 965 01:06:58,000 --> 01:07:03,000 Yn y munudau olaf sydd gennym yma 966 01:07:03,000 --> 01:07:11,000 Rwy'n gwybod hyn yn rhywbeth ynghyd â ffeil gallaf / O na braidd yn newydd. 967 01:07:11,000 --> 01:07:19,000 Pan fyddwn yn sôn am arwyddion y rheswm rydym am i siarad am awgrymiadau 968 01:07:19,000 --> 01:07:24,000 oherwydd, un, pan fyddwn yn gweithio mewn C 969 01:07:24,000 --> 01:07:33,000 yr ydym yn wir ar lefel weddol isel o gymharu â ieithoedd rhaglennu mwyaf modern. 970 01:07:33,000 --> 01:07:38,000 Rydym yn mewn gwirionedd yn gallu trin y newidynnau mewn cof, 971 01:07:38,000 --> 01:07:43,000 chyfrif i maes lle maent yn lleoli mewn gwirionedd o fewn ein RAM. 972 01:07:43,000 --> 01:07:46,000 Unwaith y byddwch wedi mynd ymlaen i gymryd dosbarthiadau system weithredu byddwch yn gweld 973 01:07:46,000 --> 01:07:48,000 fod hyn yn cael, unwaith eto, math o echdyniad. 974 01:07:48,000 --> 01:07:50,000 Dyw hynny ddim yn wir mewn gwirionedd. 975 01:07:50,000 --> 01:07:52,000 Rydym wedi cael cof rhith sydd wedi cuddio manylion hynny oddi wrthym. 976 01:07:52,000 --> 01:07:58,000 >> Ond am nawr, gallwch gymryd yn ganiataol bod pan fydd gennych raglen, 977 01:07:58,000 --> 01:08:02,000 er enghraifft, pan fyddwch yn dechrau rhedeg eich rhaglen-cipher Caesar 978 01:08:02,000 --> 01:08:06,000 'N annhymerus' newid yn ôl i fy iPad yn gyflym iawn- 979 01:08:06,000 --> 01:08:12,000 bod yn iawn dechrau ar eich rhaglen, os oes gennych, yn dweud, 980 01:08:12,000 --> 01:08:15,000 4 gigabeit o RAM ar eich gliniadur, 981 01:08:15,000 --> 01:08:21,000 byddwch yn cael neilltuo darn hwn, a byddwn yn galw hyn yn RAM. 982 01:08:21,000 --> 01:08:25,000 Ac mae'n dechrau mewn man rydym yn mynd i alw 0, 983 01:08:25,000 --> 01:08:30,000 ac mae'n dod i ben mewn man y byddwn yn galw 4 gigabeit. 984 01:08:30,000 --> 01:08:37,000 Ni allaf ysgrifennu. Dyn, sy'n cael ei hacio. 985 01:08:37,000 --> 01:08:40,000 Pan fydd eich rhaglen yn gweithredu 986 01:08:40,000 --> 01:08:44,000 y system weithredu mynd ati i rannu'r RAM, 987 01:08:44,000 --> 01:08:51,000 ac mae'n nodi segmentau gwahanol ar gyfer gwahanol rannau o'ch rhaglen i fyw ynddo 988 01:08:51,000 --> 01:08:58,000 Down yma y maes hwn yn fath o dir neb. 989 01:08:58,000 --> 01:09:02,000 Pan fyddwch yn mynd i fyny ychydig ymhellach yma 990 01:09:02,000 --> 01:09:05,000 gennych chi mewn gwirionedd yn y man lle 991 01:09:05,000 --> 01:09:09,000 y cod ar gyfer eich bywyd rhaglen. 992 01:09:09,000 --> 01:09:13,000 Y cod deuaidd gwirioneddol, y ffeil gweithredadwy mewn gwirionedd yn cael eu llwytho i mewn i gof 993 01:09:13,000 --> 01:09:17,000 pan fyddwch yn rhedeg rhaglen, ac mae'n byw yn y segment cod. 994 01:09:17,000 --> 01:09:22,000 Ac fel eich rhaglen executes y prosesydd yn edrych ar y segment cod 995 01:09:22,000 --> 01:09:24,000 at chyfrif i maes beth yw'r cyfarwyddyd nesaf? 996 01:09:24,000 --> 01:09:27,000 Beth yn y llinell nesaf o god angen i mi weithredu? 997 01:09:27,000 --> 01:09:31,000 >> Mae hefyd yn segment data, a dyma lle y cysonion llinyn 998 01:09:31,000 --> 01:09:34,000 cael ei storio eich bod wedi bod yn ei ddefnyddio. 999 01:09:34,000 --> 01:09:42,000 Ac yna ymhellach i fyny yno yn y lle hwn a elwir y domen. 1000 01:09:42,000 --> 01:09:46,000 Rydym yn cael mynediad cof yno trwy ddefnyddio malloc, 1001 01:09:46,000 --> 01:09:49,000 ac yna i gyfeiriad y frig eich rhaglen 1002 01:09:49,000 --> 01:09:52,000 mae y pentwr, 1003 01:09:52,000 --> 01:09:57,000 a dyna lle'r ydym wedi bod yn chwarae am y rhan fwyaf o'r dechrau. 1004 01:09:57,000 --> 01:09:59,000 Nid yw hyn yn raddfa neu unrhyw beth. 1005 01:09:59,000 --> 01:10:03,000 Mae llawer o hyn yn iawn peiriant dibynnol, 1006 01:10:03,000 --> 01:10:10,000 gweithredu system dibynnol, ond mae hyn yn gymharol sut mae pethau'n cael eu chunked i fyny. 1007 01:10:10,000 --> 01:10:17,000 Pan fyddwch yn rhedeg rhaglen a byddwch yn datgan amrywiol o'r enw x- 1008 01:10:17,000 --> 01:10:27,000 Rydw i'n mynd i dynnu i lawr blwch arall isod, ac mae hyn yn mynd i fod yn RAM yn ogystal. 1009 01:10:27,000 --> 01:10:29,000 Ac yr wyf i'n mynd i edrych. 1010 01:10:29,000 --> 01:10:34,000 Byddwn yn tynnu llinellau drosto i nodi hyn yn unig yw darn bach o RAM 1011 01:10:34,000 --> 01:10:38,000 ac nid yw pob un fel rydym yn tynnu ar y brig. 1012 01:10:38,000 --> 01:10:43,000 >> Os byddaf yn datgan newidyn cyfanrif o'r enw x, 1013 01:10:43,000 --> 01:10:49,000 yna beth yr wyf mewn gwirionedd yn cael yn mapio 1014 01:10:49,000 --> 01:10:54,000 sy'n cael ei storio yn y tabl symbol o fy rhaglen 1015 01:10:54,000 --> 01:11:00,000 sy'n cysylltu'r x enw i'r rhanbarth hwn o gof yr wyf wedi tynnu 1016 01:11:00,000 --> 01:11:03,000 i'r dde yma rhwng y bariau fertigol. 1017 01:11:03,000 --> 01:11:08,000 Os oes gennyf llinell o god yn fy rhaglen sy'n dweud x = 7 1018 01:11:08,000 --> 01:11:15,000 y prosesydd yn gwybod "O, iawn, yr wyf yn gwybod bod bywydau x yn y lleoliad hwn yn y cof." 1019 01:11:15,000 --> 01:11:25,000 "Rydw i'n mynd i fynd yn ei flaen ac ysgrifennu 7 yno." 1020 01:11:25,000 --> 01:11:28,000 Sut mae'n gwybod pa leoliad hyn er cof? 1021 01:11:28,000 --> 01:11:30,000 Wel, sy'n cael ei wneud i gyd ar amser crynhoi. 1022 01:11:30,000 --> 01:11:34,000 Mae'r casglwr yn cymryd gofal o ddyrannu lle mae pob un o'r newidynnau yn mynd i fynd 1023 01:11:34,000 --> 01:11:40,000 a chreu mapio arbennig neu yn hytrach cysylltu'r dotiau 1024 01:11:40,000 --> 01:11:43,000 rhwng symbol a ble mae'n mynd, enw newidyn yn 1025 01:11:43,000 --> 01:11:46,000 a lle mae'n mynd i fyw yn y cof. 1026 01:11:46,000 --> 01:11:50,000 Ond mae'n troi allan y gallwn mewn gwirionedd gael mynediad iddo yn ein rhaglenni yn ogystal. 1027 01:11:50,000 --> 01:11:55,000 Mae hyn yn cael bwysig wrth inni ddechrau sôn am rai o'r strwythurau data, 1028 01:11:55,000 --> 01:11:58,000 sydd yn gysyniad ein bod ni'n mynd i gyflwyno yn nes ymlaen. 1029 01:11:58,000 --> 01:12:09,000 >> Ond am nawr, beth y gallwch ei wybod yw y gall yr wyf yn creu pwyntydd i'r lleoliad hwn, x. 1030 01:12:09,000 --> 01:12:12,000 Er enghraifft, gallaf greu newidyn pwyntydd. 1031 01:12:12,000 --> 01:12:16,000 Pan fyddwn yn creu newidyn pwyntydd rydym yn defnyddio'r nodiant seren. 1032 01:12:16,000 --> 01:12:21,000 Yn yr achos hwn, mae hyn yn dweud fy mod i'n mynd i greu pwyntydd i int. 1033 01:12:21,000 --> 01:12:24,000 Mae'n fath yn union fel unrhyw un arall. 1034 01:12:24,000 --> 01:12:27,000 Rydym yn rhoi ei fod yn amrywiol fel y, 1035 01:12:27,000 --> 01:12:32,000 ac yna rydym yn ei osod yn gyfartal i'r cyfeiriad, i gyfeiriad. 1036 01:12:32,000 --> 01:12:38,000 Yn yr achos hwn, gallwn osod y bwyntio at x 1037 01:12:38,000 --> 01:12:43,000 drwy gymryd y cyfeiriad x, yr ydym yn ei wneud â'r ampersand, 1038 01:12:43,000 --> 01:12:55,000 ac yna rydym yn gosod y i bwynt iddo. 1039 01:12:55,000 --> 01:12:59,000 Beth mae hyn yn ei hanfod yn ei wneud yw os ydym yn edrych ar ein RAM 1040 01:12:59,000 --> 01:13:02,000 mae hyn yn creu newidyn ar wahân. 1041 01:13:02,000 --> 01:13:04,000 Mae'n mynd i alw yn y, 1042 01:13:04,000 --> 01:13:06,000 a phryd y llinell o god yn gweithredu 1043 01:13:06,000 --> 01:13:13,000 mae'n wir yn mynd i greu pwyntydd bach yr ydym fel arfer yn tynnu fel saeth, 1044 01:13:13,000 --> 01:13:15,000 ac mae'n gosod y bwyntio at x. 1045 01:13:15,000 --> 01:13:17,000 Ydw. 1046 01:13:17,000 --> 01:13:19,000 [Myfyrwyr] Os x eisoes yn pwyntydd, a fyddech dim ond gwneud 1047 01:13:19,000 --> 01:13:22,000 int * y = x hytrach na chael y ampersand? 1048 01:13:22,000 --> 01:13:24,000 Ydw. 1049 01:13:24,000 --> 01:13:27,000 Os x eisoes yn pwyntydd, yna gallwch gosod 2 awgrymiadau cyfartal i bob eraill, 1050 01:13:27,000 --> 01:13:30,000 yn yr achos na fyddai cyfeirio at y x, 1051 01:13:30,000 --> 01:13:34,000 ond byddai'n cyfeirio at ba bynnag x yn pwyntio i. 1052 01:13:34,000 --> 01:13:37,000 Yn anffodus, rydym yn allan o amser. 1053 01:13:37,000 --> 01:13:44,000 >> Beth byddwn yn ei ddweud ar y pwynt hwn, gallwn siarad am hyn oddi ar lein, 1054 01:13:44,000 --> 01:13:49,000 ond byddwn yn dweud dechrau gweithio trwy'r broblem, # 14. 1055 01:13:49,000 --> 01:13:53,000 Gallwch weld mae eisoes ychydig yn llenwi ar eich rhan yma. 1056 01:13:53,000 --> 01:13:57,000 Gallwch weld bod pan fyddwn yn datgan 2 awgrymiadau, int * x y * a, 1057 01:13:57,000 --> 01:14:01,000 ac yn nodi bod pwyntio y * wrth ymyl y newidyn yn rhywbeth a wnaed y llynedd. 1058 01:14:01,000 --> 01:14:05,000 Mae'n troi allan bod hyn yn debyg i'r hyn yr ydym ni'n ei wneud eleni. 1059 01:14:05,000 --> 01:14:11,000 Nid oes ots lle rydych yn ysgrifennu'r * pan fyddwch yn datgan y pwyntydd. 1060 01:14:11,000 --> 01:14:17,000 Ond rydym wedi ysgrifennu'r * nesaf at y math o 1061 01:14:17,000 --> 01:14:24,000 oherwydd bod ei gwneud yn glir iawn eich bod yn datgan newidyn pwyntydd. 1062 01:14:24,000 --> 01:14:27,000 Gallwch weld bod datgan y 2 awgrymiadau rhoi 2 flwch. 1063 01:14:27,000 --> 01:14:31,000 Yma pan fyddwn yn gosod x cyfartal i malloc 1064 01:14:31,000 --> 01:14:34,000 beth mae hyn yn ei ddweud yn gosod o'r neilltu cof yn y domen. 1065 01:14:34,000 --> 01:14:41,000 Mae'r blwch bach i'r dde yma, cylch hwn, wedi ei leoli ar y domen. 1066 01:14:41,000 --> 01:14:43,000 X yn pwyntio ato. 1067 01:14:43,000 --> 01:14:46,000 Sylwch fod y yn dal yn pwyntio at unrhyw beth. 1068 01:14:46,000 --> 01:14:50,000 I gael cof-i storio'r rhif 42 yn x 1069 01:14:50,000 --> 01:14:55,000 byddem yn defnyddio'r hyn a nodiant? 1070 01:14:55,000 --> 01:14:59,000 [Myfyrwyr] * x = 42. 1071 01:14:59,000 --> 01:15:01,000 Yn union, * x = 42. 1072 01:15:01,000 --> 01:15:06,000 Mae hynny'n golygu dilyn y saeth a thaflu 42 mewn yno. 1073 01:15:06,000 --> 01:15:09,000 Yma byddwn yn gosod y ac x rydym wedi pwyntio at y x. 1074 01:15:09,000 --> 01:15:13,000 Unwaith eto, mae hyn yn union fel yr hyn Kevin dweud o ble rydym yn gosod y gyfartal i x. 1075 01:15:13,000 --> 01:15:15,000 Nid yw Y yn pwyntio i x. 1076 01:15:15,000 --> 01:15:19,000 Yn hytrach, mae'n pwyntio at yr hyn x yn pwyntio at yn ogystal. 1077 01:15:19,000 --> 01:15:24,000 >> Ac yna yn olaf yn y blwch olaf, mae 2 beth yn bosibl y gallem ei wneud. 1078 01:15:24,000 --> 01:15:28,000 Un yw y gallem ddweud * x = 13. 1079 01:15:28,000 --> 01:15:33,000 Y peth arall yw y gallem ddweud-Alex, a ydych yn gwybod beth y gallem ei wneud yma? 1080 01:15:33,000 --> 01:15:37,000 Fe allech chi ddweud * x = 13 neu- 1081 01:15:37,000 --> 01:15:41,000 [Myfyrwyr] Fe allech chi ddweud beth bynnag int. 1082 01:15:41,000 --> 01:15:45,000 [Nate H.] Os yw hyn yn cael eu cyfeirio at fel newidyn int gallem wneud hynny. 1083 01:15:45,000 --> 01:15:49,000 Gallem ddweud hefyd fod * y = 13 oherwydd eu bod yn pwyntio at yr un lle, 1084 01:15:49,000 --> 01:15:51,000 fel y gallai rydym yn defnyddio naill ai amrywiol i gyrraedd yno. 1085 01:15:51,000 --> 01:15:56,000 Yeah. >> [Myfyrwyr] Beth fyddai'n edrych fel os ydym yn unig yn dweud x int yn 13? 1086 01:15:56,000 --> 01:16:00,000 Byddai hynny'n cael ei ddatgan newidyn newydd o'r enw x, na fyddai'n gweithio. 1087 01:16:00,000 --> 01:16:04,000 Byddem yn cael gwrthdrawiad oherwydd ein bod yn datgan x i fod yn pwyntydd i fyny yma. 1088 01:16:04,000 --> 01:16:10,000 [Myfyrwyr] Os ydym newydd gael y datganiad hwnnw ei ben ei hun, beth fyddai edrych o ran y cylch? 1089 01:16:10,000 --> 01:16:14,000 Pe bai gennym x = 13, yna byddai gennym focs, ac yn hytrach na chael saeth 1090 01:16:14,000 --> 01:16:16,000 dod allan o'r bocs byddem yn tynnu fel dim ond 13. 1091 01:16:16,000 --> 01:16:19,000 [Myfyrwyr] Yn y blwch. Iawn. 1092 01:16:19,000 --> 01:16:24,000 >> Diolch i chi am wylio, a phob lwc ar Cwis 0. 1093 01:16:24,000 --> 01:16:28,000 [CS50.TV]