1 00:00:00,000 --> 00:00:02,270 >> [Adolygiad: Cwis 1] 2 00:00:02,270 --> 00:00:04,620 [Ali Nahm, Oreoluwa Barbarinsa, Lucas Freitas, Rob Bowden] [Prifysgol Harvard] 3 00:00:04,620 --> 00:00:07,660 [Mae hyn yn CS50.] [CS50.TV] 4 00:00:07,660 --> 00:00:11,610 [Lucas Freitas] Croeso i bawb. Mae hyn yn cael ei adolygu ar gyfer cwis 1. 5 00:00:11,610 --> 00:00:15,040 Yn union fel ymwadiad, mae hyn yn - yr wyf yn golygu, rydym yn mynd i geisio i dalu 6 00:00:15,040 --> 00:00:17,770 cymaint o ddeunydd â phosibl, ond nid yw hynny'n golygu bod 7 00:00:17,770 --> 00:00:20,780 rydym yn mynd i dalu am yr holl bethau a all fod mewn cwis 1. 8 00:00:20,780 --> 00:00:25,270 Felly gwnewch yn siŵr eich bod hefyd yn edrych ar darlith, adrannau, mae popeth yr ydych yn gallu. 9 00:00:25,270 --> 00:00:28,240 Cwis 1 yn mynd i fod ar ddydd Mercher, ddydd Mercher nesaf. 10 00:00:28,240 --> 00:00:33,800 Felly, gofalwch eich bod yn astudio. Mae'n mynd i fod, 'n bert lawer, fel y cwis cyntaf 11 00:00:33,800 --> 00:00:36,390 ynghylch ei fformat, ond mae'n debyg ei fod yn mynd i fod yn llawer anoddach. 12 00:00:36,390 --> 00:00:39,600 O leiaf, y llynedd pan gymerais 50, yr wyf yn meddwl ei fod yn llawer anoddach. 13 00:00:39,600 --> 00:00:42,410 Felly, yn astudio llawer. 14 00:00:42,410 --> 00:00:45,190 >> Rydw i'n mynd i dalu am strwythurau data a Huffman codio. 15 00:00:45,190 --> 00:00:47,910 Mae hyn yn rhywbeth y mae llawer o bobl yn meddwl yn gymhleth, 16 00:00:47,910 --> 00:00:51,930 ond rwy'n mynd i geisio ei gwneud mor hawdd â phosibl. 17 00:00:51,930 --> 00:00:56,330 Yn gyntaf oll, yr hyn yr ydym am i chi guys i wybod am cwis 1 yw 18 00:00:56,330 --> 00:01:00,970 deall y disgrifiadau cysyniadol pob un o'r strwythurau data fy mod i'n mynd i gyflwyno. 19 00:01:00,970 --> 00:01:03,960 Mae hynny'n golygu nad oes rhaid i chi mewn gwirionedd 20 00:01:03,960 --> 00:01:07,020 gweithredu tabl hash yn eich cwis 1. 21 00:01:07,020 --> 00:01:10,250 Nid ydym am i chi i weithredu tabl hash cyfan; efallai byddwn yn ceisio 22 00:01:10,250 --> 00:01:13,090 i wneud i chi weithredu rhai swyddogaethau, 23 00:01:13,090 --> 00:01:16,940 gweithrediadau mwyaf cyffredin, ond nid ydym yn mynd i wneud i chi roi popeth. 24 00:01:16,940 --> 00:01:21,010 Felly mae'n bwysig eich bod yn deall y cysyniad y tu ôl i bob strwythur data 25 00:01:21,010 --> 00:01:23,510 a hefyd eich bod yn gallu i cod yn C, 26 00:01:23,510 --> 00:01:27,880 dim ond y gweithrediadau mwyaf cyffredin sydd ganddynt ar gyfer pob strwythur data. 27 00:01:27,880 --> 00:01:30,090 Ac hefyd yn gallu adolygu awgrymiadau a structs, 28 00:01:30,090 --> 00:01:33,470 oherwydd eu bod yn ymddangos llawer yn y strwythurau data. 29 00:01:33,470 --> 00:01:37,380 >> Yn gyntaf, rhestrau cysylltiedig. Rhestrau cysylltiedig mewn gwirionedd yn debyg iawn i araeau, 30 00:01:37,380 --> 00:01:39,930 ond mae'r gwahaniaeth rhwng restr cysylltiedig ac amrywiaeth, 31 00:01:39,930 --> 00:01:45,160 yn gyntaf oll, yw bod rhestr cysylltiedig Mae maint hyblyg iawn, 32 00:01:45,160 --> 00:01:50,060 tra yn rhaid i chi naill ai ddewis maint mawr iawn ar gyfer yr amrywiaeth mewn rhesi, 33 00:01:50,060 --> 00:01:53,710 fel eich bod yn gwybod eich bod yn mynd i fod yn gallu storio eich holl ddata yn y casgliad, 34 00:01:53,710 --> 00:01:59,370 neu rhaid i chi ddefnyddio'r malloc i gael hyd hyblyg o amrywiaeth. 35 00:01:59,370 --> 00:02:03,680 Mewn rhestrau cysylltiedig mae'n hawdd iawn i ddim ond cael mwy o elfennau, 36 00:02:03,680 --> 00:02:07,210 rhoi mwy o elfennau yn y rhestr gysylltiedig neu ddileu elfennau. 37 00:02:07,210 --> 00:02:09,370 Ac mewn gwirionedd, os nad ydych am i'r rhestr gysylltiedig i'w didoli, 38 00:02:09,370 --> 00:02:13,950 gallwch chwilio a chael gwared ar elfennau mewn amser yn gyson, 39 00:02:13,950 --> 00:02:16,800 felly O (1) amser, felly mae'n gyfleus iawn. 40 00:02:16,800 --> 00:02:20,660 Mae'n rhaid i chi fod yn nodau ofalus bob amser yn cofio i malloc ac yn rhydd, 41 00:02:20,660 --> 00:02:25,510 dim ond oherwydd os nad ydych yn gwneud hynny, bydd gennych yn gollwng cof. 42 00:02:25,510 --> 00:02:31,480 Rhestrau Felly cysylltiedig - y diffiniad o nod yn union fel yr hyn sydd gennym iawn yno. 43 00:02:31,480 --> 00:02:35,110 Yr wyf yn rhoi int n, ond gallwch storio unrhyw ddata rydych ei eisiau. 44 00:02:35,110 --> 00:02:37,280 Felly, os ydych am i storio llinyn, mae'n iawn. 45 00:02:37,280 --> 00:02:41,690 Os ydych am storio strwythur, mae'n iawn, dwbl, beth bynnag y dymunwch. 46 00:02:41,690 --> 00:02:44,630 Fi jyst rhoi int n ar gyfer yr enghreifftiau yma. 47 00:02:44,630 --> 00:02:46,800 Ac mae gennych pwyntydd i'r nod nesaf. 48 00:02:46,800 --> 00:02:51,940 Felly, yn y bôn, rhestr cysylltiedig Mae rhywfaint o ddata, ac yna mae'n tynnu sylw at y nod nesaf. 49 00:02:51,940 --> 00:02:56,710 Os yw'n elfen olaf yn y rhestr gysylltiedig, mae'n mynd i bwyntio at NULL. 50 00:02:56,710 --> 00:02:59,060 Felly, mae hyn yn enghraifft o restr cysylltiedig. 51 00:02:59,250 --> 00:03:05,960 >> Iawn, felly nawr gadewch i ni weld beth y dylem ei wneud os wyf i am osod yn elfen yn rhestr cysylltiedig. 52 00:03:05,960 --> 00:03:08,810 Yn gyntaf, bydd swyddogaeth mewnosoder fod o fath ddi-rym 53 00:03:08,810 --> 00:03:11,350 oherwydd nid wyf am ddychwelyd unrhyw beth. 54 00:03:11,350 --> 00:03:14,200 Ac yr wyf i'n mynd i gymryd int fel dadl, 55 00:03:14,200 --> 00:03:17,090 oherwydd yr wyf am wybod yr hyn yr wyf i am osod. 56 00:03:17,090 --> 00:03:21,840 Felly beth yw'r peth cyntaf y dylwn ei wneud? Wel, dylwn malloc ar newnode, 57 00:03:21,840 --> 00:03:24,240 felly mae hynny'n y llinell gyntaf. 58 00:03:24,240 --> 00:03:27,580 Im 'jyst yn creu nod newydd i roi mewn rhestr gysylltiedig. 59 00:03:27,580 --> 00:03:32,360 Felly, beth allaf ei wneud? Wel, rydym yn gwybod bod yn ein gweithrediadau rhestrau cysylltiedig 60 00:03:32,360 --> 00:03:38,180 yn y dosbarth, rydym bob amser yn rhoi y pen fel newidyn byd-eang. 61 00:03:38,180 --> 00:03:41,800 Felly, yr hyn y gallwn ei wneud yw newid y pen. 62 00:03:41,800 --> 00:03:44,300 Gallaf wneud hyn yn nod newydd fydd y pennaeth newydd, 63 00:03:44,300 --> 00:03:46,670 ac mae'n mynd i dynnu sylw at y pennaeth blaenorol. 64 00:03:46,670 --> 00:03:50,390 Sut allwn ni wneud hynny? Y peth cyntaf yn rhaid i mi ei wneud 65 00:03:50,390 --> 00:03:54,770 yn newid y 'n' yn y nod newydd i werthfawrogi, 66 00:03:54,770 --> 00:03:57,530 a basiwyd i'r swyddogaeth. 67 00:03:57,530 --> 00:04:01,050 Yna newnode nesaf yn mynd i fod y pennaeth. 68 00:04:01,050 --> 00:04:05,800 Mae'r pennaeth yn mynd i gael ei newnode. Felly, mae'n eithaf syml. 69 00:04:05,800 --> 00:04:10,090 Ar gyfer dileu nod, gallwn wneud hi fel - 70 00:04:10,090 --> 00:04:14,790 Un ffordd y gallem wneud hynny yw, 71 00:04:14,790 --> 00:04:18,160 iawn, os oeddwn i eisiau dileu, er enghraifft, 3, 72 00:04:18,160 --> 00:04:24,850 hyn y gallwn ei wneud yw dim ond tynnu sylw y nod blaenorol 73 00:04:24,850 --> 00:04:27,580 at y nod nesaf o 3. 74 00:04:27,580 --> 00:04:29,400 Felly, byddwn yn unig yn ei wneud rhywbeth fel 'na. 75 00:04:29,400 --> 00:04:33,400 Ond beth yw'r broblem gyda wneud hynny? 76 00:04:33,400 --> 00:04:37,400 Mae gen i gollwng cof, felly nid oes gennyf fynediad i'r rhif 3 anymore. 77 00:04:37,400 --> 00:04:42,480 Y broblem gyda hynny yw nad wyf ddim yn mynd i fod yn gallu rhad ac am ddim y nod. 78 00:04:42,480 --> 00:04:45,360 Rydw i'n mynd i gael gollwng cof a (annealladwy) yn mynd i casineb i mi. 79 00:04:45,360 --> 00:04:49,370 Felly, yn hytrach na gwneud hynny, mae'n debyg y dylwn gael pwyntydd dros dro. 80 00:04:49,370 --> 00:04:53,210 Felly, yr wyf yn rhoi dros dro. Mae'n mynd i dynnu sylw at y nod yr wyf am ei dileu. 81 00:04:53,210 --> 00:04:58,170 Ac yna gallaf symud y nodau blaenorol i bwynt i'r nod nesaf 82 00:04:58,170 --> 00:05:00,390 y nod yr wyf am ei dileu. 83 00:05:00,390 --> 00:05:02,730 Ac yn olaf, gallaf ddim y pwyntydd. 84 00:05:02,730 --> 00:05:07,480 A oes rhaid i mi ryddhau'r pwyntydd fy mod yn creu iawn yno? 85 00:05:07,480 --> 00:05:09,560 Nid oes gennyf i, dim ond oherwydd - 86 00:05:09,560 --> 00:05:13,430 y gwahaniaeth yw bod nod hwn yn cael ei greu gan ddefnyddio malloc, 87 00:05:13,430 --> 00:05:17,280 felly mae'n yn y domen, tra bod yr un yma yn unig oedd yn datgan fel switsh NULL yn y pentwr. 88 00:05:17,280 --> 00:05:20,000 Felly, nid oes rhaid i mi ei ryddhau iddo. 89 00:05:20,000 --> 00:05:22,030 >> Iawn. Felly nawr gadewch i ni siarad am staciau. 90 00:05:22,030 --> 00:05:24,680 Pentyrrau yn eithaf syml. 91 00:05:24,680 --> 00:05:29,540 Fe wnaethom corn a'r ciwiau yn y dosbarth yn unig gan ddefnyddio araeau, 92 00:05:29,540 --> 00:05:32,820 ond dylech fod yn gyfarwydd - dim ond fod yn ymwybodol 93 00:05:32,820 --> 00:05:40,740 y gallwch hefyd wneud pentyrrau mewn ciwiau gan ddefnyddio rhestrau cysylltiedig hefyd. 94 00:05:40,740 --> 00:05:44,460 Felly, os oes gennych amrywiaeth hyn, beth fyddai'r pentwr? 95 00:05:44,460 --> 00:05:46,810 Mae stac, yn gyntaf, bydd yn rhaid i gael maint. 96 00:05:46,810 --> 00:05:49,950 Mae'n rhaid i chi storio beth yw maint y pentwr sydd gennych ar hyn o bryd. 97 00:05:49,950 --> 00:05:52,980 A hefyd byddai gennych amrywiaeth, yn yr achos hwn o rifau, 98 00:05:52,980 --> 00:05:55,120 ond os ydych yn dymuno, gall fod yn amrywiaeth 99 00:05:55,120 --> 00:06:00,380 o linynnau, amrywiaeth o strwythur, unrhyw beth yr ydych am ei storio. 100 00:06:00,380 --> 00:06:03,240 Am y pentwr: Y gwahaniaeth rhwng pentwr a rhestr cysylltiedig 101 00:06:03,240 --> 00:06:08,590 yw bod yn y pentwr yn unig yn cael mynediad at yr elfen olaf y ei roi yn y pentwr i chi. 102 00:06:08,590 --> 00:06:11,770 Mae'n cael ei alw ddiwethaf i mewn, cyntaf allan. 103 00:06:11,770 --> 00:06:15,090 Yn union fel chi gael pentwr o hambyrddau, 104 00:06:15,090 --> 00:06:17,670 os byddwch yn rhoi hambwrdd ar ben y pentwr, 105 00:06:17,670 --> 00:06:22,670 rhaid i chi gael gwared ar y hambwrdd cyntaf i gael mynediad i'r hambyrddau eraill. 106 00:06:22,670 --> 00:06:26,310 Mae yr un peth gyda chyrn. 107 00:06:26,310 --> 00:06:31,220 Felly, os ydw i eisiau, er enghraifft, yn ychwanegu elfen i stac, beth ddylwn i ei wneud? 108 00:06:31,220 --> 00:06:34,070 Mae'n cael ei alw gwthio, ac mae'n eithaf syml. 109 00:06:34,070 --> 00:06:37,130 Y peth cyntaf yn rhaid i chi ei wneud yw gwirio os yw maint y pentwr 110 00:06:37,130 --> 00:06:40,150 Nid yw mwy neu gyfartal i gynhwysedd y pentwr. 111 00:06:40,150 --> 00:06:45,810 Oherwydd os ydych eisoes ar gapasiti llawn, ni allwch ychwanegu unrhyw beth arall. 112 00:06:45,810 --> 00:06:51,140 Ac yna os nad yw, dim ond rhaid i chi ychwanegu'r elfen i'r pentwr. 113 00:06:51,140 --> 00:06:54,530 Ac yn olaf, cynyddiad maint. Felly, mae'n eithaf syml. 114 00:06:54,530 --> 00:06:57,140 Felly, Fi jyst ychwanegwch y rhif 2. 115 00:06:57,140 --> 00:07:00,350 Ac os ydw i eisiau i pop, sy'n golygu fy mod am gael gwared 116 00:07:00,350 --> 00:07:03,870 yr elfen olaf a ychwanegwyd ac yn dychwelyd y gwerth yr elfen, 117 00:07:03,870 --> 00:07:09,180 y peth cyntaf rhaid i mi wirio yw nad yw'r pentwr yn wag. 118 00:07:09,180 --> 00:07:11,510 Oherwydd os yw'n wag, ni allaf ddychwelyd unrhyw beth. 119 00:07:11,510 --> 00:07:14,820 Yn yr achos hwnnw, rwy'n dychwelyd -1. 120 00:07:14,820 --> 00:07:18,960 Fel arall, dw i'n mynd i lleihau a maint y fanyleb, 121 00:07:18,960 --> 00:07:22,510 a dychwelyd rhifau (s.size). 122 00:07:22,510 --> 00:07:27,230 Pam wnes i lleihau a maint ac yna'n dychwelyd s.size? 123 00:07:27,230 --> 00:07:30,930 Mae'n oherwydd, yn yr achos hwn, mae'r fanyleb wedi maint 4, 124 00:07:30,930 --> 00:07:33,810 ac yr wyf am ddychwelyd y bedwaredd elfen, dde? 125 00:07:33,810 --> 00:07:36,030 Ond beth yw'r mynegai y pedwerydd elfen? Tri. 126 00:07:36,030 --> 00:07:44,510 Ers i mi ddim maint - yn mynd i fod yn 3, a gaf fi ddychwelyd s.numbers (s.size) 127 00:07:44,510 --> 00:07:48,410 am ei fod yn 3. Felly, dim ond y mynegai. 128 00:07:48,410 --> 00:07:50,380 >> Nawr ciwiau. Ciwiau yn 'n bert lawer yr un peth. 129 00:07:50,380 --> 00:07:54,950 Yr unig wahaniaeth yw bod yn hytrach na chael ddiwethaf i mewn, cyntaf allan, 130 00:07:54,950 --> 00:07:57,480 gennych cyntaf i mewn, cyntaf allan. 131 00:07:57,480 --> 00:07:59,460 Mae'n debyg os ydych yn aros i fynd i gyngerdd, 132 00:07:59,460 --> 00:08:04,260 ni fyddech yn hapus os ydych wedi cael pentwr yn hytrach na ciw. 133 00:08:04,260 --> 00:08:07,730 Byddai bod y person olaf i ddod fydd y person cyntaf i fynd i mewn i'r cyngerdd. 134 00:08:07,730 --> 00:08:09,760 Mae'n debyg na fyddai yn hapus. 135 00:08:09,760 --> 00:08:15,020 Yn y ciw, y person cyntaf i fynd i mewn hefyd yw'r person cyntaf i fynd allan. 136 00:08:15,020 --> 00:08:18,720 Felly, yn y diffiniad o ciw, ar wahân i gael y maint yn yr arae, 137 00:08:18,720 --> 00:08:23,360 rhaid i chi hefyd gael y pen, sef y mynegai i'r pennaeth y pentwr. 138 00:08:23,360 --> 00:08:29,000 Felly, yr elfen gyntaf ar hyn o bryd. 139 00:08:29,000 --> 00:08:32,710 Enqueue yr un peth â gwthio ar gyfer pentyrrau. 140 00:08:32,710 --> 00:08:34,980 Os oeddech yn naïf iawn, byddai 'ch jyst yn dweud, 141 00:08:34,980 --> 00:08:39,289 dda, gall Fi jyst gwneud yn union yr un peth â wnes i ar gyfer gwthio. 142 00:08:39,289 --> 00:08:44,030 Gall Fi jyst wirio os nad yw'n y tu hwnt i'r capasiti. 143 00:08:44,030 --> 00:08:48,760 Os ydyw, yr wyf yn dychwelyd ffug, fel arall gall Fi jyst allforio y gwerth newydd 144 00:08:48,760 --> 00:08:50,630 ac yna cynyddiad maint. 145 00:08:50,630 --> 00:08:52,750 Ond pam mae hyn yn anghywir? 146 00:08:52,750 --> 00:08:55,010 Gadewch i ni weld yr enghraifft hon. 147 00:08:55,010 --> 00:08:57,020 Im 'yn ceisio i enqueue bagad o bethau, 148 00:08:57,020 --> 00:08:58,390 ac yna yr wyf i'n mynd i dequeue a enqueue. 149 00:08:58,390 --> 00:09:00,550 Mae yna lawer o orchmynion, ond mae'n syml iawn. 150 00:09:00,550 --> 00:09:04,790 Rydw i'n mynd i enqueue 5, felly ychwanegu 5, ac yna 7, 151 00:09:04,790 --> 00:09:09,310 1, 4, 6, ac yna yr wyf am dequeue rhywbeth, 152 00:09:09,310 --> 00:09:12,000 sy'n golygu fy mod i'n mynd i gael gwared ar yr elfen gyntaf. 153 00:09:12,000 --> 00:09:14,640 Felly, yr wyf i'n mynd i gael gwared ar y rhif 3, dde? 154 00:09:14,640 --> 00:09:17,320 Yr elfen gyntaf. Iawn. 155 00:09:17,320 --> 00:09:21,450 Nawr, os wyf yn ceisio enqueue rywbeth arall, yr hyn sy'n mynd i ddigwydd? 156 00:09:21,450 --> 00:09:24,290 Yn ôl fy rhoi ar waith, 157 00:09:24,290 --> 00:09:31,040 Yr oeddwn yn mynd i roi y rhif nesaf yn y q.size mynegai. 158 00:09:31,040 --> 00:09:35,140 Yn yr achos hwn, mae maint yw 8, 159 00:09:35,140 --> 00:09:38,640 felly bydd y mynegai 8 fod yn iawn yma yn y swydd ddiwethaf. 160 00:09:38,640 --> 00:09:43,900 Os byddaf yn ceisio enqueue 1 i'r dde yma, byddwn yn trosysgrifo y swydd ddiwethaf 161 00:09:43,900 --> 00:09:45,870 at y rhif 1, sydd yn hollol anghywir. 162 00:09:45,870 --> 00:09:49,870 Yr hyn yr wyf am ei wneud yw lapio o amgylch ac yn mynd i'r swydd gyntaf. 163 00:09:49,870 --> 00:09:52,870 Efallai y byddech yn dweud, yn dda, dim ond rhaid i mi wirio 164 00:09:52,870 --> 00:09:55,600 os gall Fi 'n weithredol yn rhoi rhywbeth yno. 165 00:09:55,600 --> 00:09:58,560 Os nad yw, Fi jyst dweud, oh, y gallu llawn newydd 166 00:09:58,560 --> 00:10:02,010 mewn gwirionedd capasiti - 1, ac ni allwch roi elfen yno. 167 00:10:02,010 --> 00:10:06,150 Ond beth yw'r broblem? Y broblem yw, os Fi jyst dequeue popeth yn iawn yma 168 00:10:06,150 --> 00:10:08,240 ac yna yr wyf yn ceisio ychwanegu rhywbeth arall, byddai'n dim ond dweud, 169 00:10:08,240 --> 00:10:11,210 yn dda, byddwch yn yn llawn, sydd yn 0. 170 00:10:11,210 --> 00:10:13,620 Felly eich ciw wedi mynd. 171 00:10:13,620 --> 00:10:16,990 Mae'n rhaid i chi lapio o gwmpas, ac yn ffordd o lapio o gwmpas 172 00:10:16,990 --> 00:10:22,040 chi guys a ddysgwyd mewn psets gweledigaethol ac eraill a oedd yn defnyddio mod. 173 00:10:22,040 --> 00:10:29,090 Gallwch roi cynnig arni yn y cartref i ddeall pam y byddech yn ei wneud q.size + q.head 174 00:10:29,090 --> 00:10:31,080 capasiti mod, ond os ydych yn edrych yn iawn yma, 175 00:10:31,080 --> 00:10:34,760 gallwn weld ei fod yn gweithio. 176 00:10:34,760 --> 00:10:37,760 Felly, yn yr enghraifft olaf, q.size yn 8 177 00:10:37,760 --> 00:10:47,590 ac mae'r pennaeth yn 1, oherwydd ei fod yn y sefyllfa hon yma o'r rhesi. 178 00:10:47,590 --> 00:10:51,970 Felly, bydd yn 8 + 1, 9. Byddai gallu Mod 9 fod yn 0. 179 00:10:51,970 --> 00:10:56,640 Byddai'n mynd at y mynegai 0. Byddwn yn yn y safle cywir. 180 00:10:56,640 --> 00:10:59,750 Ac yna rhowch gynnig ar y ciw yn y cartref. 181 00:10:59,750 --> 00:11:04,950 Rhai pethau pwysig: ceisio deall y gwahaniaeth rhwng pentwr a ciw. 182 00:11:04,950 --> 00:11:11,620 Yn y cartref, ceisiwch gael gyfarwydd iawn â gweithredu enqueue, dequeue, gwthio a pop. 183 00:11:11,620 --> 00:11:16,560 A hefyd yn deall pryd y byddech yn defnyddio pob un ohonynt. 184 00:11:16,560 --> 00:11:22,830 >> Felly, gadewch i ni ymlacio am 10 eiliad gyda chriw o pokemons. 185 00:11:22,830 --> 00:11:26,080 Ac yn awr gadewch i ni fynd yn ôl at strwythurau data. 186 00:11:26,080 --> 00:11:29,770 Hash tablau. Mae llawer o bobl yn ofnus o dablau hash. 187 00:11:29,770 --> 00:11:33,650 mewn datrys gosod 6, Gwirydd Sillafu. 188 00:11:33,650 --> 00:11:35,980 Tablau a cheisiau Hash, mae llawer o bobl yn cael ofn ohonynt. 189 00:11:35,980 --> 00:11:38,540 Maen nhw'n meddwl eu bod nhw mor anodd ei ddeall. Yeah? 190 00:11:38,540 --> 00:11:41,490 [Rob Bowden] Problem set 5. >> Problem set 5, yeah. Diolch Rob. 191 00:11:41,490 --> 00:11:43,370 Yeah. Chwech oedd Huff n 'pwff, yeah. 192 00:11:43,370 --> 00:11:49,340 Problem set 5 oedd Sillafu Checker, ac roedd yn rhaid i chi ddefnyddio naill ai tabl hash neu gais. 193 00:11:49,340 --> 00:11:55,360 Mae llawer o bobl yn meddwl eu bod yn super anodd deall, ond maen nhw'n mewn gwirionedd yn eithaf syml. 194 00:11:55,360 --> 00:12:01,290 Beth yw tabl hash, yn y bôn? Mae tabl hash yn amrywiaeth o restrau cysylltiedig. 195 00:12:01,290 --> 00:12:06,730 Yr unig wahaniaeth rhwng amrywiaeth a bwrdd hash 196 00:12:06,730 --> 00:12:09,730 yw bod yn y tabl hash gennych rywbeth a elwir yn swyddogaeth hash. 197 00:12:09,730 --> 00:12:12,080 Beth yw swyddogaeth hash? 198 00:12:12,080 --> 00:12:13,970 Nid wyf yn gwybod os gallwch chi guys ddarllen yma. 199 00:12:13,970 --> 00:12:16,090 Mae hyn yn enghraifft o dabl hash. 200 00:12:16,090 --> 00:12:19,220 Fel y gallwch weld bod gennych amrywiaeth gyda 31 elfen. 201 00:12:19,220 --> 00:12:22,440 A beth ydym yn ei wneud mewn tabl hash yn swyddogaeth hash 202 00:12:22,440 --> 00:12:26,660 sy'n mynd i gyfieithu allweddol, pob un int at fynegai. 203 00:12:26,660 --> 00:12:31,740 Os, er enghraifft, os wyf am i ddewis ar gyfer B. Harrison, 204 00:12:31,740 --> 00:12:34,190 Byddwn yn rhoi B. Harrison yn fy swyddogaethau hash, 205 00:12:34,190 --> 00:12:36,960 a byddai'r swyddogaeth hash yn dychwelyd 24. 206 00:12:36,960 --> 00:12:40,930 Felly, yr wyf yn gwybod fy mod am i storio B. Harrison yn 24. 207 00:12:40,930 --> 00:12:46,580 Felly, dyna'r gwahaniaeth rhwng dim ond ar ôl amrywiaeth a chael tabl hash. 208 00:12:46,580 --> 00:12:48,740 Yn y tabl hash bydd gennych swyddogaeth sydd yn mynd i ddweud wrthych 209 00:12:48,740 --> 00:12:54,740 ble i storio'r data yr ydych am ei storio. 210 00:12:54,740 --> 00:12:57,040 Ar gyfer y swyddogaeth hash, yr ydych am chwilio am swyddogaeth hash 211 00:12:57,040 --> 00:13:00,600 sy'n penderfynedig a dosbarthwyd dda. 212 00:13:00,600 --> 00:13:07,810 Fel y gallwch weld yma, byddwch yn gweld bod llawer o'r data yr oeddwn am ei siop oedd mewn gwirionedd yn 19 213 00:13:07,810 --> 00:13:12,470 yn hytrach na defnyddio 31 a 30 a 29, a oedd i gyd am ddim. 214 00:13:12,470 --> 00:13:16,920 Felly, nid yw'r swyddogaeth hash a ddefnyddiais yn dosbarthu yn dda iawn. 215 00:13:16,920 --> 00:13:20,710 Pan fyddwn yn dweud dosbarthu dda, mae'n golygu ein bod am eu cael, 216 00:13:20,710 --> 00:13:26,520 yn fras, o leiaf 1 neu 2 ar gyfer pob un o'r - 217 00:13:26,520 --> 00:13:32,190 fel, gwahaniaeth o 1 neu 2 ar gyfer pob un o'r mynegai yn yr arae. 218 00:13:32,190 --> 00:13:43,950 Ydych chi am gael, yn fras, yr un nifer o elfennau ym mhob rhestr gysylltiedig yn y rhesi. 219 00:13:43,950 --> 00:13:48,600 Ac mae'n hawdd i wirio os yw'n ddilys yn y tabl hash, gweld fel tablau hash. 220 00:13:48,600 --> 00:13:51,770 >> Yna coed. Mae hyn yn goeden. 221 00:13:51,770 --> 00:13:56,400 Coed mewn gwyddoniaeth gyfrifiadurol yn wyneb i waered am ryw reswm. 222 00:13:56,400 --> 00:14:00,150 Felly, i'r dde yma mae gennych y wraidd y goeden ac yna y dail. 223 00:14:00,150 --> 00:14:05,630 Dylech jyst yn gwybod y gyfundrefn enwau ar gyfer rhieni a'r plentyn. 224 00:14:05,630 --> 00:14:12,880 Mae gan bob nod ei blant, sef y nodau sydd yn is na'r rhiant. 225 00:14:12,880 --> 00:14:19,660 Felly, er enghraifft, 2 yn mynd i fod yn rhiant am 3 ac ar gyfer y plentyn arall yn iawn yno, 226 00:14:19,660 --> 00:14:25,290 tra bod 3 yn mynd i fod yn rhiant ar gyfer 1 a plant eraill sydd yno. 227 00:14:25,290 --> 00:14:29,990 Ac mae 1 yn mynd i fod yn blentyn 3, ac yn y blaen. 228 00:14:29,990 --> 00:14:34,610 Mae gennym rywbeth llawer mwy diddorol, a elwir coeden chwiliad deuaidd, 229 00:14:34,610 --> 00:14:39,040 lle mae'r holl werthoedd ar y dde o'r nod 230 00:14:39,040 --> 00:14:41,660 yn mynd i fod ar y dde, dde yma - ar y dde, 231 00:14:41,660 --> 00:14:46,780 yn mynd i fod yn fwy na'r elfen yn y gwraidd. 232 00:14:46,780 --> 00:14:49,780 Felly os wyf yn cael y rhif 5 dde yma, holl elfennau ar y dde 233 00:14:49,780 --> 00:14:51,940 yn mynd i fod yn fwy na 5, ac ar y chwith 234 00:14:51,940 --> 00:14:56,770 holl elfennau yn mynd i fod yn llai na 5. 235 00:14:56,770 --> 00:14:58,780 Pam mae hyn yn ddefnyddiol? 236 00:14:58,780 --> 00:15:01,660 Wel, os wyf am i wirio a yw'r rhif 7 yma, er enghraifft, 237 00:15:01,660 --> 00:15:05,960 Fi jyst yn mynd i 5 yn gyntaf ac rwy'n mynd i weld, yn 7 mwy neu lai na 5? 238 00:15:05,960 --> 00:15:09,540 Mae'n fwy, felly yr wyf yn gwybod ei fod yn mynd i gael i fod ar y dde o'r goeden. 239 00:15:09,540 --> 00:15:13,980 Felly, yr wyf yn cael llawer llai bethau i edrych ar. 240 00:15:13,980 --> 00:15:19,520 Wrth weithredu coeden chwiliad deuaidd, y nod, Im 'jyst yn mynd i gael i gael data, 241 00:15:19,520 --> 00:15:21,750 felly int n; gallech hefyd gael llinyn 242 00:15:21,750 --> 00:15:23,630 neu unrhyw beth rydych ei eisiau. 243 00:15:23,630 --> 00:15:28,100 Dim ond rhaid i chi fod yn ofalus ar ddiffinio beth yn fwy, beth yw llai. 244 00:15:28,100 --> 00:15:30,390 Felly, os ydych wedi cael llinynnau, er enghraifft, gallech ddiffinio 245 00:15:30,390 --> 00:15:34,690 bod yr holl bethau y rhai ar y dde yn mynd i gael hyd mwy o faint, 246 00:15:34,690 --> 00:15:40,940 y chwith yn mynd i gael hyd is, felly mae'n wirioneddol i fyny i chi. 247 00:15:40,940 --> 00:15:44,930 >> Sut y gallaf ddod o hyd i weithredu BST? 248 00:15:44,930 --> 00:15:47,840 Y peth cyntaf y byddwch yn rhaid i ni ei wneud yw gwirio a yw'r gwraidd yn NULL. 249 00:15:47,840 --> 00:15:50,920 Os yw'n NULL, mae'n golygu nad yw'r peth yno 250 00:15:50,920 --> 00:15:53,330 oherwydd nad ydych yn hyd yn oed gael coeden, dde? 251 00:15:53,330 --> 00:15:55,790 Felly, yr wyf yn dychwelyd ffug. 252 00:15:55,790 --> 00:15:58,740 Fel arall, dw i'n mynd i wirio a yw'r rhif yn fwy 253 00:15:58,740 --> 00:16:01,720 na gwerth yn y gwraidd. 254 00:16:01,720 --> 00:16:04,250 Rydw i'n mynd i geisio dod o hyd i'r elfen ar y dde 255 00:16:04,250 --> 00:16:08,590 y goeden. 256 00:16:08,590 --> 00:16:11,310 Byddwch yn gweld fy mod yn defnyddio recursion yma. 257 00:16:11,310 --> 00:16:14,150 Ac yna os yw'n llai, dw i'n mynd i edrych ar y chwith. 258 00:16:14,150 --> 00:16:18,330 Ac yn olaf, fel arall, os nad yw'n llai neu beidio fwy, 259 00:16:18,330 --> 00:16:20,660 mae'n golygu ei fod yn werth ei hun. 260 00:16:20,660 --> 00:16:23,010 Felly, Fi jyst yn dychwelyd yn wir. 261 00:16:23,010 --> 00:16:26,360 Gallwch weld yma fy mod yn defnyddio os, os, os. 262 00:16:26,360 --> 00:16:30,820 A chofiwch, yn y cwis 0, cawsom broblem a oedd os, os, os, 263 00:16:30,820 --> 00:16:32,780 ac yr ydych i fod i ddod o hyd i'r aneffeithlonrwydd, 264 00:16:32,780 --> 00:16:35,180 ac yr aneffeithlonrwydd oedd eich bod defnyddio os. 265 00:16:35,180 --> 00:16:39,060 Dylech fod wedi defnyddio os, arall os, arall os, ac arall. 266 00:16:39,060 --> 00:16:44,240 Felly, ddylwn i ddefnyddio arall os a arall os a arall yma? 267 00:16:44,240 --> 00:16:46,200 A oes unrhyw un - yeah? 268 00:16:46,200 --> 00:16:51,140 [Siarad Myfyrwyr, anhyglyw] 269 00:16:51,140 --> 00:16:53,480 Mae hynny'n berffaith. Felly, mae hi'n dweud nad yw o bwys, 270 00:16:53,480 --> 00:16:55,930 dim ond oherwydd yr aneffeithlonrwydd a oedd gennym o'r blaen 271 00:16:55,930 --> 00:16:59,550 oedd hynny oherwydd, efallai os bydd rhai cyflwr yn fodlon, 272 00:16:59,550 --> 00:17:03,570 felly yr ydych wedi perfformio gweithred, ond yna rydych yn mynd i wirio pob un o'r amodau eraill. 273 00:17:03,570 --> 00:17:06,319 Ond yn yr achos hwn, mae'n dychwelyd ar unwaith, felly does dim ots. 274 00:17:06,319 --> 00:17:09,220 Felly, nid oes rhaid i chi ddefnyddio arall os. 275 00:17:09,220 --> 00:17:11,740 >> Ac yn olaf, gadewch i ni siarad am gais, 276 00:17:11,740 --> 00:17:13,800 sydd yn ffefryn pawb. 277 00:17:13,800 --> 00:17:15,980 Mae cais yn goeden o araeau. 278 00:17:15,980 --> 00:17:20,369 Mae'n gyflym iawn i chwilio am werthoedd, ond mae'n defnyddio llawer o gof. 279 00:17:20,369 --> 00:17:22,530 Ac mae'n fel arfer i hidlo geiriau, felly pan fyddwch yn 280 00:17:22,530 --> 00:17:27,920 yn awyddus i weithredu, er enghraifft, nid wyf yn gwybod, fel llyfr ffôn yn eich ffôn 281 00:17:27,920 --> 00:17:30,440 a ydych am fod yn gallu teipio B 282 00:17:30,440 --> 00:17:32,510 a dim ond enwau pobl sydd ag B. 283 00:17:32,510 --> 00:17:37,960 Mae'n hawdd iawn i weithredu bod defnyddio cais, er enghraifft. 284 00:17:37,960 --> 00:17:39,820 Sut ydych chi'n diffinio nod mewn cais? 285 00:17:39,820 --> 00:17:43,910 Os oes gen ti i gael bool sydd yn mynd i gael ei is_word. 286 00:17:43,910 --> 00:17:48,660 Sy'n cynrychioli bod defnyddio'r holl gymeriadau cyn y nod, 287 00:17:48,660 --> 00:17:51,920 oeddech yn gallu ffurfio geiriau, 288 00:17:51,920 --> 00:17:57,230 ac yna byddwch yn cael amrywiaeth o awgrymiadau i nodau. 289 00:17:57,230 --> 00:18:03,120 Allwch chi weld bod gennym amrywiaeth o nodau rhiant, felly nod * amrywiaeth? Yeah? 290 00:18:03,120 --> 00:18:06,050 Felly, gadewch i ni weld sut y bydd hynny'n gweithio. Ar gyfer y sillafydd, 291 00:18:06,050 --> 00:18:08,230 mae gennym amrywiaeth o 27 elfen, 292 00:18:08,230 --> 00:18:12,150 oherwydd ein bod yn cael yr holl lythyrau yn ogystal â'r collnod. 293 00:18:12,150 --> 00:18:17,800 Cyn yma Im 'jyst yn mynd i ddefnyddio 2 oherwydd yr wyf am i fod yn gallu ysgrifennu ar y bwrdd. 294 00:18:17,800 --> 00:18:20,230 Iawn. Felly, mae hyn yn enghraifft o gais. 295 00:18:20,230 --> 00:18:25,600 Os Fi jyst yn diffinio y nod cyntaf, byddaf yn cael amrywiaeth o 2 elfen 296 00:18:25,600 --> 00:18:29,290 sy'n 2 awgrymiadau i NULL, felly yr wyf yn jyst rhoi 'a' a 'b'. 297 00:18:29,290 --> 00:18:32,430 Ac yr wyf i'n mynd i gael bool sy'n dweud is_word. 298 00:18:32,430 --> 00:18:34,420 Mae'n mynd i fod yn ffug am yr un cyntaf, 299 00:18:34,420 --> 00:18:37,370 dim ond oherwydd, cyn hynny nad oes gennych unrhyw gymeriadau. 300 00:18:37,370 --> 00:18:40,900 Felly nid yw gair gwag yn air. Felly mae'n ffug. 301 00:18:40,900 --> 00:18:46,320 Os ydw i eisiau ychwanegu 'a' i geiriadur hwn, beth fyddai'n rhaid i mi ei wneud? 302 00:18:46,320 --> 00:18:49,760 Fyddai dim ond rhaid i mi malloc yn nod newydd ar gyfer 'a', 303 00:18:49,760 --> 00:18:54,630 ac yna ychwanegu ei air i gwir. 304 00:18:54,630 --> 00:19:00,180 Felly, 'i jyst yn cynrychioli bod cael' a 'yn mynd i fod yn wir. Yn gwneud synnwyr? 305 00:19:00,180 --> 00:19:04,120 Yna, os ydw i eisiau ychwanegu 'ba', bydd yn rhaid i mi malloc 1 ar gyfer 'b', 306 00:19:04,120 --> 00:19:07,550 ac yna yr wyf i'n mynd i osod y boolean i ffug, 307 00:19:07,550 --> 00:19:10,160 oherwydd nid 'b' ei ben ei hun yn air. 308 00:19:10,160 --> 00:19:13,010 Yna mi i'n mynd i malloc un arall ar gyfer 'a', felly 'ba', 309 00:19:13,010 --> 00:19:16,290 ac yna yr wyf i'n mynd i sefydlu ei air i gwir. 310 00:19:16,290 --> 00:19:18,950 Gan fod 'ba' yn air. 311 00:19:18,950 --> 00:19:21,910 Ac yna os wyf am weld os 'b' yn y geiriadur hwn, 312 00:19:21,910 --> 00:19:26,730 Gall Fi jyst yn mynd i'r un cyntaf, 'b'. Yr wyf yn mynd i lawr, ac yr wyf yn edrych arno yw gair, ac y mae'n dweud ffug. 313 00:19:26,730 --> 00:19:30,110 Felly, nid yw'n air. Os ydw i eisiau i wirio 'ba', 314 00:19:30,110 --> 00:19:38,010 Rwy'n mynd i yr un cyntaf, 'b', ac yna ewch i 'a', ac yr wyf yn gweld yn wir, felly mae'n gair. Yn gwneud synnwyr? 315 00:19:38,010 --> 00:19:41,950 Mae llawer o bobl yn cael eu drysu gan geisiau. Nac oes? 316 00:19:41,950 --> 00:19:44,740 >> Yn olaf, Huffman codio. Huffman codio yn ddefnyddiol iawn 317 00:19:44,740 --> 00:19:47,550 i arbed cof a chywasgu ffeiliau testun, 318 00:19:47,550 --> 00:19:52,270 dim ond oherwydd bod llawer o weithiau ydych yn defnyddio 'a' a 'e', ​​er enghraifft, 319 00:19:52,270 --> 00:19:57,710 yn eich dogfennau, ond nid wyf yn gwybod os ydych yn guys yn defnyddio 'q' neu 'z' cymaint. 320 00:19:57,710 --> 00:20:02,040 Mae cael dim ond 1 beit ar gyfer pob un cymeriad, 321 00:20:02,040 --> 00:20:08,520 pob un - nid yw'r 256 cymeriadau sydd gennym yn y tabl ASCII yn optimaidd iawn, 322 00:20:08,520 --> 00:20:11,410 dim ond oherwydd bod rhai cymeriadau eich bod yn defnyddio llawer mwy, 323 00:20:11,410 --> 00:20:15,180 felly mae'n debyg y dylech ddefnyddio llai o gof ar gyfer y rhai. 324 00:20:15,180 --> 00:20:17,560 Sut ydw i'n defnyddio Huffman codio? 325 00:20:17,560 --> 00:20:20,010 Mae'n rhaid i ni wneud coeden Huffman. 326 00:20:20,010 --> 00:20:23,370  Mae gan coeden Huffman nodau 327 00:20:23,370 --> 00:20:27,760 sydd â symbol sydd yn mynd i fod yn debyg i, 'a', 'b', 'c', y llythyr, 328 00:20:27,760 --> 00:20:32,990 beth bynnag lythyr gennych, amledd dyna'r mor aml y mae'r gair yn ymddangos yn y testun, 329 00:20:32,990 --> 00:20:36,280 eich bod yn creu y goeden Huffman ar gyfer, 330 00:20:36,280 --> 00:20:41,800 ac yna nod sy'n mynd i dynnu sylw i'r chwith y goeden Huffman 331 00:20:41,800 --> 00:20:47,210 a nod arall sy'n mynd i dynnu sylw at y dde. Felly, yn union fel coeden. 332 00:20:47,210 --> 00:20:49,440 Sut ydych chi'n adeiladu coeden Huffman? 333 00:20:49,440 --> 00:20:54,020 Rydych yn mynd i ddewis y 2 nodau sydd â'r amleddau isaf. 334 00:20:54,020 --> 00:20:56,490 Os oes gennych tei ydych yn mynd i ddewis y 2 nodau 335 00:20:56,490 --> 00:20:59,870 sydd â gwerthoedd ASCII isaf hefyd. 336 00:20:59,870 --> 00:21:02,420 Yna rydych chi'n mynd i greu coeden newydd allan o'r rheiny 2 nodau 337 00:21:02,420 --> 00:21:08,030 sy'n mynd i gael y amlder cyfun yn y rhiant nod. 338 00:21:08,030 --> 00:21:13,240 Ac yna rydych chi'n mynd i gael gwared ar y 2 blentyn o'r goedwig 339 00:21:13,240 --> 00:21:15,570 ac yn eu disodli gyda'r rhiant. 340 00:21:15,570 --> 00:21:18,930 A ydych yn mynd i ailadrodd hynny nes dim ond rhaid i chi 1 goeden yn y goedwig. 341 00:21:18,930 --> 00:21:23,840 Felly, gadewch i ni weld sut y byddech yn gwneud coeden Huffman i ZAMYLA. 342 00:21:23,840 --> 00:21:29,220 Gallwch weld yma bod yr holl lythyrau yn cael amlder 1 ac eithrio 'A', sydd â amlder 2. 343 00:21:29,220 --> 00:21:34,090 Felly, yr wyf yn creu nodau ar gyfer yr holl lythyrau yr wyf yn rhoi yn nhrefn eu gwerth ASCII a pha mor aml. 344 00:21:34,090 --> 00:21:40,090 Felly, os wyf am i greu'r goeden gyntaf, bydd yn cael ei gyda 'L' a 'M'. 345 00:21:40,090 --> 00:21:43,100 Felly mae'n yma. Bydd amlder y pâr fod yn 2 346 00:21:43,100 --> 00:21:49,470 oherwydd ei fod yn 1 + 1, yna bydd y 2 nesaf gyda'r amleddau isaf yw 'Y' a 'Z'. 347 00:21:49,470 --> 00:21:53,180 Ac yna gennyf yr holl ohonynt yn - cael amledd o 2. 348 00:21:53,180 --> 00:22:00,470 Felly, pa rai yw'r rhai sydd â'r gwerth ASCII isaf ar gyfer yr un nesaf? 349 00:22:00,470 --> 00:22:04,830 'A' a 'L'. Felly, yr wyf yn creu y nod newydd, 350 00:22:04,830 --> 00:22:09,930 ac yn olaf, mae'n 4 a 2, felly 2 yn mynd i fod ar y chwith. 351 00:22:09,930 --> 00:22:12,430 Ac mae hyn yn goeden Huffman. 352 00:22:12,430 --> 00:22:16,060 Yna, os wyf am i ysgrifennu rhai testun, 353 00:22:16,060 --> 00:22:24,440 fel yn deuaidd i drosi i destun, gan ddefnyddio'r goeden Huffman yn hawdd iawn. 354 00:22:24,440 --> 00:22:30,220 Er enghraifft, os wyf yn dweud bod symud i'r chwith yn 0 a symud i'r dde yn 1, 355 00:22:30,220 --> 00:22:32,410 Beth yw bod yn mynd i gynrychioli? 356 00:22:32,410 --> 00:22:35,530 Felly fel 1, 1, felly i'r dde, ar y dde, 357 00:22:35,530 --> 00:22:40,370 ac yna byddai 0, gadawodd felly byddwch L, ac yna 1, 0, 0. 358 00:22:40,370 --> 00:22:43,950 Felly 1, 0, felly dim ond 1, 0, 'A'. 359 00:22:43,950 --> 00:22:47,540 Ac yna 0, 1, felly 'Z'. 360 00:22:47,540 --> 00:22:52,170 Ac yna 1, 0, 0 - dim. 361 00:22:52,170 --> 00:22:56,780 0, 0 Bydd yn 'Y', felly Lazy. 362 00:22:56,780 --> 00:23:06,060 Felly dyna i gyd i mi, Rob mynd i gymryd drosodd. 363 00:23:06,060 --> 00:23:08,400 >> [Rob Bowden] Felly, wythnos 7 stwff. 364 00:23:08,400 --> 00:23:11,390 Rydym wedi cael llawer i fynd dros yn gyflym iawn. 365 00:23:11,390 --> 00:23:13,430 Gweithredwyr bitwise, gorlif byffer, 366 00:23:13,430 --> 00:23:16,760 Llyfrgell CS50, yna HTML, HTTP, CSS. 367 00:23:16,760 --> 00:23:20,990 Pawb i mewn fel 15 i 20 munud. 368 00:23:20,990 --> 00:23:24,330 Gweithredwyr bitwise. Mae yna 6 ohonynt y mae angen ichi ei wybod. 369 00:23:24,330 --> 00:23:31,200 Bitwise ac, bitwise neu, XOR, chwith sifft, newid cywir, ac nid. 370 00:23:31,200 --> 00:23:35,420 Hawl symud ac nad ydych prin yn gweld yn y ddarlith o gwbl. 371 00:23:35,420 --> 00:23:40,480 Byddwn yn mynd dros yn gyflym yma, ond mae'n dda gwybod bod y rhain yw'r 6 sy'n bodoli. 372 00:23:40,480 --> 00:23:45,070 Cofiwch bod gweithredwyr bitwise yn debyg pan fyddwch yn gwneud 3 + 4. 373 00:23:45,070 --> 00:23:49,420 Nid ydych yn delio â'r deuaidd o 3 a 4. 374 00:23:49,420 --> 00:23:56,550 Gyda gweithredwyr bitwise ydych mewn gwirionedd yn delio â'r darnau unigol y rhifau 3 a 4. 375 00:23:56,550 --> 00:23:59,120 >> Felly, yr un cyntaf y byddwn yn ei ddweud yw bitwise peidio, 376 00:23:59,120 --> 00:24:02,340 ac mae pob mae'n ei wneud yw troi holl ddarnau. 377 00:24:02,340 --> 00:24:05,500 Felly yma, os ydych yn ysgrifennu hyn yn C, fyddech chi ddim yn ysgrifennu 378 00:24:05,500 --> 00:24:09,380 fel ~ 11011 neu beth bynnag, byddech yn ysgrifennu hoffi ~ 4, 379 00:24:09,380 --> 00:24:12,970 ac yna byddai'n troi cynrychiolaeth deuaidd 4. 380 00:24:12,970 --> 00:24:24,800 Felly dyma, ~ o rai rhif deuaidd 1101101 yn mynd i troi yn union bob 1 i 0 ac mae pob 0 i 1 yn. 381 00:24:24,800 --> 00:24:27,600 Fel yr wyf yn dweud yno, mae'r defnydd mynych o hyn, 382 00:24:27,600 --> 00:24:30,830 a byddwn yn ei weld yn ychydig, yn debyg ein bod yn awyddus i ddod o hyd i ryw nifer 383 00:24:30,830 --> 00:24:35,460 lle yr holl ddarnau yw 1, ac eithrio ar gyfer un ohonynt. 384 00:24:35,460 --> 00:24:38,560 Felly mae'n fel arfer yn haws mynegi nifer 385 00:24:38,560 --> 00:24:40,630 lle dim ond bod un ychydig wedi ei osod, 386 00:24:40,630 --> 00:24:44,650 ac yna cymerwch y ~ ohono, felly pob darn arall wedi ei osod ar wahân i bod un. 387 00:24:44,650 --> 00:24:50,300 Felly, dyna beth rydym yn mynd i ddefnyddio mwy mewn tipyn. 388 00:24:50,300 --> 00:24:58,220 >> Bitwise neu. Dyma 2 rhifau deuaidd, ac mae'r rhifau 2 389 00:24:58,220 --> 00:25:00,780 yn eithaf cynrychioliadol, gan eu bod yn cynrychioli pob posibl 390 00:25:00,780 --> 00:25:07,290 Gallai cyfuniad o ddarnau angen i chi weithredu ar. 391 00:25:07,290 --> 00:25:13,540 Yma, pan fyddaf yn or'd bob bit, rydym yn jyst yn mynd i gymharu yn syth i lawr. 392 00:25:13,540 --> 00:25:15,410 Felly, ar yr ochr chwith mae gennym 1 a 1. 393 00:25:15,410 --> 00:25:20,510 Pan fyddaf yn bitwise | hynny, beth ydw i'n mynd i gael? Un. 394 00:25:20,510 --> 00:25:25,320 Yna bitwise | 0 ac 1 yn mynd i roi i mi? Un. 395 00:25:25,320 --> 00:25:27,840 Bitwise 1 a 0 yn mynd i fod yr un peth, un. 396 00:25:27,840 --> 00:25:31,880 Bitwise 0 | 0 yn mynd i roi i mi 0. 397 00:25:31,880 --> 00:25:37,300 Felly, yr unig achos lle i gael 0 yn y 0 | 0 achos. 398 00:25:37,300 --> 00:25:40,020 A allwch chi feddwl am hynny yn union fel eich ORS rhesymegol. 399 00:25:40,020 --> 00:25:44,830 Felly, os ydych yn meddwl am 1 mor wir a 0 yn ffug, yr un peth yn berthnasol yma. 400 00:25:44,830 --> 00:25:50,040 Felly, yn wir neu yn wir yn wir, gwir neu gau yn wir. 401 00:25:50,040 --> 00:25:57,150 Ffug neu yn wir yn wir, ffug neu ffug yw'r unig beth sy'n ffug mewn gwirionedd. 402 00:25:57,150 --> 00:26:00,100 Dyma enghraifft y dylech wybod 403 00:26:00,100 --> 00:26:05,160 fel enghraifft 'n bert da o bryd gweithredwyr bitwise yn cael eu defnyddio. 404 00:26:05,160 --> 00:26:08,660 Yma os ydym neu gyfalaf 'A' gyda Ox20, 405 00:26:08,660 --> 00:26:11,830 a byddwn yn edrych ar y rhain yn ail, rydym yn cael rhywbeth. 406 00:26:11,830 --> 00:26:16,020 Ac os ydym neu llythrennau bach 'a' gyda Ox20, rydym yn cael rhywbeth. 407 00:26:16,020 --> 00:26:26,750 Felly, gadewch i ni tynnu i fyny tabl ASCII. 408 00:26:26,750 --> 00:26:34,000 Iawn. Yma rydym yn gweld bod 'A' yw - 409 00:26:34,000 --> 00:26:36,920 yma rydym yn cael 'A' yn 65 degol. 410 00:26:36,920 --> 00:26:45,120 Ond byddaf yn mynd â hecsadegol, sydd yn Ox41. 411 00:26:45,120 --> 00:26:48,280 Pretty sicrhau ein bod yn ei weld yn y dosbarth. Rwy'n credu ein bod yn ei weld yn y dosbarth 412 00:26:48,280 --> 00:26:52,730 ei bod yn eithaf hawdd i drosi o hecsadegol i deuaidd. 413 00:26:52,730 --> 00:26:55,280 Felly yma, os wyf am roi 4 yn deuaidd, 414 00:26:55,280 --> 00:26:59,550 mae hynny'n jyst yn mynd i fod yn 0100. 415 00:26:59,550 --> 00:27:03,620 Mae hyn yn 1 yn lle, lle 2, lle 4, felly mae hwn yn 4. 416 00:27:03,620 --> 00:27:08,550 Yna gallaf rhannu 1 i deuaidd, sydd yn mynd i fod yn 0001. 417 00:27:08,550 --> 00:27:14,280 Ac felly mae hyn yn mynd i fod yn gynrychiolaeth o 'A' mewn deuaidd. 418 00:27:14,280 --> 00:27:22,720 Cymryd llythrennau bach 'a', mae'n awr yn mynd i fod yn Ox61, 419 00:27:22,720 --> 00:27:27,050 lle, rannu'r rhain i fyny i mewn ei deuaidd, felly 6 - 420 00:27:27,050 --> 00:27:37,830 Gadewch i ni mewn gwirionedd yn gwneud hynny - a oes unrhyw rhwbiwr? Rhwbiwr. 421 00:27:37,830 --> 00:27:48,220 Ox61. Felly, rhannu 6 i deuaidd yn mynd i fod yn 0 + 4 + 2 + 0. 422 00:27:48,220 --> 00:27:54,610 A hollti 1 yn mynd i fod 0001. 423 00:27:54,610 --> 00:27:56,520 O edrych ar y gwahaniaeth rhwng y 2, 424 00:27:56,520 --> 00:28:04,250 rydym yn gweld bod yr unig wahaniaeth rhwng llythrennau bach a chyfalaf 'A' yw hwn ychydig yn sengl. 425 00:28:04,250 --> 00:28:11,810 Felly, yn dod yn ôl ato yma - iawn. 426 00:28:11,810 --> 00:28:15,920 Dod yn ôl ato yma, os ydym yn edrych ar yr hyn y darn Ox20 yw, 427 00:28:15,920 --> 00:28:22,210 felly hollti Ox20 yn ei deuaidd, 428 00:28:22,210 --> 00:28:27,310 yn 0010, 0000. 429 00:28:27,310 --> 00:28:33,470 Ox20, yr unig darn sy'n cael ei osod yn bit hon yr ydym yn ymwneud â, 430 00:28:33,470 --> 00:28:38,210 gyda newid rhwng cyfalaf a llythrennau bach 'a'. 431 00:28:38,210 --> 00:28:47,610 Os byddaf neu 'A', sef yr un yma, 'A', 432 00:28:47,610 --> 00:28:50,580 os byddaf neu 'A' gyda Ox20, 433 00:28:50,580 --> 00:28:53,490 beth ydw i'n mynd i gael? 434 00:28:53,490 --> 00:28:58,960 [Myfyrwyr, anhyglyw] >> llythrennau bach 'a', gan ei fod yn mynd i troi ychydig hwn i 1. 435 00:28:58,960 --> 00:29:04,170 Ac os byddaf neu 'a' gyda Ox20, beth ydw i'n mynd i gael? 436 00:29:04,170 --> 00:29:08,780 Llythrennau bach yn, oherwydd dim ond oring 'a' gyda Ox20, 437 00:29:08,780 --> 00:29:14,580 Im 'jyst yn mynd i fod yn oring hwn ychydig yn unigol i 1; mae'n eisoes yn 1, felly does dim ots. 438 00:29:14,580 --> 00:29:17,960 Felly, rydym yn cael 'a' a 'a'. 439 00:29:17,960 --> 00:29:24,820 >> Bitwise a. Unwaith eto, gallwn feddwl am hyn fel ein cyfatebol rhesymegol a. 440 00:29:24,820 --> 00:29:28,180 Ar yr ochr chwith mae gennym wir ac yn wir. 441 00:29:28,180 --> 00:29:31,160 Mae'n mynd i fod yn wir, ac ar gyfer pob un o'r achosion, 442 00:29:31,160 --> 00:29:36,270 ffug a gwir neu yn wir a ffug, neu ffug a ffug, 443 00:29:36,270 --> 00:29:38,550 un o'r pethau hynny yn wir. 444 00:29:38,550 --> 00:29:44,170 Felly, yr hyn yr ydym yn y pen draw yn cael yn 1000. 445 00:29:44,170 --> 00:29:48,830 Felly nawr, dyma, dyma lle yr wyf wedi defnyddio'r bitwise trusty peidio, 446 00:29:48,830 --> 00:29:52,230 lle cawsom Ox20. 447 00:29:52,230 --> 00:29:54,350 Felly mae hyn yn Ox20. 448 00:29:54,350 --> 00:29:59,570 Nawr yr hyn yr wyf am ei wneud, bitwise ~ o Ox20. 449 00:29:59,570 --> 00:30:03,600 Sy'n mynd i troi holl ddarnau. 450 00:30:03,600 --> 00:30:09,330 Felly, yr wyf wedi 1101, 1111. 451 00:30:09,330 --> 00:30:18,940 Ac felly 'A' anded gyda ~ Ox20 yn mynd i roi i mi beth? 452 00:30:18,940 --> 00:30:22,430 Yr unig bit mae gwir angen i ni feddwl amdano yw hwn, 453 00:30:22,430 --> 00:30:26,020 ers hynny, os yw pob un y darnau hyn yn cael eu gosod i 1, 454 00:30:26,020 --> 00:30:29,000 yna rydym yn mynd i gael yn union beth 'A' oedd, 455 00:30:29,000 --> 00:30:31,260 ac eithrio ar gyfer, o bosibl, beth bit yw hyn. 456 00:30:31,260 --> 00:30:34,460 Oherwydd os oedd yn 1, erbyn hyn mae'n mynd i gael eu gosod i 0, 457 00:30:34,460 --> 00:30:39,810 oherwydd beth bynnag yw hyn, anded â hyn yn mynd i fod yn 0. 458 00:30:39,810 --> 00:30:43,280 Felly beth yw 'A' & ~ Ox20 yn mynd i roi i mi? 459 00:30:43,280 --> 00:30:48,200 [Myfyrwyr yn ateb, anhyglyw] >> A beth yw 'a' a - mae'n 'A'. 460 00:30:48,200 --> 00:30:52,170 A beth yw '' & ~ Ox20 yn mynd i roi i mi? 461 00:30:52,170 --> 00:30:56,720 'A.' Oherwydd bod hyn yn hyn o bryd 1. 462 00:30:56,720 --> 00:30:59,570 Anding â hyn 0 yn mynd i wneud yn 0, 463 00:30:59,570 --> 00:31:02,530 ac yn awr rydym yn mynd i gael 'A'. 464 00:31:02,530 --> 00:31:06,600 >> Mae'r ddau yn 'A,' ac yn olaf ond nid yn lleiaf o'r math hwn, 465 00:31:06,600 --> 00:31:10,830 rydym wedi XOR. Mae'n debyg iawn neu, 466 00:31:10,830 --> 00:31:14,400 ac eithrio ei fod yn golygu yn gyfan gwbl neu. 467 00:31:14,400 --> 00:31:18,420 Mae hyn yn debyg yr hyn yr ydych fel arfer yn meddwl amdano fel neu yn y byd go iawn. 468 00:31:18,420 --> 00:31:23,190 Felly rydych yn ei wneud naill ai 'x' neu 'y', ond nid y ddau. 469 00:31:23,190 --> 00:31:28,700 Yma 1 ^ 1 yn mynd i fod yn 0. 470 00:31:28,700 --> 00:31:33,650 Oherwydd yn wir, mae hyn yn - nid yw'n gweithio cystal â'r gwir rhesymegol a gau 471 00:31:33,650 --> 00:31:37,150 fel bitwise ac a neu ei wneud, 472 00:31:37,150 --> 00:31:40,100 ond yn wir ^ yn wir yn ffug. 473 00:31:40,100 --> 00:31:44,810 Gan mai dim ond yn awyddus i ddychwelyd yn wir os mai dim ond un ohonynt yn wir. 474 00:31:44,810 --> 00:31:50,950 Felly, 1 ^ 1 yw 0. Beth am 0 ^ 1? 475 00:31:50,950 --> 00:31:56,010 Yw 1. 1 ^ 0 yw 1, 0 ^ 0 yw 0. 476 00:31:56,010 --> 00:32:03,890 Felly, o dan yr holl amgylchiadau, 0 bitwise rhywbeth 0 yn mynd i fod yn 0. 477 00:32:03,890 --> 00:32:10,270 1 bitwise rhywbeth 0 neu 0 bitwise 1, 478 00:32:10,270 --> 00:32:14,660 os yw'n | neu ^, fe fydd yn 1, ac os yw'n & bydd yn cael ei 0. 479 00:32:14,660 --> 00:32:20,850 A'r unig achos lle nad yw 1 bitwise 1 yw 1 yn unig neu gyda. 480 00:32:20,850 --> 00:32:24,580 Dyna 0110. 481 00:32:24,580 --> 00:32:36,520 Felly yma nawr, gan ddefnyddio XOR - felly rydym yn ôl yn 20. 482 00:32:36,520 --> 00:32:43,480 'A' ^ Ox20 yn y 2 darnau rydym yn cymharu. 483 00:32:43,480 --> 00:32:50,020 Felly 1 ^ 0 yn mynd i roi i mi beth? Mae un. 484 00:32:50,020 --> 00:32:58,430 'A' ^ Ox20 yn mynd i roi i mi? Lythrennau bach a. 485 00:32:58,430 --> 00:33:04,010 'A' ^ Ox20 yn mynd i roi i mi? Cyfalaf A. 486 00:33:04,010 --> 00:33:09,310 Oherwydd beth bynnag mae hyn yn ei wneud, XORing hwn gyda Ox20 487 00:33:09,310 --> 00:33:15,380 yn flipping effeithiol beth bynnag bit yw hyn. 488 00:33:15,380 --> 00:33:21,240 Os yw hyn yn 0, mae'n awr yn mynd i fod yn 1. 489 00:33:21,240 --> 00:33:26,160 Gan fod hwn yn 1, 1 ^ 1 yw 0. 490 00:33:26,160 --> 00:33:33,280 Felly mae ein 'a' wedi dod yn 'A', ac mae ein 'A' wedi dod 'a'. 491 00:33:33,280 --> 00:33:36,910 Felly XOR yn ffordd gyfleus iawn o ddim ond flipping yr achos. 492 00:33:36,910 --> 00:33:39,960 Rydych yn unig yn awyddus i ailadrodd dros gyfres o lythyrau 493 00:33:39,960 --> 00:33:44,330 ac yn ail achos pob un gymeriad, 494 00:33:44,330 --> 00:33:50,680 'ch jyst XOR popeth gyda Ox20. 495 00:33:50,680 --> 00:33:55,220 >> Nawr rydym wedi gadael sifft. Sifft Chwith yn unig yn mynd i, yn y bôn, 496 00:33:55,220 --> 00:34:01,250 gwthio pob un o'r rhifau i mewn i, neu ar y chwith, a rhowch 0 yn y tu ôl iddynt. 497 00:34:01,250 --> 00:34:05,550 Felly dyma ni wedi 00,001,101. 498 00:34:05,550 --> 00:34:08,560 Rydym yn mynd i wthio 3 0 yn o'r dde, 499 00:34:08,560 --> 00:34:13,580 ac rydym yn cael 01,101,000. 500 00:34:13,580 --> 00:34:16,380 Mewn termau nonbinary, 501 00:34:16,380 --> 00:34:24,699 rydym yn gweld bod hynny wedi wir yn delio 13 gyda 3-symud chwith, sy'n rhoi i ni 104. 502 00:34:24,699 --> 00:34:32,530 Felly chwith symudol, rydym yn gweld yma, x << y yn y bôn x * 2 ^ y. 503 00:34:32,530 --> 00:34:40,139 13 * 2 ^ 3, 2 ^ 3 yw 8, felly 13 * 8 yw 104. 504 00:34:40,139 --> 00:34:45,679 Os ydych yn unig yn meddwl am deuaidd yn gyffredinol, sut y mae pob digid, 505 00:34:45,679 --> 00:34:49,530 os byddwn yn dechrau o'r dde, 'i' y 1 yn lle, yna lle y 2, yna lle y 4. 506 00:34:49,530 --> 00:34:51,330 Felly, gan wthio mewn 0 oddi ar y dde, 507 00:34:51,330 --> 00:34:55,080 ni jyst yn gwthio pethau a oedd ar waith y 4 at le y 8, 508 00:34:55,080 --> 00:34:57,920 a phethau a oedd ar waith yr 8 i le y 16. 509 00:34:57,920 --> 00:35:01,280 Pob sifft yn unig yn lluosi gyda 2. Yeah? 510 00:35:01,280 --> 00:35:05,210 [Myfyrwyr] Beth sy'n digwydd os ydych yn symud gan 5? 511 00:35:05,210 --> 00:35:10,790 [Bowden] Os ydych yn symud gan 5 y byddech yn unig yn colli digid. 512 00:35:10,790 --> 00:35:15,410 Yn anochel, mae'n yr un peth. Fel, cyfanrifau dim ond 32 darnau yn, 513 00:35:15,410 --> 00:35:20,750 felly os ydych yn ychwanegu 2 gyfanrifau mawr iawn, 'i jyst yn cyd-fynd mewn gyfanrif. 514 00:35:20,750 --> 00:35:23,660 Felly, mae'n yr un peth yma. Os ydych yn symud o 5, 515 00:35:23,660 --> 00:35:25,650 byddem yn unig yn colli bod un. 516 00:35:25,650 --> 00:35:28,820 A dyna fath o hyn yr wyf yn ei olygu wrth "yn fras," 517 00:35:28,820 --> 00:35:37,470 lle os ydych yn symud yn rhy bell, byddwch yn colli darnau. 518 00:35:37,470 --> 00:35:39,830 >> Sifft Hawl yn mynd i fod y gwrthwyneb, 519 00:35:39,830 --> 00:35:43,090 lle rydym yn mynd i gwthio 0 yn oddi ar y diwedd, 520 00:35:43,090 --> 00:35:48,400 ac ar gyfer ein dibenion, llenwch 0 oddi ar y chwith. 521 00:35:48,400 --> 00:35:52,910 Felly wneud hyn, rydym yn y bôn bacio hyn yr oeddem wedi'i wneud eisoes. 522 00:35:52,910 --> 00:35:57,780 Ac rydym yn gweld bod y tri 0 ar y dde yn union wedi gostwng i ffwrdd, 523 00:35:57,780 --> 00:36:02,020 ac rydym wedi gwthio y 1101 yr ​​holl ffordd ar y dde. 524 00:36:02,020 --> 00:36:08,380 Mae hyn yn ei wneud 104 >> 3, sef, i bob pwrpas, x / 2 ^ y. 525 00:36:08,380 --> 00:36:11,200 Felly nawr, dyma, mae'n syniad tebyg. 526 00:36:11,200 --> 00:36:18,720 Pam ei fod dim ond yn fras x / 2 ^ y, ac nid mewn gwirionedd x / 2 ^ y? 527 00:36:18,720 --> 00:36:22,240 Oherwydd os wyf wedi symud gan 4, byddwn wedi colli 1. 528 00:36:22,240 --> 00:36:25,950 Yn y bôn, yr hyn yr ydych yn meddwl am, dim ond meddwl am is-adran cyfanrif yn gyffredinol. 529 00:36:25,950 --> 00:36:31,070 Felly, fel 5/2 yw 2. Dyw hi ddim yn 2.5. 530 00:36:31,070 --> 00:36:35,000 Mae yr un syniad yma. Pan fyddwn yn rhannu â 2, 531 00:36:35,000 --> 00:36:39,910 gallwn golli darnau rhyfedd ar hyd y ffordd. 532 00:36:39,910 --> 00:36:43,870 Felly nawr - dyna ni am bitwise. Dyna i gyd angen i chi wybod. 533 00:36:43,870 --> 00:36:46,340 Cofiwch yr achosion defnydd a welsom yn y dosbarth, 534 00:36:46,340 --> 00:36:49,340 fel bit mwgwd yn ddefnyddiol ar gyfer gweithredwyr bitwise, 535 00:36:49,340 --> 00:36:53,220 neu os ydych yn eu defnyddio ar gyfer mygydau bit. 536 00:36:53,220 --> 00:36:58,620 Prif lythrennau a llythrennau bach, addasiadau yn enghraifft eithaf prototypical. 537 00:36:58,620 --> 00:37:01,640 >> Iawn, felly byffer ymosodiadau gorlifo. 538 00:37:01,640 --> 00:37:05,110 Unrhyw un yn cofio beth oedd o'i le gyda swyddogaeth hwn? 539 00:37:05,110 --> 00:37:10,140 Rhybudd rydym yn datgan amrywiaeth o 12 bytes, 12 chars, 540 00:37:10,140 --> 00:37:18,510 ac yna rydym yn copïo i mewn i'n byffer o 12 chars y bar llinyn cyfan. 541 00:37:18,510 --> 00:37:25,080 Felly beth yw'r broblem yma? 542 00:37:25,080 --> 00:37:32,270 Dylai'r rhif hud 12 pop allan 'n bert lawer yn union fel - pam 12? 543 00:37:32,270 --> 00:37:35,050 Beth os bar yn digwydd i fod yn fwy na 12 cymeriadau? 544 00:37:35,050 --> 00:37:41,200 Beth os yw bar miliynau o gymeriadau? 545 00:37:41,200 --> 00:37:46,010 Yma, mae'r mater hwn yn memcpy. Os bar yn ddigon hir, 546 00:37:46,010 --> 00:37:50,330 bydd dim ond yn gyfan gwbl - 'c', 'c' ddim yn poeni mai dim ond 12 nod; 547 00:37:50,330 --> 00:37:53,280 Nid 'c' ddim yn poeni na all fod yn addas bod llawer o bytes. 548 00:37:53,280 --> 00:37:58,250 Bydd 'I jyst yn llwyr ysgrifennu dros torgoch, y 12 bytes rydym wedi dyrannu ar ei gyfer, 549 00:37:58,250 --> 00:38:01,830 a phopeth yn y gorffennol mewn cof nad yw'n mewn gwirionedd yn perthyn i'r byffer 550 00:38:01,830 --> 00:38:06,520 gyda beth bynnag y bar llinyn yn. 551 00:38:06,520 --> 00:38:09,780 Felly, dyma oedd y darlun a welsom yn y dosbarth 552 00:38:09,780 --> 00:38:12,220 lle mae gennym ein pentwr tyfu i fyny. 553 00:38:12,220 --> 00:38:16,040 Dylech gael ei ddefnyddio i luniau hyn neu gael gyfarwydd â nhw eto. 554 00:38:16,040 --> 00:38:21,260 Rydym wedi ein pentwr tyfu i fyny, cyfeiriadau cof yn dechrau ar 0 ar y brig 555 00:38:21,260 --> 00:38:26,270 ac yn tyfu i lawr i yn hoffi 4000000000 ar y gwaelod. 556 00:38:26,270 --> 00:38:28,820 Rydym wedi ein 'c' amrywiaeth rhywle yn y cof, 557 00:38:28,820 --> 00:38:32,260 yna rydym wedi ein pwyntydd i wahardd dde oddi tano, 558 00:38:32,260 --> 00:38:38,720 ac yna rydym yn cael y pwyntydd ffrâm cadw yn ein cyfeiriad dychwelyd a simnai ein rhiant rheolaidd yn. 559 00:38:38,720 --> 00:38:40,800 Cofiwch yr hyn y mae'r cyfeiriad dychwelyd y mae? 560 00:38:40,800 --> 00:38:45,360 Ond pryd prif galw yn foo swyddogaeth, yn galw bar swyddogaeth, 561 00:38:45,360 --> 00:38:48,100 yn anochel, bar ffurflenni. 562 00:38:48,100 --> 00:38:52,610 Felly, pan fydd yn dychwelyd bar, mae angen iddynt wybod ei fod yn mynd yn ôl i'r foo a oedd yn galw ei. 563 00:38:52,610 --> 00:39:01,360 Felly mae'r cyfeiriad dychwelyd yw cyfeiriad y swyddogaeth y mae'n rhaid iddi ddychwelyd i pan fydd y ffurflenni swyddogaeth. 564 00:39:01,360 --> 00:39:05,830 Y rheswm sy'n bwysig ar gyfer ymosodiadau gorlif byffer oherwydd, yn gyfleus, 565 00:39:05,830 --> 00:39:09,580 hacwyr yn hoffi i newid y cyfeiriad dychwelyd. 566 00:39:09,580 --> 00:39:14,950 Yn hytrach na mynd yn ôl i'r foo, yr wyf i'n mynd i fynd yn ôl i ble bynnag y haciwr eisiau i mi fynd yn ôl i'r. 567 00:39:14,950 --> 00:39:17,760 Ac, yn gyfleus, pan fydd y haciwr yn aml yn awyddus i fynd yn ôl at 568 00:39:17,760 --> 00:39:22,400 yn cychwyn y byffer yr ydym wreiddiol oedd. 569 00:39:22,400 --> 00:39:26,170 Felly sylwi, unwaith eto, Little Indiaidd. 570 00:39:26,170 --> 00:39:28,490 Mae'r peiriant yn enghraifft o system Indiaidd Little, 571 00:39:28,490 --> 00:39:34,140 felly mae cyfanrif neu pwyntydd yn cael ei storio gyda bytes wrthdroi. 572 00:39:34,140 --> 00:39:38,980 Felly, yma rydym yn gweld - a yw hyn? Yeah. 573 00:39:38,980 --> 00:39:45,660 Rydym yn gweld Ox80, OxC0, Ox35, OxO8. 574 00:39:45,660 --> 00:39:48,250 Cofiwch y digidau hecsadegol? 575 00:39:48,250 --> 00:39:50,640 Nid ydym yn gwrthdroi'r y digidau hecsadegol yn Little Indiaidd, 576 00:39:50,640 --> 00:39:56,110 oherwydd 2 ddigid hecsadegol yn ffurfio beit sengl, ac yr ydym yn gwrthdroi'r bytes. 577 00:39:56,110 --> 00:40:00,300 Dyna pam nad ydym yn storio, fel, 80530CO8. 578 00:40:00,300 --> 00:40:07,520 Rydym yn storio, yn lle hynny, mae pob pâr o 2 ddigid, gan ddechrau o'r dde. 579 00:40:07,520 --> 00:40:10,880 Y cyfeiriad hwnnw yn cyfeirio at y cyfeiriad y dechrau 580 00:40:10,880 --> 00:40:15,190 ein byffer yr ydym mewn gwirionedd yn awyddus i gopïo i mewn yn y lle cyntaf. 581 00:40:15,190 --> 00:40:19,230 Y rheswm y yn ddefnyddiol oherwydd, beth os yr ymosodwr 582 00:40:19,230 --> 00:40:24,100 ddigwyddodd i, yn hytrach na gorfod llinyn a oedd yn unig 583 00:40:24,100 --> 00:40:27,060 llinyn ddiniwed o fel, eu henw neu rywbeth, 584 00:40:27,060 --> 00:40:33,900 beth os, yn hytrach, y llinyn oedd rhai cod mympwyol 585 00:40:33,900 --> 00:40:38,610 a wnaeth beth bynnag y maent am iddo wneud? 586 00:40:38,610 --> 00:40:45,630 Felly, maent yn gallai - ni allaf feddwl am unrhyw god oer. 587 00:40:45,630 --> 00:40:47,780 Gallai fod yn unrhyw beth, er. Unrhyw god drychinebus. 588 00:40:47,780 --> 00:40:51,440 Os ydynt yn dymuno, gallent dim ond gwneud rhywbeth ar ddiffygion seg, ond byddai hynny'n ddibwrpas. 589 00:40:51,440 --> 00:40:54,950 Maent fel arfer yn ei wneud i darnia eich system. 590 00:40:54,950 --> 00:40:59,930 >> Iawn. Llyfrgell CS50. 591 00:40:59,930 --> 00:41:04,800 Mae hyn yn, yn y bôn, getInt, getString, holl swyddogaethau y rhai a ddarperir gennym ar eich cyfer. 592 00:41:04,800 --> 00:41:10,630 Felly, rydym wedi * llinyn torgoch, a dyna'r tynnu ein bod yn chwythu i ffwrdd 593 00:41:10,630 --> 00:41:12,450 ar ryw adeg yn ystod y semester. 594 00:41:12,450 --> 00:41:18,220 Cofiwch fod llinyn yn unig yw amrywiaeth o gymeriadau. 595 00:41:18,220 --> 00:41:23,240 Felly, yma rydym yn gweld fersiwn talfyredig o'r getString. 596 00:41:23,240 --> 00:41:25,920 Dylech edrych yn ôl arno i gofio sut y caiff ei rhoi ar waith mewn gwirionedd. 597 00:41:25,920 --> 00:41:30,950 Manylion allweddol yw, sylwi rydym yn cael mewn cymeriad un ar y tro 598 00:41:30,950 --> 00:41:34,570 o safon i mewn, sydd yn union fel ni teipio ar y bysellfwrdd. 599 00:41:34,570 --> 00:41:37,890 Felly cymeriad un ar y tro, ac os ydym yn cael gormod o gymeriadau, 600 00:41:37,890 --> 00:41:40,580 felly os n + 1 yn fwy na gallu, 601 00:41:40,580 --> 00:41:44,140 yna mae angen i gynyddu gallu ein byffer. 602 00:41:44,140 --> 00:41:47,780 Felly dyma ni yn dyblu maint ein byffer. 603 00:41:47,780 --> 00:41:51,840 A bod yn cadw mynd, rydym mewnosoder y cymeriad yn ein byffer 604 00:41:51,840 --> 00:41:56,220 nes i ni dderbyn linell neu ar ddiwedd y ffeil neu beth bynnag newydd, 605 00:41:56,220 --> 00:41:59,380 ac os felly, yr ydym yn ei wneud gyda'r llinyn yn ac yna'r getString go iawn 606 00:41:59,380 --> 00:42:05,120 crebachu cof, fel pe baem dyrannu gormod o gof bydd yn mynd yn ôl ac yn crebachu ychydig. 607 00:42:05,120 --> 00:42:08,830 Felly, nid ydym yn dangos bod, ond y prif syniad yw 608 00:42:08,830 --> 00:42:11,960 mae'n rhaid iddo ddarllen mewn cymeriad un ar y tro. 609 00:42:11,960 --> 00:42:17,140 Ni ellir ei ddarllen ar y cyfan beth ar unwaith, 610 00:42:17,140 --> 00:42:19,550 oherwydd bod eu clustogi yn unig o faint penodol. 611 00:42:19,550 --> 00:42:26,590 Felly, os yw'r llinyn y mae'n ceisio mewnosod i mewn i byffer yn rhy fawr, yna byddai'n gorlifo. 612 00:42:26,590 --> 00:42:28,940 Felly, yma rydym yn atal hynny dim ond darllen yn gymeriad unigol 613 00:42:28,940 --> 00:42:33,750 ar y tro ac yn tyfu pryd bynnag y mae angen i ni. 614 00:42:33,750 --> 00:42:40,270 Felly getInt a'r swyddogaethau eraill y llyfrgell CS50 tueddu i ddefnyddio getString 615 00:42:40,270 --> 00:42:42,310 yn eu gweithrediadau. 616 00:42:42,310 --> 00:42:45,370 Felly, yr wyf sylw at y pethau pwysig yma. 617 00:42:45,370 --> 00:42:49,460 Mae'n galw getString i gael llinyn. 618 00:42:49,460 --> 00:42:51,710 Os getString methu â dychwelyd cof, 619 00:42:51,710 --> 00:42:54,270 cofiwch fod getString mallocs rhywbeth, felly pryd bynnag y byddwch yn galw getString 620 00:42:54,270 --> 00:42:57,820 ni ddylech (annealladwy) rhad ac am ddim y llinyn y cawsoch. 621 00:42:57,820 --> 00:43:02,870 Felly yma, os yw'n methu â malloc rhywbeth, byddwn yn dychwelyd INT_MAX fel dim ond baner hynny, 622 00:43:02,870 --> 00:43:05,650 hey, nid oeddem yn mewn gwirionedd yn gallu cael yn gyfanrif. 623 00:43:05,650 --> 00:43:10,830 Dylech anwybyddu beth bynnag yr wyf yn dychwelyd i chi, neu 624 00:43:10,830 --> 00:43:15,540 ni ddylech drin hyn fel mewnbwn dilys. 625 00:43:15,540 --> 00:43:21,360 Yn olaf, gan dybio bod yn llwyddo, rydym yn defnyddio sscanf â'r baner arbennig, 626 00:43:21,360 --> 00:43:23,820 sy'n golygu, yn gyntaf yn cyd-fynd yn gyfanrif, 627 00:43:23,820 --> 00:43:26,770 Yna cyfateb i unrhyw rai ond y cyfanrif. 628 00:43:26,770 --> 00:43:29,070 Felly sylwi ein am iddo hafal i 1. 629 00:43:29,070 --> 00:43:32,940 Ffurflenni Felly sscanf faint o gemau os caiff ei wneud yn llwyddiannus? 630 00:43:32,940 --> 00:43:37,010 Bydd yn dychwelyd 1 os yn llwyddiannus yn cyfateb yn gyfanrif, 631 00:43:37,010 --> 00:43:40,890 bydd yn dychwelyd 0 os nad oedd yn cyd-fynd cyfanrif, a bydd yn dychwelyd 2 632 00:43:40,890 --> 00:43:45,920 os yw'n cyfateb cyfanrif dilyn gan rai cymeriad. 633 00:43:45,920 --> 00:43:49,780 Felly sylwi ein ailgeisio os ydym yn cyd-fynd unrhyw beth ond 1. 634 00:43:49,780 --> 00:43:55,230 Felly, os ydym yn mynd 1, 2, 3, C, neu 1, 2, 3, X, 635 00:43:55,230 --> 00:43:57,400 Yna, 1, 2, 3 yn cael ei storio yn y cyfanrif, 636 00:43:57,400 --> 00:43:59,620 Byddai X yn cael ei storio yn y cymeriad, 637 00:43:59,620 --> 00:44:06,410 Byddai sscanf yn dychwelyd 2, a byddem yn ceisio eto, gan mai dim ond eisiau gyfanrif. 638 00:44:06,410 --> 00:44:09,810 >> Chwythu gyflym drwy HTML, HTTP, CSS. 639 00:44:09,810 --> 00:44:15,340 HyperText Markup Language yw'r strwythur a semanteg y we. 640 00:44:15,340 --> 00:44:19,960 Dyma enghraifft o ddarlith lle mae gennym tagiau HTML. 641 00:44:19,960 --> 00:44:22,110 Mae gennym tagiau pen, tagiau corff, 642 00:44:22,110 --> 00:44:27,770 mae gennym enghreifftiau o dagiau gwag lle nad ydym mewn gwirionedd yn cael dechrau a thag agos, 643 00:44:27,770 --> 00:44:30,820 rydym yn unig yn cael cyswllt a delwedd. 644 00:44:30,820 --> 00:44:38,480 Nid oes tag delwedd cau; mae dim ond tag sengl sy'n accomplishes popeth mae angen i'r tag i'w wneud. 645 00:44:38,480 --> 00:44:41,950 Mae'r cyswllt yn enghraifft, byddwn yn gweld sut yr ydych yn cysylltu â CSS, 646 00:44:41,950 --> 00:44:45,910 y sgript yn enghraifft o sut yr ydych yn cysylltu â JavaScript allanol. 647 00:44:45,910 --> 00:44:53,100 Mae'n eithaf syml, a chofiwch, nid HTML yn iaith raglennu. 648 00:44:53,100 --> 00:44:58,250 Yma, cofiwch sut y byddech yn diffinio ffurflen neu o leiaf beth fyddai hyn yn ei wneud? 649 00:44:58,250 --> 00:45:01,740 Ffurflen o'r fath yn gweithredu a dull. 650 00:45:01,740 --> 00:45:06,210 Mae'r dulliau y byddwch yn dim ond byth yn gweld yn GET a POST. 651 00:45:06,210 --> 00:45:09,040 Felly GET yw'r fersiwn lle mae'r peth yn cael ei roi yn y URL. 652 00:45:09,040 --> 00:45:11,680 SWYDD yw lle nad yw'n cael ei roi yn y URL. 653 00:45:11,680 --> 00:45:18,520 Yn lle hynny, unrhyw ddata oddi wrth y ffurflen yn cael ei fewnosod yn fwy cudd yn y cais HTTP. 654 00:45:18,520 --> 00:45:22,390 Felly dyma, yn diffinio camau pan fo'r cais HTTP yn mynd. 655 00:45:22,390 --> 00:45:27,490 Ble mae'n mynd yn google.com / chwilio. 656 00:45:27,490 --> 00:45:32,890 Dull. Cofiwch y gwahaniaethau rhwng GET a POST, 657 00:45:32,890 --> 00:45:37,200 ac, yr un yn dweud fel enghraifft, os ydych am nod tudalen rhywbeth. 658 00:45:37,200 --> 00:45:40,660 Fyddwch chi byth yn gallu nod tudalen URL SWYDD 659 00:45:40,660 --> 00:45:44,970 oherwydd nad yw'r data yn cael ei gynnwys yn yr URL. 660 00:45:44,970 --> 00:45:49,790 >> HTTP, yn awr, yw Protocol Trosglwyddo HyperText. 661 00:45:49,790 --> 00:45:54,080 Mae'r Protocol Trosglwyddo HyperText, byddech yn disgwyl iddo drosglwyddo 662 00:45:54,080 --> 00:45:57,710 Iaith Markup HyperText, ac mae'n ei wneud. 663 00:45:57,710 --> 00:46:00,170 Ond mae hefyd yn trosglwyddo unrhyw ddelweddau chi ddod o hyd ar y We, 664 00:46:00,170 --> 00:46:05,400 unrhyw downloads a wnewch yn dechrau fel cais HTTP. 665 00:46:05,400 --> 00:46:10,350 Felly HTTP yn unig yw iaith y We Fyd Eang. 666 00:46:10,350 --> 00:46:15,610 A dyma mae angen i chi gydnabod y math hwn o gais HTTP. 667 00:46:15,610 --> 00:46:19,300 Yma HTTP/1.1 ar yr ochr yn unig yn dweud bod yn y fersiwn 668 00:46:19,300 --> 00:46:21,570 y protocol rwy'n ei ddefnyddio. 669 00:46:21,570 --> 00:46:25,770 Mae 'n bert lawer bob amser yn mynd i fod yn HTTP/1.1, fel y byddwch yn ei weld. 670 00:46:25,770 --> 00:46:30,110 Yna, rydym yn gweld bod hyn yn GET, y dewis arall oedd POST, y gallech eu gweld. 671 00:46:30,110 --> 00:46:40,790 Ac mae'r URL yr oeddwn yn ceisio ymweld oedd www.google.com/search?q = blah, blah, blah. 672 00:46:40,790 --> 00:46:44,240 Felly cofiwch fod hyn, mae'r cwestiwn marc q = blah blah blah, 673 00:46:44,240 --> 00:46:49,040 yw'r math o bethau sy'n cael ei gyflwyno gan ffurflen. 674 00:46:49,040 --> 00:46:51,830 Byddai'r ymateb gallai dychwelyd i mi edrych rhywbeth fel hyn. 675 00:46:51,830 --> 00:46:54,050 Unwaith eto, gan ddechrau gyda'r protocol, sydd yn mynd i fod yn hynny, 676 00:46:54,050 --> 00:46:59,190 wedi'i ddilyn gan y cod statws. Yma, mae'n 200 OK. 677 00:46:59,190 --> 00:47:05,060 Ac yn olaf, bydd y dudalen we sy'n Fi 'n weithredol yn gofyn am eu dilyn. 678 00:47:05,060 --> 00:47:08,210 Mae'r cod statws posibl y gallech weld, a dylech yn gwybod nifer ohonynt. 679 00:47:08,210 --> 00:47:12,770 200 OK mae'n debyg eich bod wedi ei weld o'r blaen. 680 00:47:12,770 --> 00:47:17,830 403 Forbidden, 404 Not Found, Gwall 500 Gweinydd Mewnol 681 00:47:17,830 --> 00:47:22,140 fel arfer os byddwch yn mynd i wefan a rhywbeth yn torri neu eu damweiniau cod PHP, 682 00:47:22,140 --> 00:47:24,930 tra yn y peiriant hwnnw gennym blwch oren mawr 683 00:47:24,930 --> 00:47:27,830 sy'n dod i fyny ac yn dweud, fel, rhywbeth yn anghywir, nid y cod hwn yn gweithio 684 00:47:27,830 --> 00:47:30,380 neu swyddogaeth hon yn ddrwg. 685 00:47:30,380 --> 00:47:33,230 Fel arfer nid gwefannau ddim eisiau i chi wybod pa swyddogaethau yn ddrwg mewn gwirionedd, 686 00:47:33,230 --> 00:47:37,880 felly yn lle byddant yn unig yn rhoi 500 gwallau Gweinydd Mewnol chi. 687 00:47:37,880 --> 00:47:43,050 >> TCP / IP yw 1 haen o dan HTTP. 688 00:47:43,050 --> 00:47:47,550 Cofiwch fod y Rhyngrwyd y tu allan i'r We Fyd Eang. 689 00:47:47,550 --> 00:47:52,270 Fel os ydych yn chwarae gêm ar-lein nad yw'n mynd drwy HTTP, 690 00:47:52,270 --> 00:47:55,740 ei fod yn mynd drwy wahanol - mae'n dal i ddefnyddio'r Rhyngrwyd, 691 00:47:55,740 --> 00:47:58,900 ond nid yw'n defnyddio HTTP. 692 00:47:58,900 --> 00:48:02,470 HTTP yn un enghraifft o brotocol a adeiladwyd ar TCP / IP. 693 00:48:02,470 --> 00:48:07,820 IP llythrennol yn golygu Protocol Rhyngrwyd. 694 00:48:07,820 --> 00:48:11,500 Mae gan bob cyfrifiadur cyfeiriad IP, maent yn y rhai pethau 4-digid 695 00:48:11,500 --> 00:48:16,510 fel 192.168.2.1, neu beth bynnag, sy'n tueddu i fod yn un lleol. 696 00:48:16,510 --> 00:48:23,390 Ond mae hynny'n patrwm o gyfeiriad IP. 697 00:48:23,390 --> 00:48:29,060 Felly, y DNS, y Gwasanaeth Enw Parth, 698 00:48:29,060 --> 00:48:33,410 dyna beth trosi pethau fel google.com i gyfeiriad IP gwirioneddol. 699 00:48:33,410 --> 00:48:37,700 Felly, os ydych yn teipio y cyfeiriad IP i mewn i URL, 700 00:48:37,700 --> 00:48:40,850 a fyddai'n dod â chi i Google, ond ydych yn tueddu i beidio â chofio pethau hynny. 701 00:48:40,850 --> 00:48:45,470 Yr ydych yn tueddu i gofio google.com yn lle hynny. 702 00:48:45,470 --> 00:48:51,560 Y peth olaf sydd gennym yw porthladdoedd, lle mae hyn yn rhan TCP IP. 703 00:48:51,560 --> 00:48:54,880 TCP yn gwneud mwy. Meddyliwch am, fel, mae gennych eich rhedeg porwr gwe. 704 00:48:54,880 --> 00:48:58,670 Efallai bod gennych rai rhedeg rhaglen e-bost; 705 00:48:58,670 --> 00:49:02,150 efallai eich bod yn cael rhywfaint o raglen arall sy'n defnyddio'r rhedeg Rhyngrwyd. 706 00:49:02,150 --> 00:49:05,090 Maent i gyd angen mynediad i'r Rhyngrwyd, 707 00:49:05,090 --> 00:49:08,100 ond dim ond 1 cerdyn WiFi neu beth bynnag gan eich cyfrifiadur. 708 00:49:08,100 --> 00:49:10,780 Felly porthladdoedd yw'r ffordd yr ydym yn bod yn gallu rhannu i fyny 709 00:49:10,780 --> 00:49:13,550 sut y ceisiadau hyn yn gallu defnyddio'r Rhyngrwyd. 710 00:49:13,550 --> 00:49:17,230 Mae pob cais yn cael 1 porthladd penodol y gall wrando ar, 711 00:49:17,230 --> 00:49:19,670 ac at ball, HTTP yn defnyddio porthladd 80. 712 00:49:19,670 --> 00:49:22,410 Mae rhai gwasanaethau e-bost yn defnyddio 25. 713 00:49:22,410 --> 00:49:24,490 Mae'r rhai rhifo isel yn tueddu i gael ei gadw. 714 00:49:24,490 --> 00:49:29,270 Fel arfer, byddwch yn gallu cael rhai uwch rhifo ar gyfer eich hun. 715 00:49:29,270 --> 00:49:32,010 >> CSS, Taflenni Arddull Rhaeadrol. 716 00:49:32,010 --> 00:49:36,030 Tudalennau gwe Rydym steil gyda CSS, nid gyda HTML. 717 00:49:36,030 --> 00:49:38,440 Mae yna 3 leoedd y gallwch roi eich CSS. 718 00:49:38,440 --> 00:49:46,300 Gall fod yn inline, rhwng tagiau arddull, neu mewn ffeil yn gyfan gwbl ar wahân, ac yna cysylltu i mewn 719 00:49:46,300 --> 00:49:48,470 A dyma yn unig yw enghraifft o CSS. 720 00:49:48,470 --> 00:49:50,450 Dylech gydnabod patrwm hwn, 721 00:49:50,450 --> 00:49:54,310 lle mae'r enghraifft gyntaf yw ein bod yn cyfateb y tag corff, 722 00:49:54,310 --> 00:49:56,680 ac yma rydym yn ganoli y tag corff. 723 00:49:56,680 --> 00:50:00,420 Yr ail enghraifft, rydym yn cyfateb y peth 724 00:50:00,420 --> 00:50:04,740 gyda footer adnabod, ac yr ydym yn gwneud cais rhai arddulliau i hynny. 725 00:50:04,740 --> 00:50:07,310 Sylwch fod ID footer testun-Alinio i'r chwith, 726 00:50:07,310 --> 00:50:09,840 tra canolfan gorff testun-Alinio. 727 00:50:09,840 --> 00:50:13,180 Footer yn y tu mewn i'r corff. 728 00:50:13,180 --> 00:50:16,470 Fe fydd, yn lle hynny, testun-alinio i'r chwith, er bod y corff yn dweud canolfan testun-alinio. 729 00:50:16,470 --> 00:50:18,880 Mae hyn yn gyfan ran rhaeadru ohono. 730 00:50:18,880 --> 00:50:22,110 Gallwch gael - gallwch nodi arddulliau ar gyfer y corff, 731 00:50:22,110 --> 00:50:25,320 ac yna pethau yn y corff gallwch nodi arddulliau mwy penodol, 732 00:50:25,320 --> 00:50:28,160 ac mae pethau'n gweithio wrth i chi ei ddisgwyl. 733 00:50:28,160 --> 00:50:34,420 Manylebwyr CSS mwy penodol yn cael blaenoriaeth. 734 00:50:34,420 --> 00:50:46,140 Yr wyf yn meddwl dyna ni. 735 00:50:46,140 --> 00:50:49,260 >> [Ali Nahm] Helo bawb. Os caf fi gael eich sylw. 736 00:50:49,260 --> 00:50:53,990 Rwy'n Ali ac rwy'n mynd i fynd drwy PHP a SQL yn gyflym iawn. 737 00:50:53,990 --> 00:51:00,310 Felly, gallwn ddechrau. PHP yn fyr ar gyfer PHP: Hypertext Preprocessor. 738 00:51:00,310 --> 00:51:03,730 Ac fel y dylai chi i gyd yn gwybod, mae'n iaith sgriptio ochr y gweinydd, 739 00:51:03,730 --> 00:51:06,800 ac yr ydym yn ei ddefnyddio ar gyfer y pen-ôl o wefannau, 740 00:51:06,800 --> 00:51:12,540 a sut y mae'n gwneud llawer o'r cyfrifiannau, y rhan y tu ôl llenni. 741 00:51:12,540 --> 00:51:17,510 Chystrawen. Dyw hi ddim yn hoffi C, syndod, syndod. 742 00:51:17,510 --> 00:51:22,060 Mae bob amser wedi i ddechrau gyda'r, os gallwch weld, y - ni allaf symud ymlaen. 743 00:51:22,060 --> 00:51:31,340 Gallwch weld eich bod angen y mathau newydd o bresys ac yna byddwch hefyd angen php?. 744 00:51:31,340 --> 00:51:35,780 Dyna bob amser sut mae'n rhaid i chi lunio eich testun PHP, eich cod PHP. 745 00:51:35,780 --> 00:51:39,180 Felly, ni all fod yn unig fod yn debyg i C, lle rydych yn fath o rhoi ar y tro cyntaf. 746 00:51:39,180 --> 00:51:42,290 Mae angen i chi bob amser o'i amgylch. 747 00:51:42,290 --> 00:51:47,610 Ac yn awr, y prif gystrawen yw bod angen i holl newidynnau i ddechrau gyda'r $ cymeriad. 748 00:51:47,610 --> 00:51:49,490 Angen i chi ei wneud pan fyddwch yn eu diffinio, mae angen i chi ei wneud 749 00:51:49,490 --> 00:51:51,860 pan fyddwch yn cyfeirio at atynt yn nes ymlaen. 750 00:51:51,860 --> 00:51:56,510 Rydych chi bob amser angen bod $. Eich ffrind gorau newydd, 'n bert lawer. 751 00:51:56,510 --> 00:52:01,690 Na wnewch chi - yn wahanol i C, nid oes angen i chi roi pa fath o fath amrywiol ydyw. 752 00:52:01,690 --> 00:52:04,940 Felly, wrth i chi mae angen y $, nid oes angen i chi roi, fel, 753 00:52:04,940 --> 00:52:09,470 int x neu linyn y, etcetera, etcetera. 754 00:52:09,470 --> 00:52:11,490 Felly, ychydig o wahaniaeth. 755 00:52:11,490 --> 00:52:15,590 O ganlyniad i hyn, mae'n golygu bod PHP yn fath yn wan. 756 00:52:15,590 --> 00:52:19,310 PHP yn iaith fath yn wan, ac mae wedi teipio newidynnau wan. 757 00:52:19,310 --> 00:52:24,020 Mewn geiriau eraill, mae hynny'n golygu eich bod yn gallu newid rhwng gwahanol fathau o fathau amrywiol. 758 00:52:24,020 --> 00:52:27,230 Gallwch storio eich rhif 1 fel int, 759 00:52:27,230 --> 00:52:29,650 gallwch chi ei storio fel llinyn, a gallwch ei storio fel fflôt, 760 00:52:29,650 --> 00:52:33,550 a bydd y cyfan yn y rhif 1. 761 00:52:33,550 --> 00:52:36,080 Hyd yn oed er eich bod yn storio mewn gwahanol ffurfiau, 762 00:52:36,080 --> 00:52:39,120 mae'n dal i fod - y mathau amrywiol yn dal i gynnal yn y diwedd. 763 00:52:39,120 --> 00:52:41,540 Felly, os ydych yn edrych yma, os ydych yn cofio o pset 7, 764 00:52:41,540 --> 00:52:43,500 llawer ohonoch yn ôl pob tebyg cael problemau gyda hyn. 765 00:52:43,500 --> 00:52:47,280 Ddau arwydd cyfartal, 3 arwyddion cyfartal, 4 arwydd cyfartal. 766 00:52:47,280 --> 00:52:49,990 Iawn, nid oes unrhyw 4 arwydd cyfartal, ond mae 2 a 3. 767 00:52:49,990 --> 00:52:53,320 Byddwch yn defnyddio 2 arwydd cyfartal i edrych ar y gwerthoedd. 768 00:52:53,320 --> 00:52:55,830 Gall edrych ar draws math. 769 00:52:55,830 --> 00:52:58,770 Felly, os gallwch weld yn yr enghraifft gyntaf, 770 00:52:58,770 --> 00:53:02,210 Mae gen i num_string == num_int. 771 00:53:02,210 --> 00:53:06,710 Felly eich int a'ch llinyn ill dau, yn dechnegol, 1, 772 00:53:06,710 --> 00:53:10,790 ond maent yn fathau gwahanol. Ond ar gyfer hafal dwbl, bydd yn dal i basio. 773 00:53:10,790 --> 00:53:15,510 Fodd bynnag, ar gyfer y hafal triphlyg, mae'n gwirio gwerth yn ogystal â'r gwahanol fathau. 774 00:53:15,510 --> 00:53:18,760 Mae hynny'n golygu nad yw ei fod yn mynd i basio yn yr ail achos yma, 775 00:53:18,760 --> 00:53:22,350 lle rydych yn defnyddio 3 arwyddion cyfartal yn lle hynny. 776 00:53:22,350 --> 00:53:26,590 Felly dyna wahaniaeth o bwys y dylai pob un ohonoch wedi dangos nawr. 777 00:53:26,590 --> 00:53:31,570 >> String Concatenation yn beth pwerus arall gallwch eu defnyddio yn PHP. 778 00:53:31,570 --> 00:53:34,080 Mae'n bôn yn unig mae hyn 'n hylaw dot nodiant, 779 00:53:34,080 --> 00:53:36,230 a dyna sut y gallwch rhwymo llinynnau at ei gilydd. 780 00:53:36,230 --> 00:53:40,800 Felly os oes gennych Cat a bod gennych Cŵn, a'ch bod am roi'r 2 llinynnau at ei gilydd, 781 00:53:40,800 --> 00:53:44,080 gallwch ddefnyddio'r cyfnod, a dyna fath o sut mae'n gweithio. 782 00:53:44,080 --> 00:53:46,660 Gallwch hefyd dim ond eu gosod nesaf at ei gilydd, 783 00:53:46,660 --> 00:53:49,030 fel y gwelwch yma yn yr enghraifft gwaelod, 784 00:53:49,030 --> 00:53:51,610 lle rwyf wedi adleisio llinyn 1, lle llinyn 2. 785 00:53:51,610 --> 00:53:56,930 Bydd PHP yn gwybod i gymryd eu lle fel y cyfryw. 786 00:53:56,930 --> 00:53:59,780 Araeau. Yn awr, yn PHP, mae 2 o wahanol fathau o araeau. 787 00:53:59,780 --> 00:54:03,180 Gallwch gael araeau rheolaidd, a gallwch hefyd gael araeau cysylltiadol, 788 00:54:03,180 --> 00:54:06,040 ac rydym yn mynd i fynd drwyddynt ar hyn o bryd. 789 00:54:06,040 --> 00:54:08,280 Araeau yn rheolaidd yn unig mae hyn yn C, 790 00:54:08,280 --> 00:54:11,240 ac felly mae gennych mynegeion sy'n cael eu rhifo. 791 00:54:11,240 --> 00:54:13,160 Ar hyn o bryd rydym yn jyst yn mynd i greu un a rhowch - 792 00:54:13,160 --> 00:54:15,500 felly dyma sut yr ydym yn creu amrywiaeth wag, yna rydym yn mynd i 793 00:54:15,500 --> 00:54:17,310 rhoi yn y mynegrif 0. 794 00:54:17,310 --> 00:54:19,200 Rydym yn mynd i roi'r rhif 6, mae'r gwerth 6. 795 00:54:19,200 --> 00:54:21,500 Gallwch ei weld ar y gwaelod yma. 796 00:54:21,500 --> 00:54:24,240 Where's - yn y mynegai rhif 1 rydym yn mynd i roi gwerth rhif 4, 797 00:54:24,240 --> 00:54:26,720 ac fel y gallwch weld mae 'na 6, mae' na 4, 798 00:54:26,720 --> 00:54:29,160 ac yna fel ein bod yn argraffu pethau, 799 00:54:29,160 --> 00:54:33,550 pan fyddwn yn ceisio ac argraffu'r gwerth storio yn mynegai rhif 0, 800 00:54:33,550 --> 00:54:36,900 Yna, byddwn yn gweld y gwerth 6 gael ei hargraffu. Cool? 801 00:54:36,900 --> 00:54:40,160 Felly dyna araeau rheolaidd i chi. 802 00:54:40,160 --> 00:54:42,750 Ffordd arall y gallwch chi hefyd ychwanegu pethau at araeau rheolaidd bellach 803 00:54:42,750 --> 00:54:44,780 yw y gallwch chi yn unig yn eu atodi ar y diwedd. 804 00:54:44,780 --> 00:54:47,240 Mae hynny'n golygu nad oes rhaid i chi nodi'r mynegai benodol. 805 00:54:47,240 --> 00:54:51,000 Gallwch weld nifer, ac yna yn y cromfachau sgwâr nad oes mynegai penodol. 806 00:54:51,000 --> 00:54:56,270 A bydd yn gwybod - bydd PHP yn gwybod i ddim ond ychwanegu at ddiwedd y rhestr, y fan a'r lle am ddim nesaf. 807 00:54:56,270 --> 00:54:59,190 Fel y gallwch weld y 1 iawn yno ar y 0 fan a'r lle, 808 00:54:59,190 --> 00:55:02,690 aeth y 2 iawn yno yn y fan a'r lle cyntaf. 809 00:55:02,690 --> 00:55:04,690 Y 3 yn mynd - yn cael ei ychwanegu yno hefyd. 810 00:55:04,690 --> 00:55:06,720 Felly y math hwnnw o yn gwneud synnwyr. Rydych yn unig yn gyson ychwanegu, 811 00:55:06,720 --> 00:55:09,360 ac yna pan rydym yn adleisio y mynegai rhif 1, 812 00:55:09,360 --> 00:55:13,080 bydd yn argraffu'r gwerth 2. 813 00:55:13,080 --> 00:55:16,800 >> Yna, mae gennym araeau sy'n araeau cysylltiadol. 814 00:55:16,800 --> 00:55:19,370 Araeau cysylltiadol, yn hytrach na gorfod mynegeion rhifiadol, 815 00:55:19,370 --> 00:55:23,630 hyn y maent yn ei wneud yw, mae ganddynt mynegeion sydd gan linyn. 816 00:55:23,630 --> 00:55:25,670 Gallwch weld, yn hytrach na - yr wyf yn cael gwared o'r holl fynegeion nifer hynny, 817 00:55:25,670 --> 00:55:32,140 ac yn awr mae'n key1, key2, key3, ac maen nhw'n mewn dyfynodau dwbl i ddynodi eu bod nhw i gyd llinynnau. 818 00:55:32,140 --> 00:55:34,470 Felly, gallwn gael enghraifft o hyn. 819 00:55:34,470 --> 00:55:38,790 Mae enghraifft o hyn yw ein bod yn cael y tf, a dyna'r enw mynegai. 820 00:55:38,790 --> 00:55:42,030 Rydym yn mynd i roi "Ali" fel yr enw, yn y mynegai, calorïau bwyta, 821 00:55:42,030 --> 00:55:47,640 gallwn roi int y tro hwn yn hytrach na llinyn, 822 00:55:47,640 --> 00:55:52,240 ac yna ar bobl fel mynegai, gallwn roi amrywiaeth cyfan tu mewn iddo. 823 00:55:52,240 --> 00:55:55,490 Felly, mae hyn yn fath o - mae'n gysyniad debyg i'r ffordd yr ydym wedi 824 00:55:55,490 --> 00:55:58,930 mynegeion gyda rhifau, ond erbyn hyn gallwn newid y mynegeion o gwmpas 825 00:55:58,930 --> 00:56:03,890 eu cael fel llinynnau yn lle hynny. 826 00:56:03,890 --> 00:56:06,070 Gallwch hefyd wneud hyn, ar wahân dim ond gwneud yn unigol, 827 00:56:06,070 --> 00:56:09,400 gallwch chi wneud y cyfan mewn un darn. Felly, gallwch weld bod tf yr amrywiaeth, 828 00:56:09,400 --> 00:56:13,350 ac yna rydym i gyd a osodwyd yn un set braced sgwâr mawr. 829 00:56:13,350 --> 00:56:15,220 Fel y gall gyflymu pethau. 830 00:56:15,220 --> 00:56:19,730 Mae'n fwy o ddewis arddull na pheidio. 831 00:56:19,730 --> 00:56:21,550 Mae gennym hefyd dolenni. 832 00:56:21,550 --> 00:56:26,020 Yn C gennym ddolenni sy'n gweithio fel hyn. 833 00:56:26,020 --> 00:56:29,690 Cawsom ein amrywiaeth, ac rydym yn mynd o fynegai 0 i ddiwedd y rhestr, 834 00:56:29,690 --> 00:56:31,740 ac rydym yn argraffu cyfan, dde? 835 00:56:31,740 --> 00:56:33,880 Heblaw y broblem yw, ar gyfer araeau cysylltiadol, 836 00:56:33,880 --> 00:56:36,610 Nid ydym o reidrwydd yn gwybod mynegeion rhifiadol hynny 837 00:56:36,610 --> 00:56:39,610 oherwydd erbyn hyn mae gennym y llinyn mynegeion. 838 00:56:39,610 --> 00:56:44,800 Nawr rydym yn defnyddio dolenni foreach, sydd, unwaith eto, yr ydych yn ei ddefnyddio, gobeithio, yn pset 7. 839 00:56:44,800 --> 00:56:48,930 Bydd dolenni foreach jyst yn gwybod pob un rhan o'r rhestr. 840 00:56:48,930 --> 00:56:52,450 Ac nid oes rhaid iddo wybod yn union y mynegai rhifiadol sydd gennych. 841 00:56:52,450 --> 00:56:56,490 Felly, rydych yn cael y gystrawen foreach, felly mae'n foreach, rydych yn rhoi'r amrywiaeth. 842 00:56:56,490 --> 00:57:00,430 Felly, galw fy amrywiaeth yn pset, ac yna fel, y gair fel, 843 00:57:00,430 --> 00:57:04,530 ac yna byddwch yn rhoi hyn newidyn dros dro lleol eich bod yn mynd i ddefnyddio 844 00:57:04,530 --> 00:57:10,690 yn unig ar gyfer y peth penodol sy'n mynd i gynnal y penodol - 845 00:57:10,690 --> 00:57:14,770 un achos neu un adran o'r rhesi. 846 00:57:14,770 --> 00:57:18,350 Bydd NUM Pset dal 1, ac yna efallai y bydd yn dal y rhif 6, 847 00:57:18,350 --> 00:57:20,410 ac yna bydd yn dal y rhif 2. 848 00:57:20,410 --> 00:57:26,630 Ond mae'n sicr o fynd drwy bob gwerth unigol sydd yn y casgliad. 849 00:57:26,630 --> 00:57:30,530 Swyddogaethau defnyddiol y dylech wybod yn PHP yw'r angen, 850 00:57:30,530 --> 00:57:35,880 er mwyn gwneud yn siwr eich bod yn cynnwys rhai ffeiliau, adlais, allanfa, yn wag. 851 00:57:35,880 --> 00:57:40,490 Fi 'n dal argymell i chi edrych ar pset 7 ac edrych ar y swyddogaethau hynny. 852 00:57:40,490 --> 00:57:42,810 Efallai y bydd rhaid i chi ei wybod hynny, 853 00:57:42,810 --> 00:57:47,060 felly byddwn yn bendant yn gwybod beth, yn union, y rhai i gyd yn gwneud. 854 00:57:47,060 --> 00:57:50,080 >> Ac yn awr rydym yn mynd i fynd drwy gwmpas yn gyflym iawn. 855 00:57:50,080 --> 00:57:53,490 Yn cwmpas, PHP yn fath o beth ffynci, yn wahanol i C, 856 00:57:53,490 --> 00:57:56,170 ac felly rydym yn jyst yn mynd i fynd drwy'r yn gyflym. 857 00:57:56,170 --> 00:57:58,930 Felly, gadewch i ni ddweud ein bod yn dechrau ar y saeth sydd gennym yno. 858 00:57:58,930 --> 00:58:02,900 Ac rydym yn mynd i ddechrau gyda $ i. Felly, y newidyn 'i' yn mynd i fod yn 0, 859 00:58:02,900 --> 00:58:06,730 ac rydym yn jyst yn mynd i gadw ei argraffu yn y blwch mawr gwyn dros yno. 860 00:58:06,730 --> 00:58:09,220 Rydym yn mynd i ddechrau I0, ac yna rydym yn mynd i adleisio hynny. 861 00:58:09,220 --> 00:58:12,670 Felly mae y 0. 862 00:58:12,670 --> 00:58:15,210 Ac yna rydym yn mynd i hicyn iddo gan yr ar gyfer ddolen, 863 00:58:15,210 --> 00:58:17,810 ac yna mae'n mynd i fod yn werth 1. 864 00:58:17,810 --> 00:58:20,070 Mae un yn llai na 3, felly mae'n mynd i basio drwy hynny ar gyfer ddolen, 865 00:58:20,070 --> 00:58:23,230 ac yna rydym yn mynd i weld ei hargraffu eto. 866 00:58:23,230 --> 00:58:25,520 Rydym yn mynd i gynyddiad eto i 2, 867 00:58:25,520 --> 00:58:29,860 a 2 yn llai na 3, felly bydd yn llwyddo yn y ar gyfer ddolen, a bydd yn argraffu'r 2. 868 00:58:29,860 --> 00:58:35,100 Yna byddwch yn nodi nad yw 3 yn llai na 3, felly byddwn yn torri allan o'r am ddolen. 869 00:58:35,100 --> 00:58:40,050 Felly nawr rydym wedi dod ohonynt, ac yna rydym yn mynd i fynd i mewn i aFunction. 870 00:58:40,050 --> 00:58:45,010 Iawn. Felly, rhaid i chi nodi bod newidyn hwn ein bod wedi creu, 871 00:58:45,010 --> 00:58:48,270 'i' amrywiol, nid yw'n cwmpasu yn lleol. 872 00:58:48,270 --> 00:58:50,280 Mae hynny'n golygu nad yw'n lleol i'r ddolen, 873 00:58:50,280 --> 00:58:58,060 a bod y newidyn gallwn barhau i gael gafael ar ac yn newid ar ôl hynny, a bydd yn dal i fod yn effeithiol. 874 00:58:58,060 --> 00:59:02,160 Felly, os byddwch yn mynd i mewn i'r swyddogaeth yn awr, byddwch yn gweld ein bod hefyd yn defnyddio'r 'i' amrywiol, 875 00:59:02,160 --> 00:59:05,320 ac rydym yn mynd i gynyddiad 'i' + +. 876 00:59:05,320 --> 00:59:09,410 Byddech yn meddwl, ar y dechrau, yn seiliedig ar C, mai dyna copi o'r 'i' amrywiol. 877 00:59:09,410 --> 00:59:12,830 Mae'n beth hollol wahanol, sydd yn gywir. 878 00:59:12,830 --> 00:59:16,560 Felly, pan fyddwn yn argraffu, rydym yn mynd i 'i' + + argraffu, sydd yn mynd i argraffu bod 4, 879 00:59:16,560 --> 00:59:19,640 ac yna rydym yn mynd i - mae'n ddrwg gennyf. 880 00:59:19,640 --> 00:59:22,030 Yna, rydym yn mynd i gorffen y tu allan swyddogaeth honno, 881 00:59:22,030 --> 00:59:24,820 ac rydym yn mynd i fod yn lle y saeth yn iawn yn awr. 882 00:59:24,820 --> 00:59:29,190 Mae hynny'n golygu bod hynny, fodd bynnag, er bod y swyddogaeth newid y gwerth o 'i', 883 00:59:29,190 --> 00:59:32,620 Nid oedd yn newid y tu allan i'r swyddogaeth, 884 00:59:32,620 --> 00:59:35,060 oherwydd bod y swyddogaeth yn cael gwmpas ar wahân. 885 00:59:35,060 --> 00:59:38,960 Mae hynny'n golygu bod pan fyddwn yn adleisio 'i', nid yw wedi newid yn ystod y cwmpas y swyddogaeth, 886 00:59:38,960 --> 00:59:43,660 ac felly, yna rydym yn mynd i argraffu 3 eto. 887 00:59:43,660 --> 00:59:47,520 Mae gwahanol bethau am gwmpas yn PHP nag yn C. 888 00:59:47,520 --> 00:59:51,130 >> Nawr yn PHP a HTML. 889 00:59:51,130 --> 00:59:53,510 PHP yn cael ei ddefnyddio i wneud tudalennau gwe deinamig. 890 00:59:53,510 --> 00:59:58,660 Mae'n fath o yn gwneud pethau gwahanol. 891 00:59:58,660 --> 01:00:02,090 Mae gennym yn wahanol i HTML. 892 01:00:02,090 --> 01:00:05,230 Gyda HTML, yr ydym bob amser yn unig yn cael yr un peth sefydlog, fel sut Dangosodd Rob, 893 01:00:05,230 --> 01:00:09,370 tra bod PHP, gallwch newid pethau yn seiliedig ar bwy y defnyddiwr yn. 894 01:00:09,370 --> 01:00:11,830 Felly, os oes gen i hyn, yr wyf wedi, "Rydych wedi mewngofnodi fel -" ac yna yr enw, 895 01:00:11,830 --> 01:00:14,420 a gallaf newid yr enw. Felly, ar hyn o bryd yr enw yn Joseph, 896 01:00:14,420 --> 01:00:18,880 ac mae wedi y "am i mi," ond yna gallaf hefyd newid yr enw i gael Tommy. 897 01:00:18,880 --> 01:00:21,700 A byddai hynny'n beth gwahanol. 898 01:00:21,700 --> 01:00:23,840 Felly, yna gallwn hefyd newid pethau gwahanol amdano, 899 01:00:23,840 --> 01:00:27,070 a bydd yn dangos cynnwys wahanol yn seiliedig ar yr enw. 900 01:00:27,070 --> 01:00:31,430 Felly gall PHP math o newid yr hyn sy'n mynd ymlaen yn eich gwefan. 901 01:00:31,430 --> 01:00:33,540 Un peth yma. Still, yn nodi eu bod wedi cynnwys gwahanol, 902 01:00:33,540 --> 01:00:38,870 hyd yn oed er eich bod yn dechnegol yn dal i gael mynediad at yr un dudalen ar y we ar yr wyneb. 903 01:00:38,870 --> 01:00:43,450 Cynhyrchu HTML. Mae yna 2 ffordd wahanol y gallwch wneud hyn. 904 01:00:43,450 --> 01:00:48,980 Felly, byddwn yn mynd drwy hynny ar hyn o bryd. Y ffordd gyntaf yw, mae gennych - yeah, mae'n ddrwg gennyf. 905 01:00:48,980 --> 01:00:51,150 Felly, os oes gen ti dy rheolaidd ar gyfer dolen yn PHP, 906 01:00:51,150 --> 01:00:56,270 ac yna rydych yn adleisio'r yn PHP ac rydych yn adleisio allan HTML. 907 01:00:56,270 --> 01:00:58,720 Gan ddefnyddio'r hyn Rob yn dangos i chi o HTML sgript 908 01:00:58,720 --> 01:01:04,030 ac yna defnyddio'r print PHP i ychydig hargraffu at y dudalen we. 909 01:01:04,030 --> 01:01:09,520 Y ffordd arall yw i wneud hynny fel pe baech yn gwahanu allan PHP a HTML. 910 01:01:09,520 --> 01:01:11,940 Felly, gallwch gael llinell o PHP sy'n dechrau ar y ddolen ar gyfer, 911 01:01:11,940 --> 01:01:16,020 yna gallwch gael y llinell y HTML mewn beth ar wahân, 912 01:01:16,020 --> 01:01:19,700 ac yna yr ydych yn dod i ben y ddolen, unwaith eto, gyda PHP. 913 01:01:19,700 --> 01:01:21,800 Felly, mae'n fath o wahanu allan. 914 01:01:21,800 --> 01:01:24,020 Ar yr ochr chwith, gallwch fod gennych yr holl - 915 01:01:24,020 --> 01:01:26,360 dim ond 1 darn o PHP. 916 01:01:26,360 --> 01:01:28,510 Ar y dde gallwch weld bod gennych linell o PHP, 917 01:01:28,510 --> 01:01:32,540 mae gennych linell o HTML, ac mae gennych linell o PHP eto. 918 01:01:32,540 --> 01:01:36,870 Felly, wahanu allan i'r hyn maen nhw'n ei wneud. 919 01:01:36,870 --> 01:01:39,330 A byddwch yn sylwi bod naill ffordd neu'r llall, ar gyfer naill ai un ohonynt, 920 01:01:39,330 --> 01:01:41,980 maent yn dal i argraffu'r ddelwedd, y llun, y ddelwedd, 921 01:01:41,980 --> 01:01:44,540 fel bod HTML yn dal yn cael ei argraffu yn yr un ffordd. 922 01:01:44,540 --> 01:01:49,870 Ac yna byddwch yn dal i weld y 3 delwedd arddangos i fyny ar eich gwefan. 923 01:01:49,870 --> 01:01:52,820 Felly mae'n 2 ffordd wahanol o wneud yr un peth. 924 01:01:52,820 --> 01:01:55,060 >> Nawr mae gennym ffurflenni a cheisiadau. Fel Rob yn dangos i chi, 925 01:01:55,060 --> 01:01:59,400 mae yn fathau o HTML, a byddwn yn jyst awel drwy hyn. 926 01:01:59,400 --> 01:02:02,040 Mae gennych gweithredu a bod gennych ddull, ac mae eich camau gweithredu 927 01:02:02,040 --> 01:02:04,350 fath o yn dangos i chi ble rydych chi'n mynd i anfon, a dull yw a 928 01:02:04,350 --> 01:02:06,960 mae'n mynd i fod yn GET neu SWYDD. 929 01:02:06,960 --> 01:02:11,220 A chais GET, fel y dywedodd Rob, yn golygu eich bod yn mynd i roi mewn ffurf 930 01:02:11,220 --> 01:02:15,760 a byddwch yn ei weld fel URL, tra bod cais SWYDD ni fyddwch yn gweld mewn URL. 931 01:02:15,760 --> 01:02:17,840 Felly, ychydig o wahaniaeth. 932 01:02:17,840 --> 01:02:19,950 Fodd bynnag, un peth mae hynny'n beth tebyg 933 01:02:19,950 --> 01:02:22,560 yw bod POST ac GET yr un mor ansicr. 934 01:02:22,560 --> 01:02:26,430 Felly, efallai y byddwch yn meddwl bod dim ond oherwydd nad ydych yn gweld yn y URL, 935 01:02:26,430 --> 01:02:28,790 mae hynny'n golygu y swydd yn fwy diogel, 936 01:02:28,790 --> 01:02:34,420 ond gallwch dal i weld yn eich cwcis yn y wybodaeth eich bod yn ei anfon. 937 01:02:34,420 --> 01:02:38,260 Felly, peidiwch â meddwl bod tua un neu'r llall. 938 01:02:38,260 --> 01:02:42,160 Peth arall i'w nodi yw eich bod hefyd yn cael adran newidynnau. 939 01:02:42,160 --> 01:02:45,850 Rydych yn guys defnyddio hyn yn pset 7 i gael eich gwybodaeth adnabod defnyddiwr. 940 01:02:45,850 --> 01:02:48,550 Beth ddigwyddodd oedd y gallwch ddefnyddio hwn array cysylltiadol, 941 01:02:48,550 --> 01:02:53,310 y $ _SESSION, ac yna rydych chi'n gallu cael mynediad at bethau gwahanol 942 01:02:53,310 --> 01:02:57,720 a storio pethau gwahanol ar draws y tudalennau. 943 01:02:57,720 --> 01:03:00,750 >> Peth diwethaf yw bod gennym SQL, Strwythuredig Ymholiad Iaith, 944 01:03:00,750 --> 01:03:04,360 ac mae hyn yn iaith raglennu i reoli cronfeydd data. 945 01:03:04,360 --> 01:03:08,220 Beth, yn union, yn cael eu cronfeydd data? Maent yn gasgliadau o dablau, 946 01:03:08,220 --> 01:03:10,630 a gall pob tabl wedi mathau tebyg o wrthrychau. 947 01:03:10,630 --> 01:03:14,990 Felly cawsom tabl o ddefnyddwyr yn eich pset cyllid. 948 01:03:14,990 --> 01:03:20,610 A pham y maent yn ddefnyddiol? Oherwydd ei fod yn ffordd o gadw gwybodaeth yn barhaol. 949 01:03:20,610 --> 01:03:22,840 Mae'n ffordd o olrhain pethau a rheoli pethau 950 01:03:22,840 --> 01:03:25,890 ac mewn gwirionedd yn gweld ar wahanol dudalennau a chadw trac. 951 01:03:25,890 --> 01:03:29,930 Tra os ydych yn unig yn ei storio ar y un eiliad ar unwaith 952 01:03:29,930 --> 01:03:33,720 ac yna'i ddefnyddio yn ddiweddarach, ni fyddwch yn gallu cael mynediad i unrhyw beth yr ydych bod wedi achub. 953 01:03:33,720 --> 01:03:37,660 Mae gennym 4 prif bethau rydym yn eu defnyddio ar gyfer gorchmynion SQL. 954 01:03:37,660 --> 01:03:40,190 Rydym wedi dewis, mewnosod, dileu, a diweddaru. 955 01:03:40,190 --> 01:03:42,880 Mae'r rhai yn wirioneddol bwysig i chi guys i wybod am eich cwis. 956 01:03:42,880 --> 01:03:45,990 >> Byddwn yn mynd dros gyflym dewiswch ar hyn o bryd. 957 01:03:45,990 --> 01:03:48,540 Yn y bôn, eich bod yn dewis rhesi o gronfa ddata. 958 01:03:48,540 --> 01:03:52,400 Felly, os oes gennych, yma - 959 01:03:52,400 --> 01:03:56,740 gennym y 2 beth gwahanol, ac rydym am i ddewis o'r tabl dosbarthiadau 960 01:03:56,740 --> 01:04:01,480 lle anhygoel - ble yn y golofn anhygoel yw'r gwerth yn 1. 961 01:04:01,480 --> 01:04:04,460 Fel y gallwch weld yma, mae gennym y 2 pethau enw'r dosbarth, 962 01:04:04,460 --> 01:04:08,490 CS50 a Stat110, ac mae gennym y IDs dosbarth a'r slogan. 963 01:04:08,490 --> 01:04:13,150 Felly, rydym am i ddewis yr holl o'r wybodaeth honno. 964 01:04:13,150 --> 01:04:17,480 Yna, gallwch weld yma ei fod yn fath o tynnu sylw yn y golofn honno anhygoel, 965 01:04:17,480 --> 01:04:25,170 lle mae'r holl bethau yw 1, ac yna mae ganddo'r ID dosbarth, enw a slogan y gall ddewis dosbarth. 966 01:04:25,170 --> 01:04:28,100 Sut yn union ydych chi'n gwneud hyn yn y cod? Rhaid i chi ddefnyddio PHP. 967 01:04:28,100 --> 01:04:33,830 Felly dyna sut fath o PHP a SQL yn perthyn i'w gilydd. 968 01:04:33,830 --> 01:04:38,130 Nawr rydym wedi, ein cod ac rydym yn mynd i ddefnyddio ein swyddogaeth ymholiad 969 01:04:38,130 --> 01:04:41,370 fel y gwnaethom yn pset 7, ac rydym yn mynd i redeg yr ymholiad SQL. 970 01:04:41,370 --> 01:04:43,870 Yna, rydym yn mynd i gael - 971 01:04:43,870 --> 01:04:46,280 rydym bob amser wedi i gadarnhau a oes rhes yn triphlyg gyfartal os ffug. 972 01:04:46,280 --> 01:04:49,010 Felly eto, yr ydych am i edrych ar y math a gwerth, 973 01:04:49,010 --> 01:04:53,880 ac yna, os na fydd yn gweithio, yna rydych eisiau ymddiheuro, fel arfer, fel y gwnaethom yn pset 7. 974 01:04:53,880 --> 01:04:55,870 Fel arall, yr ydych am ddolen drwy bopeth gyda rhai 'n hylaw 975 01:04:55,870 --> 01:04:59,410 foreach dolenni ein bod ychydig aeth drosodd. 976 01:04:59,410 --> 01:05:01,280 Rydym yn awr yn bod yn dolennu trwy ac rydym wedi gwneud yn y gorffennol, 977 01:05:01,280 --> 01:05:05,080 gadewch i ni gymryd yn ganiataol bod ein ymholiad basio, erbyn hyn rydym wedi ein dolen foreach. 978 01:05:05,080 --> 01:05:11,050 A'r rhes cyntaf ganddo, felly dyma y rhes, ar y dde yma, mae'n mewn bocs. 979 01:05:11,050 --> 01:05:14,010 Mae'n mynd i argraffu'r holl wybodaeth ei fod yn gotten. 980 01:05:14,010 --> 01:05:18,070 Felly, mae'n mynd i argraffu ar y gwaelod "Eisiau Dysgwch HTML?" 981 01:05:18,070 --> 01:05:23,370 Yna, mae'n mynd i fynd i'r rhes nesaf, oherwydd ei fod yn cwblhau y cyntaf ar gyfer ddolen, 982 01:05:23,370 --> 01:05:26,510 ac felly, yna mae'n mynd i argraffu'r ail linell ohono, 983 01:05:26,510 --> 01:05:32,120 sydd yn mynd i fod yn STAT110, Dod o hyd i holl Moments. 984 01:05:32,120 --> 01:05:34,290 >> Un peth olaf ar SQL yn agored i niwed. 985 01:05:34,290 --> 01:05:37,300 Yr wyf yn adnabod David crybwyll hyn ychydig yn y ddarlith. 986 01:05:37,300 --> 01:05:40,730 Gallwch ddarllen hyn yn ddiweddarach. Mae'n wirioneddol ddoniol. 987 01:05:40,730 --> 01:05:45,320 SQL Chwistrellu yn fath o beth anodd. 988 01:05:45,320 --> 01:05:49,890 Gadewch i ni ddweud eich bod yn unig yn cadw newidynnau hynny dde i mewn i'ch ymholiad, 989 01:05:49,890 --> 01:05:52,290 fel y gallwch weld yn y llinell gyntaf. 990 01:05:52,290 --> 01:05:54,520 Felly, mae'n ymddangos yn iawn, dde? Rydych yn dim ond rhoi yn enw'r defnyddiwr 991 01:05:54,520 --> 01:05:58,820 a chyfrinair er mwyn eich ymholiad SQL, a ydych am i long i ffwrdd ac yn cael beth bynnag sydd yn eich tabl data. 992 01:05:58,820 --> 01:06:01,450 Mae hynny'n ymddangos yn eithaf syml. Felly, yn gadael i ddweud rhywun yn rhoi i mewn, 993 01:06:01,450 --> 01:06:04,910 ar gyfer y cyfrinair, NEU hwn destun iawn yma - 994 01:06:04,910 --> 01:06:06,780 Dylai gwirionedd fod yn y blwch coch. 995 01:06:06,780 --> 01:06:11,920 Felly, gadewch i ni yn dweud eu bod yn rhoi hynny cyfrinair yn - dyna beth maent yn mynd i mewn. 996 01:06:11,920 --> 01:06:16,520 Felly, eu bod yn rhoi NEU "1" = 1. 997 01:06:16,520 --> 01:06:20,880 Fath o gyfrinair wirion i gael. 998 01:06:20,880 --> 01:06:25,070 Nawr, gadewch i ni gymryd ei le i mewn, a byddwch yn sylwi bod yn y SQL query yn awr, 999 01:06:25,070 --> 01:06:29,090 mae'n gwerthuso bob amser yn wir, oherwydd byddwch yn nodi bod 1000 01:06:29,090 --> 01:06:32,240 allwch chi ymholiad SQL ddewis yr holl wybodaeth hon 1001 01:06:32,240 --> 01:06:35,420 neu gallwch jyst wedi 1 = 1. 1002 01:06:35,420 --> 01:06:41,030 Felly, bob amser yn mynd i werthuso i gwir. 1003 01:06:41,030 --> 01:06:46,610 Dyw hynny ddim yn mynd i weithio mewn gwirionedd, gan fod hynny'n golygu y gall y haciwr dorri i mewn i'ch system. 1004 01:06:46,610 --> 01:06:49,300 Yr ateb i hyn yw bod yn rhaid i chi ddefnyddio'r system PDO, 1005 01:06:49,300 --> 01:06:51,360 sy'n golygu bod rhaid i chi ddefnyddio marciau cwestiwn, 1006 01:06:51,360 --> 01:06:53,350 sef yr hyn yr ydych guys a ddefnyddir mewn pset 7, 1007 01:06:53,350 --> 01:06:57,620 ble rydych chi'n mynd i ddefnyddio marc cwestiwn yn lle ble rydych am roi rhywbeth, 1008 01:06:57,620 --> 01:07:01,430 ac yna rydych yn mynd i gael coma, ac yna byddwch yn cael wedyn, 1009 01:07:01,430 --> 01:07:07,610 ar ôl eich llinyn, y gwahanol newidynnau yr ydych am i gymryd lle yn eich marc cwestiwn. 1010 01:07:07,610 --> 01:07:10,330 Felly, byddwch yn nodi yma bod yn awr yr wyf yn cael hyn farciau cwestiwn coch. 1011 01:07:10,330 --> 01:07:15,420 Yna, yr wyf yn rhoi y newidynnau ar ôl fy llinynnau felly rwy'n gwybod i gymryd eu lle yn y drefn honno wedyn. 1012 01:07:15,420 --> 01:07:18,470 Bydd hynny'n sicrhau, os bydd rhywun yn gwneud fel hyn, 1013 01:07:18,470 --> 01:07:24,050 ac mae ganddynt y neu 1 = 1 sefyllfa, a fydd yn gwneud yn siŵr, 1014 01:07:24,050 --> 01:07:30,490 yn y pen-ôl, gwnewch yn siŵr na fydd yn mewn gwirionedd yn torri'r ymholiad SQL. 1015 01:07:30,490 --> 01:07:33,660 Iawn, felly dyna 'n bert lawer iddo, corwynt o PHP a SQL. 1016 01:07:33,660 --> 01:07:41,520 Pob lwc i chi i gyd, ac yn awr i Ore 1017 01:07:41,520 --> 01:07:44,270 >> [Oreoluwatomiwa Babarinsa] pawb Iawn. Amser i fynd dros rai JavaScript 1018 01:07:44,270 --> 01:07:48,840 a rhai pethau eraill yn gyflym iawn, felly nid ydym yn dal i fyny i chi heno. 1019 01:07:48,840 --> 01:07:56,930 JavaScript. Ie. JavaScript yn fath o beth oer, honni. 1020 01:07:56,930 --> 01:07:59,090 Y pethau mae angen i chi wybod am JavaScript, mae'n fath o fel 1021 01:07:59,090 --> 01:08:03,810 yr-ochr cleientiaid diwedd hyn y mae eich app ar y we yn mynd i gael ei wneud. 1022 01:08:03,810 --> 01:08:08,280 Mae rhai pethau yr ydych nid yn unig yn dymuno cymryd gofalu am yr holl amser ar y ochr y gweinydd. 1023 01:08:08,280 --> 01:08:12,880 Mae pob un o'r rhyngweithiadau bach, yn tynnu sylw at un peth, gan wneud rhywbeth yn diflannu. 1024 01:08:12,880 --> 01:08:15,340 Rydych yn wir ddim eisiau cael i siarad â'ch gweinydd drwy'r amser ar gyfer hynny. 1025 01:08:15,340 --> 01:08:18,069 Ac nid yw rhai o hynny hyd yn oed yn bosibl i'w wneud ar y ochr y gweinydd. 1026 01:08:18,069 --> 01:08:21,899 Mae hyn yn pam y mae angen rhywbeth fel JavaScript. 1027 01:08:21,899 --> 01:08:24,359 Pethau cŵl am JavaScript: Mae'n cael ei teipio ddynamig. 1028 01:08:24,359 --> 01:08:27,149 Beth mae hyn yn ei olygu yw nad oes angen eich rhaglen i wybod 1029 01:08:27,149 --> 01:08:30,970 beth, yn union, y newidynnau yn pan fyddwch yn ysgrifennu allan. 1030 01:08:30,970 --> 01:08:34,510 Bydd yn jyst fath o ffigwr allan gan ei fod yn rhedeg. 1031 01:08:34,510 --> 01:08:37,520 Pethau eraill sy'n cŵl am ei: Mae'n LandLine iaith Brace cyrliog, 1032 01:08:37,520 --> 01:08:41,359 sy'n golygu bod y gystrawen yn debyg i C a PHP. 1033 01:08:41,359 --> 01:08:47,050 Nid oes rhaid i chi wneud llawer ailweithio pan fyddwch yn JavaScript dysgu. 1034 01:08:47,050 --> 01:08:49,180 Yma, mae gennym ychydig o JavaScript. 1035 01:08:49,180 --> 01:08:52,560 Peth diddorol yma yw, os ydych yn edrych ar y sefyllfa, 1036 01:08:52,560 --> 01:08:56,330 mae gennym ychydig o JavaScript iawn yno yn y tag pen. 1037 01:08:56,330 --> 01:08:59,479 Beth yw mae yn y bôn yn unig yn cynnwys ffeil JavaScript. 1038 01:08:59,479 --> 01:09:02,260 Mae hwn yn un ffordd y gallwch gynnwys JavaScript yn eich rhaglen. 1039 01:09:02,260 --> 01:09:06,910 Yna yr ail ychydig bach mewn gwirionedd rhai JavaScript unol, 1040 01:09:06,910 --> 01:09:10,790 debyg iawn i arddull unol ag CSS, 1041 01:09:10,790 --> 01:09:16,180 a ydych ond yn ysgrifennu rhai cod yn gyflym iawn yno. 1042 01:09:16,180 --> 01:09:18,120 Mae JavaScript araeau. 1043 01:09:18,120 --> 01:09:20,850 Dim ond ffordd arall o gadw data o gwmpas, yn ddefnyddiol iawn. 1044 01:09:20,850 --> 01:09:25,180 Cystrawen neis iawn ac yn hawdd. 1045 01:09:25,180 --> 01:09:29,870 Rydych yn defnyddio cromfachau sgwâr i gael mynediad at bopeth a cadw popeth gyda'i gilydd. 1046 01:09:29,870 --> 01:09:35,020 Nid oes dim yn rhy gymhleth. 1047 01:09:35,020 --> 01:09:38,630 Y peth cŵl am JavaScript a ieithoedd sgriptio yn gyffredinol 1048 01:09:38,630 --> 01:09:40,920 yw nad oes rhaid i chi boeni am faint arae. 1049 01:09:40,920 --> 01:09:43,880 Gallwch jyst arfer array.length a chadw golwg ohono, 1050 01:09:43,880 --> 01:09:46,960 a gall hefyd yr amrywiaeth dyfu neu leihau gan fod angen i chi. 1051 01:09:46,960 --> 01:09:49,279 Felly nid oes angen i chi hyd yn oed i chi boeni am unrhyw fath o, 1052 01:09:49,279 --> 01:09:57,050 oh na, mae angen i mi i ddyrannu mwy o bethau, neu unrhyw beth fel 'na. 1053 01:09:57,050 --> 01:10:00,090 >> Y peth oera yma yw bod JavaScript rywbeth o'r enw gwrthrychau. 1054 01:10:00,090 --> 01:10:04,800 Mae'n iaith gwrthrych-ganolog, felly beth y mae wedi, yn ei hanfod, 1055 01:10:04,800 --> 01:10:10,100 ffordd i chi grwpio data gyda'i gilydd, braidd yn debyg i strwythur, 1056 01:10:10,100 --> 01:10:17,280 ond gallwch gael mynediad iddo fel strwythur neu mewn cystrawen amrywiaeth cysylltiadol. 1057 01:10:17,280 --> 01:10:22,520 Mae'n eithaf syml a beth allwch chi ei wneud â hyn yn ddata y grŵp at ei gilydd 1058 01:10:22,520 --> 01:10:24,810 os oes gennych criw o ddata sy'n cael ei gysylltiedig. 1059 01:10:24,810 --> 01:10:26,850 Oherwydd ei fod yn yr holl bethau sydd angen i chi ddisgrifio car, 1060 01:10:26,850 --> 01:10:29,050 Nid oes angen i chi gael mewn criw o wahanol leoedd. 1061 01:10:29,050 --> 01:10:35,300 Alli jyst gadw i mewn 1 gwrthrych yn JavaScript. 1062 01:10:35,300 --> 01:10:39,090 Fel y gwyddoch mae'n debyg, bwysleisio'r yw un o dasgau diflas hynny. 1063 01:10:39,090 --> 01:10:43,810 Rydych yn unig yn ei wneud dros ar ôl tro. Mae angen i chi siarad â phob gwrthrych yn y car, 1064 01:10:43,810 --> 01:10:47,340 neu os oes angen i chi fynd drwy bob eitem mewn rhestr neu rywbeth fel 'na. 1065 01:10:47,340 --> 01:10:51,770 Felly JavaScript wedi, yn debyg i PHP, cystrawen foreach. 1066 01:10:51,770 --> 01:10:54,590 Yn yr achos hwn, mae'n ar ei gyfer yn ddolen. 1067 01:10:54,590 --> 01:10:57,300 Ydych eisiau ei ddefnyddio dim ond ar wrthrychau. 1068 01:10:57,300 --> 01:11:01,030 Mae rhai problemau sy'n digwydd os ydych yn defnyddio hyn ar araeau. 1069 01:11:01,030 --> 01:11:03,750 Yn gyffredinol yn un o'r pethau hynny, fodd bynnag, bod yn ddefnyddiol iawn, 1070 01:11:03,750 --> 01:11:06,590 oherwydd eich bod yn dileu llawer o gostau cyffredinol 1071 01:11:06,590 --> 01:11:10,270 oherwydd nad oes rhaid i chi dynnu i fyny popeth yn eich gwrthrych eich pen eich hun. 1072 01:11:10,270 --> 01:11:12,300 Nid oes rhaid i chi gofio holl enwau allweddol. 1073 01:11:12,300 --> 01:11:18,270 Rydych yn unig fath o cael yn ôl mewn cystrawen hwn. 1074 01:11:18,270 --> 01:11:21,500 Yn hyn, gyda i, 'ch jyst eisiau cofio 1075 01:11:21,500 --> 01:11:27,180 eich bod yn mynd yn ôl yr holl allweddi, mewn ffordd debyg iawn i hash bwrdd. 1076 01:11:27,180 --> 01:11:30,880 Os ydych yn cofio o hynny, pan fyddai eich rhoi mewn llinyn gallech gael rhywbeth allan 1077 01:11:30,880 --> 01:11:33,840 fyddai'n cael gwerth sy'n gysylltiedig ag ef. 1078 01:11:33,840 --> 01:11:36,360 Beth allwch chi ei wneud gyda hyn yw y gallwch ddweud, yn iawn, 1079 01:11:36,360 --> 01:11:42,120 Rwy'n rhoi mewn car, ac yr wyf yn galw ei fod yn Ferrari. 1080 01:11:42,120 --> 01:11:45,290 Felly, gallwch chi roi yn y llinyn Ferrari eto yn nes ymlaen, a gallwch gael hynny. 1081 01:11:45,290 --> 01:11:50,000 A gallwch wneud hynny mewn cylch, gyda'r cyfer yn ddolen. 1082 01:11:50,000 --> 01:11:53,320 Felly, dim ond mwy am wrthrychau. Y peth allweddol o hyn mae angen i chi gofio 1083 01:11:53,320 --> 01:12:00,340 yw y gallwch ddefnyddio'r strwythur gwrthrych fel cystrawen pryd bynnag y dymunwch gyda'r rhain, 1084 01:12:00,340 --> 01:12:04,590 ac eithrio os beth yw eich mynd i ddefnyddio fel llinyn nid yw'n enw newidyn dilys. 1085 01:12:04,590 --> 01:12:07,650 Felly, os ydych yn edrych ar hynny yno, mae gennym allweddol gyda bylchau. 1086 01:12:07,650 --> 01:12:12,500 Wel, os ydych yn rhoi object.key, gofod, gyda, gofod, mannau, 1087 01:12:12,500 --> 01:12:15,320 na fyddai dim ond yn gwneud synnwyr syntactically. 1088 01:12:15,320 --> 01:12:22,730 Felly, dim ond yn gallu wneud hynny â'r math hwn o gystrawen braced. 1089 01:12:22,730 --> 01:12:26,520 >> Hefyd, JavaScript yn iawn gwmpas-ddoeth i PHP. 1090 01:12:26,520 --> 01:12:29,050 Mae gennych 2 ffordd o fynd i'r afael gwmpas. 1091 01:12:29,050 --> 01:12:31,960 Ni allwch gael y var o flaen newidyn, 1092 01:12:31,960 --> 01:12:34,060 ac mai dim ond yn golygu hyn yn fyd-eang. 1093 01:12:34,060 --> 01:12:37,050 Gallwch ei weld o unrhyw le. Hyd yn oed pe baech yn rhoi hyn mewn os datganiad, 1094 01:12:37,050 --> 01:12:42,430 yn unrhyw le arall yn eich cod ar ôl y pwynt hwnnw gallech weld bod amrywiol. 1095 01:12:42,430 --> 01:12:46,730 Beth arall, fodd bynnag, yw, yr var, mae'n gyfyngedig i ba bynnag swyddogaeth yr ydych ynddi 1096 01:12:46,730 --> 01:12:48,870 Os nad ydych chi mewn swyddogaeth, yn dda, mae'n fyd-eang. 1097 01:12:48,870 --> 01:12:53,900 Ond os ydych mewn swyddogaeth dim ond yn weladwy o fewn y swyddogaeth honno. 1098 01:12:53,900 --> 01:12:56,420 Nid oes gennyf enghraifft, ond, ie. Mae'n un o'r pethau hynny lle 1099 01:12:56,420 --> 01:12:59,900 gallwch reoli pa newidynnau ydych am fod yn fyd-eang, 1100 01:12:59,900 --> 01:13:03,810 pa newidynnau ydych am fod yn lleol, ond mae angen i chi fod yn ofalus am hyn, 1101 01:13:03,810 --> 01:13:06,890 oherwydd nad oes gennych y math o reolaeth graen mân i chi ei wneud yn C, 1102 01:13:06,890 --> 01:13:15,820 lle os oes rhywbeth yn cael ei datgan mewn i ddolen, mae'n mynd i aros yn un ar gyfer ddolen. 1103 01:13:15,820 --> 01:13:18,790 Y peth yr ydym mewn gwirionedd yn poeni am ddefnyddio JavaScript amdano yn trin tudalennau gwe, dde? 1104 01:13:18,790 --> 01:13:21,800 Yr wyf yn golygu, dyna pam ein bod yn gwneud hyn. 1105 01:13:21,800 --> 01:13:23,840 >> Er mwyn gwneud hynny, rydym yn defnyddio rhywbeth a elwir yn DOM. 1106 01:13:23,840 --> 01:13:25,850 Mae'r Model Gwrthrych Dogfennau. 1107 01:13:25,850 --> 01:13:29,430 Yn y bôn, yr hyn y mae'n ei wneud yw y mae'n ei gymryd eich holl HTML 1108 01:13:29,430 --> 01:13:34,110 a modelau allan i griw o wrthrychau sy'n cael eu nythu o fewn gilydd. 1109 01:13:34,110 --> 01:13:37,080 Byddwch yn dechrau allan gyda rhywbeth fel hyn. 1110 01:13:37,080 --> 01:13:44,770 Mae gennych, ar y dde i mi, criw o cod allan yna sy'n fath o - 1111 01:13:44,770 --> 01:13:46,640 Byddech yn meddwl y byddwn fod yn anodd iawn i drin, 1112 01:13:46,640 --> 01:13:48,700 oherwydd byddech yn dosrannu drwy criw o destun 1113 01:13:48,700 --> 01:13:52,080 a gorfod ddarn ar wahân pethau. A beth os na chafodd ei fformatio yn gywir? 1114 01:13:52,080 --> 01:13:54,880 Byddai pethau drwg yn digwydd. 1115 01:13:54,880 --> 01:13:58,140 Felly JavaScript yn gofalu am hyn i chi, a byddwch yn cael strwythur data 'n glws, 1116 01:13:58,140 --> 01:14:01,390 fel yr un ar fy chwith, lle byddwch yn unig gael dogfen, 1117 01:14:01,390 --> 01:14:03,530 ac y tu mewn eich bod yn cael rhywbeth o'r enw HTML, 1118 01:14:03,530 --> 01:14:05,600 ac y tu mewn eich bod yn cael pen a chorff, 1119 01:14:05,600 --> 01:14:08,420 ac y tu mewn i'r pen gennych deitl, etcetera, etcetera, etcetera. 1120 01:14:08,420 --> 01:14:11,810 Mae hyn yn symleiddio trin dudalen we fel ei fod yn gyfiawn, 1121 01:14:11,810 --> 01:14:14,190 oh, Fi jyst eisiau siarad â gwrthrych hwn. 1122 01:14:14,190 --> 01:14:21,340 Math o ffordd debyg iawn y byddech yn siarad â gwrthrych arall i chi ei wneud eich hun. 1123 01:14:21,340 --> 01:14:25,980 Fel y dywedais, yr holl DOM yn y gwrthrych ddogfen. 1124 01:14:25,980 --> 01:14:29,290 Naill ai dim ond un lle ac yna gallwch fynd ynddo i ddarganfod pethau, 1125 01:14:29,290 --> 01:14:33,880 a gallwch wneud hynny - mae hyn yn yr hen ddull o wneud hynny, i fyny yno, 1126 01:14:33,880 --> 01:14:38,130 lle rydych chi'n gwneud document.getElementById, ac yna yr enw, 1127 01:14:38,130 --> 01:14:42,420 ac fel y mae'n debyg y gallwch ddweud, mae hyn yn mynd yn anhylaw iawn ar ôl ychydig. 1128 01:14:42,420 --> 01:14:44,480 Felly, mae'n debyg nad ydych am wneud hynny. Dyna pam yr ydym wedi 1129 01:14:44,480 --> 01:14:48,760 y peth nesaf rydym yn mynd i siarad am ar ôl hyn. 1130 01:14:48,760 --> 01:14:52,510 Y peth allweddol yma yw bod, yn iawn, mae gennych yr holl elfennau hyn, dde? 1131 01:14:52,510 --> 01:14:56,400 Felly efallai y gallaf newid y lliw o rywbeth pan fydd y llwythi dudalen. 1132 01:14:56,400 --> 01:14:58,380 Felly beth? Beth os bydd fy defnyddiwr yn clicio rhywbeth? 1133 01:14:58,380 --> 01:15:00,540 Rwyf am iddo wneud rhywbeth diddorol pan fyddant yn clicio rhywbeth. 1134 01:15:00,540 --> 01:15:02,600 Dyna pam yr ydym wedi digwyddiadau. 1135 01:15:02,600 --> 01:15:05,330 Gallwch, yn y bôn, dod o hyd i unrhyw elfen yn eich DOM, 1136 01:15:05,330 --> 01:15:08,560 ac wedyn yn dweud, hey. Pan fydd hyn yn llwythi neu rywun yn clicio arno, 1137 01:15:08,560 --> 01:15:11,410 neu pan fyddant llygoden drosto, gwneud rhywbeth ag ef. 1138 01:15:11,410 --> 01:15:15,330 A beth sydd gennych yw, mae gennych swyddogaethau sy'n ymdrin â hyn ar eich rhan. 1139 01:15:15,330 --> 01:15:17,980 Mae'r swyddogaethau hyn yn drinwyr digwyddiad. 1140 01:15:17,980 --> 01:15:20,440 Pa they're - dim ond ffordd ffansi o ddweud, 1141 01:15:20,440 --> 01:15:23,500 swyddogaeth hon dim ond yn cael ei gyflawni pan fydd y digwyddiad hwn yn digwydd. 1142 01:15:23,500 --> 01:15:28,070 Felly mae'n ymdrin â'r digwyddiad sy'n digwydd. 1143 01:15:28,070 --> 01:15:30,810 Mae hyn yn sut y byddech yn gosod allan trafodwr digwyddiad. 1144 01:15:30,810 --> 01:15:34,750 Mae gennyf rai botwm, a phan fyddwch yn clicio, mae'n ffrwydro. 1145 01:15:34,750 --> 01:15:40,560 Felly peidiwch â cliciwch y botwm. 1146 01:15:40,560 --> 01:15:42,910 Mae hyn yn un ffordd o fynd ati, dde? 1147 01:15:42,910 --> 01:15:46,430 Mae gennych tag botwm, ac ar cliciwch gennych llinyn sy'n dweud, 1148 01:15:46,430 --> 01:15:50,460 oh, gan y ffordd, yr wyf yn gwneud hyn beth ffrwydro i mi. 1149 01:15:50,460 --> 01:15:53,990 Fel arall, mae'n union fel botwm rheolaidd yr ydych newydd eu gwneud. 1150 01:15:53,990 --> 01:15:56,550 Gallwch hefyd wneud hyn mewn ffordd arall, 1151 01:15:56,550 --> 01:16:02,770 drwy gydio yn y elfen DOM, ond byddwn yn eithrio bod ar ôl i ni siarad am jQuery. 1152 01:16:02,770 --> 01:16:07,580 >> JQuery: Mae'n llyfrgell sy'n traws-porwr. 1153 01:16:07,580 --> 01:16:09,580 Gallwch ei ddefnyddio yn 'n bert lawer unrhyw beth. 1154 01:16:09,580 --> 01:16:12,090 Ac 'i jyst yn rhoi llawer o offer i weithio gyda chi. 1155 01:16:12,090 --> 01:16:15,850 Oherwydd JavaScript, tra pwerus, nid oes gan yr holl offer ei angen arnoch 1156 01:16:15,850 --> 01:16:20,550 allan o'r bocs i wir fynd i'r afael â app ar y we efallai y byddwch am ei wneud. 1157 01:16:20,550 --> 01:16:24,650 Felly mae'n symleiddio llawer o bethau, yn rhoi llawer o swyddogaethau yr ydych yn 1158 01:16:24,650 --> 01:16:28,760 allan o'r bocs y byddai'n rhaid i chi fel arfer i ysgrifennu eich hun, drosodd a drosodd a throsodd. 1159 01:16:28,760 --> 01:16:31,600 Ac yn union yn gwneud pethau syml iawn. 1160 01:16:31,600 --> 01:16:35,780 Mae gennych hefyd detholwyr, sy'n gadael i chi gymryd yr holl elfennau hynny 1161 01:16:35,780 --> 01:16:42,800 gan eich DOM yn llawer mwy syml, yn hytrach na gorfod defnyddio'r rhain alwadau swyddogaeth hir iawn. 1162 01:16:42,800 --> 01:16:46,630 Mwy am dewiswyr hyn. Gennych, i fyny yno yr ydych wedi, gadewch i ni ddweud 1163 01:16:46,630 --> 01:16:49,800 Rwyf am i gael elfen gyda'r ID "graig." 1164 01:16:49,800 --> 01:16:56,450 Wel, yn jQuery, dim ond $ ac yna linyn sydd â bunt, ac yna "graig." 1165 01:16:56,450 --> 01:17:01,960 Mae'n syml iawn ac yn llawer cyflymach na'r ffordd draddodiadol JavaScript o fynd i'r afael â'r broblem hon. 1166 01:17:01,960 --> 01:17:06,120 A bod gennych bethau tebyg ar gyfer dosbarthiadau a mathau elfen. 1167 01:17:06,120 --> 01:17:08,140 jQuery yw - un o nodweddion oer yw y gallwch chi math o cywasgu 1168 01:17:08,140 --> 01:17:14,350 i lawr eich ymholiadau ar eich DOM iawn, yn gyflym iawn. 1169 01:17:14,350 --> 01:17:18,980 Nawr rydym yn ôl i drafod y digwyddiad, a dyma sut y byddech chi'n trin un digwyddiad yn jQuery. 1170 01:17:18,980 --> 01:17:23,090 Felly, beth ydym yn mynd yma yw ein bod yn ei ddweud, yn iawn. Mae gen i tag sgript, dde? 1171 01:17:23,090 --> 01:17:25,400 Felly, yr wyf wedi inline hwn JavaScript. 1172 01:17:25,400 --> 01:17:27,750 Yr hyn yr ydym yn mynd i wneud yw ein bod yn mynd i ddweud, yn iawn. 1173 01:17:27,750 --> 01:17:30,860 Pan fydd y ddogfen yn barod, sy'n golygu bod y ddogfen wedi cael ei lwytho, 1174 01:17:30,860 --> 01:17:34,660 yr ydym yn mynd i fynd i mewn i swyddogaeth honno, ac rydym yn mynd i ddweud, yn iawn, 1175 01:17:34,660 --> 01:17:37,060 mewn gwirionedd yn y swyddogaeth hon ei gwneud rhywbeth arall. 1176 01:17:37,060 --> 01:17:42,320 Yn y bôn mae'n ei ddweud, yn iawn, mynd i mi yr elfen gyda'r ID "myid." 1177 01:17:42,320 --> 01:17:47,960 Ac yna rhoi hyn yn trin swyddogaeth sy'n executes pan fyddwch yn clicio arno. 1178 01:17:47,960 --> 01:17:49,820 Yn y bôn beth mae hyn yn ei wneud, mae'n dweud, iawn. 1179 01:17:49,820 --> 01:17:52,630 Mae'r dudalen ei lwytho, felly dw i'n mynd i mewn, dod o hyd i elfen hon, 1180 01:17:52,630 --> 01:17:56,420 rhowch y triniwr y digwyddiad, ac yn y bôn yn sefydlu eich tudalen i chi. 1181 01:17:56,420 --> 01:18:00,520 A dyma sut yr ydych am i feddwl am drin digwyddiad. 1182 01:18:00,520 --> 01:18:06,310 'Ch jyst angen i feddwl am, yn iawn, pan fydd rhywbeth yn digwydd, beth ddylwn i ei weld yn digwydd? 1183 01:18:06,310 --> 01:18:10,520 Nid ydych am i feddwl am, iawn, mae angen i mi wneud yn siwr sgyrsiau peth hwn i y peth hyn, 1184 01:18:10,520 --> 01:18:14,660 y peth hyn blah blah blah, oherwydd eich bod dim ond eisiau siarad peth o ran digwyddiadau. 1185 01:18:14,660 --> 01:18:17,650 Pan fydd hyn yn digwydd, bydd hyn yn digwydd. Pan fydd hyn yn digwydd, mae hynny'n digwydd. 1186 01:18:17,650 --> 01:18:20,240 Ac os yw pethau'n sbarduno pethau eraill, mae hynny'n wych. 1187 01:18:20,240 --> 01:18:22,150 Ond nad ydych am i geisio gwneud cod gymhleth 1188 01:18:22,150 --> 01:18:24,130 lle rydych chi'n sbarduno pethau lluosog ar yr un pryd, 1189 01:18:24,130 --> 01:18:28,860 oherwydd eich bod yn jyst yn mynd i roi cur pen eich hun. 1190 01:18:28,860 --> 01:18:32,340 >> Pob hawl. Nawr gallwn gael ein tudalen i ymdrin â digwyddiadau, 1191 01:18:32,340 --> 01:18:35,640 ond gadewch i ni yn dweud fy defnyddiwr yn clicio botwm. 1192 01:18:35,640 --> 01:18:38,040 Beth os ydw i eisiau anfon y cais yn ôl i'r gweinydd, 1193 01:18:38,040 --> 01:18:41,100 ond nid wyf am i ail-lwytho y dudalen, gan fod cael i ail-lwytho tudalen newydd 1194 01:18:41,100 --> 01:18:44,390 bob tro yn cael fath o ddiflas, a pham y mae angen i mi 1195 01:18:44,390 --> 01:18:47,430 i dynnu i lawr y pennawd eto, i mewn na'r troedyn unwaith eto, 1196 01:18:47,430 --> 01:18:49,670 a holl elfennau y dudalen eto 1197 01:18:49,670 --> 01:18:53,180 dim ond er mwyn adfywio'r cyfarchiad na'r amser? 1198 01:18:53,180 --> 01:18:55,290 Felly dyna pam ein bod wedi rhywbeth fel Ajax. 1199 01:18:55,290 --> 01:18:59,150 Beth allwn ni ei wneud yma gyda Ajax yn gallwn ddweud, yn iawn, 1200 01:18:59,150 --> 01:19:01,290 Yr wyf am anfon rhywfaint o ddata at 'r gweinyddwr, 1201 01:19:01,290 --> 01:19:04,010 ac yr wyf am i gael ymateb yn ôl fel y gallaf ddiweddaru fy nhudalen, 1202 01:19:04,010 --> 01:19:12,120 neu efallai dim ond gwneud rhywfaint o gyfrifiad algorithmig nad yw hynny o reidrwydd yn dangos unrhyw beth i'r defnyddiwr. 1203 01:19:12,120 --> 01:19:15,500 Beth sydd angen i chi wneud hyn? Wel, mae angen URL mae angen i chi siarad â nhw. 1204 01:19:15,500 --> 01:19:18,650 Ni all eich gweinydd yn unig hudol gwrando i mewn o unman. 1205 01:19:18,650 --> 01:19:21,960 Mae angen i chi gael lle penodol yr ydych yn anfon data hwn i. 1206 01:19:21,960 --> 01:19:26,240 Ac rydych hefyd angen rhywfaint o ddata i anfon, neu efallai ei fod yn ymholiad dataless. 1207 01:19:26,240 --> 01:19:31,380 'Ch jyst angen i ping yn ôl i'r gweinydd a dweud, hey, rwy'n yn fyw, neu rywbeth fel' na. 1208 01:19:31,380 --> 01:19:35,150 Ac yna yr ydych am swyddogaeth sydd yn y bôn yn ymdrin â llwyddiant. 1209 01:19:35,150 --> 01:19:38,250 Lets 'ddeud i chi gael rhywfaint o wybodaeth yn ôl gan eich gweinydd, 1210 01:19:38,250 --> 01:19:42,960 a ydych am newid teitl y defnyddiwr ar eu tudalen. 1211 01:19:42,960 --> 01:19:44,930 Felly, byddech yn cael y wybodaeth yn ôl, 1212 01:19:44,930 --> 01:19:48,860 ac a fyddech yn gwthio hynny i'r sgrin. 1213 01:19:48,860 --> 01:19:51,170 Beth fydd yn digwydd yw, pan fydd y dudalen yn barod, 1214 01:19:51,170 --> 01:19:56,500 chi'n creu ar swyddogaeth cliciwch ar gyfer y botwm yma a elwir yn cyfarchwr. 1215 01:19:56,500 --> 01:19:58,810 Beth mae hyn wedyn yn ei wneud yw, pan fydd y botwm yn gwthio, 1216 01:19:58,810 --> 01:20:03,700 chi siarad â greetings.php, byddwch yn gwneud cais POST, 1217 01:20:03,700 --> 01:20:07,290 ac yr ydych yn dweud, hey, yn cael rhywbeth oddi wrth eich tudalen mi. 1218 01:20:07,290 --> 01:20:09,890 Nid oes gwir angen i ni ddisgrifio hynny, ond greetings.php, 1219 01:20:09,890 --> 01:20:12,480 gadewch i ni ddweud, yn rhoi yn ôl "helo byd." 1220 01:20:12,480 --> 01:20:15,650 Felly, rydym yn mynd yn ôl y "helo byd," ac ar lwyddiant hyn, 1221 01:20:15,650 --> 01:20:20,730 gan dybio dim byd yn mynd o'i le, yna rydym yn unig yn mynd i'r lle hwn targed 1222 01:20:20,730 --> 01:20:25,720 ein bod yn benodol ac rydym yn unig yn cadw yr ymateb mewn 'na. 1223 01:20:25,720 --> 01:20:31,560 Ac mae hyn yn ffordd syml iawn o sefydlu ymholiad Ajax. 1224 01:20:31,560 --> 01:20:34,340 >> Yn gyflym iawn, Rob fath o crybwyll hyn eisoes, 1225 01:20:34,340 --> 01:20:37,170 gall pethau fynd o chwith, gall pethau drwg yn digwydd, 1226 01:20:37,170 --> 01:20:42,660 felly rydych am i chi eich hun yn gyfarwydd â chodau ymateb HTTP hyn. 1227 01:20:42,660 --> 01:20:46,030 Beth yw'r rhain yn unig, fel, 200, aeth popeth yn iawn. 1228 01:20:46,030 --> 01:20:48,670 Rhywbeth arall, digwyddodd pethau drwg. 1229 01:20:48,670 --> 01:20:50,790 Mae'n gyffredinol, y peth rydych eisiau cofio. 1230 01:20:50,790 --> 01:20:53,440 Ond mae'n braf gwybod pob un o'r rhain. 1231 01:20:53,440 --> 01:20:55,970 Ac yn olaf, ar ôl i ni wedi mynd drwy hynny i gyd, 1232 01:20:55,970 --> 01:20:58,680 mae angen i ni siarad yn gyflym iawn am ddylunio, 1233 01:20:58,680 --> 01:21:00,620 ac yna gallwn adael i chi i gyd yn gadael. 1234 01:21:00,620 --> 01:21:03,410 Dylunio. Pethau rydych am ei gofio. 1235 01:21:03,410 --> 01:21:06,950 Gofynnwch i chi'ch hun y cwestiynau hyn: Pwy fydd yn defnyddio'r hyn? 1236 01:21:06,950 --> 01:21:09,580 Beth fyddant yn ei ddefnyddio ar gyfer? Beth mae fy defnyddwyr yn poeni am? 1237 01:21:09,580 --> 01:21:11,750 Yr hyn nad ydynt yn poeni am? 1238 01:21:11,750 --> 01:21:14,500 Rydych nid yn unig yn dymuno gwneud app a gadael 'i jyst yn tyfu 1239 01:21:14,500 --> 01:21:18,270 ac yn dod yn cawr hwn, yn cymryd llawer o pob peth na allwch chi hyd yn oed yn gorffen. 1240 01:21:18,270 --> 01:21:23,900 Ydych am gael nodau a chynlluniau a phethau ar wahân ydych am fynd i'r afael. 1241 01:21:23,900 --> 01:21:29,000 Ei gwneud yn ddiymdrech. Mae hyn i gyd yn dweud, yn y bôn, 1242 01:21:29,000 --> 01:21:34,950 yn ei gwneud yn hawdd i'r defnyddiwr ei defnyddio; peidiwch â gwneud yn blob mawr o destun fel y sleid hon yw, mewn gwirionedd. 1243 01:21:34,950 --> 01:21:38,020 Rydych yn unig am iddo fod yn rhywbeth lle mae'n hawdd iawn i rywun fynd i mewn 1244 01:21:38,020 --> 01:21:40,800 a gwneud yr hyn y maent am ei wneud. 1245 01:21:40,800 --> 01:21:42,920 Nid ydych am iddynt gael i lywio 5 tudalen 1246 01:21:42,920 --> 01:21:45,460 i gyrraedd eich prif swyddogaeth eich safle. 1247 01:21:45,460 --> 01:21:49,290 Os Google Roedd 5 tudalen cyn i chi hyd yn oed yn chwilio rhywbeth, 1248 01:21:49,290 --> 01:21:53,080 fyddai unrhyw un yn ei ddefnyddio. 1249 01:21:53,080 --> 01:21:55,890 Ac yn olaf, prototeip papur, grŵp ffocws. 1250 01:21:55,890 --> 01:21:59,220 Wedi dylunio da ac arferion profi. 1251 01:21:59,220 --> 01:22:00,730 Dim ond oherwydd eich bod yn credu ei fod yn gweithio i chi, 1252 01:22:00,730 --> 01:22:04,860 Nid yw hynny'n golygu unrhyw un arall yn meddwl ei fod yn gweithio. 1253 01:22:04,860 --> 01:22:14,490 Ond ie, dyna ni. 1254 01:22:14,490 --> 01:22:17,490 [CS50.TV]