1 00:00:00,000 --> 00:00:00,940 2 00:00:00,940 --> 00:00:05,440 >> [MUSIC Playing] 3 00:00:05,440 --> 00:00:11,577 4 00:00:11,577 --> 00:00:12,660 DAVID J. Malan: Në rregull. 5 00:00:12,660 --> 00:00:15,590 Kjo është CS50, dhe kjo është fillimi i javës dy. 6 00:00:15,590 --> 00:00:19,120 Pra, le të fillojë sot me një bug. 7 00:00:19,120 --> 00:00:20,974 Një bug, sigurisht, është një gabim në një program, 8 00:00:20,974 --> 00:00:22,890 dhe ju do të merrni shumë njohur me këtë koncept 9 00:00:22,890 --> 00:00:26,050 në qoftë se ju kurrë nuk kam programuar para. pset0 dhe tani pset1. 10 00:00:26,050 --> 00:00:29,280 Por le të konsiderojmë diçka një thjeshtë pak në fillim. 11 00:00:29,280 --> 00:00:32,189 Ky program këtu se unë hodhi së bashku më parë, 12 00:00:32,189 --> 00:00:37,280 dhe unë pretendojnë se kjo duhet të shtypura 10 yjet në ekran duke përdorur printf, 13 00:00:37,280 --> 00:00:41,020 por kjo me sa duket buggy në një farë mënyre. 14 00:00:41,020 --> 00:00:45,370 >> Duke pasur parasysh se specifikimi se ajo duhet të shtypura 10 yje, 15 00:00:45,370 --> 00:00:50,230 por kjo nuk ka me sa duket, ajo që do të thonë është bug? 16 00:00:50,230 --> 00:00:52,004 Po? 17 00:00:52,004 --> 00:00:54,420 Pra, kjo është një off nga një gabim, dhe çfarë do të thotë me këtë? 18 00:00:54,420 --> 00:01:00,991 19 00:01:00,991 --> 00:01:01,490 OK. 20 00:01:01,490 --> 00:01:09,820 21 00:01:09,820 --> 00:01:10,410 Excellent. 22 00:01:10,410 --> 00:01:13,930 Pra, ne kemi përcaktuar një fillojnë vlerën zero për i, 23 00:01:13,930 --> 00:01:18,399 dhe ne kemi përcaktuar një vlerë n prej 10, por ne kemi përdorur më pak se ose e barabartë me. 24 00:01:18,399 --> 00:01:21,190 Dhe arsyeja që kjo është dy karaktere dhe jo vetëm një simbol, 25 00:01:21,190 --> 00:01:22,630 si në një libër të matematikës, është se ju nuk keni 26 00:01:22,630 --> 00:01:24,880 një mënyrë për të shprehur një ekuivalente karakter. 27 00:01:24,880 --> 00:01:28,450 >> Kështu që do të thotë më pak se, por në qoftë se ju filloni duke numëruar në zero, 28 00:01:28,450 --> 00:01:31,690 por ju numërimin gjithë rrugës lart përmes dhe barabarte me 10, 29 00:01:31,690 --> 00:01:34,170 ju jeni sigurisht do të numëruar 11 gjërat në total. 30 00:01:34,170 --> 00:01:35,900 Dhe kështu që ju jeni do të shtypura 11 yjet. 31 00:01:35,900 --> 00:01:37,990 Pra, çfarë mund të jetë një fix për këtë? 32 00:01:37,990 --> 00:01:39,970 Po? 33 00:01:39,970 --> 00:01:43,980 >> Pra, vetëm të rregullojë më pak se ose e barabartë me jetë vetëm më pak se, 34 00:01:43,980 --> 00:01:46,250 dhe nuk ka, unë pretendojnë, ndoshta një tjetër zgjidhje, too. 35 00:01:46,250 --> 00:01:47,210 Çfarë mund të tjetër që ju bëni? 36 00:01:47,210 --> 00:01:48,590 Po? 37 00:01:48,590 --> 00:01:53,660 >> Pra, fillojë barazuar atë me 1, dhe largohet me pak se ose e barabartë me. 38 00:01:53,660 --> 00:01:56,187 Dhe sinqerisht unë do të pretendojnë që, për një tipik njeriut, 39 00:01:56,187 --> 00:01:57,770 kjo është ndoshta më e drejtpërdrejtë. 40 00:01:57,770 --> 00:02:00,280 Të fillojë numërimi në 1 dhe numëruar deri me 10. 41 00:02:00,280 --> 00:02:01,690 Në thelb të bërë atë që ju thotë. 42 00:02:01,690 --> 00:02:04,010 >> Por realiteti është në programimit, siç e kemi parë, 43 00:02:04,010 --> 00:02:07,598 Shkencëtarët kompjuterike dhe programuesit përgjithësi do të fillojë numërimi në zero. 44 00:02:07,598 --> 00:02:09,389 Dhe kështu që është në rregull herë ju të mësohen me të. 45 00:02:09,389 --> 00:02:12,640 Gjendja juaj do të në përgjithësi të jetë diçka si më pak se. 46 00:02:12,640 --> 00:02:14,910 Pra, thjesht një logjike gabim që ne mund tani 47 00:02:14,910 --> 00:02:17,990 fix dhe në fund të fundit recompile këtë dhe të marrë vetëm 10. 48 00:02:17,990 --> 00:02:19,610 >> E pra si në lidhje me këtë bug këtu? 49 00:02:19,610 --> 00:02:24,200 Këtu, përsëri, unë pretendojnë se kam një qëllim i shtypjes 10 stars-- 50 00:02:24,200 --> 00:02:28,140 një për rresht këtë kohë, por kjo nuk ka. 51 00:02:28,140 --> 00:02:30,940 Para se të propozojë çfarë fix është, ajo që e bën këtë 52 00:02:30,940 --> 00:02:34,640 shtypura me sy nëse unë do të hartojë dhe të drejtuar këtë program mendoni ju? 53 00:02:34,640 --> 00:02:35,140 Po? 54 00:02:35,140 --> 00:02:38,360 55 00:02:38,360 --> 00:02:38,860 >> Star. 56 00:02:38,860 --> 00:02:41,690 Pra, të gjitha yjet në njëjtën linjë është ajo që kam dëgjuar, 57 00:02:41,690 --> 00:02:43,391 dhe pastaj karakteri i ri linjë. 58 00:02:43,391 --> 00:02:44,140 Pra, le të përpiqemi që. 59 00:02:44,140 --> 00:02:48,710 Pra, ti buggy-1, të hyjë, dhe unë shoh komandën tingëllimë 60 00:02:48,710 --> 00:02:50,090 se kemi biseduar për herë të fundit. 61 00:02:50,090 --> 00:02:55,180 ./buggy-1, dhe në të vërtetë unë shoh të gjithë 10 yjet në të njëjtën linjë, edhe pse unë pretendojnë 62 00:02:55,180 --> 00:02:58,690 në specifikimet e mi vetëm një koment në majë Kodi që kam për qëllim për të bërë një për 63 00:02:58,690 --> 00:02:59,230 linjë. 64 00:02:59,230 --> 00:03:00,580 Por kjo duket e drejtë. 65 00:03:00,580 --> 00:03:04,620 >> Tani linjë 15 duket sikur jam shtypjen e një yll, dhe pastaj të linjës 16 66 00:03:04,620 --> 00:03:06,620 kjo duket si unë jam shtypjen një karakter të ri linjë, 67 00:03:06,620 --> 00:03:09,560 dhe ata janë të dy prerë në mënyrë Unë jam brenda lak qartë. 68 00:03:09,560 --> 00:03:13,610 Pra, nuk duhet të jetë bërë yll, i ri line, yll, linjë e re, yll, linjë e re? 69 00:03:13,610 --> 00:03:14,110 Po? 70 00:03:14,110 --> 00:03:18,430 71 00:03:18,430 --> 00:03:21,240 >> Po, ndryshe nga një gjuhë si Python, në qoftë se ju jeni të njohur, 72 00:03:21,240 --> 00:03:23,540 gjurmë nuk rëndësi në kompjuter. 73 00:03:23,540 --> 00:03:25,280 Është vetëm çështje për të njeriut. 74 00:03:25,280 --> 00:03:29,860 Kështu linjat ndërsa këtu e kam shpikur 15 dhe 16-- që duket e bukur, 75 00:03:29,860 --> 00:03:31,330 por kompjuteri nuk ka kujdes. 76 00:03:31,330 --> 00:03:34,640 Kompjuter kujdeset për në të vërtetë duke pasur formatimin e teksteve kaçurrel 77 00:03:34,640 --> 00:03:36,310 rreth këtyre rreshta të kodit. 78 00:03:36,310 --> 00:03:39,520 >> Kështu që kjo është clear-- ashtu si në Scratch-- se ato dy rreshta të kodit 79 00:03:39,520 --> 00:03:40,450 duhet të ekzekutohet. 80 00:03:40,450 --> 00:03:44,390 Si një nga ato puzzle verdhë Scratch copa përsëri dhe përsëri dhe përsëri. 81 00:03:44,390 --> 00:03:50,920 >> Deri tani, nëse unë të ri-drejtuar këtë program-- ./buggy-2-- Hm. 82 00:03:50,920 --> 00:03:51,770 Unë kam një gabim tani. 83 00:03:51,770 --> 00:03:54,212 Çfarë kam harruar të bëj? 84 00:03:54,212 --> 00:03:55,420 Yeah, kështu që unë nuk e përpilojnë atë. 85 00:03:55,420 --> 00:03:56,740 Pra, ti buggy-2. 86 00:03:56,740 --> 00:03:59,840 Nuk ka fotografi të tilla, sepse unë nuk e kam fakt hartojë versionin e dytë. 87 00:03:59,840 --> 00:04:04,860 Deri tani interesante pashpallur nuk variable-- 2. 88 00:04:04,860 --> 00:04:05,510 Ne jemi duke bërë 1. 89 00:04:05,510 --> 00:04:11,050 Bëni buggy-1-- ./buggy-1-- dhe tani secili prej tyre është në të njëjtin drejtim. 90 00:04:11,050 --> 00:04:13,880 >> Tani ka një përjashtim të ky pretendim dashur i imi 91 00:04:13,880 --> 00:04:15,520 se keni nevojë për këto formatimin e teksteve kaçurrel. 92 00:04:15,520 --> 00:04:20,160 Kur është ajo në të vërtetë OK-- nëse ju keni vënë re në seksionin ose textbooks-- 93 00:04:20,160 --> 00:04:22,130 të heq formatimin e teksteve kaçurrel? 94 00:04:22,130 --> 00:04:22,630 Po? 95 00:04:22,630 --> 00:04:26,290 96 00:04:26,290 --> 00:04:26,870 >> Pikërisht. 97 00:04:26,870 --> 00:04:28,940 Kur ka vetëm një linjë e kodit që ju 98 00:04:28,940 --> 00:04:32,830 duan të jenë të lidhur me lak si në shembullin tonë të parë. 99 00:04:32,830 --> 00:04:36,380 Kjo është krejtësisht e ligjshme të heq formatimin e teksteve kaçurrel 100 00:04:36,380 --> 00:04:40,310 ashtu si lloj i një lehtësi nga përpiluesit për ju. 101 00:04:40,310 --> 00:04:40,810 Po? 102 00:04:40,810 --> 00:04:43,347 103 00:04:43,347 --> 00:04:43,930 Pyetje e mirë. 104 00:04:43,930 --> 00:04:45,500 A do të të konsiderohet si një gabim stil? 105 00:04:45,500 --> 00:04:49,340 Ne do të promote-- si në CS50 udhëzues stil, URL për të cilat 106 00:04:49,340 --> 00:04:51,926 është në pset1-- se gjithmonë përdorni formatimin e teksteve kaçurrel. 107 00:04:51,926 --> 00:04:53,550 Sigurisht në qoftë se ju jeni e re në programimit. 108 00:04:53,550 --> 00:04:56,800 Realiteti është që ne nuk jemi do të ndalojë ju 109 00:04:56,800 --> 00:04:58,680 nga të bërë këto banjë. 110 00:04:58,680 --> 00:05:00,846 Por në qoftë se ju jeni vetëm duke u në ritëm të gjëra, 111 00:05:00,846 --> 00:05:04,020 absolutisht vetëm përdorni përherë kaçurrel formatimin e teksteve deri sa ju të merrni ul receptorin e telefonit të tij. 112 00:05:04,020 --> 00:05:04,640 Pyetje e mirë. 113 00:05:04,640 --> 00:05:05,320 >> Të gjithë të drejtë. 114 00:05:05,320 --> 00:05:07,660 Pra, që atëherë ishte një bug. 115 00:05:07,660 --> 00:05:09,190 Të paktën në diçka mjaft të thjeshtë. 116 00:05:09,190 --> 00:05:11,260 E megjithatë, ju mund të mendoni se kjo është mjaft rudimentare, e drejtë? 117 00:05:11,260 --> 00:05:13,635 Kjo është lloj i javës së parë i kërkuar në gjuhën 118 00:05:13,635 --> 00:05:14,890 si, shih mete tuaj aty. 119 00:05:14,890 --> 00:05:17,250 Por realiteti këto janë në të vërtetë përfaqësuesi 120 00:05:17,250 --> 00:05:20,310 e disa problemeve mjaft të frikshme që mund të lindin në botën e vërtetë. 121 00:05:20,310 --> 00:05:23,530 >> Kështu që disa prej jush mund të kujtojnë në qoftë se ju ndiqni lajmet teknologjisë, 122 00:05:23,530 --> 00:05:25,740 apo ndoshta kapur edhe era e kësaj në shkurt 123 00:05:25,740 --> 00:05:29,434 të këtij viti të kaluar që Apple kishte bërë një grimë e një gabimi në të dy IOS, 124 00:05:29,434 --> 00:05:31,350 sistemit operativ në telefonat e tyre, dhe gjithashtu 125 00:05:31,350 --> 00:05:34,220 Mac OS, sistemi operativ në Desktop dhe laptopë e tyre. 126 00:05:34,220 --> 00:05:36,480 Dhe ju pa tituj të tillë si kjo. 127 00:05:36,480 --> 00:05:41,120 Dhe pas kësaj, Apple premtuar për të rregulluar këtë bug, 128 00:05:41,120 --> 00:05:45,950 dhe shumë shpejt e bëri të rregulluar atë në IOS, por pastaj në fund të fundit fiksuar atë në Mac OS 129 00:05:45,950 --> 00:05:46,810 si. 130 00:05:46,810 --> 00:05:50,370 >> Tani asnjë nga këto tituj vetëm me të vërtetë tregojnë se çfarë problemi themelor ishte, 131 00:05:50,370 --> 00:05:55,640 por bug u reduktua në fund të fundit për të një bug në SSL, Secure Sockets shtresa. 132 00:05:55,640 --> 00:05:57,390 Dhe histori të gjatë të shkurtër, kjo është software 133 00:05:57,390 --> 00:06:01,030 që shfletues tona dhe të tjera software të përdorura për të bërë çfarë? 134 00:06:01,030 --> 00:06:04,090 135 00:06:04,090 --> 00:06:06,860 >> Nëse kam thënë se është SSL përfshirë, kur ju 136 00:06:06,860 --> 00:06:13,920 vizituar një URL që fillon me HTTPS, ajo pastaj mund SSL jetë e lidhur me? 137 00:06:13,920 --> 00:06:14,580 Encryption. 138 00:06:14,580 --> 00:06:16,470 Pra, ne do të flasim për kjo në ditët e ardhshme. 139 00:06:16,470 --> 00:06:18,750 Encryption, arti i përpiqen informacion. 140 00:06:18,750 --> 00:06:22,200 >> Por histori të gjatë të shkurtër, Apple dikur më parë kishte bërë një gabim 141 00:06:22,200 --> 00:06:25,970 në zbatimin e tyre të SSL, të softuer që në fund të fundit zbaton 142 00:06:25,970 --> 00:06:30,120 URL si HTTPS ose max Lidhjet atje. 143 00:06:30,120 --> 00:06:32,850 Rezultat i cili është se ta Lidhjet mund potencialisht 144 00:06:32,850 --> 00:06:33,920 të kapen. 145 00:06:33,920 --> 00:06:37,130 Dhe lidhjet tuaja ishin jo i mbyllur domosdoshmërisht 146 00:06:37,130 --> 00:06:40,350 në qoftë se keni pasur një djalë i keq në mes të ju dhe faqen e internetit destinacion që 147 00:06:40,350 --> 00:06:42,170 e dinte se si të përfitojnë nga kjo. 148 00:06:42,170 --> 00:06:45,090 >> Tani Apple në fund të fundit postuar një fix për këtë më në fund, 149 00:06:45,090 --> 00:06:46,920 dhe përshkrimi e rregulluar e tyre ishte kjo. 150 00:06:46,920 --> 00:06:49,878 Transportit të sigurt dështuar për të vërtetuar origjinalitetin e lidhjes. 151 00:06:49,878 --> 00:06:52,920 Çështja është adresuar nga rivendosjen e humbur hapa validation. 152 00:06:52,920 --> 00:06:57,250 >> Pra, kjo është një onde shpjegim shumë të dorës për thjesht duke thënë që ne të dehur. 153 00:06:57,250 --> 00:07:00,920 Nuk është fjalë për fjalë një linjë e kodit që ishte buggy 154 00:07:00,920 --> 00:07:05,130 në zbatimin e tyre e SSL, dhe në qoftë se ju shkoni në internet dhe të kërkoni për këtë 155 00:07:05,130 --> 00:07:07,210 në të vërtetë ju mund të gjeni Kodi burimi origjinal. 156 00:07:07,210 --> 00:07:11,960 Për shembull, kjo është një e shtënë ekran të vetëm një pjesë e një fotografi mjaft të madhe, 157 00:07:11,960 --> 00:07:15,965 por kjo është një funksion i quajtur me sa duket SSL verifikuar server shenjë shkëmbimin kyç. 158 00:07:15,965 --> 00:07:17,840 Dhe ajo merr një bandë e argumentet dhe inputet. 159 00:07:17,840 --> 00:07:20,298 Dhe ne nuk jemi duke shkuar për të përqëndrohet shumë në minutia atje, 160 00:07:20,298 --> 00:07:24,390 por në qoftë se ju të përqëndrohet në kodin brenda e që i larti function-- Le 161 00:07:24,390 --> 00:07:25,590 zoom në se. 162 00:07:25,590 --> 00:07:28,140 Ju tashmë mund të dyshuar çfarë gabimi mund 163 00:07:28,140 --> 00:07:31,230 të jetë edhe në qoftë se ju nuk kanë idenë në fund të fundit ajo që ju jeni duke kërkuar në. 164 00:07:31,230 --> 00:07:35,924 Nuk është lloj i një anomali këtu, e cila është ajo? 165 00:07:35,924 --> 00:07:38,940 >> Po, unë vërtetë nuk e pëlqen vështrim i dy goto dështon. 166 00:07:38,940 --> 00:07:42,060 Sinqerisht, unë vërtetë nuk e di se çfarë goto dështojnë do të thotë, por që dy prej tyre 167 00:07:42,060 --> 00:07:42,810 të kthehet prapa. 168 00:07:42,810 --> 00:07:45,290 Kjo vetëm lloj i fërkon mua intelektualisht rrugën e gabuar, 169 00:07:45,290 --> 00:07:48,910 dhe në të vërtetë në qoftë se ne të zoom në në vetëm këto drejtime, kjo është C. 170 00:07:48,910 --> 00:07:52,220 >> Pra, një shumë e kodit Apple është vetë shkruar në C, 171 00:07:52,220 --> 00:07:55,780 dhe kjo me sa duket është me të vërtetë equivalent-- 172 00:07:55,780 --> 00:07:59,060 jo në atë vulë të bukur version, por në qoftë se ju njohin faktin 173 00:07:59,060 --> 00:08:02,560 se nuk ka formatimin e teksteve kaçurrel, çfarë Apple me të vërtetë shkroi ishte kodi që duket 174 00:08:02,560 --> 00:08:03,540 si kjo. 175 00:08:03,540 --> 00:08:07,080 Kështu që unë kam zoomed jashtë dhe unë vetëm fikse e vulë në kuptimin 176 00:08:07,080 --> 00:08:10,690 se në qoftë se nuk ka asnjë formatimin e teksteve kaçurrel, që goto dytë dështojnë që është në të verdhë 177 00:08:10,690 --> 00:08:12,500 do të ekzekutojë pa marrë parasysh çfarë. 178 00:08:12,500 --> 00:08:15,540 Kjo nuk është e lidhur me nëse kushti mbi të. 179 00:08:15,540 --> 00:08:19,590 >> Pra, edhe një herë, në qoftë se ju bëni mjaft kuptuar se çfarë ky mund ndoshta 180 00:08:19,590 --> 00:08:23,230 të jetë bërë, e di se secili prej tyre conditions-- secili nga këto rreshta 181 00:08:23,230 --> 00:08:26,180 është një hap shumë i rëndësishëm në procesin e kontrolluar 182 00:08:26,180 --> 00:08:28,350 në qoftë se të dhënat e juaj është në të vërtetë i mbyllur. 183 00:08:28,350 --> 00:08:31,710 Pra, duke lënë mënjanë një nga këto hapa, jo ide e mirë. 184 00:08:31,710 --> 00:08:34,840 >> Por për shkak se ne kemi këtë goto dytë dështojnë në të verdhë, 185 00:08:34,840 --> 00:08:36,840 dhe për shkak se një herë ne lloj estetikisht 186 00:08:36,840 --> 00:08:40,480 lëvizin atë në të majtë, ku atë logjikisht është në këtë moment, çfarë 187 00:08:40,480 --> 00:08:43,230 do të thotë kjo për linjë i kodit poshtë asaj goto dytë 188 00:08:43,230 --> 00:08:46,480 nuk do të jeni të kënaqur? 189 00:08:46,480 --> 00:08:48,860 Ajo është gjithmonë do të jetë skipped. 190 00:08:48,860 --> 00:08:52,100 Pra gotos janë frowned në përgjithësi mbi të për arsye që ne nuk do të vërtetë të shkojnë në, 191 00:08:52,100 --> 00:08:54,940 dhe në të vërtetë në CS50 ne nuk priren për të mësuar this goto deklaratë, 192 00:08:54,940 --> 00:08:58,130 por ju mund të mendoni goto dështojnë si kuptimi shkojnë kërcim 193 00:08:58,130 --> 00:08:59,600 në disa pjesë të tjera të kodit. 194 00:08:59,600 --> 00:09:03,120 >> Me fjalë të tjera hidhen mbi kjo linjë e fundit krejt, 195 00:09:03,120 --> 00:09:07,420 dhe kështu që rezultati i kësaj budalla gabim i thjeshtë që ishte vetëm 196 00:09:07,420 --> 00:09:10,330 një rezultat i ndoshta dikujt kopjimi dhe pasting një shumë 197 00:09:10,330 --> 00:09:14,150 shumë herë ishte se i tërë sigurinë e iOS dhe Mac OS 198 00:09:14,150 --> 00:09:18,240 ishte e prekshme për zënie nga djemtë e keqe për mjaft kohë. 199 00:09:18,240 --> 00:09:19,940 Deri në fund Apple fiksuar këtë. 200 00:09:19,940 --> 00:09:23,100 >> Tani në qoftë se disa prej jush janë në të vërtetë drejtimin versionet e vjetra të iOS ose Mac OS, 201 00:09:23,100 --> 00:09:27,250 ju mund të shkoni në gotofail.com cilat është një faqe interneti që dikush të ngritur 202 00:09:27,250 --> 00:09:29,190 në thelb të përcaktuar programuar 203 00:09:29,190 --> 00:09:30,980 në qoftë se kompjuteri juaj është ende e ndjeshme. 204 00:09:30,980 --> 00:09:33,600 Dhe sinqerisht, në qoftë se ajo është, kjo është ndoshta një ide e mirë 205 00:09:33,600 --> 00:09:36,870 për të rinovuar telefonin tuaj ose Mac tuaj në këtë pikë. 206 00:09:36,870 --> 00:09:40,120 Por atje, vetëm testament për të se sa një vlerësim i këtyre nivel më të ulët 207 00:09:40,120 --> 00:09:42,400 detaje dhe në mënyrë të drejtë ide të thjeshtë mund të vërtetë 208 00:09:42,400 --> 00:09:44,590 përkthehet në vendimet dhe problemet që 209 00:09:44,590 --> 00:09:47,320 affected-- në këtë case-- miliona njerëz. 210 00:09:47,320 --> 00:09:49,107 >> Tani një fjalë mbi administratën. 211 00:09:49,107 --> 00:09:50,690 Seksioni do të fillojë këtë të dielë vjen. 212 00:09:50,690 --> 00:09:53,360 Ju do të merrni një email nga fundjavë në lidhje me seksionin, në të cilën pikë 213 00:09:53,360 --> 00:09:55,290 procesi resectioning do të fillojë në qoftë se ju keni 214 00:09:55,290 --> 00:09:56,998 realizuar ju tani keni disa konflikte të reja. 215 00:09:56,998 --> 00:10:00,180 Pra, kjo ndodh çdo vit, dhe ne do të strehojë në ditët që do të vijnë. 216 00:10:00,180 --> 00:10:02,430 >> Zyra hours-- bëjnë të mbajtur një sy në këtë orar këtu. 217 00:10:02,430 --> 00:10:05,100 Ndryshon pak këtë javë, veçanërisht koha e fillimit 218 00:10:05,100 --> 00:10:08,180 dhe vend, kështu që të konsultohet që para se të nisej për të orarit të punës 219 00:10:08,180 --> 00:10:09,520 ndonjë nga katër netët e ardhshme. 220 00:10:09,520 --> 00:10:12,680 Dhe tani një fjalë në vlerësimin, veçanërisht si ju pikiatë në problemin 221 00:10:12,680 --> 00:10:14,350 vendos një dhe më gjerë. 222 00:10:14,350 --> 00:10:17,070 >> Pra, sipas specifikimit, këto janë në përgjithësi 223 00:10:17,070 --> 00:10:20,360 akset së bashku të cilat vlerësojmë punën tuaj. 224 00:10:20,360 --> 00:10:23,170 Fushëveprimi i referohet asaj që mase kodin zbaton tuaj 225 00:10:23,170 --> 00:10:25,690 karakteristikat e nevojshme nga specifikim tonë. 226 00:10:25,690 --> 00:10:28,290 Me fjalë të tjera, sa i një grup copë e bëri të kafshoj. 227 00:10:28,290 --> 00:10:30,440 A ju bëni një të tretën e saj, gjysma e saj, 100% e saj. 228 00:10:30,440 --> 00:10:33,000 Edhe në qoftë se kjo nuk është e saktë, Sa keni të përpiqet? 229 00:10:33,000 --> 00:10:35,290 Kështu që kap nivelin i përpjekjeve dhe shumës 230 00:10:35,290 --> 00:10:38,260 për të cilat ju pak off Problemet Problemi Set-së. 231 00:10:38,260 --> 00:10:40,690 >> Correctness-- këtë, për të në çfarë mase, është kodi juaj 232 00:10:40,690 --> 00:10:43,150 në përputhje me tonë specifikimet dhe pa bugs. 233 00:10:43,150 --> 00:10:44,770 Pra, e bën këtë punë si duhet? 234 00:10:44,770 --> 00:10:48,700 Nëse do t'i jepte disa të dhëna, e bën atë na japë prodhimin që ne presim? 235 00:10:48,700 --> 00:10:52,570 Design-- tani ky është i pari i ato veçanërisht cilësore, 236 00:10:52,570 --> 00:10:56,180 apo ato që kërkojnë gjykimin njerëzor. 237 00:10:56,180 --> 00:10:59,690 Dhe në të vërtetë, kjo është arsyeja pse ne kemi një staf e kaq shumë shokëve të mësimdhënies dhe natyrisht 238 00:10:59,690 --> 00:11:00,350 asistentë. 239 00:11:00,350 --> 00:11:03,480 Deri në çfarë mase është tuaj Kodi i shkruar mirë? 240 00:11:03,480 --> 00:11:05,810 >> Dhe përsëri kjo është një shumë e Vlerësimi cilësor 241 00:11:05,810 --> 00:11:09,100 që do të punojë me ju në bi-directionally në javët që do të vijnë. 242 00:11:09,100 --> 00:11:12,060 Kështu që kur ju nuk merrni vetëm rezultatet numerike, por edhe 243 00:11:12,060 --> 00:11:16,682 një rezultatet e shkruara, ose reagime shtypur, ose reagime të shkruara me fjalë anglisht. 244 00:11:16,682 --> 00:11:19,640 Kjo është ajo që ne do të përdorim për të përzënë ju në drejtim të vërtetë shkruar kodin më të mirë. 245 00:11:19,640 --> 00:11:23,320 Dhe në leksion dhe seksion, ne do të përpiqemi për pikë out-- si shpesh si ne can-- 246 00:11:23,320 --> 00:11:26,420 ajo që e bën një program jo vetëm saktë dhe funksionalisht të mirë, 247 00:11:26,420 --> 00:11:28,200 por gjithashtu i projektuar mirë. 248 00:11:28,200 --> 00:11:31,850 Më efikase ajo mund të jetë, ose edhe më e bukur ajo mund të jetë. 249 00:11:31,850 --> 00:11:33,100 >> Cili na çon në stil. 250 00:11:33,100 --> 00:11:36,876 Style në fund të fundit është një gjykim estetike. 251 00:11:36,876 --> 00:11:38,750 A ju zgjidhni mirë emrat për variablave tuaj? 252 00:11:38,750 --> 00:11:40,330 A keni prerë kodin tuaj siç duhet? 253 00:11:40,330 --> 00:11:44,010 A të duket e mirë, dhe për këtë arsye, është e lehtë për një tjetër qenie njerëzore 254 00:11:44,010 --> 00:11:46,550 për të lexuar përkatëse tuaj e korrektësinë e tij. 255 00:11:46,550 --> 00:11:50,300 >> Tani në përgjithësi në planin mësimor, ne të shënuar këto gjëra në një shkallë me pesë pikë. 256 00:11:50,300 --> 00:11:53,640 Dhe më lejoni të çekiç në shtëpi pikë se një tre është me të vërtetë e mirë. 257 00:11:53,640 --> 00:11:55,550 Shumë shpejt të bëjë folks fillojnë të bëjnë aritmetike. 258 00:11:55,550 --> 00:11:58,133 Kur ata marrin një tri të pesë në korrektësinë për disa pset 259 00:11:58,133 --> 00:12:02,040 dhe ata mendojnë mallkuar, kam shkuar në 60% cila është në thelb një D ose një E. 260 00:12:02,040 --> 00:12:03,980 >> Kjo nuk është mënyra që ne mendojnë për këto numra. 261 00:12:03,980 --> 00:12:06,880 Një tre është me të vërtetë e mirë, dhe çfarë ne në përgjithësi presin në fillim 262 00:12:06,880 --> 00:12:09,820 i termit është se në qoftë se ju jeni duke marrë një bandë e three's-- ndoshta një çift 263 00:12:09,820 --> 00:12:12,540 e panaireve, disa fours-- ose një twos çift, disa fours-- 264 00:12:12,540 --> 00:12:13,748 kjo është një vend i mirë për të filluar. 265 00:12:13,748 --> 00:12:16,320 Dhe për sa kohë që ne të shohim një trajektore lart me kalimin e kohës, 266 00:12:16,320 --> 00:12:18,540 ju jeni në një vend veçanërisht i mirë. 267 00:12:18,540 --> 00:12:20,752 >> Formula që ne përdorim për të gjërat peshë është në thelb 268 00:12:20,752 --> 00:12:22,710 kjo per planin mësimor, i cili vetëm do të thotë se ne 269 00:12:22,710 --> 00:12:24,750 japin më shumë peshë për korrektësinë. 270 00:12:24,750 --> 00:12:27,930 Për shkak se ajo është shumë e shpesh korrektësi që merr kohë më. 271 00:12:27,930 --> 00:12:28,760 Trust me tani. 272 00:12:28,760 --> 00:12:31,190 Ju do find-- të paktën në një pset-- që ju 273 00:12:31,190 --> 00:12:36,790 shpenzojnë 90% të kohës tuaj duke punuar në 10% të problemit. 274 00:12:36,790 --> 00:12:39,320 >> Dhe çdo gjë lloj punon me përjashtim të një ose dy viruse, 275 00:12:39,320 --> 00:12:41,570 dhe ata janë të mete që mbajtur ju deri natën vonë. 276 00:12:41,570 --> 00:12:43,380 Ata janë ato që lloj të të shpëtojnë. 277 00:12:43,380 --> 00:12:45,560 Por pas fjetur në të, ose ndjekin orarin e punës 278 00:12:45,560 --> 00:12:48,844 ose pyetje online, është kur ju merrni për këtë qëllim 100%, 279 00:12:48,844 --> 00:12:50,760 dhe kjo është arsyeja pse ne peshe korrektesën më. 280 00:12:50,760 --> 00:12:54,102 Hartimi pak më pak, dhe stil pak më pak se kaq. 281 00:12:54,102 --> 00:12:56,060 Por mbani në stilin mind-- është ndoshta më e lehtë 282 00:12:56,060 --> 00:12:58,890 nga këto për të kafshoj sipas udhëzues stil. 283 00:12:58,890 --> 00:13:01,580 >> Dhe tani, një më rëndë vini re në ndershmëri akademik. 284 00:13:01,580 --> 00:13:05,000 CS50 ka dallim të ardhur keq e duke qenë prodhuesi më i madh i Ad Bordit 285 00:13:05,000 --> 00:13:07,330 raste pothuajse çdo vit historikisht. 286 00:13:07,330 --> 00:13:11,012 Kjo nuk është për shkak se studentët mashtrojnë në CS50 më shumë se çdo klasë tjetër, 287 00:13:11,012 --> 00:13:13,720 por për shkak se nga natyra e punës, fakti se është e elektronike, 288 00:13:13,720 --> 00:13:16,636 Fakti që ne e shohim për të, dhe fakti ne jemi shkencëtarët kompjuterike, 289 00:13:16,636 --> 00:13:20,570 Unë mund të them se ne jemi për fat të keq shumë të mirë në zbulimin atë. 290 00:13:20,570 --> 00:13:22,710 >> Pra, çfarë do të thotë kjo në terma reale? 291 00:13:22,710 --> 00:13:24,820 Pra të, për planin mësimor, Filozofia Kursi-së 292 00:13:24,820 --> 00:13:28,090 vërtetë nuk avulloj të jenë të arsyeshme. 293 00:13:28,090 --> 00:13:31,684 Nuk është kjo linjë në mes bërë punë të dikujt në tuaj 294 00:13:31,684 --> 00:13:34,100 dhe për të gjetur pak ndihmë të arsyeshme nga një mik, 295 00:13:34,100 --> 00:13:38,020 dhe të plotë duke bërë atë punë për tuaj mik, apo të dërguar atë kodin tuaj 296 00:13:38,020 --> 00:13:41,080 në mënyrë që ai ose ajo mund të thjesht marrë ose të marrë hua atë të drejtë. 297 00:13:41,080 --> 00:13:43,580 Dhe që kalon vijën që ne të tërhequr në klasë. 298 00:13:43,580 --> 00:13:45,410 >> Shih, planin mësimor në fund të fundit për linjat 299 00:13:45,410 --> 00:13:48,209 që të nxjerrim si të arsyeshme dhe sjellja e paarsyeshme, 300 00:13:48,209 --> 00:13:50,000 por me të vërtetë e bën vlim poshtë në thelb 301 00:13:50,000 --> 00:13:53,980 e puna juaj kanë nevojë për të të jetë vetë në fund. 302 00:13:53,980 --> 00:13:56,230 Tani me se tha, ka një ndihmues. 303 00:13:56,230 --> 00:13:58,980 Për shkak se si ju mund të imagine-- nga të orarit të punës dhe visuals 304 00:13:58,980 --> 00:14:01,060 dhe videot ne kemi treguar kështu far-- CS50 305 00:14:01,060 --> 00:14:04,530 është me të vërtetë qëllim që të jetë sa bashkëpunues dhe si bashkëpunuese dhe si social 306 00:14:04,530 --> 00:14:06,450 të jetë e mundur. 307 00:14:06,450 --> 00:14:08,570 Si Collaborative siç është rigoroz. 308 00:14:08,570 --> 00:14:11,314 >> Por me këtë tha, deduktive, si ju do të shihni në planin mësimor, 309 00:14:11,314 --> 00:14:12,980 është se kur ju jeni që ka disa probleme. 310 00:14:12,980 --> 00:14:16,470 Ju keni disa bug në kodin tuaj që ju nuk mund të zgjidhë, është e arsyeshme për ju 311 00:14:16,470 --> 00:14:18,039 për të treguar kodin tuaj të dikujt tjetër. 312 00:14:18,039 --> 00:14:21,080 Një mik edhe në klasë, një mik ulur pranë jush në orarit të punës, 313 00:14:21,080 --> 00:14:22,680 ose një anëtar i stafit. 314 00:14:22,680 --> 00:14:25,810 Por ata nuk mund të tregojnë kodin e tyre për ju. 315 00:14:25,810 --> 00:14:27,710 >> Me fjalë të tjera, një përgjigje të question-- tuaj 316 00:14:27,710 --> 00:14:29,940 Unë kam nevojë për help-- nuk është oh, këtu është kodi im. 317 00:14:29,940 --> 00:14:32,440 Hidhni një sy në këtë dhe nxjerr një përfundim nga ajo se çfarë do. 318 00:14:32,440 --> 00:14:34,580 Tani, sigurisht, nuk ka një mënyrë e qartë për të lojës 319 00:14:34,580 --> 00:14:37,760 ky sistem ku unë do të ju tregojnë kodi im para se të paturit e një pyetje. 320 00:14:37,760 --> 00:14:40,150 Ju më tregoni kodin tim para se të paturit e një pyetje. 321 00:14:40,150 --> 00:14:45,870 Por shih planin mësimor përsëri për detajet finer e ku kjo linjë është. 322 00:14:45,870 --> 00:14:50,606 >> Vetëm për të tani të pikturuar foto dhe të ndarë sa të jetë e mundur në mënyrë transparente 323 00:14:50,606 --> 00:14:53,480 ku jemi ne në vitet e fundit, ky është numri i rasteve Ad Bordit 324 00:14:53,480 --> 00:14:56,260 që CS50 ka patur mbi shtatë vitet e fundit. 325 00:14:56,260 --> 00:14:58,717 Me 14 raste këtë vjeshtë më të fundit. 326 00:14:58,717 --> 00:15:01,300 Në kushtet e studentëve të përfshirë, ajo ishte 20 disa studentë i rastësishëm 327 00:15:01,300 --> 00:15:02,490 këtë vjeshtë e kaluara. 328 00:15:02,490 --> 00:15:05,670 Nuk ishte një kulmin e 33 studentët disa vite më parë. 329 00:15:05,670 --> 00:15:08,830 Shumë prej të cilëve janë për fat të keq nuk është më këtu në kampus. 330 00:15:08,830 --> 00:15:13,100 >> Studentët e përfshirë si një përqindje e klasë ka shkonin historikisht nga 0% 331 00:15:13,100 --> 00:15:17,300 në 5.3%, e cila është vetëm për të thënë ky është vit një sfidë. 332 00:15:17,300 --> 00:15:20,390 Dhe për këtë qëllim, ajo që ne duam të bëjmë është të përcjellë një 333 00:15:20,390 --> 00:15:24,310 se ne dd-- vetëm FYI-- të krahasuar në një drejtësi për ata studentë të cilët 334 00:15:24,310 --> 00:15:26,520 janë ndjekur linjën në përputhje me rrethanat. 335 00:15:26,520 --> 00:15:29,620 Ne bëjmë të krahasuar të gjitha aktuale parashtresat kundër të gjitha misionet e fundit 336 00:15:29,620 --> 00:15:30,840 nga vitet e fundit shumë. 337 00:15:30,840 --> 00:15:33,620 >> Ne e dimë shumë se si të Google rreth dhe për të gjetur depo kodin 338 00:15:33,620 --> 00:15:36,360 online, forume diskutimi online, vende pune online. 339 00:15:36,360 --> 00:15:41,580 Nëse një student mund të gjeni atë, ne mund me siguri gjeni atë sa më shumë që ne bëjmë me keqardhje. 340 00:15:41,580 --> 00:15:45,330 Pra, ajo që ju do të shihni në planin mësimor pse është kjo klauzolë keqardhje. 341 00:15:45,330 --> 00:15:47,500 Unë mund me siguri vlerësojmë, dhe ne të gjithë ka 342 00:15:47,500 --> 00:15:50,870 Stafi ka bërë kursin si kjo, apo kjo e vetë me kalimin e kohës, 343 00:15:50,870 --> 00:15:53,997 me siguri e di se çfarë është si kur jeta merr në mënyrë, kur ju keni 344 00:15:53,997 --> 00:15:56,080 disa natën vonë deadline-- jo vetëm në këtë klasë, 345 00:15:56,080 --> 00:15:58,660 por another-- kur ju jeni plotësisht i rraskapitur, theksoi, 346 00:15:58,660 --> 00:16:00,659 kanë një numër tepër i madh e gjëra të tjera për të bërë. 347 00:16:00,659 --> 00:16:03,660 Ju do të bëni në një pikë në Jeta sigurisht një të keqe, ndoshta me vonesë 348 00:16:03,660 --> 00:16:04,620 Vendimi natë. 349 00:16:04,620 --> 00:16:06,520 >> Pra, në planin mësimor, nuk është kjo klauzolë, 350 00:16:06,520 --> 00:16:10,629 të tillë që nëse brenda 72 orë duke e bërë disa vendim të varfër, ju vetë deri në atë 351 00:16:10,629 --> 00:16:12,670 dhe për të arritur jashtë për mua dhe një nga krerët e kursit të 352 00:16:12,670 --> 00:16:14,300 dhe ne do të kemi një bisedë. 353 00:16:14,300 --> 00:16:16,220 Ne do të merret me gjëra të brenda me shpresë 354 00:16:16,220 --> 00:16:18,770 nga kjo bëhet më i a moment mësimdhënies apo mësim jetën, 355 00:16:18,770 --> 00:16:22,120 dhe jo diçka me degëzime veçanërisht drastike 356 00:16:22,120 --> 00:16:24,570 si ju mund të shihni në këto Listat këtu. 357 00:16:24,570 --> 00:16:26,540 >> Pra, kjo është një ton shumë serioze. 358 00:16:26,540 --> 00:16:29,960 Le të ndalemi për vetëm disa sekonda për të thyer tensionin. 359 00:16:29,960 --> 00:16:34,442 >> [MUSIC Playing] 360 00:16:34,442 --> 00:17:17,768 361 00:17:17,768 --> 00:17:20,250 >> DAVID J. Malan: Mirë, aq sa ishte se për një Segue? 362 00:17:20,250 --> 00:17:22,059 Temave kryesore të sotme. 363 00:17:22,059 --> 00:17:23,859 Parë e cila është abstraksion. 364 00:17:23,859 --> 00:17:26,900 Tjetër e cila do të jetë Përfaqësimi i të dhënave, të cilat sinqerisht 365 00:17:26,900 --> 00:17:31,640 është një mënyrë të vërtetë të thatë për të thënë se si mund të shkoni në lidhje me zgjidhjen e problemeve dhe të menduarit 366 00:17:31,640 --> 00:17:33,250 për zgjidhjen e problemeve? 367 00:17:33,250 --> 00:17:37,285 Kështu që ju keni parë në Scratch, dhe ju keni parë ndoshta tashmë në pset1 me C 368 00:17:37,285 --> 00:17:39,930 që jo vetëm mund të përdorni funksionet, si printf, 369 00:17:39,930 --> 00:17:42,770 që njerëzit e tjerë në vitet e fundit ka shkruar për ju. 370 00:17:42,770 --> 00:17:45,340 Ju gjithashtu mund të shkruani funksionet tuaj. 371 00:17:45,340 --> 00:17:48,440 >> Dhe, edhe pse ju nuk mund të ketë bërë këtë në C, dhe sinqerisht në pset1 372 00:17:48,440 --> 00:17:51,866 ju nuk duhet të vërtetë për të shkruar tuaj Funksioni i vet për shkak të problem-- 373 00:17:51,866 --> 00:17:53,990 ndërsa ndoshta frikshme në parë glance-- ju do të shihni 374 00:17:53,990 --> 00:17:57,910 në fund të fundit mund të zgjidhen me jo të gjithë se shumë rreshta të kodit. 375 00:17:57,910 --> 00:18:01,140 Por me tha se, në aspektin e shkruar funksionin tuaj, 376 00:18:01,140 --> 00:18:03,570 kuptojnë se C jep ju këtë aftësi. 377 00:18:03,570 --> 00:18:06,940 >> Unë jam duke shkuar për të shkuar në kodin e sotme burim, e cila është në dispozicion tashmë në internet, 378 00:18:06,940 --> 00:18:10,900 dhe unë jam duke shkuar për të shkuar përpara dhe të hapur up një program të quajtur funksioni 0.C, 379 00:18:10,900 --> 00:18:14,620 dhe në funksion zero ne do të shohim disa gjëra. 380 00:18:14,620 --> 00:18:19,160 Në linjat e parë 18 me 23 është funksioni im kryesor. 381 00:18:19,160 --> 00:18:22,414 Dhe tani që ne jemi duke filluar për të lexuar Kodi që ne nuk jemi duke shkruar në fluturojnë, 382 00:18:22,414 --> 00:18:25,080 por në vend të kësaj unë kam shkruar më parë ose që ju në një problem të caktuar 383 00:18:25,080 --> 00:18:27,910 mund të marrë që ka janë shkruar paraprakisht. 384 00:18:27,910 --> 00:18:30,040 Një mënyrë e mirë për të filluar lexuar kodin e dikujt tjetër 385 00:18:30,040 --> 00:18:31,400 është të shikoni për funksion kryesor. 386 00:18:31,400 --> 00:18:34,420 Kuptoj se ku se hyrja Çështja është për drejtimin e programit, 387 00:18:34,420 --> 00:18:36,580 dhe pastaj ndiqni atë logjikisht nga atje. 388 00:18:36,580 --> 00:18:40,190 >> Pra ky program dukje printime Emri juaj ndjekur nga një zorrë e trashë. 389 00:18:40,190 --> 00:18:42,490 Ne pastaj të përdorin GetString nga biblioteka CS50 390 00:18:42,490 --> 00:18:46,050 për të marrë një varg, apo një fjalë apo fraza nga përdoruesit në tastierë. 391 00:18:46,050 --> 00:18:48,390 Dhe pastaj nuk ka kjo gjë PrintName here--. 392 00:18:48,390 --> 00:18:51,420 >> Tani PrintName nuk është një funksion që vjen me C. 393 00:18:51,420 --> 00:18:52,970 Kjo nuk është në io.h. standarde 394 00:18:52,970 --> 00:18:55,570 Kjo nuk është në CS50.h. 395 00:18:55,570 --> 00:18:57,880 Është më tepër në të njëjtën dosje. 396 00:18:57,880 --> 00:19:01,000 Njoftim në qoftë se unë lëviz nëpër rreshta bit-- 25 të 27-- 397 00:19:01,000 --> 00:19:05,330 kjo është vetëm një mënyrë mjaft të komentuar Kodi juaj duke përdorur yjet dhe ul. 398 00:19:05,330 --> 00:19:07,320 Kjo është një multi-line komentoni, dhe kjo është vetëm 399 00:19:07,320 --> 00:19:10,570 përshkrimi im në blu të ajo që e bën këtë funksion. 400 00:19:10,570 --> 00:19:14,530 >> Për shkak se në linjat 28 përmes 31, Unë kam shkruar një funksion super të thjeshtë 401 00:19:14,530 --> 00:19:16,280 emri i të cilit është PrintName. 402 00:19:16,280 --> 00:19:19,560 Ajo merr si shumë Argumentet do të thoni? 403 00:19:19,560 --> 00:19:25,120 Pra, një argument-- sepse nuk ka një të tillë Argumenti listuara brenda kllapa. 404 00:19:25,120 --> 00:19:27,000 Lloji i cili është String. 405 00:19:27,000 --> 00:19:30,240 Që do të thotë PrintName është si kjo kuti e zezë 406 00:19:30,240 --> 00:19:32,910 apo funksion që merr si input një varg. 407 00:19:32,910 --> 00:19:35,730 >> Dhe emri i atij String përshtatshme do të jetë Emri. 408 00:19:35,730 --> 00:19:37,840 Jo S, jo N, por Emri. 409 00:19:37,840 --> 00:19:41,090 Pra, çfarë do të bëni PrintName? 410 00:19:41,090 --> 00:19:42,210 Është e thjeshtë e bukur. 411 00:19:42,210 --> 00:19:45,390 Ashtu si një linjë e kodit për printf, por me sa duket ajo 412 00:19:45,390 --> 00:19:47,950 printime nga "Përshëndetje," kështu dhe kështu. 413 00:19:47,950 --> 00:19:50,070 Ku kështu dhe kështu vjen nga argumentit. 414 00:19:50,070 --> 00:19:52,300 >> Tani kjo nuk është një risi e madhe këtu. 415 00:19:52,300 --> 00:19:56,710 Vërtet, unë kam marrë një program që do të mund janë shkruar me një linjë të kodit 416 00:19:56,710 --> 00:20:00,190 duke vënë këtë deri këtu, dhe ndryshuar atë për diçka 417 00:20:00,190 --> 00:20:04,920 që përfshin disa gjashtë apo shtatë apo më shumë rreshta të kodit të gjithë rrugën poshtë këtu. 418 00:20:04,920 --> 00:20:08,190 >> Por është praktikimi i një Parimi i njohur si abstraksion. 419 00:20:08,190 --> 00:20:12,550 Lloji i encapsulating brenda një të ri funksion që ka një emër, dhe më të mirë 420 00:20:12,550 --> 00:20:14,590 por që emri fjalë për fjalë thotë atë që bën. 421 00:20:14,590 --> 00:20:16,880 Unë do të thotë printf-- se nuk është e veçanërisht përshkruese. 422 00:20:16,880 --> 00:20:18,932 Nëse unë dua të krijuar një copë mister, ose në qoftë se unë 423 00:20:18,932 --> 00:20:21,140 duan për të krijuar një funksion që printon emrin e dikujt, 424 00:20:21,140 --> 00:20:23,230 bukuria e bërë këtë është se unë mund të vërtetë 425 00:20:23,230 --> 00:20:27,170 japin atë funksion një emër që përshkruan atë që bën. 426 00:20:27,170 --> 00:20:29,844 >> Tani ajo merr në një input që Unë e kam quajtur në mënyrë arbitrare emrin, 427 00:20:29,844 --> 00:20:32,760 por se edhe është mrekullisht përshkrues në vend të qenë një më pak 428 00:20:32,760 --> 00:20:36,140 generic si S. dhe pavlefshme, tani për tani, thjesht do të thotë 429 00:20:36,140 --> 00:20:38,330 se ky funksion nuk ka dorë me mbrapa asgjë. 430 00:20:38,330 --> 00:20:41,127 Ajo nuk është si GetString se fjalë për fjalë duart më prapa një varg 431 00:20:41,127 --> 00:20:43,960 si ne e bëmë me copa letre me shokët e klasës tuaj javën e kaluar, 432 00:20:43,960 --> 00:20:45,990 por ajo vetëm ka një efekt anësor. 433 00:20:45,990 --> 00:20:48,080 Printon diçka në ekran. 434 00:20:48,080 --> 00:20:53,880 >> Deri në fund të ditës, nëse I bëjnë funksion-0, ./function-0, 435 00:20:53,880 --> 00:20:55,450 ne do të shohim se ai e kërkon për emrin tim. 436 00:20:55,450 --> 00:20:58,150 Unë lloji Davidin, dhe ajo lloje jashtë emrin tim. 437 00:20:58,150 --> 00:21:01,080 Nëse unë bëjë atë përsëri me Rob, ajo do të thotë "Pershendetje, Rob." 438 00:21:01,080 --> 00:21:04,280 Pra, një ide e thjeshtë, por ndoshta nxjerrim nga kjo mendërisht 439 00:21:04,280 --> 00:21:06,750 se si programet tuaja të merrni pak më e komplikuar, 440 00:21:06,750 --> 00:21:10,290 dhe ju doni të shkruani një pjesë e Kodi dhe thirrje që code-- kërkoj 441 00:21:10,290 --> 00:21:13,270 që code-- nga disa përshkrues përmendur si PrintName, 442 00:21:13,270 --> 00:21:15,600 C nuk na përballojë këtë aftësi. 443 00:21:15,600 --> 00:21:17,660 >> Ja një tjetër shembull i thjeshtë. 444 00:21:17,660 --> 00:21:22,940 Për shembull, në qoftë se unë të hapur një paraqesë nga sot quhet return.c, 445 00:21:22,940 --> 00:21:24,270 vini re atë që unë kam bërë këtu. 446 00:21:24,270 --> 00:21:26,330 Shumica e këtij funksioni kryesor është printf. 447 00:21:26,330 --> 00:21:30,360 Për herë të parë në mënyrë arbitrare të nisja një variable quajtur x me numrin 2. 448 00:21:30,360 --> 00:21:34,110 Unë pastaj të shtypura nga "x është tani % I "kalon në vlerën e x. 449 00:21:34,110 --> 00:21:35,500 Kështu që unë jam vetëm duke thënë atë që është. 450 00:21:35,500 --> 00:21:37,208 >> Tani unë jam vetëm guxim duke pretenduar me printf. 451 00:21:37,208 --> 00:21:42,050 Unë jam cubing atë vlerë të x, dhe unë jam i duke bërë kështu që duke e quajtur një funksion 452 00:21:42,050 --> 00:21:45,590 quhet kalimi kubike në x si argumenti, 453 00:21:45,590 --> 00:21:49,300 dhe pastaj të shpëtuar e prodhimit në variablin vetë, x. 454 00:21:49,300 --> 00:21:51,340 Kështu që unë jam clobbering vlerën e x. 455 00:21:51,340 --> 00:21:53,380 Unë jam thelbësor vlera e x me çfarëdo 456 00:21:53,380 --> 00:21:56,510 rezultat i quajtur ky funksion kubike është. 457 00:21:56,510 --> 00:21:59,530 Dhe atëherë unë vetëm të shtypura nga disa sende gëzof këtu duke thënë atë që kam bërë. 458 00:21:59,530 --> 00:22:01,600 >> Pra, atë që atëherë është kubike? 459 00:22:01,600 --> 00:22:03,510 Vini re se çfarë është në thelb të ndryshme këtu. 460 00:22:03,510 --> 00:22:05,540 Unë e kam dhënë funksionin një emër si më parë. 461 00:22:05,540 --> 00:22:08,270 Unë e kam dhënë një emër për një argument. 462 00:22:08,270 --> 00:22:11,650 Këtë herë ajo e quajtur n në vend të emrit, por unë mund të telefononi atë çdo gjë që unë dua. 463 00:22:11,650 --> 00:22:12,650 Por kjo është e ndryshme. 464 00:22:12,650 --> 00:22:14,080 Kjo gjë në të majtë. 465 00:22:14,080 --> 00:22:16,290 Më parë ajo ishte ajo fjalen? 466 00:22:16,290 --> 00:22:16,870 Boys. 467 00:22:16,870 --> 00:22:18,580 Tani është e qartë int. 468 00:22:18,580 --> 00:22:20,630 >> Pra, çfarë është ndoshta heq? 469 00:22:20,630 --> 00:22:24,090 Ndërsa të tregon pavlefshëm lloj mosqenie, dhe se ishte rasti. 470 00:22:24,090 --> 00:22:25,970 PrintName kthyer asgjë. 471 00:22:25,970 --> 00:22:27,942 Ai e bëri diçka, por ajo nuk ka dorëzuar me mbrapa 472 00:22:27,942 --> 00:22:30,650 diçka që unë mund të vënë në majtë anën e një shenjë barazimi 473 00:22:30,650 --> 00:22:32,460 si unë kam bërë këtu në linjë 22. 474 00:22:32,460 --> 00:22:36,780 >> Pra, nëse unë them në on line 30, çfarë është se ndoshta duke nënkuptuar 475 00:22:36,780 --> 00:22:38,610 për atë kubike bën për mua? 476 00:22:38,610 --> 00:22:41,110 Po? 477 00:22:41,110 --> 00:22:42,310 Ajo kthehet një numër të plotë. 478 00:22:42,310 --> 00:22:44,590 Pra, duart më mbrapa, për shembull, një copë letër 479 00:22:44,590 --> 00:22:46,580 në të cilën ai e ka shkruar përgjigjen. 480 00:22:46,580 --> 00:22:50,130 2 cubed, ose 3 cubed, ose 4 cubed-- çdo gjë që unë kaloi në, 481 00:22:50,130 --> 00:22:51,540 dhe si e kam zbatuar këtë? 482 00:22:51,540 --> 00:22:54,810 E pra, vetëm n herë n herë n është se si unë mund të kubike një vlerë. 483 00:22:54,810 --> 00:22:57,110 Pra, përsëri, super e thjeshtë ide, por demonstrative 484 00:22:57,110 --> 00:23:00,100 tani si mund të shkruani funksionet që në fakt na kishte mbrapa 485 00:23:00,100 --> 00:23:02,380 vlerat që mund të jenë me interes. 486 00:23:02,380 --> 00:23:05,740 >> Le të shikojmë një shembull i fundit këtu quhet funksion një. 487 00:23:05,740 --> 00:23:08,530 Në këtë shembull, ai fillon për të marrë më shumë bindëse. 488 00:23:08,530 --> 00:23:12,400 Pra, në funksion një, kjo Njoftimi program-- në fund të fundit 489 00:23:12,400 --> 00:23:14,920 quan një funksion të quajtur GetPositiveInt. 490 00:23:14,920 --> 00:23:17,800 GetPositiveInt nuk është një funksion në bibliotekë CS50, 491 00:23:17,800 --> 00:23:20,400 por ne kemi vendosur ne do të donte që ajo të ekzistojë. 492 00:23:20,400 --> 00:23:24,550 >> Pra, nëse ne lëvizni poshtë më vonë në dosje, vini re se si unë shkova për zbatimin 493 00:23:24,550 --> 00:23:26,560 merrni int pozitiv, dhe unë thonë se është më bindëse 494 00:23:26,560 --> 00:23:28,992 sepse kjo është një të mirë Numri i linjave të kodit. 495 00:23:28,992 --> 00:23:30,700 Kjo nuk është vetëm një budalla pak program lodër. 496 00:23:30,700 --> 00:23:33,870 Është në fakt mori disa error checking dhe duke bërë diçka më të dobishme. 497 00:23:33,870 --> 00:23:38,470 >> Pra, nëse ju nuk e keni parë walkthrough videos që kemi ngulitur në pset1, 498 00:23:38,470 --> 00:23:42,350 e dinë se kjo është një lloj i lak në C, të ngjashme në frymë 499 00:23:42,350 --> 00:23:44,270 për llojet e gjërave Scratch mund të bëjë. 500 00:23:44,270 --> 00:23:46,320 Dhe të bëjë thotë e bëjnë këtë. 501 00:23:46,320 --> 00:23:47,500 Print this out. 502 00:23:47,500 --> 00:23:51,860 Pastaj të shkojnë përpara dhe për të marrë n-- të marrë një int dhe ruajtur atë në n, 503 00:23:51,860 --> 00:23:55,760 dhe të vazhdojmë të bëjmë këtë përsëri dhe përsëri dhe të përsëri aq sa n është më pak se një. 504 00:23:55,760 --> 00:23:58,720 >> Kështu n do të jetë më e vogël se një vetëm nëse njeriu nuk është duke bashkëpunuar. 505 00:23:58,720 --> 00:24:01,980 Nëse ai ose ajo është e shtypur në 0 ose -1 apo -50, 506 00:24:01,980 --> 00:24:04,790 ky lak do të mbajë ekzekutimin përsëri dhe përsëri. 507 00:24:04,790 --> 00:24:07,549 Dhe në fund të fundit të vini re, unë thjesht kthimin e vlerës. 508 00:24:07,549 --> 00:24:09,590 Deri tani ne kemi një funksion që do të kemi qenë e bukur 509 00:24:09,590 --> 00:24:14,040 nëse CS50 do të zbatojë në CS50.h dhe CS50.c për ju, 510 00:24:14,040 --> 00:24:16,520 por këtu ne mund tani zbatuar këtë veten. 511 00:24:16,520 --> 00:24:19,230 >> Por dy komente mbi disa detaje kyçe. 512 00:24:19,230 --> 00:24:24,390 One-- pse unë deklaroj int n, a mendoni, on line 29 513 00:24:24,390 --> 00:24:27,139 në vend të vetëm duke bërë kjo ketu, i cili është 514 00:24:27,139 --> 00:24:28,930 më shumë në përputhje me çfarë kemi bërë javën e kaluar? 515 00:24:28,930 --> 00:24:29,430 Po? 516 00:24:29,430 --> 00:24:34,485 517 00:24:34,485 --> 00:24:35,110 Një mendim i mirë. 518 00:24:35,110 --> 00:24:37,080 Pra, nëse ne do të vënë atë këtu, është sikur ne 519 00:24:37,080 --> 00:24:39,110 mbani deklaruar atë përsëri dhe përsëri. 520 00:24:39,110 --> 00:24:42,000 Kjo në vetvete është jo problematike, në vetvete, 521 00:24:42,000 --> 00:24:43,940 sepse ne kemi nevojë vetëm vlera e një herë dhe pastaj të 522 00:24:43,940 --> 00:24:45,330 ne jemi duke shkuar për të marrë një të re anyway. 523 00:24:45,330 --> 00:24:45,940 Por një mendim i mirë. 524 00:24:45,940 --> 00:24:46,440 Po? 525 00:24:46,440 --> 00:24:52,770 526 00:24:52,770 --> 00:24:53,330 >> Mbylle. 527 00:24:53,330 --> 00:24:59,030 Pra, për shkak se unë kam deklaruar n në Linja 29 jashtë lak, 528 00:24:59,030 --> 00:25:01,390 është e arritshme në të gjithë tërë ky funksion. 529 00:25:01,390 --> 00:25:05,400 Jo funksionet e tjera, sepse n është ende në brendësi të këtyre kaçurrel 530 00:25:05,400 --> 00:25:06,470 formatimin e teksteve këtu. 531 00:25:06,470 --> 00:25:07,940 So-- sigurt. 532 00:25:07,940 --> 00:25:12,430 533 00:25:12,430 --> 00:25:12,940 >> Pikërisht. 534 00:25:12,940 --> 00:25:14,356 Pra, kjo është edhe më me vend. 535 00:25:14,356 --> 00:25:18,600 Nëse ne vend deklaroi n të drejtë këtu në linjë 32, 536 00:25:18,600 --> 00:25:22,340 kjo është problematike për shkak mend ku tjetër kam nevojë për të hyrë në të? 537 00:25:22,340 --> 00:25:25,620 Top 34, dhe rregull të thjeshtë e pranoj është 538 00:25:25,620 --> 00:25:30,060 që ju mund të përdorni vetëm një variabël brenda formatimin e teksteve më të fundit kaçurrel 539 00:25:30,060 --> 00:25:31,420 në të cilën ju të deklaruar atë. 540 00:25:31,420 --> 00:25:35,230 >> Për fat të keq, Linja 34 është një linjë shumë vonë, 541 00:25:35,230 --> 00:25:38,560 sepse unë e kam mbyllur tashmë mbajtëse kaçurrel on line 33 542 00:25:38,560 --> 00:25:41,220 që korrespondon me mbajtëse kaçurrel në linjë 30. 543 00:25:41,220 --> 00:25:44,180 Dhe kështu kjo është një mënyrë për të thënë se ky int variabël është scoped, 544 00:25:44,180 --> 00:25:46,970 mënyrë që të flasin, për vetëm brenda e këtyre formatimin e teksteve kaçurrel. 545 00:25:46,970 --> 00:25:48,910 Ajo thjesht nuk ekziston jashtë tyre. 546 00:25:48,910 --> 00:25:51,580 >> Pra, me të vërtetë, po e bëra këtë gabuar, më lejoni të ruajtur kodin 547 00:25:51,580 --> 00:25:53,530 siç is-- shkruar gabimisht. 548 00:25:53,530 --> 00:25:57,990 Më lejoni të shkoj përpara dhe të bëjnë funksion-1, dhe gabim notice--. 549 00:25:57,990 --> 00:26:03,502 Përdorimi i identifikues n padeklaruar on line 35, e cila është e drejtë këtu. 550 00:26:03,502 --> 00:26:05,210 Dhe nëse shkoni lart më tej, një tjetër. 551 00:26:05,210 --> 00:26:08,750 Përdorimi i pashpallur Identifikuesi n on line 34. 552 00:26:08,750 --> 00:26:11,200 >> Pra përpilues, tingëllimë, është vërejtur se ajo vetëm 553 00:26:11,200 --> 00:26:13,720 nuk ekziston edhe pse në mënyrë të qartë se është atje me sy. 554 00:26:13,720 --> 00:26:16,090 Pra një fix thjeshtë është deklaruar aty. 555 00:26:16,090 --> 00:26:18,790 >> Tani më lejoni të shkoni te krye të file. 556 00:26:18,790 --> 00:26:21,080 Ajo që në hedhje nga ju si duke qenë pak më ndryshe 557 00:26:21,080 --> 00:26:23,070 nga gjëra kemi shikuar në javën e fundit? 558 00:26:23,070 --> 00:26:26,990 Jo vetëm që kam emrin, jo vetëm që Unë kam disa të mprehtë përfshin deri të lartë, 559 00:26:26,990 --> 00:26:29,340 Unë kam diçka që unë jam duke e quajtur një prototip. 560 00:26:29,340 --> 00:26:36,100 Tani që duket jashtėzakonisht e ngjashme me atë që ne vetëm e pa një moment më parë në linjë 27. 561 00:26:36,100 --> 00:26:39,230 >> Pra, le të konkludoj nga një tjetër mesazh gabimi pse unë e kam bërë këtë. 562 00:26:39,230 --> 00:26:42,050 Më lejoni të shkoj përpara dhe të fshini këto rreshta aty. 563 00:26:42,050 --> 00:26:44,240 Dhe kështu ne e dimë asgjë për prototip. 564 00:26:44,240 --> 00:26:45,430 Xhirim këtë fotografi. 565 00:26:45,430 --> 00:26:46,890 Bëni një funksion. 566 00:26:46,890 --> 00:26:48,090 Dhe tani, mallkuar, katër gabime. 567 00:26:48,090 --> 00:26:50,220 Le të shkoni deri në një të parë. 568 00:26:50,220 --> 00:26:55,070 >> Deklarata e nënkuptuar e funksionit merrni int pozitiv është i pavlefshëm në C99. 569 00:26:55,070 --> 00:26:57,780 C99 thjesht do të thotë vitit 1999 Versioni i gjuhës 570 00:26:57,780 --> 00:26:59,710 C, e cila është ajo që ne jemi me të vërtetë duke përdorur. 571 00:26:59,710 --> 00:27:01,050 Pra, çfarë do të thotë kjo? 572 00:27:01,050 --> 00:27:05,250 Well C-- dhe më konkretisht C compilers-- janë programe goxha memec. 573 00:27:05,250 --> 00:27:07,420 Ata vetëm e di atë që ju keni u tha atyre, dhe kjo është 574 00:27:07,420 --> 00:27:08,960 në fakt tematike nga java e fundit. 575 00:27:08,960 --> 00:27:12,910 >> Problemi është se në qoftë se unë shkoj në lidhje me zbatimin emrin deri këtu, 576 00:27:12,910 --> 00:27:17,640 dhe unë e quaj një funksion të quajtur GetPositiveInt këtu në linjë 20, 577 00:27:17,640 --> 00:27:22,520 se funksioni teknikisht nuk ekzistojnë deri përpiluesit e sheh linjë 27. 578 00:27:22,520 --> 00:27:25,450 Për fat të keq, përpiluesit është duke bërë gjëra të lartë, poshtë, majtas, djathtas, 579 00:27:25,450 --> 00:27:29,580 kështu për shkak se ajo nuk e ka parë zbatimi i GetPositiveInt, 580 00:27:29,580 --> 00:27:32,400 por ajo e sheh se ju duke u përpjekur ta përdorin atë deri këtu, 581 00:27:32,400 --> 00:27:35,810 ajo është vetëm do të bail-- çirrem në ju me një gabim message-- ndoshta 582 00:27:35,810 --> 00:27:38,440 i fshehtë, dhe jo të vërtetë përpiloni file. 583 00:27:38,440 --> 00:27:41,940 >> Pra, një të ashtu-quajtur prototip up këtu është pa dyshim i tepërt. 584 00:27:41,940 --> 00:27:47,870 Fjalë për fjalë, unë shkova poshtë këtu dhe unë kopjuar dhe ngjit këtë, dhe kam vënë atë deri këtu. 585 00:27:47,870 --> 00:27:51,020 Void do të ishte më e duhur, kështu që ne do të fjalë për fjalë kopjoni dhe ngjisni atë në këtë kohë. 586 00:27:51,020 --> 00:27:52,854 Unë fjalë për fjalë kopjuar dhe ngjit atë. 587 00:27:52,854 --> 00:27:54,270 Me të vërtetë ashtu si si një thërrime bukë. 588 00:27:54,270 --> 00:27:56,260 >> Një e dhënë pak për përpiluesit. 589 00:27:56,260 --> 00:27:58,860 Unë nuk e di se çfarë e bën këtë ende, por unë jam duke premtuar për ju 590 00:27:58,860 --> 00:28:00,260 se ai do të ekzistojë në fund. 591 00:28:00,260 --> 00:28:04,010 Dhe kjo është arsyeja pse kjo linjë të në Linja 16-- përfundon me pikëpresje. 592 00:28:04,010 --> 00:28:05,486 Është e tepërt me dashje. 593 00:28:05,486 --> 00:28:05,986 Po? 594 00:28:05,986 --> 00:28:11,340 595 00:28:11,340 --> 00:28:14,360 >> Nëse ju nuk i lidhi bibliotekën tuaj të the-- oh, pyetje e mirë. 596 00:28:14,360 --> 00:28:17,350 Sharp përfshin header fotografi inclusions. 597 00:28:17,350 --> 00:28:20,040 Nevoja për të be-- duhet pothuajse gjithmonë të jetë në krye 598 00:28:20,040 --> 00:28:23,270 i dosjes për një similar-- për pikërisht të njëjtën arsye, po. 599 00:28:23,270 --> 00:28:26,430 Sepse në standarde io.h është fjalë për fjalë një linjë 600 00:28:26,430 --> 00:28:30,560 si kjo, por me fjalën printf, dhe me argumentet e saj dhe llojit të saj të kthimit. 601 00:28:30,560 --> 00:28:33,310 Dhe kështu duke bërë të mprehta të përfshijë deri këtu, ajo që ju jeni të vërtetë duke bërë 602 00:28:33,310 --> 00:28:36,380 është kopjimi dhe pasting përmbajtjen e dikush tjetër ka shkruar deri të lartë. 603 00:28:36,380 --> 00:28:39,660 Në këtë mënyrë cluing kodin tuaj në të Fakti që ato funksione ekzistojnë. 604 00:28:39,660 --> 00:28:40,160 Po? 605 00:28:40,160 --> 00:28:47,520 606 00:28:47,520 --> 00:28:48,260 >> Absolutisht. 607 00:28:48,260 --> 00:28:51,690 Pra, një shumë të zgjuar dhe korrekte Zgjidhja do të jetë, ju e dini se çfarë? 608 00:28:51,690 --> 00:28:53,760 Unë nuk e di se çfarë një prototip është, por unë e di 609 00:28:53,760 --> 00:28:56,390 në qoftë se unë e kuptoj se C është vetëm memec dhe rethinks lartë deri në fund. 610 00:28:56,390 --> 00:28:57,820 E pra le të japë atë çfarë ajo dëshiron. 611 00:28:57,820 --> 00:29:01,650 Le të prerë atë kod, ngjitur lart lartë, dhe tani rrëzoj poshtë kryesore. 612 00:29:01,650 --> 00:29:03,470 Edhe kjo do të zgjidhë problemin. 613 00:29:03,470 --> 00:29:07,409 >> Por ju mund shumë lehtë të dalë me një skenar në të cilin një nevojë për të thirrur B, 614 00:29:07,409 --> 00:29:10,075 dhe ndoshta B thërret përsëri në A. Kjo është diçka që quhet recursion, 615 00:29:10,075 --> 00:29:11,370 dhe ne do të kthehen me atë. 616 00:29:11,370 --> 00:29:13,911 Dhe kjo mund ose nuk mund të jetë një e mirë gjë, por ju mund të patjetër 617 00:29:13,911 --> 00:29:15,110 të thyer këtë zgjidhje. 618 00:29:15,110 --> 00:29:17,690 >> Dhe për më tepër, unë do pretendojnë stilistikisht, 619 00:29:17,690 --> 00:29:20,760 sidomos kur programet tuaja bërë këtë gjatë dhe kjo e gjatë, 620 00:29:20,760 --> 00:29:23,064 kjo është vetëm super i përshtatshëm për të vënë kryesor në krye 621 00:29:23,064 --> 00:29:25,730 sepse kjo është gjëja më e programuesit do të kujdeset për. 622 00:29:25,730 --> 00:29:28,150 Dhe kështu që është një pastruese pak, ndoshta, për të bërë atë mënyrë 623 00:29:28,150 --> 00:29:30,380 Unë fillimisht e bëri atë me një prototip edhe 624 00:29:30,380 --> 00:29:33,396 edhe pse kjo duket pak tepërt në shikim të parë. 625 00:29:33,396 --> 00:29:33,895 Po? 626 00:29:33,895 --> 00:29:36,472 627 00:29:36,472 --> 00:29:37,680 Na vjen keq, mund të ju them se më fort? 628 00:29:37,680 --> 00:29:45,650 629 00:29:45,650 --> 00:29:49,580 >> Nëse ju kaloni vendet e zbatimi dhe prototip? 630 00:29:49,580 --> 00:29:51,270 Pra, kjo është një pyetje e mirë. 631 00:29:51,270 --> 00:29:53,780 Nëse ju ri-deklarojë këtë poshtë këtu, le të shohim se çfarë ndodh. 632 00:29:53,780 --> 00:29:55,530 Pra, nëse unë vënë këtë poshtë këtu, ju jeni duke thënë. 633 00:29:55,530 --> 00:29:57,860 634 00:29:57,860 --> 00:29:58,360 Oh, më vjen keq. 635 00:29:58,360 --> 00:29:58,859 Më fort? 636 00:29:58,859 --> 00:30:02,000 637 00:30:02,000 --> 00:30:04,011 Edhe më fort. 638 00:30:04,011 --> 00:30:04,760 Oh, pyetje e mirë. 639 00:30:04,760 --> 00:30:05,860 A do të zhvlerësojë funksionin? 640 00:30:05,860 --> 00:30:08,901 Ju e dini, pas gjithë këtyre viteve, unë kurrë nuk kanë vënë një prototip më pas. 641 00:30:08,901 --> 00:30:13,810 Pra, le të bëjë të bëjë funksion-1 pas duke bërë që. 642 00:30:13,810 --> 00:30:15,279 >> [Pëshpëritje] 643 00:30:15,279 --> 00:30:16,320 DAVID J. Malan: Oh, prisni. 644 00:30:16,320 --> 00:30:17,944 Ne ende kemi për të vënë çdo gjë deri të lartë. 645 00:30:17,944 --> 00:30:21,400 Pra, le ta bëjmë këtë deri këtu, në qoftë se unë jam i kuptuar pyetjen tuaj të saktë. 646 00:30:21,400 --> 00:30:24,700 Unë jam vënë çdo gjë, duke përfshirë edhe prototip sipër kryesore, 647 00:30:24,700 --> 00:30:28,180 por unë jam vënë prototip poshtë implementimit. 648 00:30:28,180 --> 00:30:33,190 >> Pra, nëse kam bërë një të tillë, unë jam marrë përsëri një n error-- papërdorur ndryshueshme. 649 00:30:33,190 --> 00:30:37,280 650 00:30:37,280 --> 00:30:37,860 Oh, atje. 651 00:30:37,860 --> 00:30:38,360 Ju faleminderit. 652 00:30:38,360 --> 00:30:39,430 Le të shohim, ne të shpëtoj prej kësaj. 653 00:30:39,430 --> 00:30:41,304 Kjo është një bug të ndryshme, kështu që le të injorojnë se. 654 00:30:41,304 --> 00:30:43,910 Le të vërtetë shpejt xhirim këtë. 655 00:30:43,910 --> 00:30:48,100 >> OK, kështu që të dhënat nuk argumenti përdorur nga format String 656 00:30:48,100 --> 00:30:52,310 n-- oh, kjo është për shkak se I ndryshuar me këto këtu. 657 00:30:52,310 --> 00:30:55,885 Në rregull, ne e dimë se çfarë përgjigje do to-- të gjithë të drejtë, këtu ne do të shkojmë. 658 00:30:55,885 --> 00:31:00,560 Ah, faleminderit për pozitiv. 659 00:31:00,560 --> 00:31:03,430 Në rregull, unë do të rregullojmë këtë kod after-- injorojë këtë bug të veçantë 660 00:31:03,430 --> 00:31:08,300 pasi kjo was-- ajo punon është përgjigje. 661 00:31:08,300 --> 00:31:11,560 >> Pra, kjo nuk do të prishësh atë që e kam bërë vetëm. 662 00:31:11,560 --> 00:31:14,800 I dyshuari përpiluesit është shkruar në mënyrë të tillë 663 00:31:14,800 --> 00:31:18,420 se ajo është injoruar prototip tuaj për shkak të trupit, kështu që të flasin, 664 00:31:18,420 --> 00:31:20,922 nga funksioni ka tashmë është zbatuar deri më të lartë. 665 00:31:20,922 --> 00:31:23,380 Unë do të duhet të vërtetë të konsultohet manual i përpiluesit 666 00:31:23,380 --> 00:31:26,171 për të kuptuar nëse ka ndonjë tjetër Implikimi, por në shikim të parë 667 00:31:26,171 --> 00:31:29,290 vetëm duke u përpjekur dhe eksperimente, nuk duket të ketë asnjë ndikim. 668 00:31:29,290 --> 00:31:30,730 Pyetje e mirë. 669 00:31:30,730 --> 00:31:33,660 >> Pra, le të ecur përpara tani, duke lëvizur larg nga efektet anësore të cilat 670 00:31:33,660 --> 00:31:36,660 janë funksione që bëjnë diçka si vizualisht në ekran me printf, 671 00:31:36,660 --> 00:31:38,090 por nuk do të kthehen një vlerë. 672 00:31:38,090 --> 00:31:41,550 Dhe funksionet që kanë kthim Vlerat si ne vetëm e pa disa. 673 00:31:41,550 --> 00:31:45,350 Ne tashmë e panë këtë nocion të fushës, dhe ne do të shohim këtë përsëri dhe përsëri. 674 00:31:45,350 --> 00:31:47,210 Por tani për tani, përsëri, përdorni sundimin e gishtit 675 00:31:47,210 --> 00:31:51,410 se një variabël mund të përdoren vetëm brenda të hapur kohët e fundit 676 00:31:51,410 --> 00:31:54,350 dhe formatimin e teksteve kaçurrel mbyllura si ne e pa në këtë shembull të veçantë. 677 00:31:54,350 --> 00:31:56,910 >> Dhe si ju vuri në dukje, ka një ability-- 678 00:31:56,910 --> 00:32:00,040 ju mund të zgjidhë disa nga këto probleme duke shënuar me një ndryshore globale 679 00:32:00,040 --> 00:32:01,290 në krye të një file. 680 00:32:01,290 --> 00:32:03,630 Por në shumicën e rasteve ne do të shfryj mbi se, 681 00:32:03,630 --> 00:32:06,170 dhe në të vërtetë nuk shkojnë edhe në atë zgjidhje për tani. 682 00:32:06,170 --> 00:32:09,890 Kështu që tani për tani, takeaway është se Variablat e kanë këtë nocion të fushës. 683 00:32:09,890 --> 00:32:13,430 >> Por tani le të shohim në një tjetër Mënyra e thatë të vërtetë në kërkim 684 00:32:13,430 --> 00:32:15,810 në disa goxha interesante Detajet e zbatimit. 685 00:32:15,810 --> 00:32:17,810 Se si ne mund të paraqesin informacione. 686 00:32:17,810 --> 00:32:20,370 Dhe ne tashmë shikuar këtë në javë parë të klasës. 687 00:32:20,370 --> 00:32:23,320 Duke parë në binare, dhe kujtuar veten e dhjetore. 688 00:32:23,320 --> 00:32:28,310 >> Por kujtohet nga java e fundit që C ka lloje të ndryshme të të dhënave dhe rrush më shumë, 689 00:32:28,310 --> 00:32:30,600 por ato më të dobishme tani për tani mund të jetë këto. 690 00:32:30,600 --> 00:32:36,030 Një char, ose karakter, e cila ndodh të jetë një bajt, ose tetë bit totale. 691 00:32:36,030 --> 00:32:40,060 Dhe kjo është për të thonë se me madhësinë e një char është vetëm një bajt. 692 00:32:40,060 --> 00:32:45,370 Një bajt është tetë bit, kështu që kjo do të thotë që ne mund të përfaqësojë si shumë karaktere. 693 00:32:45,370 --> 00:32:47,320 Sa letra ose simbolet në tastierë 694 00:32:47,320 --> 00:32:49,210 në qoftë se ne kemi një bajt apo tetë bit. 695 00:32:49,210 --> 00:32:51,546 Mendoni përsëri për javën zero. 696 00:32:51,546 --> 00:32:53,420 Nëse ju keni tetë bit, sa vlera totale 697 00:32:53,420 --> 00:32:55,503 mund të paraqesin me modelet e zero dhe ato? 698 00:32:55,503 --> 00:32:58,170 699 00:32:58,170 --> 00:33:00,260 One-- më shumë se kaq. 700 00:33:00,260 --> 00:33:03,490 Pra, 256 gjithsej, nëse ju të fillojë numërimi nga zero. 701 00:33:03,490 --> 00:33:07,120 Pra, nëse ju keni tetë bits-- kështu që nëse ne kishte bulbs tona binare këtu përsëri, 702 00:33:07,120 --> 00:33:12,180 ne mund të kthehet këto llamba në dhe jashtë në ndonjë nga 256 modele unike. 703 00:33:12,180 --> 00:33:13,640 >> Tani kjo është pak problematike. 704 00:33:13,640 --> 00:33:16,857 Jo aq shumë për gjuhën angleze dhe gjuhë romanca, por sigurisht 705 00:33:16,857 --> 00:33:19,190 kur ju prezantoj, për shkallës, gjuhë aziatike, të cilat 706 00:33:19,190 --> 00:33:22,580 kanë shumë më shumë simbole se si 26 shkronjat e alfabetit. 707 00:33:22,580 --> 00:33:24,390 Ne në të vërtetë mund të kenë nevojë më shumë se një bajt. 708 00:33:24,390 --> 00:33:28,240 Dhe fatmirësisht në vitet e fundit ka shoqëri 709 00:33:28,240 --> 00:33:31,040 Standardet e miratuara të tjera që përdorin më shumë se një bajt për ngarkuar. 710 00:33:31,040 --> 00:33:34,210 >> Por tani për tani në C, default është vetëm një bajt apo tetë bit. 711 00:33:34,210 --> 00:33:38,195 Një numër i plotë, ndërkohë, është katër bytes, i njohur ndryshe si 32 bit. 712 00:33:38,195 --> 00:33:41,320 Që do të thotë ajo që është më e madhe të jetë e mundur Numri ne mund të përfaqësojë me një int 713 00:33:41,320 --> 00:33:41,820 me sa duket? 714 00:33:41,820 --> 00:33:44,426 715 00:33:44,426 --> 00:33:45,050 Me një miliardë. 716 00:33:45,050 --> 00:33:46,760 Pra, është e kater miliard japë ose të marrë. 717 00:33:46,760 --> 00:33:49,840 2 në fuqinë 32th, nëse ne marrë asnjë numrat negative 718 00:33:49,840 --> 00:33:52,530 dhe vetëm përdorni të gjitha pozitive numra, është e kater miliard 719 00:33:52,530 --> 00:33:53,730 të japë ose të marrë mundësi. 720 00:33:53,730 --> 00:33:57,890 Një noton, ndërkohë, është një lloj tjetër e tipit të të dhënave në C. Kjo është ende një numër, 721 00:33:57,890 --> 00:33:58,990 por kjo është një numër real. 722 00:33:58,990 --> 00:34:00,660 Diçka me një pikë dhjetore. 723 00:34:00,660 --> 00:34:03,000 Dhe kjo rezulton se C gjithashtu përdor katër bytes 724 00:34:03,000 --> 00:34:05,340 për të përfaqësuar vlerat lundrues pikë. 725 00:34:05,340 --> 00:34:09,420 >> Për fat të keq si shumë lundrues Vlerat pikë ka në botë? 726 00:34:09,420 --> 00:34:11,582 Sa numra të vërtetë janë atje? 727 00:34:11,582 --> 00:34:13,540 Ka një pafund numrin, dhe për këtë çështje 728 00:34:13,540 --> 00:34:15,164 ka një numër të pafund të integers. 729 00:34:15,164 --> 00:34:18,070 Pra, ne jemi tashmë të lloj gërmimi vetes një vrimë këtu. 730 00:34:18,070 --> 00:34:21,780 Ku me sa duket në computers-- në Programet më pak të shkruara në C më them-- 731 00:34:21,780 --> 00:34:24,110 vetëm mund të llogarisin të larta deri në kater miliard japë ose të marrë, 732 00:34:24,110 --> 00:34:26,260 dhe lundrues vlerat pikë vetëm mund të duket 733 00:34:26,260 --> 00:34:28,330 kanë disa sasi e fundme e saktësi. 734 00:34:28,330 --> 00:34:30,810 Vetëm kaq shumë shifra pas Pika e tyre dhjetore. 735 00:34:30,810 --> 00:34:32,822 >> Sepse, natyrisht, në qoftë se ju keni vetëm 32 bit, 736 00:34:32,822 --> 00:34:36,030 Unë nuk e di se si ne jemi duke shkuar për të shkuar në lidhje me përfaqësojnë numbers-- vërtetë ndoshta 737 00:34:36,030 --> 00:34:37,409 me lloje të ndryshme të modeleve. 738 00:34:37,409 --> 00:34:40,030 Por ka me siguri një fundme Numri i modeleve të tilla, 739 00:34:40,030 --> 00:34:41,830 kështu që këtu, gjithashtu, kjo është problematike. 740 00:34:41,830 --> 00:34:43,710 >> Tani ne mund të shmangur problemin pak. 741 00:34:43,710 --> 00:34:45,710 Nëse ju nuk përdorni një noton, ju mund të përdorni një të dyfishtë 742 00:34:45,710 --> 00:34:50,230 në C, e cila ju jep tetë bytes, të cilat është modele mënyra më e mundshme të zero 743 00:34:50,230 --> 00:34:50,730 dhe ato. 744 00:34:50,730 --> 00:34:55,199 Por është ende e fundme, e cila do të jetë problematike në qoftë se ju shkruani software 745 00:34:55,199 --> 00:34:57,670 për grafikë ose për teket formulat matematikore. 746 00:34:57,670 --> 00:35:00,410 Kështu që ju mund të vërtetë dëshironi për të numëruar deri më e madhe se kaq. 747 00:35:00,410 --> 00:35:05,640 Një kohë të gjatë long-- stupidly named-- është gjithashtu e tetë bytes, ose 64 bit, 748 00:35:05,640 --> 00:35:10,260 dhe kjo është dy herë më gjatë si një int, dhe kjo është për një vlerë të gjatë integer. 749 00:35:10,260 --> 00:35:15,655 >> Fact-- Fun nëse një int është katër bytes, sa kohë është një kohë të gjatë në C tipike? 750 00:35:15,655 --> 00:35:18,290 751 00:35:18,290 --> 00:35:21,560 Gjithashtu katër bytes, por një kohë të gjatë është tetë bytes, 752 00:35:21,560 --> 00:35:23,050 dhe kjo është për arsye historike. 753 00:35:23,050 --> 00:35:26,450 >> Por takeaway tani është vetëm se të dhënat e ka 754 00:35:26,450 --> 00:35:29,625 për t'u përfaqësuar në një computer-- që është një pajisje fizike me energji elektrike, 755 00:35:29,625 --> 00:35:32,190 kjo është në përgjithësi makinës ato zero dhe ones-- 756 00:35:32,190 --> 00:35:34,320 me sasi të fundme e saktësi. 757 00:35:34,320 --> 00:35:35,620 Pra, çfarë është problemi atëherë? 758 00:35:35,620 --> 00:35:37,480 >> Pra ka një problem i del nga shtrati numër i plotë. 759 00:35:37,480 --> 00:35:39,780 Jo vetëm në C, por në kompjutera në përgjithësi. 760 00:35:39,780 --> 00:35:42,590 Për shembull, në qoftë se kjo është një bajt vlerë një bit-- 761 00:35:42,590 --> 00:35:45,120 kështu që nëse kjo është e tetë bit-- gjitha të cilat janë numër një. 762 00:35:45,120 --> 00:35:47,300 Çfarë numri është kjo përfaqësojnë nëse supozojmë 763 00:35:47,300 --> 00:35:50,730 kjo është e gjitha vlerat pozitive në binar? 764 00:35:50,730 --> 00:35:54,410 >> 255, dhe kjo nuk është 256, sepse zero është numri më i vogël. 765 00:35:54,410 --> 00:35:56,760 Pra, 255 është më e larta një, por problemi 766 00:35:56,760 --> 00:36:00,330 po mendoj se kam kërkuar për të rrisim këtë variabël që 767 00:36:00,330 --> 00:36:04,030 është duke përdorur tetë bit gjithsej në qoftë se unë dua të rrisim atë. 768 00:36:04,030 --> 00:36:07,160 >> Dhe sa më shpejt që të shtoj një një për të gjithë nga këta të, 769 00:36:07,160 --> 00:36:10,500 ju ndoshta mund të imagjinohet visually-- vetëm si mbante një të përdorur decimals-- 770 00:36:10,500 --> 00:36:12,300 diçka që do të rrjedhin në të majtë. 771 00:36:12,300 --> 00:36:15,590 Dhe me të vërtetë, në qoftë se unë të shtoni numrin një për këtë, çfarë ndodh në binar 772 00:36:15,590 --> 00:36:17,670 është se ai është i mbushur plot kthehet në zero. 773 00:36:17,670 --> 00:36:21,730 >> Pra, nëse ju nuk use-- vetëm një int, por një bajt vetme për të numëruar integers 774 00:36:21,730 --> 00:36:27,170 në një program, nga default-- sa më shpejt që ju merrni për 250, 251, 252, 253, 254, 775 00:36:27,170 --> 00:36:32,710 255-- 0 vjen pas 255, të cilat ndoshta nuk çfarë është 776 00:36:32,710 --> 00:36:34,790 një përdorues do të presin. 777 00:36:34,790 --> 00:36:39,620 >> Tani ndërkohë në lundrues pikë botën, ju gjithashtu kanë një problem të ngjashëm. 778 00:36:39,620 --> 00:36:42,670 Jo aq shumë me number-- madh edhe pse kjo është ende një çështje. 779 00:36:42,670 --> 00:36:45,360 Por me sasinë e saktësi që ju të mund të përfaqësojë. 780 00:36:45,360 --> 00:36:49,490 Pra, le të marrin një vështrim në këtë shembull këtu edhe nga code-- sotme burim 781 00:36:49,490 --> 00:36:52,070 noton-0.c. 782 00:36:52,070 --> 00:36:54,280 >> Dhe vini re kjo është një super program i thjeshtë që 783 00:36:54,280 --> 00:36:56,580 duhet me sa duket të shtypura nga çfarë vlerë? 784 00:36:56,580 --> 00:37:00,777 785 00:37:00,777 --> 00:37:04,110 Çfarë do të bast kjo do të shtypura edhe pse ka pak e sintaksës së re 786 00:37:04,110 --> 00:37:05,540 këtu? 787 00:37:05,540 --> 00:37:06,700 Kështu që shpresojmë se 0.1. 788 00:37:06,700 --> 00:37:10,000 Pra, ekuivalente e një të dhjetën sepse unë jam duke bërë 1 të ndarë me 10. 789 00:37:10,000 --> 00:37:12,430 Unë jam ruajtjen përgjigje në një ndryshore të quajtur f. 790 00:37:12,430 --> 00:37:15,850 Kjo variabël është e tipit float, e cila është një fjalen Unë vetëm propozuar ekzistuar. 791 00:37:15,850 --> 00:37:18,910 >> Ne nuk kemi parë këtë më parë, por kjo është lloj i një mënyrë i zoti në printf 792 00:37:18,910 --> 00:37:22,110 për të përcaktuar se si shumë shifra të duan të shohin pas presjes dhjetore. 793 00:37:22,110 --> 00:37:25,020 Pra, kjo simbol thjesht do të thotë që këtu është një placeholder. 794 00:37:25,020 --> 00:37:27,900 Është për një pikë lundrues vlera, dhe oh, nga rruga, 795 00:37:27,900 --> 00:37:31,389 tregojnë atë me të presjes dhjetore me një numër pas presjes dhjetore. 796 00:37:31,389 --> 00:37:33,180 Pra, kjo është numri i shifrave të rëndësishme, 797 00:37:33,180 --> 00:37:34,650 mënyrë që të flasin, që ju mund të dëshironi. 798 00:37:34,650 --> 00:37:40,450 >> Pra më lejoni të shkoj përpara dhe të bëjë bërë noton-0, ./float-0, 799 00:37:40,450 --> 00:37:46,660 dhe me sa duket 1 e ndarë nga 10 është 0.0. 800 00:37:46,660 --> 00:37:47,760 Tani pse është kjo? 801 00:37:47,760 --> 00:37:51,380 >> E pra përsëri, kompjuteri është duke marrë më fjalë për fjalë, dhe unë kam shkruar 1 802 00:37:51,380 --> 00:37:56,680 dhe kam shkruar 10, dhe për të marrë me mend se çfarë është lloji supozohet të dhënave për ata dy 803 00:37:56,680 --> 00:37:58,440 Vlerat? 804 00:37:58,440 --> 00:38:00,970 Një int, kjo është teknikisht diçka pak më ndryshe. 805 00:38:00,970 --> 00:38:04,150 Kjo është zakonisht një kohë të gjatë, por është e në fund të fundit një vlerë integrale. 806 00:38:04,150 --> 00:38:06,030 Nuk është një vlerë lundrues pikë. 807 00:38:06,030 --> 00:38:09,456 >> Që do të thotë se në qoftë se kjo është një int dhe kjo është një int, 808 00:38:09,456 --> 00:38:11,830 problemi është që kompjuteri nuk kanë aftësinë 809 00:38:11,830 --> 00:38:13,680 për të edhe të ruajtur atë pikë dhjetore. 810 00:38:13,680 --> 00:38:16,430 Pra, kur ju bëni 1 e ndarë nga 10 duke përdorur numrat e plotë 811 00:38:16,430 --> 00:38:20,950 për të dy numërues dhe Emërues, përgjigja duhet të jetë 0.1. 812 00:38:20,950 --> 00:38:24,930 Por computer-- sepse ato janë integers-- 813 00:38:24,930 --> 00:38:27,430 nuk e di se çfarë të bëjë me 0.1. 814 00:38:27,430 --> 00:38:30,010 >> Pra, çfarë është ajo në mënyrë të qartë duke bërë? 815 00:38:30,010 --> 00:38:33,120 Është thjesht duke hedhur atë larg, dhe çfarë unë jam duke parë në fund të fundit 816 00:38:33,120 --> 00:38:38,830 është 0.0 vetëm sepse kam insistuar që printf më tregoni një pikë dhjetore. 817 00:38:38,830 --> 00:38:41,740 Por problemi është se në qoftë se ju ndarë një numër të plotë nga një numër i plotë, 818 00:38:41,740 --> 00:38:44,347 ju do get-- sipas definicionit i C-- një numër të plotë. 819 00:38:44,347 --> 00:38:46,680 Dhe kjo nuk do të bëjë diçka të mirë dhe të përshtatshme 820 00:38:46,680 --> 00:38:49,040 si raundin atë deri në më të afërt e lart ose poshtë. 821 00:38:49,040 --> 00:38:51,860 Ajo do të shkurtoj çdo gjë pas e dhjetore. 822 00:38:51,860 --> 00:38:54,030 >> Pra thjesht intuitive, çfarë është ndoshta një fix? 823 00:38:54,030 --> 00:38:55,351 Çfarë është fix thjeshtë këtu? 824 00:38:55,351 --> 00:38:55,850 Po? 825 00:38:55,850 --> 00:39:00,570 826 00:39:00,570 --> 00:39:01,100 Pikërisht. 827 00:39:01,100 --> 00:39:04,200 Pse nuk kemi vetëm të trajtojnë këto si lundrues Pikë në mënyrë efektive 828 00:39:04,200 --> 00:39:05,860 i kthyer ato në gjithandej apo dyshe. 829 00:39:05,860 --> 00:39:10,500 Dhe tani, nëse unë bëj të bëjë gjithandej-0, ose në qoftë se unë përpilojnë gjithandej-1, 830 00:39:10,500 --> 00:39:12,570 cila është identike tek ajo që ishte propozuar vetëm. 831 00:39:12,570 --> 00:39:16,400 Dhe tani unë bëj gjithandej-0, tani kam marrë 0.1 time. 832 00:39:16,400 --> 00:39:17,234 >> Tani kjo është e mahnitshme. 833 00:39:17,234 --> 00:39:19,441 Por tani unë jam duke shkuar për të bërë diçka pak më ndryshe. 834 00:39:19,441 --> 00:39:22,280 Unë jam kurioz për të parë se çfarë është me të vërtetë ndodh nën kapuç, 835 00:39:22,280 --> 00:39:26,050 dhe unë jam duke shkuar për të shtypur këtë jashtë për 28 vende dhjetore. 836 00:39:26,050 --> 00:39:29,730 Unë dua të shoh me të vërtetë 0.1000-- një infinite-- 837 00:39:29,730 --> 00:39:32,710 [Padëgjueshme] 27 zero pas atij 0.1. 838 00:39:32,710 --> 00:39:34,740 >> E pra le të shohim nëse kjo është ajo që unë me të vërtetë të marrë. 839 00:39:34,740 --> 00:39:39,430 Bëni të njëjtën skedë është gjithandej-0. 840 00:39:39,430 --> 00:39:41,150 ./floats-0. 841 00:39:41,150 --> 00:39:44,380 Le të zoom në në përgjigje dramatike. 842 00:39:44,380 --> 00:39:49,980 E gjithë kjo kohë, ju keni qenë të menduarit 1 ndarë nga 10 është 10%, ose 0.1. 843 00:39:49,980 --> 00:39:50,810 Kjo nuk është. 844 00:39:50,810 --> 00:39:53,210 Të paktën deri më tani si kompjuter të shqetësuar. 845 00:39:53,210 --> 00:39:57,060 >> Tani why-- OK, kjo është e plotë gënjeshtër 1 e ndarë nga 10 është 0.1. 846 00:39:57,060 --> 00:39:59,710 Por why-- se nuk është sot takeaway. 847 00:39:59,710 --> 00:40:04,010 Pra, pse kompjuteri mendoj, ndryshe nga të gjithë ne në dhomë, 848 00:40:04,010 --> 00:40:06,870 se 1 e ndarë nga 10 është fakt se vlera e çmendur? 849 00:40:06,870 --> 00:40:10,620 Çfarë është duke bërë sa duket kompjuter? 850 00:40:10,620 --> 00:40:12,490 Çfarë është ajo? 851 00:40:12,490 --> 00:40:13,785 >> Kjo nuk është të del nga shtrati, në vetvete. 852 00:40:13,785 --> 00:40:15,910 Del nga shtrati është zakonisht kur ju përfundojë rreth një vlerë. 853 00:40:15,910 --> 00:40:18,970 Është kjo çështje e jo saktësi në një vlerë lundrues pikë 854 00:40:18,970 --> 00:40:22,220 ku ju vetëm keni 32 apo ndoshta edhe 64 bit. 855 00:40:22,220 --> 00:40:25,230 Por në qoftë se ka një pafund Numri i numbers-- reale 856 00:40:25,230 --> 00:40:27,940 numrat me pikë dhjetore dhe numrat thereafter-- siguri 857 00:40:27,940 --> 00:40:29,380 ju nuk mund të përfaqësojë të gjithë ata. 858 00:40:29,380 --> 00:40:32,870 Pra, kompjuteri ka dhënë ne ndeshjen më të afërt 859 00:40:32,870 --> 00:40:37,090 me vlerën ajo mund të përfaqësojë përdorur se shumë bit të vlerës unë në fakt duan, 860 00:40:37,090 --> 00:40:38,690 cila eshte 0.1. 861 00:40:38,690 --> 00:40:40,685 >> Për fat të keq, në qoftë se ju fillojnë të bëjnë matematikë, ose ju 862 00:40:40,685 --> 00:40:44,360 të fillojë që përfshin këto lloj lundrues Vlerat pikë në programs-- rëndësishëm 863 00:40:44,360 --> 00:40:46,770 software financiare, asgjë ushtarake software-- 864 00:40:46,770 --> 00:40:49,090 ku perceptimi është ndoshta shumë e rëndësishme. 865 00:40:49,090 --> 00:40:51,520 Dhe ju filloni duke shtuar numra si kjo, dhe të fillojnë të 866 00:40:51,520 --> 00:40:54,050 drejtimin që software me inpute të vërtetë të mëdha 867 00:40:54,050 --> 00:40:56,890 ose për shumë orë ose shumë i ditëve apo shumë vjet, 868 00:40:56,890 --> 00:41:01,060 këto gabime të vogël pak me siguri mund të shtoni deri me kalimin e kohës. 869 00:41:01,060 --> 00:41:04,252 >> Tani si një mënjanë, në qoftë se ju keni ndonjëherë parë Superman 3 ose Office Space 870 00:41:04,252 --> 00:41:05,960 dhe ju mund të kujtojnë se si ata djemtë vodhi 871 00:41:05,960 --> 00:41:08,668 një shumë të holla nga kompjuteri i tyre duke përdorur lundrues vlerat pikë 872 00:41:08,668 --> 00:41:11,290 dhe duke shtuar pak mbetjet, me shpresë se filmi 873 00:41:11,290 --> 00:41:12,390 tani e bën më shumë kuptim. 874 00:41:12,390 --> 00:41:14,930 Kjo është ajo që ata ishin duke aluduar në atë film. 875 00:41:14,930 --> 00:41:16,710 Fakti se më kompanitë nuk do të duken 876 00:41:16,710 --> 00:41:18,600 pas një numër të caktuar e numra pas presjes dhjetore, 877 00:41:18,600 --> 00:41:20,009 por ato janë fraksionet e cent. 878 00:41:20,009 --> 00:41:22,550 Pra, ju filloni duke shtuar ato, ju filloni për të bërë një shumë të holla 879 00:41:22,550 --> 00:41:23,424 në llogarinë tuaj bankare. 880 00:41:23,424 --> 00:41:25,160 Pra, kjo është Office Space shpjegoi. 881 00:41:25,160 --> 00:41:28,220 >> Tani për fat të keq përtej Office Space, ka 882 00:41:28,220 --> 00:41:31,794 janë disa legjitime shqetësuese dhe ndikime të rëndësishme 883 00:41:31,794 --> 00:41:33,710 e këtyre llojeve të Vendimet themel të projektimit, 884 00:41:33,710 --> 00:41:35,990 dhe në të vërtetë një nga arsyet ne përdorim C gjatë 885 00:41:35,990 --> 00:41:39,640 është në mënyrë që ju të vërtetë kanë këtë pikë deri kuptuar se si punojnë kompjuterat, 886 00:41:39,640 --> 00:41:42,440 se si software punon, dhe nuk të marrë ndonjë gjë për të dhënë. 887 00:41:42,440 --> 00:41:45,820 >> Dhe me të vërtetë për fat të keq, madje edhe me se kuptimi themelor, 888 00:41:45,820 --> 00:41:47,370 ne njerëzit bëjnë gabime. 889 00:41:47,370 --> 00:41:51,310 Dhe ajo që unë mendova se do të ndajnë është marrë këtu këtë video minutë tetë 890 00:41:51,310 --> 00:41:56,980 nga një episod mrekulli moderne, e cila është një shfaqje edukative se si gjërat e punës 891 00:41:56,980 --> 00:42:00,370 që pikturon dy foto e kur një përdorim i papërshtatshëm 892 00:42:00,370 --> 00:42:02,540 dhe të kuptuarit e lundrues vlerat pikë 893 00:42:02,540 --> 00:42:05,610 çoi në disa rëndësishëm Rezultatet e pafat. 894 00:42:05,610 --> 00:42:06,363 Le të bëjmë një vështrim. 895 00:42:06,363 --> 00:42:07,029 [VIDEO Playback] 896 00:42:07,029 --> 00:42:11,290 -Ne tani kthehet në "Engineering Fatkeqësitë "në mrekulli moderne. 897 00:42:11,290 --> 00:42:12,940 Kompjuter. 898 00:42:12,940 --> 00:42:15,580 Ne kemi ardhur të gjithë për të pranuar Problemet shpesh frustruese që 899 00:42:15,580 --> 00:42:20,960 mori me them-- bugs, viruset, dhe glitches-- software për çmime të vogla 900 00:42:20,960 --> 00:42:23,100 për të paguar për lehtësi. 901 00:42:23,100 --> 00:42:27,770 Por në të teknologjisë së lartë dhe shpejtësi të lartë aplikacione programore hapësirë ​​ushtarake dhe, 902 00:42:27,770 --> 00:42:32,780 problemi më i vogël mund të të madhërohet në fatkeqësi. 903 00:42:32,780 --> 00:42:38,880 >> Më 4 qershor 1996, shkencëtarët përgatitur për të nisur një pa pilot Ariane 5 raketa. 904 00:42:38,880 --> 00:42:41,190 Ajo mbante shkencore satelitë projektuar 905 00:42:41,190 --> 00:42:44,570 për të vendosur saktësisht se si Bashkëvepron magnetike e Tokës në terren 906 00:42:44,570 --> 00:42:47,380 me erërat diellore. 907 00:42:47,380 --> 00:42:50,580 Raketa ishte ndërtuar për Agjencia Evropiane Hapësirë, 908 00:42:50,580 --> 00:42:54,400 dhe ngriti jashtë nga objekti i saj në bregdetin e French Guiana. 909 00:42:54,400 --> 00:42:57,520 >> -Në Rreth 37 sekonda në fluturimit, ata së pari 910 00:42:57,520 --> 00:42:59,070 diçka e re po shkonte keq. 911 00:42:59,070 --> 00:43:02,240 Kjo nozzles u swiveling në mënyrë që ata me të vërtetë nuk duhet. 912 00:43:02,240 --> 00:43:06,550 Rreth 40 sekonda, në fluturim, në mënyrë të qartë se automjeti ishte në telashe, 913 00:43:06,550 --> 00:43:08,820 dhe kjo është kur ata bënë vendimi për ta shkatërruar atë. 914 00:43:08,820 --> 00:43:12,370 Oficeri sigurisë varg, me guxim të jashtëzakonshme, shtypur butonin 915 00:43:12,370 --> 00:43:18,030 dhe shpërtheu raketa para se të mund të të bëhet një rrezik për sigurinë publike. 916 00:43:18,030 --> 00:43:21,010 >> -Kjo ishte beqare fluturim e 5 Ariane, 917 00:43:21,010 --> 00:43:23,920 dhe shkatërrimi i saj mori vendin për shkak të metë 918 00:43:23,920 --> 00:43:25,932 mishëruar në një softuer me raketa-së. 919 00:43:25,932 --> 00:43:27,640 , Partia problemi më Ariane ishte se atje 920 00:43:27,640 --> 00:43:30,500 ishte një numër që kërkohet 64 bit për të shprehur, 921 00:43:30,500 --> 00:43:33,560 dhe ata donin për të kthyer kjo për një numër të 16-bit. 922 00:43:33,560 --> 00:43:36,820 Ata supozohet se numri kurrë nuk do të jetë shumë i madh. 923 00:43:36,820 --> 00:43:40,940 Se shumica e këtyre shifrave në numri 64-bit ishin zero. 924 00:43:40,940 --> 00:43:42,450 Ata e kishin gabim. 925 00:43:42,450 --> 00:43:45,000 >> , Partia paaftësia e një program software për të pranuar 926 00:43:45,000 --> 00:43:49,460 lloj i numrit të gjeneruara nga një tjetër ishte në rrënjë të dështimit. 927 00:43:49,460 --> 00:43:54,260 Software zhvillimit ishte bërë një pjesë shumë e kushtueshme të teknologjisë së re. 928 00:43:54,260 --> 00:43:57,060 Ariane 4 raketa kishte qenë shumë i suksesshëm. 929 00:43:57,060 --> 00:44:01,600 Pra, shumë e software krijuar për ajo është përdorur edhe në Ariane 5. 930 00:44:01,600 --> 00:44:04,790 >> , Partia Problemi themelor ishte se Ariane 5. 931 00:44:04,790 --> 00:44:11,200 U faster-- përshpejtuar të shpejtë, dhe të software nuk llogariten për këtë. 932 00:44:11,200 --> 00:44:14,910 >> , Partia shkatërrimi i raketave ishte një fatkeqësi e madhe financiare. 933 00:44:14,910 --> 00:44:18,630 Të gjitha për shkak të një gabimi minutë software. 934 00:44:18,630 --> 00:44:21,160 Por ky nuk ishte i pari kohë probleme të dhënat e konvertimit 935 00:44:21,160 --> 00:44:24,770 kishte pllakosur teknologji moderne raketë. 936 00:44:24,770 --> 00:44:28,020 >> -Në 1991, me fillimin e Luftës së parë të Gjirit, 937 00:44:28,020 --> 00:44:30,540 raketave Patriot përjetuar një lloj të ngjashme 938 00:44:30,540 --> 00:44:32,465 e një problemi numër të konvertimit. 939 00:44:32,465 --> 00:44:36,760 Dhe si rezultat 28 people-- 28 Soldiers-- amerikanë u vranë, 940 00:44:36,760 --> 00:44:39,010 dhe rreth njëqind të tjerë u plagosën. 941 00:44:39,010 --> 00:44:42,830 Kur Patriot, të cilat është dashur për të mbrojtur kundër Scuds hyrëse, 942 00:44:42,830 --> 00:44:45,780 dështuar të zjarrit një raketë. 943 00:44:45,780 --> 00:44:51,610 >> -Kur Iraku pushtoi Kuvajtin, dhe Amerika nisur Desert Storm në fillim të vitit 1991, 944 00:44:51,610 --> 00:44:55,720 Bateri të raketave Patriot u vendosën për të mbrojtur Arabinë Saudite dhe Izraelin 945 00:44:55,720 --> 00:44:59,180 nga sulmet e raketave Skud Irakut. 946 00:44:59,180 --> 00:45:03,080 Patriot është një amerikan medium-varg tokë-ajër sistemit 947 00:45:03,080 --> 00:45:06,530 prodhuar nga kompania Raytheon. 948 00:45:06,530 --> 00:45:09,500 >> , Partia Madhësia e Patriot interceptorëve itself-- 949 00:45:09,500 --> 00:45:14,705 është rreth rreth 20 metra e gjatë, dhe peshon rreth 2.000 £. 950 00:45:14,705 --> 00:45:19,090 Dhe ajo mbart një kokë rakete prej rreth, Unë mendoj se është rreth 150 £. 951 00:45:19,090 --> 00:45:23,880 Dhe mbush rakete në vetvete është një eksploziv të lartë, i cili 952 00:45:23,880 --> 00:45:26,700 ka fragmente rreth tij. 953 00:45:26,700 --> 00:45:31,630 Pra, shtresë e jashtme e mbushje është projektuar për të vepruar si një buckshot. 954 00:45:31,630 --> 00:45:34,040 >> , Partia raketa janë kryer katër për enë, 955 00:45:34,040 --> 00:45:37,170 dhe të transportohen nga një rimorkio gjysmë. 956 00:45:37,170 --> 00:45:44,880 >> , Partia sistemit Patriot kundër raketave shkon prapa të paktën 20 vjet tani. 957 00:45:44,880 --> 00:45:48,380 Ajo ishte projektuar në fillim si një raketë të mbrojtjes ajrore 958 00:45:48,380 --> 00:45:50,810 për të xhiruar poshtë aeroplanë të armikut. 959 00:45:50,810 --> 00:45:54,410 Në Luftës së parë të Gjirit kur erdhi në këtë luftë, 960 00:45:54,410 --> 00:45:59,650 Ushtria donte të përdorin atë për të xhiruar poshtë Scuds, jo aeroplanë. 961 00:45:59,650 --> 00:46:03,580 Forca Irakut Air ishte jo aq shumë e një problemi, 962 00:46:03,580 --> 00:46:06,590 por ushtria ishte i shqetësuar në lidhje me Scuds. 963 00:46:06,590 --> 00:46:10,120 Dhe kështu ata u përpoqën të përmirësuar Patriot. 964 00:46:10,120 --> 00:46:12,740 >> -Intercepting Një armik raketave udhëtojnë në Mach 5 965 00:46:12,740 --> 00:46:15,670 do të jenë të vështira të mjaftueshme. 966 00:46:15,670 --> 00:46:18,440 Por kur Patriot u nxituan në shërbim, 967 00:46:18,440 --> 00:46:22,580 Ushtria nuk ishte në dijeni të një modifikim Irakut që 968 00:46:22,580 --> 00:46:25,880 bërë scuds tyre gati e pamundur për të. 969 00:46:25,880 --> 00:46:30,690 >> -Çfarë Ndodhur është e Scuds që vinin ishin të paqëndrueshme. 970 00:46:30,690 --> 00:46:32,000 Ata ishin të tundet. 971 00:46:32,000 --> 00:46:37,210 Arsyeja për këtë ishte e Iraqis-- në mënyrë që të merrni 600 kilometra jashtë 972 00:46:37,210 --> 00:46:41,680 e një 300-kilometrash rreze missile-- mori peshë nga mbushje para, 973 00:46:41,680 --> 00:46:43,340 dhe bëri mbushjen lehta. 974 00:46:43,340 --> 00:46:48,490 Deri tani Patriot-së duke u përpjekur për të ardhur në Skud, dhe shumica e time-- 975 00:46:48,490 --> 00:46:52,880 shumica dërrmuese e time-- ajo do të fluturojnë vetëm nga Skud. 976 00:46:52,880 --> 00:46:57,120 >> -Pasi Operatorët e sistemit Patriot realizuar Patriot humbur objektivin e saj, 977 00:46:57,120 --> 00:47:01,630 ata shpërthyen kokë rakete atdhetari-së për të shmangur viktima të mundshme nëse ajo 978 00:47:01,630 --> 00:47:04,440 u lejohet të bjerë në tokë. 979 00:47:04,440 --> 00:47:08,700 >> -Kjo Ishte ajo që shumica e njerëzve e pa si fireballs të mëdha në qiell, 980 00:47:08,700 --> 00:47:14,180 dhe keqkuptuar si kap e mbushjet e raketave Skud. 981 00:47:14,180 --> 00:47:18,020 >> -Although Në qiellin e natës, patriotë duket të jetë shkatërruar me sukses 982 00:47:18,020 --> 00:47:23,280 Scuds, në Dhahran nuk mund të jetë asnjë gabim në lidhje me punën e saj. 983 00:47:23,280 --> 00:47:27,930 Ka sistem atdhetari së radar udhë humbur i një Skud në hyrje 984 00:47:27,930 --> 00:47:30,260 dhe kurrë nuk filloi për shkak për një krisje software. 985 00:47:30,260 --> 00:47:34,060 986 00:47:34,060 --> 00:47:38,880 >> Ishte izraelitët që së pari zbuluar se sa më gjatë të sistemit ishte më, 987 00:47:38,880 --> 00:47:41,130 më e madhe koha mospërputhje u bë. 988 00:47:41,130 --> 00:47:44,770 Për shkak të një orë ngulitur në kompjuterin e sistemit. 989 00:47:44,770 --> 00:47:48,190 >> -About Dy javë më parë tragjedi në Dhahran, 990 00:47:48,190 --> 00:47:50,720 izraelitët raportuar Departamenti i Mbrojtjes 991 00:47:50,720 --> 00:47:52,410 se sistemi humb kohë. 992 00:47:52,410 --> 00:47:54,410 Pas rreth tetë orësh e drejtimin, ata vënë re 993 00:47:54,410 --> 00:47:57,690 se duke u bërë sistemit të dukshëm më pak të sakta. 994 00:47:57,690 --> 00:48:01,850 Departamenti i Mbrojtjes u përgjigj duke thënë të gjitha baterive Patriot 995 00:48:01,850 --> 00:48:04,800 për të mos i lënë sistemet më për një kohë të gjatë. 996 00:48:04,800 --> 00:48:06,980 Ata kurrë nuk e thanë atë që një kohë të gjatë ishte. 997 00:48:06,980 --> 00:48:09,140 8 orë, 10 orë, një mijë orë. 998 00:48:09,140 --> 00:48:11,300 Askush nuk e dinte. 999 00:48:11,300 --> 00:48:13,320 >> , Partia bateri Patriot vendosur në kazermë 1000 00:48:13,320 --> 00:48:18,310 në Dhahran dhe e brendshme e saj me të meta ora kishte qenë në për më shumë se 100 orë 1001 00:48:18,310 --> 00:48:21,520 në natën e 25 shkurt. 1002 00:48:21,520 --> 00:48:25,792 >> -Ajo Gjurmuar kohë për një saktësi rreth një të dhjetën e një të dytë. 1003 00:48:25,792 --> 00:48:27,950 Tani një e dhjeta e një të dytë është një numër interesant 1004 00:48:27,950 --> 00:48:31,850 sepse ajo nuk mund të shprehet në binar saktësisht, të cilat 1005 00:48:31,850 --> 00:48:36,500 do të thotë që nuk mund të shprehet saktësisht në çdo kompjuter moderne digjitale. 1006 00:48:36,500 --> 00:48:41,070 Është e vështirë të besohet, por përdorin këtë si një shembull. 1007 00:48:41,070 --> 00:48:43,420 >> Le të marrin numër një të tretën. 1008 00:48:43,420 --> 00:48:47,330 Një e treta nuk mund të jetë shprehur në decimal saktësisht. 1009 00:48:47,330 --> 00:48:52,060 Një e treta është 0,333 vazhduar për pafundësi. 1010 00:48:52,060 --> 00:48:56,420 Nuk ka asnjë mënyrë për të bërë këtë me saktësi absolute në një decimal. 1011 00:48:56,420 --> 00:48:59,530 Kjo është pikërisht lloji i problemit që ndodhi në Patriot. 1012 00:48:59,530 --> 00:49:04,040 Sa më gjatë sistemit vrapoi, më keq koha gabim u bë. 1013 00:49:04,040 --> 00:49:08,840 >> -Pas 100 orë të operacionit, gabim në kohë ka qenë vetëm rreth një e treta 1014 00:49:08,840 --> 00:49:10,440 e një të dytë. 1015 00:49:10,440 --> 00:49:14,150 Por për sa i përket synimeve të dhënësit një raketave udhëtojnë në Mach 5, 1016 00:49:14,150 --> 00:49:18,560 rezultoi në një ndjekja gabim e mbi 600 metra. 1017 00:49:18,560 --> 00:49:21,870 Do të ishte një gabim fatal për ushtarët në Dhahran. 1018 00:49:21,870 --> 00:49:28,455 >> -Çfarë Ndodhi është një fillojë Skud ishte zbuluar nga satelitë të paralajmërimit të hershëm, 1019 00:49:28,455 --> 00:49:32,710 dhe ata e dinin një Skud po vinte në drejtim të tyre të përgjithshëm. 1020 00:49:32,710 --> 00:49:35,150 Ata nuk e dinë se ku po vinte. 1021 00:49:35,150 --> 00:49:38,210 Ajo tani ishte deri në radar pjesë përbërëse e sistemit Patriot 1022 00:49:38,210 --> 00:49:43,150 mbrojtur Dhahran për të gjetur dhe për të mbajtur udhë të raketave të armikut në hyrje. 1023 00:49:43,150 --> 00:49:44,561 >> -The radar ishte shumë i zgjuar. 1024 00:49:44,561 --> 00:49:46,560 Ajo do të ndjekur në të vërtetë pozita e Skud 1025 00:49:46,560 --> 00:49:48,930 dhe pastaj të parashikohet se ku ajo ndoshta do të jetë 1026 00:49:48,930 --> 00:49:51,380 herën tjetër radar dërguar një impuls jashtë. 1027 00:49:51,380 --> 00:49:53,040 Kjo u quajt porta varg. 1028 00:49:53,040 --> 00:49:57,620 >> -Pastaj Dikur Patriot vendos kohë të mjaftueshme ka 1029 00:49:57,620 --> 00:50:02,400 kaluar për të shkuar mbrapa dhe shikoni ardhshëm vend për këtë objekt zbuluar 1030 00:50:02,400 --> 00:50:03,550 ajo shkon prapa. 1031 00:50:03,550 --> 00:50:07,820 Pra, kur ai u kthye në gabim vend, ai atëherë nuk sheh ndonjë objekt. 1032 00:50:07,820 --> 00:50:10,360 Dhe vendos se nuk ka objekt. 1033 00:50:10,360 --> 00:50:13,630 Se ka pasur një zbulimin e rreme dhe ajo bie pista. 1034 00:50:13,630 --> 00:50:16,970 >> , Partia Skud në hyrje zhdukur nga ekrani i radarit, 1035 00:50:16,970 --> 00:50:20,200 dhe sekonda më vonë, atë përplas në fortesë. 1036 00:50:20,200 --> 00:50:22,570 Skud vrarë 28. 1037 00:50:22,570 --> 00:50:26,110 Ajo ishte e fundit shkarkoi gjatë Luftës së parë të Gjirit. 1038 00:50:26,110 --> 00:50:31,920 Tragjikisht, software updated arriti në agim të nesërmen. 1039 00:50:31,920 --> 00:50:34,870 Software metë kishte qenë fikse, mbylljes 1040 00:50:34,870 --> 00:50:39,150 një kapitull në trazuar Historia e raketave Patriot. 1041 00:50:39,150 --> 00:50:40,030 >> [VIDEO END rishikim] 1042 00:50:40,030 --> 00:50:41,488 >> DAVID J. Malan: Kjo është ajo për CS50. 1043 00:50:41,488 --> 00:50:42,820 Ne do të ju shohim të mërkurën. 1044 00:50:42,820 --> 00:50:46,420 1045 00:50:46,420 --> 00:50:50,370 >> [MUSIC Playing] 1046 00:50:50,370 --> 00:54:23,446