1 00:00:00,000 --> 00:00:03,000 [Powered by Google Translate] [Adolygiad] [Cwis 0] 2 00:00:03,000 --> 00:00:05,000 >> [Lexi Ross, Tommy MacWilliam, Lucas Freitas, Joseph Ong] [Harvard University] 3 00:00:05,000 --> 00:00:08,000 >> [Mae hyn yn CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:10,000 >> Hey, bawb. 5 00:00:10,000 --> 00:00:15,000 Croeso i sesiwn adolygu ar gyfer Cwis 0, sy'n cael ei gynnal ar ddydd Mercher. 6 00:00:15,000 --> 00:00:19,000 Beth ydym ni'n mynd i'w wneud heno, rwy'n gyda 3 TFS eraill, 7 00:00:19,000 --> 00:00:24,000 a gyda'n gilydd rydym yn mynd i fynd trwy adolygiad o'r hyn yr ydym wedi ei wneud yn y cwrs hyd yn hyn. 8 00:00:24,000 --> 00:00:27,000 Dyw hi ddim yn mynd i fod yn 100% gynhwysfawr, ond dylai roi gwell syniad i chi 9 00:00:27,000 --> 00:00:31,000 yr hyn sydd gennych eisoes i lawr a beth bydd angen i chi astudio cyn dydd Mercher. 10 00:00:31,000 --> 00:00:34,000 Ac mae croeso i chi godi eich llaw gyda chwestiynau gan ein bod yn mynd ar hyd, 11 00:00:34,000 --> 00:00:38,000 ond cadwch mewn cof y byddwn hefyd yn cael ychydig bach o amser ar y diwedd- 12 00:00:38,000 --> 00:00:41,000 os cawn drwy gydag ychydig o funudau i sbâr i wneud cwestiynau cyffredinol, 13 00:00:41,000 --> 00:00:47,000 felly cadwch hynny mewn cof, ac felly rydym yn mynd i ddechrau yn y dechrau gydag Wythnos 0. 14 00:00:47,000 --> 00:00:50,000 >> [Cwis 0 Adolygiad!] [Rhan 0] [Lexi Ross] Ond cyn i ni wneud hynny gadewch i ni siarad am 15 00:00:50,000 --> 00:00:53,000 logisteg y cwis. 16 00:00:53,000 --> 00:00:55,000 >> [Logisteg] [Cwis yn digwydd ar ddydd Mercher 10/10 mewn lle darlith] 17 00:00:55,000 --> 00:00:57,000 >> [(Gweler http://cdn.cs50.net/2012/fall/quizzes/0/about0.pdf am fanylion)] Mae'n ddydd Mercher, Hydref 10fed. 18 00:00:57,000 --> 00:01:00,000 >> Dyna nos Fercher yma, ac os byddwch yn mynd i'r URL yma, 19 00:01:00,000 --> 00:01:03,000 sydd hefyd yn hygyrch o CS50.net-mae dolen gyswllt iddo- 20 00:01:03,000 --> 00:01:06,000 gallwch weld gwybodaeth am ble i fynd yn seiliedig ar 21 00:01:06,000 --> 00:01:10,000 eich enw olaf neu gysylltiad ysgol yn ogystal â 22 00:01:10,000 --> 00:01:14,000 mae'n dweud am yr union beth fydd y cwis yn cynnwys a'r mathau o gwestiynau y byddwch chi'n mynd i gael. 23 00:01:14,000 --> 00:01:19,000 Cadwch mewn cof y byddwch hefyd yn cael cyfle i adolygu ar gyfer y cwis yn adran, 24 00:01:19,000 --> 00:01:21,000 felly dylai eich TFS yn mynd dros rai problemau ymarferol, 25 00:01:21,000 --> 00:01:29,000 ac mae hynny'n gyfle da arall i weld lle bydd angen i chi astudio hyd ar gyfer y cwis. 26 00:01:29,000 --> 00:01:32,000 Gadewch i ni ddechrau yn y dechrau gydag Bytes 'n' Bits. 27 00:01:32,000 --> 00:01:35,000 Cofiwch ychydig yn unig o 0 neu 1, 28 00:01:35,000 --> 00:01:38,000 ac mae beit yn gasgliad o 8 o'r darnau. 29 00:01:38,000 --> 00:01:42,000 Gadewch i ni edrych ar y casgliad hwn o ddarnau iawn yma. 30 00:01:42,000 --> 00:01:44,000 Dylem fod yn gallu chyfrif i maes faint o ddarnau ceir. 31 00:01:44,000 --> 00:01:48,000 Pan fyddwn yn cyfrif nid dim ond 8 ohonynt, wyth 0 neu 1 uned. 32 00:01:48,000 --> 00:01:51,000 Ac ers oes 8 did, dyna 1 beit, 33 00:01:51,000 --> 00:01:53,000 a gadewch i drosi i hecsadegol. 34 00:01:53,000 --> 00:01:58,000 Hecsadegol yn sylfaen 16, ac mae'n eithaf hawdd i drosi 35 00:01:58,000 --> 00:02:01,000 nifer yn deuaidd, sef yr hyn hynny yw, i nifer yn hecsadegol. 36 00:02:01,000 --> 00:02:04,000 Mae pob rydym yn ei wneud yw ein bod yn edrych ar grwpiau o 4, 37 00:02:04,000 --> 00:02:07,000 ac rydym yn eu trosi i'r digid hecsadegol priodol. 38 00:02:07,000 --> 00:02:11,000 Rydym yn dechrau gyda'r grŵp dde y rhan fwyaf o 4, felly 0011. 39 00:02:11,000 --> 00:02:16,000 Mae hynny'n mynd i fod yn un 1 ac un 2, felly gyda'n gilydd sy'n gwneud 3. 40 00:02:16,000 --> 00:02:19,000 Ac yna gadewch i ni edrych ar y bloc arall o 4. 41 00:02:19,000 --> 00:02:24,000 1101. Mae hynny'n mynd i fod yn un 1, un 4, ac un 8. 42 00:02:24,000 --> 00:02:28,000 Gyda'i gilydd mae hynny'n mynd i fod yn 13, sy'n gwneud D. 43 00:02:28,000 --> 00:02:32,000 A byddwn yn cofio bod yn hecsadegol nid ydym yn unig yn mynd 0 i 9. 44 00:02:32,000 --> 00:02:36,000 Rydym yn mynd trwy 0 F, felly ar ôl 9, 10 yn cyfateb i A, 45 00:02:36,000 --> 00:02:40,000 11 i B, et cetera lle mae F yn 15. 46 00:02:40,000 --> 00:02:44,000 Dyma 13 yn D, 47 00:02:44,000 --> 00:02:49,000 felly i drosi i degol cyfan a wnawn yw ein bod mewn gwirionedd yn 48 00:02:49,000 --> 00:02:52,000 trin pob safle fel pŵer o 2. 49 00:02:52,000 --> 00:02:58,000 Dyna un 1, mae un 2, sero 4s, sero 8 oed, un 16, et cetera, 50 00:02:58,000 --> 00:03:03,000 ac mae'n ychydig yn anodd i gyfrifo yn eich pen, ond os ydym yn mynd at y sleid nesaf 51 00:03:03,000 --> 00:03:05,000 gallwn weld yr ateb i hynny. 52 00:03:05,000 --> 00:03:09,000 >> Yn y bôn rydym yn mynd ar draws o'r dde yn ôl i'r chwith, 53 00:03:09,000 --> 00:03:14,000 ac rydym yn lluosi pob digid gan y pŵer cyfatebol o 2. 54 00:03:14,000 --> 00:03:19,000 A chofiwch, er hecsadegol yr ydym yn pennu y niferoedd hyn gyda 0x ar y dechrau 55 00:03:19,000 --> 00:03:23,000 felly nid ydym yn drysu rhwng 'i ag a rhif degol. 56 00:03:23,000 --> 00:03:29,000 Parhau ar, mae hwn yn Tabl ASCII, 57 00:03:29,000 --> 00:03:35,000 a'r hyn rydym yn defnyddio ASCII ar gyfer yw mapio'r o gymeriadau i werthoedd rhifiadol. 58 00:03:35,000 --> 00:03:39,000 Cofiwch yn y pset cryptograffeg rydym yn gwneud defnydd helaeth o'r Tabl ASCII 59 00:03:39,000 --> 00:03:43,000 er mwyn defnyddio gwahanol ddulliau o cryptograffeg, 60 00:03:43,000 --> 00:03:47,000 y Caesar a'r cipher Vigenère, i drawsnewid gwahanol lythrennau 61 00:03:47,000 --> 00:03:52,000 mewn llinyn yn ôl yr allwedd a roddwyd gan y defnyddiwr. 62 00:03:52,000 --> 00:03:56,000 Gadewch i ni edrych ar ychydig o mathemateg ASCII. 63 00:03:56,000 --> 00:04:02,000 O edrych ar 'P' + 1, ar ffurf cymeriad a fyddai'n Q, 64 00:04:02,000 --> 00:04:07,000 a chofiwch fod '5 '≠ 5. 65 00:04:07,000 --> 00:04:10,000 A byddai sut yn union y trosi rhwng y 2 ffurflenni? 66 00:04:10,000 --> 00:04:13,000 Nid yw'n mewn gwirionedd yn rhy galed. 67 00:04:13,000 --> 00:04:16,000 Er mwyn cael 5 rydym yn tynnu '0 ' 68 00:04:16,000 --> 00:04:20,000 oherwydd bod 5 lle rhwng y '0 'a '5'. 69 00:04:20,000 --> 00:04:23,000 Er mwyn mynd y ffordd arall rydym yn unig ychwanegwch y 0, 70 00:04:23,000 --> 00:04:25,000 felly mae'n fath o fel rhifyddeg rheolaidd. 71 00:04:25,000 --> 00:04:29,000 Ond cofiwch fod pan fydd rhywbeth wedi dyfyniadau o'i gwmpas ei fod yn gymeriad 72 00:04:29,000 --> 00:04:37,000 ac felly yn cyfateb i werth yn y tabl ASCII. 73 00:04:37,000 --> 00:04:40,000 Symud i bynciau cyfrifiadurol mwy o wyddoniaeth gyffredinol. 74 00:04:40,000 --> 00:04:43,000 Rydym yn dysgu beth yw algorithm a sut rydym yn defnyddio rhaglennu 75 00:04:43,000 --> 00:04:45,000 i weithredu algorithmau. 76 00:04:45,000 --> 00:04:48,000 Dyma rai enghreifftiau o algorithmau yn rhywbeth syml iawn fel 77 00:04:48,000 --> 00:04:51,000 gwirio a yw rhif yn eilrif neu'n odrif. 78 00:04:51,000 --> 00:04:54,000 Am y cofiwch ein mod y rhif hwnnw â 2 a gwirio os yw'r canlyniad yw 0. 79 00:04:54,000 --> 00:04:57,000 Os felly, mae hyd yn oed. Os na, mae'n rhyfedd. 80 00:04:57,000 --> 00:04:59,000 A dyna enghraifft o algorithm sylfaenol iawn. 81 00:04:59,000 --> 00:05:02,000 >> Mae ychydig bach o un mwy o ran yn chwiliad deuaidd, 82 00:05:02,000 --> 00:05:05,000 y byddwn yn mynd drosodd yn ddiweddarach yn y sesiwn adolygu. 83 00:05:05,000 --> 00:05:09,000 Ac rhaglennu yw'r term a ddefnyddiwn ar gyfer cymryd algorithm 84 00:05:09,000 --> 00:05:15,000 a gall drosi i godio'r y cyfrifiadur yn darllen. 85 00:05:15,000 --> 00:05:20,000 2 enghraifft o raglennu yn Scratch, 86 00:05:20,000 --> 00:05:22,000 sef yr hyn a wnaethom yn Wythnos 0. 87 00:05:22,000 --> 00:05:25,000 Er nad ydym yn mewn gwirionedd yn teipio allan y cod mae'n ffordd o weithredu 88 00:05:25,000 --> 00:05:29,000 y algorithm, sy'n argraffu'r rhifau 1-10, 89 00:05:29,000 --> 00:05:32,000 ac yma rydym yn gwneud yr un peth yn yr iaith raglennu C. 90 00:05:32,000 --> 00:05:41,000 Mae'r rhain yn swyddogaethol sy'n cyfateb, ysgrifenedig yn unig mewn ieithoedd gwahanol neu gystrawen. 91 00:05:41,000 --> 00:05:44,000 Yna byddwn yn dysgu am ymadroddion boolean, 92 00:05:44,000 --> 00:05:48,000 a gwerth Boole yn werth sy'n naill ai'n wir neu'n anwir, 93 00:05:48,000 --> 00:05:51,000 ac ymadroddion yma oftentimes boolean 94 00:05:51,000 --> 00:05:55,000 mynd y tu mewn o gyflyrau, felly os (x ≤ 5), 95 00:05:55,000 --> 00:06:00,000 yn dda, rydym yn gosod eisoes x = 5, fel y cyflwr yn mynd i werthuso i gwir. 96 00:06:00,000 --> 00:06:03,000 Ac os yw'n wir, beth bynnag yw cod o dan y cyflwr 97 00:06:03,000 --> 00:06:08,000 yn mynd i gael ei werthuso gan y cyfrifiadur, fel y llinyn yn mynd i gael ei argraffu 98 00:06:08,000 --> 00:06:12,000 i'r allbwn safonol, a chyflwr tymor 99 00:06:12,000 --> 00:06:16,000 yn cyfeirio at beth bynnag sydd y tu mewn i'r cromfachau y datganiad os. 100 00:06:16,000 --> 00:06:20,000 Cofiwch holl weithredwyr. 101 00:06:20,000 --> 00:06:26,000 Cofiwch ei && a | | pan fyddwn yn ceisio cyfuno 2 neu fwy o gyflyrau, 102 00:06:26,000 --> 00:06:30,000 Nid == = i wirio a 2 beth yn gyfartal. 103 00:06:30,000 --> 00:06:36,000 Cofiwch mai = ar gyfer aseiniad tra == yn weithredwr boolean. 104 00:06:36,000 --> 00:06:41,000 ≤, ≥ ac yna y 2 olaf yn hunan-esboniadol. 105 00:06:41,000 --> 00:06:45,000 Mae adolygiad cyffredinol o resymeg boolean yma. 106 00:06:45,000 --> 00:06:48,000 Ac ymadroddion boolean hefyd yn bwysig o ddolenni, 107 00:06:48,000 --> 00:06:50,000 y byddwn yn mynd dros awr. 108 00:06:50,000 --> 00:06:56,000 Rydym yn dysgu am 3 math o dolenni hyd yn hyn yn CS50, ar gyfer, ychydig, ac yn ei wneud tra. 109 00:06:56,000 --> 00:06:59,000 Ac mae'n bwysig gwybod, er bod at ddibenion y rhan fwyaf o 110 00:06:59,000 --> 00:07:02,000 gallwn mewn gwirionedd yn defnyddio unrhyw fath o ddolen yn gyffredinol 111 00:07:02,000 --> 00:07:06,000 mae rhai mathau o ddibenion neu batrymau cyffredin 112 00:07:06,000 --> 00:07:09,000 mewn rhaglenni sy'n benodol yn galw am un o'r dolenni 113 00:07:09,000 --> 00:07:13,000 sy'n ei gwneud yn y. mwyaf effeithlon neu cain i godedig yn y ffordd honno 114 00:07:13,000 --> 00:07:18,000 Gadewch i ni fynd dros beth mae pob un o'r dolenni yn tueddu i gael eu defnyddio ar gyfer y rhan fwyaf yn aml. 115 00:07:18,000 --> 00:07:21,000 >> Mewn gyfer dolen rydym yn gyffredinol eisoes yn gwybod faint o weithiau yr ydym am ei ailadrodd. 116 00:07:21,000 --> 00:07:24,000 Dyna beth rydym yn ei roi yn y cyflwr. 117 00:07:24,000 --> 00:07:28,000 Er, i = 0, i <10, er enghraifft. 118 00:07:28,000 --> 00:07:31,000 Rydym eisoes yn gwybod ein bod eisiau gwneud rhywbeth 10 gwaith. 119 00:07:31,000 --> 00:07:34,000 Nawr, am ddolen er, yn gyffredinol nid ydym yn o reidrwydd 120 00:07:34,000 --> 00:07:36,000 gwybod faint o weithiau yr ydym am i'r ddolen i redeg. 121 00:07:36,000 --> 00:07:39,000 Ond rydym yn gwybod rhyw fath o amod ein bod yn awyddus i 122 00:07:39,000 --> 00:07:41,000 bob amser fod yn wir neu bob amser fod yn ffug. 123 00:07:41,000 --> 00:07:44,000 Er enghraifft, er bod ei osod. 124 00:07:44,000 --> 00:07:46,000 Lets 'ddeud bod' na newidyn boolean. 125 00:07:46,000 --> 00:07:48,000 Er bod yn wir yr ydym am i'r cod i werthuso, 126 00:07:48,000 --> 00:07:52,000 felly mae ychydig yn fwy estynadwy, ychydig yn fwy cyffredinol na i ddolen, 127 00:07:52,000 --> 00:07:55,000 ond gall unrhyw ddolen i hefyd yn cael eu trosi i dolen gyfnod. 128 00:07:55,000 --> 00:08:00,000 Yn olaf, wneud tra dolenni, a all fod yn dyrys i ddeall ar unwaith, 129 00:08:00,000 --> 00:08:04,000 yn cael eu defnyddio'n aml wrth yr ydym am werthuso'r y cod cyntaf 130 00:08:04,000 --> 00:08:06,000 cyn y tro cyntaf i ni edrych ar y cyflwr. 131 00:08:06,000 --> 00:08:09,000 Mae achos defnydd cyffredin am wneud tra dolen 132 00:08:09,000 --> 00:08:12,000 yw pan fyddwch am gael mewnbwn defnyddwyr, ac rydych yn gwybod eich bod am ofyn i'r defnyddiwr 133 00:08:12,000 --> 00:08:15,000 ar gyfer mewnbwn o leiaf unwaith, ond os nad ydynt yn rhoi i chi mewnbwn da hawl i ffwrdd 134 00:08:15,000 --> 00:08:18,000 ydych am i ddal i ofyn iddynt nes eu bod yn rhoi i chi y mewnbwn da. 135 00:08:18,000 --> 00:08:21,000 Dyna y defnydd mwyaf cyffredin o ddim tra dolen, 136 00:08:21,000 --> 00:08:23,000 a gadewch i ni edrych ar y strwythur gwirioneddol y dolenni. 137 00:08:23,000 --> 00:08:27,000 Maent fel arfer bob amser yn tueddu i ddilyn patrymau hyn. 138 00:08:27,000 --> 00:08:30,000 >> Ar y ddolen ar gyfer tu mewn i chi gael 3 elfen: 139 00:08:30,000 --> 00:08:35,000 initialization, fel arfer rhywbeth fel int i = 0 lle i yw y cownter, 140 00:08:35,000 --> 00:08:40,000 cyflwr, lle rydym eisiau ei ddweud yn rhedeg hyn ar gyfer dolen cyhyd ag y cyflwr hwn yn dal, 141 00:08:40,000 --> 00:08:44,000 fel i <10, ac yna yn olaf, diweddaru, sef sut yr ydym gynyddran 142 00:08:44,000 --> 00:08:47,000 y newidyn cownter ar bob pwynt yn y ddolen. 143 00:08:47,000 --> 00:08:50,000 Mae beth cyffredin i weld yn unig sydd i + +, 144 00:08:50,000 --> 00:08:52,000 sy'n golygu codiad o 1 i bob tro. 145 00:08:52,000 --> 00:08:55,000 Gallech hefyd wneud rhywbeth fel i + = 2, 146 00:08:55,000 --> 00:08:58,000 sy'n golygu ychwanegu 2 i i bob tro y byddwch yn mynd drwy'r ddolen. 147 00:08:58,000 --> 00:09:03,000 Ac yna y gwneud hyn dim ond yn cyfeirio at unrhyw god sydd mewn gwirionedd yn rhedeg fel rhan o'r ddolen. 148 00:09:03,000 --> 00:09:09,000 Ac ar gyfer dolen tra, y tro hwn yr ydym mewn gwirionedd yn cael y initialization y tu allan i'r ddolen, 149 00:09:09,000 --> 00:09:12,000 felly, er enghraifft, gadewch i ni ddweud ein bod yn ceisio gwneud yr un math o ddolen fel yr wyf newydd eu disgrifio. 150 00:09:12,000 --> 00:09:16,000 Byddem yn dweud int i = 0 cyn i'r ddolen ddechrau. 151 00:09:16,000 --> 00:09:20,000 Yna gallem ddweud wrth i <10 yn gwneud hyn, 152 00:09:20,000 --> 00:09:22,000 felly mae'r un bloc o god ag o'r blaen, 153 00:09:22,000 --> 00:09:26,000 a'r tro hwn mae'r rhan diweddariad o'r cod, er enghraifft, i + +, 154 00:09:26,000 --> 00:09:29,000 mewn gwirionedd yn mynd y tu mewn i'r ddolen. 155 00:09:29,000 --> 00:09:33,000 Ac yn olaf, am wneud tra, mae'n debyg i'r ddolen tra, 156 00:09:33,000 --> 00:09:36,000 ond mae'n rhaid i ni gofio y bydd y cod yn gwerthuso unwaith 157 00:09:36,000 --> 00:09:40,000 cyn y cyflwr yn cael ei wirio, felly mae'n gwneud synnwyr llawer mwy o 158 00:09:40,000 --> 00:09:44,000 os ydych yn edrych arno yn nhrefn top i'r gwaelod. 159 00:09:44,000 --> 00:09:49,000 Mewn, wneud tra dolen y cod yn gwerthuso cyn i chi hyd yn oed edrych ar gyflwr tra 160 00:09:49,000 --> 00:09:55,000 tra bod dolen tra, mae'n gwirio yn gyntaf. 161 00:09:55,000 --> 00:09:59,000 Datganiadau a newidynnau. 162 00:09:59,000 --> 00:10:04,000 Pan fyddwn yn awyddus i greu amrywiol newydd i ni yn gyntaf am ei ymgychwyn hynny. 163 00:10:04,000 --> 00:10:07,000 >> Er enghraifft, bar int initializes y bar amrywiol, 164 00:10:07,000 --> 00:10:10,000 ond nid yw'n rhoi gwerth, felly beth yw bar yn werth nawr? 165 00:10:10,000 --> 00:10:12,000 Nid ydym yn gwybod. 166 00:10:12,000 --> 00:10:14,000 Gallai fod rhywfaint o werth garbage a storio yn flaenorol er cof yno, 167 00:10:14,000 --> 00:10:16,000 ac nid ydym am i ddefnyddio'r newidyn 168 00:10:16,000 --> 00:10:19,000 hyd nes y byddwn mewn gwirionedd yn rhoi ei fod yn werth, 169 00:10:19,000 --> 00:10:21,000 felly rydym yn datgan yma. 170 00:10:21,000 --> 00:10:24,000 Yna, rydym yn ymgychwyn ei fod yn 42 isod. 171 00:10:24,000 --> 00:10:28,000 Yn awr, wrth gwrs, rydym yn gwybod y gellir gwneud hyn ar un llinell, bar int = 42. 172 00:10:28,000 --> 00:10:30,000 Ond dim ond i gael eu glir y camau lluosog sy'n digwydd, 173 00:10:30,000 --> 00:10:34,000 datganiad a'r y initialization yn digwydd ar wahân yma. 174 00:10:34,000 --> 00:10:38,000 Mae'n digwydd ar un cam, ac mae'r un nesaf, int Baz = bar + 1, 175 00:10:38,000 --> 00:10:44,000 datganiad hwn isod, bod Baz cynyddrannau, felly ar ddiwedd y bloc cod 176 00:10:44,000 --> 00:10:48,000 pe baem yn argraffu'r gwerth Baz byddai'n 44 177 00:10:48,000 --> 00:10:52,000 oherwydd ein bod yn datgan ac yn ymgychwyn ei fod yn 1 bar>, 178 00:10:52,000 --> 00:10:58,000 ac yna rydym yn cynyddiad unwaith mwy â'r + +. 179 00:10:58,000 --> 00:11:02,000 Aethom dros hyn yn gryno 'n bert, ond mae'n dda i gael cyffredinol 180 00:11:02,000 --> 00:11:04,000 dealltwriaeth o'r hyn edafedd a digwyddiadau. 181 00:11:04,000 --> 00:11:06,000 Rydym yn bennaf yn gwneud hyn yn Scratch, 182 00:11:06,000 --> 00:11:09,000 er mwyn i chi feddwl am edafedd fel dilyniannau lluosog o god 183 00:11:09,000 --> 00:11:11,000 yn rhedeg ar yr un pryd. 184 00:11:11,000 --> 00:11:14,000 Mewn gwirionedd, mae'n debyg nad yw'n rhedeg ar yr un pryd, 185 00:11:14,000 --> 00:11:17,000 ond math o haniaethol gallwn feddwl am y peth yn y ffordd honno. 186 00:11:17,000 --> 00:11:20,000 >> Yn Scratch, er enghraifft, cawsom y sprites lluosog. 187 00:11:20,000 --> 00:11:22,000 Gallai fod yn gweithredu cod gwahanol ar yr un pryd. 188 00:11:22,000 --> 00:11:26,000 Gallai un fod yn cerdded tra bod y llall yn ei ddweud rhywbeth 189 00:11:26,000 --> 00:11:29,000 mewn rhan wahanol o'r sgrîn. 190 00:11:29,000 --> 00:11:34,000 Digwyddiadau yn ffordd arall o wahanu'r rhesymeg 191 00:11:34,000 --> 00:11:37,000 rhwng gwahanol elfennau eich cod, 192 00:11:37,000 --> 00:11:40,000 ac yn Scratch roeddem yn gallu i efelychu digwyddiadau gan ddefnyddio yr Darlledu, 193 00:11:40,000 --> 00:11:43,000 a dyna mewn gwirionedd Pan fyddaf yn derbyn, nid pan fyddaf yn clywed, 194 00:11:43,000 --> 00:11:47,000 ond yn y bôn mae'n ffordd i drosglwyddo gwybodaeth 195 00:11:47,000 --> 00:11:49,000 o un sprite i'r llall. 196 00:11:49,000 --> 00:11:52,000 Er enghraifft, efallai y byddwch am i drosglwyddo gêm drosodd, 197 00:11:52,000 --> 00:11:56,000 a phan arall sprite yn cael gêm drosodd, 198 00:11:56,000 --> 00:11:58,000 ei fod yn ymateb mewn ffordd benodol. 199 00:11:58,000 --> 00:12:03,000 Mae'n fodel bwysig deall ar gyfer rhaglenni. 200 00:12:03,000 --> 00:12:07,000 Dim ond i fynd dros yr Wythnos sylfaenol 0, hyn yr ydym wedi mynd dros hyd yn hyn, 201 00:12:07,000 --> 00:12:10,000 gadewch i ni edrych ar y rhaglen C syml. 202 00:12:10,000 --> 00:12:14,000 Gall y testun fod ychydig bach o fan hyn, ond byddaf yn mynd drosto mewn gwirionedd gyflym. 203 00:12:14,000 --> 00:12:20,000 Rydym yn cynnwys 2 ffeil pennawd ar y brig, cs50.h a stdio.h. 204 00:12:20,000 --> 00:12:23,000 Rydym yn diffinio yna terfyn cyson alw i fod yn 100. 205 00:12:23,000 --> 00:12:26,000 Rydym wedyn yn gweithredu ein prif swyddogaeth. 206 00:12:26,000 --> 00:12:29,000 Gan nad ydym yn defnyddio dadleuon llinell gorchymyn yma mae angen i ni roi ddi-rym 207 00:12:29,000 --> 00:12:32,000 gan fod y dadleuon ar gyfer y prif. 208 00:12:32,000 --> 00:12:38,000 Rydym yn gweld int uchod prif. Dyna'r math o ddychwelyd, felly dychwelyd 0 ar y gwaelod. 209 00:12:38,000 --> 00:12:41,000 Ac rydym yn defnyddio CS50 swyddogaeth llyfrgell yn cael int 210 00:12:41,000 --> 00:12:45,000 i ofyn i'r defnyddiwr ar gyfer mewnbwn, ac rydym yn ei storio yn y x amrywiol, 211 00:12:45,000 --> 00:12:51,000 felly rydym yn datgan x uchod, ac rydym ymgychwyn gyda x = GetInt. 212 00:12:51,000 --> 00:12:53,000 >> Yna, byddwn yn gwirio i weld a yw'r defnyddiwr yn rhoi i ni mewnbwn da. 213 00:12:53,000 --> 00:12:59,000 Os yw'n TERFYN ≥ rydym am ddychwelyd cod gwall o 1 ac argraffu neges gwall. 214 00:12:59,000 --> 00:13:02,000 Ac yn olaf, os yw'r defnyddiwr wedi rhoi i ni mewnbwn da 215 00:13:02,000 --> 00:13:08,000 rydyn ni'n mynd i sgwâr y nifer ac argraffwch y canlyniad. 216 00:13:08,000 --> 00:13:11,000 Dim ond i wneud yn siŵr bod y rhai gartref daro pob 217 00:13:11,000 --> 00:13:17,000 gallwch weld y labeli o rannau gwahanol o'r cod yma. 218 00:13:17,000 --> 00:13:19,000 Soniais yn gyson, ffeiliau header. 219 00:13:19,000 --> 00:13:21,000 O, int x. Gwnewch yn siwr i gofio bod 'na newidyn lleol. 220 00:13:21,000 --> 00:13:24,000 Sy'n cyferbynnu ei fod o amrywiol byd-eang, a byddwn yn siarad am 221 00:13:24,000 --> 00:13:27,000 ychydig yn ddiweddarach yn y sesiwn adolygu, 222 00:13:27,000 --> 00:13:30,000 ac rydym yn galw y swyddogaeth llyfrgell printf, 223 00:13:30,000 --> 00:13:34,000 felly os nad ydym wedi cynnwys y ffeil pennawd stdio.h 224 00:13:34,000 --> 00:13:37,000 ni fyddem yn gallu galw printf. 225 00:13:37,000 --> 00:13:42,000 Ac yr wyf yn credu bod y saeth a gafodd eu torri i ffwrdd yma yn pwyntio at y% d, 226 00:13:42,000 --> 00:13:45,000 sydd yn llinyn fformadu yn printf. 227 00:13:45,000 --> 00:13:52,000 Mae'n dweud argraffu newidyn hwn fel% o nifer, d. 228 00:13:52,000 --> 00:13:58,000 A dyna ni ar gyfer Wythnos 0. 229 00:13:58,000 --> 00:14:06,000 Nawr Lucas yn mynd i barhau. 230 00:14:06,000 --> 00:14:08,000 Hey, guys. Fy enw i yw Lucas. 231 00:14:08,000 --> 00:14:10,000 Rwy'n sophomore yn y tŷ gorau ar y campws, Mather, 232 00:14:10,000 --> 00:14:14,000 ac rydw i'n mynd i siarad ychydig am Wythnos 1 a 2.1. 233 00:14:14,000 --> 00:14:16,000 [Wythnos 1 a 2.1!] [Lucas Freitas] 234 00:14:16,000 --> 00:14:19,000 Gan Lexi yn ei ddweud, pan ddechreuon ni gyfieithu eich cod o Scratch i C 235 00:14:19,000 --> 00:14:23,000 un o'r pethau yr ydym yn sylwi yw eich bod yn gallu nid yn unig 236 00:14:23,000 --> 00:14:26,000 ysgrifennu eich cod a'i redeg gan ddefnyddio baner werdd anymore. 237 00:14:26,000 --> 00:14:30,000 A dweud y gwir, mae'n rhaid i chi ddefnyddio rhai camau i wneud eich C rhaglen 238 00:14:30,000 --> 00:14:33,000 dod yn ffeil weithredadwy. 239 00:14:33,000 --> 00:14:36,000 Yn y bôn yr hyn yr ydych yn ei wneud pan fyddwch yn ysgrifennu rhaglen yw bod 240 00:14:36,000 --> 00:14:40,000 i chi gyfieithu eich syniad yn iaith y gall casglwr ddeall, 241 00:14:40,000 --> 00:14:44,000 felly pan fyddwch yn ysgrifennu rhaglen yn C 242 00:14:44,000 --> 00:14:47,000 beth rydych chi'n ei wneud mewn gwirionedd yn ysgrifennu rhywbeth y mae'ch compiler yn mynd i ddeall, 243 00:14:47,000 --> 00:14:50,000 ac yna y casglwr yn mynd i gyfieithu cod hwnnw 244 00:14:50,000 --> 00:14:53,000 i mewn i rywbeth y bydd eich cyfrifiadur yn deall. 245 00:14:53,000 --> 00:14:55,000 >> A'r peth yw, eich cyfrifiadur yn iawn mewn gwirionedd fud. 246 00:14:55,000 --> 00:14:57,000 Gall eich cyfrifiadur yn unig yn deall 0s a 1s, 247 00:14:57,000 --> 00:15:01,000 felly mewn gwirionedd yn y cyfrifiaduron cyntaf pobl fel arfer yn rhaglennu 248 00:15:01,000 --> 00:15:04,000 defnyddio 0s a 1s, ond nid anymore, diolch i Dduw. 249 00:15:04,000 --> 00:15:07,000 Nid oes rhaid i ni gofio y dilyniannau gyfer 0au ac 1 250 00:15:07,000 --> 00:15:10,000 am am ddolen neu am ddolen gyfnod, ac felly ar. 251 00:15:10,000 --> 00:15:13,000 Dyna pam fod gennym compiler. 252 00:15:13,000 --> 00:15:17,000 Beth casglwr yn ei wneud yn y bôn yn trosi'r cod C, 253 00:15:17,000 --> 00:15:21,000 yn ein hachos ni, i iaith y bydd eich cyfrifiadur yn deall, 254 00:15:21,000 --> 00:15:25,000 sef y cod gwrthrych, a'r casglwr ein bod yn defnyddio 255 00:15:25,000 --> 00:15:30,000 Gelwir clang, felly mae hyn yn mewn gwirionedd yn y symbol ar gyfer clang. 256 00:15:30,000 --> 00:15:33,000 Pan fyddwch yn cael eich rhaglen, rhaid i chi wneud 2 beth. 257 00:15:33,000 --> 00:15:37,000 Yn gyntaf, mae'n rhaid i chi lunio eich rhaglen, ac yna rydych chi'n mynd i redeg eich rhaglen. 258 00:15:37,000 --> 00:15:41,000 Er mwyn llunio eich rhaglen gennych lawer o opsiynau i wneud hynny. 259 00:15:41,000 --> 00:15:44,000 Mae'r un cyntaf yw gwneud program.c clang 260 00:15:44,000 --> 00:15:47,000 mewn pa raglen yw enw eich rhaglen. 261 00:15:47,000 --> 00:15:51,000 Yn yr achos hwn gallwch weld eu bod dim ond dweud "Hey, lunio fy rhaglen." 262 00:15:51,000 --> 00:15:56,000 Nid ydych chi'n dweud "Rwyf am i'r enw ar gyfer fy rhaglen" neu unrhyw beth. 263 00:15:56,000 --> 00:15:58,000 >> Mae'r ail opsiwn yn rhoi enw i eich rhaglen. 264 00:15:58,000 --> 00:16:02,000 Gallwch ddweud clang-o ac yna enw'r eich bod am 265 00:16:02,000 --> 00:16:06,000 y ffeil gweithredadwy i gael eu henwi fel ac yna program.c. 266 00:16:06,000 --> 00:16:11,000 A allwch chi hefyd yn gwneud rhaglen, a gweld sut yn y 2 achos cyntaf 267 00:16:11,000 --> 00:16:15,000 Rhoi I. C, ac yn y trydydd Fi ond ca rhaglenni? 268 00:16:15,000 --> 00:16:18,000 Yeah, rydych na ddylai mewn gwirionedd yn rhoi. C pan fyddwch yn defnyddio ei wneud. 269 00:16:18,000 --> 00:16:22,000 Fel arall, compiler mewn gwirionedd yn mynd i gweiddi ar chi. 270 00:16:22,000 --> 00:16:24,000 A hefyd, nid wyf yn gwybod os ydych yn guys cofiwch, 271 00:16:24,000 --> 00:16:29,000 ond mae llawer o weithiau rydym hefyd yn defnyddio-lcs50 neu-lm. 272 00:16:29,000 --> 00:16:31,000 Sy'n cael ei alw'n cysylltu. 273 00:16:31,000 --> 00:16:35,000 'I jyst yn dweud wrth y compiler y byddwch yn defnyddio'r llyfrgelloedd hynny iawn yno, 274 00:16:35,000 --> 00:16:39,000 felly os ydych am ddefnyddio cs50.h chi mewn gwirionedd yn rhaid i chi deipio 275 00:16:39,000 --> 00:16:43,000 clang program.c-lcs50. 276 00:16:43,000 --> 00:16:45,000 Os nad ydych yn gwneud hynny, nid yw'r casglwr yn mynd i wybod 277 00:16:45,000 --> 00:16:50,000 eich bod yn defnyddio swyddogaethau hynny yn cs50.h. 278 00:16:50,000 --> 00:16:52,000 A phan ydych am redeg eich rhaglen mae gennych 2 ddewis. 279 00:16:52,000 --> 00:16:57,000 Os gwnaethoch chi program.c clang na wnaethoch chi roi enw i'ch rhaglen. 280 00:16:57,000 --> 00:17:01,000 Mae'n rhaid i chi redeg gan ddefnyddio. / A.out. 281 00:17:01,000 --> 00:17:06,000 A.out yn enw safonol sy'n clang yn rhoi eich rhaglen os nad ydych yn rhoi enw iddo. 282 00:17:06,000 --> 00:17:11,000 Fel arall, ydych chi'n mynd i wneud. / Rhaglen os ydych yn rhoi enw i'ch rhaglen, 283 00:17:11,000 --> 00:17:15,000 a hefyd os gwnaethoch wneud rhaglen yr enw y rhaglen yn mynd i gael 284 00:17:15,000 --> 00:17:23,000 eisoes yn mynd i gael ei raglennu un enw gan fod y ffeil c. 285 00:17:23,000 --> 00:17:26,000 Yna buom yn siarad am fathau o ddata a data. 286 00:17:26,000 --> 00:17:31,000 >> Yn y bôn fathau o ddata yn yr un peth â blychau bach maent yn eu defnyddio 287 00:17:31,000 --> 00:17:35,000 i storio werthoedd, felly mathau o ddata mewn gwirionedd yn union fel Pokémons. 288 00:17:35,000 --> 00:17:39,000 Maent yn dod mewn bob maint a math. 289 00:17:39,000 --> 00:17:43,000 Nid wyf yn gwybod os yw'r gyfatebiaeth yn gwneud synnwyr. 290 00:17:43,000 --> 00:17:46,000 Mae maint data mewn gwirionedd yn dibynnu ar y bensaernïaeth peiriant. 291 00:17:46,000 --> 00:17:49,000 Mae'r holl ddata maint fy mod i'n mynd i ddangos yma 292 00:17:49,000 --> 00:17:53,000 mewn gwirionedd ar gyfer peiriant 32-bit, sef achos ein cyfarpar, 293 00:17:53,000 --> 00:17:56,000 ond os ydych mewn gwirionedd yn codio eich Mac neu mewn Ffenestri hefyd 294 00:17:56,000 --> 00:17:59,000 na thebyg yn mynd i gael peiriant 64-bit, 295 00:17:59,000 --> 00:18:03,000 felly cofiwch bod maint y data fy mod i'n mynd i ddangos yma 296 00:18:03,000 --> 00:18:06,000 ar gyfer y peiriant 32-bit. 297 00:18:06,000 --> 00:18:08,000 Mae'r un cyntaf a welsom yn int, 298 00:18:08,000 --> 00:18:10,000 sydd yn eithaf syml. 299 00:18:10,000 --> 00:18:13,000 Byddwch yn defnyddio int i storio yn gyfanrif. 300 00:18:13,000 --> 00:18:16,000 Rydym hefyd yn gweld y cymeriad, y torgoch. 301 00:18:16,000 --> 00:18:20,000 Os ydych am ddefnyddio llythyr neu symbol ychydig mae'n debyg eich bod yn mynd i ddefnyddio golosg. 302 00:18:20,000 --> 00:18:26,000 Mae torgoch wedi 1 beit, sy'n golygu 8 did, fel Lexi meddai. 303 00:18:26,000 --> 00:18:31,000 Yn y bôn mae gennym Tabl ASCII sydd 256 304 00:18:31,000 --> 00:18:34,000 gyfuniadau posibl o 0au ac 1, 305 00:18:34,000 --> 00:18:37,000 ac yna pan fyddwch yn teipio golosg mae'n mynd i gyfieithu 306 00:18:37,000 --> 00:18:44,000 cymeriad bod mewnbynnau i chi nifer sydd gennych yn y tabl ASCII, fel Lexi meddai. 307 00:18:44,000 --> 00:18:48,000 Mae gennym hefyd y fflôt, yr ydym yn ei ddefnyddio i storio rhifau degol. 308 00:18:48,000 --> 00:18:53,000 Os ydych am ddewis 3.14, er enghraifft, rydych yn mynd i ddefnyddio fflôt 309 00:18:53,000 --> 00:18:55,000 neu ddwbl sydd â mwy o fanylder. 310 00:18:55,000 --> 00:18:57,000 Mae arnofio Mae 4 bytes. 311 00:18:57,000 --> 00:19:01,000 Mae dwbl wedi 8 bytes, felly yr unig wahaniaeth yw y manylder. 312 00:19:01,000 --> 00:19:04,000 Mae gennym hefyd hir sy'n cael ei ddefnyddio ar gyfer cyfanrifau, 313 00:19:04,000 --> 00:19:09,000 a gallwch weld am beiriant 32-bit yn int a hir yn cael yr un faint, 314 00:19:09,000 --> 00:19:13,000 felly nid yw'n wir yn gwneud synnwyr i ddefnyddio hir mewn peiriant 32-bit. 315 00:19:13,000 --> 00:19:17,000 >> Ond os ydych yn defnyddio peiriant Mac a 64-bit, mewn gwirionedd hir o faint 8, 316 00:19:17,000 --> 00:19:19,000 felly mae'n dibynnu ar y bensaernïaeth. 317 00:19:19,000 --> 00:19:22,000 Ar gyfer y peiriant 32-bit nid yw'n gwneud synnwyr i ddefnyddio hir iawn. 318 00:19:22,000 --> 00:19:25,000 Ac yna hir hir, ar y llaw arall, mae 8 bytes, 319 00:19:25,000 --> 00:19:30,000 felly mae'n dda iawn os ydych chi am gael cyfanrif hirach. 320 00:19:30,000 --> 00:19:34,000 Ac yn olaf, mae gennym llinyn, sydd mewn gwirionedd yn * torgoch, 321 00:19:34,000 --> 00:19:37,000 sy'n rhoi syniad i torgoch. 322 00:19:37,000 --> 00:19:40,000 Mae'n hawdd iawn i feddwl bod y maint y llinyn yn mynd i fod fel 323 00:19:40,000 --> 00:19:42,000 y nifer o gymeriadau sydd gennych yno, 324 00:19:42,000 --> 00:19:45,000 ond mewn gwirionedd yn y torgoch * ei hun 325 00:19:45,000 --> 00:19:49,000 Mae maint y pwyntydd i torgoch, sef 4 bytes. 326 00:19:49,000 --> 00:19:52,000 Mae maint * torgoch yw 4 bytes. 327 00:19:52,000 --> 00:19:56,000 Nid oes ots os oes gennych air bach neu lythyr neu unrhyw beth. 328 00:19:56,000 --> 00:19:58,000 Mae'n mynd i fod yn 4 bytes. 329 00:19:58,000 --> 00:20:01,000 Rydym hefyd wedi dysgu ychydig am castio, 330 00:20:01,000 --> 00:20:04,000 fel y gallwch weld, os oes gennych, er enghraifft, rhaglen sy'n dweud 331 00:20:04,000 --> 00:20:08,000 int x = 3 ac wedyn printf ("% d", x / 2) 332 00:20:08,000 --> 00:20:12,000 ydych chi'n guys yn gwybod beth mae'n mynd i argraffu ar y sgrin? 333 00:20:12,000 --> 00:20:14,000 >> Rywun? >> [Myfyrwyr] 2. 334 00:20:14,000 --> 00:20:16,000 1. >> 1, yeah. 335 00:20:16,000 --> 00:20:20,000 Pan fyddwch yn gwneud 3/2 ei fod yn mynd i gael 1.5, 336 00:20:20,000 --> 00:20:24,000 ond gan ein bod yn defnyddio cyfanrif mae'n mynd i anwybyddu y rhan degol, 337 00:20:24,000 --> 00:20:26,000 a ydych yn mynd i gael 1. 338 00:20:26,000 --> 00:20:29,000 Os nad ydych am i hynny ddigwydd beth allwch chi ei wneud, er enghraifft, 339 00:20:29,000 --> 00:20:33,000 yn datgan fflôt y = x. 340 00:20:33,000 --> 00:20:40,000 Yna x a arferai fod yn 3 yn awr yn mynd i fod yn 3.000 yn y. 341 00:20:40,000 --> 00:20:44,000 Ac yna gallwch argraffu'r y / 2. 342 00:20:44,000 --> 00:20:50,000 A dweud y gwir, dylai gen i 2. dros yno. 343 00:20:50,000 --> 00:20:55,000 Mae'n mynd i wneud 3.00/2.00, 344 00:20:55,000 --> 00:20:58,000 a ydych yn mynd i gael 1.5. 345 00:20:58,000 --> 00:21:06,000 Ac mae gennym y f 0.2 yn unig i ofyn am 2 uned degol yn y rhan degol. 346 00:21:06,000 --> 00:21:12,000 Os oes gennych 0.3 f mae'n mynd i gael mewn gwirionedd 1.500. 347 00:21:12,000 --> 00:21:16,000 Os yw'n 2, mynd i fod yn 1.50. 348 00:21:16,000 --> 00:21:18,000 Mae gennym hefyd yr achos hwn yma. 349 00:21:18,000 --> 00:21:22,000 Os ydych yn arnofio x = 3.14 a yna x printf 350 00:21:22,000 --> 00:21:24,000 ydych chi'n mynd i gael 3.14. 351 00:21:24,000 --> 00:21:29,000 Ac os ydych yn ei wneud x = y int o x, 352 00:21:29,000 --> 00:21:34,000 sy'n golygu trin x fel int ac y byddwch yn argraffu x nawr 353 00:21:34,000 --> 00:21:36,000 ydych chi'n mynd i gael 3.00. 354 00:21:36,000 --> 00:21:38,000 Ydy hynny'n gwneud synnwyr? 355 00:21:38,000 --> 00:21:41,000 Oherwydd eich bod yn trin x 1 fel cyfanrif, felly rydych yn anwybyddu'r rhan degol, 356 00:21:41,000 --> 00:21:45,000 ac yna rydych chi'n argraffu x. 357 00:21:45,000 --> 00:21:47,000 Ac yn olaf, gallwch hefyd wneud hyn, 358 00:21:47,000 --> 00:21:52,000 int x = 65, ac yna byddwch yn datgan golosg c = x, 359 00:21:52,000 --> 00:21:56,000 ac yna os ydych yn argraffu'r c rydych chi mewn gwirionedd yn mynd i gael 360 00:21:56,000 --> 00:21:59,000 A, felly yn y bôn yr hyn rydych chi'n ei wneud yma 361 00:21:59,000 --> 00:22:02,000 yn cyfieithu'r cyfanrif i gymeriad, 362 00:22:02,000 --> 00:22:05,000 yn union fel y Tabl ASCII yn ei wneud. 363 00:22:05,000 --> 00:22:08,000 Buom hefyd yn siarad am weithredwyr mathemateg. 364 00:22:08,000 --> 00:22:14,000 Mae'r rhan fwyaf ohonynt yn eithaf syml, felly +, -, *, /, 365 00:22:14,000 --> 00:22:20,000 a hefyd buom yn siarad am mod, sef y gweddill o is-adran o 2 rif. 366 00:22:20,000 --> 00:22:23,000 Os oes gennych 10% 3, er enghraifft, 367 00:22:23,000 --> 00:22:27,000 mae'n golygu rhannu 10 gan 3, a beth yw'r gweddill? 368 00:22:27,000 --> 00:22:30,000 Mae'n mynd i fod yn 1, felly mae'n mewn gwirionedd yn ddefnyddiol iawn ar gyfer llawer o'r rhaglenni. 369 00:22:30,000 --> 00:22:38,000 Am Vigenère a Cesar Rwy'n eithaf siwr bod pob un ohonoch guys defnyddio mod. 370 00:22:38,000 --> 00:22:43,000 Ynglŷn â gweithredwyr mathemateg, fod yn ofalus iawn wrth gyfuno * a /. 371 00:22:43,000 --> 00:22:48,000 >> Er enghraifft, os ydych yn gwneud (3/2) * 2 beth ydych chi'n mynd i gael? 372 00:22:48,000 --> 00:22:50,000 [Mae myfyrwyr yn] 2. 373 00:22:50,000 --> 00:22:54,000 Yeah, 2, bod 3/2 yn mynd i fod yn 1.5, 374 00:22:54,000 --> 00:22:57,000 ond ers i chi yn ei wneud gweithrediadau rhwng 2 gyfanrifau 375 00:22:57,000 --> 00:22:59,000 rydych chi mewn gwirionedd dim ond yn mynd i ystyried 1, 376 00:22:59,000 --> 00:23:03,000 ac yna 1 * 2 yn mynd i fod yn 2, felly byddwch yn iawn, yn ofalus iawn 377 00:23:03,000 --> 00:23:07,000 wrth wneud rhifyddeg gyda chyfanrifau oherwydd 378 00:23:07,000 --> 00:23:12,000 efallai y byddwch yn cael y 2 = 3, yn yr achos hwnnw. 379 00:23:12,000 --> 00:23:14,000 A hefyd fod yn ofalus iawn ynglŷn â blaenoriaeth. 380 00:23:14,000 --> 00:23:21,000 Dylech fel arfer yn defnyddio cromfachau i fod yn sicr eich bod yn gwybod beth rydych chi'n ei wneud. 381 00:23:21,000 --> 00:23:27,000 Mae rhai llwybrau byr defnyddiol, wrth gwrs, mae un yn i + + neu i + = 1 382 00:23:27,000 --> 00:23:30,000 neu ddefnyddio + =. 383 00:23:30,000 --> 00:23:34,000 Dyna'r un peth â gwneud i = i + 1. 384 00:23:34,000 --> 00:23:39,000 Gallwch hefyd wneud i - neu i - = 1, 385 00:23:39,000 --> 00:23:42,000 sef yr un peth fel fi = i -1, 386 00:23:42,000 --> 00:23:46,000 rhywbeth yr ydych yn guys defnyddio llawer i mewn ar gyfer dolenni, o leiaf. 387 00:23:46,000 --> 00:23:52,000 Hefyd, ar gyfer *, os ydych yn defnyddio * = ac os ydych yn ei wneud, er enghraifft, 388 00:23:52,000 --> 00:23:57,000 i * = 2 yw'r un peth â dweud i = i * 2, 389 00:23:57,000 --> 00:23:59,000 ac mae'r un peth ar gyfer rhannu. 390 00:23:59,000 --> 00:24:08,000 Os ydych yn ei wneud i / = 2 'i' yr un peth fel fi = i / 2. 391 00:24:08,000 --> 00:24:10,000 >> Nawr am swyddogaethau. 392 00:24:10,000 --> 00:24:13,000 Rydych guys dysgu bod swyddogaethau yn strategaeth dda iawn i arbed cod 393 00:24:13,000 --> 00:24:16,000 tra byddwch chi'n rhaglennu, felly os ydych am i berfformio'r un dasg 394 00:24:16,000 --> 00:24:20,000 mewn cod unwaith eto ac eto, mae'n debyg y byddwch am ddefnyddio swyddogaeth 395 00:24:20,000 --> 00:24:25,000 yn unig fel nad oes rhaid i chi gopïo a gludo y cod drosodd a throsodd. 396 00:24:25,000 --> 00:24:28,000 A dweud y gwir, prif swyddogaeth, a phan fyddaf yn dangos i chi y fformat swyddogaeth 397 00:24:28,000 --> 00:24:32,000 rydych chi'n mynd i weld fod hynny'n eithaf amlwg. 398 00:24:32,000 --> 00:24:35,000 Rydym hefyd yn defnyddio swyddogaethau o rai llyfrgelloedd, 399 00:24:35,000 --> 00:24:39,000 er enghraifft, printf, GetIn, sydd o'r llyfrgell CS50, 400 00:24:39,000 --> 00:24:43,000 a swyddogaethau eraill fel toupper. 401 00:24:43,000 --> 00:24:46,000 Mae pob un o'r swyddogaethau hynny yn cael eu rhoi ar waith mewn gwirionedd mewn llyfrgelloedd eraill, 402 00:24:46,000 --> 00:24:49,000 a phan fyddwch yn rhoi rhai ffeiliau tennyn yn dechrau eich rhaglen 403 00:24:49,000 --> 00:24:53,000 ydych yn dweud y gallwch chi os gwelwch yn dda roi i mi y cod ar gyfer y swyddogaethau hynny 404 00:24:53,000 --> 00:24:57,000 felly nid oes gennyf i'w gweithredu gan fy hun? 405 00:24:57,000 --> 00:25:00,000 A allwch chi hefyd ysgrifennu eich swyddogaethau eich hun, felly pan fyddwch yn dechrau rhaglennu 406 00:25:00,000 --> 00:25:04,000 byddwch yn sylweddoli nad yw llyfrgelloedd yn cael yr holl swyddogaethau sydd eu hangen arnoch. 407 00:25:04,000 --> 00:25:10,000 Ar gyfer y pset diwethaf, er enghraifft, fe wnaethom ysgrifennu tynnu, sgrialu, ac yn am-edrych, 408 00:25:10,000 --> 00:25:13,000 ac mae'n bwysig iawn, iawn i allu ysgrifennu swyddogaethau 409 00:25:13,000 --> 00:25:17,000 oherwydd eu bod yn ddefnyddiol, ac rydym yn eu defnyddio drwy'r amser o ran rhaglenni, 410 00:25:17,000 --> 00:25:19,000 ac fe fydd yn arbed llawer o god. 411 00:25:19,000 --> 00:25:21,000 Mae fformat y swyddogaeth yn yr un yma. 412 00:25:21,000 --> 00:25:24,000 Rydym wedi math dychwelyd yn y dechrau. Beth yw'r math dychwelyd? 413 00:25:24,000 --> 00:25:27,000 Dim ond pan fydd eich swyddogaeth yn mynd i ddychwelyd. 414 00:25:27,000 --> 00:25:29,000 Os oes gennych chi swyddogaeth, er enghraifft, ffactoraidd, 415 00:25:29,000 --> 00:25:31,000 sy'n mynd i gyfrifo ffactoraidd o'r cyfanrif, 416 00:25:31,000 --> 00:25:34,000 yn ôl pob tebyg mae'n mynd i ddychwelyd yn gyfanrif hefyd. 417 00:25:34,000 --> 00:25:37,000 Yna y math dychwelyd yn mynd i fod yn int. 418 00:25:37,000 --> 00:25:41,000 Printf mewn gwirionedd wedi dychwelyd eiddo gwag fath 419 00:25:41,000 --> 00:25:43,000 oherwydd nad ydych yn dychwelyd unrhyw beth. 420 00:25:43,000 --> 00:25:45,000 Rydych yn unig argraffu pethau i'r sgrin 421 00:25:45,000 --> 00:25:48,000 a rhoi'r gorau iddi swyddogaeth wedyn. 422 00:25:48,000 --> 00:25:51,000 Yna, mae gennych yr enw y swyddogaeth y gallwch ddewis. 423 00:25:51,000 --> 00:25:55,000 Dylech fod ychydig yn rhesymol, nid fel yn dewis enw fel xyz 424 00:25:55,000 --> 00:25:58,000 neu fel x2f. 425 00:25:58,000 --> 00:26:02,000 Ceisiwch i ffurfio enw sy'n gwneud synnwyr. 426 00:26:02,000 --> 00:26:04,000 >> Er enghraifft, os yw'n ffactoraidd, yn dweud ffactoraidd. 427 00:26:04,000 --> 00:26:08,000 Os yw'n swyddogaeth sydd yn mynd i dynnu rhywbeth, ei enwi tynnu. 428 00:26:08,000 --> 00:26:11,000 Ac yna mae gennym y paramedrau, a elwir hefyd yn dadleuon, 429 00:26:11,000 --> 00:26:14,000 sy'n edrych fel yr adnoddau y mae eich swyddogaeth anghenion 430 00:26:14,000 --> 00:26:17,000 oddi wrth eich cod i gyflawni ei dasg. 431 00:26:17,000 --> 00:26:20,000 Os ydych am gyfrifo ffactoraidd nifer 432 00:26:20,000 --> 00:26:23,000 yn ôl pob tebyg bydd angen i chi gael rhif i gyfrifo ffactoraidd. 433 00:26:23,000 --> 00:26:27,000 Un o'r dadleuon yr ydych chi'n mynd i gael yw'r rhif ei hun. 434 00:26:27,000 --> 00:26:31,000 Ac yna mae'n mynd i wneud rhywbeth a dychwelyd y gwerth ar y diwedd 435 00:26:31,000 --> 00:26:35,000 oni bai ei fod yn swyddogaeth ddi-rym. 436 00:26:35,000 --> 00:26:37,000 Gadewch i ni weld enghraifft. 437 00:26:37,000 --> 00:26:40,000 Os ydw i eisiau ysgrifennu swyddogaeth sy'n crynhoi'r holl rifau mewn amrywiaeth o gyfanrifau, 438 00:26:40,000 --> 00:26:43,000 yn gyntaf oll, y math dychwelyd yn mynd i fod yn int 439 00:26:43,000 --> 00:26:46,000 oherwydd bod gen i amrywiaeth o gyfanrifau. 440 00:26:46,000 --> 00:26:51,000 Ac yna dwi'n mynd i gael yr enw swyddogaeth fel sumArray, 441 00:26:51,000 --> 00:26:54,000 ac yna mae'n mynd i gymryd y casgliad ei hun, i nums int, 442 00:26:54,000 --> 00:26:58,000 ac yna ar hyd y rhesi, felly rwy'n gwybod faint o rifau rhaid i mi grynhoi. 443 00:26:58,000 --> 00:27:02,000 Yna rhaid i mi gychwyn y swm amrywiol o'r enw, er enghraifft, i 0, 444 00:27:02,000 --> 00:27:08,000 a phob tro rwy'n gweld elfen yn yr amrywiaeth dylwn ei ychwanegu at swm, felly wnes i am ddolen. 445 00:27:08,000 --> 00:27:15,000 Yn union fel Lexi dywedasoch, yr ydych yn ei wneud i int = 0, hyd 00:27:20,000 Ac ar gyfer pob elfen yn yr amrywiaeth wnes swm + = nums [i], 447 00:27:20,000 --> 00:27:24,000 ac yna rwy'n dychwelyd y swm, felly mae'n syml iawn, ac fe fydd yn arbed llawer o god 448 00:27:24,000 --> 00:27:28,000 os ydych yn defnyddio swyddogaeth hon lawer o weithiau. 449 00:27:28,000 --> 00:27:32,000 Yna, rydym yn cymryd golwg ar amodau. 450 00:27:32,000 --> 00:27:38,000 Mae gennym os, arall, ac arall os. 451 00:27:38,000 --> 00:27:42,000 Gadewch i ni weld beth yw'r gwahaniaeth rhwng y rhai. 452 00:27:42,000 --> 00:27:45,000 Cymerwch olwg ar y 2 codau. Beth yw'r gwahaniaeth rhyngddynt? 453 00:27:45,000 --> 00:27:49,000 Mae'r un cyntaf wedi-y bôn y codau am i chi ddweud 454 00:27:49,000 --> 00:27:51,000 os bydd nifer yn +, -, neu 0. 455 00:27:51,000 --> 00:27:55,000 Mae'r un cyntaf yn dweud os yw'n> 0, yna mae'n gadarnhaol. 456 00:27:55,000 --> 00:28:00,000 Os yw'n = i 0 yna mae'n 0, ac os yw'n <0, yna mae'n negyddol. 457 00:28:00,000 --> 00:28:04,000 >> Ac mae'r un arall yn ei wneud os, arall os, arall. 458 00:28:04,000 --> 00:28:07,000 Y gwahaniaeth rhwng y ddau yw bod yr un mewn gwirionedd yn mynd i 459 00:28:07,000 --> 00:28:13,000 gadarnhau a oes> 0, <0 = 0 neu dair gwaith, 460 00:28:13,000 --> 00:28:17,000 felly os oes gennych y rhif 2, er enghraifft, mae'n mynd i ddod yma a dweud 461 00:28:17,000 --> 00:28:21,000 os yw (x> 0), ac mae'n mynd i ddweud ie, felly rwy'n argraffu gadarnhaol. 462 00:28:21,000 --> 00:28:25,000 Ond hyd yn oed er fy mod yn gwybod ei fod yn> 0 ac nid yw'n mynd i fod yn 0 neu <0 463 00:28:25,000 --> 00:28:29,000 Rwy'n dal yn mynd i wneud yw 0, a yw'n <0, 464 00:28:29,000 --> 00:28:33,000 felly rwy'n wir yn mynd y tu mewn o ifs nad oedd rhaid i mi 465 00:28:33,000 --> 00:28:38,000 oherwydd yr oeddwn eisoes yn gwybod nad yw'n mynd i fodloni unrhyw un o'r amodau hyn. 466 00:28:38,000 --> 00:28:41,000 Gallaf ddefnyddio'r os, arall os, arall datganiad. 467 00:28:41,000 --> 00:28:45,000 Mae yn y bôn yn dweud os x = 0 I argraffu'r cadarnhaol. 468 00:28:45,000 --> 00:28:48,000 Os nad yw'n, dw i'n mynd i hefyd yn profi hyn. 469 00:28:48,000 --> 00:28:51,000 Os yw'n 2 Nid wyf i'n mynd i wneud hyn. 470 00:28:51,000 --> 00:28:54,000 Yn y bôn os wyf wedi x = 2 fyddech chi'n ei ddweud 471 00:28:54,000 --> 00:28:57,000 os yw (x> 0), ie, felly argraffu hwn. 472 00:28:57,000 --> 00:29:00,000 Nawr fy mod yn gwybod ei fod yn> 0 a'i fod yn fodlon y gyntaf os 473 00:29:00,000 --> 00:29:02,000 Dydw i ddim hyd yn oed yn mynd i redeg y cod hwn. 474 00:29:02,000 --> 00:29:09,000 Mae'r cod yn rhedeg yn gyflymach, mewn gwirionedd, 3 gwaith yn gyflymach os ydych yn defnyddio hyn. 475 00:29:09,000 --> 00:29:11,000 Rydym hefyd yn dysgu am ac a neu. 476 00:29:11,000 --> 00:29:15,000 Dydw i ddim yn mynd i fynd drwy hyn oherwydd Lexi eisoes yn siarad amdanyn nhw. 477 00:29:15,000 --> 00:29:17,000 Dim ond y && a | | gweithredwr. 478 00:29:17,000 --> 00:29:21,000 >> Yr unig beth 'n annhymerus' ddweud yw fod yn ofalus pan mae gennych 3 amodau. 479 00:29:21,000 --> 00:29:24,000 Defnyddiwch cromfachau oherwydd ei fod yn ddryslyd iawn pan fydd gennych gyflwr 480 00:29:24,000 --> 00:29:27,000 ac un arall neu un arall. 481 00:29:27,000 --> 00:29:30,000 Defnyddio cromfachau yn unig i fod yn sicr bod eich amodau yn gwneud synnwyr 482 00:29:30,000 --> 00:29:34,000 oherwydd yn yr achos hwnnw, er enghraifft, gallwch ddychmygu bod 483 00:29:34,000 --> 00:29:38,000 gallai fod yn amod cyntaf ac un neu'r llall 484 00:29:38,000 --> 00:29:41,000 neu y 2 amodau cyfuno mewn ac 485 00:29:41,000 --> 00:29:45,000 neu y trydydd, felly dim ond byddwch yn ofalus. 486 00:29:45,000 --> 00:29:48,000 Ac yn olaf, buom yn siarad am switshis. 487 00:29:48,000 --> 00:29:53,000 Mae newid yn ddefnyddiol iawn pan fydd gennych newidyn. 488 00:29:53,000 --> 00:29:55,000 Lets 'ddeud bod gennych newidyn fel n 489 00:29:55,000 --> 00:29:59,000 Gall fod yn 0, 1, neu 2, ac ar gyfer pob un o'r achosion hynny 490 00:29:59,000 --> 00:30:01,000 ydych yn mynd i berfformio tasg. 491 00:30:01,000 --> 00:30:04,000 Gallwch ddweud newid y newidyn, ac mae'n nodi bod 492 00:30:04,000 --> 00:30:08,000 y gwerth yna yn debyg value1 Rydw i'n mynd i wneud hyn, 493 00:30:08,000 --> 00:30:12,000 ac yna byddaf yn torri, sy'n golygu Dydw i ddim yn mynd i edrych ar unrhyw un o'r achosion eraill 494 00:30:12,000 --> 00:30:15,000 oherwydd ein bod yn fodlon eisoes yr achos hwnnw 495 00:30:15,000 --> 00:30:20,000 ac yna value2 ac yn y blaen, ac yr wyf hefyd gael switsh diofyn. 496 00:30:20,000 --> 00:30:24,000 Mae hynny'n golygu os nad yw'n bodloni unrhyw un o'r achosion yr wyf wedi 497 00:30:24,000 --> 00:30:29,000 fy mod i'n mynd i wneud rhywbeth arall, ond mae hynny'n ddewisol. 498 00:30:29,000 --> 00:30:36,000 Dyna'r cyfan i mi. Nawr gadewch i ni gael Tommy. 499 00:30:36,000 --> 00:30:41,000 Mae pob hawl, mae hyn yn mynd i fod yn Wythnos 3-ish. 500 00:30:41,000 --> 00:30:45,000 Dyma rai o'r pynciau y byddwn yn eu cwmpasu, crypto, cwmpas, araeau, et cetera. 501 00:30:45,000 --> 00:30:49,000 Dim ond gair cyflym ar crypto. Nid ydym yn mynd i morthwyl y cartref hwn. 502 00:30:49,000 --> 00:30:52,000 >> Gwnaethom hyn yn pset 2, ond ar gyfer y cwis gwnewch yn siŵr eich bod yn gwybod y gwahaniaeth 503 00:30:52,000 --> 00:30:54,000 rhwng y cipher Cesar a cipher Vigenère, 504 00:30:54,000 --> 00:30:57,000 sut mae'r ddau o'r rhai a gwaith seifferau a beth mae'n ei olygu i amgryptio 505 00:30:57,000 --> 00:30:59,000 a dadgryptio testun gan ddefnyddio hynny 2 seifferau. 506 00:30:59,000 --> 00:31:03,000 Cofiwch, mae'r cipher Cesar yn syml yn cylchdroi bob cymeriad gan yr un swm, 507 00:31:03,000 --> 00:31:06,000 gwneud yn siŵr eich mod yn ôl y nifer o lythyrau yn yr wyddor. 508 00:31:06,000 --> 00:31:09,000 Ac mae'r cipher Vigenère, ar y llaw arall, troi pob cymeriad 509 00:31:09,000 --> 00:31:12,000 gan swm gwahanol, felly, yn hytrach na dweud 510 00:31:12,000 --> 00:31:15,000 bydd pob cymeriad gylchdroi gan 3 Vigenère cylchdroi pob cymeriad 511 00:31:15,000 --> 00:31:17,000 o swm gwahanol yn dibynnu ar rai keyword 512 00:31:17,000 --> 00:31:20,000 lle mae pob llythyren yn y gair allweddol yn cynrychioli rhai swm gwahanol 513 00:31:20,000 --> 00:31:26,000 i gylchdroi y testun glir gan. 514 00:31:26,000 --> 00:31:28,000 Gadewch i ni siarad gyntaf am gwmpas amrywiol. 515 00:31:28,000 --> 00:31:30,000 Mae 2 fath gwahanol o newidynnau. 516 00:31:30,000 --> 00:31:33,000 Mae gennym newidynnau lleol, ac mae'r rhain yn mynd i gael eu diffinio 517 00:31:33,000 --> 00:31:36,000 y tu allan i brif neu tu allan i unrhyw swyddogaeth neu floc, 518 00:31:36,000 --> 00:31:39,000 a bydd y rhain ar gael yn unrhyw le yn eich rhaglen. 519 00:31:39,000 --> 00:31:41,000 Os oes gennych chi swyddogaeth, ac yn y swyddogaeth honno yn ddolen tra 520 00:31:41,000 --> 00:31:44,000 y newidyn byd-eang mawr yn hygyrch ym mhob man. 521 00:31:44,000 --> 00:31:48,000 Mae newidyn lleol, ar y llaw arall, yn cwmpasu i'r man lle caiff ei ddiffinio. 522 00:31:48,000 --> 00:31:53,000 >> Os oes gennych chi swyddogaeth yma, er enghraifft, mae gennym y ffwythiant g, 523 00:31:53,000 --> 00:31:56,000 ac y tu mewn g mae yn newidyn yma a elwir yn y, 524 00:31:56,000 --> 00:31:58,000 ac mae hynny'n golygu bod hwn yn newidyn lleol. 525 00:31:58,000 --> 00:32:00,000 Er bod y newidyn hwn yw'r enw ar y 526 00:32:00,000 --> 00:32:03,000 ac mae'r newidyn gelwir y rhain 2 swyddogaethau 527 00:32:03,000 --> 00:32:06,000 oes ganddynt unrhyw syniad beth mae pob eraill newidynnau lleol. 528 00:32:06,000 --> 00:32:10,000 Ar y llaw arall, hyd yma yr ydym yn dweud int x = 5, 529 00:32:10,000 --> 00:32:12,000 ac mae hyn y tu allan i gwmpas unrhyw swyddogaeth. 530 00:32:12,000 --> 00:32:16,000 Mae'n tu allan i gwmpas prif, felly mae hwn yn newidyn byd-eang. 531 00:32:16,000 --> 00:32:20,000 Mae hynny'n golygu bod tu mewn y 2 swyddogaethau pan fyddaf yn dweud x - x + neu + 532 00:32:20,000 --> 00:32:26,000 Rwy'n defnyddio'r un x lle hwn, ac mae hyn y mae y newidynnau gwahanol. 533 00:32:26,000 --> 00:32:30,000 Dyna'r gwahaniaeth rhwng newidyn byd-eang a newidyn lleol. 534 00:32:30,000 --> 00:32:33,000 Cyn belled ag y dylunio yn y cwestiwn, weithiau mae'n fwy na thebyg yn syniad gwell 535 00:32:33,000 --> 00:32:37,000 i gadw newidynnau lleol pryd bynnag y gallwch 536 00:32:37,000 --> 00:32:39,000 ers cael y gall criw o newidynnau byd-eang ca 'n sylweddol ddryslyd. 537 00:32:39,000 --> 00:32:42,000 Os oes gennych criw o holl swyddogaethau addasu yr un peth 538 00:32:42,000 --> 00:32:45,000 efallai y byddwch yn anghofio beth os swyddogaeth hon yn ddamweiniol yn addasu hyn yn fyd-eang, 539 00:32:45,000 --> 00:32:47,000 ac nid yw'r swyddogaeth arall yn gwybod am y peth, 540 00:32:47,000 --> 00:32:50,000 a yw'n mynd yn eithaf ddryslyd wrth i chi fynd cod mwy. 541 00:32:50,000 --> 00:32:53,000 Cadw newidynnau lleol pryd bynnag y gallwch 542 00:32:53,000 --> 00:32:56,000 yw dylunio yn unig yn dda. 543 00:32:56,000 --> 00:33:00,000 Araeau, cofiwch, yn syml, yn rhestrau o elfennau o'r un math. 544 00:33:00,000 --> 00:33:04,000 Ni all y tu mewn o CI restr fel 1, 2.0, helo. 545 00:33:04,000 --> 00:33:06,000 Rydym nid yn unig all wneud hynny. 546 00:33:06,000 --> 00:33:11,000 >> Pan fyddwn yn datgan amrywiaeth yn C pob un o'r elfennau yn rhaid i fod o'r un math. 547 00:33:11,000 --> 00:33:14,000 Mae gen i amrywiaeth o 3 gyfanrifau. 548 00:33:14,000 --> 00:33:18,000 Mae gen i hyd y rhesi, ond os Im 'jyst yn datgan fel hyn cystrawen 549 00:33:18,000 --> 00:33:21,000 lle yr wyf yn nodi beth y mae'r holl elfennau yn Nid wyf yn dechnegol angen hyn 3. 550 00:33:21,000 --> 00:33:25,000 Mae'r compiler yn smart ddigon i chyfrif i maes pa mor fawr y dylai'r casgliad fod. 551 00:33:25,000 --> 00:33:28,000 Nawr pan fyddaf yn awyddus i gael neu osod y gwerth amrywiaeth 552 00:33:28,000 --> 00:33:30,000 dyma'r chystrawen i wneud hynny. 553 00:33:30,000 --> 00:33:33,000 Bydd hyn mewn gwirionedd yn addasu ail elfen y rhesi oherwydd, cofiwch, 554 00:33:33,000 --> 00:33:36,000 rhifo yn dechrau ar 0, nid yn 1. 555 00:33:36,000 --> 00:33:42,000 Os ydw i eisiau darllen y gwerth gallaf ddweud rhywbeth fel int x = array [1]. 556 00:33:42,000 --> 00:33:44,000 Neu os ydw i eisiau i osod y gwerth, fel yr wyf i'n ei wneud yma, 557 00:33:44,000 --> 00:33:47,000 Gallaf ddweud array [1] = 4. 558 00:33:47,000 --> 00:33:50,000 Yr adeg honno gael mynediad elfennau gan eu mynegai 559 00:33:50,000 --> 00:33:52,000 neu eu safle neu lle y maent yn y array, 560 00:33:52,000 --> 00:33:57,000 a bod y rhestr yn dechrau ar 0. 561 00:33:57,000 --> 00:34:00,000 Gallwn hefyd araeau o araeau, 562 00:34:00,000 --> 00:34:03,000 ac mae hyn yn cael ei alw'n amrywiaeth aml-ddimensiwn. 563 00:34:03,000 --> 00:34:05,000 Pan fydd gennym amrywiaeth aml-ddimensiwn 564 00:34:05,000 --> 00:34:07,000 sy'n golygu y gallwn gael rhywbeth fel rhesi a cholofnau, 565 00:34:07,000 --> 00:34:11,000 ac mae hyn yn un ffordd o ddelweddu hyn neu meddwl am y peth. 566 00:34:11,000 --> 00:34:14,000 Pan fyddaf yn cael amrywiaeth aml-ddimensiwn sy'n golygu fy mod i'n mynd i ddechrau angen 567 00:34:14,000 --> 00:34:17,000 mwy nag 1 mynegai oherwydd os oes gen i grid 568 00:34:17,000 --> 00:34:19,000 Nid dweud yr hyn rhes ydych mewn yn rhoi i ni yn rhif. 569 00:34:19,000 --> 00:34:22,000 Mae hynny'n wir ond yn mynd i roi i ni restr o rifau. 570 00:34:22,000 --> 00:34:25,000 Lets 'ddeud gennyf y casgliad yma. 571 00:34:25,000 --> 00:34:30,000 Mae gen i amrywiaeth o'r enw grid, ac i ddim yn dweud ei fod yn 2 res a 3 colofn, 572 00:34:30,000 --> 00:34:32,000 ac felly mae hyn yn un ffordd o ddelweddu hynny. 573 00:34:32,000 --> 00:34:37,000 Pan fyddaf yn dweud fy mod am gael yr elfen yn [1] [2] 574 00:34:37,000 --> 00:34:41,000 mae hynny'n golygu fod y rhain yn rhesi yn gyntaf ac yna colofnau 575 00:34:41,000 --> 00:34:44,000 Rydw i'n mynd i neidio i rwyfo 1 ers y dywedais 1. 576 00:34:44,000 --> 00:34:49,000 >> Wedyn dw i'n mynd i ddod draw yma i golofn 2, ac yr wyf i'n mynd i gael y gwerth 6. 577 00:34:49,000 --> 00:34:51,000 Gwneud synnwyr? 578 00:34:51,000 --> 00:34:55,000 Aml-ddimensiwn arrays, cofiwch, yn dechnegol yn unig amrywiaeth o araeau. 579 00:34:55,000 --> 00:34:57,000 Gallwn gael araeau o araeau o araeau. 580 00:34:57,000 --> 00:35:00,000 Gallwn ddal ati, ond mewn gwirionedd un ffordd o feddwl am 581 00:35:00,000 --> 00:35:03,000 sut mae hyn yn cael ei osod allan a beth sy'n mynd ymlaen yw i ddychmygu ei 582 00:35:03,000 --> 00:35:09,000 mewn grid fel hyn. 583 00:35:09,000 --> 00:35:12,000 Pan fyddwn yn pasio araeau i swyddogaethau, maen nhw'n mynd i ymddwyn 584 00:35:12,000 --> 00:35:16,000 ychydig yn wahanol na pan fyddwn yn pasio newidynnau rheolaidd i swyddogaethau 585 00:35:16,000 --> 00:35:18,000 fel pasio int neu arnofio. 586 00:35:18,000 --> 00:35:21,000 Pan fyddwn yn pasio mewn mathau int neu cols neu unrhyw un o'r ddata arall 587 00:35:21,000 --> 00:35:24,000 rydym yn unig yn cymryd golwg arno os bydd y swyddogaeth yn addasu 588 00:35:24,000 --> 00:35:28,000 gwerth y newidyn nad yw newid yn mynd i ledaenu i fyny 589 00:35:28,000 --> 00:35:32,000 i'r swyddogaeth galw. 590 00:35:32,000 --> 00:35:35,000 Gyda amrywiaeth, ar y llaw arall, bydd hynny'n digwydd. 591 00:35:35,000 --> 00:35:39,000 Os byddaf yn pasio mewn amrywiaeth i rai swyddogaeth a swyddogaeth honno yn newid rhai o'r elfennau, 592 00:35:39,000 --> 00:35:43,000 pan fyddaf yn dod yn ôl i fyny at y swyddogaeth a oedd yn galw ei 593 00:35:43,000 --> 00:35:47,000 fy amrywiaeth yn awr yn mynd i fod yn wahanol, ac mae'r eirfa ar gyfer y 594 00:35:47,000 --> 00:35:50,000 yn araeau yn cael eu pasio drwy gyfeirio, fel y byddwn yn gweld yn nes ymlaen. 595 00:35:50,000 --> 00:35:53,000 Mae hyn yn ymwneud â sut awgrymiadau gwaith, lle y mathau hyn data sylfaenol, 596 00:35:53,000 --> 00:35:55,000 ar y llaw arall, yn cael eu pasio yn ôl gwerth. 597 00:35:55,000 --> 00:35:59,000 >> Gallwn feddwl am hynny â gwneud copi o rai amrywiol ac yna'n pasio yn y copi. 598 00:35:59,000 --> 00:36:01,000 Nid oes ots beth rydym yn ei wneud â'r amrywiol. 599 00:36:01,000 --> 00:36:06,000 Ni fydd y swyddogaeth galw fod yn ymwybodol ei fod yn newid. 600 00:36:06,000 --> 00:36:10,000 Araeau yn unig ychydig yn wahanol yn hynny o beth. 601 00:36:10,000 --> 00:36:13,000 Er enghraifft, wrth i ni jyst yn gweld, prif, yn syml, yn swyddogaeth 602 00:36:13,000 --> 00:36:15,000 sy'n gallu cymryd mewn 2 dadleuon. 603 00:36:15,000 --> 00:36:20,000 Mae'r ddadl cyntaf i'r brif swyddogaeth yw argc, neu nifer o ddadleuon, 604 00:36:20,000 --> 00:36:23,000 ac mae'r ail ddadl yn cael ei alw argv, 605 00:36:23,000 --> 00:36:27,000 a'r rhai yn y gwerthoedd gwirioneddol y dadleuon hynny. 606 00:36:27,000 --> 00:36:30,000 Lets 'ddeud gen i raglen o'r enw this.c, 607 00:36:30,000 --> 00:36:34,000 a dywedaf yn gwneud hyn, ac yr wyf i'n mynd i redeg hyn ar y llinell orchymyn. 608 00:36:34,000 --> 00:36:38,000 Nawr i basio mewn rhai dadleuon i fy rhaglen o'r enw hyn, 609 00:36:38,000 --> 00:36:42,000 Gallwn ddweud rhywbeth fel. / Mae hyn yn cs 50. 610 00:36:42,000 --> 00:36:45,000 Dyma'r hyn yr ydym ddychmygu David i wneud bob dydd yn y derfynfa. 611 00:36:45,000 --> 00:36:48,000 Ond yn awr y tu mewn prif swyddogaeth y rhaglen 612 00:36:48,000 --> 00:36:52,000 Mae gwerthoedd hyn, felly argc yw 4. 613 00:36:52,000 --> 00:36:56,000 Gallai fod yn ychydig yn ddryslyd oherwydd mewn gwirionedd rydym yn dim ond pasio i mewn yn cs 50. 614 00:36:56,000 --> 00:36:58,000 Dyna dim ond 3. 615 00:36:58,000 --> 00:37:02,000 Ond cofiwch fod yr elfen gyntaf argv neu'r ddadl 1 616 00:37:02,000 --> 00:37:05,000 yw enw'r y swyddogaeth ei hun. 617 00:37:05,000 --> 00:37:07,190 Felly mae hynny'n golygu bod gennym 4 o bethau yma, 618 00:37:07,190 --> 00:37:10,530 ac mae'r elfen gyntaf yn mynd i fod. / hyn. 619 00:37:10,530 --> 00:37:12,970 A bydd hyn yn cael ei gynrychioli fel llinyn. 620 00:37:12,970 --> 00:37:18,590 Yna yr elfennau sy'n weddill yn yr hyn rydym yn ei deipio i mewn ar ôl enw'r rhaglen. 621 00:37:18,590 --> 00:37:22,720 Felly, yn union fel neilltir, fel mae'n debyg ein bod yn gweld yn pset 2, 622 00:37:22,720 --> 00:37:28,780 cofio bod y llinyn yn 50 yn cael ei ≠ y 50 gyfanrif. 623 00:37:28,780 --> 00:37:32,520 Felly, ni allwn ddweud rhywbeth fel, 'int x = argv 3.' 624 00:37:32,520 --> 00:37:36,470 >> Na dim ond yn mynd i wneud synnwyr, oherwydd mae hyn yn llinyn, ac mae hyn yn gyfanrif. 625 00:37:36,470 --> 00:37:38,510 Felly, os ydych am newid rhwng y 2, cofiwch, rydym yn mynd i 626 00:37:38,510 --> 00:37:40,810 cael y swyddogaeth hud o'r enw atoi. 627 00:37:40,810 --> 00:37:46,270 Mae hynny'n mynd â llinyn ac yn dychwelyd y cyfanrif cynrychioli tu mewn y llinyn. 628 00:37:46,270 --> 00:37:48,360 Felly mae hynny'n gamgymeriad hawdd i'w gwneud ar y cwis, 629 00:37:48,360 --> 00:37:51,590 dim ond meddwl y bydd hyn yn awtomatig yn y math cywir. 630 00:37:51,590 --> 00:37:53,860 Ond dim ond yn gwybod y bydd y rhain bob amser yn llinynnau 631 00:37:53,860 --> 00:38:00,920 hyd yn oed os yw'r llinyn yn unig yn cynnwys cyfanrif neu gymeriad neu arnofio. 632 00:38:00,920 --> 00:38:03,380 Felly nawr gadewch i ni siarad am redeg amser. 633 00:38:03,380 --> 00:38:06,700 Pan fyddwn wedi cael yr holl algorithmau sy'n gwneud yr holl bethau hyn crazy, 634 00:38:06,700 --> 00:38:11,580 mae'n dod yn ddefnyddiol iawn i ofyn y cwestiwn, "Pa mor hir y maent yn ei gymryd?" 635 00:38:11,580 --> 00:38:15,500 Rydym yn cynrychioli bod â rhywbeth a elwir yn nodiant asymptotic. 636 00:38:15,500 --> 00:38:18,430 Felly, mae hyn yn golygu bod - yn dda, gadewch i ni ddweud ein bod yn rhoi ein algorithm 637 00:38:18,430 --> 00:38:20,840 rhywfaint o fewnbwn iawn, iawn, iawn fawr. 638 00:38:20,840 --> 00:38:23,840 Rydym yn awyddus i ofyn y cwestiwn, "Pa mor hir y mae'n mynd i gymryd? 639 00:38:23,840 --> 00:38:26,370 Faint o gamau a gymer ein algorithm i redeg 640 00:38:26,370 --> 00:38:29,980 fel swyddogaeth maint y mewnbwn? " 641 00:38:29,980 --> 00:38:33,080 Felly, y ffordd gyntaf y gallwn ddisgrifio amser yn rhedeg yw gyda mawr O. 642 00:38:33,080 --> 00:38:35,380 Ac mae hyn yn ein hamser rhedeg gwaethaf-achos. 643 00:38:35,380 --> 00:38:38,590 Felly, os ydym am i ddatrys amrywiaeth, ac rydym yn rhoi ein algorithm arae 644 00:38:38,590 --> 00:38:41,000 dyna mewn trefn ddisgynnol pan ddylai fod er mwyn esgynnol, 645 00:38:41,000 --> 00:38:43,130 mae hynny'n mynd i fod yn yr achos gwaethaf. 646 00:38:43,130 --> 00:38:49,800 Mae hyn yn ein rhwymo uchaf yn uchafswm hyd o amser y bydd ein algorithm cymryd. 647 00:38:49,800 --> 00:38:54,740 Ar y llaw arall, mae hyn yn Ω yn mynd i ddisgrifio orau-achos amser yn rhedeg. 648 00:38:54,740 --> 00:38:58,210 Felly, os ydym yn rhoi amrywiaeth didoli eisoes i algorithm didoli, 649 00:38:58,210 --> 00:39:00,940 Bydd faint o amser mae'n cymryd i ddatrys hyn? 650 00:39:00,940 --> 00:39:06,610 Ac mae hyn, yna, yn disgrifio is rhwymo ar amser rhedeg. 651 00:39:06,610 --> 00:39:10,980 Felly dyma rai yn unig o eiriau sy'n disgrifio rhai adegau cyffredin yn rhedeg. 652 00:39:10,980 --> 00:39:13,120 Mae'r rhain yn nhrefn esgynnol. 653 00:39:13,120 --> 00:39:16,060 Yr amser cyflymaf yn olynol, rydym wedi cael ei alw'n gyson. 654 00:39:16,060 --> 00:39:19,800 >> Mae hynny'n golygu dim ots faint o elfennau ydym yn rhoi ein algorithm, 655 00:39:19,800 --> 00:39:22,280 ni waeth pa mor fawr ein amrywiaeth yw, ei ddidoli 656 00:39:22,280 --> 00:39:26,510 neu wneud beth bynnag rydym yn ei wneud at y casgliad bob amser yn cymryd yr un faint o amser. 657 00:39:26,510 --> 00:39:30,270 Felly, gallwn gynrychioli mai dim ond gyda 1, sydd yn gyson. 658 00:39:30,270 --> 00:39:32,410 Rydym hefyd yn edrych ar amser yn rhedeg logarithmig. 659 00:39:32,410 --> 00:39:34,800 Felly, rhywbeth fel chwiliad deuaidd yn logarithmig, 660 00:39:34,800 --> 00:39:37,140 lle rydym yn torri'r broblem yn hanner bob tro 661 00:39:37,140 --> 00:39:40,970 ac yna bethau dim ond fynd yn uwch oddi yno. 662 00:39:40,970 --> 00:39:43,580 Ac os ydych chi'n erioed wedi ysgrifennu O o unrhyw algorithm ffactoraidd, 663 00:39:43,580 --> 00:39:47,850 i chi debyg na ddylai ystyried hyn fel eich gwaith bob dydd. 664 00:39:47,850 --> 00:39:53,910 Pan fyddwn yn cymharu amseroedd rhedeg ei bod yn bwysig cadw mewn cof y pethau hyn. 665 00:39:53,910 --> 00:39:57,760 Felly os oes gen i algorithm sy'n O (n), a rhywun arall 666 00:39:57,760 --> 00:40:03,590 wedi algorithm o O (2n) yw'r rhain mewn gwirionedd yn asymptotically cyfatebol. 667 00:40:03,590 --> 00:40:06,590 Felly, os ydym yn dychmygu n i fod yn rhif mawr fel eleventy biliwn: 668 00:40:06,590 --> 00:40:13,090 felly pan rydym yn cymharu eleventy biliwn i rywbeth fel eleventy biliwn + 3, 669 00:40:13,090 --> 00:40:17,640 yn sydyn nad yw 3 yn wir yn gwneud gwahaniaeth mawr anymore. 670 00:40:17,640 --> 00:40:20,980 Dyna pam rydym yn mynd i ddechrau ystyried y pethau hyn yn gyfwerth. 671 00:40:20,980 --> 00:40:24,220 Felly mae pethau fel hyn cysonion yma, mae 2 x hyn, neu ychwanegu 3, 672 00:40:24,220 --> 00:40:27,180 yn unig yw'r rhain cysonion, ac mae'r rhain yn mynd i ollwng i fyny. 673 00:40:27,180 --> 00:40:32,480 Felly dyna pam pob un o'r 3 rhedeg yr adegau hyn yr un fath ag yn dweud eu bod O (n). 674 00:40:32,480 --> 00:40:37,490 Yn yr un modd, os oes gennym 2 gwaith rhedeg eraill, gadewch i ni ddweud O (n ³ + 2n ²), gallwn ychwanegu 675 00:40:37,490 --> 00:40:42,070 + N, + 7, ac yna mae gennym amser arall rhedeg dyna'n union O (n ³). 676 00:40:42,070 --> 00:40:46,290 unwaith eto, mae'r rhain yr un peth gan fod y rhain - nid yw'r rhain yr un fath. 677 00:40:46,290 --> 00:40:49,840 Mae'r rhain yn yr un pethau, sori. Felly, mae'r rhain yn yr un fath oherwydd 678 00:40:49,840 --> 00:40:53,090 y ³ n yn mynd i dra-arglwyddiaethu y ² 2n. 679 00:40:53,090 --> 00:40:59,130 >> Beth yw'r un peth yw os ydym wedi cynnal adegau fel O (n ³) ac O (n ²) 680 00:40:59,130 --> 00:41:02,820 gan fod hyn yn ³ n yn llawer mwy na hyn ² n. 681 00:41:02,820 --> 00:41:05,470 Felly, os oes gennym ddehonglwyr, yn sydyn mae hyn yn dechrau i fod o bwys, 682 00:41:05,470 --> 00:41:08,280 ond pan rydym yn unig yn delio â ffactorau fel yr ydym yn i fyny yma, 683 00:41:08,280 --> 00:41:12,810 yna nid yw'n mynd i mater oherwydd eu bod yn jyst yn mynd i roi'r gorau iddi. 684 00:41:12,810 --> 00:41:16,760 Gadewch i ni edrych ar rai o'r algorithmau ydym wedi ei weld hyd yn hyn 685 00:41:16,760 --> 00:41:19,260 a siarad am eu hamser rhedeg. 686 00:41:19,260 --> 00:41:23,850 Y ffordd gyntaf o chwilio am nifer mewn rhestr, a welsom, roedd chwiliad llinol. 687 00:41:23,850 --> 00:41:26,950 A gweithredu chwiliad llinol yn hynod syml. 688 00:41:26,950 --> 00:41:30,490 Rydym yn unig wedi restr, ac rydym yn mynd i edrych ar bob elfen unigol yn y rhestr 689 00:41:30,490 --> 00:41:34,260 nes i ni ddod o hyd i'r nifer rydym yn chwilio amdano. 690 00:41:34,260 --> 00:41:38,370 Felly mae hynny'n golygu bod yn yr achos gwaethaf, mae hyn yn O (n). 691 00:41:38,370 --> 00:41:40,860 A gallai yr achos gwaethaf yma fod os yw'r elfen yn 692 00:41:40,860 --> 00:41:45,710 yr elfen olaf, yna defnyddio chwiliad llinol mae'n rhaid i ni edrych ar bob elfen unigol 693 00:41:45,710 --> 00:41:50,180 nes inni gyrraedd yr un diwethaf er mwyn gwybod ei fod mewn gwirionedd yn y rhestr. 694 00:41:50,180 --> 00:41:52,910 Ni allwn roi'r gorau i hanner ffordd ac yn dweud, "Nid yw'n debyg yno." 695 00:41:52,910 --> 00:41:55,980 Gyda chwiliad llinol mae'n rhaid i ni edrych ar yr holl beth. 696 00:41:55,980 --> 00:41:59,090 Mae'r amser yn rhedeg gorau-achos, ar y llaw arall, yn gyson 697 00:41:59,090 --> 00:42:04,200 oherwydd yn yr achos gorau yr elfen rydym yn chwilio am yn unig yr un cyntaf yn y rhestr. 698 00:42:04,200 --> 00:42:08,930 Felly mae'n mynd i fynd â ni yn union 1 cam, waeth pa mor fawr yw'r rhestr yn 699 00:42:08,930 --> 00:42:12,140 os ydym yn chwilio am yr elfen gyntaf bob tro. 700 00:42:12,140 --> 00:42:15,390 >> Felly, pan fyddwch yn chwilio, cofiwch, nid oes angen bod ein rhestr yn cael ei datrys. 701 00:42:15,390 --> 00:42:19,430 Oherwydd ein bod yn syml, yn mynd i edrych dros bob elfen unigol, ac nid oes llawer o bwys 702 00:42:19,430 --> 00:42:23,560 mha drefn yr elfennau hynny ynddo 703 00:42:23,560 --> 00:42:28,110 Mae algorithm chwilio mwy deallus yw rhywbeth fel chwiliad deuaidd. 704 00:42:28,110 --> 00:42:31,500 Cofiwch, mae gweithredu chwiliad deuaidd yw pan fyddwch yn mynd i 705 00:42:31,500 --> 00:42:34,320 ddal ati i edrych ar ganol y rhestr. 706 00:42:34,320 --> 00:42:38,000 Ac am ein bod yn edrych ar y canol, yr ydym yn mynnu bod y rhestr yn cael ei datrys 707 00:42:38,000 --> 00:42:40,580 neu fel arall nid ydym yn gwybod lle mae'r canol yn, ac mae'n rhaid i edrych dros 708 00:42:40,580 --> 00:42:44,480 y rhestr gyfan i ddod o hyd iddo, ac yna ar yr adeg honno ni jyst yn gwastraffu amser. 709 00:42:44,480 --> 00:42:48,480 Felly os mae gennym restr datrys ac rydym yn dod o hyd i'r canol, yr ydym yn mynd i gymharu'r canol 710 00:42:48,480 --> 00:42:51,590 i'r elfen rydym yn chwilio am. 711 00:42:51,590 --> 00:42:54,640 Os yw'n rhy uchel, yna gallwn anghofio hanner cywir 712 00:42:54,640 --> 00:42:57,810 oherwydd rydym yn gwybod bod os yw ein elfen eisoes yn rhy uchel 713 00:42:57,810 --> 00:43:01,080 a phopeth ar y dde yr elfen hon hyd yn oed yn uwch, 714 00:43:01,080 --> 00:43:02,760 yna nid oes angen i ni edrych yno anymore. 715 00:43:02,760 --> 00:43:05,430 Lle ar y llaw arall, os yw ein elfen yn rhy isel, 716 00:43:05,430 --> 00:43:08,700 rydym yn gwybod popeth i'r chwith o'r elfen honno hefyd yn rhy isel, 717 00:43:08,700 --> 00:43:11,390 felly nid yw'n wir yn gwneud synnwyr i edrych yno, naill ai. 718 00:43:11,390 --> 00:43:15,760 Fel hyn, gyda phob cam a phob tro y byddwn yn edrych ar y man canol ar y rhestr, 719 00:43:15,760 --> 00:43:19,060 rydym yn mynd i dorri ein problem yn ei hanner oherwydd yn sydyn rydym yn gwybod 720 00:43:19,060 --> 00:43:23,040 criw cyfan o rifau na all hynny fod yn un yr ydym yn chwilio amdano. 721 00:43:23,040 --> 00:43:26,950 >> Yn pseudocode byddai hyn yn edrych rhywbeth fel hyn, 722 00:43:26,950 --> 00:43:30,990 ac oherwydd ein bod yn torri ar y rhestr yn hanner bob tro, 723 00:43:30,990 --> 00:43:34,920 ein achos gwaethaf neidio rhedeg amser o llinol i logarithmig. 724 00:43:34,920 --> 00:43:39,260 Mor sydyn mae gennym log-mewn camau er mwyn dod o hyd i elfen mewn rhestr. 725 00:43:39,260 --> 00:43:42,460 Mae'r amser yn rhedeg gorau-achos, fodd bynnag, yn dal yn gyson 726 00:43:42,460 --> 00:43:45,180 oherwydd yn awr, gadewch i 'jyst yn dweud mai'r elfen rydym yn chwilio amdano yw 727 00:43:45,180 --> 00:43:48,380 bob amser yn y canol union y rhestr wreiddiol. 728 00:43:48,380 --> 00:43:52,080 Felly, gallwn dyfu ein rhestr mor fawr ag y dymunwn, ond os yw'r elfen rydym yn chwilio am ar y canol, 729 00:43:52,080 --> 00:43:54,910 yna mae'n ond yn mynd i fynd â ni gam 1. 730 00:43:54,910 --> 00:44:00,920 Felly dyna pam rydym ni'n O (n log) a Ω (1) neu gyson. 731 00:44:00,920 --> 00:44:04,510 Gadewch i ni mewn gwirionedd yn rhedeg chwiliad deuaidd ar y rhestr. 732 00:44:04,510 --> 00:44:08,020 Felly, gadewch i ni ddweud ein bod yn chwilio am yr elfen 164. 733 00:44:08,020 --> 00:44:11,650 Y peth cyntaf rydym yn mynd i wneud yw dod o hyd i'r man canol ar y rhestr hon. 734 00:44:11,650 --> 00:44:15,060 Fel mae'n digwydd bod y man canol yn mynd i ddisgyn rhwng y 2 rhifau, 735 00:44:15,060 --> 00:44:18,960 felly gadewch i ni dim ond fympwyol ddweud, bob tro y man canol yn syrthio rhwng 2 rhifau, 736 00:44:18,960 --> 00:44:21,150 gadewch i ni dim ond talgrynnu i fyny. 737 00:44:21,150 --> 00:44:24,330 Mae angen i ni sicrhau ein bod yn gwneud hyn bob cam o'r ffordd. 738 00:44:24,330 --> 00:44:29,040 Felly, rydym yn mynd i rownd i fyny, ac rydym yn mynd i ddweud bod 161 yn nghanol ein rhestr. 739 00:44:29,040 --> 00:44:34,640 So 161 <164, a phob elfen i'r chwith o 161 740 00:44:34,640 --> 00:44:39,120 Mae hefyd yn <164, felly rydym yn gwybod nad yw'n mynd i helpu ni o gwbl 741 00:44:39,120 --> 00:44:42,690 i ddechrau edrych dros yma oherwydd yr elfen rydym yn chwilio am na all fod yno. 742 00:44:42,690 --> 00:44:47,060 Felly, beth gallwn ei wneud yw y gallwn anghofio am y cyfan hanner chwith o'r rhestr, 743 00:44:47,060 --> 00:44:51,700 ac yn awr yn ystyried o'r dde y ymlaen 161. 744 00:44:51,700 --> 00:44:54,050 >> Felly eto, mae hyn yn y man canol, gadewch i 'jyst talgrynnu i fyny. 745 00:44:54,050 --> 00:44:56,260 Nawr 175 yn rhy fawr. 746 00:44:56,260 --> 00:44:59,180 Felly, rydym yn gwybod nad yw'n mynd i helpu ni edrych yma neu yma, 747 00:44:59,180 --> 00:45:06,610 fel y gallwn dim ond ei daflu hwnnw oddi arnynt, ac yn y diwedd byddwn wedi cyrraedd y 164. 748 00:45:06,610 --> 00:45:10,560 Unrhyw gwestiynau am chwiliad deuaidd? 749 00:45:10,560 --> 00:45:14,180 Gadewch i ni symud ymlaen o chwilio drwy restr eisoes yn ei ddidoli 750 00:45:14,180 --> 00:45:17,660 i mewn gwirionedd yn cymryd rhestr o rifau mewn unrhyw drefn 751 00:45:17,660 --> 00:45:20,960 a gwneud y rhestr yn nhrefn esgynnol. 752 00:45:20,960 --> 00:45:24,060 Mae'r algorithm cyntaf i ni edrych ar ei alw fath swigen. 753 00:45:24,060 --> 00:45:27,300 A fyddai hyn yn symlach o'r algorithmau a welsom. 754 00:45:27,300 --> 00:45:32,970 Fath Bubble yn dweud bod pan fydd unrhyw 2 elfen y tu mewn i'r rhestr allan o le, 755 00:45:32,970 --> 00:45:36,500 sy'n golygu bod nifer uwch i'r chwith o nifer is, 756 00:45:36,500 --> 00:45:40,190 yna rydym yn mynd i eu cyfnewid, oherwydd mae hynny'n golygu y bydd y rhestr yn 757 00:45:40,190 --> 00:45:42,860 "Mwy ddidoli" nag yr oedd o'r blaen. 758 00:45:42,860 --> 00:45:45,180 Ac rydym yn jyst yn mynd i barhau â'r broses hon eto ac eto ac eto 759 00:45:45,180 --> 00:45:52,100 nes yn y pen draw y math o elfennau swigen yn eu lleoliad cywir ac mae gennym restr datrys. 760 00:45:52,100 --> 00:45:57,230 >> Mae'r amser yn rhedeg o hyn yn mynd i fod yn O (n ²). Pam? 761 00:45:57,230 --> 00:46:00,370 Wel, oherwydd yn yr achos gwaethaf, rydym yn mynd i gymryd pob elfen, ac 762 00:46:00,370 --> 00:46:04,570 rydym yn mynd i roi diwedd ar i fyny gymharu â phob elfen arall yn y rhestr. 763 00:46:04,570 --> 00:46:08,030 Ond yn yr achos gorau, mae gennym restr datrys eisoes, swigen fath yn 764 00:46:08,030 --> 00:46:12,230 jyst yn mynd i fynd drwy'r unwaith, yn dweud "Na. Doeddwn i ddim yn gwneud unrhyw cyfnewidiadau, felly rwy'n ei wneud." 765 00:46:12,230 --> 00:46:17,410 Felly mae gennym amser gorau-achos rhedeg Ω (n). 766 00:46:17,410 --> 00:46:20,680 Gadewch i ni redeg fath swigen ar restr. 767 00:46:20,680 --> 00:46:23,560 Neu gyntaf, gadewch i ni dim ond yn edrych ar rai pseudocode yn gyflym iawn. 768 00:46:23,560 --> 00:46:28,160 Rydym yn awyddus i ddweud ein bod am gadw golwg ar, ym mhob fersiwn o'r ddolen, 769 00:46:28,160 --> 00:46:32,190 cadw golwg ar a ydym wedi newid unrhyw elfennau. 770 00:46:32,190 --> 00:46:37,610 Felly, y rheswm am hynny yw, yr ydym yn mynd i stopio pan nad ydym wedi cyfnewid unrhyw elfennau. 771 00:46:37,610 --> 00:46:41,980 Felly, ar ddechrau ein dolen nid ydym wedi cyfnewid unrhyw beth, felly byddwn yn dweud bod yn ffug. 772 00:46:41,980 --> 00:46:47,170 Nawr, rydym yn mynd i fynd trwy'r rhestr a chymharu elfen I i elfen i + 1 773 00:46:47,170 --> 00:46:50,310 ac os yw'n wir bod yna nifer fwy i'r chwith o nifer lai, 774 00:46:50,310 --> 00:46:52,310 yna rydym yn jyst yn mynd i gyfnewid eu cyfer. 775 00:46:52,310 --> 00:46:54,490 >> Ac yna rydym yn mynd i gofio ein bod yn cyfnewid elfen. 776 00:46:54,490 --> 00:46:58,900 Mae hynny'n golygu bod angen i ni fynd drwy'r rhestr o leiaf 1 mwy o amser 777 00:46:58,900 --> 00:47:02,160 oherwydd bod y cyflwr yr ydym yn dod i ben yw pan fydd y rhestr gyfan yn cael ei datrys eisoes, 778 00:47:02,160 --> 00:47:04,890 golygu nad ydym wedi gwneud unrhyw chyfnewidiadau. 779 00:47:04,890 --> 00:47:09,960 Felly dyna pam mae ein cyflwr i lawr yma yw 'tra bod rhai elfennau wedi cael eu cyfnewid.' 780 00:47:09,960 --> 00:47:13,720 Felly nawr gadewch i ni dim ond yn edrych ar hyn yn rhedeg ar restr. 781 00:47:13,720 --> 00:47:16,640 I gael y rhestr 5,0,1,6,4. 782 00:47:16,640 --> 00:47:19,850 Fath Bubble yn mynd i ddechrau yr holl ffordd ar y chwith, ac mae'n mynd i gymharu 783 00:47:19,850 --> 00:47:24,700 yr elfennau i, felly 0 i i + 1, sydd yn elfen 1. 784 00:47:24,700 --> 00:47:29,020 Mae'n mynd i ddweud, wel 5> 0, ond ar hyn o bryd 5 yw y chwith, 785 00:47:29,020 --> 00:47:32,500 felly mae angen i mi gyfnewid y 5 a'r 0. 786 00:47:32,500 --> 00:47:35,470 Pan fyddaf yn eu cyfnewid, yn sydyn i mi gael y rhestr gwahanol. 787 00:47:35,470 --> 00:47:38,260 Nawr 5> 1, felly rydym yn mynd i gyfnewid eu cyfer. 788 00:47:38,260 --> 00:47:42,160 Nid yw 5 yn> 6, felly nid oes angen i ni wneud unrhyw beth yma. 789 00:47:42,160 --> 00:47:46,690 Ond 6> 4, felly mae angen i gyfnewid. 790 00:47:46,690 --> 00:47:49,740 Unwaith eto, mae angen i redeg drwy'r rhestr gyfan yn y pen draw ddarganfod 791 00:47:49,740 --> 00:47:52,330 bod y rhain yn allan o drefn, rydym yn eu cyfnewid, 792 00:47:52,330 --> 00:47:57,120 ac ar y pwynt hwn mae angen i redeg drwy'r rhestr o amser 1 mwy 793 00:47:57,120 --> 00:48:05,390 i wneud yn siŵr bod popeth sydd yn ei drefn, ac ar y math swigen pwynt wedi dod i ben. 794 00:48:05,390 --> 00:48:10,720 Mae algorithm gwahanol ar gyfer cymryd rhai elfennau a didoli hwy yn fath dethol. 795 00:48:10,720 --> 00:48:15,740 Y syniad y tu ôl math dewis yw ein bod yn mynd i adeiladu i fyny cyfran datrys y rhestr 796 00:48:15,740 --> 00:48:18,150 1 elfen ar y tro. 797 00:48:18,150 --> 00:48:23,170 >> A'r ffordd yr ydym yn mynd i wneud hynny yw trwy adeiladu i fyny 'r segment chwith y rhestr. 798 00:48:23,170 --> 00:48:27,510 And y bôn, mae pob - ar bob cam, rydym yn mynd i gymryd yr elfen lleiaf rydym wedi gadael 799 00:48:27,510 --> 00:48:32,310 Nid yw hynny wedi'i setlo eto, ac rydym yn mynd i symud i mewn i'r segment datrys. 800 00:48:32,310 --> 00:48:35,850 Mae hynny'n golygu bod angen i barhaus ddod o hyd i'r elfen heb ei threfnu o leiaf 801 00:48:35,850 --> 00:48:40,720 ac yna cymryd yr elfen honno o leiaf ac yn eu cyfnewid gyda beth bynnag 802 00:48:40,720 --> 00:48:45,090 chwith-y rhan fwyaf o elfen nad yw'n cael ei ddatrys. 803 00:48:45,090 --> 00:48:50,890 Mae'r amser yn rhedeg o hyn yn mynd i fod O (n ²) oherwydd yn yr achos gwaethaf 804 00:48:50,890 --> 00:48:55,070 mae angen i ni gymharu pob elfen unigol i bob elfen arall. 805 00:48:55,070 --> 00:48:59,250 Oherwydd ein bod ni'n dweud os ydym yn dechrau yn hanner chwith y rhestr, mae angen 806 00:48:59,250 --> 00:49:02,970 i fynd drwy'r segment cywir gyfan i ddod o hyd i'r elfen lleiaf. 807 00:49:02,970 --> 00:49:05,430 Ac yna, unwaith eto, mae angen i ni fynd dros y segment cywir cyfan a 808 00:49:05,430 --> 00:49:08,210 gadw i fynd dros y drosodd a drosodd a throsodd. 809 00:49:08,210 --> 00:49:11,350 Mae hynny'n mynd i fod yn n ². Rydym yn mynd i angen ar gyfer y tu dolen arall ar gyfer dolen 810 00:49:11,350 --> 00:49:13,350 sy'n awgrymu n ². 811 00:49:13,350 --> 00:49:16,530 Yn yr achos gorau meddwl, gadewch i ni ddweud ein rhoi rhestr datrys eisoes; 812 00:49:16,530 --> 00:49:19,270 nid ydym mewn gwirionedd yn gwneud unrhyw well na n ². 813 00:49:19,270 --> 00:49:21,730 Oherwydd fath dethol Nid oes ffordd o wybod bod 814 00:49:21,730 --> 00:49:25,540 yr elfen lleiaf yw dim ond un yr wyf yn digwydd i fod yn edrych ar. 815 00:49:25,540 --> 00:49:28,970 Mae'n dal i fod angen gwneud yn siŵr bod hyn mewn gwirionedd y lleiaf. 816 00:49:28,970 --> 00:49:31,670 >> A'r unig ffordd i wneud yn siŵr ei fod yn y lleiaf, gan ddefnyddio'r algorithm, 817 00:49:31,670 --> 00:49:34,640 yw edrych ar bob elfen unigol eto. 818 00:49:34,640 --> 00:49:38,420 Felly mewn gwirionedd, os byddwch yn rhoi - os byddwch yn rhoi fath ddewis rhestr datrys eisoes, 819 00:49:38,420 --> 00:49:42,720 nid yw'n mynd i wneud unrhyw well na rhoi rhestr nad yw'n cael ei ddatrys eto. 820 00:49:42,720 --> 00:49:46,320 Gyda llaw, os yw'n digwydd i fod yn wir bod rhywbeth O (rhywbeth) 821 00:49:46,320 --> 00:49:50,640 ac omega o rywbeth, gallwn ddweud yn fwy cryno ei fod yn θ o rywbeth. 822 00:49:50,640 --> 00:49:52,760 Felly, os ydych yn gweld bod yn dod i fyny yn unrhyw le, dyna beth mae hynny'n ei olygu yn unig. 823 00:49:52,760 --> 00:49:57,580 >> Os yw rhywbeth yn theta o n ², mae'n ddau O mawr (n ²) a Ω (n ²). 824 00:49:57,580 --> 00:49:59,790 So achos gorau ac achos gwaethaf, nid yw'n gwneud gwahaniaeth, 825 00:49:59,790 --> 00:50:04,400 yr algorithm yn mynd i wneud yr un peth bob tro. 826 00:50:04,400 --> 00:50:06,610 So dyma beth y gallai pseudocode ar gyfer trefnu dewis edrych. 827 00:50:06,610 --> 00:50:10,630 Rydym yn y bôn yn mynd i ddweud fy mod yn awyddus i ailadrodd dros y rhestr 828 00:50:10,630 --> 00:50:15,180 o'r chwith i'r dde, ac ar bob fersiwn o'r ddolen, dw i'n mynd i symud 829 00:50:15,180 --> 00:50:19,780 yr elfen lleiaf yn y rhan hon datrys y rhestr. 830 00:50:19,780 --> 00:50:23,260 Ac ar ôl i mi symud rhywbeth yno erioed, mae angen imi edrych ar yr elfen honno eto. 831 00:50:23,260 --> 00:50:28,600 Oherwydd cyn gynted ag y cyfnewid elfen i mewn i'r segment chwith y rhestr, mae'n ddatrys 832 00:50:28,600 --> 00:50:32,600 oherwydd ein bod yn gwneud popeth yn nhrefn esgynnol drwy ddefnyddio isafsymiau. 833 00:50:32,600 --> 00:50:38,740 Felly fe ddwedodd yr ydym ni, iawn, rydym yn yn safle i, ac mae angen i ni edrych ar yr holl elfennau 834 00:50:38,740 --> 00:50:42,260 i'r dde oi er mwyn dod o hyd i'r lleiafswm. 835 00:50:42,260 --> 00:50:46,150 Felly mae hynny'n golygu ydym am edrych o i + 1 i ddiwedd y rhestr. 836 00:50:46,150 --> 00:50:51,610 Ac yn awr, os yw'r elfen ein bod ar hyn o bryd yn edrych ar yn llai na'n lleiafswm hyd yn hyn, 837 00:50:51,610 --> 00:50:54,190 sydd, cofiwch, rydym yn dechrau oddi ar lleiaf i ddim ond fod 838 00:50:54,190 --> 00:50:57,020 beth bynnag elfen rydym ar hyn o bryd; 'n annhymerus' gymryd yn ganiataol mai dyna'r lleiaf. 839 00:50:57,020 --> 00:51:00,270 Os byddaf yn dod o hyd i elfen sy'n llai na hynny, yna yr wyf i'n mynd i ddweud, iawn, 840 00:51:00,270 --> 00:51:02,700 yn dda, yr wyf wedi dod o hyd i isafswm newydd. 841 00:51:02,700 --> 00:51:06,080 Rydw i'n mynd i cofio lle isafswm hwnnw oedd. 842 00:51:06,080 --> 00:51:09,560 >> Felly nawr, unwaith y byddaf wedi mynd drwy'r segment heb eu didoli iawn, 843 00:51:09,560 --> 00:51:16,690 Allaf ddweud fy mod i'n mynd i gyfnewid yr elfen lleiaf gyda'r elfen sydd yn sefyllfa i. 844 00:51:16,690 --> 00:51:21,100 Mae hynny'n mynd i adeiladu i fyny fy rhestr, fy rhan datrys y rhestr o'r chwith i'r dde, 845 00:51:21,100 --> 00:51:25,190 ac nid ydym byth angen i chi edrych ar elfen eto unwaith y bydd yn y gyfran honno. 846 00:51:25,190 --> 00:51:27,930 Unwaith y byddwn wedi cyfnewid ei. 847 00:51:27,930 --> 00:51:30,260 Felly, gadewch i ni redeg fath ddewis ar y rhestr hon. 848 00:51:30,260 --> 00:51:38,220 Mae'r elfen glas yma yn mynd i fod yn i, a'r elfen coch yn mynd i fod yr elfen lleiaf. 849 00:51:38,220 --> 00:51:41,570 Felly, fi yn dechrau yr holl ffordd ar ochr chwith y rhestr, felly ar 5. 850 00:51:41,570 --> 00:51:44,610 Nawr mae angen i ni ddod o hyd i'r elfen heb ei threfnu o leiaf. 851 00:51:44,610 --> 00:51:49,480 Felly, rydym yn dweud 0 <5, felly 0 yw fy isafswm newydd. 852 00:51:49,480 --> 00:51:53,820 >> Ond ni allaf roi'r gorau yno, oherwydd hyd yn oed er y gall rydym yn cydnabod bod 0 yw'r lleiaf, 853 00:51:53,820 --> 00:51:59,390 angen arnom i redeg drwy bob elfen arall yn y rhestr i wneud yn siŵr. 854 00:51:59,390 --> 00:52:01,760 Felly, 1 yn fwy, 6 yn fwy, 4 yn fwy. 855 00:52:01,760 --> 00:52:05,850 Mae hynny'n golygu bod ar ôl edrych ar yr holl elfennau hyn, rwyf wedi penderfynu 0 yn y lleiaf. 856 00:52:05,850 --> 00:52:09,800 Felly, yr wyf i'n mynd i gyfnewid y 5 a'r 0. 857 00:52:09,800 --> 00:52:15,480 Ar ôl i mi cyfnewid hynny, yr wyf i'n mynd i gael rhestr newydd, ac yr wyf yn gwybod nad wyf byth yn angen edrych ar bod 0 eto 858 00:52:15,480 --> 00:52:19,380 oherwydd ar ôl i mi gyfnewid, yr wyf wedi trefnu ac rydym yn ei wneud. 859 00:52:19,380 --> 00:52:22,730 Nawr dim ond fel y digwydd bod yr elfen las unwaith eto yw'r 5, 860 00:52:22,730 --> 00:52:26,030 ac mae angen i ni edrych ar y 1, 6 a 4 i benderfynu bod 1 861 00:52:26,030 --> 00:52:31,520 yw'r elfen lleiaf lleiaf, felly byddwn yn cyfnewid y 1 a'r 5. 862 00:52:31,520 --> 00:52:36,890 Unwaith eto, mae angen i ni edrych ar - cymharu'r 5 i 6 a 4, 863 00:52:36,890 --> 00:52:39,830 ac rydym yn mynd i gyfnewid y 4 a'r 5, ac yn olaf, cymharu 864 00:52:39,830 --> 00:52:45,740 hynny 2 rhifau a chyfnewid eu tan i ni gael ein rhestr datrys. 865 00:52:45,740 --> 00:52:49,730 Unrhyw gwestiynau am fath dethol? 866 00:52:49,730 --> 00:52:56,420 Iawn. Gadewch i ni symud i'r pwnc diwethaf yma, a dyna dychweliad. 867 00:52:56,420 --> 00:52:59,810 >> Dychweliad, cofiwch, mae hyn yn beth meta iawn lle mae swyddogaeth 868 00:52:59,810 --> 00:53:02,740 dro ar ôl tro yn galw ei hun. 869 00:53:02,740 --> 00:53:05,620 Felly, ar ryw adeg, tra bod ein fuction yn galw dro ar ôl tro ei hun, 870 00:53:05,620 --> 00:53:10,100 mae angen rhywfaint o bwynt lle rydym yn rhoi'r gorau i ffonio ein hunain. 871 00:53:10,100 --> 00:53:13,670 Oherwydd os nad ydym yn gwneud hynny, yna rydym yn jyst yn mynd i barhau i wneud hyn am byth, 872 00:53:13,670 --> 00:53:16,660 ac mae ein rhaglen, nid yn unig yn mynd i roi'r gorau. 873 00:53:16,660 --> 00:53:19,200 Rydym yn galw hyn yn gyflwr yr achos sylfaenol. 874 00:53:19,200 --> 00:53:22,570 Ac mae'r achos sylfaenol yn dweud, yn hytrach na galw swyddogaeth eto, 875 00:53:22,570 --> 00:53:25,330 Im 'jyst yn mynd i ddychwelyd rhywfaint o werth. 876 00:53:25,330 --> 00:53:28,080 Felly, unwaith y byddwn wedi dychwelyd gwerth, rydym wedi peidio galw ein hunain, 877 00:53:28,080 --> 00:53:32,550 a gall y gweddill y galwadau a wnaed gennym hyd yn hyn hefyd yn dychwelyd. 878 00:53:32,550 --> 00:53:36,050 Y gwrthwyneb yr achos sylfaenol yw'r achos ailadroddus. 879 00:53:36,050 --> 00:53:39,050 Ac mae hyn yw pan rydym eisiau gwneud galwad arall i'r swyddogaeth ein bod ar hyn o bryd mewn 880 00:53:39,050 --> 00:53:44,690 Ac yn ôl pob tebyg, er nad bob amser, am ddefnyddio gwahanol ddadleuon. 881 00:53:44,690 --> 00:53:48,940 >> Felly, os ydym yn cael swyddogaeth o'r enw f, ac f Dim ond galw cymryd 1 ddadl, 882 00:53:48,940 --> 00:53:52,010 ac rydym yn unig yn cadw galw f (1), f (1), f (1), a 'i jyst fel y digwydd bod 883 00:53:52,010 --> 00:53:56,510 y ddadl 1 yn disgyn i mewn i achos recursive, ni fyddwn byth yn yn dal yn mynd i roi'r gorau iddi. 884 00:53:56,510 --> 00:54:01,620 Hyd yn oed os oes gennym achos sylfaenol, mae angen i ni wneud yn siŵr bod y pen draw rydym yn mynd i daro yr achos sylfaenol. 885 00:54:01,620 --> 00:54:04,250 Nid ydym yn unig yn cadw aros yn yr achos hwn ailadroddus. 886 00:54:04,250 --> 00:54:09,870 Yn gyffredinol, pan fyddwn yn galw ein hunain, rydym yn fwy na thebyg yn mynd i gael dadl gwahanol bob tro. 887 00:54:09,870 --> 00:54:12,700 Dyma swyddogaeth syml iawn ailadroddus. 888 00:54:12,700 --> 00:54:15,090 Felly, bydd hyn yn gyfrifo ffactor o nifer. 889 00:54:15,090 --> 00:54:17,790 Up top yma rydym wedi ein achos sylfaenol. 890 00:54:17,790 --> 00:54:22,330 Yn yr achos fod n ≤ 1, nid ydym yn mynd i alw ffactoraidd eto. 891 00:54:22,330 --> 00:54:26,490 Rydym yn mynd i stopio; rydym yn jyst yn mynd i ddychwelyd rhywfaint o werth. 892 00:54:26,490 --> 00:54:30,170 Os nad yw hyn yn wir, yna rydym yn mynd i daro ein hachos ailadroddus. 893 00:54:30,170 --> 00:54:33,550 Hysbysiad yma nad ydym yn unig yn galw ffactoraidd (n), gan na fyddai hynny'n ddefnyddiol iawn. 894 00:54:33,550 --> 00:54:36,810 Rydym yn mynd i alw ffactoraidd o rywbeth arall. 895 00:54:36,810 --> 00:54:40,850 >> Ac fel y gallwch weld, yn y pen draw os ydym yn pasio rhywbeth ffactoraidd (5) neu, 896 00:54:40,850 --> 00:54:45,900 rydym yn mynd i alw ffactoraidd (4) ac yn y blaen, ac yn y pen draw rydym yn mynd i daro yr achos sylfaenol. 897 00:54:45,900 --> 00:54:51,730 Felly, mae hyn yn edrych yn dda. Gadewch i ni weld beth sy'n digwydd pan fyddwn mewn gwirionedd yn rhedeg y. 898 00:54:51,730 --> 00:54:57,840 Mae hyn yn y pentwr, a gadewch i ni ddweud mai prif mynd i alw swyddogaeth hon gyda dadl (4). 899 00:54:57,840 --> 00:55:02,200 Felly, unwaith y ffactor gweld a = 4, bydd ffactoraidd galw ei hun. 900 00:55:02,200 --> 00:55:05,010 Yn awr, yn sydyn, mae gennym ffactoraidd (3). 901 00:55:05,010 --> 00:55:10,780 Felly mae'r swyddogaethau yn mynd i barhau i dyfu nes yn y pen draw rydym yn taro ein achos sylfaenol. 902 00:55:10,780 --> 00:55:17,830 Ar y pwynt hwn, mae gwerth dychwelyd o hyn yw'r ffurflen (NX gwerth dychwelyd o hyn), 903 00:55:17,830 --> 00:55:21,290 gwerth dychwelyd o hyn yw NX y gwerth hwn yn ôl. 904 00:55:21,290 --> 00:55:23,290 Yn y pen draw mae angen i ni daro ryw nifer. 905 00:55:23,290 --> 00:55:26,560 Ar y brig yma, yr ydym yn dweud dychwelyd 1. 906 00:55:26,560 --> 00:55:30,650 Mae hynny'n golygu bod unwaith y byddwn yn dychwelyd y nifer hwnnw, gallwn pop hyn oddi ar y pentwr. 907 00:55:30,650 --> 00:55:36,570 Felly, mae hyn ffactoraidd (1) yn cael ei wneud. 908 00:55:36,570 --> 00:55:41,190 Pan gaiff 1 ffurflenni, mae hyn yn ffactor (1) yn dychwelyd, mae hyn yn dychwelyd i 1. 909 00:55:41,190 --> 00:55:46,910 Mae gwerth dychwelyd o hyn, cofiwch, roedd NX gwerth dychwelyd hyn. 910 00:55:46,910 --> 00:55:50,720 Felly yn sydyn, mae hyn yn guy yn gwybod fy mod am ddychwelyd 2. 911 00:55:50,720 --> 00:55:55,910 >> Felly cofiwch, yn dychwelyd gwerth hyn yn unig NX dychwelyd y gwerth i fyny yma. 912 00:55:55,910 --> 00:56:01,160 Felly nawr gallwn ddweud 3 x 2, ac yn olaf, dyma y gallwn ei ddweud 913 00:56:01,160 --> 00:56:04,010 mae hyn yn unig yn mynd i fod yn 4 x 3 x 2. 914 00:56:04,010 --> 00:56:09,570 Ac unwaith y ffurflenni, rydym yn mynd i lawr i tu mewn cyfanrif un o brif bibellau. 915 00:56:09,570 --> 00:56:15,460 Unrhyw gwestiynau am dychweliad? 916 00:56:15,460 --> 00:56:17,090 Mae pob hawl. Felly, mae mwy o amser ar gyfer cwestiynau ar y diwedd, 917 00:56:17,090 --> 00:56:23,360 ond bellach bydd Joseph yn cynnwys y pynciau sy'n weddill. 918 00:56:23,360 --> 00:56:25,590 >> [Joseph Ong] Mae pob hawl. Felly nawr ein bod wedi siarad am recursions, 919 00:56:25,590 --> 00:56:27,840 gadewch i ni siarad ychydig am yr hyn uno fath yn. 920 00:56:27,840 --> 00:56:31,740 Cyfuno fath yn y bôn yn ffordd arall o ddatrys rhestr o rifau. 921 00:56:31,740 --> 00:56:36,430 A sut mae'n gweithio yw, gyda merge fath gennych restr, a beth rydym yn ei wneud yw 922 00:56:36,430 --> 00:56:39,120 yr ydym yn dweud, gadewch i ni rannu'r hyn yn 2 hanner. 923 00:56:39,120 --> 00:56:42,750 Byddwn yn gyntaf yn mynd uno fath eto ar yr hanner chwith, 924 00:56:42,750 --> 00:56:45,040 yna byddwn yn rhedeg uno fath ar yr hanner dde, 925 00:56:45,040 --> 00:56:50,240 ac sy'n rhoi i ni yn awr 2 hanner sy'n cael eu datrys, ac yn awr rydym yn mynd i gyfuno hynny hanner gyda'i gilydd. 926 00:56:50,240 --> 00:56:55,010 Mae'n braidd yn anodd ei weld heb enghraifft, felly byddwn yn mynd drwy'r cynigion a gweld beth sy'n digwydd. 927 00:56:55,010 --> 00:56:59,590 Felly rydych yn dechrau gyda rhestr hon, rydym yn ei rannu'n 2 hanner. 928 00:56:59,590 --> 00:57:02,300 Rydym yn cynnal uno fath ar yr hanner cyntaf ar y chwith. 929 00:57:02,300 --> 00:57:06,660 Felly dyna hanner chwith, ac yn awr rydym yn eu rhedeg drwy'r rhestr hon eto 930 00:57:06,660 --> 00:57:09,800 sy'n cael ei basio i mewn i uno fath, ac yna rydym yn edrych, unwaith eto, 931 00:57:09,800 --> 00:57:13,270 ar ochr chwith y rhestr hon ac rydym yn rhedeg uno fath arno. 932 00:57:13,270 --> 00:57:15,880 Nawr, rydym yn mynd i lawr i restr o 2 rifau, 933 00:57:15,880 --> 00:57:19,010 ac yn awr y hanner chwith dim ond 1 elfen hir, ac ni allwn 934 00:57:19,010 --> 00:57:23,380 rhannu rhestr sy'n dim ond 1 elfen i hanner, felly rydym yn unig yn dweud, pan fydd gennym 50, 935 00:57:23,380 --> 00:57:26,400 sydd dim ond 1 elfen, mae'n datrys eisoes. 936 00:57:26,400 --> 00:57:29,860 >> Unwaith y byddwn ni'n ei wneud gyda hynny, gallwn weld ein bod yn gallu 937 00:57:29,860 --> 00:57:32,230 symud ymlaen i hanner dde y rhestr, 938 00:57:32,230 --> 00:57:36,480 a 3 yn cael ei ddidoli hefyd, ac felly, yn awr bod y ddau hanner y rhestr yn cael eu datrys 939 00:57:36,480 --> 00:57:39,080 gallwn ymuno â'r rhifau ôl at ei gilydd. 940 00:57:39,080 --> 00:57:45,320 Felly, rydym yn edrych ar 50 a 3; 3 yn llai na 50, felly mae'n mynd yn gyntaf ac yna 50 yn dod i mewn 941 00:57:45,320 --> 00:57:49,340 Nawr, sy'n cael ei wneud, rydym yn mynd yn ôl i fyny at y rhestr honno a math mae'n 1/2 iawn. 942 00:57:49,340 --> 00:57:52,440 42 yn ei rhif ei hun, felly mae'n datrys eisoes. 943 00:57:52,440 --> 00:57:57,850 Felly, yn awr rydym yn cymharu y 2 a 3 yn llai na 42, er mwyn cael eu rhoi yn gyntaf, 944 00:57:57,850 --> 00:58:02,340 bellach yn 42 yn cael ei rhoi i mewn, a 50 yn cael ei rhoi i mewn 945 00:58:02,340 --> 00:58:07,220 Nawr, mae hynny'n datrys, rydym yn mynd yr holl ffordd yn ôl at y top, 1337 a 15. 946 00:58:07,220 --> 00:58:14,560 Wel, rydym yn awr yn edrych ar hanner chwith y rhestr; 1337 ei ben ei hun felly mae'n datrys a'r un gyda 15. 947 00:58:14,560 --> 00:58:19,020 Felly, yn awr rydym yn cyfuno y 2 rhifau i ddatrys y rhestr wreiddiol, 15 <1337, 948 00:58:19,020 --> 00:58:23,060 felly mae'n mynd yn gyntaf, ac yna yn mynd i mewn 1337 949 00:58:23,060 --> 00:58:26,640 Ac yn awr rydym yn datrys y ddau hanner y rhestr wreiddiol i fyny top. 950 00:58:26,640 --> 00:58:30,440 A'r holl rhaid i ni ei wneud yw cyfuno'r rhain. 951 00:58:30,440 --> 00:58:36,890 Rydym yn edrych ar y 2 niferoedd y rhestr hon, 3 <15, felly mae'n mynd i mewn i'r amrywiaeth fath yn gyntaf. 952 00:58:36,890 --> 00:58:44,460 15 <42, felly mae'n mynd i mewn Yn awr, 42 <1337, sy'n mynd i mewn 953 00:58:44,460 --> 00:58:51,010 50 <1337, felly mae'n mynd i mewn Ac sylwi ein bod dim ond yn cymryd 2 rif oddi ar y rhestr hon. 954 00:58:51,010 --> 00:58:53,640 Felly nid ydym yn unig yn ail rhwng y 2 rhestrau. 955 00:58:53,640 --> 00:58:56,050 Rydym yn unig yn edrych ar y dechrau, ac rydym yn cymryd yr elfen 956 00:58:56,050 --> 00:59:00,270 sy'n llai ac yna ei roi yn ein casgliad. 957 00:59:00,270 --> 00:59:04,080 Nawr rydym wedi uno holl haneri ac rydym yn ei wneud. 958 00:59:04,080 --> 00:59:07,780 >> Unrhyw gwestiynau am uno fath? Ydw? 959 00:59:07,780 --> 00:59:14,190 [Myfyrwyr] Os yw'n rhannu i grwpiau gwahanol, pam nad ydynt ond rhannu unwaith 960 00:59:14,190 --> 00:59:19,970 a bod gennych 3 a 2 mewn grŵp? [Gweddill y cwestiwn annealladwy] 961 00:59:19,970 --> 00:59:24,940 Y rheswm - felly y cwestiwn yw, pam na allwn ni ond eu cyfuno yn y cam cyntaf ar ôl i ni eu cael? 962 00:59:24,940 --> 00:59:29,530 Y rheswm y gallwn wneud hyn, yn dechrau ar yr elfennau chwith y rhan fwyaf o'r ddwy ochr, 963 00:59:29,530 --> 00:59:33,040 ac yna cymryd yr un llai ac yn ei roi i mewn, yw ein bod yn gwybod bod y rhain yn 964 00:59:33,040 --> 00:59:35,290 rhestrau unigol yn gorchmynion didoli. 965 00:59:35,290 --> 00:59:37,290 Felly, os wyf i'n edrych ar yr elfennau chwith y rhan fwyaf o'r ddau hanner, 966 00:59:37,290 --> 00:59:40,490 Rwy'n gwybod eu bod yn mynd i fod yr elfennau lleiaf o'r rhestrau hynny. 967 00:59:40,490 --> 00:59:43,930 Felly gallaf eu rhoi yn y mannau elfen leiaf o'r rhestr mawr. 968 00:59:43,930 --> 00:59:47,810 Ar y llaw arall, os wyf yn edrych ar y 2 rhestrau yn yr ail lefel dros yno, 969 00:59:47,810 --> 00:59:51,640 50, 3, 42, 1337 a 15, nid y rhai yn cael eu didoli. 970 00:59:51,640 --> 00:59:55,770 Felly, os wyf yn edrych ar 50 a 1337, yr wyf i'n mynd i roi 50 i fy rhestr gyntaf. 971 00:59:55,770 --> 01:00:00,130 Ond nid yw hynny'n gwneud synnwyr mewn gwirionedd, gan fod 3 yw'r elfen lleiaf allan o bob un o'r rheiny. 972 01:00:00,130 --> 01:00:04,390 Felly yr unig reswm y gallwn wneud y cam hwn cyfuno oherwydd bod ein rhestrau yn cael eu datrys eisoes. 973 01:00:04,390 --> 01:00:07,010 Pa un yw pam mae'n rhaid inni fynd i lawr yr holl ffordd i'r gwaelod 974 01:00:07,010 --> 01:00:09,800 oherwydd pan fydd gennym dim ond un rhif, byddwch yn gwybod bod un rhif 975 01:00:09,800 --> 01:00:14,120 mewn ac o ei hun eisoes yn rhestr datrys. 976 01:00:14,120 --> 01:00:19,360 >> Unrhyw gwestiynau? Na? 977 01:00:19,360 --> 01:00:24,260 Cymhlethdod? Wel, gallwch weld, ar bob cam mae nifer diwedd, 978 01:00:24,260 --> 01:00:27,590 ac rydym yn rhannu'r rhestr yn log 1/2 n amseroedd, 979 01:00:27,590 --> 01:00:31,700 a dyna lle rydym yn cael y log x n n cymhlethdod. 980 01:00:31,700 --> 01:00:34,940 A byddwch yn gweld yr achos gorau ar gyfer uno fath yn n log n, a dim ond fel y digwydd 981 01:00:34,940 --> 01:00:39,340 bod yr achos gwaethaf, neu'r Ω dros yno, hefyd n mewngofnodi n. 982 01:00:39,340 --> 01:00:42,480 Rhywbeth i gadw mewn cof. 983 01:00:42,480 --> 01:00:45,750 Gan symud ymlaen, gadewch i ni fynd ymlaen at rai ffeil sylfaenol super I / O. 984 01:00:45,750 --> 01:00:48,830 Os ydych yn edrych ar Scramble, byddwch yn sylwi bod gennym ryw fath o system 985 01:00:48,830 --> 01:00:51,270 lle y gallech ysgrifennu i ffeil log os ydych yn darllen drwy'r cod. 986 01:00:51,270 --> 01:00:53,730 Gadewch i ni weld sut y gallech chi wneud hynny. 987 01:00:53,730 --> 01:00:57,450 Wel, mae gennym fprintf, y gallwch chi feddwl fel dim ond printf, 988 01:00:57,450 --> 01:01:01,720 ond dim ond argraffu i ffeil yn lle hynny, ac felly f ar y dechrau. 989 01:01:01,720 --> 01:01:07,570 Mae hyn yn fath o god yma, beth mae'n ei wneud yw, fel y byddech wedi gweld yn Scramble, 990 01:01:07,570 --> 01:01:12,310 mae'n mynd drwy eich argraffu amrywiaeth 2-dimensiwn olynol gan rhes beth fydd y ffigurau. 991 01:01:12,310 --> 01:01:17,850 Yn yr achos hwn, printf yn argraffu ar eich terfynell neu hyn a alwn yn yr allbwn safonol adran. 992 01:01:17,850 --> 01:01:22,170 >> Ac yn awr, yn yr achos hwn, y cyfan mae'n rhaid i ni ei wneud yw disodli printf gyda fprintf, 993 01:01:22,170 --> 01:01:26,770 dweud wrthynt beth y ffeil rydych eisiau argraffu i, ac yn yr achos hwn dim ond prints allan i'r ffeil 994 01:01:26,770 --> 01:01:32,230 yn hytrach na ei brintio ar eich terfynell. 995 01:01:32,230 --> 01:01:36,500 Wel, yna mae hynny'n codi'r cwestiwn: Ble rydym yn cael y math hwn o ffeil o, dde? 996 01:01:36,500 --> 01:01:39,840 Rydym yn pasio logio i mewn i hyn fuction fprintf, ond doedd gennym ni ddim syniad o ble y daeth. 997 01:01:39,840 --> 01:01:43,980 Wel, yn gynnar yn y cod, yr hyn a oedd gennym oedd y darn o cod dros yma, 998 01:01:43,980 --> 01:01:48,340 yn y bôn yn dweud bod agor y ffeil yn galw log.txt. 999 01:01:48,340 --> 01:01:53,220 Beth rydym yn ei wneud ar ôl hynny yw mae'n rhaid i ni wneud yn siŵr bod y ffeil yn cael ei hagor mewn gwirionedd yn llwyddiannus. 1000 01:01:53,220 --> 01:01:57,070 Felly gallai fod yn methu am resymau lluosog; nad oes gennych ddigon o le ar eich cyfrifiadur, er enghraifft. 1001 01:01:57,070 --> 01:01:59,790 Felly mae'n bob amser yn bwysig cyn i chi wneud unrhyw weithrediadau gyda'r ffeil 1002 01:01:59,790 --> 01:02:03,300 ein bod yn gwirio a yw'r ffeil yn agor yn llwyddiannus. 1003 01:02:03,300 --> 01:02:09,330 Felly beth y bydd, mae hynny'n ddadl i fopen, wel, gallwn agor ffeil mewn sawl ffordd. 1004 01:02:09,330 --> 01:02:13,510 Yr hyn y gallwn ei wneud yw, gallwn ei throsglwyddo w, sy'n golygu diystyru'r ffeil os yw'n allanfeydd eisoes, 1005 01:02:13,510 --> 01:02:18,070 Gallwn pasio a, y maent yn atodi at ddiwedd y ffeil yn hytrach na gor-redol hynny, 1006 01:02:18,070 --> 01:02:22,730 neu gallwn nodi r, sy'n golygu, gadewch i ni agor y ffeil fel darllen yn unig. 1007 01:02:22,730 --> 01:02:24,890 Felly, os yw'r rhaglen yn ceisio gwneud unrhyw newidiadau i'r ffeil, 1008 01:02:24,890 --> 01:02:30,140 gweiddi arnyn nhw a pheidiwch â gadael iddyn nhw wneud hynny. 1009 01:02:30,140 --> 01:02:33,320 Yn olaf, unwaith y byddwn ni'n ei wneud gyda'r ffeil, da gwneud gwaith arno, 1010 01:02:33,320 --> 01:02:35,860 mae angen i ni sicrhau ein bod yn cau'r ffeil. 1011 01:02:35,860 --> 01:02:38,830 Ac felly ar ddiwedd eich rhaglen, rydych yn mynd i basio eu unwaith eto 1012 01:02:38,830 --> 01:02:42,120 ffeil hon a agorodd i chi, a dim ond ei gau. 1013 01:02:42,120 --> 01:02:44,650 Felly, mae hyn yn rhywbeth pwysig bod yn rhaid i chi wneud yn siŵr eich bod yn ei wneud. 1014 01:02:44,650 --> 01:02:47,180 Felly cofiwch gallwch agor ffeiliau, ac yna gallwch ysgrifennu at y ffeil, 1015 01:02:47,180 --> 01:02:51,270 wneud gweithrediadau yn y ffeil, ond yna mae'n rhaid i chi gau'r ffeil ar y diwedd. 1016 01:02:51,270 --> 01:02:53,270 >> Unrhyw gwestiynau ar ffeil sylfaenol I / O? Ydw? 1017 01:02:53,270 --> 01:02:58,050 [Gwestiwn Myfyrwyr, annealladwy] 1018 01:02:58,050 --> 01:03:02,480 Hawl yma. Y cwestiwn yw, lle mae hyn yn ffeil log.txt ymddangos? 1019 01:03:02,480 --> 01:03:07,890 Wel, os ydych yn unig roi log.txt, mae'n creu yn yr un cyfeiriadur gwaith gweithredadwy. 1020 01:03:07,890 --> 01:03:10,500 Felly, os you're - >> [gwestiwn Myfyrwyr, annealladwy] 1021 01:03:10,500 --> 01:03:18,830 Ydw. Yn yr un folder, neu yn yr un cyfeiriadur, fel y'i galwch hi. 1022 01:03:18,830 --> 01:03:21,400 Nawr cof, stac, ac domen. 1023 01:03:21,400 --> 01:03:23,400 Felly, sut mae cof a nodir yn y cyfrifiadur? 1024 01:03:23,400 --> 01:03:26,270 Wel, gallwch ddychmygu cof fel math y bloc hwn yma. 1025 01:03:26,270 --> 01:03:30,260 Ac er cof mae gennym yr hyn a elwir y domen yn sownd dros yno, ac i'r stac sy'n lawr yno. 1026 01:03:30,260 --> 01:03:34,480 Ac mae'r domen yn tyfu i lawr ac i'r stac yn tyfu i fyny. 1027 01:03:34,480 --> 01:03:38,620 Felly, fel Tommy a grybwyllir - oh, yn dda, ac mae gennym y 4 segmentau eraill y byddaf yn mynd i mewn eiliad - 1028 01:03:38,620 --> 01:03:42,890 Fel Tommy dywedais yn gynharach, eich bod yn gwybod sut mae ei swyddogaethau eu galw eu hunain ac yn galw ei gilydd? 1029 01:03:42,890 --> 01:03:44,930 Maent yn adeiladu y math hwn o ffrâm pentwr. 1030 01:03:44,930 --> 01:03:47,360 Wel, os galwadau prif foo, foo yn cael ei roi ar y corn. 1031 01:03:47,360 --> 01:03:52,430 Foo yn galw bar, bar yn cael ei roi ar y corn, ac sy'n cael ei roi ar y pentwr ar ôl. 1032 01:03:52,430 --> 01:03:57,040 Ac wrth iddynt ddychwelyd, mae pob un yn cael eu cymryd oddi ar y pentwr. 1033 01:03:57,040 --> 01:04:00,140 Beth mhob un o'r lleoliadau hyn a chof dal? 1034 01:04:00,140 --> 01:04:03,110 Wel, y brig, sef y segment testun, yn cynnwys y rhaglen ei hun. 1035 01:04:03,110 --> 01:04:06,390 Felly y cod peiriant, mae hynny'n yno, ar ôl i chi lunio eich rhaglen. 1036 01:04:06,390 --> 01:04:08,520 Nesaf, unrhyw ymgychwyn newidynnau byd-eang. 1037 01:04:08,520 --> 01:04:12,660 >> Felly, rydych wedi newidynnau byd-eang yn eich rhaglen, ac yn dweud fel, a 5 =, 1038 01:04:12,660 --> 01:04:15,260 sy'n cael eu rhoi yn y segment, ac i'r dde o dan y, 1039 01:04:15,260 --> 01:04:18,990 oes gennych unrhyw ddata uninitialized byd-eang, sydd ychydig yn int, 1040 01:04:18,990 --> 01:04:20,990 ond nid ydych yn dweud ei fod yn hafal i unrhyw beth. 1041 01:04:20,990 --> 01:04:23,870 Sylweddoli y rhain yn newidynnau byd-eang, felly maen nhw'n tu allan i brif. 1042 01:04:23,870 --> 01:04:28,560 Felly, mae hyn yn golygu unrhyw newidynnau byd-eang sy'n cael eu datgan, ond nid ydynt yn ymgychwyn. 1043 01:04:28,560 --> 01:04:32,310 Felly, beth sydd yn y domen? Cof neilltuwyd ar sail malloc, y byddwn yn dod i mewn ychydig bach. 1044 01:04:32,310 --> 01:04:35,990 Ac yn olaf, gyda stac oes gennych unrhyw newidynnau lleol 1045 01:04:35,990 --> 01:04:39,950 ac unrhyw swyddogaethau y gallech ei alw yn unrhyw un o'u baramedrau. 1046 01:04:39,950 --> 01:04:43,720 Y peth olaf, nad ydych yn wir rhaid i chi wybod beth yw'r newidynnau amgylchedd yn ei wneud, 1047 01:04:43,720 --> 01:04:46,700 ond pryd bynnag y byddwch yn rhedeg rhaglen, mae yna rywbeth cysylltiedig, fel 1048 01:04:46,700 --> 01:04:49,550 dyma'r enw defnyddiwr y person a oedd yn rhedeg y rhaglen. 1049 01:04:49,550 --> 01:04:51,550 Ac mae hynny'n mynd i fod yn fath o ar y gwaelod. 1050 01:04:51,550 --> 01:04:54,540 O ran cyfeiriadau cof, sef gwerthoedd hecsadegol, 1051 01:04:54,540 --> 01:04:58,170 gwerthoedd ar y dechrau gorau ar 0, ac maent yn mynd yr holl ffordd i lawr i'r gwaelod. 1052 01:04:58,170 --> 01:05:00,440 Yn yr achos hwn, os ydych chi ar y system 32-bit, 1053 01:05:00,440 --> 01:05:05,390 y cyfeiriad ar y gwaelod yn mynd i fod yn 0x, wedi'i ddilyn gan af, oherwydd dyna 32 catiau, 1054 01:05:05,390 --> 01:05:10,890 sydd 8 bytes, ac yn yr achos hwn 8 bytes cyfateb i 8 digid hecsadegol. 1055 01:05:10,890 --> 01:05:20,110 Felly, i lawr yma rydych chi'n mynd i gael, fel, 0xffffff, ac i fyny yno rydych chi'n mynd i gael 0. 1056 01:05:20,110 --> 01:05:23,660 Felly beth yw'r arwyddion? Efallai na fydd rhai ohonoch wedi ymdrin â hyn yn adran o'r blaen. 1057 01:05:23,660 --> 01:05:26,660 ond rydym yn mynd drosto mewn darlith, felly mae pwyntydd yn unig yw data fath a 1058 01:05:26,660 --> 01:05:34,030 sy'n storio, yn hytrach na rhyw fath o werth fel 50, mae'n storio'r cyfeiriad rhywfaint o leoliad yn y cof. 1059 01:05:34,030 --> 01:05:36,020 Fel bod y cof [annealladwy]. 1060 01:05:36,020 --> 01:05:41,120 Felly, yn yr achos hwn, yr hyn rydym wedi'i yw, mae gennym pwyntydd i'r cyfanrif neu * int, 1061 01:05:41,120 --> 01:05:46,210 ac mae'n cynnwys cyfeiriad hwn hecsadegol o 0xdeadbeef. 1062 01:05:46,210 --> 01:05:50,880 >> Felly, yr hyn sydd gennym yw, erbyn hyn, mae hyn yn bwynt pwyntydd ar ryw leoliad mewn cof, 1063 01:05:50,880 --> 01:05:56,020 a bod yn unig, mae'r gwerth 50 yn y lleoliad hwn cof. 1064 01:05:56,020 --> 01:06:01,810 Ar rai systemau 32-bit, ar yr holl systemau 32-bit, awgrymiadau cymryd ddarnau 32 neu 4 bytes. 1065 01:06:01,810 --> 01:06:06,020 Ond, er enghraifft, ar system 64-bit, awgrymiadau yna 64 o ddarnau. 1066 01:06:06,020 --> 01:06:08,040 Felly dyna rhywbeth youll 'angen at cadw mewn cof. 1067 01:06:08,040 --> 01:06:12,310 Felly, ar system ben-bit, pwyntydd yn darnau pen hir. 1068 01:06:12,310 --> 01:06:17,320 Pointers yn fath o galed i dreulio heb bethau ychwanegol, 1069 01:06:17,320 --> 01:06:20,300 felly gadewch i ni fynd trwy enghraifft o dyrannu cof deinamig. 1070 01:06:20,300 --> 01:06:25,130 Pa dyrannu cof deinamig yn gwneud i chi, neu beth rydym yn galw malloc, 1071 01:06:25,130 --> 01:06:29,280 mae'n gadael i chi dyrannu rhyw fath o ddata y tu allan i'r set. 1072 01:06:29,280 --> 01:06:31,830 Felly y data hwn yn fath o fwy parhaol ar gyfer y cyfnod y rhaglen. 1073 01:06:31,830 --> 01:06:36,430 Oherwydd fel y gwyddoch, os ydych yn datgan x tu mewn swyddogaeth, a bod yn dychwelyd swyddogaeth, 1074 01:06:36,430 --> 01:06:40,910 nad ydych bellach yn cael mynediad at y data a gafodd ei storio yn x. 1075 01:06:40,910 --> 01:06:44,420 Pa awgrymiadau gadewch i ni ei wneud yw yn gadael i ni storio gwerthoedd cof neu siop 1076 01:06:44,420 --> 01:06:46,840 mewn segment gwahanol o gof, sef y domen. 1077 01:06:46,840 --> 01:06:49,340 Nawr ar ôl i ni y dychwel allan o swyddogaeth, cyn belled fod gennym pwyntydd 1078 01:06:49,340 --> 01:06:54,960 i'r lleoliad hwnnw mewn cof, yna yr hyn y gallwn ei wneud yw y gallwn edrych ar y gwerthoedd yno. 1079 01:06:54,960 --> 01:06:58,020 Gadewch i ni edrych ar enghraifft: Dyma ein cynllun cof eto. 1080 01:06:58,020 --> 01:07:00,050 Ac mae gennym swyddogaeth hon, y prif. 1081 01:07:00,050 --> 01:07:06,870 Beth mae'n ei wneud yw - iawn, mor syml, dde -? Int x = 5, bod yn unig newidyn ar y pentwr yn y prif. 1082 01:07:06,870 --> 01:07:12,450 >> Ar y llaw arall, yn awr rydym yn datgan pwyntydd sy'n galw y giveMeThreeInts swyddogaeth. 1083 01:07:12,450 --> 01:07:16,800 Ac felly yn awr rydym yn mynd i mewn i swyddogaeth hon ac rydym yn creu ffrâm pentwr newydd ar ei chyfer. 1084 01:07:16,800 --> 01:07:20,440 Fodd bynnag, yn y ffrâm pentwr, rydym yn datgan int * dros dro, 1085 01:07:20,440 --> 01:07:23,210 sydd yn mallocs 3 gyfanrifau i ni. 1086 01:07:23,210 --> 01:07:25,880 Felly, bydd faint o int yn rhoi i ni faint o bytes y int yw, 1087 01:07:25,880 --> 01:07:29,620 a malloc yn rhoi i ni fod bytes llawer o le ar y domen. 1088 01:07:29,620 --> 01:07:32,890 Felly, yn yr achos hwn, rydym wedi creu digon o le ar gyfer 3 cyfanrifau, 1089 01:07:32,890 --> 01:07:36,830 ac mae'r domen yn ffordd i fyny yno, a dyna pam yr wyf wedi tynnu ei uwch i fyny. 1090 01:07:36,830 --> 01:07:42,900 Unwaith y byddwn ni'n ei wneud, rydym yn dod yn ôl i fyny yma, dim ond angen 3 ints dychwelyd, 1091 01:07:42,900 --> 01:07:47,000 ac yn dychwelyd y cyfeiriad, yn yr achos hwn ynghylch i ble y cof. 1092 01:07:47,000 --> 01:07:51,250 Ac rydym yn gosod pwyntydd = newid, ac i fyny yno rydym wedi dim ond un arall pwyntydd. 1093 01:07:51,250 --> 01:07:54,550 Ond beth mae hynny'n ei dychwelyd swyddogaeth yn cael ei bentyrru yma ac yn diflannu. 1094 01:07:54,550 --> 01:07:59,250 Felly dros dro yn diflannu, ond rydym yn parhau i gynnal cyfeiriad y lle 1095 01:07:59,250 --> 01:08:01,850 y 3 gyfanrifau y tu mewn prif gyflenwad. 1096 01:08:01,850 --> 01:08:06,180 Felly, yn y set, yr awgrymiadau yn cwmpasu lleol ar gyfer y ffrâm pentwr, 1097 01:08:06,180 --> 01:08:09,860 ond mae'r cof y maent yn cyfeirio yn y domen. 1098 01:08:09,860 --> 01:08:12,190 >> Ydy hynny'n gwneud synnwyr? 1099 01:08:12,190 --> 01:08:14,960 [Myfyrwyr] Allech chi ailadrodd hynny? >> [Joseph] Ydw. 1100 01:08:14,960 --> 01:08:20,270 Felly, os wyf yn mynd yn ôl dim ond ychydig bach, byddwch yn gweld bod dros dro a ddyrannwyd 1101 01:08:20,270 --> 01:08:23,500 peth cof ar y domen i fyny yno. 1102 01:08:23,500 --> 01:08:28,680 Felly, pan fydd y swyddogaeth hon, giveMeThreeInts ffurflenni, y stac yma yn mynd i ddiflannu. 1103 01:08:28,680 --> 01:08:35,819 Ac gydag ef unrhyw un o'r newidynnau, yn yr achos hwn, mae'r pwyntydd a ddyrannwyd yn y ffrâm pentwr. 1104 01:08:35,819 --> 01:08:39,649 Mae hynny yn mynd i ddiflannu, ond ers i ni ddychwelyd dro 1105 01:08:39,649 --> 01:08:46,330 ac rydym yn gosod pwyntydd = dros dro, pwyntydd sy'n awr yn mynd i ddangos y cof un lleoliad fel dros dro oedd. 1106 01:08:46,330 --> 01:08:50,370 Felly nawr, er ein bod yn colli dros dro, y pwyntydd lleol, 1107 01:08:50,370 --> 01:08:59,109 rydym yn dal i gadw y cyfeiriad cof yr hyn yr oedd pwyntio i'r tu mewn y pwyntydd amrywiol. 1108 01:08:59,109 --> 01:09:03,740 Cwestiynau? Gall hynny fod yn fath o bwnc ddryslyd os nad ydych wedi mynd dros yn adran. 1109 01:09:03,740 --> 01:09:09,240 Gallwn, eich TF fydd yn bendant yn mynd drosto ac wrth gwrs, allwn ni ateb cwestiynau 1110 01:09:09,240 --> 01:09:11,500 ar ddiwedd y sesiwn adolygu ar gyfer hyn. 1111 01:09:11,500 --> 01:09:14,220 Ond mae hyn yn fath o bwnc cymhleth, ac mae gen i mwy o enghreifftiau sydd yn mynd i ddangos i fyny 1112 01:09:14,220 --> 01:09:18,790 a fydd yn helpu i egluro beth awgrymiadau mewn gwirionedd. 1113 01:09:18,790 --> 01:09:22,500 >> Yn yr achos hwn, awgrymiadau yn cyfateb i arrays, 1114 01:09:22,500 --> 01:09:25,229 fel y gallaf jyst arfer hon pwyntydd fel yr un peth â arae int. 1115 01:09:25,229 --> 01:09:29,840 Felly rwy'n mynegeio i mewn i 0, a newid y cyfanrif cyntaf i 1, 1116 01:09:29,840 --> 01:09:39,689 newid y cyfanrif ail 2, a'r cyfanrif 3 i 3. 1117 01:09:39,689 --> 01:09:44,210 Felly mwy o wybodaeth am awgrymiadau. Wel, yn cofio Binky. 1118 01:09:44,210 --> 01:09:48,319 Yn yr achos hwn rydym wedi dyrannu pwyntydd, neu rydym yn datgan pwyntydd, 1119 01:09:48,319 --> 01:09:52,760 ond i ddechrau, pan Fi jyst datgan pwyntydd, nid yw'n pwyntio i unrhyw le yn y cof. 1120 01:09:52,760 --> 01:09:54,930 Mae'n gwerthoedd garbage yn unig y tu mewn iddo. 1121 01:09:54,930 --> 01:09:56,470 Felly, nid oes gennyf unrhyw syniad lle mae'r pwyntydd yn pwyntio i. 1122 01:09:56,470 --> 01:10:01,630 Mae ganddo gyfeiriad sydd wedi'i llenwi yn unig gyda 0 a 1 yn lle cafodd ei ddatgan i ddechrau. 1123 01:10:01,630 --> 01:10:04,810 Ni allaf wneud unrhyw beth gyda hyn nes i mi alw malloc arno 1124 01:10:04,810 --> 01:10:08,390 ac yna mae'n rhoi i mi ychydig o le ar y domen lle y gallaf roi gwerthoedd y tu mewn. 1125 01:10:08,390 --> 01:10:11,980 Yna, unwaith eto, nid wyf yn gwybod beth sydd y tu mewn y cof. 1126 01:10:11,980 --> 01:10:16,780 Felly, y peth cyntaf yn rhaid i mi ei wneud yw gwirio p'un a yw'r system wedi cael digon o gof 1127 01:10:16,780 --> 01:10:20,850 i roi i mi yn ôl 1 cyfanrif yn y lle cyntaf, a dyna pam fy mod yn gwneud hyn yn gwirio. 1128 01:10:20,850 --> 01:10:25,020 Os pwyntydd yn null, mae hynny'n golygu nad oedd digon o le neu rhyw wall arall digwydd, 1129 01:10:25,020 --> 01:10:26,320 felly ddylwn i adael allan o fy rhaglen. 1130 01:10:26,320 --> 01:10:29,400  Ond os oedd llwyddo, yn awr y gallaf ddefnyddio'r pwyntydd 1131 01:10:29,400 --> 01:10:35,020 a pha pwyntydd * yn ei wneud yn mae'n dilyn lle mae'r cyfeiriad yn 1132 01:10:35,020 --> 01:10:38,480 i ble bod y gwerth hwnnw'n, ac mae'n gosod fod yn gyfartal i 1. 1133 01:10:38,480 --> 01:10:41,850 Felly dros yma, rydym yn gwirio os yw'r cof yn bodoli. 1134 01:10:41,850 --> 01:10:45,380 >> Unwaith y byddwch yn gwybod ei fod yn bodoli, gallwch roi i mewn iddo 1135 01:10:45,380 --> 01:10:50,460 pa gwerth yr ydych am ei roi i mewn iddo yn yr achos hwn 1. 1136 01:10:50,460 --> 01:10:53,060 Unwaith y byddwn ni'n ei wneud ag ef, mae angen i chi ryddhau y pwyntydd 1137 01:10:53,060 --> 01:10:57,160 oherwydd mae angen i ni fynd yn ôl i'r system y cof eich bod yn gofyn amdanynt yn y lle cyntaf. 1138 01:10:57,160 --> 01:10:59,690 Oherwydd nad yw'r cyfrifiadur yn gwybod pan fyddwn ni'n ei wneud ag ef. 1139 01:10:59,690 --> 01:11:02,510 Yn yr achos hwn rydym yn benodol yn dweud wrtho, iawn, rydym yn ei wneud gyda'r cof. 1140 01:11:02,510 --> 01:11:10,780 Os yw rhai broses arall ei angen, mae rhai rhaglen arall ei angen, mae croeso i fynd yn ei flaen a mynd ag ef. 1141 01:11:10,780 --> 01:11:15,110 Yr hyn y gallwn hefyd ei wneud yw unig a fedrwn gael y cyfeiriad o newidynnau lleol ar y set. 1142 01:11:15,110 --> 01:11:19,080 X Felly int y tu mewn y ffrâm pentwr o brif bibellau. 1143 01:11:19,080 --> 01:11:23,060 A phan fyddwn yn defnyddio'r ampersand, hyn a gweithredwr, beth mae'n ei wneud yw 1144 01:11:23,060 --> 01:11:27,310 mae'n cymryd x, ac x yn unig yw peth data mewn cof, ond mae ganddo gyfeiriad. 1145 01:11:27,310 --> 01:11:33,790 Mae lleoli yn rhywle. Felly, drwy ffonio & x, beth yw hyn yn ei rhoi i ni y cyfeiriad x. 1146 01:11:33,790 --> 01:11:38,430 Drwy wneud hyn, ein bod yn gwneud pwynt pwyntydd i'r lle x yw yn y cof. 1147 01:11:38,430 --> 01:11:41,710 Nawr rydym yn unig yn rhywbeth fel * x, rydym yn mynd i gael 5 yn ôl. 1148 01:11:41,710 --> 01:11:43,820 Mae'r seren a elwir dereferencing hynny. 1149 01:11:43,820 --> 01:11:46,640 Eich bod yn dilyn cyfeiriad a byddwch yn cael y gwerth ei storio yno. 1150 01:11:51,000 --> 01:11:53,310 >> Unrhyw gwestiynau? Ydw? 1151 01:11:53,310 --> 01:11:56,500 [Myfyrwyr] Os nad ydych yn gwneud y peth 3-sylw at y ffaith, a yw'n dal i lunio? 1152 01:11:56,500 --> 01:11:59,490 Ydw. Os nad ydych yn gwneud y peth 3-pwyntydd, mae'n dal i fynd i lunio, 1153 01:11:59,490 --> 01:12:02,720 ond byddaf yn dangos i chi beth sy'n digwydd mewn eiliad, a heb wneud hynny, 1154 01:12:02,720 --> 01:12:04,860 dyna beth yr ydym yn galw yn gollwng cof. Nid ydych chi'n rhoi'r system 1155 01:12:04,860 --> 01:12:07,850 cefnogi ei gof, felly ar ôl tra bod y rhaglen yn mynd i gronni 1156 01:12:07,850 --> 01:12:10,940 cof nad ydynt wedi defnyddio, a gall dim byd arall ei ddefnyddio. 1157 01:12:10,940 --> 01:12:15,750 Os ydych chi wedi gweld erioed Firefox gyda 1.5 miliwn cilobeit ar eich cyfrifiadur, 1158 01:12:15,750 --> 01:12:17,840 yn y rheolwr dasg, dyna beth sy'n mynd ymlaen. 1159 01:12:17,840 --> 01:12:20,760 Mae gennych gollwng cof yn y rhaglen pan nad ydyn nhw'n trin. 1160 01:12:23,080 --> 01:12:26,240 Felly sut mae pwyntydd gweithio rhifyddol? 1161 01:12:26,240 --> 01:12:29,480 Wel, rhifyddeg pwyntydd yn fath o mynegeio tebyg mewn arae. 1162 01:12:29,480 --> 01:12:36,370 Yn yr achos hwn, mae gen i pwyntydd, a beth ddylwn i ei wneud yw fy mod yn gwneud pwynt pwyntydd i'r elfen gyntaf 1163 01:12:36,370 --> 01:12:42,100 o'r amrywiaeth o 3 gyfanrifau yr wyf wedi dyrannu. 1164 01:12:42,100 --> 01:12:46,670 Felly, yn awr yr hyn yr wyf yn ei wneud, seren pwyntydd yn newid dim ond yr elfen gyntaf yn y rhestr. 1165 01:12:46,670 --> 01:12:49,140 Star pwyntydd 1 pwynt dros yma. 1166 01:12:49,140 --> 01:12:53,140 Felly pwyntydd dros yma, pwyntydd 1 yn fwy na yma, pwyntydd 2 wedi dod i ben yma. 1167 01:12:53,140 --> 01:12:56,610 >> Felly, dim ond ychwanegu 1 yw'r un peth â symud ar hyd y casgliad. 1168 01:12:56,610 --> 01:12:59,880 Beth rydym yn ei wneud yw, pan fyddwn yn gwneud pwyntydd 1 byddwch yn cael y cyfeiriad dros yma, 1169 01:12:59,880 --> 01:13:04,180 ac er mwyn cael y gwerth yma, chi roi seren i mewn o'r mynegiant gyfan 1170 01:13:04,180 --> 01:13:05,990 i dereference hynny. 1171 01:13:05,990 --> 01:13:09,940 Felly, yn yr achos hwn, rwy'n gosod y lleoliad cyntaf yn y arae i 1, 1172 01:13:09,940 --> 01:13:13,970 ail leoliad i 2, a lleoliad trydydd 3. 1173 01:13:13,970 --> 01:13:18,180 Yna beth rwy'n ei wneud dros yma yw fy mod i'n argraffu ein pwyntydd +1, 1174 01:13:18,180 --> 01:13:19,970 a dim ond yn rhoi i mi 2. 1175 01:13:19,970 --> 01:13:23,650 Nawr rwy'n incrementing pwyntydd, felly pwyntydd hafal pwyntydd +1, 1176 01:13:23,650 --> 01:13:26,780 sy'n symud yn ei flaen. 1177 01:13:26,780 --> 01:13:30,810 Ac felly yn awr, os wyf argraffu pwyntydd +1, pwyntydd 1 yn awr yn 3, 1178 01:13:30,810 --> 01:13:33,990 sydd yn yr achos hwn yn argraffu 3. 1179 01:13:33,990 --> 01:13:36,560 Ac er mwyn rywbeth rhad ac am ddim, mae'r pwyntydd fy mod yn rhoi 1180 01:13:36,560 --> 01:13:40,540 Rhaid fod yn pwyntio ar ddechrau'r y rhesi yr wyf yn got yn ôl o malloc. 1181 01:13:40,540 --> 01:13:43,430 Felly, yn yr achos hwn, pe bawn i alw 3 dde yma, ni fyddai hyn yn iawn, 1182 01:13:43,430 --> 01:13:45,070 oherwydd ei fod yn nghanol y rhesi. 1183 01:13:45,070 --> 01:13:48,820 Rhaid i mi dynnu i gyrraedd y lleoliad gwreiddiol 1184 01:13:48,820 --> 01:13:50,420 y fan a'r lle cyntaf cychwynnol cyn y gallaf ei rhyddhau. 1185 01:13:56,300 --> 01:13:58,450 Felly, dyma enghraifft mwy o ran. 1186 01:13:58,450 --> 01:14:03,360 Yn yr achos hwn, rydym yn dyrannu 7 cymeriadau mewn amrywiaeth cymeriad. 1187 01:14:03,360 --> 01:14:06,480 >> Ac yn yr achos hwn yr hyn rydym yn ei wneud yw ein bod yn dolennu dros y 6 cyntaf ohonynt, 1188 01:14:06,480 --> 01:14:09,900 ac rydym yn eu gosod i Z. 1189 01:14:09,900 --> 01:14:13,350 Felly, ar gyfer int i = 0, i> 6, i + +, 1190 01:14:13,350 --> 01:14:16,220 Felly, pwyntydd + fi fydd yn unig yn rhoi i ni, yn yr achos hwn, 1191 01:14:16,220 --> 01:14:20,860 pwyntydd, pwyntydd +1, pwyntydd +2, pwyntydd +3, ac yn y blaen ac yn y blaen yn y ddolen. 1192 01:14:20,860 --> 01:14:24,040 Beth mae'n mynd i wneud yw ei fod yn cael y cyfeiriad hwnnw, dereferences i gael y gwerth, 1193 01:14:24,040 --> 01:14:27,440 a newidiadau sy'n werth i Z. 1194 01:14:27,440 --> 01:14:30,350 Yna ar y diwedd yn cofio hyn yn llinyn, dde? 1195 01:14:30,350 --> 01:14:33,560 Mae pob llinynnau wedi dod i ben â chymeriad null terfynu. 1196 01:14:33,560 --> 01:14:38,620 Felly, beth rwy'n ei wneud yn pwyntydd 6 I rhoi'r cymeriad terminator null mewn 1197 01:14:38,620 --> 01:14:43,980 Ac yn awr beth rwy'n ei wneud yn y bôn dros yma yn gweithredu printf ar gyfer llinyn, dde? 1198 01:14:43,980 --> 01:14:46,190 >> Felly, pryd mae printf awr pan mae'n cyrraedd diwedd y llinyn? 1199 01:14:46,190 --> 01:14:48,230 Pan fydd yn taro cymeriad null terfynu. 1200 01:14:48,230 --> 01:14:52,030 Felly, yn yr achos hwn, fy mhwyntiau pwyntydd gwreiddiol i ddechrau'r casgliad. 1201 01:14:52,030 --> 01:14:56,410 I argraffu y nod cyntaf allan. I symud dros un. 1202 01:14:56,410 --> 01:14:58,420 I argraffu y cymeriad allan. I symud drosodd. 1203 01:14:58,420 --> 01:15:02,180 Ac yr wyf yn parhau i wneud hyn nes i mi gyrraedd y diwedd. 1204 01:15:02,180 --> 01:15:07,750 Ac yn awr y diwedd pwyntydd * yn dereference hyn ac yn cael y cymeriad null terfynu yn ôl. 1205 01:15:07,750 --> 01:15:11,780 Ac felly mae fy dolen tra bod yn rhedeg dim ond pan na bod y gwerth hwnnw'n cymeriad null terfynu. 1206 01:15:11,780 --> 01:15:13,770 Felly, yn awr yr wyf adael allan o'r ddolen. 1207 01:15:18,780 --> 01:15:21,180 Ac felly os wyf yn tynnu 6 o hwn pwyntydd, 1208 01:15:21,180 --> 01:15:22,860 I fynd yn ôl yr holl ffordd i'r dechrau. 1209 01:15:22,860 --> 01:15:27,880 Cofiwch, yr wyf i'n gwneud hyn oherwydd rhaid i mi fynd i'r dechrau er mwyn rhyddhau ei. 1210 01:15:27,880 --> 01:15:30,270 >> Felly, yr wyf yn gwybod a oedd yn llawer. A oes unrhyw gwestiynau? 1211 01:15:30,270 --> 01:15:31,870 Os gwelwch yn dda, ie? 1212 01:15:31,870 --> 01:15:36,610 [Myfyrwyr annealladwy cwestiwn] 1213 01:15:36,610 --> 01:15:38,190 Allwch chi ddweud bod uwch? Mae'n ddrwg gennym. 1214 01:15:38,190 --> 01:15:44,140 [Myfyrwyr] Ar y sleid olaf dde cyn i chi ryddhau y pwyntydd, 1215 01:15:44,140 --> 01:15:47,300 ble cawsoch chi mewn gwirionedd yn newid gwerth y pwyntydd? 1216 01:15:47,300 --> 01:15:50,370 [Joseph] Felly, ar y dde yma. >> [Myfyrwyr] O, iawn. 1217 01:15:50,370 --> 01:15:51,890 [Joseph] Felly, mae gen i pwyntydd minws minws, ar y dde, 1218 01:15:51,890 --> 01:15:54,140 sy'n symud y peth yn ôl un, ac yna yr wyf rhyddhau ei, 1219 01:15:54,140 --> 01:15:57,000 gan fod hyn yn pwyntydd rhaid tynnu sylw at y dechrau y rhesi. 1220 01:15:57,000 --> 01:16:00,420 [Myfyrwyr] Ond ni fyddai ei angen wedi i chi roi'r gorau ar ôl y llinell. 1221 01:16:00,420 --> 01:16:03,130 [Joseph] Felly, os wyf wedi dod i ben ar ôl hyn, byddai hyn yn cael ei ystyried yn gollwng cof, 1222 01:16:03,130 --> 01:16:04,810 oherwydd doeddwn i ddim yn rhedeg rhad ac am ddim. 1223 01:16:04,810 --> 01:16:11,290 [Myfyrwyr] I [annealladwy] ar ôl y tair llinell gyntaf lle cawsoch pwyntydd 1 [annealladwy]. 1224 01:16:11,290 --> 01:16:13,140 [Joseph] Uh-huh. Felly, beth y cwestiwn yna? 1225 01:16:13,140 --> 01:16:14,780 Mae'n ddrwg gennym. Na, na. Ewch, ewch, os gwelwch yn dda. 1226 01:16:14,780 --> 01:16:16,870 [Myfyrwyr] Felly, nid ydych yn newid y gwerth awgrymiadau. 1227 01:16:16,870 --> 01:16:19,130 Fyddech chi ddim wedi gorfod gwneud pwyntydd minws minws. 1228 01:16:19,130 --> 01:16:19,730 [Joseph] Ie, yn union. 1229 01:16:19,730 --> 01:16:21,890 Felly, pan fyddaf yn gwneud pwyntydd +1 a pwyntydd +2, 1230 01:16:21,890 --> 01:16:24,410 Dydw i ddim yn gwneud pwyntydd yn hafal pwyntydd +1. 1231 01:16:24,410 --> 01:16:27,260 Felly, mae'r pwyntydd yn unig yn aros pwyntio ar ddechrau'r y rhesi. 1232 01:16:27,260 --> 01:16:31,460 Dim ond pan fyddaf yn gwneud a mwy a mwy bod yn gosod y gwerth yn ôl y tu mewn i'r pwyntydd, 1233 01:16:31,460 --> 01:16:33,550 ei fod mewn gwirionedd yn symud hyn ymlaen. 1234 01:16:36,860 --> 01:16:37,780 Mae pob hawl. 1235 01:16:40,550 --> 01:16:42,030 Mwy o gwestiynau? 1236 01:16:44,680 --> 01:16:47,790 >> Unwaith eto, os yw hyn yn fath o llethol, bydd hyn yn cael eu cynnwys yn y sesiwn. 1237 01:16:47,790 --> 01:16:50,710 Gofynnwch i'ch cyd-ddysgu am y peth, a gallwn ateb cwestiynau ar y diwedd. 1238 01:16:53,510 --> 01:16:56,600 Ac fel arfer nid ydym yn hoffi ei wneud y peth minws. 1239 01:16:56,600 --> 01:16:59,760 Mae hyn wedi ei gwneud yn ofynnol i mi gadw golwg ar faint rwyf wedi gwrthbwyso yn y rhesi. 1240 01:16:59,760 --> 01:17:04,520 Felly, yn gyffredinol, mae hyn yn unig i esbonio sut mae pwyntydd rhifyddeg. 1241 01:17:04,520 --> 01:17:07,970 Ond yr hyn rydym fel arfer yn hoffi ei wneud yw ein bod yn awyddus i greu copi o'r pwyntydd, 1242 01:17:07,970 --> 01:17:11,640 ac yna byddwn yn defnyddio'r copi pan fyddwn yn symud o gwmpas yn y llinyn. 1243 01:17:11,640 --> 01:17:14,660 Felly, yn y achos y byddwch yn defnyddio'r copi i argraffu y llinyn cyfan, 1244 01:17:14,660 --> 01:17:19,040 ond nid oes raid i ni ei wneud fel pwyntydd minws 6 neu gadw llygad ar faint yr ydym yn symud yn hyn, 1245 01:17:19,040 --> 01:17:22,700 dim ond oherwydd ein bod yn gwybod bod ein pwynt gwreiddiol yn cael ei sylw at y ffaith o hyd i ddechrau'r rhestr 1246 01:17:22,700 --> 01:17:25,340 ac yr ydym yn newid oedd y copi hwn. 1247 01:17:25,340 --> 01:17:28,250 Felly, yn gyffredinol, yn newid copïau o'ch pwyntydd gwreiddiol. 1248 01:17:28,250 --> 01:17:32,350 Peidiwch â cheisio datrys o fel - peidiwch newid copïau gwreiddiol. 1249 01:17:32,350 --> 01:17:35,290 Mae ceisio newid dim ond copďau o'ch gwreiddiol. 1250 01:17:41,540 --> 01:17:44,870 Felly, byddwch yn sylwi pan fyddwn yn pasio y llinyn i mewn i printf 1251 01:17:44,870 --> 01:17:48,990 Nid oes rhaid i chi roi seren o'i flaen fel y gwnaethom gyda'r holl dereferences eraill, dde? 1252 01:17:48,990 --> 01:17:54,180 Felly, os ydych yn argraffu'r s llinyn% gyfan yn disgwyl yn gyfeiriad, 1253 01:17:54,180 --> 01:17:57,610 ac yn yr achos hwn pwyntydd neu yn yr achos hwn fel amrywiaeth o gymeriadau. 1254 01:17:57,610 --> 01:18:00,330 >> Cymeriadau, cols * s, a rhesi yn yr un peth. 1255 01:18:00,330 --> 01:18:03,690 Pointer yw cymeriadau, a arrays cymeriad yn yr un peth. 1256 01:18:03,690 --> 01:18:05,720 Ac felly, y cyfan mae'n rhaid i ni ei wneud yw pasio yn y pwyntydd. 1257 01:18:05,720 --> 01:18:08,150 Nid oes rhaid i ni basio yn yr un pwyntydd * neu unrhyw beth fel 'na. 1258 01:18:13,110 --> 01:18:14,930 Felly, araeau ac awgrymiadau yn yr un peth. 1259 01:18:14,930 --> 01:18:19,160 Pan fyddwch chi'n gwneud rhywbeth fel x [y] dros yma am array, 1260 01:18:19,160 --> 01:18:21,960 yr hyn y mae'n ei wneud o dan y cwfl yn ei fod yn dweud, iawn, mae'n amrywiaeth cymeriad, 1261 01:18:21,960 --> 01:18:23,690 felly mae'n pwyntydd. 1262 01:18:23,690 --> 01:18:26,510 Ac felly x yr un peth, 1263 01:18:26,510 --> 01:18:28,650 ac felly yr hyn y mae'n ei wneud yw ei fod yn ychwanegu y x i, 1264 01:18:28,650 --> 01:18:31,820 sef yr un peth â symud ymlaen mewn cof bod llawer. 1265 01:18:31,820 --> 01:18:34,930 Ac yn awr x + y rhoi rhyw fath o gyfeiriad, 1266 01:18:34,930 --> 01:18:37,570 ac rydym yn dereference y cyfeiriad neu dilynwch y saeth 1267 01:18:37,570 --> 01:18:41,640 i ble y lleoliad hwnnw yn y cof yw, ac rydym yn cael y gwerth allan o'r lleoliad yn y cof. 1268 01:18:41,640 --> 01:18:43,720 Felly, felly mae'r ddau yn union yr un peth. 1269 01:18:43,720 --> 01:18:45,840 Mae'n dim ond siwgr cystrawennol. 1270 01:18:45,840 --> 01:18:48,090 Maent yn gwneud yr un peth. Maent yn unig syntactics gwahanol ar gyfer pob eraill. 1271 01:18:51,500 --> 01:18:57,590 >> Felly, beth all fynd o'i le gyda awgrymiadau? Fel, lawer. Iawn. Felly, pethau drwg. 1272 01:18:57,590 --> 01:19:02,410 Nid yw rhai pethau drwg y gallwch ei wneud yn gwirio os yw eich galwad malloc dychwelyd null, dde? 1273 01:19:02,410 --> 01:19:06,560 Yn yr achos hwn, rwy'n gofyn i'r system i roi i mi - beth yw y rhif hwnnw? 1274 01:19:06,560 --> 01:19:11,200 Fel 2 biliwn o weithiau 4, oherwydd maint y cyfanrif yw 4 bytes. 1275 01:19:11,200 --> 01:19:13,810 Rwy'n gofyn iddo am debyg 8000000000 bytes. 1276 01:19:13,810 --> 01:19:17,270 Wrth gwrs, nid fy nghyfrifiadur yn mynd i fod yn gallu ei roi imi y cefn lawer o gof. 1277 01:19:17,270 --> 01:19:20,960 Ac nid oeddem yn gwirio os yw hyn yn null, felly pan fyddwn yn ceisio dereference yn y fan honno - 1278 01:19:20,960 --> 01:19:24,270 ddilyn y saeth i ble mae'n mynd i - nid oes gennym y cof. 1279 01:19:24,270 --> 01:19:27,150 Dyma'r hyn yr ydym yn galw dereferencing pwyntydd nwl. 1280 01:19:27,150 --> 01:19:29,710 Ac mae hyn yn ei hanfod yn gwneud i chi segfault. 1281 01:19:29,710 --> 01:19:31,790 Mae hwn yn un o'r ffyrdd y gallwch segfault. 1282 01:19:34,090 --> 01:19:38,090 Pethau drwg eraill y gallwch chi ei wneud - oh yn dda. 1283 01:19:38,090 --> 01:19:40,650 Yr oedd hynny'n dereferencing pwyntydd nwl. Iawn. 1284 01:19:40,650 --> 01:19:45,160 Pethau drwg eraill - yn dda, at atgyweiria ond eich bod yn rhoi siec i mewn 'na 1285 01:19:45,160 --> 01:19:46,980 sy'n gwirio p'un a yw'r pwyntydd yn null 1286 01:19:46,980 --> 01:19:51,000 ac yn gadael allan o'r rhaglen pe bai'n digwydd bod malloc yn dychwelyd pwyntydd nwl. 1287 01:19:55,110 --> 01:19:59,850 Dyna y comic xkcd. Mae pobl yn deall yn awr. Trefnu o. 1288 01:20:06,120 --> 01:20:09,350 >> Felly, cof. Ac yr wyf yn mynd dros hyn. 1289 01:20:09,350 --> 01:20:12,000 Rydym yn galw malloc mewn cylch, ond bob tro rydym yn galw malloc 1290 01:20:12,000 --> 01:20:14,370 rydym yn colli golwg ar ble y pwyntydd yn pwyntio at, 1291 01:20:14,370 --> 01:20:15,750 oherwydd ein bod yn clobbering ei. 1292 01:20:15,750 --> 01:20:18,410 Felly, yr alwad gychwynnol i malloc yn rhoi i mi cof dros yma. 1293 01:20:18,410 --> 01:20:19,990 Fy awgrymiadau pwyntydd i hyn. 1294 01:20:19,990 --> 01:20:23,020 Nawr, nid wyf yn rhyddhau, felly yn awr yr wyf yn galw malloc eto. 1295 01:20:23,020 --> 01:20:26,070 Nawr mae'n cyfeirio dros yma. Nawr fy nghof yn pwyntio dros yma. 1296 01:20:26,070 --> 01:20:27,640 Pwyntio dros yma. Pwyntio dros yma. 1297 01:20:27,640 --> 01:20:31,820 Ond rydw i wedi colli golwg ar y chyfeiriadau pob un o'r cof dros yma fy mod yn dyrannu. 1298 01:20:31,820 --> 01:20:35,100 Ac felly yn awr nid oes gennyf unrhyw gyfeiriad atynt anymore. 1299 01:20:35,100 --> 01:20:37,230 Felly, ni allaf rhyddhau nhw y tu allan i'r ddolen. 1300 01:20:37,230 --> 01:20:39,390 Ac felly er mwyn trwsio rhywbeth fel hyn, 1301 01:20:39,390 --> 01:20:42,250 os byddwch yn anghofio i gof am ddim a byddwch yn cael y datgeliad hwn cof, 1302 01:20:42,250 --> 01:20:45,810 Mae'n rhaid i chi ryddhau cof mewnol y ddolen unwaith y byddwch yn ei wneud ag ef. 1303 01:20:45,810 --> 01:20:51,400 Wel, dyma beth sy'n digwydd. Yr wyf yn gwybod llawer ohonoch casineb hyn. 1304 01:20:51,400 --> 01:20:55,270 Ond yn awr - yay! Byddwch yn cael fel 44,000 cilobeit. 1305 01:20:55,270 --> 01:20:57,110 Felly, rydych rhyddhau ar ddiwedd y ddolen, 1306 01:20:57,110 --> 01:20:59,770 ac mae hynny'n mynd i jyst ddim y cof bob tro. 1307 01:20:59,770 --> 01:21:03,620 Yn y bôn, nid yw eich rhaglen yn cael yn gollwng cof anymore. 1308 01:21:03,620 --> 01:21:08,150 >> Ac yn awr rhywbeth arall y gallwch chi ei wneud yw rhyddhau peth cof eich bod wedi gofyn am ddwywaith. 1309 01:21:08,150 --> 01:21:11,060 Yn yr achos hwn, rydych yn rhywbeth malloc, byddwch yn newid ei werth. 1310 01:21:11,060 --> 01:21:13,140 Byddwch yn rhyddhau unwaith oherwydd dywedasoch eich bod yn ei wneud ag ef. 1311 01:21:13,140 --> 01:21:14,940 Ond yna rydym yn rhyddhau eto. 1312 01:21:14,940 --> 01:21:16,730 Mae hyn yn rhywbeth sy'n eithaf gwael. 1313 01:21:16,730 --> 01:21:18,820 Dyw hi ddim yn mynd i ddechrau segfault, 1314 01:21:18,820 --> 01:21:23,350 ond ar ôl tra bod yr hyn yw hyn yn cael ei rhyddhau ddwbl hyn yn llygru eich strwythur domen, 1315 01:21:23,350 --> 01:21:27,200 a byddwch yn dysgu ychydig mwy am hyn os ydych yn dewis i gymryd dosbarth fel CS61. 1316 01:21:27,200 --> 01:21:30,000 Ond yn y bôn ar ôl tra bydd eich cyfrifiadur yn mynd i fynd yn ddryslyd 1317 01:21:30,000 --> 01:21:33,010 am yr hyn y lleoliadau cof yn lle a lle mae'n cael ei storio - 1318 01:21:33,010 --> 01:21:34,800 lle mae data yn cael ei storio yn y cof. 1319 01:21:34,800 --> 01:21:38,080 Ac felly rhyddhau pwyntydd ddwywaith yn beth drwg nad ydych am ei wneud. 1320 01:21:38,080 --> 01:21:41,600 >> Nid yw pethau eraill a all fynd o'i le yn defnyddio sizeof. 1321 01:21:41,600 --> 01:21:44,460 Felly, yn yr achos hwn byddwch malloc 8 bytes, 1322 01:21:44,460 --> 01:21:46,700 a dyna yr un peth â dau rif cyfan, dde? 1323 01:21:46,700 --> 01:21:49,580 Felly, mae hynny'n gwbl ddiogel, ond a yw'n? 1324 01:21:49,580 --> 01:21:52,160 Wel, fel Lucas trafod ar wahanol saernïaeth, 1325 01:21:52,160 --> 01:21:54,220 gyfanrifau o wahanol hyd. 1326 01:21:54,220 --> 01:21:57,970 Felly, ar yr offer yr ydych yn ei ddefnyddio, cyfanrifau tua 4 bytes, 1327 01:21:57,970 --> 01:22:02,370 ond ar rai system arall y gallent fod yn 8 bytes neu efallai y byddant yn 16 bytes. 1328 01:22:02,370 --> 01:22:05,680 Felly, os mai dim ond defnyddio'r rhif hwn dros yma, 1329 01:22:05,680 --> 01:22:07,310 Efallai y rhaglen hon yn gweithio ar y peiriant, 1330 01:22:07,310 --> 01:22:10,360 ond nid yw'n mynd i ddyrannu digon o gof ar rai system arall. 1331 01:22:10,360 --> 01:22:14,020 Yn yr achos hwn, dyma'r hyn y mae'r gweithredwr sizeof ei ddefnyddio ar gyfer. 1332 01:22:14,020 --> 01:22:16,880 Pan fyddwn yn galw sizeof (canolradd), beth mae hyn yn ei wneud yn 1333 01:22:16,880 --> 01:22:21,910  mae'n rhoi i ni faint o cyfanrif ar y system bod y rhaglen yn rhedeg. 1334 01:22:21,910 --> 01:22:25,490 Felly, yn yr achos hwn, bydd sizeof (int) yn dychwelyd 4 ar rywbeth fel y peiriant, 1335 01:22:25,490 --> 01:22:29,980 ac yn awr 4 y ewyllys * 2, sydd 8, 1336 01:22:29,980 --> 01:22:32,330 sydd yn unig yw faint o le sy'n angenrheidiol ar gyfer dau rif cyfan. 1337 01:22:32,330 --> 01:22:36,710 Ar system wahanol, os int yn debyg 16 bytes neu 8 bytes, 1338 01:22:36,710 --> 01:22:39,380 'i' jyst yn mynd i ddychwelyd bytes digon i storio y swm hwnnw. 1339 01:22:41,830 --> 01:22:45,310 >> Ac yn olaf, structs. 1340 01:22:45,310 --> 01:22:48,340 Felly, os ydych chi eisiau i storio bwrdd sudoku mewn cof, sut ydym yn gwneud hyn? 1341 01:22:48,340 --> 01:22:51,570 Efallai y byddwch yn meddwl fel newidyn ar gyfer y peth cyntaf, 1342 01:22:51,570 --> 01:22:53,820 newidyn ar gyfer yr ail beth, newidyn ar gyfer y trydydd peth, 1343 01:22:53,820 --> 01:22:56,420 newidyn am y peth bedwaredd - drwg, cywir? 1344 01:22:56,420 --> 01:23:00,750 Felly, un gwelliant y gallwch ei wneud ar ben hyn yw gwneud o 9 x 9 amrywiaeth. 1345 01:23:00,750 --> 01:23:04,480 Mae hynny'n iawn, ond beth os ydych eisiau i gysylltu pethau eraill gyda bwrdd sudoku 1346 01:23:04,480 --> 01:23:06,490 hoffi'r hyn yr anhawster y bwrdd yw, 1347 01:23:06,490 --> 01:23:11,740 neu, er enghraifft, beth yw eich sgôr, neu faint o amser mae wedi cymryd chi i ddatrys y bwrdd? 1348 01:23:11,740 --> 01:23:14,970 Wel, beth allwch chi ei wneud yw y gallwch chi greu strwythur. 1349 01:23:14,970 --> 01:23:18,910 Beth allaf i ddim yn y bôn ddweud yw Rwy'n diffinio strwythur hwn dros yma, 1350 01:23:18,910 --> 01:23:23,230 ac rwy'n diffinio bwrdd sudoku sy'n cynnwys bwrdd sydd yn 9 x 9. 1351 01:23:23,230 --> 01:23:26,650 >> A beth mae wedi ganddo awgrymiadau ar gyfer enw y lefel. 1352 01:23:26,650 --> 01:23:30,730 Mae hefyd yn x ac y, sef y cyfesurynnau lle fy mod yn iawn yn awr. 1353 01:23:30,730 --> 01:23:35,980 Mae hefyd wedi treulio amser [annealladwy], ac mae cyfanswm nifer y symudiadau rwyf wedi mewnbynnu hyd yn hyn. 1354 01:23:35,980 --> 01:23:40,010 Ac felly yn yr achos hwn, gallaf grwpio criw cyfan o ddata i mewn dim ond un strwythur 1355 01:23:40,010 --> 01:23:42,790 yn hytrach na chael ei hoffi hedfan o gwmpas mewn fel newidynnau gwahanol 1356 01:23:42,790 --> 01:23:44,540 na allaf gadw golwg. 1357 01:23:44,540 --> 01:23:49,720 Ac mae hyn yn gadael inni gael dim ond cystrawen neis ar gyfer math o bethau gwahanol cyfeirio mewnol y strwythur. 1358 01:23:49,720 --> 01:23:53,430 Yn unig y gallaf ei wneud board.board, ac yr wyf yn cael y bwrdd Sudoku yn ôl. 1359 01:23:53,430 --> 01:23:56,320 Board.level, i mi gael pa mor anodd ydyw. 1360 01:23:56,320 --> 01:24:00,540 Board.x a board.y yn rhoi i mi y cyfesurynnau lle y gallai i yn y bwrdd. 1361 01:24:00,540 --> 01:24:04,730 Ac felly rwy'n cael mynediad hyn a alwn yn feysydd yn y strwythur. 1362 01:24:04,730 --> 01:24:08,840 Mae hwn yn diffinio sudokuBoard, sy'n fath sydd gennyf. 1363 01:24:08,840 --> 01:24:14,800 Ac yn awr ein bod ni yma. Mae gen i amrywiol o'r enw "bwrdd" o sudokuBoard fath. 1364 01:24:14,800 --> 01:24:18,820 Ac felly nawr gallaf gael mynediad i'r holl feysydd sy'n gwneud i fyny strwythur hwn dros yma. 1365 01:24:20,830 --> 01:24:22,450 >> Unrhyw gwestiynau am structs? Ydw? 1366 01:24:22,450 --> 01:24:25,890 [Myfyrwyr] I int x, y, i chi ddatgan ddau ar un llinell? >> [Joseph] Uh-huh. 1367 01:24:25,890 --> 01:24:27,400 [Myfyrwyr] Felly, allech chi jyst yn gwneud hynny â phob un ohonynt? 1368 01:24:27,400 --> 01:24:31,200 Fel yn x, amseroedd coma y cyfanswm hwnnw? 1369 01:24:31,200 --> 01:24:34,460 [Joseph] Ie, fe allech chi yn bendant yn gwneud hynny, ond y rheswm yr wyf yn rhoi x ac y ar yr un llinell - 1370 01:24:34,460 --> 01:24:36,330 a'r cwestiwn yw y gall pam ein bod dim ond gwneud hyn ar yr un llinell? 1371 01:24:36,330 --> 01:24:38,600 Pam nad ydym yn unig yn rhoi pob un o'r rhain ar yr un llinell yn 1372 01:24:38,600 --> 01:24:42,090 x ac y yn perthyn i'w gilydd, 1373 01:24:42,090 --> 01:24:44,780 ac mae hyn yn unig yw arddull yn fwy cywir, ar un ystyr, 1374 01:24:44,780 --> 01:24:46,600 oherwydd ei fod yn grwpio dau beth ar yr un llinell 1375 01:24:46,600 --> 01:24:49,340 y math tebyg o ymwneud â'r un peth. 1376 01:24:49,340 --> 01:24:51,440 Ac yr wyf yn jyst rhannu'r rhain ar wahân. Mae'n dim ond beth arddull. 1377 01:24:51,440 --> 01:24:53,720 Mae'n weithredol yn gwneud unrhyw wahaniaeth o gwbl. 1378 01:24:58,150 --> 01:24:59,270 Unrhyw gwestiynau eraill ar structs? 1379 01:25:03,030 --> 01:25:06,620 Gallwch ddiffinio Pokédex gyda strwythur. 1380 01:25:06,620 --> 01:25:11,720 Mae Pokémon nifer ac mae ganddo lythyr, yn berchennog, math. 1381 01:25:11,720 --> 01:25:16,990 Ac yna os oes gennych amrywiaeth o Pokémon, gallwch wneud i fyny Pokédex, dde? 1382 01:25:16,990 --> 01:25:20,810 Iawn, oer. Felly, cwestiynau ar structs. Mae'r rhain yn ymwneud â structs. 1383 01:25:20,810 --> 01:25:25,270 >> Yn olaf, GDB. Beth mae GDB gadael i chi ei wneud? Mae'n gadael i chi dadfygio eich rhaglen. 1384 01:25:25,270 --> 01:25:27,650 Ac os nad ydych wedi defnyddio GDB, byddwn yn argymell gwylio y tymor byr 1385 01:25:27,650 --> 01:25:31,250 a dim ond yn mynd dros yr hyn GDB yw, sut rydych yn gweithio ag ef, sut y gallech ei ddefnyddio, 1386 01:25:31,250 --> 01:25:32,900 ac yn ei brofi ar raglen. 1387 01:25:32,900 --> 01:25:37,400 Ac felly pa GDB yn gadael i chi ei wneud yw ei fod yn gadael oedi y [annealladwy] i fyny eich rhaglen 1388 01:25:37,400 --> 01:25:38,920 a llinell ymarferol. 1389 01:25:38,920 --> 01:25:42,600 Er enghraifft, rwyf am i weithredu fel oedi ar linell 3 o fy rhaglen, 1390 01:25:42,600 --> 01:25:46,010 ac er fy mod mod yn llinell 3 gallaf argraffu holl werthoedd sydd yno. 1391 01:25:46,010 --> 01:25:49,710 Ac felly yr hyn a alwn yn hoffi oedi mewn llinell 1392 01:25:49,710 --> 01:25:52,350 yn cael ei rydym yn galw hyn yn rhoi torbwynt ar y llinell 1393 01:25:52,350 --> 01:25:55,920 ac yna gallwn argraffu'r newidynnau ar gyflwr y rhaglen ar y pryd. 1394 01:25:55,920 --> 01:25:58,990 >> Gallwn wedyn oddi yno camu drwy'r rhaglen llinell wrth linell. 1395 01:25:58,990 --> 01:26:03,200 Ac yna gallwn edrych ar gyflwr y pentwr ar y pryd. 1396 01:26:03,200 --> 01:26:08,600 Ac felly er mwyn defnyddio GDB, yr hyn rydym yn ei wneud yw ein ffonio clang ar y ffeil C, 1397 01:26:08,600 --> 01:26:11,290 ond mae'n rhaid i basio y ggdb-faner. 1398 01:26:11,290 --> 01:26:15,850 Ac unwaith y byddwn ni'n ei wneud gyda ein bod yn jyst hidla gdb ar y ffeil allbwn sy'n deillio ohono. 1399 01:26:15,850 --> 01:26:18,810 Ac felly byddwch yn cael rhywfaint màs tebyg o destun fel hyn, 1400 01:26:18,810 --> 01:26:21,990 ond mewn gwirionedd y cyfan sydd raid i chi ei wneud yw teipio gorchmynion ar y dechrau. 1401 01:26:21,990 --> 01:26:24,250 Egwyl yn rhoi prif torbwynt yn y prif. 1402 01:26:24,250 --> 01:26:28,470 Rhestr 400 yn rhestru'r linellau o god o amgylch llinell 400. 1403 01:26:28,470 --> 01:26:31,410 Ac felly yn yr achos hwn gallwch edrych o gwmpas a dweud, oh, 1404 01:26:31,410 --> 01:26:34,360 Rwyf am osod torbwynt yn llinell 397, sef y llinell hon, 1405 01:26:34,360 --> 01:26:37,170 ac yna eich rhaglen yn rhedeg i mewn y cam hwnnw ac mae'n mynd i dorri. 1406 01:26:37,170 --> 01:26:41,120 Mae'n mynd i oedi yno, a gallwch argraffu, er enghraifft, gwerth isel neu uchel. 1407 01:26:41,120 --> 01:26:46,410 Ac felly mae criw o orchmynion angen i chi wybod, 1408 01:26:46,410 --> 01:26:48,660 a bydd y sioe sleidiau mynd i fyny ar y wefan, 1409 01:26:48,660 --> 01:26:54,000 felly os ydych am i gyfeirio at y rhain neu os hoffech eu rhoi ar eich taflenni twyllo, mae croeso. 1410 01:26:54,000 --> 01:27:00,650 >> Cool. Dyna oedd Cwis Adolygu 0, a byddwn yn ffon o gwmpas os oes gennych unrhyw gwestiynau. 1411 01:27:00,650 --> 01:27:03,850 Mae pob hawl. 1412 01:27:03,850 --> 01:27:09,030 >>  [Cymeradwyaeth] 1413 01:27:09,030 --> 01:27:13,000 >> [CS50.TV]